@happyvertical/smrt-core 0.57.46 → 0.57.47

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.
Files changed (189) hide show
  1. package/AGENTS.md +11 -3
  2. package/agents/browser-entry.md +16 -0
  3. package/agents/build-knowledge.md +58 -14
  4. package/agents/change-feed.md +20 -0
  5. package/agents/generators.md +69 -3
  6. package/agents/schema-paths.md +82 -0
  7. package/dist/_virtual/_rolldown/runtime.js +22 -1
  8. package/dist/browser.d.ts +2 -2
  9. package/dist/browser.d.ts.map +1 -1
  10. package/dist/browser.js +2 -2
  11. package/dist/cascade.d.ts +46 -0
  12. package/dist/cascade.d.ts.map +1 -1
  13. package/dist/cascade.js +96 -7
  14. package/dist/cascade.js.map +1 -1
  15. package/dist/change-feed.d.ts.map +1 -1
  16. package/dist/change-feed.js +7 -4
  17. package/dist/change-feed.js.map +1 -1
  18. package/dist/class.d.ts.map +1 -1
  19. package/dist/class.js +3 -3
  20. package/dist/class.js.map +1 -1
  21. package/dist/consumer-plugin/index.d.ts +13 -0
  22. package/dist/consumer-plugin/index.d.ts.map +1 -1
  23. package/dist/consumer-plugin/index.js +69 -13
  24. package/dist/consumer-plugin/index.js.map +1 -1
  25. package/dist/consumer-plugin.js +2 -2
  26. package/dist/database.d.ts.map +1 -1
  27. package/dist/database.js +3 -3
  28. package/dist/database.js.map +1 -1
  29. package/dist/dispatch/bus.d.ts.map +1 -1
  30. package/dist/dispatch/bus.js +1 -4
  31. package/dist/dispatch/bus.js.map +1 -1
  32. package/dist/dispatch/index.d.ts +1 -1
  33. package/dist/dispatch/index.d.ts.map +1 -1
  34. package/dist/dispatch/types.d.ts +22 -3
  35. package/dist/dispatch/types.d.ts.map +1 -1
  36. package/dist/generators/changes-route.d.ts.map +1 -1
  37. package/dist/generators/changes-route.js +2 -2
  38. package/dist/generators/changes-route.js.map +1 -1
  39. package/dist/generators/custom-action.d.ts +11 -0
  40. package/dist/generators/custom-action.d.ts.map +1 -1
  41. package/dist/generators/custom-action.js +23 -4
  42. package/dist/generators/custom-action.js.map +1 -1
  43. package/dist/index.d.ts +2 -2
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +3 -2
  46. package/dist/lazy-config.d.ts +120 -3
  47. package/dist/lazy-config.d.ts.map +1 -1
  48. package/dist/lazy-config.js +81 -10
  49. package/dist/lazy-config.js.map +1 -1
  50. package/dist/manifest/generator.d.ts +8 -2
  51. package/dist/manifest/generator.d.ts.map +1 -1
  52. package/dist/manifest/generator.js +6 -5
  53. package/dist/manifest/generator.js.map +1 -1
  54. package/dist/manifest/index.d.ts +1 -0
  55. package/dist/manifest/index.d.ts.map +1 -1
  56. package/dist/manifest/index.js +2 -1
  57. package/dist/manifest/index.js.map +1 -1
  58. package/dist/manifest/local-manifest-reader.d.ts +13 -2
  59. package/dist/manifest/local-manifest-reader.d.ts.map +1 -1
  60. package/dist/manifest/local-manifest-reader.js +38 -6
  61. package/dist/manifest/local-manifest-reader.js.map +1 -1
  62. package/dist/manifest/manifest-loader.d.ts +9 -8
  63. package/dist/manifest/manifest-loader.d.ts.map +1 -1
  64. package/dist/manifest/manifest-loader.js +67 -27
  65. package/dist/manifest/manifest-loader.js.map +1 -1
  66. package/dist/manifest/object-declarations.d.ts +116 -0
  67. package/dist/manifest/object-declarations.d.ts.map +1 -0
  68. package/dist/manifest/object-declarations.js +161 -0
  69. package/dist/manifest/object-declarations.js.map +1 -0
  70. package/dist/manifest/static-manifest.d.ts.map +1 -1
  71. package/dist/manifest/static-manifest.js +5 -3
  72. package/dist/manifest/static-manifest.js.map +1 -1
  73. package/dist/manifest/store.d.ts.map +1 -1
  74. package/dist/manifest/store.js +18 -2
  75. package/dist/manifest/store.js.map +1 -1
  76. package/dist/manifest/test-artifacts.d.ts +57 -0
  77. package/dist/manifest/test-artifacts.d.ts.map +1 -0
  78. package/dist/manifest/test-artifacts.js +111 -0
  79. package/dist/manifest/test-artifacts.js.map +1 -0
  80. package/dist/manifest.js +2 -1
  81. package/dist/manifest.json +5 -3
  82. package/dist/migrations/differ.d.ts.map +1 -1
  83. package/dist/migrations/differ.js +11 -3
  84. package/dist/migrations/differ.js.map +1 -1
  85. package/dist/migrations/index.d.ts +2 -0
  86. package/dist/migrations/index.d.ts.map +1 -1
  87. package/dist/migrations/index.js +3 -1
  88. package/dist/migrations/qualified-name-aliases.d.ts.map +1 -1
  89. package/dist/migrations/qualified-name-aliases.js +1 -1
  90. package/dist/migrations/qualified-name-aliases.js.map +1 -1
  91. package/dist/migrations.js +3 -1
  92. package/dist/object.d.ts.map +1 -1
  93. package/dist/object.js +2 -2
  94. package/dist/object.js.map +1 -1
  95. package/dist/postgres-permissions.d.ts.map +1 -1
  96. package/dist/postgres-permissions.js +4 -3
  97. package/dist/postgres-permissions.js.map +1 -1
  98. package/dist/postgres-timeouts.d.ts +30 -3
  99. package/dist/postgres-timeouts.d.ts.map +1 -1
  100. package/dist/postgres-timeouts.js +39 -2
  101. package/dist/postgres-timeouts.js.map +1 -1
  102. package/dist/prebuild/index.d.ts.map +1 -1
  103. package/dist/prebuild/index.js +14 -11
  104. package/dist/prebuild/index.js.map +1 -1
  105. package/dist/registry/class-registration.d.ts.map +1 -1
  106. package/dist/registry/class-registration.js +24 -2
  107. package/dist/registry/class-registration.js.map +1 -1
  108. package/dist/registry/collection-exposure.d.ts +27 -0
  109. package/dist/registry/collection-exposure.d.ts.map +1 -1
  110. package/dist/registry/collection-exposure.js +74 -1
  111. package/dist/registry/collection-exposure.js.map +1 -1
  112. package/dist/registry/collection-resolution.d.ts.map +1 -1
  113. package/dist/registry/collection-resolution.js +1 -0
  114. package/dist/registry/collection-resolution.js.map +1 -1
  115. package/dist/registry/framework-base-classes.d.ts.map +1 -1
  116. package/dist/registry/framework-base-classes.js +5 -0
  117. package/dist/registry/framework-base-classes.js.map +1 -1
  118. package/dist/registry/schema-builder.d.ts +8 -1
  119. package/dist/registry/schema-builder.d.ts.map +1 -1
  120. package/dist/registry/schema-builder.js +17 -4
  121. package/dist/registry/schema-builder.js.map +1 -1
  122. package/dist/registry/types.d.ts +12 -0
  123. package/dist/registry/types.d.ts.map +1 -1
  124. package/dist/registry.d.ts +2 -1
  125. package/dist/registry.d.ts.map +1 -1
  126. package/dist/registry.js +30 -10
  127. package/dist/registry.js.map +1 -1
  128. package/dist/scanner/manifest-generator.d.ts.map +1 -1
  129. package/dist/scanner/manifest-generator.js +10 -8
  130. package/dist/scanner/manifest-generator.js.map +1 -1
  131. package/dist/scanner/types.d.ts +29 -0
  132. package/dist/scanner/types.d.ts.map +1 -1
  133. package/dist/scanner/types.js.map +1 -1
  134. package/dist/schema/generator.d.ts +32 -0
  135. package/dist/schema/generator.d.ts.map +1 -1
  136. package/dist/schema/generator.js +59 -0
  137. package/dist/schema/generator.js.map +1 -1
  138. package/dist/schema/live-parity.d.ts.map +1 -1
  139. package/dist/schema/live-parity.js +4 -2
  140. package/dist/schema/live-parity.js.map +1 -1
  141. package/dist/scripts/browser-unbundled-dev.mjs +90 -0
  142. package/dist/scripts/generate-test-manifest.js +9 -49
  143. package/dist/smrt-knowledge.json +16 -16
  144. package/dist/system/compatibility.d.ts.map +1 -1
  145. package/dist/system/compatibility.js +12 -4
  146. package/dist/system/compatibility.js.map +1 -1
  147. package/dist/system/schema.d.ts +70 -8
  148. package/dist/system/schema.d.ts.map +1 -1
  149. package/dist/system/schema.js +231 -24
  150. package/dist/system/schema.js.map +1 -1
  151. package/dist/testing/database.d.ts.map +1 -1
  152. package/dist/testing/database.js +14 -2
  153. package/dist/testing/database.js.map +1 -1
  154. package/dist/tools/tool-generator.d.ts.map +1 -1
  155. package/dist/tools/tool-generator.js +2 -2
  156. package/dist/tools/tool-generator.js.map +1 -1
  157. package/dist/utils/import-workspace-module.d.ts.map +1 -1
  158. package/dist/utils/import-workspace-module.js +23 -0
  159. package/dist/utils/import-workspace-module.js.map +1 -1
  160. package/dist/utils/naming.js +5 -3
  161. package/dist/utils/naming.js.map +1 -1
  162. package/dist/vendor/pluralize/pluralize.js +421 -0
  163. package/dist/vendor/pluralize/pluralize.js.map +1 -0
  164. package/dist/vite-plugin/api-client-entries.d.ts +5 -1
  165. package/dist/vite-plugin/api-client-entries.d.ts.map +1 -1
  166. package/dist/vite-plugin/api-client-entries.js +11 -6
  167. package/dist/vite-plugin/api-client-entries.js.map +1 -1
  168. package/dist/vite-plugin/consumer-import.d.ts +28 -0
  169. package/dist/vite-plugin/consumer-import.d.ts.map +1 -0
  170. package/dist/vite-plugin/consumer-import.js +42 -0
  171. package/dist/vite-plugin/consumer-import.js.map +1 -0
  172. package/dist/vite-plugin/dev-plane-route.d.ts +6 -1
  173. package/dist/vite-plugin/dev-plane-route.d.ts.map +1 -1
  174. package/dist/vite-plugin/dev-plane-route.js +8 -9
  175. package/dist/vite-plugin/dev-plane-route.js.map +1 -1
  176. package/dist/vite-plugin/index.d.ts.map +1 -1
  177. package/dist/vite-plugin/index.js +12 -9
  178. package/dist/vite-plugin/index.js.map +1 -1
  179. package/dist/vite-plugin/resources-route.d.ts.map +1 -1
  180. package/dist/vite-plugin/resources-route.js +3 -8
  181. package/dist/vite-plugin/resources-route.js.map +1 -1
  182. package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -1
  183. package/dist/vite-plugin/sveltekit-generator.js +7 -11
  184. package/dist/vite-plugin/sveltekit-generator.js.map +1 -1
  185. package/dist/vite-plugin/sync-apply-route.d.ts +16 -0
  186. package/dist/vite-plugin/sync-apply-route.d.ts.map +1 -1
  187. package/dist/vite-plugin/sync-apply-route.js +48 -6
  188. package/dist/vite-plugin/sync-apply-route.js.map +1 -1
  189. package/package.json +12 -12
@@ -1 +1 @@
1
- {"version":3,"file":"schema-builder.js","names":[],"sources":["../../src/registry/schema-builder.ts"],"sourcesContent":["/**\n * Schema building logic for the SMRT ObjectRegistry.\n *\n * Extracted from registry.ts as part of issue #1006.\n */\n\nimport { ObjectRegistry } from '../registry';\nimport type { FieldDefinition } from '../scanner/types.js';\nimport { normalizeBackfill } from '../schema/backfill.js';\nimport {\n conflictIndexName,\n nullableConflictIdentity,\n} from '../schema/conflict-target.js';\nimport { getDDLStrategy } from '../schema/ddl/index.js';\nimport type { DatabaseEngine } from '../schema/ddl/types.js';\nimport {\n renderForeignKeyConstraint,\n schemaForeignKeys,\n} from '../schema/foreign-key-ddl.js';\nimport {\n resolveForeignKeyDeleteAction,\n resolveForeignKeyUpdateAction,\n} from '../schema/foreign-key-policy.js';\nimport { shortenIdentifier } from '../schema/index-utils.js';\nimport {\n formatDefaultValue as formatDefaultValueShared,\n quoteIdentifier,\n} from '../schema/sql-identifiers.js';\nimport type {\n ColumnDefinition,\n IndexDefinition,\n SchemaDefinition,\n SQLDataType,\n} from '../schema/types.js';\nimport { classnameToTablename, toSnakeCase } from '../utils';\nimport { sha256Hex } from '../utils/sha256.js';\nimport {\n type CollectionRegistrationLookup,\n isCollectionRegistration,\n} from './collection-resolution';\nimport { isFrameworkBaseClass } from './framework-base-classes';\nimport { readFieldAttribute } from './manifest-field-merge';\nimport { findClass } from './name-resolver';\nimport { getClasses, getCollectionTableNames } from './shared-state';\nimport {\n assertRuntimeTableBindings,\n assertTableFamilies,\n mappedSchema,\n} from './table-mappings.js';\nimport type { RegisteredClass } from './types';\n\ntype ForeignKeyAction = NonNullable<\n NonNullable<ColumnDefinition['foreignKey']>['onDelete']\n>;\n\nconst collectionRegistrationLookup: CollectionRegistrationLookup = {\n findClass,\n findClassInPackage: (packageName, className) =>\n ObjectRegistry.getClassInPackage(packageName, className),\n getInheritanceChain: (className) =>\n ObjectRegistry.getInheritanceChain(className),\n};\n\nfunction applyDecoratorSqlTypeOverrides(\n className: string,\n columns: Record<string, ColumnDefinition>,\n): Record<string, ColumnDefinition> {\n const decorators = ObjectRegistry.getFieldDecorators(className);\n if (!decorators.size) {\n return columns;\n }\n\n for (const [fieldName, options] of decorators) {\n if (!options?.sqlType) {\n continue;\n }\n\n const columnName = toSnakeCase(fieldName);\n const existing = columns[columnName];\n if (!existing) {\n continue;\n }\n\n const referenceKind = getReferenceKind(options as FieldDefinition);\n columns[columnName] = {\n ...existing,\n type: String(options.sqlType).toUpperCase() as SQLDataType,\n ...(referenceKind ? { referenceKind } : {}),\n };\n }\n\n return columns;\n}\n\nfunction mergeRuntimeFieldColumns(\n className: string,\n schemaColumns: Record<string, ColumnDefinition> | undefined,\n fields: Map<string, FieldDefinition>,\n options?: FieldsToColumnsOptions,\n): Record<string, ColumnDefinition> {\n const columnsToUse = { ...(schemaColumns || {}) };\n\n if (fields.size > 0) {\n const fieldColumns = fieldsToColumns(fields, options);\n for (const [columnName, columnDef] of Object.entries(fieldColumns)) {\n if (!columnsToUse[columnName]) {\n columnsToUse[columnName] = columnDef;\n }\n }\n\n for (const [fieldName, fieldDef] of fields) {\n const columnName = toSnakeCase(fieldName);\n const existing = columnsToUse[columnName];\n if (!existing) {\n continue;\n }\n\n const sqlType =\n fieldDef._meta?.sqlType ||\n (fieldDef as unknown as { sqlType?: string }).sqlType;\n const referenceKind = getReferenceKind(fieldDef);\n // #3008: the per-row backfill lives in field metadata only; overlay it\n // onto manifest-sourced columns too so db:migrate always sees it.\n const backfill = normalizeBackfill(fieldDef._meta?.backfill);\n columnsToUse[columnName] = {\n ...existing,\n ...(sqlType\n ? { type: String(sqlType).toUpperCase() as SQLDataType }\n : {}),\n ...(referenceKind ? { referenceKind } : {}),\n ...(backfill !== undefined ? { backfill } : {}),\n };\n }\n }\n\n applyDecoratorSqlTypeOverrides(className, columnsToUse);\n return columnsToUse;\n}\n\nfunction getReferenceKind(\n fieldDef: FieldDefinition,\n): ColumnDefinition['referenceKind'] | undefined {\n if (\n (\n fieldDef as unknown as {\n __tenancy?: { isTenantIdField?: boolean };\n }\n ).__tenancy?.isTenantIdField ||\n fieldDef._meta?.__tenancy?.isTenantIdField\n ) {\n return 'tenantId';\n }\n\n if (fieldDef.type === 'foreignKey') {\n return 'foreignKey';\n }\n\n if (fieldDef.type === 'crossPackageRef') {\n return 'crossPackageRef';\n }\n\n return undefined;\n}\n\n// A uuid column never defaults to '' (same rule as the manifest generator,\n// 9832f70fa): PostgreSQL stores `(''::text)::uuid` unevaluated and every\n// INSERT that omits the column fails with 22P02. This covers a plain\n// `@field({ sqlType: 'UUID' }) tenantId = ''` (TenantKey) as well as\n// tenant references.\nfunction shouldEmitDefault(\n _fieldDef: FieldDefinition,\n sqlType: SQLDataType,\n defaultValue: unknown,\n) {\n return !(sqlType === 'UUID' && defaultValue === '');\n}\n\n/**\n * Fallback base columns for a table whose contributing class carries no\n * manifest columns.\n *\n * These mirror what the manifest schema generators emit for the same table\n * (`generateSchemaFromManifest` / `generateSTISchemaFromManifest`), so a table\n * assembled from runtime field metadata alone has the same NOT NULL and\n * DEFAULT shape as one assembled from a manifest. Divergence here is what made\n * the merged table shape depend on which class registered first (#2372).\n */\nfunction createBaseColumns(\n registered: {\n config?: { idType?: 'uuid' | 'text' };\n },\n isSTI: boolean,\n): Record<string, ColumnDefinition> {\n const baseColumns: Record<string, ColumnDefinition> = {\n id: {\n type: registered.config?.idType === 'text' ? 'TEXT' : 'UUID',\n primaryKey: true,\n notNull: true,\n referenceKind: 'id',\n },\n slug: { type: 'TEXT', notNull: true },\n context: { type: 'TEXT', notNull: true, defaultValue: '' },\n created_at: {\n type: 'TIMESTAMP',\n notNull: true,\n defaultValue: 'current_timestamp',\n },\n updated_at: {\n type: 'TIMESTAMP',\n notNull: true,\n defaultValue: 'current_timestamp',\n },\n };\n\n // STI tables also carry the discriminator and the meta payload column\n // (issue #690: db:diff needs them to detect schema changes).\n if (isSTI) {\n baseColumns._meta_type = { type: 'TEXT', notNull: true };\n baseColumns._meta_data = { type: 'JSON', notNull: false };\n }\n\n return baseColumns;\n}\n\n/**\n * Get cached schema definition for a registered class\n *\n * @param name - Name of the registered class\n * @returns Schema definition or undefined if not found\n * @example\n * ```typescript\n * const schema = getSchema('Product');\n * console.log(schema.tableName); // 'products'\n * console.log(schema.ddl); // 'CREATE TABLE...'\n * ```\n */\nexport function getSchema(name: string): SchemaDefinition | undefined {\n // Issue #951: Use findClass for multi-strategy lookup\n const registered = findClass(name);\n return registered ? mappedSchema(registered) : undefined;\n}\n\n/**\n * Get SQL DDL statement for a registered class\n *\n * @param name - Name of the registered class\n * Cached manifest DDL contains abstract types and is not safe to execute on\n * PostgreSQL. New executable paths must pass a target engine. Omitting it is\n * retained for backward compatibility with consumers that only inspect the\n * legacy engine-neutral manifest string.\n *\n * @param engine - Database engine that will execute the DDL\n * @returns Engine-specific SQL DDL, or the legacy cached DDL when omitted\n * @example\n * ```typescript\n * const ddl = ObjectRegistry.getSchemaDDL('Product', 'postgres');\n * await db.query(ddl);\n * ```\n */\nexport function getSchemaDDL(\n name: string,\n engine?: DatabaseEngine,\n): string | undefined {\n const schema = getSchema(name);\n if (!schema) return undefined;\n if (engine && Object.keys(schema.columns).length === 0) {\n throw new Error(\n `Cannot materialize schema '${name}' for ${engine}: the manifest has no structured columns`,\n );\n }\n return engine\n ? getDDLStrategy(engine).generateCreateTable(schema)\n : schema.ddl;\n}\n\n/**\n * Get table name for a registered class\n *\n * @param name - Name of the registered class\n * @returns Table name or undefined if not found\n * @example\n * ```typescript\n * const tableName = getTableName('Product');\n * console.log(tableName); // 'products'\n * ```\n */\nexport function getTableName(name: string): string | undefined {\n // Check if this is a collection class - collections have their own tableName mapping\n const collectionTableName = getCollectionTableNames().get(name);\n if (collectionTableName) {\n return collectionTableName;\n }\n\n // For STI classes, return the STI base class's table name.\n // R5-canon: `getSTIBase` returns the qualified name; resolve `name`\n // (which may be simple) to its registration's qualified form for the\n // comparison.\n const stiBase = ObjectRegistry.getSTIBase(name);\n const registered = ObjectRegistry.getClass(name);\n const qualifiedName = registered?.qualifiedName ?? registered?.name ?? name;\n if (stiBase && stiBase !== qualifiedName) {\n return getSchema(stiBase)?.tableName;\n }\n return getSchema(name)?.tableName;\n}\n\nfunction withConflictIndex(\n tableName: string,\n columns: Record<string, ColumnDefinition>,\n indexes: IndexDefinition[],\n conflictColumns: string[],\n conflictPredicate?: string,\n): IndexDefinition[] {\n if (\n conflictColumns.length === 0 ||\n !conflictColumns.every((column) => columns[column])\n ) {\n return indexes;\n }\n\n // `ON CONFLICT (id)` binds to the primary-key constraint itself; a second\n // unique index over the primary key column set adds nothing (#2359, A5).\n // Kept in step with SchemaGenerator.conflictColumnsArePrimaryKey().\n const primaryKeyColumns = Object.entries(columns)\n .filter(([, column]) => column.primaryKey === true)\n .map(([name]) => name);\n if (\n primaryKeyColumns.length > 0 &&\n primaryKeyColumns.length === conflictColumns.length &&\n primaryKeyColumns.every((column) => conflictColumns.includes(column))\n ) {\n return indexes;\n }\n\n // Same stable naming as SchemaGenerator (`schema/conflict-target.ts`), so\n // a manifest built before the runtime learned the tenant-aware default\n // (#2360) has its stale `<table>_slug_context_idx` REPLACED in place here\n // for a DECLARED tenant column. Only the declared column names the index:\n // an inferred ownership column (an undeclared `tenant_id`) gets the\n // custom-key name, so its tenant-led unique is built BESIDE the legacy\n // global one (expand, then contract) and old code's\n // `ON CONFLICT (slug, context)` keeps binding during a rolling deploy.\n const tenantColumn = Object.entries(columns).find(\n ([, column]) => column.referenceKind === 'tenantId',\n )?.[0];\n // The composed name can exceed PostgreSQL's 63-byte limit on a long table.\n // Shortening here (rather than inside conflictIndexName) keeps the generator\n // paths, which run enforceIdentifierLimits() over their whole index list,\n // and this migrate leg agreeing on the final name (#2374).\n const name = shortenIdentifier(\n conflictIndexName(tableName, conflictColumns, tenantColumn),\n );\n const canonical = indexes.find((index) => index.name === name);\n if (\n !canonical &&\n indexes.some(\n (index) =>\n index.unique === true &&\n !index.where &&\n !index.jsonPath &&\n index.columns.length === conflictColumns.length &&\n index.columns.every((column) => conflictColumns.includes(column)),\n )\n ) {\n // A user-owned equivalent unique index is not permission to change its NULL semantics.\n return indexes;\n }\n const conflictIndex: IndexDefinition = {\n name,\n columns: conflictColumns,\n unique: true,\n // Consumer subclasses may be absent from the provider's root manifest.\n ...(conflictPredicate\n ? {\n where: conflictPredicate,\n description: 'STI subclass conflict target',\n }\n : canonical?.description === 'STI subclass conflict target'\n ? { where: canonical.where, description: canonical.description }\n : {}),\n ...(nullableConflictIdentity(conflictColumns, columns)\n ? { nullsNotDistinct: true }\n : {}),\n };\n if (indexes.some((index) => index.name === name)) {\n return indexes.map((index) =>\n index.name === name ? conflictIndex : index,\n );\n }\n return [...indexes, conflictIndex];\n}\n\n/**\n * A registered class that contributes columns to one physical table.\n *\n * For a single-table-inheritance hierarchy every class in the hierarchy is a\n * contributor to the same table.\n */\ninterface TableContributor {\n registered: RegisteredClass;\n simpleName: string;\n qualifiedName: string;\n isSTI: boolean;\n /** True when this class is the STI base that owns the table. */\n isSTIBase: boolean;\n /** Inheritance depth; ancestors sort before descendants. */\n depth: number;\n /** Conflict-column lookup key (the STI base for STI members). */\n conflictKey: string;\n}\n\n/**\n * A merged physical table assembled from every class that contributes to it.\n */\ninterface MergedTableSchema {\n tableName: string;\n columns: Record<string, ColumnDefinition>;\n indexes: IndexDefinition[];\n ddl: string;\n isSTI: boolean;\n conflictColumns: string[];\n}\n\nfunction applyContributorForeignKeys(\n tableSchema: MergedTableSchema,\n contributor: TableContributor,\n): void {\n const conflictColumns = new Set(tableSchema.conflictColumns);\n for (const [fieldName, field] of contributor.registered.fields) {\n if (field.type !== 'foreignKey' || !field.related) continue;\n const columnName = toSnakeCase(fieldName);\n const column = tableSchema.columns[columnName];\n if (!column) continue;\n if (\n field._meta?.__tenancy?.isTenantIdField === true ||\n (\n field as FieldDefinition & {\n __tenancy?: { isTenantIdField?: boolean };\n }\n ).__tenancy?.isTenantIdField === true\n ) {\n column.foreignKey = undefined;\n continue;\n }\n const [legacyTargetName, declaredTargetColumn] = field.related.split('.');\n const resolvedTarget = ObjectRegistry.resolveRelationshipTarget(\n contributor.qualifiedName,\n fieldName,\n );\n if (resolvedTarget === null) {\n throw new Error(\n `Cannot resolve foreign key ${contributor.qualifiedName}.${fieldName}: target constructor is unregistered or the target name is ambiguous`,\n );\n }\n const targetName = resolvedTarget ?? legacyTargetName;\n const targetBase = ObjectRegistry.getSTIBase(targetName) || targetName;\n const registeredTarget = ObjectRegistry.getClass(targetBase);\n const targetColumn =\n declaredTargetColumn ||\n Array.from(ObjectRegistry.getFields(targetBase).entries()).find(\n ([, targetField]) => targetField._meta?.primaryKey === true,\n )?.[0] ||\n 'id';\n if (registeredTarget && !field._meta?.sqlType) {\n const targetColumnName = toSnakeCase(targetColumn);\n const targetColumnType =\n registeredTarget.schema?.columns?.[targetColumnName]?.type ||\n (targetColumnName === 'id'\n ? registeredTarget.config.idType === 'text'\n ? 'TEXT'\n : 'UUID'\n : undefined);\n if (targetColumnType) {\n column.type = targetColumnType;\n }\n }\n if (field._meta?.constraint === false) {\n column.foreignKey = undefined;\n continue;\n }\n // A manifest may carry explicit actions that predate or differ from the\n // runtime decorator defaults. Merging runtime fields must not erase them.\n // The fallback produced from runtime fields, however, must be replaced so\n // conflict columns receive the same default CASCADE as app-side cleanup.\n const manifestForeignKey =\n contributor.registered.schema?.columns?.[columnName]?.foreignKey;\n if (manifestForeignKey) {\n column.foreignKey = manifestForeignKey;\n continue;\n }\n // A decorator-only runtime field has no authoritative physical target\n // until that target is registered. Scanner-produced manifests clear this\n // shape too; only an explicit manifest FK above may survive unloaded\n // runtime classes (the manifest-authority contract from #1120).\n if (!registeredTarget) {\n column.foreignKey = undefined;\n continue;\n }\n const targetTable =\n ObjectRegistry.getTableName(targetBase) ||\n classnameToTablename(targetBase);\n const { action } = resolveForeignKeyDeleteAction({\n declared: field._meta?.onDelete,\n isConflictColumn: conflictColumns.has(columnName),\n isTenantIdField: false,\n columnName,\n });\n column.foreignKey = {\n table: targetTable,\n column: toSnakeCase(targetColumn),\n onDelete: action,\n onUpdate: resolveForeignKeyUpdateAction(field._meta?.onUpdate),\n ...(typeof field._meta?.constraint === 'object'\n ? { engines: [...field._meta.constraint.engines] }\n : {}),\n };\n }\n}\n\n/**\n * Resolve the physical table a registered class writes to.\n *\n * STI subclasses are folded onto their base's table. Returns `undefined` when\n * the class has no table (for example an unresolvable manifest stub).\n *\n * R5-canon: STI lookups use the qualified key so a colliding simple name in\n * another package cannot yield the wrong table strategy or STI base and move\n * this class's columns under that other package's table.\n */\nfunction resolveContributorTable(\n registered: RegisteredClass,\n fallbackName: string,\n): { tableName: string; contributor: TableContributor } | undefined {\n const boundSchema = mappedSchema(registered);\n if (boundSchema !== registered.schema) {\n registered = { ...registered, schema: boundSchema };\n }\n const simpleName = registered.name || fallbackName;\n const qualifiedName = registered.qualifiedName ?? simpleName;\n\n // STI subclasses loaded from external manifests can arrive with a null\n // tableName; registerFromManifest() then derives one from the class name.\n // Adopt the STI base's tableName instead so the subclass lands on the\n // shared table (issue #703).\n if (!registered.schema?.tableName && registered.extends) {\n if (ObjectRegistry.getTableStrategy(qualifiedName) === 'sti') {\n const stiBaseName = ObjectRegistry.getSTIBase(qualifiedName);\n if (stiBaseName && stiBaseName !== qualifiedName) {\n const baseRegistration = findClass(stiBaseName);\n const stiBaseClass = baseRegistration\n ? { ...baseRegistration, schema: mappedSchema(baseRegistration) }\n : undefined;\n if (stiBaseClass?.schema?.tableName) {\n if (!registered.schema) {\n registered.schema = {\n tableName: '',\n ddl: '',\n columns: {},\n indexes: [],\n triggers: [],\n foreignKeys: [],\n dependencies: [],\n version: '',\n };\n }\n registered.schema.tableName = stiBaseClass.schema.tableName;\n }\n }\n }\n }\n\n if (!registered.schema?.tableName) {\n return undefined;\n }\n\n let tableName = registered.schema.tableName;\n const tableStrategy = ObjectRegistry.getTableStrategy(qualifiedName);\n const isSTI = tableStrategy === 'sti';\n let isSTIBase = isSTI;\n let conflictKey = qualifiedName;\n\n if (isSTI) {\n const stiBaseName = ObjectRegistry.getSTIBase(qualifiedName);\n if (stiBaseName) {\n conflictKey = stiBaseName;\n if (stiBaseName !== qualifiedName) {\n isSTIBase = false;\n // STI subclasses serialize to the base class's table even when they\n // carry a tableName of their own (issue #693).\n const baseRegistration = findClass(stiBaseName);\n const stiBaseClass = baseRegistration\n ? { ...baseRegistration, schema: mappedSchema(baseRegistration) }\n : undefined;\n if (stiBaseClass?.schema?.tableName) {\n tableName = stiBaseClass.schema.tableName;\n }\n }\n }\n }\n\n return {\n tableName,\n contributor: {\n registered,\n simpleName,\n qualifiedName,\n isSTI,\n isSTIBase,\n depth: ObjectRegistry.getInheritanceChain(qualifiedName).length,\n conflictKey,\n },\n };\n}\n\n/**\n * Reject a table claimed by two unrelated classes (#3098).\n *\n * Classes share a physical table only as one single-table-inheritance family,\n * identified by its STI base. Anything else — two packages that both declare\n * `Account` and both derive `accounts`, or an explicit `tableName` reused by an\n * unrelated class — would be merged into one union table whose rows each\n * package's unscoped queries then return as its own. An unqualified (source)\n * registration and a package-qualified one of the same class are the same\n * family, not a conflict.\n */\nfunction assertSingleTableFamily(\n tableName: string,\n contributors: TableContributor[],\n): void {\n assertTableFamilies(\n tableName,\n contributors.map((contributor) => contributor.conflictKey),\n );\n}\n\n/**\n * Order the classes that share one table deterministically.\n *\n * The first contributor seeds the table: it supplies the base columns, the\n * `idType`, the conflict columns and the cached DDL, and its columns win every\n * merge conflict. Registration order must not decide that, or the same\n * hierarchy yields a different table shape depending on which class a manifest\n * happens to list first — child-first dropped NOT NULL and DEFAULT from the\n * base columns (#2372).\n *\n * Order: the STI base first, then ancestors before descendants, then by\n * qualified name so the result is a total order.\n */\nfunction sortTableContributors(contributors: TableContributor[]) {\n return [...contributors].sort((a, b) => {\n if (a.isSTIBase !== b.isSTIBase) {\n return a.isSTIBase ? -1 : 1;\n }\n if (a.depth !== b.depth) {\n return a.depth - b.depth;\n }\n return a.qualifiedName.localeCompare(b.qualifiedName);\n });\n}\n\n/**\n * Assemble every physical table from the classes that contribute to it.\n *\n * Shared by {@link getAllSchemas} and {@link getAllSchemasAsDefinitions} so\n * both produce the same merged shape. The result depends only on what is\n * registered, never on the order it was registered in.\n */\nfunction buildMergedTableSchemas(): Record<string, MergedTableSchema> {\n assertRuntimeTableBindings();\n // Pass 1: group contributing classes by physical table.\n const contributorsByTable = new Map<string, TableContributor[]>();\n\n for (const [className, registered] of getClasses()) {\n // Collection classes have no table of their own; their schemas carry\n // collection properties (loaded, options, ...) rather than columns.\n if (\n isCollectionRegistration(\n className,\n registered,\n collectionRegistrationLookup,\n )\n ) {\n continue;\n }\n\n // Framework abstract base classes (SmrtObject, SmrtClass, ...) are\n // scaffolding, not resources — they produce no table (#2642).\n if (isFrameworkBaseClass(registered.name, registered.packageName)) {\n continue;\n }\n\n const resolved = resolveContributorTable(registered, className);\n if (!resolved) {\n continue;\n }\n\n const existing = contributorsByTable.get(resolved.tableName);\n if (existing) {\n existing.push(resolved.contributor);\n } else {\n contributorsByTable.set(resolved.tableName, [resolved.contributor]);\n }\n }\n\n // Pass 2: merge each table's contributors in deterministic order.\n const tableSchemas: Record<string, MergedTableSchema> = {};\n\n for (const [tableName, contributors] of contributorsByTable) {\n assertSingleTableFamily(tableName, contributors);\n const orderedContributors = sortTableContributors(contributors);\n for (const contributor of orderedContributors) {\n const { registered, simpleName, isSTI } = contributor;\n const conflictColumns = ObjectRegistry.getConflictColumns(\n contributor.conflictKey,\n );\n\n // The manifest schema stays authoritative for the columns it defines.\n // Runtime field metadata backfills columns the manifest never had (for\n // example tenantScoped injections) and applies explicit sqlType\n // overrides, without erasing richer manifest metadata.\n const columnsToUse = mergeRuntimeFieldColumns(\n simpleName,\n registered.schema?.columns,\n registered.fields,\n { stiUnionColumns: isSTI, conflictColumns },\n );\n\n let tableSchema = tableSchemas[tableName];\n if (!tableSchema) {\n tableSchema = {\n tableName,\n columns: {\n ...createBaseColumns(registered, isSTI),\n ...columnsToUse,\n },\n indexes: [],\n ddl: registered.schema?.ddl || '',\n isSTI,\n conflictColumns,\n };\n tableSchemas[tableName] = tableSchema;\n } else {\n // Another class sharing this table (STI): add only columns the\n // seeding contributor did not already define.\n for (const [colName, colDef] of Object.entries(columnsToUse)) {\n if (!tableSchema.columns[colName]) {\n tableSchema.columns[colName] = colDef;\n }\n }\n }\n\n applyContributorForeignKeys(tableSchema, contributor);\n\n // Merge indexes, keeping the first definition of each name.\n const schemaIndexes = registered.schema?.indexes;\n if (schemaIndexes && schemaIndexes.length > 0) {\n const existingNames = new Set(\n tableSchema.indexes.map((index) => index.name),\n );\n for (const index of schemaIndexes) {\n // Legacy string-format indexes carry no columns and cannot be merged.\n if (typeof index === 'string') {\n continue;\n }\n if (!existingNames.has(index.name)) {\n tableSchema.indexes.push(index);\n existingNames.add(index.name);\n }\n }\n }\n }\n // Recompute from the complete runtime hierarchy, rather than whichever\n // package happened to provide the first same-name root index.\n const tableSchema = tableSchemas[tableName];\n tableSchema.indexes = withConflictIndex(\n tableName,\n tableSchema.columns,\n tableSchema.indexes,\n tableSchema.conflictColumns,\n tableSchema.isSTI\n ? ObjectRegistry.getConflictPredicate(\n orderedContributors[0].conflictKey,\n )\n : undefined,\n );\n if (tableSchema.isSTI) {\n // Raw registrations may have no generated schema at all. Excluding a\n // child from the root key requires its replacement constraint here too.\n for (const className of ObjectRegistry.getSTIConflictOverrides(\n orderedContributors[0].conflictKey,\n )) {\n const conflictColumns = ObjectRegistry.getConflictColumns(className);\n const primaryKeys = Object.entries(tableSchema.columns)\n .filter(([, column]) => column.primaryKey)\n .map(([name]) => name);\n if (\n primaryKeys.length === conflictColumns.length &&\n primaryKeys.every((name) => conflictColumns.includes(name))\n )\n continue;\n const digest = sha256Hex(className).slice(0, 8);\n const name = shortenIdentifier(`${tableName}_${digest}_conflict_idx`);\n const childIndex: IndexDefinition = {\n name,\n columns: conflictColumns,\n unique: true,\n description: 'STI subclass conflict target',\n where: ObjectRegistry.getConflictPredicate(className),\n ...(nullableConflictIdentity(conflictColumns, tableSchema.columns)\n ? { nullsNotDistinct: true }\n : {}),\n };\n const existing = tableSchema.indexes.findIndex(\n (index) => index.name === name,\n );\n if (existing >= 0) tableSchema.indexes[existing] = childIndex;\n else tableSchema.indexes.push(childIndex);\n }\n }\n }\n\n return tableSchemas;\n}\n\n/**\n * Get all pre-generated schemas for explicit adapter bootstrap paths.\n *\n * Returns schemas in SDK SchemaProvider format for all registered classes.\n * Tooling and test helpers can pass these to `getDatabase()` when they want\n * to bootstrap schema before runtime. Core runtime no longer does this\n * implicitly.\n *\n * @returns Record of table names to schema definitions\n * @example\n * ```typescript\n * const schemas = ObjectRegistry.getAllSchemas('json');\n * const db = await getDatabase({ type: 'json', url: './data', schemas });\n * ```\n */\nexport function getAllSchemas(\n engine?: DatabaseEngine,\n): Record<string, { tableName: string; ddl: string; indexes?: string[] }> {\n // Step 1: Assemble every table from its contributing classes. The merge is\n // deterministic, so the shape does not depend on registration order (#2372).\n const tableSchemas = buildMergedTableSchemas();\n\n // Step 2: Convert to output format, regenerating DDL for merged schemas\n const schemas: Record<\n string,\n { tableName: string; ddl: string; indexes?: string[] }\n > = {};\n\n for (const [tableName, tableSchema] of Object.entries(tableSchemas)) {\n const engineIndexes = engine\n ? withConflictIndex(\n tableName,\n tableSchema.columns,\n tableSchema.indexes,\n tableSchema.conflictColumns,\n )\n : tableSchema.indexes;\n const mergedSchema: SchemaDefinition = {\n tableName,\n ddl: tableSchema.ddl,\n columns: tableSchema.columns,\n indexes: engineIndexes,\n triggers: [],\n foreignKeys: [],\n version: '',\n dependencies: [],\n };\n mergedSchema.foreignKeys = schemaForeignKeys(mergedSchema);\n mergedSchema.dependencies = mergedSchema.foreignKeys\n .map((foreignKey) => foreignKey.referencesTable)\n .filter((dependency) => dependency !== tableName);\n\n // Generate DDL from merged columns (or use original DDL if columns are empty)\n let ddl: string;\n if (Object.keys(tableSchema.columns).length === 0 && tableSchema.ddl) {\n if (engine) {\n throw new Error(\n `Cannot materialize schema '${tableName}' for ${engine}: the manifest has no structured columns`,\n );\n }\n // Preserve legacy inspection of cached engine-neutral DDL. Executable\n // target-engine paths fail above rather than returning unsafe SQL.\n ddl = tableSchema.ddl;\n } else if (Object.keys(tableSchema.columns).length === 0) {\n // Skip schemas with no columns and no original DDL\n continue;\n } else if (engine) {\n // Target-engine materialization must route the complete structured\n // schema through its strategy. In particular, DuckDB/JSON require\n // UNIQUE constraints inline for ON CONFLICT, and every strategy owns\n // CHECK/default/index-expression rendering.\n ddl = getDDLStrategy(engine).generateCreateTable(mergedSchema);\n } else {\n ddl = generateDDLFromColumns(\n tableName,\n tableSchema.columns,\n tableSchema.isSTI,\n );\n }\n\n // Convert index definitions to SQL strings for SDK compatibility\n let indexSQL: string[] | undefined;\n if (engineIndexes.length > 0) {\n indexSQL = engine\n ? getDDLStrategy(engine).generateIndexes(mergedSchema)\n : engineIndexes.map((idx) => {\n const indexType = idx.unique ? 'UNIQUE INDEX' : 'INDEX';\n const columnList = idx.columns\n .map((col) => quoteIdentifier(col))\n .join(', ');\n return `CREATE ${indexType} IF NOT EXISTS ${quoteIdentifier(\n idx.name,\n )} ON ${quoteIdentifier(tableName)} (${columnList});`;\n });\n }\n\n schemas[tableName] = {\n tableName,\n ddl,\n indexes: indexSQL,\n };\n }\n\n return schemas;\n}\n\n/**\n * Get all registered schemas as SchemaDefinition objects\n *\n * Similar to getAllSchemas(), but returns SchemaDefinition format suitable\n * for use with SchemaComparer (migrations/differ.ts).\n *\n * Key difference: Indexes are kept as IndexDefinition objects instead of\n * being converted to SQL strings.\n *\n * @returns Map of tableName to SchemaDefinition\n */\nexport function getAllSchemasAsDefinitions(): Record<string, SchemaDefinition> {\n // Step 1: Assemble every table from its contributing classes. The merge is\n // deterministic, so the shape does not depend on registration order (#2372).\n const tableSchemas = buildMergedTableSchemas();\n\n // Step 2: Convert to SchemaDefinition format\n const schemas: Record<string, SchemaDefinition> = {};\n\n for (const [tableName, tableSchema] of Object.entries(tableSchemas)) {\n if (Object.keys(tableSchema.columns).length === 0) {\n continue;\n }\n\n // Generate DDL from columns\n const ddl = generateDDLFromColumns(\n tableName,\n tableSchema.columns,\n tableSchema.isSTI,\n );\n const foreignKeys = schemaForeignKeys({\n columns: tableSchema.columns,\n foreignKeys: [],\n });\n\n schemas[tableName] = {\n tableName,\n ddl,\n columns: tableSchema.columns,\n indexes: withConflictIndex(\n tableName,\n tableSchema.columns,\n tableSchema.indexes,\n tableSchema.conflictColumns,\n ),\n triggers: [],\n foreignKeys,\n version: '',\n dependencies: foreignKeys\n .map((foreignKey) => foreignKey.referencesTable)\n .filter((dependency) => dependency !== tableName),\n };\n }\n\n return schemas;\n}\n\n/**\n * Generate DDL CREATE TABLE statement from columns\n *\n * Used internally by getAllSchemas() to regenerate DDL after merging\n * columns from multiple STI subtypes that share the same table.\n *\n * @param tableName - Name of the table\n * @param columns - Column definitions\n * @returns DDL CREATE TABLE statement\n */\nexport function generateDDLFromColumns(\n tableName: string,\n columns: Record<string, ColumnDefinition>,\n isSTI = false,\n engine?: DatabaseEngine,\n): string {\n let sql = `CREATE TABLE IF NOT EXISTS ${quoteIdentifier(tableName)} (\\n`;\n\n const columnLines: string[] = [];\n for (const [columnName, columnDef] of Object.entries(columns)) {\n const parts: string[] = [];\n\n // Column name and type\n const strategy = engine ? getDDLStrategy(engine) : undefined;\n const columnType = strategy\n ? strategy.mapType(columnDef.type)\n : columnDef.type;\n parts.push(` ${quoteIdentifier(columnName)} ${columnType}`);\n\n // Primary key\n if (columnDef.primaryKey) {\n parts.push('PRIMARY KEY');\n }\n\n // Not null constraint\n if (columnDef.notNull) {\n parts.push('NOT NULL');\n }\n\n // Unique constraint (skip if primary key already implies uniqueness)\n if (columnDef.unique && !columnDef.primaryKey) {\n parts.push('UNIQUE');\n }\n\n // Default value\n if (columnDef.defaultValue !== undefined) {\n const defaultSQL = strategy\n ? strategy.formatDefaultValue(columnDef.defaultValue, columnDef.type)\n : formatDefaultValue(columnDef.defaultValue, columnDef.type);\n parts.push(`DEFAULT ${defaultSQL}`);\n }\n\n columnLines.push(parts.join(' '));\n }\n for (const foreignKey of schemaForeignKeys({ columns, foreignKeys: [] })) {\n columnLines.push(` ${renderForeignKeyConstraint(tableName, foreignKey)}`);\n }\n\n sql += columnLines.join(',\\n');\n\n // Add UNIQUE constraint for UPSERT operations\n // For STI tables: UNIQUE(slug, context, _meta_type) - different types can have same slug+context\n // For non-STI tables: UNIQUE(slug, context)\n if (columns.slug && columns.context) {\n if (isSTI && columns._meta_type) {\n sql += ',\\n UNIQUE(slug, context, _meta_type)';\n } else {\n sql += ',\\n UNIQUE(slug, context)';\n }\n }\n\n sql += '\\n);';\n\n return sql;\n}\n\n/**\n * Format default value for SQL DDL.\n *\n * Thin wrapper over the shared, injection-safe formatter\n * (`schema/sql-identifiers.ts`) so the registry schema-builder uses the same\n * rules as the DDL strategies and schema generator: an allowlist of SQL\n * keyword/function defaults (not \"contains `(`\"), type-driven literal quoting,\n * and no folding of a literal string `\"null\"` into the SQL NULL keyword.\n *\n * @param value - Default value\n * @param type - Column SQL type\n * @returns Formatted SQL default value\n */\nexport function formatDefaultValue(value: unknown, type: string): string {\n return formatDefaultValueShared(value, type);\n}\n\n/**\n * Options for {@link fieldsToColumns}.\n */\nexport interface FieldsToColumnsOptions {\n /**\n * Shape the columns for a single-table-inheritance table.\n *\n * An STI table holds the union of every subtype's fields, so a column that\n * only one subtype declares must stay nullable — rows of sibling subtypes\n * never populate it. This matches `generateSTISchemaFromManifest`, which\n * emits `notNull: false` for every non-system column on an STI table.\n * Declared defaults are still emitted.\n */\n stiUnionColumns?: boolean;\n /**\n * Physical column names that form the table's natural conflict key.\n * Undeclared delete actions on foreign-key members use the shared CASCADE\n * default, matching app-side relationship cleanup.\n */\n conflictColumns?: readonly string[];\n}\n\n/**\n * Convert a Map of field definitions to column definitions\n *\n * Used by getAllSchemas() to generate columns from fields when a class\n * has no pre-generated schema (e.g., STI subclasses registered from manifest).\n *\n * `required`, `default`, and `description` are read from either the top level\n * or `_meta`: registry-sourced fields normalize them into `_meta`, so reading\n * only the top level dropped NOT NULL and DEFAULT for every such field\n * (#2372).\n *\n * @param fields - Map of field name to field definition\n * @param options - Table-shape options (see {@link FieldsToColumnsOptions})\n * @returns Record of column name to column definition\n * @private\n */\nexport function fieldsToColumns(\n fields: Map<string, FieldDefinition>,\n options?: FieldsToColumnsOptions,\n): Record<string, ColumnDefinition> {\n const columns: Record<string, ColumnDefinition> = {};\n const conflictColumns = new Set(\n (options?.conflictColumns ?? []).map((column) => toSnakeCase(column)),\n );\n\n for (const [fieldName, fieldDef] of fields) {\n // Skip id, timestamps - they're on the base table\n if (\n fieldName === 'id' ||\n fieldName === 'created_at' ||\n fieldName === 'updated_at' ||\n fieldName === 'slug' ||\n fieldName === 'context'\n ) {\n continue;\n }\n\n // Skip transient fields (non-persisted)\n if (fieldDef.transient || fieldDef._meta?.transient) {\n continue;\n }\n\n // Skip relationship fields that don't create columns\n // oneToMany and manyToMany are relationship metadata, not actual database columns\n if (fieldDef.type === 'oneToMany' || fieldDef.type === 'manyToMany') {\n continue;\n }\n\n // Skip meta fields - they're stored in _meta_data JSONB column\n if (fieldDef.type === 'meta') {\n continue;\n }\n\n // Map field type to SQL type\n const sqlType =\n fieldDef._meta?.sqlType ||\n (fieldDef.type === 'crossPackageRef' &&\n (fieldDef._meta?.idType === 'text' ||\n (fieldDef as unknown as { idType?: string }).idType === 'text')\n ? 'TEXT'\n : mapFieldTypeToSQL(fieldDef.type));\n const normalizedSqlType = String(sqlType).toUpperCase() as SQLDataType;\n const referenceKind = getReferenceKind(fieldDef);\n\n const required = readFieldAttribute(fieldDef, 'required');\n const defaultValue = readFieldAttribute(fieldDef, 'default');\n const description = readFieldAttribute(fieldDef, 'description');\n\n const column: ColumnDefinition = {\n type: normalizedSqlType,\n referenceKind,\n notNull: options?.stiUnionColumns\n ? false\n : fieldDef._meta?.nullable\n ? false\n : Boolean(required),\n unique: fieldDef._meta?.unique || false,\n description: description as string | undefined,\n };\n\n // Handle default values\n if (\n defaultValue !== undefined &&\n shouldEmitDefault(fieldDef, normalizedSqlType, defaultValue)\n ) {\n column.defaultValue = defaultValue;\n }\n const backfill = normalizeBackfill(fieldDef._meta?.backfill);\n if (backfill !== undefined) {\n column.backfill = backfill;\n }\n\n // Handle foreign keys\n if (\n fieldDef.type === 'foreignKey' &&\n fieldDef.related &&\n fieldDef._meta?.constraint !== false &&\n fieldDef._meta?.__tenancy?.isTenantIdField !== true &&\n !(\n fieldDef as FieldDefinition & {\n __tenancy?: { isTenantIdField?: boolean };\n }\n ).__tenancy?.isTenantIdField\n ) {\n const [table, columnName = 'id'] = fieldDef.related.split('.');\n const fieldMeta = fieldDef._meta as\n | {\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n }\n | undefined;\n column.foreignKey = {\n table: classnameToTablename(table),\n column: columnName,\n onDelete: resolveForeignKeyDeleteAction({\n declared: fieldMeta?.onDelete,\n isConflictColumn: conflictColumns.has(toSnakeCase(fieldName)),\n isTenantIdField: false,\n columnName: toSnakeCase(fieldName),\n }).action,\n onUpdate: resolveForeignKeyUpdateAction(fieldMeta?.onUpdate),\n ...(typeof fieldDef._meta?.constraint === 'object'\n ? { engines: [...fieldDef._meta.constraint.engines] }\n : {}),\n };\n }\n\n // Use snake_case for column names\n columns[toSnakeCase(fieldName)] = column;\n }\n\n return columns;\n}\n\n/**\n * Map field type to SQL data type\n * @private\n */\nexport function mapFieldTypeToSQL(\n fieldType: FieldDefinition['type'],\n): SQLDataType {\n switch (fieldType) {\n case 'text':\n return 'TEXT';\n case 'integer':\n return 'INTEGER';\n case 'decimal':\n return 'REAL';\n case 'boolean':\n return 'BOOLEAN';\n case 'datetime':\n return 'TIMESTAMP';\n case 'json':\n return 'JSON';\n case 'foreignKey':\n return 'UUID';\n case 'crossPackageRef':\n return 'UUID';\n default:\n return 'TEXT';\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"schema-builder.js","names":[],"sources":["../../src/registry/schema-builder.ts"],"sourcesContent":["/**\n * Schema building logic for the SMRT ObjectRegistry.\n *\n * Extracted from registry.ts as part of issue #1006.\n */\n\nimport { ObjectRegistry } from '../registry';\nimport type { FieldDefinition } from '../scanner/types.js';\nimport { normalizeBackfill } from '../schema/backfill.js';\nimport {\n conflictIndexName,\n nullableConflictIdentity,\n} from '../schema/conflict-target.js';\nimport { getDDLStrategy } from '../schema/ddl/index.js';\nimport type { DatabaseEngine } from '../schema/ddl/types.js';\nimport {\n renderForeignKeyConstraint,\n schemaForeignKeys,\n} from '../schema/foreign-key-ddl.js';\nimport {\n resolveForeignKeyDeleteAction,\n resolveForeignKeyUpdateAction,\n} from '../schema/foreign-key-policy.js';\nimport { shortenIdentifier } from '../schema/index-utils.js';\nimport {\n formatDefaultValue as formatDefaultValueShared,\n quoteIdentifier,\n} from '../schema/sql-identifiers.js';\nimport type {\n ColumnDefinition,\n IndexDefinition,\n SchemaDefinition,\n SQLDataType,\n} from '../schema/types.js';\nimport { classnameToTablename, toSnakeCase } from '../utils';\nimport { sha256Hex } from '../utils/sha256.js';\nimport {\n type CollectionRegistrationLookup,\n isCollectionRegistration,\n} from './collection-resolution';\nimport { isFrameworkBaseClass } from './framework-base-classes';\nimport { readFieldAttribute } from './manifest-field-merge';\nimport { findClass } from './name-resolver';\nimport { getClasses, getCollectionTableNames } from './shared-state';\nimport {\n assertRuntimeTableBindings,\n assertTableFamilies,\n mappedSchema,\n} from './table-mappings.js';\nimport type { RegisteredClass } from './types';\n\ntype ForeignKeyAction = NonNullable<\n NonNullable<ColumnDefinition['foreignKey']>['onDelete']\n>;\n\nconst collectionRegistrationLookup: CollectionRegistrationLookup = {\n findClass,\n findClassInPackage: (packageName, className) =>\n ObjectRegistry.getClassInPackage(packageName, className),\n getInheritanceChain: (className) =>\n ObjectRegistry.getInheritanceChain(className),\n};\n\nfunction applyDecoratorSqlTypeOverrides(\n className: string,\n columns: Record<string, ColumnDefinition>,\n): Record<string, ColumnDefinition> {\n const decorators = ObjectRegistry.getFieldDecorators(className);\n if (!decorators.size) {\n return columns;\n }\n\n for (const [fieldName, options] of decorators) {\n if (!options?.sqlType) {\n continue;\n }\n\n const columnName = toSnakeCase(fieldName);\n const existing = columns[columnName];\n if (!existing) {\n continue;\n }\n\n const referenceKind = getReferenceKind(options as FieldDefinition);\n columns[columnName] = {\n ...existing,\n type: String(options.sqlType).toUpperCase() as SQLDataType,\n ...(referenceKind ? { referenceKind } : {}),\n };\n }\n\n return columns;\n}\n\nfunction mergeRuntimeFieldColumns(\n className: string,\n schemaColumns: Record<string, ColumnDefinition> | undefined,\n fields: Map<string, FieldDefinition>,\n options?: FieldsToColumnsOptions,\n): Record<string, ColumnDefinition> {\n const columnsToUse = { ...(schemaColumns || {}) };\n\n if (fields.size > 0) {\n const fieldColumns = fieldsToColumns(fields, options);\n for (const [columnName, columnDef] of Object.entries(fieldColumns)) {\n if (!columnsToUse[columnName]) {\n columnsToUse[columnName] = columnDef;\n }\n }\n\n for (const [fieldName, fieldDef] of fields) {\n const columnName = toSnakeCase(fieldName);\n const existing = columnsToUse[columnName];\n if (!existing) {\n continue;\n }\n\n const sqlType =\n fieldDef._meta?.sqlType ||\n (fieldDef as unknown as { sqlType?: string }).sqlType;\n const referenceKind = getReferenceKind(fieldDef);\n // #3008: the per-row backfill lives in field metadata only; overlay it\n // onto manifest-sourced columns too so db:migrate always sees it.\n const backfill = normalizeBackfill(fieldDef._meta?.backfill);\n columnsToUse[columnName] = {\n ...existing,\n ...(sqlType\n ? { type: String(sqlType).toUpperCase() as SQLDataType }\n : {}),\n ...(referenceKind ? { referenceKind } : {}),\n ...(backfill !== undefined ? { backfill } : {}),\n };\n }\n }\n\n applyDecoratorSqlTypeOverrides(className, columnsToUse);\n return columnsToUse;\n}\n\nfunction getReferenceKind(\n fieldDef: FieldDefinition,\n): ColumnDefinition['referenceKind'] | undefined {\n if (\n (\n fieldDef as unknown as {\n __tenancy?: { isTenantIdField?: boolean };\n }\n ).__tenancy?.isTenantIdField ||\n fieldDef._meta?.__tenancy?.isTenantIdField\n ) {\n return 'tenantId';\n }\n\n if (fieldDef.type === 'foreignKey') {\n return 'foreignKey';\n }\n\n if (fieldDef.type === 'crossPackageRef') {\n return 'crossPackageRef';\n }\n\n return undefined;\n}\n\n// A uuid column never defaults to '' (same rule as the manifest generator,\n// 9832f70fa): PostgreSQL stores `(''::text)::uuid` unevaluated and every\n// INSERT that omits the column fails with 22P02. This covers a plain\n// `@field({ sqlType: 'UUID' }) tenantId = ''` (TenantKey) as well as\n// tenant references.\nfunction shouldEmitDefault(\n _fieldDef: FieldDefinition,\n sqlType: SQLDataType,\n defaultValue: unknown,\n) {\n return !(sqlType === 'UUID' && defaultValue === '');\n}\n\n/**\n * Fallback base columns for a table whose contributing class carries no\n * manifest columns.\n *\n * These mirror what the manifest schema generators emit for the same table\n * (`generateSchemaFromManifest` / `generateSTISchemaFromManifest`), so a table\n * assembled from runtime field metadata alone has the same NOT NULL and\n * DEFAULT shape as one assembled from a manifest. Divergence here is what made\n * the merged table shape depend on which class registered first (#2372).\n */\nfunction createBaseColumns(\n registered: {\n config?: { idType?: 'uuid' | 'text' };\n },\n isSTI: boolean,\n): Record<string, ColumnDefinition> {\n const baseColumns: Record<string, ColumnDefinition> = {\n id: {\n type: registered.config?.idType === 'text' ? 'TEXT' : 'UUID',\n primaryKey: true,\n notNull: true,\n referenceKind: 'id',\n },\n slug: { type: 'TEXT', notNull: true },\n context: { type: 'TEXT', notNull: true, defaultValue: '' },\n created_at: {\n type: 'TIMESTAMP',\n notNull: true,\n defaultValue: 'current_timestamp',\n },\n updated_at: {\n type: 'TIMESTAMP',\n notNull: true,\n defaultValue: 'current_timestamp',\n },\n };\n\n // STI tables also carry the discriminator and the meta payload column\n // (issue #690: db:diff needs them to detect schema changes).\n if (isSTI) {\n baseColumns._meta_type = { type: 'TEXT', notNull: true };\n baseColumns._meta_data = { type: 'JSON', notNull: false };\n }\n\n return baseColumns;\n}\n\n/**\n * Get cached schema definition for a registered class\n *\n * @param name - Name of the registered class\n * @returns Schema definition or undefined if not found\n * @example\n * ```typescript\n * const schema = getSchema('Product');\n * console.log(schema.tableName); // 'products'\n * console.log(schema.ddl); // 'CREATE TABLE...'\n * ```\n */\nexport function getSchema(name: string): SchemaDefinition | undefined {\n // Issue #951: Use findClass for multi-strategy lookup\n const registered = findClass(name);\n return registered ? mappedSchema(registered) : undefined;\n}\n\n/**\n * Get SQL DDL statement for a registered class\n *\n * @param name - Name of the registered class\n * Cached manifest DDL contains abstract types and is not safe to execute on\n * PostgreSQL. New executable paths must pass a target engine. Omitting it is\n * retained for backward compatibility with consumers that only inspect the\n * legacy engine-neutral manifest string.\n *\n * @param engine - Database engine that will execute the DDL\n * @returns Engine-specific SQL DDL, or the legacy cached DDL when omitted\n * @example\n * ```typescript\n * const ddl = ObjectRegistry.getSchemaDDL('Product', 'postgres');\n * await db.query(ddl);\n * ```\n */\nexport function getSchemaDDL(\n name: string,\n engine?: DatabaseEngine,\n): string | undefined {\n const schema = getSchema(name);\n if (!schema) return undefined;\n if (engine && Object.keys(schema.columns).length === 0) {\n throw new Error(\n `Cannot materialize schema '${name}' for ${engine}: the manifest has no structured columns`,\n );\n }\n return engine\n ? getDDLStrategy(engine).generateCreateTable(schema)\n : schema.ddl;\n}\n\n/**\n * Get table name for a registered class\n *\n * @param name - Name of the registered class\n * @returns Table name or undefined if not found\n * @example\n * ```typescript\n * const tableName = getTableName('Product');\n * console.log(tableName); // 'products'\n * ```\n */\nexport function getTableName(name: string): string | undefined {\n // Check if this is a collection class - collections have their own tableName mapping\n const collectionTableName = getCollectionTableNames().get(name);\n if (collectionTableName) {\n return collectionTableName;\n }\n\n // For STI classes, return the STI base class's table name.\n // R5-canon: `getSTIBase` returns the qualified name; resolve `name`\n // (which may be simple) to its registration's qualified form for the\n // comparison.\n const stiBase = ObjectRegistry.getSTIBase(name);\n const registered = ObjectRegistry.getClass(name);\n const qualifiedName = registered?.qualifiedName ?? registered?.name ?? name;\n if (stiBase && stiBase !== qualifiedName) {\n return getSchema(stiBase)?.tableName;\n }\n return getSchema(name)?.tableName;\n}\n\nfunction withConflictIndex(\n tableName: string,\n columns: Record<string, ColumnDefinition>,\n indexes: IndexDefinition[],\n conflictColumns: string[],\n conflictPredicate?: string,\n): IndexDefinition[] {\n if (\n conflictColumns.length === 0 ||\n !conflictColumns.every((column) => columns[column])\n ) {\n return indexes;\n }\n\n // `ON CONFLICT (id)` binds to the primary-key constraint itself; a second\n // unique index over the primary key column set adds nothing (#2359, A5).\n // Kept in step with SchemaGenerator.conflictColumnsArePrimaryKey().\n const primaryKeyColumns = Object.entries(columns)\n .filter(([, column]) => column.primaryKey === true)\n .map(([name]) => name);\n if (\n primaryKeyColumns.length > 0 &&\n primaryKeyColumns.length === conflictColumns.length &&\n primaryKeyColumns.every((column) => conflictColumns.includes(column))\n ) {\n return indexes;\n }\n\n // Same stable naming as SchemaGenerator (`schema/conflict-target.ts`), so\n // a manifest built before the runtime learned the tenant-aware default\n // (#2360) has its stale `<table>_slug_context_idx` REPLACED in place here\n // for a DECLARED tenant column. Only the declared column names the index:\n // an inferred ownership column (an undeclared `tenant_id`) gets the\n // custom-key name, so its tenant-led unique is built BESIDE the legacy\n // global one (expand, then contract) and old code's\n // `ON CONFLICT (slug, context)` keeps binding during a rolling deploy.\n const tenantColumn = Object.entries(columns).find(\n ([, column]) => column.referenceKind === 'tenantId',\n )?.[0];\n // The composed name can exceed PostgreSQL's 63-byte limit on a long table.\n // Shortening here (rather than inside conflictIndexName) keeps the generator\n // paths, which run enforceIdentifierLimits() over their whole index list,\n // and this migrate leg agreeing on the final name (#2374).\n const name = shortenIdentifier(\n conflictIndexName(tableName, conflictColumns, tenantColumn),\n );\n const canonical = indexes.find((index) => index.name === name);\n if (\n !canonical &&\n indexes.some(\n (index) =>\n index.unique === true &&\n !index.where &&\n !index.jsonPath &&\n index.columns.length === conflictColumns.length &&\n index.columns.every((column) => conflictColumns.includes(column)),\n )\n ) {\n // A user-owned equivalent unique index is not permission to change its NULL semantics.\n return indexes;\n }\n const conflictIndex: IndexDefinition = {\n name,\n columns: conflictColumns,\n unique: true,\n // Consumer subclasses may be absent from the provider's root manifest.\n ...(conflictPredicate\n ? {\n where: conflictPredicate,\n description: 'STI subclass conflict target',\n }\n : canonical?.description === 'STI subclass conflict target'\n ? { where: canonical.where, description: canonical.description }\n : {}),\n ...(nullableConflictIdentity(conflictColumns, columns)\n ? { nullsNotDistinct: true }\n : {}),\n };\n if (indexes.some((index) => index.name === name)) {\n return indexes.map((index) =>\n index.name === name ? conflictIndex : index,\n );\n }\n return [...indexes, conflictIndex];\n}\n\n/**\n * A registered class that contributes columns to one physical table.\n *\n * For a single-table-inheritance hierarchy every class in the hierarchy is a\n * contributor to the same table.\n */\ninterface TableContributor {\n registered: RegisteredClass;\n simpleName: string;\n qualifiedName: string;\n isSTI: boolean;\n /** True when this class is the STI base that owns the table. */\n isSTIBase: boolean;\n /** Inheritance depth; ancestors sort before descendants. */\n depth: number;\n /** Conflict-column lookup key (the STI base for STI members). */\n conflictKey: string;\n}\n\n/**\n * A merged physical table assembled from every class that contributes to it.\n */\ninterface MergedTableSchema {\n tableName: string;\n columns: Record<string, ColumnDefinition>;\n indexes: IndexDefinition[];\n ddl: string;\n isSTI: boolean;\n conflictColumns: string[];\n}\n\nfunction applyContributorForeignKeys(\n tableSchema: MergedTableSchema,\n contributor: TableContributor,\n): void {\n const conflictColumns = new Set(tableSchema.conflictColumns);\n for (const [fieldName, field] of contributor.registered.fields) {\n if (field.type !== 'foreignKey' || !field.related) continue;\n const columnName = toSnakeCase(fieldName);\n const column = tableSchema.columns[columnName];\n if (!column) continue;\n if (\n field._meta?.__tenancy?.isTenantIdField === true ||\n (\n field as FieldDefinition & {\n __tenancy?: { isTenantIdField?: boolean };\n }\n ).__tenancy?.isTenantIdField === true\n ) {\n column.foreignKey = undefined;\n continue;\n }\n const [legacyTargetName, declaredTargetColumn] = field.related.split('.');\n const resolvedTarget = ObjectRegistry.resolveRelationshipTarget(\n contributor.qualifiedName,\n fieldName,\n );\n if (resolvedTarget === null) {\n throw new Error(\n `Cannot resolve foreign key ${contributor.qualifiedName}.${fieldName}: target constructor is unregistered or the target name is ambiguous`,\n );\n }\n const targetName = resolvedTarget ?? legacyTargetName;\n const targetBase = ObjectRegistry.getSTIBase(targetName) || targetName;\n const registeredTarget = ObjectRegistry.getClass(targetBase);\n const targetColumn =\n declaredTargetColumn ||\n Array.from(ObjectRegistry.getFields(targetBase).entries()).find(\n ([, targetField]) => targetField._meta?.primaryKey === true,\n )?.[0] ||\n 'id';\n if (registeredTarget && !field._meta?.sqlType) {\n const targetColumnName = toSnakeCase(targetColumn);\n const targetColumnType =\n registeredTarget.schema?.columns?.[targetColumnName]?.type ||\n (targetColumnName === 'id'\n ? registeredTarget.config.idType === 'text'\n ? 'TEXT'\n : 'UUID'\n : undefined);\n if (targetColumnType) {\n column.type = targetColumnType;\n }\n }\n if (field._meta?.constraint === false) {\n column.foreignKey = undefined;\n continue;\n }\n // A manifest may carry explicit actions that predate or differ from the\n // runtime decorator defaults. Merging runtime fields must not erase them.\n // The fallback produced from runtime fields, however, must be replaced so\n // conflict columns receive the same default CASCADE as app-side cleanup.\n const manifestForeignKey =\n contributor.registered.schema?.columns?.[columnName]?.foreignKey;\n if (manifestForeignKey) {\n column.foreignKey = manifestForeignKey;\n continue;\n }\n // A decorator-only runtime field has no authoritative physical target\n // until that target is registered. Scanner-produced manifests clear this\n // shape too; only an explicit manifest FK above may survive unloaded\n // runtime classes (the manifest-authority contract from #1120).\n if (!registeredTarget) {\n column.foreignKey = undefined;\n continue;\n }\n const targetTable =\n ObjectRegistry.getTableName(targetBase) ||\n classnameToTablename(targetBase);\n const { action } = resolveForeignKeyDeleteAction({\n declared: field._meta?.onDelete,\n isConflictColumn: conflictColumns.has(columnName),\n isTenantIdField: false,\n columnName,\n });\n column.foreignKey = {\n table: targetTable,\n column: toSnakeCase(targetColumn),\n onDelete: action,\n onUpdate: resolveForeignKeyUpdateAction(field._meta?.onUpdate),\n ...(typeof field._meta?.constraint === 'object'\n ? { engines: [...field._meta.constraint.engines] }\n : {}),\n };\n }\n}\n\n/**\n * Resolve the physical table a registered class writes to.\n *\n * STI subclasses are folded onto their base's table. Returns `undefined` when\n * the class has no table (for example an unresolvable manifest stub).\n *\n * R5-canon: STI lookups use the qualified key so a colliding simple name in\n * another package cannot yield the wrong table strategy or STI base and move\n * this class's columns under that other package's table.\n */\nfunction resolveContributorTable(\n registered: RegisteredClass,\n fallbackName: string,\n): { tableName: string; contributor: TableContributor } | undefined {\n const boundSchema = mappedSchema(registered);\n if (boundSchema !== registered.schema) {\n registered = { ...registered, schema: boundSchema };\n }\n const simpleName = registered.name || fallbackName;\n const qualifiedName = registered.qualifiedName ?? simpleName;\n\n // STI subclasses loaded from external manifests can arrive with a null\n // tableName; registerFromManifest() then derives one from the class name.\n // Adopt the STI base's tableName instead so the subclass lands on the\n // shared table (issue #703).\n if (!registered.schema?.tableName && registered.extends) {\n if (ObjectRegistry.getTableStrategy(qualifiedName) === 'sti') {\n const stiBaseName = ObjectRegistry.getSTIBase(qualifiedName);\n if (stiBaseName && stiBaseName !== qualifiedName) {\n const baseRegistration = findClass(stiBaseName);\n const stiBaseClass = baseRegistration\n ? { ...baseRegistration, schema: mappedSchema(baseRegistration) }\n : undefined;\n if (stiBaseClass?.schema?.tableName) {\n if (!registered.schema) {\n registered.schema = {\n tableName: '',\n ddl: '',\n columns: {},\n indexes: [],\n triggers: [],\n foreignKeys: [],\n dependencies: [],\n version: '',\n };\n }\n registered.schema.tableName = stiBaseClass.schema.tableName;\n }\n }\n }\n }\n\n if (!registered.schema?.tableName) {\n return undefined;\n }\n\n let tableName = registered.schema.tableName;\n const tableStrategy = ObjectRegistry.getTableStrategy(qualifiedName);\n const isSTI = tableStrategy === 'sti';\n let isSTIBase = isSTI;\n let conflictKey = qualifiedName;\n\n if (isSTI) {\n const stiBaseName = ObjectRegistry.getSTIBase(qualifiedName);\n if (stiBaseName) {\n conflictKey = stiBaseName;\n if (stiBaseName !== qualifiedName) {\n isSTIBase = false;\n // STI subclasses serialize to the base class's table even when they\n // carry a tableName of their own (issue #693).\n const baseRegistration = findClass(stiBaseName);\n const stiBaseClass = baseRegistration\n ? { ...baseRegistration, schema: mappedSchema(baseRegistration) }\n : undefined;\n if (stiBaseClass?.schema?.tableName) {\n tableName = stiBaseClass.schema.tableName;\n }\n }\n }\n }\n\n return {\n tableName,\n contributor: {\n registered,\n simpleName,\n qualifiedName,\n isSTI,\n isSTIBase,\n depth: ObjectRegistry.getInheritanceChain(qualifiedName).length,\n conflictKey,\n },\n };\n}\n\n/**\n * Reject a table claimed by two unrelated classes (#3098).\n *\n * Classes share a physical table only as one single-table-inheritance family,\n * identified by its STI base. Anything else — two packages that both declare\n * `Account` and both derive `accounts`, or an explicit `tableName` reused by an\n * unrelated class — would be merged into one union table whose rows each\n * package's unscoped queries then return as its own. An unqualified (source)\n * registration and a package-qualified one of the same class are the same\n * family, not a conflict.\n */\nfunction assertSingleTableFamily(\n tableName: string,\n contributors: TableContributor[],\n): void {\n assertTableFamilies(\n tableName,\n contributors.map((contributor) => contributor.conflictKey),\n );\n}\n\n/**\n * Order the classes that share one table deterministically.\n *\n * The first contributor seeds the table: it supplies the base columns, the\n * `idType`, the conflict columns and the cached DDL, and its columns win every\n * merge conflict. Registration order must not decide that, or the same\n * hierarchy yields a different table shape depending on which class a manifest\n * happens to list first — child-first dropped NOT NULL and DEFAULT from the\n * base columns (#2372).\n *\n * Order: the STI base first, then ancestors before descendants, then by\n * qualified name so the result is a total order.\n */\nfunction sortTableContributors(contributors: TableContributor[]) {\n return [...contributors].sort((a, b) => {\n if (a.isSTIBase !== b.isSTIBase) {\n return a.isSTIBase ? -1 : 1;\n }\n if (a.depth !== b.depth) {\n return a.depth - b.depth;\n }\n return a.qualifiedName.localeCompare(b.qualifiedName);\n });\n}\n\n/**\n * Assemble every physical table from the classes that contribute to it.\n *\n * Shared by {@link getAllSchemas} and {@link getAllSchemasAsDefinitions} so\n * both produce the same merged shape. The result depends only on what is\n * registered, never on the order it was registered in.\n */\nfunction buildMergedTableSchemas(\n scope?: ReadonlySet<string>,\n): Record<string, MergedTableSchema> {\n assertRuntimeTableBindings();\n // Pass 1: group contributing classes by physical table.\n const contributorsByTable = new Map<string, TableContributor[]>();\n\n for (const [className, registered] of getClasses()) {\n // Collection classes have no table of their own; their schemas carry\n // collection properties (loaded, options, ...) rather than columns.\n if (\n isCollectionRegistration(\n className,\n registered,\n collectionRegistrationLookup,\n )\n ) {\n continue;\n }\n\n // Framework abstract base classes (SmrtObject, SmrtClass, ...) are\n // scaffolding, not resources — they produce no table (#2642).\n if (isFrameworkBaseClass(registered.name, registered.packageName)) {\n continue;\n }\n\n const resolved = resolveContributorTable(registered, className);\n if (!resolved) {\n continue;\n }\n\n const existing = contributorsByTable.get(resolved.tableName);\n if (existing) {\n existing.push(resolved.contributor);\n } else {\n contributorsByTable.set(resolved.tableName, [resolved.contributor]);\n }\n }\n\n // Pass 2: merge each table's contributors in deterministic order. A scoped\n // build merges (and ownership-checks) only the requested tables and the\n // tables their foreign keys reach, so an unrelated collision elsewhere in\n // the registry cannot abort it; every table it does build stays strict\n // (#3956).\n const tableSchemas: Record<string, MergedTableSchema> = {};\n const pending = scope\n ? [...scope].filter((tableName) => contributorsByTable.has(tableName))\n : [...contributorsByTable.keys()];\n const queued = new Set(pending);\n\n for (let next = 0; next < pending.length; next++) {\n const tableName = pending[next];\n const contributors = contributorsByTable.get(tableName) ?? [];\n assertSingleTableFamily(tableName, contributors);\n const orderedContributors = sortTableContributors(contributors);\n for (const contributor of orderedContributors) {\n const { registered, simpleName, isSTI } = contributor;\n const conflictColumns = ObjectRegistry.getConflictColumns(\n contributor.conflictKey,\n );\n\n // The manifest schema stays authoritative for the columns it defines.\n // Runtime field metadata backfills columns the manifest never had (for\n // example tenantScoped injections) and applies explicit sqlType\n // overrides, without erasing richer manifest metadata.\n const columnsToUse = mergeRuntimeFieldColumns(\n simpleName,\n registered.schema?.columns,\n registered.fields,\n { stiUnionColumns: isSTI, conflictColumns },\n );\n\n let tableSchema = tableSchemas[tableName];\n if (!tableSchema) {\n tableSchema = {\n tableName,\n columns: {\n ...createBaseColumns(registered, isSTI),\n ...columnsToUse,\n },\n indexes: [],\n ddl: registered.schema?.ddl || '',\n isSTI,\n conflictColumns,\n };\n tableSchemas[tableName] = tableSchema;\n } else {\n // Another class sharing this table (STI): add only columns the\n // seeding contributor did not already define.\n for (const [colName, colDef] of Object.entries(columnsToUse)) {\n if (!tableSchema.columns[colName]) {\n tableSchema.columns[colName] = colDef;\n }\n }\n }\n\n applyContributorForeignKeys(tableSchema, contributor);\n\n // Merge indexes, keeping the first definition of each name.\n const schemaIndexes = registered.schema?.indexes;\n if (schemaIndexes && schemaIndexes.length > 0) {\n const existingNames = new Set(\n tableSchema.indexes.map((index) => index.name),\n );\n for (const index of schemaIndexes) {\n // Legacy string-format indexes carry no columns and cannot be merged.\n if (typeof index === 'string') {\n continue;\n }\n if (!existingNames.has(index.name)) {\n tableSchema.indexes.push(index);\n existingNames.add(index.name);\n }\n }\n }\n }\n // Recompute from the complete runtime hierarchy, rather than whichever\n // package happened to provide the first same-name root index.\n const tableSchema = tableSchemas[tableName];\n tableSchema.indexes = withConflictIndex(\n tableName,\n tableSchema.columns,\n tableSchema.indexes,\n tableSchema.conflictColumns,\n tableSchema.isSTI\n ? ObjectRegistry.getConflictPredicate(\n orderedContributors[0].conflictKey,\n )\n : undefined,\n );\n if (tableSchema.isSTI) {\n // Raw registrations may have no generated schema at all. Excluding a\n // child from the root key requires its replacement constraint here too.\n for (const className of ObjectRegistry.getSTIConflictOverrides(\n orderedContributors[0].conflictKey,\n )) {\n const conflictColumns = ObjectRegistry.getConflictColumns(className);\n const primaryKeys = Object.entries(tableSchema.columns)\n .filter(([, column]) => column.primaryKey)\n .map(([name]) => name);\n if (\n primaryKeys.length === conflictColumns.length &&\n primaryKeys.every((name) => conflictColumns.includes(name))\n )\n continue;\n const digest = sha256Hex(className).slice(0, 8);\n const name = shortenIdentifier(`${tableName}_${digest}_conflict_idx`);\n const childIndex: IndexDefinition = {\n name,\n columns: conflictColumns,\n unique: true,\n description: 'STI subclass conflict target',\n where: ObjectRegistry.getConflictPredicate(className),\n ...(nullableConflictIdentity(conflictColumns, tableSchema.columns)\n ? { nullsNotDistinct: true }\n : {}),\n };\n const existing = tableSchema.indexes.findIndex(\n (index) => index.name === name,\n );\n if (existing >= 0) tableSchema.indexes[existing] = childIndex;\n else tableSchema.indexes.push(childIndex);\n }\n }\n if (scope) {\n for (const foreignKey of schemaForeignKeys({\n columns: tableSchema.columns,\n foreignKeys: [],\n })) {\n const dependency = foreignKey.referencesTable;\n if (queued.has(dependency) || !contributorsByTable.has(dependency)) {\n continue;\n }\n queued.add(dependency);\n pending.push(dependency);\n }\n }\n }\n\n return tableSchemas;\n}\n\n/**\n * Get all pre-generated schemas for explicit adapter bootstrap paths.\n *\n * Returns schemas in SDK SchemaProvider format for all registered classes.\n * Tooling and test helpers can pass these to `getDatabase()` when they want\n * to bootstrap schema before runtime. Core runtime no longer does this\n * implicitly.\n *\n * @returns Record of table names to schema definitions\n * @example\n * ```typescript\n * const schemas = ObjectRegistry.getAllSchemas('json');\n * const db = await getDatabase({ type: 'json', url: './data', schemas });\n * ```\n */\nexport function getAllSchemas(\n engine?: DatabaseEngine,\n): Record<string, { tableName: string; ddl: string; indexes?: string[] }> {\n // Step 1: Assemble every table from its contributing classes. The merge is\n // deterministic, so the shape does not depend on registration order (#2372).\n const tableSchemas = buildMergedTableSchemas();\n\n // Step 2: Convert to output format, regenerating DDL for merged schemas\n const schemas: Record<\n string,\n { tableName: string; ddl: string; indexes?: string[] }\n > = {};\n\n for (const [tableName, tableSchema] of Object.entries(tableSchemas)) {\n const engineIndexes = engine\n ? withConflictIndex(\n tableName,\n tableSchema.columns,\n tableSchema.indexes,\n tableSchema.conflictColumns,\n )\n : tableSchema.indexes;\n const mergedSchema: SchemaDefinition = {\n tableName,\n ddl: tableSchema.ddl,\n columns: tableSchema.columns,\n indexes: engineIndexes,\n triggers: [],\n foreignKeys: [],\n version: '',\n dependencies: [],\n };\n mergedSchema.foreignKeys = schemaForeignKeys(mergedSchema);\n mergedSchema.dependencies = mergedSchema.foreignKeys\n .map((foreignKey) => foreignKey.referencesTable)\n .filter((dependency) => dependency !== tableName);\n\n // Generate DDL from merged columns (or use original DDL if columns are empty)\n let ddl: string;\n if (Object.keys(tableSchema.columns).length === 0 && tableSchema.ddl) {\n if (engine) {\n throw new Error(\n `Cannot materialize schema '${tableName}' for ${engine}: the manifest has no structured columns`,\n );\n }\n // Preserve legacy inspection of cached engine-neutral DDL. Executable\n // target-engine paths fail above rather than returning unsafe SQL.\n ddl = tableSchema.ddl;\n } else if (Object.keys(tableSchema.columns).length === 0) {\n // Skip schemas with no columns and no original DDL\n continue;\n } else if (engine) {\n // Target-engine materialization must route the complete structured\n // schema through its strategy. In particular, DuckDB/JSON require\n // UNIQUE constraints inline for ON CONFLICT, and every strategy owns\n // CHECK/default/index-expression rendering.\n ddl = getDDLStrategy(engine).generateCreateTable(mergedSchema);\n } else {\n ddl = generateDDLFromColumns(\n tableName,\n tableSchema.columns,\n tableSchema.isSTI,\n );\n }\n\n // Convert index definitions to SQL strings for SDK compatibility\n let indexSQL: string[] | undefined;\n if (engineIndexes.length > 0) {\n indexSQL = engine\n ? getDDLStrategy(engine).generateIndexes(mergedSchema)\n : engineIndexes.map((idx) => {\n const indexType = idx.unique ? 'UNIQUE INDEX' : 'INDEX';\n const columnList = idx.columns\n .map((col) => quoteIdentifier(col))\n .join(', ');\n return `CREATE ${indexType} IF NOT EXISTS ${quoteIdentifier(\n idx.name,\n )} ON ${quoteIdentifier(tableName)} (${columnList});`;\n });\n }\n\n schemas[tableName] = {\n tableName,\n ddl,\n indexes: indexSQL,\n };\n }\n\n return schemas;\n}\n\n/**\n * Get all registered schemas as SchemaDefinition objects\n *\n * Similar to getAllSchemas(), but returns SchemaDefinition format suitable\n * for use with SchemaComparer (migrations/differ.ts).\n *\n * Key difference: Indexes are kept as IndexDefinition objects instead of\n * being converted to SQL strings.\n *\n * @returns Map of tableName to SchemaDefinition\n */\nexport function getAllSchemasAsDefinitions(options?: {\n /**\n * Build only these tables and the tables their foreign keys reach. Table\n * ownership is still enforced for every table built; collisions among\n * tables outside that closure do not abort the build (#3956).\n */\n tables?: Iterable<string>;\n}): Record<string, SchemaDefinition> {\n // Step 1: Assemble every table from its contributing classes. The merge is\n // deterministic, so the shape does not depend on registration order (#2372).\n const tableSchemas = buildMergedTableSchemas(\n options?.tables ? new Set(options.tables) : undefined,\n );\n\n // Step 2: Convert to SchemaDefinition format\n const schemas: Record<string, SchemaDefinition> = {};\n\n for (const [tableName, tableSchema] of Object.entries(tableSchemas)) {\n if (Object.keys(tableSchema.columns).length === 0) {\n continue;\n }\n\n // Generate DDL from columns\n const ddl = generateDDLFromColumns(\n tableName,\n tableSchema.columns,\n tableSchema.isSTI,\n );\n const foreignKeys = schemaForeignKeys({\n columns: tableSchema.columns,\n foreignKeys: [],\n });\n\n schemas[tableName] = {\n tableName,\n ddl,\n columns: tableSchema.columns,\n indexes: withConflictIndex(\n tableName,\n tableSchema.columns,\n tableSchema.indexes,\n tableSchema.conflictColumns,\n ),\n triggers: [],\n foreignKeys,\n version: '',\n dependencies: foreignKeys\n .map((foreignKey) => foreignKey.referencesTable)\n .filter((dependency) => dependency !== tableName),\n };\n }\n\n return schemas;\n}\n\n/**\n * Generate DDL CREATE TABLE statement from columns\n *\n * Used internally by getAllSchemas() to regenerate DDL after merging\n * columns from multiple STI subtypes that share the same table.\n *\n * @param tableName - Name of the table\n * @param columns - Column definitions\n * @returns DDL CREATE TABLE statement\n */\nexport function generateDDLFromColumns(\n tableName: string,\n columns: Record<string, ColumnDefinition>,\n isSTI = false,\n engine?: DatabaseEngine,\n): string {\n let sql = `CREATE TABLE IF NOT EXISTS ${quoteIdentifier(tableName)} (\\n`;\n\n const columnLines: string[] = [];\n for (const [columnName, columnDef] of Object.entries(columns)) {\n const parts: string[] = [];\n\n // Column name and type\n const strategy = engine ? getDDLStrategy(engine) : undefined;\n const columnType = strategy\n ? strategy.mapType(columnDef.type)\n : columnDef.type;\n parts.push(` ${quoteIdentifier(columnName)} ${columnType}`);\n\n // Primary key\n if (columnDef.primaryKey) {\n parts.push('PRIMARY KEY');\n }\n\n // Not null constraint\n if (columnDef.notNull) {\n parts.push('NOT NULL');\n }\n\n // Unique constraint (skip if primary key already implies uniqueness)\n if (columnDef.unique && !columnDef.primaryKey) {\n parts.push('UNIQUE');\n }\n\n // Default value\n if (columnDef.defaultValue !== undefined) {\n const defaultSQL = strategy\n ? strategy.formatDefaultValue(columnDef.defaultValue, columnDef.type)\n : formatDefaultValue(columnDef.defaultValue, columnDef.type);\n parts.push(`DEFAULT ${defaultSQL}`);\n }\n\n columnLines.push(parts.join(' '));\n }\n for (const foreignKey of schemaForeignKeys({ columns, foreignKeys: [] })) {\n columnLines.push(` ${renderForeignKeyConstraint(tableName, foreignKey)}`);\n }\n\n sql += columnLines.join(',\\n');\n\n // Add UNIQUE constraint for UPSERT operations\n // For STI tables: UNIQUE(slug, context, _meta_type) - different types can have same slug+context\n // For non-STI tables: UNIQUE(slug, context)\n if (columns.slug && columns.context) {\n if (isSTI && columns._meta_type) {\n sql += ',\\n UNIQUE(slug, context, _meta_type)';\n } else {\n sql += ',\\n UNIQUE(slug, context)';\n }\n }\n\n sql += '\\n);';\n\n return sql;\n}\n\n/**\n * Format default value for SQL DDL.\n *\n * Thin wrapper over the shared, injection-safe formatter\n * (`schema/sql-identifiers.ts`) so the registry schema-builder uses the same\n * rules as the DDL strategies and schema generator: an allowlist of SQL\n * keyword/function defaults (not \"contains `(`\"), type-driven literal quoting,\n * and no folding of a literal string `\"null\"` into the SQL NULL keyword.\n *\n * @param value - Default value\n * @param type - Column SQL type\n * @returns Formatted SQL default value\n */\nexport function formatDefaultValue(value: unknown, type: string): string {\n return formatDefaultValueShared(value, type);\n}\n\n/**\n * Options for {@link fieldsToColumns}.\n */\nexport interface FieldsToColumnsOptions {\n /**\n * Shape the columns for a single-table-inheritance table.\n *\n * An STI table holds the union of every subtype's fields, so a column that\n * only one subtype declares must stay nullable — rows of sibling subtypes\n * never populate it. This matches `generateSTISchemaFromManifest`, which\n * emits `notNull: false` for every non-system column on an STI table.\n * Declared defaults are still emitted.\n */\n stiUnionColumns?: boolean;\n /**\n * Physical column names that form the table's natural conflict key.\n * Undeclared delete actions on foreign-key members use the shared CASCADE\n * default, matching app-side relationship cleanup.\n */\n conflictColumns?: readonly string[];\n}\n\n/**\n * Convert a Map of field definitions to column definitions\n *\n * Used by getAllSchemas() to generate columns from fields when a class\n * has no pre-generated schema (e.g., STI subclasses registered from manifest).\n *\n * `required`, `default`, and `description` are read from either the top level\n * or `_meta`: registry-sourced fields normalize them into `_meta`, so reading\n * only the top level dropped NOT NULL and DEFAULT for every such field\n * (#2372).\n *\n * @param fields - Map of field name to field definition\n * @param options - Table-shape options (see {@link FieldsToColumnsOptions})\n * @returns Record of column name to column definition\n * @private\n */\nexport function fieldsToColumns(\n fields: Map<string, FieldDefinition>,\n options?: FieldsToColumnsOptions,\n): Record<string, ColumnDefinition> {\n const columns: Record<string, ColumnDefinition> = {};\n const conflictColumns = new Set(\n (options?.conflictColumns ?? []).map((column) => toSnakeCase(column)),\n );\n\n for (const [fieldName, fieldDef] of fields) {\n // Skip id, timestamps - they're on the base table\n if (\n fieldName === 'id' ||\n fieldName === 'created_at' ||\n fieldName === 'updated_at' ||\n fieldName === 'slug' ||\n fieldName === 'context'\n ) {\n continue;\n }\n\n // Skip transient fields (non-persisted)\n if (fieldDef.transient || fieldDef._meta?.transient) {\n continue;\n }\n\n // Skip relationship fields that don't create columns\n // oneToMany and manyToMany are relationship metadata, not actual database columns\n if (fieldDef.type === 'oneToMany' || fieldDef.type === 'manyToMany') {\n continue;\n }\n\n // Skip meta fields - they're stored in _meta_data JSONB column\n if (fieldDef.type === 'meta') {\n continue;\n }\n\n // Map field type to SQL type\n const sqlType =\n fieldDef._meta?.sqlType ||\n (fieldDef.type === 'crossPackageRef' &&\n (fieldDef._meta?.idType === 'text' ||\n (fieldDef as unknown as { idType?: string }).idType === 'text')\n ? 'TEXT'\n : mapFieldTypeToSQL(fieldDef.type));\n const normalizedSqlType = String(sqlType).toUpperCase() as SQLDataType;\n const referenceKind = getReferenceKind(fieldDef);\n\n const required = readFieldAttribute(fieldDef, 'required');\n const defaultValue = readFieldAttribute(fieldDef, 'default');\n const description = readFieldAttribute(fieldDef, 'description');\n\n const column: ColumnDefinition = {\n type: normalizedSqlType,\n referenceKind,\n notNull: options?.stiUnionColumns\n ? false\n : fieldDef._meta?.nullable\n ? false\n : Boolean(required),\n unique: fieldDef._meta?.unique || false,\n description: description as string | undefined,\n };\n\n // Handle default values\n if (\n defaultValue !== undefined &&\n shouldEmitDefault(fieldDef, normalizedSqlType, defaultValue)\n ) {\n column.defaultValue = defaultValue;\n }\n const backfill = normalizeBackfill(fieldDef._meta?.backfill);\n if (backfill !== undefined) {\n column.backfill = backfill;\n }\n\n // Handle foreign keys\n if (\n fieldDef.type === 'foreignKey' &&\n fieldDef.related &&\n fieldDef._meta?.constraint !== false &&\n fieldDef._meta?.__tenancy?.isTenantIdField !== true &&\n !(\n fieldDef as FieldDefinition & {\n __tenancy?: { isTenantIdField?: boolean };\n }\n ).__tenancy?.isTenantIdField\n ) {\n const [table, columnName = 'id'] = fieldDef.related.split('.');\n const fieldMeta = fieldDef._meta as\n | {\n onDelete?: ForeignKeyAction;\n onUpdate?: ForeignKeyAction;\n }\n | undefined;\n column.foreignKey = {\n table: classnameToTablename(table),\n column: columnName,\n onDelete: resolveForeignKeyDeleteAction({\n declared: fieldMeta?.onDelete,\n isConflictColumn: conflictColumns.has(toSnakeCase(fieldName)),\n isTenantIdField: false,\n columnName: toSnakeCase(fieldName),\n }).action,\n onUpdate: resolveForeignKeyUpdateAction(fieldMeta?.onUpdate),\n ...(typeof fieldDef._meta?.constraint === 'object'\n ? { engines: [...fieldDef._meta.constraint.engines] }\n : {}),\n };\n }\n\n // Use snake_case for column names\n columns[toSnakeCase(fieldName)] = column;\n }\n\n return columns;\n}\n\n/**\n * Map field type to SQL data type\n * @private\n */\nexport function mapFieldTypeToSQL(\n fieldType: FieldDefinition['type'],\n): SQLDataType {\n switch (fieldType) {\n case 'text':\n return 'TEXT';\n case 'integer':\n return 'INTEGER';\n case 'decimal':\n return 'REAL';\n case 'boolean':\n return 'BOOLEAN';\n case 'datetime':\n return 'TIMESTAMP';\n case 'json':\n return 'JSON';\n case 'foreignKey':\n return 'UUID';\n case 'crossPackageRef':\n return 'UUID';\n default:\n return 'TEXT';\n }\n}\n"],"mappings":"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"}
@@ -1038,6 +1038,18 @@ export interface RegisteredClass {
1038
1038
  extends?: string;
1039
1039
  /** Generic type arg from `SmrtCollection<X>` — marks collection classes. */
1040
1040
  extendsTypeArg?: string;
1041
+ /**
1042
+ * Generated surfaces in `config` the scanner copied from this collection's
1043
+ * model (`SmartObjectDefinition.inheritedExposure`); they follow the
1044
+ * model's effective config at runtime, never widening (#3468).
1045
+ */
1046
+ inheritedExposure?: Array<'api' | 'mcp' | 'cli'>;
1047
+ /**
1048
+ * Manifest classification of a collection class: the model it manages
1049
+ * (`SmartObjectDefinition.collectionOf`). A registration carrying it is a
1050
+ * collection and never claims a physical table (#3956).
1051
+ */
1052
+ collectionOf?: string;
1041
1053
  /** Full inheritance chain from base to this class (cached for performance) */
1042
1054
  inheritanceChain?: string[];
1043
1055
  /** Merged fields from entire inheritance chain (cached, includes parent fields) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/registry/types.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,7 @@ import type { SmrtObject } from "./object.js";
36
36
  import { getRuntimeOverride, type RuntimeRegistrationOverride } from "./registry/runtime-overrides.js";
37
37
  export type { RuntimeRegistrationOverride } from "./registry/runtime-overrides.js";
38
38
  import { type RegistryDiagnostic } from "./registry/diagnostics.js";
39
+ import { getAllSchemasAsDefinitions as _getAllSchemasAsDefinitions } from "./registry/schema-builder.js";
39
40
  import type { RegisteredClass, RegisteredField, RelationshipMetadata, SmartObjectConfig, SmrtObjectConstructor, ValidatorFunction } from "./registry/types.js";
40
41
  import type { MethodDefinition, QualifiedClassName, SmartObjectDefinition, SmartObjectManifest, SmrtVisibility, ValidationRule } from './scanner/types.js';
41
42
  import type { DatabaseEngine } from './schema/ddl/types.js';
@@ -993,7 +994,7 @@ export declare class ObjectRegistry {
993
994
  /**
994
995
  * Get all registered schemas as SchemaDefinition objects
995
996
  */
996
- static getAllSchemasAsDefinitions(): Record<string, SchemaDefinition>;
997
+ static getAllSchemasAsDefinitions(options?: Parameters<typeof _getAllSchemasAsDefinitions>[0]): Record<string, SchemaDefinition>;
997
998
  /**
998
999
  * Get compiled validation functions for a registered class
999
1000
  *
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
package/dist/registry.js CHANGED
@@ -27,7 +27,7 @@ import { createFieldFromManifest, manifestFieldDiffers, mergeManifestField } fro
27
27
  import { applyRuntimeOverrides, clearRuntimeOverrides, getRuntimeOverride, registerRuntimeOverride } from "./registry/runtime-overrides.js";
28
28
  import { clearSubtypeLineage } from "./registry/subtype-lineage.js";
29
29
  import { ensureTenantScopedField, invalidateInheritanceEntries, isBundledOutputPath, isSameSourcePath, register, registerCollection, registerFromManifest } from "./registry/class-registration.js";
30
- import { inheritCollectionExposure } from "./registry/collection-exposure.js";
30
+ import { COLLECTION_CRUD_SURFACES, capCollectionCrudToModel, closeWildcardExclusions, inheritCollectionExposure, inheritedCollectionSurface, narrowInheritedCollectionSurface } from "./registry/collection-exposure.js";
31
31
  import { resolveCollectionDbCacheKey } from "./registry/db-cache-key.js";
32
32
  import { getEmbeddingClasses, getEmbeddingConfig, getProjectEmbeddingConfig, hasEmbeddings, resolveEmbeddingConfig } from "./registry/embedding-manager.js";
33
33
  import { getDependencyGraph, getRelationshipMap, resolveRelationshipTarget } from "./registry/relationship-graph.js";
@@ -255,29 +255,41 @@ function resolveEffectiveConfig(name, registered, visiting = /* @__PURE__ */ new
255
255
  const generation = getRegistryGeneration();
256
256
  const cached = effectiveConfigCache.get(registered);
257
257
  if (cached && cached.generation === generation && cached.source === registered.config) return cached.config;
258
- if (visiting.has(registered)) return registered.config;
258
+ if (visiting.has(registered)) return closeWildcardExclusions(registered.config);
259
259
  visiting.add(registered);
260
- let config = registered.config;
260
+ const ownConfig = closeWildcardExclusions(registered.config);
261
+ let config = ownConfig;
261
262
  const key = registered.qualifiedName || registered.name || name;
262
263
  if (!isFrameworkBaseClass(registered.name, registered.packageName)) if (isCollectionRegistration(key, registered, collectionExposureLookup)) {
263
264
  const itemName = resolveCollectionItemClassName(key, registered, collectionExposureLookup);
264
265
  const item = itemName ? resolveRelatedRegistration(itemName, registered, collectionExposureLookup) : void 0;
265
266
  if (item && item !== registered) {
266
- const inherited = inheritCollectionExposure(registered.config, resolveEffectiveConfig(itemName, item, visiting), {
267
+ const itemConfig = resolveEffectiveConfig(itemName, item, visiting);
268
+ const methods = {
267
269
  collection: new Set(registered.methods.keys()),
268
270
  item: chainMethodNames(item)
269
- });
271
+ };
272
+ const inherited = inheritCollectionExposure(ownConfig, itemConfig, methods);
273
+ for (const surface of registered.inheritedExposure ?? []) {
274
+ const narrowed = narrowInheritedCollectionSurface(ownConfig[surface], inheritedCollectionSurface(surface, itemConfig, methods));
275
+ if (narrowed !== ownConfig[surface]) inherited[surface] = narrowed;
276
+ }
277
+ for (const surface of COLLECTION_CRUD_SURFACES) {
278
+ const current = surface in inherited ? inherited[surface] : ownConfig[surface];
279
+ const capped = capCollectionCrudToModel(surface, current, itemConfig);
280
+ if (capped !== current) inherited[surface] = capped;
281
+ }
270
282
  if (Object.keys(inherited).length > 0) config = {
271
- ...registered.config,
283
+ ...ownConfig,
272
284
  ...inherited
273
285
  };
274
286
  }
275
287
  } else {
276
288
  const parent = resolveParentModel(registered);
277
289
  if (parent) {
278
- const inherited = inheritSubclassExposure(registered.config, resolveEffectiveConfig(parent.qualifiedName || parent.name, parent, visiting));
290
+ const inherited = inheritSubclassExposure(ownConfig, resolveEffectiveConfig(parent.qualifiedName || parent.name, parent, visiting));
279
291
  if (Object.keys(inherited).length > 0) config = {
280
- ...registered.config,
292
+ ...ownConfig,
281
293
  ...inherited
282
294
  };
283
295
  }
@@ -1739,6 +1751,14 @@ var ObjectRegistry = class ObjectRegistry {
1739
1751
  registered.qualifiedName = createQualifiedName(manifestEntry.packageName, registered.name);
1740
1752
  didHydrate = true;
1741
1753
  }
1754
+ if (manifestEntry.inheritedExposure && registered.inheritedExposure?.join() !== manifestEntry.inheritedExposure.join()) {
1755
+ registered.inheritedExposure = manifestEntry.inheritedExposure;
1756
+ didHydrate = true;
1757
+ }
1758
+ if (manifestEntry.collectionOf && registered.collectionOf !== manifestEntry.collectionOf) {
1759
+ registered.collectionOf = manifestEntry.collectionOf;
1760
+ didHydrate = true;
1761
+ }
1742
1762
  const manifestParent = manifestParentUpdate(registered, manifestEntry);
1743
1763
  if (manifestParent) {
1744
1764
  registered.extends = manifestParent;
@@ -1794,8 +1814,8 @@ var ObjectRegistry = class ObjectRegistry {
1794
1814
  /**
1795
1815
  * Get all registered schemas as SchemaDefinition objects
1796
1816
  */
1797
- static getAllSchemasAsDefinitions() {
1798
- return getAllSchemasAsDefinitions();
1817
+ static getAllSchemasAsDefinitions(options) {
1818
+ return getAllSchemasAsDefinitions(options);
1799
1819
  }
1800
1820
  /**
1801
1821
  * Get compiled validation functions for a registered class