@zeronsh/orbit 0.3.2 → 0.3.4

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.
@@ -1,4 +1,4 @@
1
- import { table, relationships, createSchema, number, boolean, json, string, optional } from './chunk-EX4WSUC3.js';
1
+ import { table, relationships, createSchema, number, boolean, json, string, optional } from './chunk-LUFJQUF4.js';
2
2
 
3
3
  // orm-core/src/adapter.ts
4
4
  function defineAdapter(adapter) {
@@ -249,5 +249,5 @@ function emitSchema(ir, options = {}) {
249
249
  }
250
250
 
251
251
  export { buildOrbitSchema, defineAdapter, emitSchema };
252
- //# sourceMappingURL=chunk-G6NWZNQR.js.map
253
- //# sourceMappingURL=chunk-G6NWZNQR.js.map
252
+ //# sourceMappingURL=chunk-KFX7HOCV.js.map
253
+ //# sourceMappingURL=chunk-KFX7HOCV.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../orm-core/src/adapter.ts","../orm-core/src/build.ts","../orm-core/src/emit.ts"],"names":[],"mappings":"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","file":"chunk-G6NWZNQR.js","sourcesContent":["// The adapter contract. An ORM adapter converts its native schema into the\n// {@link SchemaIR}. That's the entire surface a new ORM has to implement —\n// everything downstream (runtime build + codegen) is shared.\n\nimport type { SchemaIR } from './ir.ts';\n\n/**\n * Converts an ORM's native schema (`Input`) into Orbit's normalized {@link SchemaIR}.\n *\n * @typeParam Input the ORM's schema object (e.g. a Drizzle `* as schema` import).\n * @typeParam Config adapter-specific options (table/column selection, casing, …).\n */\nexport interface OrmAdapter<Input = unknown, Config = unknown> {\n /** Stable adapter id, e.g. `'drizzle'`. Used in generated-file headers. */\n readonly name: string;\n /** Produce the normalized IR for the given schema + options. */\n toIR(input: Input, config?: Config): SchemaIR;\n}\n\n/** Helper to define an adapter with inferred generics. */\nexport function defineAdapter<Input, Config>(adapter: OrmAdapter<Input, Config>): OrmAdapter<Input, Config> {\n return adapter;\n}\n","// Runtime: turn a {@link SchemaIR} into a live Orbit `SchemaDef` (the same object\n// `createSchema(...)` would produce). Used by adapters' `defineOrbitSchema(...)`\n// runtime entry point. Custom `$type<>()` types are type-level only and do not\n// exist at runtime, so this produces the plain column types; for full custom-type\n// fidelity, use the codegen emitter (`emit.ts`) instead.\n\nimport {\n boolean as boolCol,\n createSchema,\n json as jsonCol,\n number as numCol,\n optional,\n relationships,\n string as strCol,\n table,\n type Column,\n type RelationshipsDef,\n type SchemaDef,\n type TableDef,\n} from '../../client/src/index.ts';\nimport type { IRColumn, IRRelationship, SchemaIR } from './ir.ts';\n\nfunction makeColumn(c: IRColumn): Column {\n const base =\n c.type === 'number' ? numCol() : c.type === 'boolean' ? boolCol() : c.type === 'json' ? jsonCol() : strCol();\n return c.optional ? optional(base as Column) : (base as Column);\n}\n\n/** Build a live Orbit schema object from the IR. */\nexport function buildOrbitSchema(ir: SchemaIR): SchemaDef {\n const tableDefs = new Map<string, TableDef>();\n const tables: TableDef[] = [];\n\n for (const t of ir.tables) {\n const columns: Record<string, Column> = {};\n for (const c of t.columns) columns[c.name] = makeColumn(c);\n const pk = (t.primaryKey.length ? t.primaryKey : ['id']) as [string, ...string[]];\n const def = table(t.name)\n .columns(columns as never)\n .primaryKey(...pk) as unknown as TableDef;\n tableDefs.set(t.name, def);\n tables.push(def);\n }\n\n // `relationships()` is per source table, and `createSchema` rejects a table\n // whose relationships are declared twice — so group all of a table's\n // relationships into one call.\n const byTable = new Map<string, IRRelationship[]>();\n for (const r of ir.relationships) {\n const list = byTable.get(r.table) ?? [];\n list.push(r);\n byTable.set(r.table, list);\n }\n\n const rels: RelationshipsDef[] = [];\n for (const [tableName, list] of byTable) {\n const src = tableDefs.get(tableName);\n if (!src) continue;\n rels.push(\n relationships(src, ({ one, many }) => {\n const out: Record<string, unknown> = {};\n for (const r of list) {\n const last = r.chain[r.chain.length - 1];\n const connect = last.cardinality === 'one' ? one : many;\n const args = r.chain.map((c) => {\n const dest = tableDefs.get(c.destSchema);\n if (!dest) throw new Error(`@orbit/orm-core: relationship \"${tableName}.${r.name}\" references unknown table \"${c.destSchema}\"`);\n return { sourceField: [...c.sourceField], destField: [...c.destField], destSchema: dest };\n });\n // `one`/`many` accept 1 (direct) or 2 (junction) hops.\n out[r.name] = (connect as (...a: unknown[]) => unknown)(...args);\n }\n return out as never;\n }),\n );\n }\n\n return createSchema({ tables: tables as never, relationships: rels as never });\n}\n","// Codegen: turn a {@link SchemaIR} into Orbit-schema TypeScript *source*. Unlike\n// the runtime builder, this preserves each column's custom `$type<>()` and enum\n// types (emitted as `string<...>()` / `json<...>()`), so the generated schema is\n// fully typed. Output is plain text; the CLI optionally runs Prettier over it.\n\nimport type { IRColumn, IRRelationship, IRTable, SchemaIR } from './ir.ts';\n\nexport interface EmitOptions {\n /** Module the Orbit schema helpers are imported from. Default `@orbit/client`. */\n readonly importFrom?: string;\n /** Append `.js` to the import (Node16/NodeNext ESM). Default false. */\n readonly jsExtension?: boolean;\n /** Exported schema const name. Default `schema`. */\n readonly schemaName?: string;\n /** Also emit `export type <Table> = RowOf<typeof <table>>` for each table. Default true. */\n readonly rowTypes?: boolean;\n /** Header comment lines (without leading `//`). */\n readonly header?: readonly string[];\n /**\n * Extra `import type { ... } from '...'` lines to prepend — used to bring in the\n * named TypeScript types referenced by resolved custom column types (e.g. a\n * `jsonb().$type<PostMeta>()` resolves to `PostMeta`, imported from the schema).\n */\n readonly typeImports?: readonly { readonly module: string; readonly names: readonly string[] }[];\n}\n\nconst RESERVED = new Set([\n 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'else',\n 'export', 'extends', 'false', 'finally', 'for', 'function', 'if', 'import', 'in', 'instanceof', 'new',\n 'null', 'return', 'super', 'switch', 'this', 'throw', 'true', 'try', 'typeof', 'var', 'void', 'while',\n 'with', 'yield', 'let', 'static', 'enum', 'await', 'implements', 'package', 'protected', 'interface',\n 'private', 'public', 'schema', 'table', 'string', 'number', 'boolean', 'json', 'optional', 'createSchema',\n 'relationships', 'RowOf', 'one', 'many',\n]);\n\nconst IDENT_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\n\nfunction isValidIdent(s: string): boolean {\n return IDENT_RE.test(s);\n}\n\n/** A stable, collision-free identifier for each table name (used as the const). */\nfunction tableIdentifiers(tables: readonly IRTable[]): Map<string, string> {\n const out = new Map<string, string>();\n const used = new Set<string>();\n for (const t of tables) {\n let base = t.name.replace(/[^A-Za-z0-9_$]/g, '_');\n if (!IDENT_RE.test(base) || base.startsWith('_') === false && /^[0-9]/.test(base)) base = `t_${base}`;\n if (RESERVED.has(base)) base = `${base}_`;\n let ident = base;\n let i = 2;\n while (used.has(ident)) ident = `${base}${i++}`;\n used.add(ident);\n out.set(t.name, ident);\n }\n return out;\n}\n\nfunction pascal(name: string): string {\n return name\n .split(/[^A-Za-z0-9]+/)\n .filter(Boolean)\n .map((p) => p.charAt(0).toUpperCase() + p.slice(1))\n .join('') || 'Row';\n}\n\nfunction keyLiteral(name: string): string {\n return isValidIdent(name) && !RESERVED.has(name) ? name : JSON.stringify(name);\n}\n\nfunction fieldArray(fields: readonly string[]): string {\n return `[${fields.map((f) => JSON.stringify(f)).join(', ')}]`;\n}\n\nfunction columnExpr(c: IRColumn): string {\n const generic = c.customType ? `<${c.customType}>` : '';\n const call = `${c.type}${generic}()`;\n return c.optional ? `optional(${call})` : call;\n}\n\nfunction emitTable(t: IRTable, ident: string): string {\n const cols = t.columns.map((c) => ` ${keyLiteral(c.name)}: ${columnExpr(c)},`).join('\\n');\n const pk = (t.primaryKey.length ? t.primaryKey : ['id']).map((k) => JSON.stringify(k)).join(', ');\n return `const ${ident} = table(${JSON.stringify(t.name)})\\n .columns({\\n${cols}\\n })\\n .primaryKey(${pk});`;\n}\n\nfunction emitRelationshipsBlock(\n tableName: string,\n rels: readonly IRRelationship[],\n idents: Map<string, string>,\n): string {\n const srcIdent = idents.get(tableName)!;\n const entries = rels\n .map((r) => {\n const last = r.chain[r.chain.length - 1];\n const fn = last.cardinality === 'one' ? 'one' : 'many';\n const hops = r.chain.map((c) => {\n const destIdent = idents.get(c.destSchema);\n if (!destIdent) throw new Error(`@orbit/orm-core: relationship \"${tableName}.${r.name}\" references unknown table \"${c.destSchema}\"`);\n return `{ sourceField: ${fieldArray(c.sourceField)}, destField: ${fieldArray(c.destField)}, destSchema: ${destIdent} }`;\n });\n const body = hops.length === 1 ? `${fn}(${hops[0]})` : `${fn}(\\n ${hops.join(',\\n ')},\\n )`;\n return ` ${keyLiteral(r.name)}: ${body},`;\n })\n .join('\\n');\n return ` relationships(${srcIdent}, ({ one, many }) => ({\\n${entries}\\n })),`;\n}\n\n/** Emit the full Orbit-schema TypeScript source for an IR. */\nexport function emitSchema(ir: SchemaIR, options: EmitOptions = {}): string {\n const {\n importFrom = '@zeronsh/orbit/client',\n jsExtension = false,\n schemaName = 'schema',\n rowTypes = true,\n header = ['Generated by @orbit/orm-core — do not edit by hand.'],\n } = options;\n\n const idents = tableIdentifiers(ir.tables);\n\n // Which helpers do we actually use?\n const used = new Set<string>(['createSchema', 'table']);\n for (const t of ir.tables) {\n for (const c of t.columns) {\n used.add(c.type);\n if (c.optional) used.add('optional');\n }\n }\n const hasRels = ir.relationships.length > 0;\n if (hasRels) used.add('relationships');\n if (rowTypes) used.add('RowOf');\n\n // `RowOf` is a type-only export; keep it in a separate `import type` for clarity.\n const valueImports = [...used].filter((u) => u !== 'RowOf');\n const order = ['createSchema', 'relationships', 'table', 'string', 'number', 'boolean', 'json', 'optional'];\n valueImports.sort((a, b) => {\n const ia = order.indexOf(a);\n const ib = order.indexOf(b);\n return (ia < 0 ? 99 : ia) - (ib < 0 ? 99 : ib);\n });\n\n const spec = jsExtension ? `${importFrom}` : importFrom; // import path unchanged; subpath rarely needs .js\n const lines: string[] = [];\n\n for (const h of header) lines.push(`// ${h}`);\n if (header.length) lines.push('');\n\n lines.push(`import {`);\n for (const v of valueImports) lines.push(` ${v},`);\n lines.push(`} from ${JSON.stringify(spec)};`);\n if (rowTypes) lines.push(`import type { RowOf } from ${JSON.stringify(spec)};`);\n for (const imp of options.typeImports ?? []) {\n if (imp.names.length) lines.push(`import type { ${[...imp.names].join(', ')} } from ${JSON.stringify(imp.module)};`);\n }\n lines.push('');\n\n // Tables.\n for (const t of ir.tables) {\n lines.push(emitTable(t, idents.get(t.name)!));\n lines.push('');\n }\n\n // Schema.\n const tableList = ir.tables.map((t) => idents.get(t.name)!).join(', ');\n lines.push(`export const ${schemaName} = createSchema({`);\n lines.push(` tables: [${tableList}],`);\n if (hasRels) {\n const byTable = new Map<string, IRRelationship[]>();\n for (const r of ir.relationships) {\n const l = byTable.get(r.table) ?? [];\n l.push(r);\n byTable.set(r.table, l);\n }\n lines.push(` relationships: [`);\n for (const t of ir.tables) {\n const list = byTable.get(t.name);\n if (list && list.length) lines.push(emitRelationshipsBlock(t.name, list, idents));\n }\n lines.push(` ],`);\n }\n lines.push(`});`);\n lines.push('');\n lines.push(`export type ${pascal(schemaName)} = typeof ${schemaName};`);\n\n // Row types.\n if (rowTypes) {\n lines.push('');\n const seen = new Set<string>([pascal(schemaName)]);\n for (const t of ir.tables) {\n let name = pascal(t.name);\n while (seen.has(name)) name = `${name}Row`;\n seen.add(name);\n lines.push(`export type ${name} = RowOf<typeof ${idents.get(t.name)!}>;`);\n }\n }\n\n return lines.join('\\n') + '\\n';\n}\n"]}
1
+ {"version":3,"sources":["../orm-core/src/adapter.ts","../orm-core/src/build.ts","../orm-core/src/emit.ts"],"names":[],"mappings":"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","file":"chunk-KFX7HOCV.js","sourcesContent":["// The adapter contract. An ORM adapter converts its native schema into the\n// {@link SchemaIR}. That's the entire surface a new ORM has to implement —\n// everything downstream (runtime build + codegen) is shared.\n\nimport type { SchemaIR } from './ir.ts';\n\n/**\n * Converts an ORM's native schema (`Input`) into Orbit's normalized {@link SchemaIR}.\n *\n * @typeParam Input the ORM's schema object (e.g. a Drizzle `* as schema` import).\n * @typeParam Config adapter-specific options (table/column selection, casing, …).\n */\nexport interface OrmAdapter<Input = unknown, Config = unknown> {\n /** Stable adapter id, e.g. `'drizzle'`. Used in generated-file headers. */\n readonly name: string;\n /** Produce the normalized IR for the given schema + options. */\n toIR(input: Input, config?: Config): SchemaIR;\n}\n\n/** Helper to define an adapter with inferred generics. */\nexport function defineAdapter<Input, Config>(adapter: OrmAdapter<Input, Config>): OrmAdapter<Input, Config> {\n return adapter;\n}\n","// Runtime: turn a {@link SchemaIR} into a live Orbit `SchemaDef` (the same object\n// `createSchema(...)` would produce). Used by adapters' `defineOrbitSchema(...)`\n// runtime entry point. Custom `$type<>()` types are type-level only and do not\n// exist at runtime, so this produces the plain column types; for full custom-type\n// fidelity, use the codegen emitter (`emit.ts`) instead.\n\nimport {\n boolean as boolCol,\n createSchema,\n json as jsonCol,\n number as numCol,\n optional,\n relationships,\n string as strCol,\n table,\n type Column,\n type RelationshipsDef,\n type SchemaDef,\n type TableDef,\n} from '../../client/src/index.ts';\nimport type { IRColumn, IRRelationship, SchemaIR } from './ir.ts';\n\nfunction makeColumn(c: IRColumn): Column {\n const base =\n c.type === 'number' ? numCol() : c.type === 'boolean' ? boolCol() : c.type === 'json' ? jsonCol() : strCol();\n return c.optional ? optional(base as Column) : (base as Column);\n}\n\n/** Build a live Orbit schema object from the IR. */\nexport function buildOrbitSchema(ir: SchemaIR): SchemaDef {\n const tableDefs = new Map<string, TableDef>();\n const tables: TableDef[] = [];\n\n for (const t of ir.tables) {\n const columns: Record<string, Column> = {};\n for (const c of t.columns) columns[c.name] = makeColumn(c);\n const pk = (t.primaryKey.length ? t.primaryKey : ['id']) as [string, ...string[]];\n const def = table(t.name)\n .columns(columns as never)\n .primaryKey(...pk) as unknown as TableDef;\n tableDefs.set(t.name, def);\n tables.push(def);\n }\n\n // `relationships()` is per source table, and `createSchema` rejects a table\n // whose relationships are declared twice — so group all of a table's\n // relationships into one call.\n const byTable = new Map<string, IRRelationship[]>();\n for (const r of ir.relationships) {\n const list = byTable.get(r.table) ?? [];\n list.push(r);\n byTable.set(r.table, list);\n }\n\n const rels: RelationshipsDef[] = [];\n for (const [tableName, list] of byTable) {\n const src = tableDefs.get(tableName);\n if (!src) continue;\n rels.push(\n relationships(src, ({ one, many }) => {\n const out: Record<string, unknown> = {};\n for (const r of list) {\n const last = r.chain[r.chain.length - 1];\n const connect = last.cardinality === 'one' ? one : many;\n const args = r.chain.map((c) => {\n const dest = tableDefs.get(c.destSchema);\n if (!dest) throw new Error(`@orbit/orm-core: relationship \"${tableName}.${r.name}\" references unknown table \"${c.destSchema}\"`);\n return { sourceField: [...c.sourceField], destField: [...c.destField], destSchema: dest };\n });\n // `one`/`many` accept 1 (direct) or 2 (junction) hops.\n out[r.name] = (connect as (...a: unknown[]) => unknown)(...args);\n }\n return out as never;\n }),\n );\n }\n\n return createSchema({ tables: tables as never, relationships: rels as never });\n}\n","// Codegen: turn a {@link SchemaIR} into Orbit-schema TypeScript *source*. Unlike\n// the runtime builder, this preserves each column's custom `$type<>()` and enum\n// types (emitted as `string<...>()` / `json<...>()`), so the generated schema is\n// fully typed. Output is plain text; the CLI optionally runs Prettier over it.\n\nimport type { IRColumn, IRRelationship, IRTable, SchemaIR } from './ir.ts';\n\nexport interface EmitOptions {\n /** Module the Orbit schema helpers are imported from. Default `@orbit/client`. */\n readonly importFrom?: string;\n /** Append `.js` to the import (Node16/NodeNext ESM). Default false. */\n readonly jsExtension?: boolean;\n /** Exported schema const name. Default `schema`. */\n readonly schemaName?: string;\n /** Also emit `export type <Table> = RowOf<typeof <table>>` for each table. Default true. */\n readonly rowTypes?: boolean;\n /** Header comment lines (without leading `//`). */\n readonly header?: readonly string[];\n /**\n * Extra `import type { ... } from '...'` lines to prepend — used to bring in the\n * named TypeScript types referenced by resolved custom column types (e.g. a\n * `jsonb().$type<PostMeta>()` resolves to `PostMeta`, imported from the schema).\n */\n readonly typeImports?: readonly { readonly module: string; readonly names: readonly string[] }[];\n}\n\nconst RESERVED = new Set([\n 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'else',\n 'export', 'extends', 'false', 'finally', 'for', 'function', 'if', 'import', 'in', 'instanceof', 'new',\n 'null', 'return', 'super', 'switch', 'this', 'throw', 'true', 'try', 'typeof', 'var', 'void', 'while',\n 'with', 'yield', 'let', 'static', 'enum', 'await', 'implements', 'package', 'protected', 'interface',\n 'private', 'public', 'schema', 'table', 'string', 'number', 'boolean', 'json', 'optional', 'createSchema',\n 'relationships', 'RowOf', 'one', 'many',\n]);\n\nconst IDENT_RE = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\n\nfunction isValidIdent(s: string): boolean {\n return IDENT_RE.test(s);\n}\n\n/** A stable, collision-free identifier for each table name (used as the const). */\nfunction tableIdentifiers(tables: readonly IRTable[]): Map<string, string> {\n const out = new Map<string, string>();\n const used = new Set<string>();\n for (const t of tables) {\n let base = t.name.replace(/[^A-Za-z0-9_$]/g, '_');\n if (!IDENT_RE.test(base) || base.startsWith('_') === false && /^[0-9]/.test(base)) base = `t_${base}`;\n if (RESERVED.has(base)) base = `${base}_`;\n let ident = base;\n let i = 2;\n while (used.has(ident)) ident = `${base}${i++}`;\n used.add(ident);\n out.set(t.name, ident);\n }\n return out;\n}\n\nfunction pascal(name: string): string {\n return name\n .split(/[^A-Za-z0-9]+/)\n .filter(Boolean)\n .map((p) => p.charAt(0).toUpperCase() + p.slice(1))\n .join('') || 'Row';\n}\n\nfunction keyLiteral(name: string): string {\n return isValidIdent(name) && !RESERVED.has(name) ? name : JSON.stringify(name);\n}\n\nfunction fieldArray(fields: readonly string[]): string {\n return `[${fields.map((f) => JSON.stringify(f)).join(', ')}]`;\n}\n\nfunction columnExpr(c: IRColumn): string {\n const generic = c.customType ? `<${c.customType}>` : '';\n const call = `${c.type}${generic}()`;\n return c.optional ? `optional(${call})` : call;\n}\n\nfunction emitTable(t: IRTable, ident: string): string {\n const cols = t.columns.map((c) => ` ${keyLiteral(c.name)}: ${columnExpr(c)},`).join('\\n');\n const pk = (t.primaryKey.length ? t.primaryKey : ['id']).map((k) => JSON.stringify(k)).join(', ');\n return `const ${ident} = table(${JSON.stringify(t.name)})\\n .columns({\\n${cols}\\n })\\n .primaryKey(${pk});`;\n}\n\nfunction emitRelationshipsBlock(\n tableName: string,\n rels: readonly IRRelationship[],\n idents: Map<string, string>,\n): string {\n const srcIdent = idents.get(tableName)!;\n const entries = rels\n .map((r) => {\n const last = r.chain[r.chain.length - 1];\n const fn = last.cardinality === 'one' ? 'one' : 'many';\n const hops = r.chain.map((c) => {\n const destIdent = idents.get(c.destSchema);\n if (!destIdent) throw new Error(`@orbit/orm-core: relationship \"${tableName}.${r.name}\" references unknown table \"${c.destSchema}\"`);\n return `{ sourceField: ${fieldArray(c.sourceField)}, destField: ${fieldArray(c.destField)}, destSchema: ${destIdent} }`;\n });\n const body = hops.length === 1 ? `${fn}(${hops[0]})` : `${fn}(\\n ${hops.join(',\\n ')},\\n )`;\n return ` ${keyLiteral(r.name)}: ${body},`;\n })\n .join('\\n');\n return ` relationships(${srcIdent}, ({ one, many }) => ({\\n${entries}\\n })),`;\n}\n\n/** Emit the full Orbit-schema TypeScript source for an IR. */\nexport function emitSchema(ir: SchemaIR, options: EmitOptions = {}): string {\n const {\n importFrom = '@zeronsh/orbit/client',\n jsExtension = false,\n schemaName = 'schema',\n rowTypes = true,\n header = ['Generated by @orbit/orm-core — do not edit by hand.'],\n } = options;\n\n const idents = tableIdentifiers(ir.tables);\n\n // Which helpers do we actually use?\n const used = new Set<string>(['createSchema', 'table']);\n for (const t of ir.tables) {\n for (const c of t.columns) {\n used.add(c.type);\n if (c.optional) used.add('optional');\n }\n }\n const hasRels = ir.relationships.length > 0;\n if (hasRels) used.add('relationships');\n if (rowTypes) used.add('RowOf');\n\n // `RowOf` is a type-only export; keep it in a separate `import type` for clarity.\n const valueImports = [...used].filter((u) => u !== 'RowOf');\n const order = ['createSchema', 'relationships', 'table', 'string', 'number', 'boolean', 'json', 'optional'];\n valueImports.sort((a, b) => {\n const ia = order.indexOf(a);\n const ib = order.indexOf(b);\n return (ia < 0 ? 99 : ia) - (ib < 0 ? 99 : ib);\n });\n\n const spec = jsExtension ? `${importFrom}` : importFrom; // import path unchanged; subpath rarely needs .js\n const lines: string[] = [];\n\n for (const h of header) lines.push(`// ${h}`);\n if (header.length) lines.push('');\n\n lines.push(`import {`);\n for (const v of valueImports) lines.push(` ${v},`);\n lines.push(`} from ${JSON.stringify(spec)};`);\n if (rowTypes) lines.push(`import type { RowOf } from ${JSON.stringify(spec)};`);\n for (const imp of options.typeImports ?? []) {\n if (imp.names.length) lines.push(`import type { ${[...imp.names].join(', ')} } from ${JSON.stringify(imp.module)};`);\n }\n lines.push('');\n\n // Tables.\n for (const t of ir.tables) {\n lines.push(emitTable(t, idents.get(t.name)!));\n lines.push('');\n }\n\n // Schema.\n const tableList = ir.tables.map((t) => idents.get(t.name)!).join(', ');\n lines.push(`export const ${schemaName} = createSchema({`);\n lines.push(` tables: [${tableList}],`);\n if (hasRels) {\n const byTable = new Map<string, IRRelationship[]>();\n for (const r of ir.relationships) {\n const l = byTable.get(r.table) ?? [];\n l.push(r);\n byTable.set(r.table, l);\n }\n lines.push(` relationships: [`);\n for (const t of ir.tables) {\n const list = byTable.get(t.name);\n if (list && list.length) lines.push(emitRelationshipsBlock(t.name, list, idents));\n }\n lines.push(` ],`);\n }\n lines.push(`});`);\n lines.push('');\n lines.push(`export type ${pascal(schemaName)} = typeof ${schemaName};`);\n\n // Row types.\n if (rowTypes) {\n lines.push('');\n const seen = new Set<string>([pascal(schemaName)]);\n for (const t of ir.tables) {\n let name = pascal(t.name);\n while (seen.has(name)) name = `${name}Row`;\n seen.add(name);\n lines.push(`export type ${name} = RowOf<typeof ${idents.get(t.name)!}>;`);\n }\n }\n\n return lines.join('\\n') + '\\n';\n}\n"]}
@@ -411,6 +411,12 @@ var Store = class {
411
411
  #dirtyPending = /* @__PURE__ */ new Set();
412
412
  #cleared = false;
413
413
  #flushTimer;
414
+ /** Last server cookie (poke watermark). Persisted **after** the rows it covers
415
+ * (see `flush`) so a reload never restores a cookie ahead of the cached rows —
416
+ * which would make the server's delta-resume suppress rows the client never
417
+ * durably received (permanent divergence). */
418
+ #cookie;
419
+ #cookieDirty = false;
414
420
  /** Effective-row keys touched since the last notify (delivered to listeners). */
415
421
  #changed = [];
416
422
  constructor(pkByTable = {}) {
@@ -515,6 +521,20 @@ var Store = class {
515
521
  pendingMutations() {
516
522
  return this.#pending.map((p) => p.mutation).filter((m) => m !== void 0);
517
523
  }
524
+ /** Drop a single pending mutation by id — e.g. an undeliverable "poison" mutation
525
+ * the server keeps rejecting (oversized frame). Removes its optimistic overlay and,
526
+ * on the next flush, its persisted `p/` entry, so it is neither replayed on reconnect
527
+ * nor restored on reload. Returns whether such a mutation was present. */
528
+ dropPending(id) {
529
+ const idx = this.#pending.findIndex((p2) => p2.id === id);
530
+ if (idx === -1) return false;
531
+ const [p] = this.#pending.splice(idx, 1);
532
+ this.#dirtyPending.add(p.id);
533
+ for (const op of p.ops) this.#touch(op.tableName, this.#key(op.tableName, op.value));
534
+ this.#scheduleFlush();
535
+ this.#notify();
536
+ return true;
537
+ }
518
538
  /** All rows for `table` with the optimistic overlay applied. */
519
539
  effectiveRows(table2) {
520
540
  const merged = new Map(this.#table(table2));
@@ -533,6 +553,18 @@ var Store = class {
533
553
  this.#listeners.add(fn);
534
554
  return () => this.#listeners.delete(fn);
535
555
  }
556
+ /** Record the server cookie for the rows applied so far. It is persisted only in
557
+ * `flush`, **after** the row writes — so the durable cookie is never ahead of the
558
+ * durable rows. */
559
+ setCookie(cookie) {
560
+ this.#cookie = cookie;
561
+ this.#cookieDirty = true;
562
+ this.#scheduleFlush();
563
+ }
564
+ /** The last persisted/applied cookie (for resume `baseCookie`). */
565
+ cookie() {
566
+ return this.#cookie;
567
+ }
536
568
  #notify() {
537
569
  const changed = this.#changed;
538
570
  this.#changed = [];
@@ -561,6 +593,8 @@ var Store = class {
561
593
  this.#pending.push(p);
562
594
  for (const op of p.ops) loaded.push({ table: op.tableName, key: this.#key(op.tableName, op.value) });
563
595
  }
596
+ const cookie = await kv.get("cookie");
597
+ if (typeof cookie === "string") this.#cookie = cookie;
564
598
  this.#changed.push(...loaded);
565
599
  this.#notify();
566
600
  }
@@ -594,6 +628,10 @@ var Store = class {
594
628
  }
595
629
  this.#dirtyPending.clear();
596
630
  await Promise.all(ps);
631
+ if (this.#cookieDirty && this.#cookie !== void 0) {
632
+ await kv.set("cookie", this.#cookie);
633
+ this.#cookieDirty = false;
634
+ }
597
635
  }
598
636
  };
599
637
 
@@ -614,6 +652,22 @@ function typeRank(v) {
614
652
  return 4;
615
653
  }
616
654
  }
655
+ function compareStringsUtf8(a, b) {
656
+ if (a === b) return 0;
657
+ const ia = a[Symbol.iterator]();
658
+ const ib = b[Symbol.iterator]();
659
+ for (; ; ) {
660
+ const na = ia.next();
661
+ const nb = ib.next();
662
+ if (na.done) return nb.done ? 0 : -1;
663
+ if (nb.done) return 1;
664
+ if (na.value !== nb.value) {
665
+ const ca = na.value.codePointAt(0);
666
+ const cb = nb.value.codePointAt(0);
667
+ if (ca !== cb) return ca < cb ? -1 : 1;
668
+ }
669
+ }
670
+ }
617
671
  function compareValues(a, b) {
618
672
  if (isNull(a) && isNull(b)) return 0;
619
673
  if (isNull(a)) return -1;
@@ -621,7 +675,7 @@ function compareValues(a, b) {
621
675
  if (typeof a === typeof b) {
622
676
  if (typeof a === "number") return a < b ? -1 : a > b ? 1 : 0;
623
677
  if (typeof a === "boolean") return a === b ? 0 : a ? 1 : -1;
624
- if (typeof a === "string") return a < b ? -1 : a > b ? 1 : 0;
678
+ if (typeof a === "string") return compareStringsUtf8(a, b);
625
679
  return 0;
626
680
  }
627
681
  return typeRank(a) - typeRank(b);
@@ -1812,8 +1866,7 @@ var Orbit = class {
1812
1866
  if (typeof savedNextID === "number" && savedNextID > this.#nextMutationID) {
1813
1867
  this.#nextMutationID = savedNextID;
1814
1868
  }
1815
- const c = await this.#kv.get("cookie");
1816
- if (typeof c === "string") this.#cookie = c;
1869
+ this.#cookie = this.#store.cookie();
1817
1870
  } catch {
1818
1871
  }
1819
1872
  }
@@ -1851,10 +1904,29 @@ var Orbit = class {
1851
1904
  ws.addEventListener("message", (ev) => {
1852
1905
  this.#onMessage(JSON.parse(ev.data));
1853
1906
  });
1854
- ws.addEventListener("close", () => {
1907
+ ws.addEventListener("close", (ev) => {
1855
1908
  this.#connecting = false;
1856
1909
  if (this.#ws === ws) this.#ws = void 0;
1857
1910
  this.#poke = null;
1911
+ if (ev.code === 1009 && this.#unconfirmedPushes.size > 0) {
1912
+ let poisonId;
1913
+ let maxSize = -1;
1914
+ for (const [id, msg] of this.#unconfirmedPushes) {
1915
+ const size = JSON.stringify(msg).length;
1916
+ if (size > maxSize) {
1917
+ maxSize = size;
1918
+ poisonId = id;
1919
+ }
1920
+ }
1921
+ if (poisonId !== void 0) {
1922
+ this.#unconfirmedPushes.delete(poisonId);
1923
+ this.#store.dropPending(poisonId);
1924
+ this.#onError?.({
1925
+ kind: "mutation-too-large",
1926
+ message: `dropped mutation ${poisonId} (~${maxSize} bytes): server closed with code 1009 (message too big)`
1927
+ });
1928
+ }
1929
+ }
1858
1930
  this.#scheduleReconnect();
1859
1931
  });
1860
1932
  ws.addEventListener("error", () => ws.close());
@@ -1903,7 +1975,7 @@ var Orbit = class {
1903
1975
  this.#store.confirmThrough(confirmed);
1904
1976
  }
1905
1977
  this.#cookie = body.cookie;
1906
- void this.#kv?.set("cookie", body.cookie);
1978
+ this.#store.setCookie(body.cookie);
1907
1979
  this.#reconnectMs = 500;
1908
1980
  return;
1909
1981
  }
@@ -1975,5 +2047,5 @@ var IDBKV = class {
1975
2047
  };
1976
2048
 
1977
2049
  export { IDBKV, MaterializedView, MemoryKV, MemorySource, MemorySourceProvider, Orbit, PROTOCOL_VERSION, Query, QueryManager, SchemaQuery, SourceConnection, Store, StoreProvider, TypedQuery, View, boolean, buildPipeline, buildSchemaQueries, collectOps, compareValues, createBuilder, createOrbitApi, createSchema, defineMutation, defineQuery, evaluate, hashAST, hashString, json, nodeToRow, number, optional, parseTTL, relationships, string, table, tablesOf, unwrapSingular, validateArgs, valuesEqual };
1978
- //# sourceMappingURL=chunk-EX4WSUC3.js.map
1979
- //# sourceMappingURL=chunk-EX4WSUC3.js.map
2050
+ //# sourceMappingURL=chunk-LUFJQUF4.js.map
2051
+ //# sourceMappingURL=chunk-LUFJQUF4.js.map