@happyvertical/smrt-core 0.30.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +124 -0
- package/CLAUDE.md +1 -0
- package/LICENSE +7 -0
- package/README.md +265 -0
- package/bin/smrt-prebuild.js +26 -0
- package/dist/__tests__/fixtures/advisor-test-classes.d.ts +28 -0
- package/dist/__tests__/fixtures/advisor-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts +12 -0
- package/dist/__tests__/fixtures/collection-coverage-fixtures.d.ts.map +1 -0
- package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts +28 -0
- package/dist/__tests__/fixtures/inheritance-resolver-fixtures.d.ts.map +1 -0
- package/dist/__tests__/fixtures/inheritance-test-classes.d.ts +43 -0
- package/dist/__tests__/fixtures/inheritance-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts +18 -0
- package/dist/__tests__/fixtures/mcp-integration-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts +15 -0
- package/dist/__tests__/fixtures/object-ai-memory-fixtures.d.ts.map +1 -0
- package/dist/__tests__/fixtures/object-spec-test-classes.d.ts +13 -0
- package/dist/__tests__/fixtures/object-spec-test-classes.d.ts.map +1 -0
- package/dist/__tests__/fixtures/registry-test-classes.d.ts +23 -0
- package/dist/__tests__/fixtures/registry-test-classes.d.ts.map +1 -0
- package/dist/adapters/ai-usage.d.ts +23 -0
- package/dist/adapters/ai-usage.d.ts.map +1 -0
- package/dist/adapters/ai-usage.js +105 -0
- package/dist/adapters/ai-usage.js.map +1 -0
- package/dist/adapters/cost-rates.d.ts +20 -0
- package/dist/adapters/cost-rates.d.ts.map +1 -0
- package/dist/adapters/cost-rates.js +40 -0
- package/dist/adapters/cost-rates.js.map +1 -0
- package/dist/adapters/index.d.ts +19 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/metrics.d.ts +111 -0
- package/dist/adapters/metrics.d.ts.map +1 -0
- package/dist/adapters/metrics.js +169 -0
- package/dist/adapters/metrics.js.map +1 -0
- package/dist/adapters/pubsub.d.ts +124 -0
- package/dist/adapters/pubsub.d.ts.map +1 -0
- package/dist/adapters/pubsub.js +121 -0
- package/dist/adapters/pubsub.js.map +1 -0
- package/dist/browser.d.ts +32 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +68 -0
- package/dist/browser.js.map +1 -0
- package/dist/child-accessors.d.ts +27 -0
- package/dist/child-accessors.d.ts.map +1 -0
- package/dist/child-accessors.js +35 -0
- package/dist/child-accessors.js.map +1 -0
- package/dist/class.d.ts +313 -0
- package/dist/class.d.ts.map +1 -0
- package/dist/class.js +896 -0
- package/dist/class.js.map +1 -0
- package/dist/collection-cache.d.ts +110 -0
- package/dist/collection-cache.d.ts.map +1 -0
- package/dist/collection-cache.js +187 -0
- package/dist/collection-cache.js.map +1 -0
- package/dist/collection.d.ts +894 -0
- package/dist/collection.d.ts.map +1 -0
- package/dist/collection.js +1987 -0
- package/dist/collection.js.map +1 -0
- package/dist/config/global-config.d.ts +3 -0
- package/dist/config/global-config.d.ts.map +1 -0
- package/dist/config/global-config.js +19 -0
- package/dist/config/global-config.js.map +1 -0
- package/dist/config.d.ts +145 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +57 -0
- package/dist/config.js.map +1 -0
- package/dist/consumer-plugin/index.d.ts +22 -0
- package/dist/consumer-plugin/index.d.ts.map +1 -0
- package/dist/consumer-plugin/index.js +452 -0
- package/dist/consumer-plugin/index.js.map +1 -0
- package/dist/consumer-plugin.d.ts +8 -0
- package/dist/consumer-plugin.d.ts.map +1 -0
- package/dist/consumer-plugin.js +5 -0
- package/dist/consumer-plugin.js.map +1 -0
- package/dist/database.d.ts +95 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +32 -0
- package/dist/database.js.map +1 -0
- package/dist/decorators/compatibility.d.ts +14 -0
- package/dist/decorators/compatibility.d.ts.map +1 -0
- package/dist/decorators/compatibility.js +111 -0
- package/dist/decorators/compatibility.js.map +1 -0
- package/dist/decorators/index.d.ts +381 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +104 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/dispatch/bus.d.ts +306 -0
- package/dist/dispatch/bus.d.ts.map +1 -0
- package/dist/dispatch/bus.js +583 -0
- package/dist/dispatch/bus.js.map +1 -0
- package/dist/dispatch/collections/DispatchSubscriptions.d.ts +79 -0
- package/dist/dispatch/collections/DispatchSubscriptions.d.ts.map +1 -0
- package/dist/dispatch/collections/DispatchSubscriptions.js +243 -0
- package/dist/dispatch/collections/DispatchSubscriptions.js.map +1 -0
- package/dist/dispatch/collections/Dispatches.d.ts +98 -0
- package/dist/dispatch/collections/Dispatches.d.ts.map +1 -0
- package/dist/dispatch/collections/Dispatches.js +358 -0
- package/dist/dispatch/collections/Dispatches.js.map +1 -0
- package/dist/dispatch/index.d.ts +47 -0
- package/dist/dispatch/index.d.ts.map +1 -0
- package/dist/dispatch/models/Dispatch.d.ts +101 -0
- package/dist/dispatch/models/Dispatch.d.ts.map +1 -0
- package/dist/dispatch/models/Dispatch.js +162 -0
- package/dist/dispatch/models/Dispatch.js.map +1 -0
- package/dist/dispatch/models/DispatchSubscription.d.ts +83 -0
- package/dist/dispatch/models/DispatchSubscription.d.ts.map +1 -0
- package/dist/dispatch/models/DispatchSubscription.js +112 -0
- package/dist/dispatch/models/DispatchSubscription.js.map +1 -0
- package/dist/dispatch/tenant-resolver.d.ts +98 -0
- package/dist/dispatch/tenant-resolver.d.ts.map +1 -0
- package/dist/dispatch/tenant-resolver.js +32 -0
- package/dist/dispatch/tenant-resolver.js.map +1 -0
- package/dist/dispatch/types.d.ts +149 -0
- package/dist/dispatch/types.d.ts.map +1 -0
- package/dist/embeddings/hash.d.ts +33 -0
- package/dist/embeddings/hash.d.ts.map +1 -0
- package/dist/embeddings/hash.js +37 -0
- package/dist/embeddings/hash.js.map +1 -0
- package/dist/embeddings/index.d.ts +36 -0
- package/dist/embeddings/index.d.ts.map +1 -0
- package/dist/embeddings/provider.d.ts +75 -0
- package/dist/embeddings/provider.d.ts.map +1 -0
- package/dist/embeddings/provider.js +170 -0
- package/dist/embeddings/provider.js.map +1 -0
- package/dist/embeddings/similarity.d.ts +47 -0
- package/dist/embeddings/similarity.d.ts.map +1 -0
- package/dist/embeddings/similarity.js +64 -0
- package/dist/embeddings/similarity.js.map +1 -0
- package/dist/embeddings/storage.d.ts +125 -0
- package/dist/embeddings/storage.d.ts.map +1 -0
- package/dist/embeddings/storage.js +283 -0
- package/dist/embeddings/storage.js.map +1 -0
- package/dist/embeddings/types.d.ts +250 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/errors.d.ts +363 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +669 -0
- package/dist/errors.js.map +1 -0
- package/dist/generators/cli.d.ts +162 -0
- package/dist/generators/cli.d.ts.map +1 -0
- package/dist/generators/cli.js +462 -0
- package/dist/generators/cli.js.map +1 -0
- package/dist/generators/index.d.ts +13 -0
- package/dist/generators/index.d.ts.map +1 -0
- package/dist/generators/mcp-runtime-template.d.ts +60 -0
- package/dist/generators/mcp-runtime-template.d.ts.map +1 -0
- package/dist/generators/mcp-runtime-template.js +509 -0
- package/dist/generators/mcp-runtime-template.js.map +1 -0
- package/dist/generators/mcp.d.ts +231 -0
- package/dist/generators/mcp.d.ts.map +1 -0
- package/dist/generators/mcp.js +1220 -0
- package/dist/generators/mcp.js.map +1 -0
- package/dist/generators/rest.d.ts +171 -0
- package/dist/generators/rest.d.ts.map +1 -0
- package/dist/generators/rest.js +591 -0
- package/dist/generators/rest.js.map +1 -0
- package/dist/generators/swagger.d.ts +21 -0
- package/dist/generators/swagger.d.ts.map +1 -0
- package/dist/generators/swagger.js +307 -0
- package/dist/generators/swagger.js.map +1 -0
- package/dist/generators/tenant-gate.d.ts +74 -0
- package/dist/generators/tenant-gate.d.ts.map +1 -0
- package/dist/generators/tenant-gate.js +15 -0
- package/dist/generators/tenant-gate.js.map +1 -0
- package/dist/generators.d.ts +8 -0
- package/dist/generators.d.ts.map +1 -0
- package/dist/generators.js +19 -0
- package/dist/generators.js.map +1 -0
- package/dist/hierarchical.d.ts +103 -0
- package/dist/hierarchical.d.ts.map +1 -0
- package/dist/hierarchical.js +184 -0
- package/dist/hierarchical.js.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +202 -0
- package/dist/index.js.map +1 -0
- package/dist/interceptors.d.ts +251 -0
- package/dist/interceptors.d.ts.map +1 -0
- package/dist/interceptors.js +259 -0
- package/dist/interceptors.js.map +1 -0
- package/dist/junction.d.ts +99 -0
- package/dist/junction.d.ts.map +1 -0
- package/dist/junction.js +136 -0
- package/dist/junction.js.map +1 -0
- package/dist/knowledge.d.ts +11 -0
- package/dist/knowledge.d.ts.map +1 -0
- package/dist/knowledge.js +310 -0
- package/dist/knowledge.js.map +1 -0
- package/dist/lazy-config.d.ts +160 -0
- package/dist/lazy-config.d.ts.map +1 -0
- package/dist/lazy-config.js +146 -0
- package/dist/lazy-config.js.map +1 -0
- package/dist/manifest/discover-base-classes.d.ts +78 -0
- package/dist/manifest/discover-base-classes.d.ts.map +1 -0
- package/dist/manifest/discover-base-classes.js +85 -0
- package/dist/manifest/discover-base-classes.js.map +1 -0
- package/dist/manifest/discover-smrt-packages.d.ts +48 -0
- package/dist/manifest/discover-smrt-packages.d.ts.map +1 -0
- package/dist/manifest/discover-smrt-packages.js +361 -0
- package/dist/manifest/discover-smrt-packages.js.map +1 -0
- package/dist/manifest/generator.d.ts +93 -0
- package/dist/manifest/generator.d.ts.map +1 -0
- package/dist/manifest/generator.js +380 -0
- package/dist/manifest/generator.js.map +1 -0
- package/dist/manifest/index.d.ts +16 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +51 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/manager.d.ts +51 -0
- package/dist/manifest/manager.d.ts.map +1 -0
- package/dist/manifest/manager.js +89 -0
- package/dist/manifest/manager.js.map +1 -0
- package/dist/manifest/manifest-loader.d.ts +187 -0
- package/dist/manifest/manifest-loader.d.ts.map +1 -0
- package/dist/manifest/manifest-loader.js +847 -0
- package/dist/manifest/manifest-loader.js.map +1 -0
- package/dist/manifest/sources/composite.d.ts +22 -0
- package/dist/manifest/sources/composite.d.ts.map +1 -0
- package/dist/manifest/sources/composite.js +60 -0
- package/dist/manifest/sources/composite.js.map +1 -0
- package/dist/manifest/sources/embedded.d.ts +7 -0
- package/dist/manifest/sources/embedded.d.ts.map +1 -0
- package/dist/manifest/sources/embedded.js +30 -0
- package/dist/manifest/sources/embedded.js.map +1 -0
- package/dist/manifest/sources/explicit-paths.d.ts +17 -0
- package/dist/manifest/sources/explicit-paths.d.ts.map +1 -0
- package/dist/manifest/sources/explicit-paths.js +35 -0
- package/dist/manifest/sources/explicit-paths.js.map +1 -0
- package/dist/manifest/sources/fallback.d.ts +25 -0
- package/dist/manifest/sources/fallback.d.ts.map +1 -0
- package/dist/manifest/sources/fallback.js +63 -0
- package/dist/manifest/sources/fallback.js.map +1 -0
- package/dist/manifest/sources/index.d.ts +17 -0
- package/dist/manifest/sources/index.d.ts.map +1 -0
- package/dist/manifest/sources/local-test.d.ts +7 -0
- package/dist/manifest/sources/local-test.d.ts.map +1 -0
- package/dist/manifest/sources/local-test.js +21 -0
- package/dist/manifest/sources/local-test.js.map +1 -0
- package/dist/manifest/sources/static.d.ts +7 -0
- package/dist/manifest/sources/static.d.ts.map +1 -0
- package/dist/manifest/sources/static.js +19 -0
- package/dist/manifest/sources/static.js.map +1 -0
- package/dist/manifest/sources/test.d.ts +7 -0
- package/dist/manifest/sources/test.d.ts.map +1 -0
- package/dist/manifest/sources/test.js +21 -0
- package/dist/manifest/sources/test.js.map +1 -0
- package/dist/manifest/sources/types.d.ts +79 -0
- package/dist/manifest/sources/types.d.ts.map +1 -0
- package/dist/manifest/sources/types.js +61 -0
- package/dist/manifest/sources/types.js.map +1 -0
- package/dist/manifest/static-manifest.d.ts +4 -0
- package/dist/manifest/static-manifest.d.ts.map +1 -0
- package/dist/manifest/static-manifest.js +1535 -0
- package/dist/manifest/static-manifest.js.map +1 -0
- package/dist/manifest/store.d.ts +111 -0
- package/dist/manifest/store.d.ts.map +1 -0
- package/dist/manifest/store.js +431 -0
- package/dist/manifest/store.js.map +1 -0
- package/dist/manifest/test-manifest-loader.d.ts +3 -0
- package/dist/manifest/test-manifest-loader.d.ts.map +1 -0
- package/dist/manifest/test-manifest-stub.d.ts +4 -0
- package/dist/manifest/test-manifest-stub.d.ts.map +1 -0
- package/dist/manifest/test-manifest-stub.js +80013 -0
- package/dist/manifest/test-manifest-stub.js.map +1 -0
- package/dist/manifest.d.ts +8 -0
- package/dist/manifest.d.ts.map +1 -0
- package/dist/manifest.js +20 -0
- package/dist/manifest.js.map +1 -0
- package/dist/manifest.json +1489 -0
- package/dist/mcp-advisor/index.d.ts +499 -0
- package/dist/mcp-advisor/index.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/add-ai-methods.d.ts +6 -0
- package/dist/mcp-advisor/tools/add-ai-methods.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/configure-decorators.d.ts +6 -0
- package/dist/mcp-advisor/tools/configure-decorators.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/generate-collection.d.ts +6 -0
- package/dist/mcp-advisor/tools/generate-collection.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/generate-field-definitions.d.ts +6 -0
- package/dist/mcp-advisor/tools/generate-field-definitions.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/generate-smrt-class.d.ts +6 -0
- package/dist/mcp-advisor/tools/generate-smrt-class.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/get-object-config.d.ts +6 -0
- package/dist/mcp-advisor/tools/get-object-config.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/get-object-schema.d.ts +10 -0
- package/dist/mcp-advisor/tools/get-object-schema.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/list-registered-objects.d.ts +9 -0
- package/dist/mcp-advisor/tools/list-registered-objects.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts +9 -0
- package/dist/mcp-advisor/tools/preview-api-endpoints.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts +9 -0
- package/dist/mcp-advisor/tools/preview-mcp-tools.d.ts.map +1 -0
- package/dist/mcp-advisor/tools/validate-smrt-object.d.ts +6 -0
- package/dist/mcp-advisor/tools/validate-smrt-object.d.ts.map +1 -0
- package/dist/mcp-advisor/types.d.ts +209 -0
- package/dist/mcp-advisor/types.d.ts.map +1 -0
- package/dist/migrations/backfill-tracker.d.ts +84 -0
- package/dist/migrations/backfill-tracker.d.ts.map +1 -0
- package/dist/migrations/backfill-tracker.js +118 -0
- package/dist/migrations/backfill-tracker.js.map +1 -0
- package/dist/migrations/checksum.d.ts +43 -0
- package/dist/migrations/checksum.d.ts.map +1 -0
- package/dist/migrations/checksum.js +32 -0
- package/dist/migrations/checksum.js.map +1 -0
- package/dist/migrations/differ.d.ts +186 -0
- package/dist/migrations/differ.d.ts.map +1 -0
- package/dist/migrations/differ.js +601 -0
- package/dist/migrations/differ.js.map +1 -0
- package/dist/migrations/generator.d.ts +133 -0
- package/dist/migrations/generator.d.ts.map +1 -0
- package/dist/migrations/generator.js +328 -0
- package/dist/migrations/generator.js.map +1 -0
- package/dist/migrations/index.d.ts +20 -0
- package/dist/migrations/index.d.ts.map +1 -0
- package/dist/migrations/orchestrate.d.ts +148 -0
- package/dist/migrations/orchestrate.d.ts.map +1 -0
- package/dist/migrations/orchestrate.js +118 -0
- package/dist/migrations/orchestrate.js.map +1 -0
- package/dist/migrations/tracker.d.ts +134 -0
- package/dist/migrations/tracker.d.ts.map +1 -0
- package/dist/migrations/tracker.js +624 -0
- package/dist/migrations/tracker.js.map +1 -0
- package/dist/migrations/types.d.ts +221 -0
- package/dist/migrations/types.d.ts.map +1 -0
- package/dist/migrations.d.ts +7 -0
- package/dist/migrations.d.ts.map +1 -0
- package/dist/migrations.js +26 -0
- package/dist/migrations.js.map +1 -0
- package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js +56 -0
- package/dist/node_modules/.pnpm/balanced-match@4.0.4/node_modules/balanced-match/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js +163 -0
- package/dist/node_modules/.pnpm/brace-expansion@5.0.5/node_modules/brace-expansion/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js +13 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/assert-valid-pattern.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js +654 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/ast.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js +111 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/brace-expressions.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js +10 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/escape.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js +824 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/index.js.map +1 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js +10 -0
- package/dist/node_modules/.pnpm/minimatch@10.2.3/node_modules/minimatch/dist/esm/unescape.js.map +1 -0
- package/dist/object.d.ts +1202 -0
- package/dist/object.d.ts.map +1 -0
- package/dist/object.js +2731 -0
- package/dist/object.js.map +1 -0
- package/dist/polymorphic-association.d.ts +69 -0
- package/dist/polymorphic-association.d.ts.map +1 -0
- package/dist/polymorphic-association.js +96 -0
- package/dist/polymorphic-association.js.map +1 -0
- package/dist/prebuild/cli.d.ts +7 -0
- package/dist/prebuild/cli.d.ts.map +1 -0
- package/dist/prebuild/cli.js +29 -0
- package/dist/prebuild/cli.js.map +1 -0
- package/dist/prebuild/index.d.ts +22 -0
- package/dist/prebuild/index.d.ts.map +1 -0
- package/dist/prebuild/index.js +239 -0
- package/dist/prebuild/index.js.map +1 -0
- package/dist/prebuild.d.ts +8 -0
- package/dist/prebuild.d.ts.map +1 -0
- package/dist/prebuild.js +6 -0
- package/dist/prebuild.js.map +1 -0
- package/dist/registry/cache-config.d.ts +13 -0
- package/dist/registry/cache-config.d.ts.map +1 -0
- package/dist/registry/cache-config.js +17 -0
- package/dist/registry/cache-config.js.map +1 -0
- package/dist/registry/class-registration.d.ts +31 -0
- package/dist/registry/class-registration.d.ts.map +1 -0
- package/dist/registry/class-registration.js +1074 -0
- package/dist/registry/class-registration.js.map +1 -0
- package/dist/registry/collection-resolution.d.ts +45 -0
- package/dist/registry/collection-resolution.d.ts.map +1 -0
- package/dist/registry/collection-resolution.js +121 -0
- package/dist/registry/collection-resolution.js.map +1 -0
- package/dist/registry/collision-policy.d.ts +179 -0
- package/dist/registry/collision-policy.d.ts.map +1 -0
- package/dist/registry/collision-policy.js +153 -0
- package/dist/registry/collision-policy.js.map +1 -0
- package/dist/registry/diagnostics.d.ts +58 -0
- package/dist/registry/diagnostics.d.ts.map +1 -0
- package/dist/registry/diagnostics.js +54 -0
- package/dist/registry/diagnostics.js.map +1 -0
- package/dist/registry/embedding-manager.d.ts +23 -0
- package/dist/registry/embedding-manager.d.ts.map +1 -0
- package/dist/registry/embedding-manager.js +62 -0
- package/dist/registry/embedding-manager.js.map +1 -0
- package/dist/registry/index.d.ts +13 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/inheritance-resolver.d.ts +13 -0
- package/dist/registry/inheritance-resolver.d.ts.map +1 -0
- package/dist/registry/inheritance-resolver.js +244 -0
- package/dist/registry/inheritance-resolver.js.map +1 -0
- package/dist/registry/manifest-field-merge.d.ts +4 -0
- package/dist/registry/manifest-field-merge.d.ts.map +1 -0
- package/dist/registry/manifest-field-merge.js +82 -0
- package/dist/registry/manifest-field-merge.js.map +1 -0
- package/dist/registry/name-resolver.d.ts +102 -0
- package/dist/registry/name-resolver.d.ts.map +1 -0
- package/dist/registry/name-resolver.js +241 -0
- package/dist/registry/name-resolver.js.map +1 -0
- package/dist/registry/relationship-graph.d.ts +16 -0
- package/dist/registry/relationship-graph.d.ts.map +1 -0
- package/dist/registry/relationship-graph.js +79 -0
- package/dist/registry/relationship-graph.js.map +1 -0
- package/dist/registry/schema-builder.d.ts +113 -0
- package/dist/registry/schema-builder.d.ts.map +1 -0
- package/dist/registry/schema-builder.js +474 -0
- package/dist/registry/schema-builder.js.map +1 -0
- package/dist/registry/shared-state.d.ts +62 -0
- package/dist/registry/shared-state.d.ts.map +1 -0
- package/dist/registry/shared-state.js +135 -0
- package/dist/registry/shared-state.js.map +1 -0
- package/dist/registry/types.d.ts +667 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/validator.d.ts +13 -0
- package/dist/registry/validator.d.ts.map +1 -0
- package/dist/registry/validator.js +138 -0
- package/dist/registry/validator.js.map +1 -0
- package/dist/registry.d.ts +1358 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +2301 -0
- package/dist/registry.js.map +1 -0
- package/dist/runtime/client.d.ts +34 -0
- package/dist/runtime/client.d.ts.map +1 -0
- package/dist/runtime/client.js +104 -0
- package/dist/runtime/client.js.map +1 -0
- package/dist/runtime/index.d.ts +10 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/mcp.d.ts +47 -0
- package/dist/runtime/mcp.d.ts.map +1 -0
- package/dist/runtime/mcp.js +72 -0
- package/dist/runtime/mcp.js.map +1 -0
- package/dist/runtime/server.d.ts +92 -0
- package/dist/runtime/server.d.ts.map +1 -0
- package/dist/runtime/server.js +390 -0
- package/dist/runtime/server.js.map +1 -0
- package/dist/runtime/types.d.ts +58 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime.d.ts +8 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +10 -0
- package/dist/runtime.js.map +1 -0
- package/dist/scanner/import-scanner.d.ts +7 -0
- package/dist/scanner/import-scanner.d.ts.map +1 -0
- package/dist/scanner/index.d.ts +12 -0
- package/dist/scanner/index.d.ts.map +1 -0
- package/dist/scanner/manifest-generator.d.ts +304 -0
- package/dist/scanner/manifest-generator.d.ts.map +1 -0
- package/dist/scanner/manifest-generator.js +1707 -0
- package/dist/scanner/manifest-generator.js.map +1 -0
- package/dist/scanner/test-file-patterns.d.ts +18 -0
- package/dist/scanner/test-file-patterns.d.ts.map +1 -0
- package/dist/scanner/test-file-patterns.js +16 -0
- package/dist/scanner/test-file-patterns.js.map +1 -0
- package/dist/scanner/types.d.ts +313 -0
- package/dist/scanner/types.d.ts.map +1 -0
- package/dist/scanner/types.js +2 -0
- package/dist/scanner/types.js.map +1 -0
- package/dist/scanner.d.ts +6 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +6 -0
- package/dist/scanner.js.map +1 -0
- package/dist/schema/code-generator.d.ts +53 -0
- package/dist/schema/code-generator.d.ts.map +1 -0
- package/dist/schema/ddl/base-strategy.d.ts +80 -0
- package/dist/schema/ddl/base-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/base-strategy.js +240 -0
- package/dist/schema/ddl/base-strategy.js.map +1 -0
- package/dist/schema/ddl/duckdb-strategy.d.ts +33 -0
- package/dist/schema/ddl/duckdb-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/duckdb-strategy.js +74 -0
- package/dist/schema/ddl/duckdb-strategy.js.map +1 -0
- package/dist/schema/ddl/index.d.ts +53 -0
- package/dist/schema/ddl/index.d.ts.map +1 -0
- package/dist/schema/ddl/index.js +80 -0
- package/dist/schema/ddl/index.js.map +1 -0
- package/dist/schema/ddl/json-duckdb-strategy.d.ts +8 -0
- package/dist/schema/ddl/json-duckdb-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/json-duckdb-strategy.js +14 -0
- package/dist/schema/ddl/json-duckdb-strategy.js.map +1 -0
- package/dist/schema/ddl/postgres-strategy.d.ts +29 -0
- package/dist/schema/ddl/postgres-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/postgres-strategy.js +102 -0
- package/dist/schema/ddl/postgres-strategy.js.map +1 -0
- package/dist/schema/ddl/sqlite-strategy.d.ts +38 -0
- package/dist/schema/ddl/sqlite-strategy.d.ts.map +1 -0
- package/dist/schema/ddl/sqlite-strategy.js +74 -0
- package/dist/schema/ddl/sqlite-strategy.js.map +1 -0
- package/dist/schema/ddl/types.d.ts +114 -0
- package/dist/schema/ddl/types.d.ts.map +1 -0
- package/dist/schema/generator.d.ts +176 -0
- package/dist/schema/generator.d.ts.map +1 -0
- package/dist/schema/generator.js +1076 -0
- package/dist/schema/generator.js.map +1 -0
- package/dist/schema/index-utils.d.ts +19 -0
- package/dist/schema/index-utils.d.ts.map +1 -0
- package/dist/schema/index-utils.js +32 -0
- package/dist/schema/index-utils.js.map +1 -0
- package/dist/schema/index.d.ts +13 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/override-system.d.ts +43 -0
- package/dist/schema/override-system.d.ts.map +1 -0
- package/dist/schema/schema-aggregator.d.ts +112 -0
- package/dist/schema/schema-aggregator.d.ts.map +1 -0
- package/dist/schema/schema-manager.d.ts +95 -0
- package/dist/schema/schema-manager.d.ts.map +1 -0
- package/dist/schema/schema-manager.js +283 -0
- package/dist/schema/schema-manager.js.map +1 -0
- package/dist/schema/sql-identifiers.d.ts +107 -0
- package/dist/schema/sql-identifiers.d.ts.map +1 -0
- package/dist/schema/sql-identifiers.js +190 -0
- package/dist/schema/sql-identifiers.js.map +1 -0
- package/dist/schema/table-verifier.d.ts +10 -0
- package/dist/schema/table-verifier.d.ts.map +1 -0
- package/dist/schema/table-verifier.js +37 -0
- package/dist/schema/table-verifier.js.map +1 -0
- package/dist/schema/types.d.ts +241 -0
- package/dist/schema/types.d.ts.map +1 -0
- package/dist/schema/utils.d.ts +32 -0
- package/dist/schema/utils.d.ts.map +1 -0
- package/dist/schema/utils.js +134 -0
- package/dist/schema/utils.js.map +1 -0
- package/dist/scripts/create-wrappers.js +89 -0
- package/dist/scripts/generate-manifest.js +155 -0
- package/dist/scripts/generate-test-manifest.js +77 -0
- package/dist/scripts/migrate-datetime-to-timestamp.ts +310 -0
- package/dist/scripts/prepack.js +49 -0
- package/dist/signals/bus.d.ts +64 -0
- package/dist/signals/bus.d.ts.map +1 -0
- package/dist/signals/bus.js +102 -0
- package/dist/signals/bus.js.map +1 -0
- package/dist/signals/index.d.ts +11 -0
- package/dist/signals/index.d.ts.map +1 -0
- package/dist/signals/sanitizer.d.ts +54 -0
- package/dist/signals/sanitizer.d.ts.map +1 -0
- package/dist/signals/sanitizer.js +111 -0
- package/dist/signals/sanitizer.js.map +1 -0
- package/dist/smrt-knowledge.json +335 -0
- package/dist/system/compatibility.d.ts +8 -0
- package/dist/system/compatibility.d.ts.map +1 -0
- package/dist/system/compatibility.js +409 -0
- package/dist/system/compatibility.js.map +1 -0
- package/dist/system/index.d.ts +9 -0
- package/dist/system/index.d.ts.map +1 -0
- package/dist/system/schema.d.ts +69 -0
- package/dist/system/schema.d.ts.map +1 -0
- package/dist/system/schema.js +271 -0
- package/dist/system/schema.js.map +1 -0
- package/dist/system/types.d.ts +135 -0
- package/dist/system/types.d.ts.map +1 -0
- package/dist/system-fields.d.ts +44 -0
- package/dist/system-fields.d.ts.map +1 -0
- package/dist/system-fields.js +55 -0
- package/dist/system-fields.js.map +1 -0
- package/dist/table-cache.d.ts +28 -0
- package/dist/table-cache.d.ts.map +1 -0
- package/dist/table-cache.js +21 -0
- package/dist/table-cache.js.map +1 -0
- package/dist/test-utils.d.ts +140 -0
- package/dist/test-utils.d.ts.map +1 -0
- package/dist/testing/database.d.ts +73 -0
- package/dist/testing/database.d.ts.map +1 -0
- package/dist/testing/database.js +204 -0
- package/dist/testing/database.js.map +1 -0
- package/dist/testing/index.d.ts +21 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing.d.ts +6 -0
- package/dist/testing.d.ts.map +1 -0
- package/dist/testing.js +5 -0
- package/dist/testing.js.map +1 -0
- package/dist/tools/index.d.ts +8 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/tool-executor.d.ts +101 -0
- package/dist/tools/tool-executor.d.ts.map +1 -0
- package/dist/tools/tool-executor.js +142 -0
- package/dist/tools/tool-executor.js.map +1 -0
- package/dist/tools/tool-generator.d.ts +54 -0
- package/dist/tools/tool-generator.d.ts.map +1 -0
- package/dist/tools/tool-generator.js +121 -0
- package/dist/tools/tool-generator.js.map +1 -0
- package/dist/utils/chunk.d.ts +32 -0
- package/dist/utils/chunk.d.ts.map +1 -0
- package/dist/utils/chunk.js +14 -0
- package/dist/utils/chunk.js.map +1 -0
- package/dist/utils/import-workspace-module.d.ts +8 -0
- package/dist/utils/import-workspace-module.d.ts.map +1 -0
- package/dist/utils/import-workspace-module.js +81 -0
- package/dist/utils/import-workspace-module.js.map +1 -0
- package/dist/utils/json.d.ts +102 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +43 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/lru-cache.d.ts +69 -0
- package/dist/utils/lru-cache.d.ts.map +1 -0
- package/dist/utils/lru-cache.js +100 -0
- package/dist/utils/lru-cache.js.map +1 -0
- package/dist/utils/naming.d.ts +16 -0
- package/dist/utils/naming.d.ts.map +1 -0
- package/dist/utils/naming.js +23 -0
- package/dist/utils/naming.js.map +1 -0
- package/dist/utils/qualified-names.d.ts +122 -0
- package/dist/utils/qualified-names.d.ts.map +1 -0
- package/dist/utils/qualified-names.js +82 -0
- package/dist/utils/qualified-names.js.map +1 -0
- package/dist/utils/scanner-module.d.ts +37 -0
- package/dist/utils/scanner-module.d.ts.map +1 -0
- package/dist/utils.d.ts +177 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +185 -0
- package/dist/utils.js.map +1 -0
- package/dist/vite-plugin/import-build-aware.d.ts +68 -0
- package/dist/vite-plugin/import-build-aware.d.ts.map +1 -0
- package/dist/vite-plugin/import-build-aware.js +72 -0
- package/dist/vite-plugin/import-build-aware.js.map +1 -0
- package/dist/vite-plugin/index.d.ts +59 -0
- package/dist/vite-plugin/index.d.ts.map +1 -0
- package/dist/vite-plugin/index.js +1400 -0
- package/dist/vite-plugin/index.js.map +1 -0
- package/dist/vite-plugin/sveltekit-generator.d.ts +66 -0
- package/dist/vite-plugin/sveltekit-generator.d.ts.map +1 -0
- package/dist/vite-plugin/sveltekit-generator.js +1375 -0
- package/dist/vite-plugin/sveltekit-generator.js.map +1 -0
- package/dist/vite-plugin/templates/default-ui.ts +432 -0
- package/dist/vite-plugin/templates/default.html +206 -0
- package/dist/vite-plugin.d.ts +8 -0
- package/dist/vite-plugin.d.ts.map +1 -0
- package/dist/vite-plugin.js +11 -0
- package/dist/vite-plugin.js.map +1 -0
- package/package.json +208 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive test utilities for SMRT framework testing
|
|
3
|
+
*
|
|
4
|
+
* Provides unified mocking for collections, objects, and database operations
|
|
5
|
+
* to support both CLI and API generator testing scenarios.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Snapshot ObjectRegistry state and return a restore function for manifest-heavy
|
|
9
|
+
* tests that mutate registry internals at runtime.
|
|
10
|
+
*/
|
|
11
|
+
export declare function snapshotObjectRegistryState(): () => void;
|
|
12
|
+
/**
|
|
13
|
+
* Mock object instance with all required lifecycle methods
|
|
14
|
+
*/
|
|
15
|
+
export interface MockObject {
|
|
16
|
+
id: string;
|
|
17
|
+
slug?: string;
|
|
18
|
+
created_at?: string;
|
|
19
|
+
updated_at?: string;
|
|
20
|
+
[key: string]: any;
|
|
21
|
+
save: () => Promise<MockObject>;
|
|
22
|
+
delete: () => Promise<void>;
|
|
23
|
+
initialize: () => Promise<void>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Mock collection with all CRUD operations
|
|
27
|
+
*/
|
|
28
|
+
export interface MockCollection {
|
|
29
|
+
list: (options?: any) => Promise<MockObject[]>;
|
|
30
|
+
get: (id: string) => Promise<MockObject | null>;
|
|
31
|
+
create: (data: any) => Promise<MockObject>;
|
|
32
|
+
update: (id: string, data: any) => Promise<MockObject>;
|
|
33
|
+
delete: (id: string) => Promise<void>;
|
|
34
|
+
initialize: () => Promise<void>;
|
|
35
|
+
save: (object: MockObject) => Promise<MockObject>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Test data factory for generating consistent mock data
|
|
39
|
+
*/
|
|
40
|
+
export declare class TestDataFactory {
|
|
41
|
+
private static idCounter;
|
|
42
|
+
static generateId(): string;
|
|
43
|
+
static generateTestUser(overrides?: Partial<MockObject>): MockObject;
|
|
44
|
+
static generateTestProduct(overrides?: Partial<MockObject>): MockObject;
|
|
45
|
+
/**
|
|
46
|
+
* Generate multiple test objects
|
|
47
|
+
*/
|
|
48
|
+
static generateMultiple<T extends MockObject>(generator: (overrides?: Partial<T>) => T, count: number, overrides?: Partial<T>): T[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Mock collection factory with comprehensive CRUD support
|
|
52
|
+
*/
|
|
53
|
+
export declare class MockCollectionFactory {
|
|
54
|
+
private storage;
|
|
55
|
+
/**
|
|
56
|
+
* Create a mock collection with realistic behavior
|
|
57
|
+
*/
|
|
58
|
+
createMockCollection(objectType?: 'user' | 'product'): MockCollection;
|
|
59
|
+
/**
|
|
60
|
+
* Clear all mock data
|
|
61
|
+
*/
|
|
62
|
+
clear(): void;
|
|
63
|
+
/**
|
|
64
|
+
* Get current storage for inspection
|
|
65
|
+
*/
|
|
66
|
+
getStorage(): Map<string, MockObject>;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Complete mock context factory for CLI and API testing
|
|
70
|
+
*/
|
|
71
|
+
export declare class MockContextFactory {
|
|
72
|
+
private collectionFactory;
|
|
73
|
+
/**
|
|
74
|
+
* Create a comprehensive mock context with database and AI
|
|
75
|
+
*/
|
|
76
|
+
createMockContext(overrides?: any): any;
|
|
77
|
+
/**
|
|
78
|
+
* Create mock collections for testing
|
|
79
|
+
*/
|
|
80
|
+
createMockCollections(): {
|
|
81
|
+
TestUser: MockCollection;
|
|
82
|
+
TestProduct: MockCollection;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Clear all mock data
|
|
86
|
+
*/
|
|
87
|
+
clear(): void;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Enhanced test setup utilities
|
|
91
|
+
*/
|
|
92
|
+
export declare class TestSetup {
|
|
93
|
+
private static mockFactory;
|
|
94
|
+
/**
|
|
95
|
+
* Set up complete test environment
|
|
96
|
+
*/
|
|
97
|
+
static setupTestEnvironment(): {
|
|
98
|
+
mockContext: any;
|
|
99
|
+
mockCollections: {
|
|
100
|
+
TestUser: MockCollection;
|
|
101
|
+
TestProduct: MockCollection;
|
|
102
|
+
};
|
|
103
|
+
cleanup: () => void;
|
|
104
|
+
};
|
|
105
|
+
/**
|
|
106
|
+
* Mock collection constructor to return mock instances
|
|
107
|
+
*/
|
|
108
|
+
static mockCollectionConstructors(mockCollections: any): any;
|
|
109
|
+
/**
|
|
110
|
+
* Create realistic database query responses
|
|
111
|
+
*/
|
|
112
|
+
static createDatabaseResponses(objectType?: 'user' | 'product'): {
|
|
113
|
+
list: {
|
|
114
|
+
rows: MockObject[];
|
|
115
|
+
};
|
|
116
|
+
get: {
|
|
117
|
+
rows: MockObject[];
|
|
118
|
+
};
|
|
119
|
+
create: {
|
|
120
|
+
rows: MockObject[];
|
|
121
|
+
};
|
|
122
|
+
update: {
|
|
123
|
+
rows: MockObject[];
|
|
124
|
+
};
|
|
125
|
+
delete: {
|
|
126
|
+
rows: never[];
|
|
127
|
+
};
|
|
128
|
+
empty: {
|
|
129
|
+
rows: never[];
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Export commonly used mock instances for convenience
|
|
135
|
+
*/
|
|
136
|
+
export declare const mockContextFactory: MockContextFactory;
|
|
137
|
+
export declare const testDataFactory: typeof TestDataFactory;
|
|
138
|
+
export declare const mockCollectionFactory: MockCollectionFactory;
|
|
139
|
+
export declare const testSetup: typeof TestSetup;
|
|
140
|
+
//# sourceMappingURL=test-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { DatabaseInterface } from '@happyvertical/sql';
|
|
2
|
+
/**
|
|
3
|
+
* Options for creating a test database
|
|
4
|
+
*/
|
|
5
|
+
export interface TestDatabaseOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Database type (default: 'sqlite')
|
|
8
|
+
* - 'sqlite': SQLite database
|
|
9
|
+
* - 'json': JSON adapter (stores data as JSON files with DuckDB for querying)
|
|
10
|
+
*/
|
|
11
|
+
type?: 'sqlite' | 'json';
|
|
12
|
+
/**
|
|
13
|
+
* Database URL (default: ':memory:')
|
|
14
|
+
* Use ':memory:' for in-memory databases (fastest for tests)
|
|
15
|
+
* Or provide a file path for persistent test databases
|
|
16
|
+
*/
|
|
17
|
+
url?: string;
|
|
18
|
+
/**
|
|
19
|
+
* Pre-existing database to initialize schemas in.
|
|
20
|
+
* If provided, `type` and `url` are ignored.
|
|
21
|
+
*/
|
|
22
|
+
db?: DatabaseInterface;
|
|
23
|
+
/**
|
|
24
|
+
* Specific classes to setup schemas for.
|
|
25
|
+
* If not provided, sets up schemas for all registered classes.
|
|
26
|
+
*/
|
|
27
|
+
classes?: string[];
|
|
28
|
+
/**
|
|
29
|
+
* Whether to include system tables (default: true)
|
|
30
|
+
* System tables include _smrt_contexts, _smrt_migrations, etc.
|
|
31
|
+
*/
|
|
32
|
+
includeSystemTables?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Creates an in-memory test database with schemas pre-created
|
|
36
|
+
*
|
|
37
|
+
* This utility is designed for testing. It creates an in-memory database
|
|
38
|
+
* and initializes all registered SMRT object schemas using the **same
|
|
39
|
+
* schema generation logic** as the production migration system.
|
|
40
|
+
*
|
|
41
|
+
* **Key features:**
|
|
42
|
+
* - Uses `SchemaGenerator.generateSQL()` - the single source of truth for DDL
|
|
43
|
+
* - Handles STI (Single Table Inheritance) correctly
|
|
44
|
+
* - Creates system tables for framework functionality
|
|
45
|
+
* - Safe for parallel test execution (each call creates isolated instance)
|
|
46
|
+
*
|
|
47
|
+
* @param options - Configuration options
|
|
48
|
+
* @returns Promise resolving to configured DatabaseInterface
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* // Basic usage - all registered schemas
|
|
53
|
+
* const db = await getTestDatabase();
|
|
54
|
+
*
|
|
55
|
+
* // Specific classes only
|
|
56
|
+
* const db = await getTestDatabase({ classes: ['Council', 'Meeting'] });
|
|
57
|
+
*
|
|
58
|
+
* // JSON adapter instead of SQLite
|
|
59
|
+
* const db = await getTestDatabase({ type: 'json' });
|
|
60
|
+
*
|
|
61
|
+
* // File-based database for persistent tests
|
|
62
|
+
* const db = await getTestDatabase({ type: 'sqlite', url: '/tmp/test.db' });
|
|
63
|
+
*
|
|
64
|
+
* // Initialize schemas in an existing database
|
|
65
|
+
* const myDb = await getDatabase({ type: 'sqlite', url: ':memory:' });
|
|
66
|
+
* await getTestDatabase({ db: myDb });
|
|
67
|
+
*
|
|
68
|
+
* // Skip system tables (rare use case)
|
|
69
|
+
* const db = await getTestDatabase({ includeSystemTables: false });
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export declare function getTestDatabase(options?: TestDatabaseOptions): Promise<DatabaseInterface>;
|
|
73
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/testing/database.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAgJ5D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAEzB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb;;;OAGG;IACH,EAAE,CAAC,EAAE,iBAAiB,CAAC;IAEvB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAuCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,eAAe,CACnC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAqH5B"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { getDatabase } from "@happyvertical/sql";
|
|
2
|
+
import { isCollectionRegistration, resolveCollectionItemClassName, resolveRelatedRegistration } from "../registry/collection-resolution.js";
|
|
3
|
+
import { ObjectRegistry } from "../registry.js";
|
|
4
|
+
import { SchemaGenerator } from "../schema/generator.js";
|
|
5
|
+
import { ensureLegacySystemTableCompatibility } from "../system/compatibility.js";
|
|
6
|
+
import { ALL_SYSTEM_TABLES } from "../system/schema.js";
|
|
7
|
+
function resolveSTIBaseRegistration(className, stiBaseName) {
|
|
8
|
+
const registered = ObjectRegistry.getClass(className);
|
|
9
|
+
if (stiBaseName.includes(":")) {
|
|
10
|
+
return ObjectRegistry.getClass(stiBaseName);
|
|
11
|
+
}
|
|
12
|
+
if (registered?.packageName) {
|
|
13
|
+
const samePackageBase = ObjectRegistry.getClassInPackage(
|
|
14
|
+
registered.packageName,
|
|
15
|
+
stiBaseName
|
|
16
|
+
);
|
|
17
|
+
if (samePackageBase) {
|
|
18
|
+
return samePackageBase;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return ObjectRegistry.getClass(stiBaseName);
|
|
22
|
+
}
|
|
23
|
+
function resolveSTIBaseLookupName(className, stiBaseName) {
|
|
24
|
+
const stiBase = resolveSTIBaseRegistration(className, stiBaseName);
|
|
25
|
+
return stiBase?.qualifiedName || stiBase?.name || stiBaseName;
|
|
26
|
+
}
|
|
27
|
+
function isSTIChild(className) {
|
|
28
|
+
const stiBaseName = ObjectRegistry.getSTIBase(className);
|
|
29
|
+
if (!stiBaseName) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
const registered = ObjectRegistry.getClass(className);
|
|
33
|
+
const stiBase = resolveSTIBaseRegistration(className, stiBaseName);
|
|
34
|
+
if (registered && stiBase) {
|
|
35
|
+
return registered !== stiBase;
|
|
36
|
+
}
|
|
37
|
+
return stiBaseName !== className;
|
|
38
|
+
}
|
|
39
|
+
const collectionRegistrationLookup = {
|
|
40
|
+
findClass: (className) => ObjectRegistry.getClass(className),
|
|
41
|
+
findClassInPackage: (packageName, className) => ObjectRegistry.getClassInPackage(packageName, className),
|
|
42
|
+
getInheritanceChain: (className) => ObjectRegistry.getInheritanceChain(className)
|
|
43
|
+
};
|
|
44
|
+
function resolveCollectionSchemaClassName(className, registered) {
|
|
45
|
+
const itemClassName = resolveCollectionItemClassName(
|
|
46
|
+
className,
|
|
47
|
+
registered,
|
|
48
|
+
collectionRegistrationLookup
|
|
49
|
+
);
|
|
50
|
+
if (itemClassName) {
|
|
51
|
+
const itemRegistration = resolveRelatedRegistration(
|
|
52
|
+
itemClassName,
|
|
53
|
+
registered,
|
|
54
|
+
collectionRegistrationLookup
|
|
55
|
+
);
|
|
56
|
+
const itemLookupName = itemRegistration?.qualifiedName || itemRegistration?.name || itemClassName;
|
|
57
|
+
const stiBase = ObjectRegistry.getSTIBase(itemLookupName);
|
|
58
|
+
return stiBase ? resolveSTIBaseLookupName(itemLookupName, stiBase) : itemLookupName;
|
|
59
|
+
}
|
|
60
|
+
const tableName = registered.schema?.tableName || registered.config.tableName || ObjectRegistry.getTableName(className);
|
|
61
|
+
if (!tableName) {
|
|
62
|
+
return className;
|
|
63
|
+
}
|
|
64
|
+
const collectionPackage = registered.packageName;
|
|
65
|
+
for (const candidate of ObjectRegistry.getAllClasses().values()) {
|
|
66
|
+
if (candidate === registered || isCollectionRegistration(
|
|
67
|
+
candidate.qualifiedName || candidate.name,
|
|
68
|
+
candidate,
|
|
69
|
+
collectionRegistrationLookup
|
|
70
|
+
)) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
const candidateTableName = candidate.schema?.tableName || candidate.config.tableName;
|
|
74
|
+
if (candidateTableName !== tableName) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
if (collectionPackage && candidate.packageName && candidate.packageName !== collectionPackage) {
|
|
78
|
+
continue;
|
|
79
|
+
}
|
|
80
|
+
const candidateLookupName = candidate.qualifiedName || candidate.name;
|
|
81
|
+
const stiBase = ObjectRegistry.getSTIBase(candidateLookupName);
|
|
82
|
+
return stiBase ? resolveSTIBaseLookupName(candidateLookupName, stiBase) : candidateLookupName;
|
|
83
|
+
}
|
|
84
|
+
return className;
|
|
85
|
+
}
|
|
86
|
+
function resolveRequestedSchemaClassName(className) {
|
|
87
|
+
const registered = ObjectRegistry.getClass(className);
|
|
88
|
+
if (!registered) {
|
|
89
|
+
return className;
|
|
90
|
+
}
|
|
91
|
+
if (!isCollectionRegistration(
|
|
92
|
+
className,
|
|
93
|
+
registered,
|
|
94
|
+
collectionRegistrationLookup
|
|
95
|
+
)) {
|
|
96
|
+
const stiBase = ObjectRegistry.getSTIBase(className);
|
|
97
|
+
return stiBase ? resolveSTIBaseLookupName(className, stiBase) : className;
|
|
98
|
+
}
|
|
99
|
+
return resolveCollectionSchemaClassName(className, registered);
|
|
100
|
+
}
|
|
101
|
+
function resolveRequestedSchemaClassNames(classNames) {
|
|
102
|
+
const resolved = [];
|
|
103
|
+
const seen = /* @__PURE__ */ new Set();
|
|
104
|
+
for (const className of classNames) {
|
|
105
|
+
const schemaClassName = resolveRequestedSchemaClassName(className);
|
|
106
|
+
if (seen.has(schemaClassName)) {
|
|
107
|
+
continue;
|
|
108
|
+
}
|
|
109
|
+
seen.add(schemaClassName);
|
|
110
|
+
resolved.push(schemaClassName);
|
|
111
|
+
}
|
|
112
|
+
return resolved;
|
|
113
|
+
}
|
|
114
|
+
async function getTestDatabase(options = {}) {
|
|
115
|
+
const {
|
|
116
|
+
type = "sqlite",
|
|
117
|
+
url = ":memory:",
|
|
118
|
+
db: existingDb,
|
|
119
|
+
classes,
|
|
120
|
+
includeSystemTables = true
|
|
121
|
+
} = options;
|
|
122
|
+
const db = existingDb ?? await getDatabase({
|
|
123
|
+
type,
|
|
124
|
+
url,
|
|
125
|
+
__smrtSkipVitestSchemaPreparation: true
|
|
126
|
+
});
|
|
127
|
+
if (includeSystemTables) {
|
|
128
|
+
await initializeSystemTables(db);
|
|
129
|
+
}
|
|
130
|
+
const classNames = resolveRequestedSchemaClassNames(
|
|
131
|
+
classes ?? ObjectRegistry.getQualifiedClassNames()
|
|
132
|
+
);
|
|
133
|
+
if (classNames.length === 0) {
|
|
134
|
+
return db;
|
|
135
|
+
}
|
|
136
|
+
const schemaGenerator = new SchemaGenerator();
|
|
137
|
+
const ddlEngine = type === "json" || typeof db.exportTable === "function" ? "json" : "sqlite";
|
|
138
|
+
const createdTables = /* @__PURE__ */ new Set();
|
|
139
|
+
for (const className of classNames) {
|
|
140
|
+
const registered = ObjectRegistry.getClass(className);
|
|
141
|
+
if (isSTIChild(className)) {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const tableName = ObjectRegistry.getTableName(className);
|
|
145
|
+
if (!tableName || createdTables.has(tableName)) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const fields = await ObjectRegistry.getAllFields(className);
|
|
149
|
+
const strategy = ObjectRegistry.getTableStrategy(className);
|
|
150
|
+
const runtimeSchemaConfig = {
|
|
151
|
+
conflictColumns: ObjectRegistry.getConflictColumns(className),
|
|
152
|
+
idType: registered?.config.idType,
|
|
153
|
+
registry: ObjectRegistry
|
|
154
|
+
};
|
|
155
|
+
const schema = strategy === "sti" ? await schemaGenerator.generateSTISchemaFromRegistry(
|
|
156
|
+
className,
|
|
157
|
+
tableName,
|
|
158
|
+
fields,
|
|
159
|
+
runtimeSchemaConfig
|
|
160
|
+
) : schemaGenerator.generateSchemaFromRegistry(
|
|
161
|
+
className,
|
|
162
|
+
tableName,
|
|
163
|
+
fields,
|
|
164
|
+
runtimeSchemaConfig
|
|
165
|
+
);
|
|
166
|
+
const ddl = schemaGenerator.generateSQL(schema, ddlEngine);
|
|
167
|
+
try {
|
|
168
|
+
await db.query(ddl);
|
|
169
|
+
createdTables.add(tableName);
|
|
170
|
+
const ddlStrategy = (await import("../schema/ddl/index.js")).getDDLStrategy(ddlEngine);
|
|
171
|
+
const indexStatements = ddlStrategy.generateIndexes(schema);
|
|
172
|
+
for (const indexSQL of indexStatements) {
|
|
173
|
+
try {
|
|
174
|
+
await db.query(indexSQL);
|
|
175
|
+
} catch (indexError) {
|
|
176
|
+
console.warn(
|
|
177
|
+
`[getTestDatabase] Warning: Failed to create index: ${indexError instanceof Error ? indexError.message : String(indexError)} (SQL: ${indexSQL})`
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
} catch (error) {
|
|
182
|
+
throw new Error(
|
|
183
|
+
`[getTestDatabase] Failed to create table '${tableName}' for class '${className}': ${error instanceof Error ? error.message : String(error)}`,
|
|
184
|
+
{ cause: error }
|
|
185
|
+
);
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
return db;
|
|
189
|
+
}
|
|
190
|
+
async function initializeSystemTables(db) {
|
|
191
|
+
await ensureLegacySystemTableCompatibility(db);
|
|
192
|
+
const allStatements = [];
|
|
193
|
+
for (const multiStatementSQL of ALL_SYSTEM_TABLES) {
|
|
194
|
+
const statements = multiStatementSQL.split(";").map((s) => s.trim()).filter((s) => s.length > 0);
|
|
195
|
+
allStatements.push(...statements);
|
|
196
|
+
}
|
|
197
|
+
for (const statement of allStatements) {
|
|
198
|
+
await db.query(statement);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
export {
|
|
202
|
+
getTestDatabase
|
|
203
|
+
};
|
|
204
|
+
//# sourceMappingURL=database.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.js","sources":["../../src/testing/database.ts"],"sourcesContent":["/**\n * Test database utilities for SMRT framework\n *\n * Provides `getTestDatabase()` which creates an in-memory database with all\n * registered SMRT object schemas. Uses the same schema generation logic as\n * the migration system to ensure consistency between test and production.\n *\n * @example\n * ```typescript\n * import { getTestDatabase } from '@happyvertical/smrt-core/testing';\n *\n * beforeEach(async () => {\n * const db = await getTestDatabase();\n * collection = await MyCollection.create({ db });\n * });\n * ```\n */\n\nimport type { DatabaseInterface } from '@happyvertical/sql';\nimport { getDatabase } from '@happyvertical/sql';\nimport {\n type CollectionRegistrationLookup,\n isCollectionRegistration,\n resolveCollectionItemClassName,\n resolveRelatedRegistration,\n} from '../registry/collection-resolution.js';\nimport { ObjectRegistry } from '../registry.js';\nimport { SchemaGenerator } from '../schema/generator.js';\nimport { ensureLegacySystemTableCompatibility } from '../system/compatibility.js';\nimport { ALL_SYSTEM_TABLES } from '../system/schema.js';\n\ntype TestDatabaseConnectionOptions = Parameters<typeof getDatabase>[0] & {\n __smrtSkipVitestSchemaPreparation?: boolean;\n};\n\nfunction resolveSTIBaseRegistration(className: string, stiBaseName: string) {\n const registered = ObjectRegistry.getClass(className);\n\n if (stiBaseName.includes(':')) {\n return ObjectRegistry.getClass(stiBaseName);\n }\n\n if (registered?.packageName) {\n const samePackageBase = ObjectRegistry.getClassInPackage(\n registered.packageName,\n stiBaseName,\n );\n if (samePackageBase) {\n return samePackageBase;\n }\n }\n\n return ObjectRegistry.getClass(stiBaseName);\n}\n\nfunction resolveSTIBaseLookupName(\n className: string,\n stiBaseName: string,\n): string {\n const stiBase = resolveSTIBaseRegistration(className, stiBaseName);\n return stiBase?.qualifiedName || stiBase?.name || stiBaseName;\n}\n\nfunction isSTIChild(className: string): boolean {\n const stiBaseName = ObjectRegistry.getSTIBase(className);\n if (!stiBaseName) {\n return false;\n }\n\n const registered = ObjectRegistry.getClass(className);\n const stiBase = resolveSTIBaseRegistration(className, stiBaseName);\n\n if (registered && stiBase) {\n return registered !== stiBase;\n }\n\n return stiBaseName !== className;\n}\n\ntype RegisteredSchemaClass = NonNullable<\n ReturnType<typeof ObjectRegistry.getClass>\n>;\n\nconst collectionRegistrationLookup: CollectionRegistrationLookup = {\n findClass: (className) => ObjectRegistry.getClass(className),\n findClassInPackage: (packageName, className) =>\n ObjectRegistry.getClassInPackage(packageName, className),\n getInheritanceChain: (className) =>\n ObjectRegistry.getInheritanceChain(className),\n};\n\nfunction resolveCollectionSchemaClassName(\n className: string,\n registered: RegisteredSchemaClass,\n): string {\n const itemClassName = resolveCollectionItemClassName(\n className,\n registered,\n collectionRegistrationLookup,\n );\n if (itemClassName) {\n const itemRegistration = resolveRelatedRegistration(\n itemClassName,\n registered,\n collectionRegistrationLookup,\n );\n const itemLookupName =\n itemRegistration?.qualifiedName ||\n itemRegistration?.name ||\n itemClassName;\n const stiBase = ObjectRegistry.getSTIBase(itemLookupName);\n return stiBase\n ? resolveSTIBaseLookupName(itemLookupName, stiBase)\n : itemLookupName;\n }\n\n const tableName =\n registered.schema?.tableName ||\n registered.config.tableName ||\n ObjectRegistry.getTableName(className);\n if (!tableName) {\n return className;\n }\n\n const collectionPackage = registered.packageName;\n\n for (const candidate of ObjectRegistry.getAllClasses().values()) {\n if (\n candidate === registered ||\n isCollectionRegistration(\n candidate.qualifiedName || candidate.name,\n candidate,\n collectionRegistrationLookup,\n )\n ) {\n continue;\n }\n\n const candidateTableName =\n candidate.schema?.tableName || candidate.config.tableName;\n if (candidateTableName !== tableName) {\n continue;\n }\n\n if (\n collectionPackage &&\n candidate.packageName &&\n candidate.packageName !== collectionPackage\n ) {\n continue;\n }\n\n const candidateLookupName = candidate.qualifiedName || candidate.name;\n const stiBase = ObjectRegistry.getSTIBase(candidateLookupName);\n return stiBase\n ? resolveSTIBaseLookupName(candidateLookupName, stiBase)\n : candidateLookupName;\n }\n\n return className;\n}\n\n/**\n * Options for creating a test database\n */\nexport interface TestDatabaseOptions {\n /**\n * Database type (default: 'sqlite')\n * - 'sqlite': SQLite database\n * - 'json': JSON adapter (stores data as JSON files with DuckDB for querying)\n */\n type?: 'sqlite' | 'json';\n\n /**\n * Database URL (default: ':memory:')\n * Use ':memory:' for in-memory databases (fastest for tests)\n * Or provide a file path for persistent test databases\n */\n url?: string;\n\n /**\n * Pre-existing database to initialize schemas in.\n * If provided, `type` and `url` are ignored.\n */\n db?: DatabaseInterface;\n\n /**\n * Specific classes to setup schemas for.\n * If not provided, sets up schemas for all registered classes.\n */\n classes?: string[];\n\n /**\n * Whether to include system tables (default: true)\n * System tables include _smrt_contexts, _smrt_migrations, etc.\n */\n includeSystemTables?: boolean;\n}\n\nfunction resolveRequestedSchemaClassName(className: string): string {\n const registered = ObjectRegistry.getClass(className);\n if (!registered) {\n return className;\n }\n\n if (\n !isCollectionRegistration(\n className,\n registered,\n collectionRegistrationLookup,\n )\n ) {\n const stiBase = ObjectRegistry.getSTIBase(className);\n return stiBase ? resolveSTIBaseLookupName(className, stiBase) : className;\n }\n\n return resolveCollectionSchemaClassName(className, registered);\n}\n\nfunction resolveRequestedSchemaClassNames(classNames: string[]): string[] {\n const resolved: string[] = [];\n const seen = new Set<string>();\n\n for (const className of classNames) {\n const schemaClassName = resolveRequestedSchemaClassName(className);\n if (seen.has(schemaClassName)) {\n continue;\n }\n\n seen.add(schemaClassName);\n resolved.push(schemaClassName);\n }\n\n return resolved;\n}\n\n/**\n * Creates an in-memory test database with schemas pre-created\n *\n * This utility is designed for testing. It creates an in-memory database\n * and initializes all registered SMRT object schemas using the **same\n * schema generation logic** as the production migration system.\n *\n * **Key features:**\n * - Uses `SchemaGenerator.generateSQL()` - the single source of truth for DDL\n * - Handles STI (Single Table Inheritance) correctly\n * - Creates system tables for framework functionality\n * - Safe for parallel test execution (each call creates isolated instance)\n *\n * @param options - Configuration options\n * @returns Promise resolving to configured DatabaseInterface\n *\n * @example\n * ```typescript\n * // Basic usage - all registered schemas\n * const db = await getTestDatabase();\n *\n * // Specific classes only\n * const db = await getTestDatabase({ classes: ['Council', 'Meeting'] });\n *\n * // JSON adapter instead of SQLite\n * const db = await getTestDatabase({ type: 'json' });\n *\n * // File-based database for persistent tests\n * const db = await getTestDatabase({ type: 'sqlite', url: '/tmp/test.db' });\n *\n * // Initialize schemas in an existing database\n * const myDb = await getDatabase({ type: 'sqlite', url: ':memory:' });\n * await getTestDatabase({ db: myDb });\n *\n * // Skip system tables (rare use case)\n * const db = await getTestDatabase({ includeSystemTables: false });\n * ```\n */\nexport async function getTestDatabase(\n options: TestDatabaseOptions = {},\n): Promise<DatabaseInterface> {\n const {\n type = 'sqlite',\n url = ':memory:',\n db: existingDb,\n classes,\n includeSystemTables = true,\n } = options;\n\n // Use existing database or create new one\n const db =\n existingDb ??\n (await getDatabase({\n type,\n url,\n __smrtSkipVitestSchemaPreparation: true,\n } as TestDatabaseConnectionOptions));\n\n // Initialize system tables (same as production)\n if (includeSystemTables) {\n await initializeSystemTables(db);\n }\n\n // Get class names to setup\n const classNames = resolveRequestedSchemaClassNames(\n classes ?? ObjectRegistry.getQualifiedClassNames(),\n );\n\n // Skip if no classes registered\n if (classNames.length === 0) {\n return db;\n }\n\n // Use the same schema generation as production\n const schemaGenerator = new SchemaGenerator();\n const ddlEngine =\n type === 'json' || typeof (db as any).exportTable === 'function'\n ? 'json'\n : 'sqlite';\n\n // Track created tables to avoid duplicates (STI base classes)\n const createdTables = new Set<string>();\n\n for (const className of classNames) {\n // R11: the registration carries idType (native uuid vs text); read it\n // below when building runtimeSchemaConfig.\n const registered = ObjectRegistry.getClass(className);\n // Skip STI children - their schema is part of the base class table.\n // main (#1324): isSTIChild() compares RegisteredClass *identity* rather\n // than raw strings, so it stays correct under R5-canon (getSTIBase returns\n // qualified names) while also handling collection/override registrations.\n if (isSTIChild(className)) {\n continue;\n }\n\n const tableName = ObjectRegistry.getTableName(className);\n if (!tableName || createdTables.has(tableName)) {\n continue;\n }\n\n const fields = await ObjectRegistry.getAllFields(className);\n const strategy = ObjectRegistry.getTableStrategy(className);\n const runtimeSchemaConfig = {\n conflictColumns: ObjectRegistry.getConflictColumns(className),\n idType: registered?.config.idType,\n registry: ObjectRegistry,\n };\n\n // Generate schema using SchemaGenerator (same as migrations)\n const schema =\n strategy === 'sti'\n ? await schemaGenerator.generateSTISchemaFromRegistry(\n className,\n tableName,\n fields,\n runtimeSchemaConfig,\n )\n : schemaGenerator.generateSchemaFromRegistry(\n className,\n tableName,\n fields,\n runtimeSchemaConfig,\n );\n\n // Generate DDL using generateSQL() - the single source of truth\n const ddl = schemaGenerator.generateSQL(schema, ddlEngine);\n\n try {\n await db.query(ddl);\n createdTables.add(tableName);\n\n // Create indexes (use DDL strategy so jsonPath / where / etc. render)\n const ddlStrategy = (\n await import('../schema/ddl/index.js')\n ).getDDLStrategy(ddlEngine);\n const indexStatements = ddlStrategy.generateIndexes(schema);\n for (const indexSQL of indexStatements) {\n try {\n await db.query(indexSQL);\n } catch (indexError) {\n // Log but don't fail on index creation errors\n // Some indexes may fail if columns don't exist (STI meta fields)\n console.warn(\n `[getTestDatabase] Warning: Failed to create index: ${indexError instanceof Error ? indexError.message : String(indexError)} (SQL: ${indexSQL})`,\n );\n }\n }\n } catch (error) {\n // Provide helpful error message for table creation failures\n throw new Error(\n `[getTestDatabase] Failed to create table '${tableName}' for class '${className}': ${error instanceof Error ? error.message : String(error)}`,\n { cause: error },\n );\n }\n }\n\n return db;\n}\n\n/**\n * Initialize SMRT system tables in a database\n *\n * System tables use _smrt_ prefix and store framework metadata.\n * All statements use `IF NOT EXISTS` for idempotency.\n *\n * @param db - Database interface to initialize\n */\nasync function initializeSystemTables(db: DatabaseInterface): Promise<void> {\n await ensureLegacySystemTableCompatibility(db);\n\n // Split multi-statement SQL into individual statements\n const allStatements: string[] = [];\n for (const multiStatementSQL of ALL_SYSTEM_TABLES) {\n const statements = multiStatementSQL\n .split(';')\n .map((s) => s.trim())\n .filter((s) => s.length > 0);\n allStatements.push(...statements);\n }\n\n // Use db.query() — system tables use CREATE TABLE/INDEX IF NOT EXISTS\n // which databases handle natively without per-column existence checks.\n for (const statement of allStatements) {\n await db.query(statement);\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SMRT Testing Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides utilities for testing SMRT objects in isolation.
|
|
5
|
+
* The main export is `getTestDatabase()` which creates an in-memory
|
|
6
|
+
* database with all registered schemas pre-created.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { getTestDatabase } from '@happyvertical/smrt-core/testing';
|
|
11
|
+
*
|
|
12
|
+
* beforeEach(async () => {
|
|
13
|
+
* const db = await getTestDatabase();
|
|
14
|
+
* collection = await MyCollection.create({ db });
|
|
15
|
+
* });
|
|
16
|
+
* ```
|
|
17
|
+
*
|
|
18
|
+
* @packageDocumentation
|
|
19
|
+
*/
|
|
20
|
+
export { getTestDatabase, type TestDatabaseOptions } from './database.js';
|
|
21
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,mBAAmB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,oBAAoB,CAAC"}
|
package/dist/testing.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testing.js","sources":[],"sourcesContent":[],"names":[],"mappings":";"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Function Calling Tools Module
|
|
3
|
+
*
|
|
4
|
+
* Public API for AI tool generation and execution
|
|
5
|
+
*/
|
|
6
|
+
export { executeToolCall, executeToolCalls, formatToolResults, type ToolCall, type ToolCallResult, validateToolCall, } from './tool-executor.js';
|
|
7
|
+
export { type AiConfig, convertTypeToJsonSchema, generateToolFromMethod, generateToolManifest, shouldIncludeMethod, } from './tool-generator.js';
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,KAAK,QAAQ,EACb,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { SignalBus } from '../signals/bus.js';
|
|
2
|
+
/**
|
|
3
|
+
* Tool call structure from AI response
|
|
4
|
+
*/
|
|
5
|
+
export interface ToolCall {
|
|
6
|
+
/**
|
|
7
|
+
* Unique identifier for this tool call
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
/**
|
|
11
|
+
* Type of tool (always 'function' for now)
|
|
12
|
+
*/
|
|
13
|
+
type: 'function';
|
|
14
|
+
/**
|
|
15
|
+
* Function details
|
|
16
|
+
*/
|
|
17
|
+
function: {
|
|
18
|
+
/**
|
|
19
|
+
* Name of the method to call
|
|
20
|
+
*/
|
|
21
|
+
name: string;
|
|
22
|
+
/**
|
|
23
|
+
* JSON string of arguments to pass to the method
|
|
24
|
+
*/
|
|
25
|
+
arguments: string;
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Result of executing a tool call
|
|
30
|
+
*/
|
|
31
|
+
export interface ToolCallResult {
|
|
32
|
+
/**
|
|
33
|
+
* Tool call ID for correlation
|
|
34
|
+
*/
|
|
35
|
+
id: string;
|
|
36
|
+
/**
|
|
37
|
+
* Method name that was called
|
|
38
|
+
*/
|
|
39
|
+
methodName: string;
|
|
40
|
+
/**
|
|
41
|
+
* Parsed arguments that were used
|
|
42
|
+
*/
|
|
43
|
+
arguments: Record<string, any>;
|
|
44
|
+
/**
|
|
45
|
+
* Result returned from the method
|
|
46
|
+
*/
|
|
47
|
+
result: any;
|
|
48
|
+
/**
|
|
49
|
+
* Whether the call succeeded
|
|
50
|
+
*/
|
|
51
|
+
success: boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Error message if call failed
|
|
54
|
+
*/
|
|
55
|
+
error?: string;
|
|
56
|
+
/**
|
|
57
|
+
* Execution time in milliseconds
|
|
58
|
+
*/
|
|
59
|
+
duration?: number;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Validates tool call arguments against method parameters
|
|
63
|
+
*
|
|
64
|
+
* @param methodName - Name of the method being called
|
|
65
|
+
* @param args - Parsed arguments from tool call
|
|
66
|
+
* @param allowedMethods - List of methods AI is allowed to call
|
|
67
|
+
* @throws ValidationError if method not allowed or arguments invalid
|
|
68
|
+
*/
|
|
69
|
+
export declare function validateToolCall(methodName: string, args: Record<string, any>, allowedMethods: string[]): void;
|
|
70
|
+
/**
|
|
71
|
+
* Executes a tool call on an object instance
|
|
72
|
+
*
|
|
73
|
+
* @param instance - Object instance to call method on
|
|
74
|
+
* @param toolCall - Tool call from AI
|
|
75
|
+
* @param allowedMethods - List of methods AI is allowed to call
|
|
76
|
+
* @param signalBus - Optional signal bus for emitting execution events
|
|
77
|
+
* @returns Result of the tool call execution
|
|
78
|
+
*/
|
|
79
|
+
export declare function executeToolCall(instance: any, toolCall: ToolCall, allowedMethods: string[], signalBus?: SignalBus): Promise<ToolCallResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Executes multiple tool calls in sequence
|
|
82
|
+
*
|
|
83
|
+
* @param instance - Object instance to call methods on
|
|
84
|
+
* @param toolCalls - Array of tool calls from AI
|
|
85
|
+
* @param allowedMethods - List of methods AI is allowed to call
|
|
86
|
+
* @param signalBus - Optional signal bus for emitting execution events
|
|
87
|
+
* @returns Array of tool call results
|
|
88
|
+
*/
|
|
89
|
+
export declare function executeToolCalls(instance: any, toolCalls: ToolCall[], allowedMethods: string[], signalBus?: SignalBus): Promise<ToolCallResult[]>;
|
|
90
|
+
/**
|
|
91
|
+
* Formats tool call results into messages for AI
|
|
92
|
+
*
|
|
93
|
+
* @param results - Tool call execution results
|
|
94
|
+
* @returns Array of tool response messages
|
|
95
|
+
*/
|
|
96
|
+
export declare function formatToolResults(results: ToolCallResult[]): Array<{
|
|
97
|
+
role: 'tool';
|
|
98
|
+
tool_call_id: string;
|
|
99
|
+
content: string;
|
|
100
|
+
}>;
|
|
101
|
+
//# sourceMappingURL=tool-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/tools/tool-executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAInD;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,IAAI,EAAE,UAAU,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE;QACR;;WAEG;QACH,IAAI,EAAE,MAAM,CAAC;QAEb;;WAEG;QACH,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAE/B;;OAEG;IACH,MAAM,EAAE,GAAG,CAAC;IAEZ;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,cAAc,EAAE,MAAM,EAAE,GACvB,IAAI,CAkBN;AAED;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,MAAM,EAAE,EACxB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,cAAc,CAAC,CA8GzB;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,GAAG,EACb,SAAS,EAAE,QAAQ,EAAE,EACrB,cAAc,EAAE,MAAM,EAAE,EACxB,SAAS,CAAC,EAAE,SAAS,GACpB,OAAO,CAAC,cAAc,EAAE,CAAC,CAoB3B;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EAAE,GACxB,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhE"}
|