Skip to content

Working with Inline Data tables in TypeScript

Inline data handling for tables embedded directly in resource definitions.

Terminal window
npm install fairspec

The Inline plugin provides:

  • loadInlineTable - Load tables from inline data
  • InlinePlugin - Plugin for framework integration

For example:

import { loadInlineTable } from "fairspec"
const table = await loadInlineTable({
data: [
{ id: 1, name: "Alice" },
{ id: 2, name: "Bob" }
]
})

The most common format is an array of objects:

import { loadInlineTable } from "fairspec"
const table = await loadInlineTable({
data: [
{ id: 1, name: "english", native: "English" },
{ id: 2, name: "chinese", native: "中文" },
{ id: 3, name: "spanish", native: "Español" }
]
})

You can also use array-of-arrays format with the first row as headers:

import { loadInlineTable } from "fairspec"
const table = await loadInlineTable({
data: [
["id", "name", "native"],
[1, "english", "English"],
[2, "chinese", "中文"],
[3, "spanish", "Español"]
]
})

Provide a Table Schema for type validation and conversion:

import { loadInlineTable } from "fairspec"
const table = await loadInlineTable({
data: [
{ id: 1, name: "english", active: true },
{ id: 2, name: "chinese", active: false }
],
tableSchema: {
properties: {
id: { type: "integer" },
name: { type: "string" },
active: { type: "boolean" }
}
}
})

Inline data can be used alongside file-based resources in datasets:

import { loadInlineTable, loadCsvTable } from "fairspec"
// Load inline reference data
const languages = await loadInlineTable({
name: "languages",
data: [
{ id: 1, name: "english" },
{ id: 2, name: "chinese" }
]
})
// Load main data from file
const users = await loadCsvTable({
name: "users",
data: "users.csv"
})

You can include metadata with inline data resources:

import { loadInlineTable } from "fairspec"
const table = await loadInlineTable({
name: "countries",
title: "Country Reference Data",
description: "ISO country codes and names",
data: [
{ code: "US", name: "United States" },
{ code: "CN", name: "China" },
{ code: "ES", name: "Spain" }
],
tableSchema: {
properties: {
code: { type: "string" },
name: { type: "string" }
}
}
})