@zeronsh/orbit 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.
- package/dist/{chunk-N2NAKHMU.js → chunk-EXF5B3CL.js} +3 -4
- package/dist/chunk-EXF5B3CL.js.map +1 -0
- package/dist/{chunk-7CMFTRDQ.js → chunk-KC6BOBOK.js} +3 -3
- package/dist/{chunk-7CMFTRDQ.js.map → chunk-KC6BOBOK.js.map} +1 -1
- package/dist/{chunk-QR3NSGHJ.js → chunk-XMDAQ2ET.js} +3 -3
- package/dist/{chunk-QR3NSGHJ.js.map → chunk-XMDAQ2ET.js.map} +1 -1
- package/dist/client.d.ts +4 -4
- package/dist/client.js +1 -1
- package/dist/{custom-DzMQ-nY2.d.ts → custom-BDQOYcwZ.d.ts} +1 -1
- package/dist/drizzle/cli/bin.js +3 -3
- package/dist/drizzle/cli.js +3 -3
- package/dist/drizzle.js +2 -2
- package/dist/orm-core.js +2 -2
- package/dist/{query-BMK1cXAS.d.ts → query-CKrvTNqq.d.ts} +0 -4
- package/dist/react.d.ts +1 -1
- package/dist/server/pg.d.ts +2 -2
- package/dist/server.d.ts +2 -2
- package/dist/server.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-N2NAKHMU.js.map +0 -1
|
@@ -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-7CMFTRDQ.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-KC6BOBOK.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,5 +1,5 @@
|
|
|
1
1
|
import { orbitTypeOf, drizzleToIR } from './chunk-2R6QPZNI.js';
|
|
2
|
-
import { emitSchema } from './chunk-
|
|
2
|
+
import { emitSchema } from './chunk-KC6BOBOK.js';
|
|
3
3
|
import * as path from 'path';
|
|
4
4
|
import * as fs from 'fs/promises';
|
|
5
5
|
import { pathToFileURL } from 'url';
|
|
@@ -127,5 +127,5 @@ async function formatWithPrettier(source, filepath) {
|
|
|
127
127
|
}
|
|
128
128
|
|
|
129
129
|
export { generate, resolveCustomTypes };
|
|
130
|
-
//# sourceMappingURL=chunk-
|
|
131
|
-
//# sourceMappingURL=chunk-
|
|
130
|
+
//# sourceMappingURL=chunk-XMDAQ2ET.js.map
|
|
131
|
+
//# sourceMappingURL=chunk-XMDAQ2ET.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../drizzle/src/cli/type-resolution.ts","../drizzle/src/cli/generate.ts"],"names":["path2"],"mappings":"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","file":"chunk-QR3NSGHJ.js","sourcesContent":["// Resolve each column's *TypeScript* type with the compiler (via ts-morph), so a\n// Drizzle `.$type<...>()` and enum unions survive into the generated schema —\n// information that does not exist at runtime. For column `c` of table exported as\n// `user`, we resolve `InferSelectModel<typeof user>['c']` (the canonical Drizzle\n// row-type accessor), strip nullability (Orbit models it with `optional()`), and\n// keep the result as the column's custom type. Named types it references (e.g.\n// `PostMeta`, or `import(\"…/country\").Country`) are rewritten to bare names and\n// collected as `import type` lines for the generated file.\n\nimport * as path from 'node:path';\n\nexport interface ResolveColumn {\n readonly jsKey: string;\n readonly dbName: string;\n readonly baseType: 'string' | 'number' | 'boolean' | 'json';\n}\n\nexport interface ResolveTable {\n /** The export name of the table in the schema module (e.g. `user`). */\n readonly exportName: string;\n /** The Orbit/database table name. */\n readonly tableName: string;\n readonly columns: readonly ResolveColumn[];\n}\n\nexport interface ResolveOptions {\n /** Absolute path to the user's Drizzle schema module. */\n readonly schemaModulePath: string;\n /** Absolute path of the file being generated (for relative import specifiers). */\n readonly outputFilePath: string;\n /** Optional tsconfig for module resolution. */\n readonly tsConfigFilePath?: string;\n /** Append `.js` to emitted relative import specifiers (Node16/NodeNext). */\n readonly jsExtension?: boolean;\n}\n\nexport interface ResolvedTypes {\n /** `tableName → dbColumnName → TS type expression`. */\n readonly customTypes: Record<string, Record<string, string>>;\n /** `import type` lines the generated file needs for named custom types. */\n readonly typeImports: { module: string; names: string[] }[];\n}\n\nconst TRIVIAL = new Set(['string', 'number', 'boolean', 'unknown', 'any', 'never', '{}', 'object']);\nconst NS = '__orbitDrizzleSchema';\n\nfunction stripNull(text: string): string {\n return text\n .replace(/\\s*\\|\\s*null\\b/g, '')\n .replace(/\\bnull\\s*\\|\\s*/g, '')\n .replace(/\\s*\\|\\s*undefined\\b/g, '')\n .trim();\n}\n\n/** Module specifier from `from` (the generated file) to `to` (a TS module). */\nfunction relSpecifier(fromFile: string, toModule: string, jsExtension: boolean): string {\n let rel = path.relative(path.dirname(fromFile), toModule).replace(/\\\\/g, '/');\n if (!rel.startsWith('.')) rel = `./${rel}`;\n rel = rel.replace(/\\.tsx?$/, '');\n return jsExtension ? `${rel}.js` : rel;\n}\n\nexport async function resolveCustomTypes(tables: readonly ResolveTable[], options: ResolveOptions): Promise<ResolvedTypes> {\n // ts-morph is an optional peer dependency; import lazily so the runtime path\n // never needs it.\n const { Project, ts } = await import('ts-morph');\n\n const project = options.tsConfigFilePath\n ? new Project({ tsConfigFilePath: options.tsConfigFilePath, skipAddingFilesFromTsConfig: true })\n : new Project({\n compilerOptions: { strict: true, moduleResolution: ts.ModuleResolutionKind.Bundler, target: ts.ScriptTarget.ES2022 },\n skipAddingFilesFromTsConfig: true,\n });\n\n project.addSourceFileAtPath(options.schemaModulePath);\n\n const schemaDir = path.dirname(options.schemaModulePath);\n const schemaSpecifier = `./${path.basename(options.schemaModulePath).replace(/\\.tsx?$/, '')}`;\n\n // One type alias per column, plus an index so we can map back.\n const aliases: { name: string; tableName: string; dbName: string; baseType: ResolveColumn['baseType'] }[] = [];\n let body = `import type { InferSelectModel } from 'drizzle-orm';\\nimport type * as ${NS} from ${JSON.stringify(schemaSpecifier)};\\n`;\n let i = 0;\n for (const t of tables) {\n for (const c of t.columns) {\n const name = `C_${i++}`;\n body += `type ${name} = InferSelectModel<typeof ${NS}.${t.exportName}>[${JSON.stringify(c.jsKey)}];\\n`;\n aliases.push({ name, tableName: t.tableName, dbName: c.dbName, baseType: c.baseType });\n }\n }\n\n const probe = project.createSourceFile(path.join(schemaDir, '__orbit_drizzle_probe__.ts'), body, { overwrite: true });\n const flags = ts.TypeFormatFlags.NoTruncation;\n\n const customTypes: Record<string, Record<string, string>> = {};\n // module specifier → set of imported names\n const importsByModule = new Map<string, Set<string>>();\n const addImport = (moduleSpecifier: string, name: string) => {\n const set = importsByModule.get(moduleSpecifier) ?? new Set<string>();\n set.add(name);\n importsByModule.set(moduleSpecifier, set);\n };\n\n for (const a of aliases) {\n const alias = probe.getTypeAliasOrThrow(a.name);\n const fullType = alias.getType();\n const constituents = fullType.isUnion() ? fullType.getUnionTypes() : [fullType];\n const nonNull = constituents.filter((c) => !c.isNull() && !c.isUndefined());\n\n // Keep a custom type only when it's a genuine *subtype* of the column's Orbit\n // base type. Otherwise the base type is the right one (e.g. a `timestamp`\n // maps to `number`, even though its Drizzle TS type is `Date`).\n const compatible =\n a.baseType === 'json'\n ? true\n : nonNull.length > 0 &&\n nonNull.every((c) => {\n if (a.baseType === 'string') return c.isString() || c.isStringLiteral() || c.isTemplateLiteral();\n if (a.baseType === 'number') return c.isNumber() || c.isNumberLiteral();\n return c.isBoolean() || c.isBooleanLiteral();\n });\n if (!compatible) continue;\n\n let text = stripNull(fullType.getText(alias, flags));\n\n // Rewrite `import(\"ABS\").Name` → `Name`, collecting an import from ABS.\n text = text.replace(/import\\(\"([^\"]+)\"\\)\\.(\\w+)/g, (_m, abs: string, name: string) => {\n const spec = relSpecifier(options.outputFilePath, abs, Boolean(options.jsExtension));\n addImport(spec, name);\n return name;\n });\n\n // Rewrite `__orbitDrizzleSchema.Name` → `Name`, importing from the schema module.\n const schemaImportSpec = relSpecifier(options.outputFilePath, options.schemaModulePath, Boolean(options.jsExtension));\n text = text.replace(new RegExp(`${NS}\\\\.(\\\\w+)`, 'g'), (_m, name: string) => {\n addImport(schemaImportSpec, name);\n return name;\n });\n\n // Drop trivial types; for json keep only meaningful object/array/named types.\n if (TRIVIAL.has(text) || text === '') continue;\n if (a.baseType === 'json' && (text === 'unknown' || text === 'any')) continue;\n\n (customTypes[a.tableName] ??= {})[a.dbName] = text;\n }\n\n project.removeSourceFile(probe);\n\n const typeImports = [...importsByModule.entries()].map(([module, names]) => ({ module, names: [...names].sort() }));\n return { customTypes, typeImports };\n}\n","// The `orbit-drizzle generate` pipeline:\n// import schema (runtime) → resolve custom types (ts-morph) → IR → emit → write.\n\nimport * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { getTableColumns, getTableName, is, Table } from 'drizzle-orm';\nimport { emitSchema } from '../../../orm-core/src/index.ts';\nimport { drizzleToIR, type DrizzleAdapterConfig } from '../introspect.ts';\nimport { orbitTypeOf, type DrizzleColumnLike } from '../type-map.ts';\nimport { resolveCustomTypes, type ResolveTable } from './type-resolution.ts';\n\nexport interface GenerateOptions {\n /** Path to the Drizzle schema module (a single `.ts` file exporting tables + relations). */\n readonly schemaPath: string;\n /** Output path. Default `./orbit-schema.gen.ts`. */\n readonly outputPath?: string;\n /** tsconfig for type resolution + module resolution. */\n readonly tsConfigPath?: string;\n /** Run Prettier over the output if available. */\n readonly format?: boolean;\n /** Append `.js` to relative imports (Node16/NodeNext ESM). */\n readonly jsExtension?: boolean;\n /** Module the Orbit schema helpers are imported from. Default `@orbit/client`. */\n readonly importFrom?: string;\n /** Exported schema const name. Default `schema`. */\n readonly schemaName?: string;\n /** Table/column selection (see {@link DrizzleAdapterConfig.tables}). */\n readonly tables?: DrizzleAdapterConfig['tables'];\n readonly debug?: boolean;\n}\n\nexport interface GenerateResult {\n readonly outputPath: string;\n readonly source: string;\n}\n\n/** Generate an Orbit schema source file from a Drizzle schema. */\nexport async function generate(options: GenerateOptions): Promise<GenerateResult> {\n const schemaModulePath = path.resolve(options.schemaPath);\n const outputPath = path.resolve(options.outputPath ?? './orbit-schema.gen.ts');\n\n // 1. Load the schema module at runtime (tables + relations).\n const moduleObj = (await import(pathToFileURL(schemaModulePath).href)) as Record<string, unknown>;\n\n // 2. Collect per-table resolution metadata (export name, jsKey ↔ dbName).\n const resolveTables: ResolveTable[] = [];\n for (const [exportName, value] of Object.entries(moduleObj)) {\n if (!is(value, Table)) continue;\n const table = value as Table;\n const tableName = getTableName(table);\n if (options.tables && options.tables[tableName] === false) continue;\n const cols = getTableColumns(table) as Record<string, DrizzleColumnLike & { name: string }>;\n const columns = Object.entries(cols)\n .map(([jsKey, col]) => {\n const base = orbitTypeOf(col);\n return base ? { jsKey, dbName: col.name, baseType: base } : null;\n })\n .filter((c): c is NonNullable<typeof c> => c !== null);\n resolveTables.push({ exportName, tableName, columns });\n }\n\n // 3. Resolve custom `$type<>()` / enum types via the TypeScript compiler.\n const { customTypes, typeImports } = await resolveCustomTypes(resolveTables, {\n schemaModulePath,\n outputFilePath: outputPath,\n tsConfigFilePath: options.tsConfigPath,\n jsExtension: options.jsExtension,\n });\n\n // 4. Build the IR with the resolved custom types folded in.\n const ir = drizzleToIR(moduleObj, { customTypes, tables: options.tables, debug: options.debug });\n\n // 5. Emit the Orbit schema source.\n let source = emitSchema(ir, {\n importFrom: options.importFrom ?? '@zeronsh/orbit/client',\n schemaName: options.schemaName,\n jsExtension: options.jsExtension,\n typeImports,\n header: [\n `Generated by @orbit/drizzle from ${path.basename(schemaModulePath)} — do not edit by hand.`,\n `Re-run \\`orbit-drizzle generate\\` to update.`,\n ],\n });\n\n // 6. Optional Prettier.\n if (options.format) source = await formatWithPrettier(source, outputPath);\n\n await fs.writeFile(outputPath, source, 'utf8');\n return { outputPath, source };\n}\n\nasync function formatWithPrettier(source: string, filepath: string): Promise<string> {\n try {\n const prettier = await import('prettier');\n const config = (await prettier.resolveConfig(filepath)) ?? {};\n return prettier.format(source, { ...config, parser: 'typescript' });\n } catch {\n console.warn('⚠️ orbit-drizzle: prettier not found — skipping formatting.');\n return source;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../drizzle/src/cli/type-resolution.ts","../drizzle/src/cli/generate.ts"],"names":["path2"],"mappings":"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","file":"chunk-XMDAQ2ET.js","sourcesContent":["// Resolve each column's *TypeScript* type with the compiler (via ts-morph), so a\n// Drizzle `.$type<...>()` and enum unions survive into the generated schema —\n// information that does not exist at runtime. For column `c` of table exported as\n// `user`, we resolve `InferSelectModel<typeof user>['c']` (the canonical Drizzle\n// row-type accessor), strip nullability (Orbit models it with `optional()`), and\n// keep the result as the column's custom type. Named types it references (e.g.\n// `PostMeta`, or `import(\"…/country\").Country`) are rewritten to bare names and\n// collected as `import type` lines for the generated file.\n\nimport * as path from 'node:path';\n\nexport interface ResolveColumn {\n readonly jsKey: string;\n readonly dbName: string;\n readonly baseType: 'string' | 'number' | 'boolean' | 'json';\n}\n\nexport interface ResolveTable {\n /** The export name of the table in the schema module (e.g. `user`). */\n readonly exportName: string;\n /** The Orbit/database table name. */\n readonly tableName: string;\n readonly columns: readonly ResolveColumn[];\n}\n\nexport interface ResolveOptions {\n /** Absolute path to the user's Drizzle schema module. */\n readonly schemaModulePath: string;\n /** Absolute path of the file being generated (for relative import specifiers). */\n readonly outputFilePath: string;\n /** Optional tsconfig for module resolution. */\n readonly tsConfigFilePath?: string;\n /** Append `.js` to emitted relative import specifiers (Node16/NodeNext). */\n readonly jsExtension?: boolean;\n}\n\nexport interface ResolvedTypes {\n /** `tableName → dbColumnName → TS type expression`. */\n readonly customTypes: Record<string, Record<string, string>>;\n /** `import type` lines the generated file needs for named custom types. */\n readonly typeImports: { module: string; names: string[] }[];\n}\n\nconst TRIVIAL = new Set(['string', 'number', 'boolean', 'unknown', 'any', 'never', '{}', 'object']);\nconst NS = '__orbitDrizzleSchema';\n\nfunction stripNull(text: string): string {\n return text\n .replace(/\\s*\\|\\s*null\\b/g, '')\n .replace(/\\bnull\\s*\\|\\s*/g, '')\n .replace(/\\s*\\|\\s*undefined\\b/g, '')\n .trim();\n}\n\n/** Module specifier from `from` (the generated file) to `to` (a TS module). */\nfunction relSpecifier(fromFile: string, toModule: string, jsExtension: boolean): string {\n let rel = path.relative(path.dirname(fromFile), toModule).replace(/\\\\/g, '/');\n if (!rel.startsWith('.')) rel = `./${rel}`;\n rel = rel.replace(/\\.tsx?$/, '');\n return jsExtension ? `${rel}.js` : rel;\n}\n\nexport async function resolveCustomTypes(tables: readonly ResolveTable[], options: ResolveOptions): Promise<ResolvedTypes> {\n // ts-morph is an optional peer dependency; import lazily so the runtime path\n // never needs it.\n const { Project, ts } = await import('ts-morph');\n\n const project = options.tsConfigFilePath\n ? new Project({ tsConfigFilePath: options.tsConfigFilePath, skipAddingFilesFromTsConfig: true })\n : new Project({\n compilerOptions: { strict: true, moduleResolution: ts.ModuleResolutionKind.Bundler, target: ts.ScriptTarget.ES2022 },\n skipAddingFilesFromTsConfig: true,\n });\n\n project.addSourceFileAtPath(options.schemaModulePath);\n\n const schemaDir = path.dirname(options.schemaModulePath);\n const schemaSpecifier = `./${path.basename(options.schemaModulePath).replace(/\\.tsx?$/, '')}`;\n\n // One type alias per column, plus an index so we can map back.\n const aliases: { name: string; tableName: string; dbName: string; baseType: ResolveColumn['baseType'] }[] = [];\n let body = `import type { InferSelectModel } from 'drizzle-orm';\\nimport type * as ${NS} from ${JSON.stringify(schemaSpecifier)};\\n`;\n let i = 0;\n for (const t of tables) {\n for (const c of t.columns) {\n const name = `C_${i++}`;\n body += `type ${name} = InferSelectModel<typeof ${NS}.${t.exportName}>[${JSON.stringify(c.jsKey)}];\\n`;\n aliases.push({ name, tableName: t.tableName, dbName: c.dbName, baseType: c.baseType });\n }\n }\n\n const probe = project.createSourceFile(path.join(schemaDir, '__orbit_drizzle_probe__.ts'), body, { overwrite: true });\n const flags = ts.TypeFormatFlags.NoTruncation;\n\n const customTypes: Record<string, Record<string, string>> = {};\n // module specifier → set of imported names\n const importsByModule = new Map<string, Set<string>>();\n const addImport = (moduleSpecifier: string, name: string) => {\n const set = importsByModule.get(moduleSpecifier) ?? new Set<string>();\n set.add(name);\n importsByModule.set(moduleSpecifier, set);\n };\n\n for (const a of aliases) {\n const alias = probe.getTypeAliasOrThrow(a.name);\n const fullType = alias.getType();\n const constituents = fullType.isUnion() ? fullType.getUnionTypes() : [fullType];\n const nonNull = constituents.filter((c) => !c.isNull() && !c.isUndefined());\n\n // Keep a custom type only when it's a genuine *subtype* of the column's Orbit\n // base type. Otherwise the base type is the right one (e.g. a `timestamp`\n // maps to `number`, even though its Drizzle TS type is `Date`).\n const compatible =\n a.baseType === 'json'\n ? true\n : nonNull.length > 0 &&\n nonNull.every((c) => {\n if (a.baseType === 'string') return c.isString() || c.isStringLiteral() || c.isTemplateLiteral();\n if (a.baseType === 'number') return c.isNumber() || c.isNumberLiteral();\n return c.isBoolean() || c.isBooleanLiteral();\n });\n if (!compatible) continue;\n\n let text = stripNull(fullType.getText(alias, flags));\n\n // Rewrite `import(\"ABS\").Name` → `Name`, collecting an import from ABS.\n text = text.replace(/import\\(\"([^\"]+)\"\\)\\.(\\w+)/g, (_m, abs: string, name: string) => {\n const spec = relSpecifier(options.outputFilePath, abs, Boolean(options.jsExtension));\n addImport(spec, name);\n return name;\n });\n\n // Rewrite `__orbitDrizzleSchema.Name` → `Name`, importing from the schema module.\n const schemaImportSpec = relSpecifier(options.outputFilePath, options.schemaModulePath, Boolean(options.jsExtension));\n text = text.replace(new RegExp(`${NS}\\\\.(\\\\w+)`, 'g'), (_m, name: string) => {\n addImport(schemaImportSpec, name);\n return name;\n });\n\n // Drop trivial types; for json keep only meaningful object/array/named types.\n if (TRIVIAL.has(text) || text === '') continue;\n if (a.baseType === 'json' && (text === 'unknown' || text === 'any')) continue;\n\n (customTypes[a.tableName] ??= {})[a.dbName] = text;\n }\n\n project.removeSourceFile(probe);\n\n const typeImports = [...importsByModule.entries()].map(([module, names]) => ({ module, names: [...names].sort() }));\n return { customTypes, typeImports };\n}\n","// The `orbit-drizzle generate` pipeline:\n// import schema (runtime) → resolve custom types (ts-morph) → IR → emit → write.\n\nimport * as fs from 'node:fs/promises';\nimport * as path from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport { getTableColumns, getTableName, is, Table } from 'drizzle-orm';\nimport { emitSchema } from '../../../orm-core/src/index.ts';\nimport { drizzleToIR, type DrizzleAdapterConfig } from '../introspect.ts';\nimport { orbitTypeOf, type DrizzleColumnLike } from '../type-map.ts';\nimport { resolveCustomTypes, type ResolveTable } from './type-resolution.ts';\n\nexport interface GenerateOptions {\n /** Path to the Drizzle schema module (a single `.ts` file exporting tables + relations). */\n readonly schemaPath: string;\n /** Output path. Default `./orbit-schema.gen.ts`. */\n readonly outputPath?: string;\n /** tsconfig for type resolution + module resolution. */\n readonly tsConfigPath?: string;\n /** Run Prettier over the output if available. */\n readonly format?: boolean;\n /** Append `.js` to relative imports (Node16/NodeNext ESM). */\n readonly jsExtension?: boolean;\n /** Module the Orbit schema helpers are imported from. Default `@orbit/client`. */\n readonly importFrom?: string;\n /** Exported schema const name. Default `schema`. */\n readonly schemaName?: string;\n /** Table/column selection (see {@link DrizzleAdapterConfig.tables}). */\n readonly tables?: DrizzleAdapterConfig['tables'];\n readonly debug?: boolean;\n}\n\nexport interface GenerateResult {\n readonly outputPath: string;\n readonly source: string;\n}\n\n/** Generate an Orbit schema source file from a Drizzle schema. */\nexport async function generate(options: GenerateOptions): Promise<GenerateResult> {\n const schemaModulePath = path.resolve(options.schemaPath);\n const outputPath = path.resolve(options.outputPath ?? './orbit-schema.gen.ts');\n\n // 1. Load the schema module at runtime (tables + relations).\n const moduleObj = (await import(pathToFileURL(schemaModulePath).href)) as Record<string, unknown>;\n\n // 2. Collect per-table resolution metadata (export name, jsKey ↔ dbName).\n const resolveTables: ResolveTable[] = [];\n for (const [exportName, value] of Object.entries(moduleObj)) {\n if (!is(value, Table)) continue;\n const table = value as Table;\n const tableName = getTableName(table);\n if (options.tables && options.tables[tableName] === false) continue;\n const cols = getTableColumns(table) as Record<string, DrizzleColumnLike & { name: string }>;\n const columns = Object.entries(cols)\n .map(([jsKey, col]) => {\n const base = orbitTypeOf(col);\n return base ? { jsKey, dbName: col.name, baseType: base } : null;\n })\n .filter((c): c is NonNullable<typeof c> => c !== null);\n resolveTables.push({ exportName, tableName, columns });\n }\n\n // 3. Resolve custom `$type<>()` / enum types via the TypeScript compiler.\n const { customTypes, typeImports } = await resolveCustomTypes(resolveTables, {\n schemaModulePath,\n outputFilePath: outputPath,\n tsConfigFilePath: options.tsConfigPath,\n jsExtension: options.jsExtension,\n });\n\n // 4. Build the IR with the resolved custom types folded in.\n const ir = drizzleToIR(moduleObj, { customTypes, tables: options.tables, debug: options.debug });\n\n // 5. Emit the Orbit schema source.\n let source = emitSchema(ir, {\n importFrom: options.importFrom ?? '@zeronsh/orbit/client',\n schemaName: options.schemaName,\n jsExtension: options.jsExtension,\n typeImports,\n header: [\n `Generated by @orbit/drizzle from ${path.basename(schemaModulePath)} — do not edit by hand.`,\n `Re-run \\`orbit-drizzle generate\\` to update.`,\n ],\n });\n\n // 6. Optional Prettier.\n if (options.format) source = await formatWithPrettier(source, outputPath);\n\n await fs.writeFile(outputPath, source, 'utf8');\n return { outputPath, source };\n}\n\nasync function formatWithPrettier(source: string, filepath: string): Promise<string> {\n try {\n const prettier = await import('prettier');\n const config = (await prettier.resolveConfig(filepath)) ?? {};\n return prettier.format(source, { ...config, parser: 'typescript' });\n } catch {\n console.warn('⚠️ orbit-drizzle: prettier not found — skipping formatting.');\n return source;\n }\n}\n"]}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { a as QueriesPatchOp, R as Row, b as RowPatchOp, C as CrudOp, M as Mutation, c as QueryHost, d as SchemaQueries, e as Query, A as AST, V as Value, O as OrderPart } from './query-
|
|
2
|
-
export { f as Condition, g as CorrelatedSubquery, h as Correlation, D as Direction, i as Downstream, P as PROTOCOL_VERSION, Q as QueryBuilder, j as SchemaQuery, k as SimpleOperator, S as Subscribable, T as TypedQuery, U as Upstream, l as ValuePosition, m as ViewLike, n as buildSchemaQueries, o as createBuilder, p as hashAST, q as hashString } from './query-
|
|
1
|
+
import { a as QueriesPatchOp, R as Row, b as RowPatchOp, C as CrudOp, M as Mutation, c as QueryHost, d as SchemaQueries, e as Query, A as AST, V as Value, O as OrderPart } from './query-CKrvTNqq.js';
|
|
2
|
+
export { f as Condition, g as CorrelatedSubquery, h as Correlation, D as Direction, i as Downstream, P as PROTOCOL_VERSION, Q as QueryBuilder, j as SchemaQuery, k as SimpleOperator, S as Subscribable, T as TypedQuery, U as Upstream, l as ValuePosition, m as ViewLike, n as buildSchemaQueries, o as createBuilder, p as hashAST, q as hashString } from './query-CKrvTNqq.js';
|
|
3
3
|
import { S as SchemaDef, R as RowOf, P as PkOf, A as AnySchema } from './schema-BNM6bks7.js';
|
|
4
4
|
export { b as Cardinality, c as Column, d as Columns, C as Connection, a as Relationship, e as RelationshipsDef, f as RelationshipsMap, T as TableDef, V as ValueType, g as boolean, h as createSchema, j as json, n as number, o as optional, r as relationships, s as string, t as table } from './schema-BNM6bks7.js';
|
|
5
|
-
import { a as MutatorDefs, b as QueryDefs, c as QueriesAPI, d as MutateAPI } from './custom-
|
|
6
|
-
export { M as MutatorDef, Q as QueryDef, S as SchemaCRUD, T as TableCRUD, e as Transaction, f as collectOps, g as defineMutator, h as defineQuery } from './custom-
|
|
5
|
+
import { a as MutatorDefs, b as QueryDefs, c as QueriesAPI, d as MutateAPI } from './custom-BDQOYcwZ.js';
|
|
6
|
+
export { M as MutatorDef, Q as QueryDef, S as SchemaCRUD, T as TableCRUD, e as Transaction, f as collectOps, g as defineMutator, h as defineQuery } from './custom-BDQOYcwZ.js';
|
|
7
7
|
|
|
8
8
|
/** The `put` variant of a desired-query patch op (always has a `hash`). */
|
|
9
9
|
type QueryPut = Extract<QueriesPatchOp, {
|
package/dist/client.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { IDBKV, MaterializedView, MemoryKV, MemorySource, MemorySourceProvider, Orbit, PROTOCOL_VERSION, Query, QueryManager, SchemaQuery, SourceConnection, Store, StoreProvider, TypedQuery, View, boolean, buildPipeline, buildSchemaQueries, collectOps, compareValues, createBuilder, createSchema, defineMutator, defineQuery, evaluate, hashAST, hashString, json, nodeToRow, number, optional, parseTTL, relationships, string, table, tablesOf, unwrapSingular, valuesEqual } from './chunk-
|
|
1
|
+
export { IDBKV, MaterializedView, MemoryKV, MemorySource, MemorySourceProvider, Orbit, PROTOCOL_VERSION, Query, QueryManager, SchemaQuery, SourceConnection, Store, StoreProvider, TypedQuery, View, boolean, buildPipeline, buildSchemaQueries, collectOps, compareValues, createBuilder, createSchema, defineMutator, defineQuery, evaluate, hashAST, hashString, json, nodeToRow, number, optional, parseTTL, relationships, string, table, tablesOf, unwrapSingular, valuesEqual } from './chunk-EXF5B3CL.js';
|
|
2
2
|
//# sourceMappingURL=client.js.map
|
|
3
3
|
//# sourceMappingURL=client.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as Row, Q as QueryBuilder, S as Subscribable, C as CrudOp } from './query-
|
|
1
|
+
import { R as Row, Q as QueryBuilder, S as Subscribable, C as CrudOp } from './query-CKrvTNqq.js';
|
|
2
2
|
import { S as SchemaDef, R as RowOf, P as PkOf } from './schema-BNM6bks7.js';
|
|
3
3
|
|
|
4
4
|
/** Typed CRUD surface for one table inside a mutator transaction. */
|
package/dist/drizzle/cli/bin.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { generate } from '../../chunk-
|
|
2
|
+
import { generate } from '../../chunk-XMDAQ2ET.js';
|
|
3
3
|
import '../../chunk-2R6QPZNI.js';
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
4
|
+
import '../../chunk-KC6BOBOK.js';
|
|
5
|
+
import '../../chunk-EXF5B3CL.js';
|
|
6
6
|
import * as fs from 'fs';
|
|
7
7
|
import * as path from 'path';
|
|
8
8
|
import { pathToFileURL } from 'url';
|
package/dist/drizzle/cli.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { generate, resolveCustomTypes } from '../chunk-
|
|
1
|
+
export { generate, resolveCustomTypes } from '../chunk-XMDAQ2ET.js';
|
|
2
2
|
import '../chunk-2R6QPZNI.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-KC6BOBOK.js';
|
|
4
|
+
import '../chunk-EXF5B3CL.js';
|
|
5
5
|
//# sourceMappingURL=cli.js.map
|
|
6
6
|
//# sourceMappingURL=cli.js.map
|
package/dist/drizzle.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { drizzleToIR } from './chunk-2R6QPZNI.js';
|
|
2
2
|
export { drizzleToIR } from './chunk-2R6QPZNI.js';
|
|
3
|
-
import { buildOrbitSchema } from './chunk-
|
|
4
|
-
import './chunk-
|
|
3
|
+
import { buildOrbitSchema } from './chunk-KC6BOBOK.js';
|
|
4
|
+
import './chunk-EXF5B3CL.js';
|
|
5
5
|
|
|
6
6
|
// drizzle/src/index.ts
|
|
7
7
|
var drizzleAdapter = {
|
package/dist/orm-core.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { buildOrbitSchema, defineAdapter, emitSchema } from './chunk-
|
|
2
|
-
import './chunk-
|
|
1
|
+
export { buildOrbitSchema, defineAdapter, emitSchema } from './chunk-KC6BOBOK.js';
|
|
2
|
+
import './chunk-EXF5B3CL.js';
|
|
3
3
|
//# sourceMappingURL=orm-core.js.map
|
|
4
4
|
//# sourceMappingURL=orm-core.js.map
|
package/dist/react.d.ts
CHANGED
package/dist/server/pg.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import pg from 'pg';
|
|
2
2
|
import { DBConnection } from '../server.js';
|
|
3
|
-
import '../query-
|
|
3
|
+
import '../query-CKrvTNqq.js';
|
|
4
4
|
import '../schema-BNM6bks7.js';
|
|
5
|
-
import '../custom-
|
|
5
|
+
import '../custom-BDQOYcwZ.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Wrap a node-postgres `Pool`/`Client` (or a connection string / config) as a
|
package/dist/server.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as CrudOp } from './query-
|
|
1
|
+
import { C as CrudOp } from './query-CKrvTNqq.js';
|
|
2
2
|
import { S as SchemaDef } from './schema-BNM6bks7.js';
|
|
3
|
-
import { M as MutatorDef, Q as QueryDef } from './custom-
|
|
3
|
+
import { M as MutatorDef, Q as QueryDef } from './custom-BDQOYcwZ.js';
|
|
4
4
|
|
|
5
5
|
/** A transaction handle: run a parameterized SQL statement. */
|
|
6
6
|
interface DBTransaction {
|
package/dist/server.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@zeronsh/orbit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Orbit — a Rust rebuild of Zero. Type-safe sync client, React bindings, server helpers, and Drizzle schema generation, all under one tree-shakeable package.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|