@ricsam/formula-engine 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -30,7 +30,7 @@ var __export = (target, all) => {
30
30
  var exports_schema = {};
31
31
  __export(exports_schema, {
32
32
  defineSchema: () => defineSchema,
33
- createHeader: () => createHeader
33
+ defineHeader: () => defineHeader
34
34
  });
35
35
  module.exports = __toCommonJS(exports_schema);
36
36
  function defineSchema() {
@@ -70,7 +70,7 @@ function defineSchema() {
70
70
  };
71
71
  return builder;
72
72
  }
73
- var createHeader = (index, parse, write) => {
73
+ var defineHeader = (index, parse, write) => {
74
74
  return {
75
75
  parse,
76
76
  write: write ?? ((value) => ({ value })),
@@ -78,4 +78,4 @@ var createHeader = (index, parse, write) => {
78
78
  };
79
79
  };
80
80
 
81
- //# debugId=FD12878AE32EA1DA64756E2164756E21
81
+ //# debugId=EE77C44315A3788C64756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/core/schema/schema.ts"],
4
4
  "sourcesContent": [
5
- "import type {\n CellAddress,\n FiniteSpreadsheetRange,\n SerializedCellValue,\n} from \"../types.cjs\";\n\n/**\n * Define a schema for the FormulaEngine.\n *\n * The returned object contains:\n * - `declaration`: The schema definitions for tables and cells\n * - `schema`: A type-only placeholder (undefined at runtime) for TypeScript inference\n *\n * The actual working schema is only available through `engine.schema` after\n * attaching the definition to a FormulaEngine instance.\n *\n * @example\n * ```typescript\n * const mySchema = defineSchema<CellMetadata>()\n * .addTableSchema(\"users\", { workbookName: \"wb1\", tableName: \"users\" }, headers)\n * .addCellSchema(\"config\", cellAddress, parse);\n *\n * const engine = new FormulaEngine(mySchema);\n * engine.schema.users.findWhere({ id: 1 }); // Works!\n * engine.schema.config.read(); // Works!\n * mySchema.schema.users.findWhere({ id: 1 }); // Error: schema is undefined at runtime\n * ```\n */\nexport function defineSchema<\n TCellMetadata = unknown,\n TCurrentSchema extends Record<string, object> = Record<string, object>,\n TCurrentDeclaration extends Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n >\n>(): CreateSchema<TCellMetadata, TCurrentSchema, TCurrentDeclaration> {\n const declaration: Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = {};\n\n const builder: CreateSchema<\n TCellMetadata,\n TCurrentSchema,\n TCurrentDeclaration\n > = {\n addTableSchema(namespace, address, headers) {\n declaration[namespace] = {\n type: \"table\",\n tableName: address.tableName,\n workbookName: address.workbookName,\n headers: headers as any,\n };\n return builder as any;\n },\n\n addCellSchema(\n namespace: string,\n cellAddress: CellAddress,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"cell\",\n cellAddress,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n addGridSchema(\n namespace: string,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"grid\",\n workbookName: address.workbookName,\n sheetName: address.sheetName,\n range,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n // schema is undefined at runtime - it only exists for TypeScript type inference\n // The actual working schema is built by the FormulaEngine constructor\n schema: undefined as any as TCurrentSchema,\n\n declaration: declaration as TCurrentDeclaration,\n };\n\n return builder;\n}\n\nexport interface TableSchemaDefinition {\n type: \"table\";\n headers: Headers<unknown>;\n tableName: string;\n workbookName: string;\n}\n\nexport interface CellSchemaDefinition {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\nexport interface GridSchemaDefinition {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\ntype Headers<TCellMetadata> = Record<\n string,\n {\n parse: (value: SerializedCellValue, metadata: TCellMetadata) => unknown;\n write: (value: any) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n };\n index: number;\n }\n>;\n\n/**\n * Type representing the TableOrm methods exposed on the schema\n */\nexport type TableOrmSchema<TItem extends Record<string, unknown>> = {\n findWhere(filter: Partial<TItem>): TItem | undefined;\n findAllWhere(filter: Partial<TItem>): TItem[];\n append(item: TItem): TItem;\n updateWhere(filter: Partial<TItem>, update: Partial<TItem>): number;\n removeWhere(filter: Partial<TItem>): number;\n count(): number;\n};\n\n/**\n * Type representing the CellOrm methods exposed on the schema\n */\nexport type CellOrmSchema<TValue> = {\n read(): TValue;\n write(value: TValue): void;\n getAddress(): CellAddress;\n};\n\n/**\n * Type representing the GridOrm methods exposed on the schema\n */\nexport type GridOrmSchema<TValue> = {\n columns: readonly TValue[][];\n rows: readonly TValue[][];\n setValue(value: TValue, position: { col: number; row: number }): void;\n getValue(position: { col: number; row: number }): TValue;\n};\n\nexport type SchemaDeclaration = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n>;\nexport type Schema = Record<string, object>;\n\n/**\n * Write function type for converting parsed values back to serializable form\n */\ntype WriteFunction<TValue, TCellMetadata> = (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n};\n\n/**\n * Helper type to create the return type for addCellSchema/addGridSchema\n */\ntype AddCellSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: CellOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\ntype AddGridSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: GridOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\nexport type CreateSchema<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration\n> = {\n addTableSchema<T extends string, THeaders extends Headers<TCellMetadata>>(\n namespace: T,\n address: { workbookName: string; tableName: string },\n headers: THeaders\n ): CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: TableOrmSchema<{\n [H in keyof THeaders]: ReturnType<THeaders[H][\"parse\"]>;\n }>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"table\";\n tableName: string;\n workbookName: string;\n headers: THeaders;\n };\n }\n >;\n\n // Overload 1: TValue is any type - write is required\n addCellSchema<T extends string, TValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addCellSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 1: TValue is any type - write is required\n addGridSchema<T extends string, TValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addGridSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n schema: TCurrentSchema;\n declaration: TCurrentDeclaration;\n};\n\nexport const createHeader = <TValue, TMetadata>(\n index: number,\n parse: (value: SerializedCellValue, metadata: TMetadata) => TValue,\n write?: (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TMetadata;\n }\n) => {\n return {\n parse,\n write: write ?? ((value) => ({ value })),\n index,\n };\n};\n"
5
+ "import type {\n CellAddress,\n FiniteSpreadsheetRange,\n SerializedCellValue,\n} from \"../types.cjs\";\n\n/**\n * Define a schema for the FormulaEngine.\n *\n * The returned object contains:\n * - `declaration`: The schema definitions for tables and cells\n * - `schema`: A type-only placeholder (undefined at runtime) for TypeScript inference\n *\n * The actual working schema is only available through `engine.schema` after\n * attaching the definition to a FormulaEngine instance.\n *\n * @example\n * ```typescript\n * const mySchema = defineSchema<CellMetadata>()\n * .addTableSchema(\"users\", { workbookName: \"wb1\", tableName: \"users\" }, headers)\n * .addCellSchema(\"config\", cellAddress, parse);\n *\n * const engine = new FormulaEngine(mySchema);\n * engine.schema.users.findWhere({ id: 1 }); // Works!\n * engine.schema.config.read(); // Works!\n * mySchema.schema.users.findWhere({ id: 1 }); // Error: schema is undefined at runtime\n * ```\n */\nexport function defineSchema<\n TCellMetadata = unknown,\n TCurrentSchema extends Record<string, object> = Record<string, object>,\n TCurrentDeclaration extends Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n >\n>(): CreateSchema<TCellMetadata, TCurrentSchema, TCurrentDeclaration> {\n const declaration: Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = {};\n\n const builder: CreateSchema<\n TCellMetadata,\n TCurrentSchema,\n TCurrentDeclaration\n > = {\n addTableSchema(namespace, address, headers) {\n declaration[namespace] = {\n type: \"table\",\n tableName: address.tableName,\n workbookName: address.workbookName,\n headers: headers as any,\n };\n return builder as any;\n },\n\n addCellSchema(\n namespace: string,\n cellAddress: CellAddress,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"cell\",\n cellAddress,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n addGridSchema(\n namespace: string,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"grid\",\n workbookName: address.workbookName,\n sheetName: address.sheetName,\n range,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n // schema is undefined at runtime - it only exists for TypeScript type inference\n // The actual working schema is built by the FormulaEngine constructor\n schema: undefined as any as TCurrentSchema,\n\n declaration: declaration as TCurrentDeclaration,\n };\n\n return builder;\n}\n\nexport interface TableSchemaDefinition {\n type: \"table\";\n headers: Headers<unknown>;\n tableName: string;\n workbookName: string;\n}\n\nexport interface CellSchemaDefinition {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\nexport interface GridSchemaDefinition {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\ntype Headers<TCellMetadata> = Record<\n string,\n {\n parse: (value: SerializedCellValue, metadata: TCellMetadata) => unknown;\n write: (value: any) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n };\n index: number;\n }\n>;\n\n/**\n * Type representing the TableOrm methods exposed on the schema\n */\nexport type TableOrmSchema<TItem extends Record<string, unknown>> = {\n findWhere(filter: Partial<TItem>): TItem | undefined;\n findAllWhere(filter: Partial<TItem>): TItem[];\n append(item: TItem): TItem;\n updateWhere(filter: Partial<TItem>, update: Partial<TItem>): number;\n removeWhere(filter: Partial<TItem>): number;\n count(): number;\n};\n\n/**\n * Type representing the CellOrm methods exposed on the schema\n */\nexport type CellOrmSchema<TValue> = {\n read(): TValue;\n write(value: TValue): void;\n getAddress(): CellAddress;\n};\n\n/**\n * Type representing the GridOrm methods exposed on the schema\n */\nexport type GridOrmSchema<TValue> = {\n columns: readonly TValue[][];\n rows: readonly TValue[][];\n setValue(value: TValue, position: { col: number; row: number }): void;\n getValue(position: { col: number; row: number }): TValue;\n};\n\nexport type SchemaDeclaration = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n>;\nexport type Schema = Record<string, object>;\n\n/**\n * Write function type for converting parsed values back to serializable form\n */\ntype WriteFunction<TValue, TCellMetadata> = (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n};\n\n/**\n * Helper type to create the return type for addCellSchema/addGridSchema\n */\ntype AddCellSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: CellOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\ntype AddGridSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: GridOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\nexport type CreateSchema<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration\n> = {\n addTableSchema<T extends string, THeaders extends Headers<TCellMetadata>>(\n namespace: T,\n address: { workbookName: string; tableName: string },\n headers: THeaders\n ): CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: TableOrmSchema<{\n [H in keyof THeaders]: ReturnType<THeaders[H][\"parse\"]>;\n }>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"table\";\n tableName: string;\n workbookName: string;\n headers: THeaders;\n };\n }\n >;\n\n // Overload 1: TValue is any type - write is required\n addCellSchema<T extends string, TValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addCellSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 1: TValue is any type - write is required\n addGridSchema<T extends string, TValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addGridSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n schema: TCurrentSchema;\n declaration: TCurrentDeclaration;\n};\n\nexport const defineHeader = <TValue, TMetadata>(\n index: number,\n parse: (value: SerializedCellValue, metadata: TMetadata) => TValue,\n write?: (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TMetadata;\n }\n) => {\n return {\n parse,\n write: write ?? ((value) => ({ value })),\n index,\n };\n};\n"
6
6
  ],
7
7
  "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BO,SAAS,YAUf,GAAqE;AAAA,EACpE,MAAM,cAGF,CAAC;AAAA,EAEL,MAAM,UAIF;AAAA,IACF,cAAc,CAAC,WAAW,SAAS,SAAS;AAAA,MAC1C,YAAY,aAAa;AAAA,QACvB,MAAM;AAAA,QACN,WAAW,QAAQ;AAAA,QACnB,cAAc,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,MACA,OAAO;AAAA;AAAA,IAGT,aAAa,CACX,WACA,aACA,OACA,OACA;AAAA,MACA,YAAY,aAAa;AAAA,QACvB,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,OAAO,UAAU,CAAC,WAAoB,EAAE,MAAoC;AAAA,MAC9E;AAAA,MACA,OAAO;AAAA;AAAA,IAGT,aAAa,CACX,WACA,SACA,OACA,OACA,OACA;AAAA,MACA,YAAY,aAAa;AAAA,QACvB,MAAM;AAAA,QACN,cAAc,QAAQ;AAAA,QACtB,WAAW,QAAQ;AAAA,QACnB;AAAA,QACA;AAAA,QACA,OAAO,UAAU,CAAC,WAAoB,EAAE,MAAoC;AAAA,MAC9E;AAAA,MACA,OAAO;AAAA;AAAA,IAKT,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAsMF,IAAM,eAAe,CAC1B,OACA,OACA,UAIG;AAAA,EACH,OAAO;AAAA,IACL;AAAA,IACA,OAAO,UAAU,CAAC,WAAW,EAAE,MAAM;AAAA,IACrC;AAAA,EACF;AAAA;",
8
- "debugId": "FD12878AE32EA1DA64756E2164756E21",
8
+ "debugId": "EE77C44315A3788C64756E2164756E21",
9
9
  "names": []
10
10
  }
package/dist/cjs/lib.cjs CHANGED
@@ -47,6 +47,7 @@ var __export = (target, all) => {
47
47
  var exports_lib = {};
48
48
  __export(exports_lib, {
49
49
  defineSchema: () => import_schema.defineSchema,
50
+ defineHeader: () => import_schema.defineHeader,
50
51
  TableOrm: () => import_table_orm.TableOrm,
51
52
  SchemaValidationError: () => import_schema_manager.SchemaValidationError,
52
53
  SchemaIntegrityError: () => import_command_executor.SchemaIntegrityError,
@@ -64,4 +65,4 @@ var import_cell_orm = require("./core/schema/cell-orm.cjs");
64
65
  var import_schema_manager = require("./core/managers/schema-manager.cjs");
65
66
  var import_command_executor = require("./core/commands/command-executor.cjs");
66
67
 
67
- //# debugId=0F275ACDD498695964756E2164756E21
68
+ //# debugId=7606169475E9CE8764756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib.ts"],
4
4
  "sourcesContent": [
5
- "export { FormulaEngine } from \"./core/engine.cjs\";\nexport * from \"./core/types.cjs\";\nexport * from \"./core/utils.cjs\";\nexport * from \"./core/utils/color-utils.cjs\";\n\n// Schema exports\nexport { defineSchema } from \"./core/schema/schema.cjs\";\nexport type { CreateSchema, SchemaDeclaration, Schema, TableSchemaDefinition, CellSchemaDefinition, TableOrmSchema, CellOrmSchema } from \"./core/schema/schema.cjs\";\nexport { TableOrm } from \"./core/schema/table-orm.cjs\";\nexport { CellOrm } from \"./core/schema/cell-orm.cjs\";\nexport { SchemaValidationError } from \"./core/managers/schema-manager.cjs\";\nexport type { ValidationResult } from \"./core/managers/schema-manager.cjs\";\n\n// Command Pattern exports\nexport { SchemaIntegrityError } from \"./core/commands/command-executor.cjs\";\nexport type { EngineAction, EngineCommand } from \"./core/commands/types.cjs\";\n"
5
+ "export { FormulaEngine } from \"./core/engine.cjs\";\nexport * from \"./core/types.cjs\";\nexport * from \"./core/utils.cjs\";\nexport * from \"./core/utils/color-utils.cjs\";\n\n// Schema exports\nexport { defineSchema, defineHeader } from \"./core/schema/schema.cjs\";\nexport type { CreateSchema, SchemaDeclaration, Schema, TableSchemaDefinition, CellSchemaDefinition, TableOrmSchema, CellOrmSchema } from \"./core/schema/schema.cjs\";\nexport { TableOrm } from \"./core/schema/table-orm.cjs\";\nexport { CellOrm } from \"./core/schema/cell-orm.cjs\";\nexport { SchemaValidationError } from \"./core/managers/schema-manager.cjs\";\nexport type { ValidationResult } from \"./core/managers/schema-manager.cjs\";\n\n// Command Pattern exports\nexport { SchemaIntegrityError } from \"./core/commands/command-executor.cjs\";\nexport type { EngineAction, EngineCommand } from \"./core/commands/types.cjs\";\n"
6
6
  ],
7
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA8B,IAA9B;AACA;AACA;AACA;AAG6B,IAA7B;AAEyB,IAAzB;AACwB,IAAxB;AACsC,IAAtC;AAIqC,IAArC;",
8
- "debugId": "0F275ACDD498695964756E2164756E21",
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAA8B,IAA9B;AACA;AACA;AACA;AAG2C,IAA3C;AAEyB,IAAzB;AACwB,IAAxB;AACsC,IAAtC;AAIqC,IAArC;",
8
+ "debugId": "7606169475E9CE8764756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@ricsam/formula-engine",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "commonjs"
5
5
  }
@@ -36,7 +36,7 @@ function defineSchema() {
36
36
  };
37
37
  return builder;
38
38
  }
39
- var createHeader = (index, parse, write) => {
39
+ var defineHeader = (index, parse, write) => {
40
40
  return {
41
41
  parse,
42
42
  write: write ?? ((value) => ({ value })),
@@ -45,7 +45,7 @@ var createHeader = (index, parse, write) => {
45
45
  };
46
46
  export {
47
47
  defineSchema,
48
- createHeader
48
+ defineHeader
49
49
  };
50
50
 
51
- //# debugId=50A63DDDAA5631D564756E2164756E21
51
+ //# debugId=5C9087F143083A7464756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/core/schema/schema.ts"],
4
4
  "sourcesContent": [
5
- "import type {\n CellAddress,\n FiniteSpreadsheetRange,\n SerializedCellValue,\n} from \"../types.mjs\";\n\n/**\n * Define a schema for the FormulaEngine.\n *\n * The returned object contains:\n * - `declaration`: The schema definitions for tables and cells\n * - `schema`: A type-only placeholder (undefined at runtime) for TypeScript inference\n *\n * The actual working schema is only available through `engine.schema` after\n * attaching the definition to a FormulaEngine instance.\n *\n * @example\n * ```typescript\n * const mySchema = defineSchema<CellMetadata>()\n * .addTableSchema(\"users\", { workbookName: \"wb1\", tableName: \"users\" }, headers)\n * .addCellSchema(\"config\", cellAddress, parse);\n *\n * const engine = new FormulaEngine(mySchema);\n * engine.schema.users.findWhere({ id: 1 }); // Works!\n * engine.schema.config.read(); // Works!\n * mySchema.schema.users.findWhere({ id: 1 }); // Error: schema is undefined at runtime\n * ```\n */\nexport function defineSchema<\n TCellMetadata = unknown,\n TCurrentSchema extends Record<string, object> = Record<string, object>,\n TCurrentDeclaration extends Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n >\n>(): CreateSchema<TCellMetadata, TCurrentSchema, TCurrentDeclaration> {\n const declaration: Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = {};\n\n const builder: CreateSchema<\n TCellMetadata,\n TCurrentSchema,\n TCurrentDeclaration\n > = {\n addTableSchema(namespace, address, headers) {\n declaration[namespace] = {\n type: \"table\",\n tableName: address.tableName,\n workbookName: address.workbookName,\n headers: headers as any,\n };\n return builder as any;\n },\n\n addCellSchema(\n namespace: string,\n cellAddress: CellAddress,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"cell\",\n cellAddress,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n addGridSchema(\n namespace: string,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"grid\",\n workbookName: address.workbookName,\n sheetName: address.sheetName,\n range,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n // schema is undefined at runtime - it only exists for TypeScript type inference\n // The actual working schema is built by the FormulaEngine constructor\n schema: undefined as any as TCurrentSchema,\n\n declaration: declaration as TCurrentDeclaration,\n };\n\n return builder;\n}\n\nexport interface TableSchemaDefinition {\n type: \"table\";\n headers: Headers<unknown>;\n tableName: string;\n workbookName: string;\n}\n\nexport interface CellSchemaDefinition {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\nexport interface GridSchemaDefinition {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\ntype Headers<TCellMetadata> = Record<\n string,\n {\n parse: (value: SerializedCellValue, metadata: TCellMetadata) => unknown;\n write: (value: any) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n };\n index: number;\n }\n>;\n\n/**\n * Type representing the TableOrm methods exposed on the schema\n */\nexport type TableOrmSchema<TItem extends Record<string, unknown>> = {\n findWhere(filter: Partial<TItem>): TItem | undefined;\n findAllWhere(filter: Partial<TItem>): TItem[];\n append(item: TItem): TItem;\n updateWhere(filter: Partial<TItem>, update: Partial<TItem>): number;\n removeWhere(filter: Partial<TItem>): number;\n count(): number;\n};\n\n/**\n * Type representing the CellOrm methods exposed on the schema\n */\nexport type CellOrmSchema<TValue> = {\n read(): TValue;\n write(value: TValue): void;\n getAddress(): CellAddress;\n};\n\n/**\n * Type representing the GridOrm methods exposed on the schema\n */\nexport type GridOrmSchema<TValue> = {\n columns: readonly TValue[][];\n rows: readonly TValue[][];\n setValue(value: TValue, position: { col: number; row: number }): void;\n getValue(position: { col: number; row: number }): TValue;\n};\n\nexport type SchemaDeclaration = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n>;\nexport type Schema = Record<string, object>;\n\n/**\n * Write function type for converting parsed values back to serializable form\n */\ntype WriteFunction<TValue, TCellMetadata> = (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n};\n\n/**\n * Helper type to create the return type for addCellSchema/addGridSchema\n */\ntype AddCellSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: CellOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\ntype AddGridSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: GridOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\nexport type CreateSchema<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration\n> = {\n addTableSchema<T extends string, THeaders extends Headers<TCellMetadata>>(\n namespace: T,\n address: { workbookName: string; tableName: string },\n headers: THeaders\n ): CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: TableOrmSchema<{\n [H in keyof THeaders]: ReturnType<THeaders[H][\"parse\"]>;\n }>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"table\";\n tableName: string;\n workbookName: string;\n headers: THeaders;\n };\n }\n >;\n\n // Overload 1: TValue is any type - write is required\n addCellSchema<T extends string, TValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addCellSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 1: TValue is any type - write is required\n addGridSchema<T extends string, TValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addGridSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n schema: TCurrentSchema;\n declaration: TCurrentDeclaration;\n};\n\nexport const createHeader = <TValue, TMetadata>(\n index: number,\n parse: (value: SerializedCellValue, metadata: TMetadata) => TValue,\n write?: (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TMetadata;\n }\n) => {\n return {\n parse,\n write: write ?? ((value) => ({ value })),\n index,\n };\n};\n"
5
+ "import type {\n CellAddress,\n FiniteSpreadsheetRange,\n SerializedCellValue,\n} from \"../types.mjs\";\n\n/**\n * Define a schema for the FormulaEngine.\n *\n * The returned object contains:\n * - `declaration`: The schema definitions for tables and cells\n * - `schema`: A type-only placeholder (undefined at runtime) for TypeScript inference\n *\n * The actual working schema is only available through `engine.schema` after\n * attaching the definition to a FormulaEngine instance.\n *\n * @example\n * ```typescript\n * const mySchema = defineSchema<CellMetadata>()\n * .addTableSchema(\"users\", { workbookName: \"wb1\", tableName: \"users\" }, headers)\n * .addCellSchema(\"config\", cellAddress, parse);\n *\n * const engine = new FormulaEngine(mySchema);\n * engine.schema.users.findWhere({ id: 1 }); // Works!\n * engine.schema.config.read(); // Works!\n * mySchema.schema.users.findWhere({ id: 1 }); // Error: schema is undefined at runtime\n * ```\n */\nexport function defineSchema<\n TCellMetadata = unknown,\n TCurrentSchema extends Record<string, object> = Record<string, object>,\n TCurrentDeclaration extends Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n >\n>(): CreateSchema<TCellMetadata, TCurrentSchema, TCurrentDeclaration> {\n const declaration: Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n > = {};\n\n const builder: CreateSchema<\n TCellMetadata,\n TCurrentSchema,\n TCurrentDeclaration\n > = {\n addTableSchema(namespace, address, headers) {\n declaration[namespace] = {\n type: \"table\",\n tableName: address.tableName,\n workbookName: address.workbookName,\n headers: headers as any,\n };\n return builder as any;\n },\n\n addCellSchema(\n namespace: string,\n cellAddress: CellAddress,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"cell\",\n cellAddress,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n addGridSchema(\n namespace: string,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: any,\n write?: any\n ) {\n declaration[namespace] = {\n type: \"grid\",\n workbookName: address.workbookName,\n sheetName: address.sheetName,\n range,\n parse,\n write: write ?? ((value: unknown) => ({ value: value as SerializedCellValue })),\n };\n return builder as any;\n },\n\n // schema is undefined at runtime - it only exists for TypeScript type inference\n // The actual working schema is built by the FormulaEngine constructor\n schema: undefined as any as TCurrentSchema,\n\n declaration: declaration as TCurrentDeclaration,\n };\n\n return builder;\n}\n\nexport interface TableSchemaDefinition {\n type: \"table\";\n headers: Headers<unknown>;\n tableName: string;\n workbookName: string;\n}\n\nexport interface CellSchemaDefinition {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\nexport interface GridSchemaDefinition {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n write: (value: unknown) => {\n value: SerializedCellValue;\n metadata?: unknown;\n };\n}\n\ntype Headers<TCellMetadata> = Record<\n string,\n {\n parse: (value: SerializedCellValue, metadata: TCellMetadata) => unknown;\n write: (value: any) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n };\n index: number;\n }\n>;\n\n/**\n * Type representing the TableOrm methods exposed on the schema\n */\nexport type TableOrmSchema<TItem extends Record<string, unknown>> = {\n findWhere(filter: Partial<TItem>): TItem | undefined;\n findAllWhere(filter: Partial<TItem>): TItem[];\n append(item: TItem): TItem;\n updateWhere(filter: Partial<TItem>, update: Partial<TItem>): number;\n removeWhere(filter: Partial<TItem>): number;\n count(): number;\n};\n\n/**\n * Type representing the CellOrm methods exposed on the schema\n */\nexport type CellOrmSchema<TValue> = {\n read(): TValue;\n write(value: TValue): void;\n getAddress(): CellAddress;\n};\n\n/**\n * Type representing the GridOrm methods exposed on the schema\n */\nexport type GridOrmSchema<TValue> = {\n columns: readonly TValue[][];\n rows: readonly TValue[][];\n setValue(value: TValue, position: { col: number; row: number }): void;\n getValue(position: { col: number; row: number }): TValue;\n};\n\nexport type SchemaDeclaration = Record<\n string,\n TableSchemaDefinition | CellSchemaDefinition | GridSchemaDefinition\n>;\nexport type Schema = Record<string, object>;\n\n/**\n * Write function type for converting parsed values back to serializable form\n */\ntype WriteFunction<TValue, TCellMetadata> = (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TCellMetadata;\n};\n\n/**\n * Helper type to create the return type for addCellSchema/addGridSchema\n */\ntype AddCellSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: CellOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"cell\";\n cellAddress: CellAddress;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\ntype AddGridSchemaResult<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration,\n T extends string,\n TValue\n> = CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: GridOrmSchema<TValue>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"grid\";\n workbookName: string;\n sheetName: string;\n range: FiniteSpreadsheetRange;\n parse: (value: unknown, metadata: unknown) => unknown;\n };\n }\n>;\n\nexport type CreateSchema<\n TCellMetadata,\n TCurrentSchema extends Schema,\n TCurrentDeclaration extends SchemaDeclaration\n> = {\n addTableSchema<T extends string, THeaders extends Headers<TCellMetadata>>(\n namespace: T,\n address: { workbookName: string; tableName: string },\n headers: THeaders\n ): CreateSchema<\n TCellMetadata,\n TCurrentSchema & {\n [K in T]: TableOrmSchema<{\n [H in keyof THeaders]: ReturnType<THeaders[H][\"parse\"]>;\n }>;\n },\n TCurrentDeclaration & {\n [K in T]: {\n type: \"table\";\n tableName: string;\n workbookName: string;\n headers: THeaders;\n };\n }\n >;\n\n // Overload 1: TValue is any type - write is required\n addCellSchema<T extends string, TValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addCellSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n cellAddress: CellAddress,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddCellSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 1: TValue is any type - write is required\n addGridSchema<T extends string, TValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n // Overload 2: TValue extends SerializedCellValue - write is optional\n addGridSchema<T extends string, TValue extends SerializedCellValue>(\n namespace: T,\n address: { workbookName: string; sheetName: string },\n range: FiniteSpreadsheetRange,\n parse: (value: unknown, metadata: TCellMetadata) => TValue,\n write?: WriteFunction<TValue, TCellMetadata>\n ): AddGridSchemaResult<TCellMetadata, TCurrentSchema, TCurrentDeclaration, T, TValue>;\n\n schema: TCurrentSchema;\n declaration: TCurrentDeclaration;\n};\n\nexport const defineHeader = <TValue, TMetadata>(\n index: number,\n parse: (value: SerializedCellValue, metadata: TMetadata) => TValue,\n write?: (value: TValue) => {\n value: SerializedCellValue;\n metadata?: TMetadata;\n }\n) => {\n return {\n parse,\n write: write ?? ((value) => ({ value })),\n index,\n };\n};\n"
6
6
  ],
7
7
  "mappings": ";AA4BO,SAAS,YAUf,GAAqE;AAAA,EACpE,MAAM,cAGF,CAAC;AAAA,EAEL,MAAM,UAIF;AAAA,IACF,cAAc,CAAC,WAAW,SAAS,SAAS;AAAA,MAC1C,YAAY,aAAa;AAAA,QACvB,MAAM;AAAA,QACN,WAAW,QAAQ;AAAA,QACnB,cAAc,QAAQ;AAAA,QACtB;AAAA,MACF;AAAA,MACA,OAAO;AAAA;AAAA,IAGT,aAAa,CACX,WACA,aACA,OACA,OACA;AAAA,MACA,YAAY,aAAa;AAAA,QACvB,MAAM;AAAA,QACN;AAAA,QACA;AAAA,QACA,OAAO,UAAU,CAAC,WAAoB,EAAE,MAAoC;AAAA,MAC9E;AAAA,MACA,OAAO;AAAA;AAAA,IAGT,aAAa,CACX,WACA,SACA,OACA,OACA,OACA;AAAA,MACA,YAAY,aAAa;AAAA,QACvB,MAAM;AAAA,QACN,cAAc,QAAQ;AAAA,QACtB,WAAW,QAAQ;AAAA,QACnB;AAAA,QACA;AAAA,QACA,OAAO,UAAU,CAAC,WAAoB,EAAE,MAAoC;AAAA,MAC9E;AAAA,MACA,OAAO;AAAA;AAAA,IAKT,QAAQ;AAAA,IAER;AAAA,EACF;AAAA,EAEA,OAAO;AAAA;AAsMF,IAAM,eAAe,CAC1B,OACA,OACA,UAIG;AAAA,EACH,OAAO;AAAA,IACL;AAAA,IACA,OAAO,UAAU,CAAC,WAAW,EAAE,MAAM;AAAA,IACrC;AAAA,EACF;AAAA;",
8
- "debugId": "50A63DDDAA5631D564756E2164756E21",
8
+ "debugId": "5C9087F143083A7464756E2164756E21",
9
9
  "names": []
10
10
  }
package/dist/mjs/lib.mjs CHANGED
@@ -4,13 +4,14 @@ import { FormulaEngine } from "./core/engine.mjs";
4
4
  export * from "./core/types.mjs";
5
5
  export * from "./core/utils.mjs";
6
6
  export * from "./core/utils/color-utils.mjs";
7
- import { defineSchema } from "./core/schema/schema.mjs";
7
+ import { defineSchema, defineHeader } from "./core/schema/schema.mjs";
8
8
  import { TableOrm } from "./core/schema/table-orm.mjs";
9
9
  import { CellOrm } from "./core/schema/cell-orm.mjs";
10
10
  import { SchemaValidationError } from "./core/managers/schema-manager.mjs";
11
11
  import { SchemaIntegrityError } from "./core/commands/command-executor.mjs";
12
12
  export {
13
13
  defineSchema,
14
+ defineHeader,
14
15
  TableOrm,
15
16
  SchemaValidationError,
16
17
  SchemaIntegrityError,
@@ -18,4 +19,4 @@ export {
18
19
  CellOrm
19
20
  };
20
21
 
21
- //# debugId=14E82C883ABC721064756E2164756E21
22
+ //# debugId=D42F2BBEF074B4FE64756E2164756E21
@@ -2,9 +2,9 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/lib.ts"],
4
4
  "sourcesContent": [
5
- "export { FormulaEngine } from \"./core/engine.mjs\";\nexport * from \"./core/types.mjs\";\nexport * from \"./core/utils.mjs\";\nexport * from \"./core/utils/color-utils.mjs\";\n\n// Schema exports\nexport { defineSchema } from \"./core/schema/schema.mjs\";\nexport type { CreateSchema, SchemaDeclaration, Schema, TableSchemaDefinition, CellSchemaDefinition, TableOrmSchema, CellOrmSchema } from \"./core/schema/schema.mjs\";\nexport { TableOrm } from \"./core/schema/table-orm.mjs\";\nexport { CellOrm } from \"./core/schema/cell-orm.mjs\";\nexport { SchemaValidationError } from \"./core/managers/schema-manager.mjs\";\nexport type { ValidationResult } from \"./core/managers/schema-manager.mjs\";\n\n// Command Pattern exports\nexport { SchemaIntegrityError } from \"./core/commands/command-executor.mjs\";\nexport type { EngineAction, EngineCommand } from \"./core/commands/types.mjs\";\n"
5
+ "export { FormulaEngine } from \"./core/engine.mjs\";\nexport * from \"./core/types.mjs\";\nexport * from \"./core/utils.mjs\";\nexport * from \"./core/utils/color-utils.mjs\";\n\n// Schema exports\nexport { defineSchema, defineHeader } from \"./core/schema/schema.mjs\";\nexport type { CreateSchema, SchemaDeclaration, Schema, TableSchemaDefinition, CellSchemaDefinition, TableOrmSchema, CellOrmSchema } from \"./core/schema/schema.mjs\";\nexport { TableOrm } from \"./core/schema/table-orm.mjs\";\nexport { CellOrm } from \"./core/schema/cell-orm.mjs\";\nexport { SchemaValidationError } from \"./core/managers/schema-manager.mjs\";\nexport type { ValidationResult } from \"./core/managers/schema-manager.mjs\";\n\n// Command Pattern exports\nexport { SchemaIntegrityError } from \"./core/commands/command-executor.mjs\";\nexport type { EngineAction, EngineCommand } from \"./core/commands/types.mjs\";\n"
6
6
  ],
7
7
  "mappings": ";AAAA;AAAA;AACA;AACA;AACA;AAGA;AAEA;AACA;AACA;AAIA;",
8
- "debugId": "14E82C883ABC721064756E2164756E21",
8
+ "debugId": "D42F2BBEF074B4FE64756E2164756E21",
9
9
  "names": []
10
10
  }
@@ -1,5 +1,5 @@
1
1
  {
2
2
  "name": "@ricsam/formula-engine",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "type": "module"
5
5
  }
@@ -151,7 +151,7 @@ export type CreateSchema<TCellMetadata, TCurrentSchema extends Schema, TCurrentD
151
151
  schema: TCurrentSchema;
152
152
  declaration: TCurrentDeclaration;
153
153
  };
154
- export declare const createHeader: <TValue, TMetadata>(index: number, parse: (value: SerializedCellValue, metadata: TMetadata) => TValue, write?: (value: TValue) => {
154
+ export declare const defineHeader: <TValue, TMetadata>(index: number, parse: (value: SerializedCellValue, metadata: TMetadata) => TValue, write?: (value: TValue) => {
155
155
  value: SerializedCellValue;
156
156
  metadata?: TMetadata;
157
157
  }) => {
@@ -2,7 +2,7 @@ export { FormulaEngine } from "./core/engine";
2
2
  export * from "./core/types";
3
3
  export * from "./core/utils";
4
4
  export * from "./core/utils/color-utils";
5
- export { defineSchema } from "./core/schema/schema";
5
+ export { defineSchema, defineHeader } from "./core/schema/schema";
6
6
  export type { CreateSchema, SchemaDeclaration, Schema, TableSchemaDefinition, CellSchemaDefinition, TableOrmSchema, CellOrmSchema } from "./core/schema/schema";
7
7
  export { TableOrm } from "./core/schema/table-orm";
8
8
  export { CellOrm } from "./core/schema/cell-orm";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ricsam/formula-engine",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "module": "./dist/mjs/lib.mjs",
5
5
  "scripts": {
6
6
  "test": "bun test",