@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,847 @@
|
|
|
1
|
+
import { readFileSync, existsSync, readdirSync } from "node:fs";
|
|
2
|
+
import { createRequire } from "node:module";
|
|
3
|
+
import { join, dirname } from "node:path";
|
|
4
|
+
import { createLogger } from "@happyvertical/logger";
|
|
5
|
+
import { ObjectRegistry } from "../registry.js";
|
|
6
|
+
import { parse } from "../utils/json.js";
|
|
7
|
+
import { isQualifiedName, parseQualifiedName, createQualifiedName } from "../utils/qualified-names.js";
|
|
8
|
+
import { ManifestManager } from "./manager.js";
|
|
9
|
+
import { getDefaultCompositeSource } from "./sources/composite.js";
|
|
10
|
+
import { getManifestCache, isTestEnvironment as isTestEnvironment$1, getLocalTestManifestCache as getLocalTestManifestCache$1, shouldLoadCoreTestManifest, getTestManifestCache as getTestManifestCache$1, getStaticManifestCache as getStaticManifestCache$1 } from "./store.js";
|
|
11
|
+
const getStaticManifestCache = getStaticManifestCache$1;
|
|
12
|
+
const getTestManifestCache = getTestManifestCache$1;
|
|
13
|
+
const getLocalTestManifestCache = getLocalTestManifestCache$1;
|
|
14
|
+
const getManifestCacheMap = getManifestCache;
|
|
15
|
+
function setStaticManifestCache(manifest) {
|
|
16
|
+
globalThis.__smrtManifestStatic = manifest;
|
|
17
|
+
}
|
|
18
|
+
function getStaticManifestLoadAttempted() {
|
|
19
|
+
return globalThis.__smrtManifestStaticLoadAttempted ?? false;
|
|
20
|
+
}
|
|
21
|
+
function setStaticManifestLoadAttempted(value) {
|
|
22
|
+
globalThis.__smrtManifestStaticLoadAttempted = value;
|
|
23
|
+
}
|
|
24
|
+
function setTestManifestCache(manifest) {
|
|
25
|
+
globalThis.__smrtManifestTest = manifest;
|
|
26
|
+
}
|
|
27
|
+
function getTestManifestLoadAttempted() {
|
|
28
|
+
return globalThis.__smrtManifestTestLoadAttempted ?? false;
|
|
29
|
+
}
|
|
30
|
+
function setTestManifestLoadAttempted(value) {
|
|
31
|
+
globalThis.__smrtManifestTestLoadAttempted = value;
|
|
32
|
+
}
|
|
33
|
+
function setLocalTestManifestCache(manifest) {
|
|
34
|
+
globalThis.__smrtManifestLocalTest = manifest;
|
|
35
|
+
}
|
|
36
|
+
function getManifestCollisionsMap() {
|
|
37
|
+
if (!globalThis.__smrtManifestCollisions) {
|
|
38
|
+
globalThis.__smrtManifestCollisions = /* @__PURE__ */ new Map();
|
|
39
|
+
}
|
|
40
|
+
return globalThis.__smrtManifestCollisions;
|
|
41
|
+
}
|
|
42
|
+
function getSTISiblingCache() {
|
|
43
|
+
if (!globalThis.__smrtSTISiblingCache) {
|
|
44
|
+
globalThis.__smrtSTISiblingCache = /* @__PURE__ */ new Map();
|
|
45
|
+
}
|
|
46
|
+
return globalThis.__smrtSTISiblingCache;
|
|
47
|
+
}
|
|
48
|
+
const require$1 = createRequire(import.meta.url);
|
|
49
|
+
const DEBUG_ENABLED = process.env.DEBUG_MANIFEST === "true" || process.env.DEBUG_MANIFEST === "1" || process.env.DEBUG?.includes("manifest") || false;
|
|
50
|
+
const logger = createLogger({
|
|
51
|
+
level: DEBUG_ENABLED || process.env.DEBUG_TEST_ENV ? "debug" : "info"
|
|
52
|
+
});
|
|
53
|
+
function debugLog(message) {
|
|
54
|
+
if (DEBUG_ENABLED) {
|
|
55
|
+
logger.debug(message);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
const classNameIndexCache = /* @__PURE__ */ new WeakMap();
|
|
59
|
+
function getClassNameIndex(manifest) {
|
|
60
|
+
let index = classNameIndexCache.get(manifest);
|
|
61
|
+
if (!index) {
|
|
62
|
+
index = /* @__PURE__ */ new Map();
|
|
63
|
+
for (const [key, entry] of Object.entries(manifest.objects)) {
|
|
64
|
+
const name = (entry.className || key).toLowerCase();
|
|
65
|
+
if (!index.has(name)) {
|
|
66
|
+
index.set(name, entry);
|
|
67
|
+
} else {
|
|
68
|
+
const existing = index.get(name);
|
|
69
|
+
const existingName = (existing.className || "").toLowerCase();
|
|
70
|
+
const newExtends = (entry.extends || "").toLowerCase();
|
|
71
|
+
const existingExtends = (existing.extends || "").toLowerCase();
|
|
72
|
+
if (newExtends && (newExtends === existingName || newExtends === name)) {
|
|
73
|
+
index.set(name, entry);
|
|
74
|
+
debugLog(
|
|
75
|
+
`Manifest className '${name}': child '${key}' replaces parent`
|
|
76
|
+
);
|
|
77
|
+
} else if (existingExtends && (existingExtends === (entry.className || key).toLowerCase() || existingExtends === name)) {
|
|
78
|
+
debugLog(
|
|
79
|
+
`Manifest className '${name}': keeping child, ignoring parent '${key}'`
|
|
80
|
+
);
|
|
81
|
+
} else {
|
|
82
|
+
debugLog(
|
|
83
|
+
`Manifest className collision for '${name}': keeping first, ignoring key '${key}'`
|
|
84
|
+
);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
classNameIndexCache.set(manifest, index);
|
|
89
|
+
}
|
|
90
|
+
return index;
|
|
91
|
+
}
|
|
92
|
+
function isTestEnvironment() {
|
|
93
|
+
const result = isTestEnvironment$1();
|
|
94
|
+
if (process.env.DEBUG_TEST_ENV) {
|
|
95
|
+
logger.debug("[manifest-loader] isTestEnvironment check", {
|
|
96
|
+
NODE_ENV: process.env.NODE_ENV,
|
|
97
|
+
VITEST: process.env.VITEST,
|
|
98
|
+
JEST_WORKER_ID: process.env.JEST_WORKER_ID,
|
|
99
|
+
result
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
return result;
|
|
103
|
+
}
|
|
104
|
+
function getStaticManifest() {
|
|
105
|
+
if (!getStaticManifestLoadAttempted()) {
|
|
106
|
+
setStaticManifestLoadAttempted(true);
|
|
107
|
+
try {
|
|
108
|
+
const imported = require$1("./static-manifest.js");
|
|
109
|
+
setStaticManifestCache(imported.staticManifest || imported.default);
|
|
110
|
+
} catch {
|
|
111
|
+
setStaticManifestCache({
|
|
112
|
+
version: "1.0.0",
|
|
113
|
+
timestamp: Date.now(),
|
|
114
|
+
objects: {},
|
|
115
|
+
packageName: "@happyvertical/smrt-core"
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return getStaticManifestCache();
|
|
120
|
+
}
|
|
121
|
+
function getTestManifest() {
|
|
122
|
+
if (!getTestManifestLoadAttempted()) {
|
|
123
|
+
setTestManifestLoadAttempted(true);
|
|
124
|
+
if (!shouldLoadCoreTestManifest()) {
|
|
125
|
+
if (process.env.DEBUG_TEST_ENV) {
|
|
126
|
+
logger.debug(
|
|
127
|
+
"[manifest-loader] ⚠️ Skipping core test manifest load (not smrt-core test environment)"
|
|
128
|
+
);
|
|
129
|
+
}
|
|
130
|
+
setTestManifestCache(null);
|
|
131
|
+
return null;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
const imported = require$1("./test-manifest-stub.js");
|
|
135
|
+
const manifest = imported.testManifest || imported.default;
|
|
136
|
+
setTestManifestCache(manifest);
|
|
137
|
+
if (process.env.DEBUG_TEST_ENV) {
|
|
138
|
+
logger.debug(
|
|
139
|
+
`[manifest-loader] ✅ Loaded test manifest (${Object.keys(manifest?.objects || {}).length} objects)`
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
} catch (error) {
|
|
143
|
+
if (process.env.DEBUG_TEST_ENV) {
|
|
144
|
+
logger.debug(
|
|
145
|
+
"[manifest-loader] ⚠️ Test manifest not found (this is normal in production)"
|
|
146
|
+
);
|
|
147
|
+
}
|
|
148
|
+
setTestManifestCache(null);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return getTestManifestCache();
|
|
152
|
+
}
|
|
153
|
+
function loadLocalTestManifestSync() {
|
|
154
|
+
const cached = getLocalTestManifestCache();
|
|
155
|
+
if (cached !== void 0 && cached !== null) {
|
|
156
|
+
return cached;
|
|
157
|
+
}
|
|
158
|
+
const manager = new ManifestManager(process.cwd());
|
|
159
|
+
const manifest = manager.loadLocal();
|
|
160
|
+
const testManifestPath = join(
|
|
161
|
+
process.cwd(),
|
|
162
|
+
"src/manifest/test-manifest.json"
|
|
163
|
+
);
|
|
164
|
+
if (manifest) {
|
|
165
|
+
const objectCount = Object.keys(manifest.objects).length;
|
|
166
|
+
if (objectCount > 0) {
|
|
167
|
+
setLocalTestManifestCache(manifest);
|
|
168
|
+
debugLog(
|
|
169
|
+
`[manifest-loader] ✅ Loaded local manifest via ManifestManager (${objectCount} objects)`
|
|
170
|
+
);
|
|
171
|
+
return manifest;
|
|
172
|
+
}
|
|
173
|
+
if (existsSync(testManifestPath)) {
|
|
174
|
+
try {
|
|
175
|
+
const testManifest = parse(
|
|
176
|
+
readFileSync(testManifestPath, "utf-8")
|
|
177
|
+
);
|
|
178
|
+
const testObjectCount = Object.keys(testManifest.objects).length;
|
|
179
|
+
if (testObjectCount > 0) {
|
|
180
|
+
setLocalTestManifestCache(testManifest);
|
|
181
|
+
debugLog(
|
|
182
|
+
`[manifest-loader] ✅ Loaded test manifest from ${testManifestPath} (${testObjectCount} objects) - preferred over empty ManifestManager result`
|
|
183
|
+
);
|
|
184
|
+
return testManifest;
|
|
185
|
+
}
|
|
186
|
+
} catch {
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
setLocalTestManifestCache(manifest);
|
|
190
|
+
debugLog(
|
|
191
|
+
`[manifest-loader] ✅ Loaded local manifest via ManifestManager (${objectCount} objects)`
|
|
192
|
+
);
|
|
193
|
+
return manifest;
|
|
194
|
+
}
|
|
195
|
+
if (existsSync(testManifestPath)) {
|
|
196
|
+
try {
|
|
197
|
+
const testManifest = parse(
|
|
198
|
+
readFileSync(testManifestPath, "utf-8")
|
|
199
|
+
);
|
|
200
|
+
setLocalTestManifestCache(testManifest);
|
|
201
|
+
const objectCount = Object.keys(testManifest.objects).length;
|
|
202
|
+
debugLog(
|
|
203
|
+
`[manifest-loader] ✅ Loaded test manifest from ${testManifestPath} (${objectCount} objects)`
|
|
204
|
+
);
|
|
205
|
+
return testManifest;
|
|
206
|
+
} catch (error) {
|
|
207
|
+
debugLog(
|
|
208
|
+
`[manifest-loader] ✗ Failed to load test manifest from ${testManifestPath}: ${error instanceof Error ? error.message : "unknown"}`
|
|
209
|
+
);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
debugLog(
|
|
213
|
+
"[manifest-loader] ⚠️ No local manifest found (will retry on next call)"
|
|
214
|
+
);
|
|
215
|
+
return null;
|
|
216
|
+
}
|
|
217
|
+
function getPackageName(ctor, skipRegistry = false) {
|
|
218
|
+
try {
|
|
219
|
+
if (!skipRegistry) {
|
|
220
|
+
const className = ctor.name;
|
|
221
|
+
if (className) {
|
|
222
|
+
const registered = ObjectRegistry.getClass(className);
|
|
223
|
+
if (registered?.packageName) {
|
|
224
|
+
return registered.packageName;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
if (ctor.__package__) {
|
|
229
|
+
return ctor.__package__;
|
|
230
|
+
}
|
|
231
|
+
try {
|
|
232
|
+
const error2 = new Error();
|
|
233
|
+
const stack2 = error2.stack || "";
|
|
234
|
+
const stackLines2 = stack2.split("\n");
|
|
235
|
+
for (const line of stackLines2) {
|
|
236
|
+
const fileMatch = line.match(/\(([^)]+\.(?:js|ts))/);
|
|
237
|
+
if (fileMatch) {
|
|
238
|
+
const filePath = fileMatch[1];
|
|
239
|
+
if (filePath.includes("manifest-loader") || filePath.includes("registry") || filePath.includes("/smrt-core/dist/")) {
|
|
240
|
+
continue;
|
|
241
|
+
}
|
|
242
|
+
try {
|
|
243
|
+
const cleanPath = filePath.replace(/^file:\/\//, "");
|
|
244
|
+
let dir = dirname(cleanPath);
|
|
245
|
+
for (let i = 0; i < 10; i++) {
|
|
246
|
+
const pkgPath = join(dir, "package.json");
|
|
247
|
+
try {
|
|
248
|
+
if (existsSync(pkgPath)) {
|
|
249
|
+
const pkg = parse(
|
|
250
|
+
readFileSync(pkgPath, "utf-8")
|
|
251
|
+
);
|
|
252
|
+
if (pkg.name?.startsWith("@")) {
|
|
253
|
+
return pkg.name;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
} catch {
|
|
257
|
+
}
|
|
258
|
+
const parent = dirname(dir);
|
|
259
|
+
if (parent === dir) break;
|
|
260
|
+
dir = parent;
|
|
261
|
+
}
|
|
262
|
+
} catch {
|
|
263
|
+
}
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
} catch {
|
|
268
|
+
}
|
|
269
|
+
const error = new Error();
|
|
270
|
+
const stack = error.stack || "";
|
|
271
|
+
const stackLines = stack.split("\n");
|
|
272
|
+
for (const line of stackLines) {
|
|
273
|
+
const match = line.match(/node_modules\/(@[^/]+\/[^/]+)/);
|
|
274
|
+
if (match) {
|
|
275
|
+
return match[1];
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return null;
|
|
279
|
+
} catch {
|
|
280
|
+
return null;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
function findWorkspaceRoot(startDir) {
|
|
284
|
+
let currentDir = startDir;
|
|
285
|
+
while (true) {
|
|
286
|
+
if (existsSync(join(currentDir, "pnpm-workspace.yaml"))) {
|
|
287
|
+
return currentDir;
|
|
288
|
+
}
|
|
289
|
+
const parentDir = dirname(currentDir);
|
|
290
|
+
if (parentDir === currentDir) {
|
|
291
|
+
return null;
|
|
292
|
+
}
|
|
293
|
+
currentDir = parentDir;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
function resolveInstalledPackageJsonPath(packageName) {
|
|
297
|
+
let currentDir = process.cwd();
|
|
298
|
+
while (true) {
|
|
299
|
+
const packageJsonPath = join(
|
|
300
|
+
currentDir,
|
|
301
|
+
"node_modules",
|
|
302
|
+
packageName,
|
|
303
|
+
"package.json"
|
|
304
|
+
);
|
|
305
|
+
if (existsSync(packageJsonPath)) {
|
|
306
|
+
return packageJsonPath;
|
|
307
|
+
}
|
|
308
|
+
const parentDir = dirname(currentDir);
|
|
309
|
+
if (parentDir === currentDir) {
|
|
310
|
+
return null;
|
|
311
|
+
}
|
|
312
|
+
currentDir = parentDir;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
function resolveWorkspacePackageJsonPath(packageName) {
|
|
316
|
+
const workspaceRoot = findWorkspaceRoot(process.cwd());
|
|
317
|
+
if (!workspaceRoot) {
|
|
318
|
+
return null;
|
|
319
|
+
}
|
|
320
|
+
const workspacePackagesDir = join(workspaceRoot, "packages");
|
|
321
|
+
if (!existsSync(workspacePackagesDir)) {
|
|
322
|
+
return null;
|
|
323
|
+
}
|
|
324
|
+
for (const packageDirName of readdirSync(workspacePackagesDir)) {
|
|
325
|
+
const packageJsonPath = join(
|
|
326
|
+
workspacePackagesDir,
|
|
327
|
+
packageDirName,
|
|
328
|
+
"package.json"
|
|
329
|
+
);
|
|
330
|
+
if (!existsSync(packageJsonPath)) {
|
|
331
|
+
continue;
|
|
332
|
+
}
|
|
333
|
+
try {
|
|
334
|
+
const packageJson = parse(
|
|
335
|
+
readFileSync(packageJsonPath, "utf-8")
|
|
336
|
+
);
|
|
337
|
+
if (packageJson.name === packageName) {
|
|
338
|
+
return packageJsonPath;
|
|
339
|
+
}
|
|
340
|
+
} catch {
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
return null;
|
|
344
|
+
}
|
|
345
|
+
function resolveWorkspaceSourceManifestPath(packageDir) {
|
|
346
|
+
const candidates = [
|
|
347
|
+
join(packageDir, "src", "manifest", "manifest.json"),
|
|
348
|
+
join(packageDir, ".smrt", "manifest.json")
|
|
349
|
+
];
|
|
350
|
+
for (const candidate of candidates) {
|
|
351
|
+
if (existsSync(candidate)) {
|
|
352
|
+
return candidate;
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
function resolveManifestExportPath(packageName, options = {}) {
|
|
358
|
+
const shouldWarn = options.warn ?? true;
|
|
359
|
+
const packageJsonPath = resolveInstalledPackageJsonPath(packageName) || resolveWorkspacePackageJsonPath(packageName);
|
|
360
|
+
if (!packageJsonPath) {
|
|
361
|
+
return null;
|
|
362
|
+
}
|
|
363
|
+
const packageDir = dirname(packageJsonPath);
|
|
364
|
+
const packageJson = parse(
|
|
365
|
+
readFileSync(packageJsonPath, "utf-8")
|
|
366
|
+
);
|
|
367
|
+
const manifestExports = ["./manifest.json", "./manifest"];
|
|
368
|
+
for (const exportKey of manifestExports) {
|
|
369
|
+
const manifestExport = packageJson.exports?.[exportKey];
|
|
370
|
+
if (!manifestExport) {
|
|
371
|
+
continue;
|
|
372
|
+
}
|
|
373
|
+
const manifestRelativePath = typeof manifestExport === "string" ? manifestExport : manifestExport.import || manifestExport.default || manifestExport.require;
|
|
374
|
+
if (!manifestRelativePath) {
|
|
375
|
+
if (shouldWarn) {
|
|
376
|
+
logger.warn(
|
|
377
|
+
`Package ${packageName} has invalid manifest export configuration for ${exportKey}`
|
|
378
|
+
);
|
|
379
|
+
}
|
|
380
|
+
return null;
|
|
381
|
+
}
|
|
382
|
+
if (!manifestRelativePath.endsWith(".json")) {
|
|
383
|
+
if (shouldWarn) {
|
|
384
|
+
logger.warn(
|
|
385
|
+
`Package ${packageName} must export a JSON manifest for ${exportKey}, received ${manifestRelativePath}`
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
return null;
|
|
389
|
+
}
|
|
390
|
+
const manifestPath = join(packageDir, manifestRelativePath);
|
|
391
|
+
if (existsSync(manifestPath)) {
|
|
392
|
+
return manifestPath;
|
|
393
|
+
}
|
|
394
|
+
const workspaceSourceManifest = resolveWorkspaceSourceManifestPath(packageDir);
|
|
395
|
+
if (workspaceSourceManifest) {
|
|
396
|
+
return workspaceSourceManifest;
|
|
397
|
+
}
|
|
398
|
+
if (shouldWarn) {
|
|
399
|
+
logger.warn(
|
|
400
|
+
`Package ${packageName} declares manifest export ${manifestRelativePath}, but no manifest file was found.`
|
|
401
|
+
);
|
|
402
|
+
}
|
|
403
|
+
return null;
|
|
404
|
+
}
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
function collectDeclaredSmrtDependencies(manifests) {
|
|
408
|
+
const dependencies = /* @__PURE__ */ new Set();
|
|
409
|
+
for (const manifest of manifests) {
|
|
410
|
+
for (const pkg of manifest?.smrtDependencies || []) {
|
|
411
|
+
dependencies.add(pkg);
|
|
412
|
+
}
|
|
413
|
+
}
|
|
414
|
+
return Array.from(dependencies);
|
|
415
|
+
}
|
|
416
|
+
function loadExternalManifestSync(packageName, options = {}) {
|
|
417
|
+
if (getManifestCacheMap().has(packageName)) {
|
|
418
|
+
debugLog(`[manifest-loader] Using cached manifest for ${packageName}`);
|
|
419
|
+
return getManifestCacheMap().get(packageName);
|
|
420
|
+
}
|
|
421
|
+
debugLog(
|
|
422
|
+
`[manifest-loader] Attempting to load external manifest for ${packageName}`
|
|
423
|
+
);
|
|
424
|
+
const manifestPath = resolveManifestExportPath(packageName, options);
|
|
425
|
+
if (!manifestPath) {
|
|
426
|
+
debugLog(
|
|
427
|
+
`[manifest-loader] Package ${packageName} does not expose a JSON manifest export`
|
|
428
|
+
);
|
|
429
|
+
return null;
|
|
430
|
+
}
|
|
431
|
+
try {
|
|
432
|
+
const manifest = parse(readFileSync(manifestPath, "utf-8"));
|
|
433
|
+
if (!manifest.objects || typeof manifest.objects !== "object") {
|
|
434
|
+
if (options.warn ?? true) {
|
|
435
|
+
logger.warn(`Invalid manifest structure for package ${packageName}`);
|
|
436
|
+
}
|
|
437
|
+
return null;
|
|
438
|
+
}
|
|
439
|
+
const cachedManifest = manifest.packageName ? manifest : { ...manifest, packageName };
|
|
440
|
+
getManifestCacheMap().set(packageName, cachedManifest);
|
|
441
|
+
debugLog(
|
|
442
|
+
`[manifest-loader] ✅ Loaded external manifest for ${packageName} (${Object.keys(cachedManifest.objects).length} objects)`
|
|
443
|
+
);
|
|
444
|
+
return cachedManifest;
|
|
445
|
+
} catch (error) {
|
|
446
|
+
if (options.warn ?? true) {
|
|
447
|
+
logger.warn(
|
|
448
|
+
`Failed to load manifest for package ${packageName}: ${error instanceof Error ? error.message : error}`
|
|
449
|
+
);
|
|
450
|
+
}
|
|
451
|
+
return null;
|
|
452
|
+
}
|
|
453
|
+
}
|
|
454
|
+
async function loadExternalManifest(packageName, options = {}) {
|
|
455
|
+
return loadExternalManifestSync(packageName, options);
|
|
456
|
+
}
|
|
457
|
+
function loadManifestFromPathSync(manifestPath) {
|
|
458
|
+
try {
|
|
459
|
+
const manifestJson = readFileSync(manifestPath, "utf-8");
|
|
460
|
+
const manifest = parse(manifestJson);
|
|
461
|
+
if (!manifest.objects || typeof manifest.objects !== "object") {
|
|
462
|
+
logger.warn(`Invalid manifest structure at ${manifestPath}`);
|
|
463
|
+
return null;
|
|
464
|
+
}
|
|
465
|
+
const cacheKey = manifest.packageName || manifestPath;
|
|
466
|
+
getManifestCacheMap().set(cacheKey, manifest);
|
|
467
|
+
debugLog(
|
|
468
|
+
`[manifest-loader] ✅ Loaded manifest from path ${manifestPath} (${Object.keys(manifest.objects).length} objects)`
|
|
469
|
+
);
|
|
470
|
+
return manifest;
|
|
471
|
+
} catch (error) {
|
|
472
|
+
logger.warn(
|
|
473
|
+
`Failed to load manifest from path ${manifestPath}: ${error instanceof Error ? error.message : error}`
|
|
474
|
+
);
|
|
475
|
+
return null;
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
function discoverManifestSync(className) {
|
|
479
|
+
debugLog(`[manifest-loader] discoverManifestSync called for: ${className}`);
|
|
480
|
+
if (isTestEnvironment()) {
|
|
481
|
+
if (!getLocalTestManifestCache()) {
|
|
482
|
+
loadLocalTestManifestSync();
|
|
483
|
+
}
|
|
484
|
+
if (!getTestManifestCache()) {
|
|
485
|
+
getTestManifest();
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
const query = isQualifiedName(className) ? (() => {
|
|
489
|
+
const parsed = parseQualifiedName(className);
|
|
490
|
+
return {
|
|
491
|
+
className: parsed.className,
|
|
492
|
+
packageName: parsed.packageName,
|
|
493
|
+
qualifiedName: className
|
|
494
|
+
};
|
|
495
|
+
})() : { className };
|
|
496
|
+
const compositeHit = getDefaultCompositeSource().lookup(query);
|
|
497
|
+
if (compositeHit) {
|
|
498
|
+
debugLog(
|
|
499
|
+
`[manifest-loader] ✅ Found ${className} via ${compositeHit.source} source`
|
|
500
|
+
);
|
|
501
|
+
const entry = compositeHit.def;
|
|
502
|
+
if (!entry.packageName && compositeHit.packageName) {
|
|
503
|
+
return { ...entry, packageName: compositeHit.packageName };
|
|
504
|
+
}
|
|
505
|
+
return entry;
|
|
506
|
+
}
|
|
507
|
+
debugLog(
|
|
508
|
+
`[manifest-loader] ${className} not found in cached manifests, trying external packages...`
|
|
509
|
+
);
|
|
510
|
+
const pendingPackages = collectDeclaredSmrtDependencies([
|
|
511
|
+
getLocalTestManifestCache(),
|
|
512
|
+
isTestEnvironment() ? getTestManifest() : null,
|
|
513
|
+
getStaticManifest(),
|
|
514
|
+
...getManifestCacheMap().values()
|
|
515
|
+
]);
|
|
516
|
+
if (pendingPackages.length === 0) {
|
|
517
|
+
debugLog(
|
|
518
|
+
"[manifest-loader] No SMRT dependencies discovered. Run manifest generation if external packages are expected."
|
|
519
|
+
);
|
|
520
|
+
}
|
|
521
|
+
const visitedPackages = /* @__PURE__ */ new Set();
|
|
522
|
+
while (pendingPackages.length > 0) {
|
|
523
|
+
const pkg = pendingPackages.shift();
|
|
524
|
+
if (!pkg || visitedPackages.has(pkg)) {
|
|
525
|
+
continue;
|
|
526
|
+
}
|
|
527
|
+
visitedPackages.add(pkg);
|
|
528
|
+
const manifest = loadExternalManifestSync(pkg);
|
|
529
|
+
if (!manifest) {
|
|
530
|
+
continue;
|
|
531
|
+
}
|
|
532
|
+
for (const dependency of manifest.smrtDependencies || []) {
|
|
533
|
+
if (!visitedPackages.has(dependency)) {
|
|
534
|
+
pendingPackages.push(dependency);
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
const entry = lookupInManifest(manifest, className);
|
|
538
|
+
if (entry) {
|
|
539
|
+
debugLog(
|
|
540
|
+
`[manifest-loader] ✅ Found ${className} in external package ${pkg}`
|
|
541
|
+
);
|
|
542
|
+
if (!entry.packageName && manifest.packageName) {
|
|
543
|
+
return { ...entry, packageName: manifest.packageName };
|
|
544
|
+
}
|
|
545
|
+
return entry;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
debugLog(`[manifest-loader] ❌ ${className} not found in any manifest`);
|
|
549
|
+
return void 0;
|
|
550
|
+
}
|
|
551
|
+
function lookupInManifest(manifest, nameOrQualified) {
|
|
552
|
+
if (manifest.objects[nameOrQualified]) {
|
|
553
|
+
return manifest.objects[nameOrQualified];
|
|
554
|
+
}
|
|
555
|
+
const classNameIndex = getClassNameIndex(manifest);
|
|
556
|
+
if (isQualifiedName(nameOrQualified)) {
|
|
557
|
+
const { className } = parseQualifiedName(nameOrQualified);
|
|
558
|
+
return classNameIndex.get(className.toLowerCase());
|
|
559
|
+
}
|
|
560
|
+
if (manifest.packageName) {
|
|
561
|
+
const qualifiedKey = createQualifiedName(
|
|
562
|
+
manifest.packageName,
|
|
563
|
+
nameOrQualified
|
|
564
|
+
);
|
|
565
|
+
if (manifest.objects[qualifiedKey]) {
|
|
566
|
+
return manifest.objects[qualifiedKey];
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
return classNameIndex.get(nameOrQualified.toLowerCase());
|
|
570
|
+
}
|
|
571
|
+
function findManifestEntryByQualifiedName(qualifiedName) {
|
|
572
|
+
if (!isQualifiedName(qualifiedName)) {
|
|
573
|
+
return void 0;
|
|
574
|
+
}
|
|
575
|
+
const { packageName } = parseQualifiedName(qualifiedName);
|
|
576
|
+
const manifest = getManifestCacheMap().get(packageName);
|
|
577
|
+
if (manifest) {
|
|
578
|
+
return lookupInManifest(manifest, qualifiedName);
|
|
579
|
+
}
|
|
580
|
+
const staticManifestData = getStaticManifest();
|
|
581
|
+
if (staticManifestData.packageName === packageName) {
|
|
582
|
+
return lookupInManifest(staticManifestData, qualifiedName);
|
|
583
|
+
}
|
|
584
|
+
if (isTestEnvironment()) {
|
|
585
|
+
const testManifest = getTestManifest();
|
|
586
|
+
if (testManifest?.packageName === packageName) {
|
|
587
|
+
return lookupInManifest(testManifest, qualifiedName);
|
|
588
|
+
}
|
|
589
|
+
const localTest = getLocalTestManifestCache();
|
|
590
|
+
if (localTest?.packageName === packageName) {
|
|
591
|
+
return lookupInManifest(localTest, qualifiedName);
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
return void 0;
|
|
595
|
+
}
|
|
596
|
+
async function discoverManifestEntry(ctor, className) {
|
|
597
|
+
if (!ctor._isManifestStub) {
|
|
598
|
+
const registered = ObjectRegistry.getClassByConstructor(ctor);
|
|
599
|
+
if (registered?.qualifiedName && isQualifiedName(registered.qualifiedName)) {
|
|
600
|
+
const { packageName } = parseQualifiedName(registered.qualifiedName);
|
|
601
|
+
const cachedManifest = getManifestCacheMap().get(packageName);
|
|
602
|
+
if (cachedManifest) {
|
|
603
|
+
const cachedEntry = lookupInManifest(
|
|
604
|
+
cachedManifest,
|
|
605
|
+
registered.qualifiedName
|
|
606
|
+
);
|
|
607
|
+
if (cachedEntry) {
|
|
608
|
+
return !cachedEntry.packageName && cachedManifest.packageName ? { ...cachedEntry, packageName: cachedManifest.packageName } : cachedEntry;
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
const manifest = await loadExternalManifest(packageName, {
|
|
612
|
+
warn: registered.fields.size === 0
|
|
613
|
+
});
|
|
614
|
+
if (manifest) {
|
|
615
|
+
const entry = lookupInManifest(manifest, registered.qualifiedName);
|
|
616
|
+
if (entry) {
|
|
617
|
+
return !entry.packageName && manifest.packageName ? { ...entry, packageName: manifest.packageName } : entry;
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
if (registered.fields.size > 0) {
|
|
621
|
+
return void 0;
|
|
622
|
+
}
|
|
623
|
+
}
|
|
624
|
+
}
|
|
625
|
+
className.toLowerCase();
|
|
626
|
+
const constructorPackage = getPackageName(ctor);
|
|
627
|
+
const foundEntries = [];
|
|
628
|
+
const qualifiedName = constructorPackage ? createQualifiedName(constructorPackage, className) : void 0;
|
|
629
|
+
let localEntry;
|
|
630
|
+
if (isTestEnvironment()) {
|
|
631
|
+
if (getLocalTestManifestCache() === void 0) {
|
|
632
|
+
loadLocalTestManifestSync();
|
|
633
|
+
}
|
|
634
|
+
const localManifest = getLocalTestManifestCache();
|
|
635
|
+
if (localManifest) {
|
|
636
|
+
localEntry = lookupInManifest(localManifest, qualifiedName || className);
|
|
637
|
+
if (localEntry) {
|
|
638
|
+
foundEntries.push({
|
|
639
|
+
entry: localEntry,
|
|
640
|
+
packageName: localManifest.packageName || "local-test",
|
|
641
|
+
filePath: localEntry.filePath,
|
|
642
|
+
manifestSource: "local test manifest"
|
|
643
|
+
});
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
if (constructorPackage) {
|
|
648
|
+
const skipExternal = getLocalTestManifestCache()?.packageName && constructorPackage === getLocalTestManifestCache()?.packageName;
|
|
649
|
+
if (!skipExternal) {
|
|
650
|
+
const manifest = await loadExternalManifest(constructorPackage);
|
|
651
|
+
if (manifest) {
|
|
652
|
+
const entry = lookupInManifest(manifest, qualifiedName || className);
|
|
653
|
+
if (entry) {
|
|
654
|
+
const enrichedEntry = !entry.packageName && manifest.packageName ? { ...entry, packageName: manifest.packageName } : entry;
|
|
655
|
+
foundEntries.push({
|
|
656
|
+
entry: enrichedEntry,
|
|
657
|
+
packageName: manifest.packageName || constructorPackage,
|
|
658
|
+
filePath: entry.filePath,
|
|
659
|
+
manifestSource: `${manifest.packageName || constructorPackage}/manifest.json`
|
|
660
|
+
});
|
|
661
|
+
}
|
|
662
|
+
}
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
if (isTestEnvironment() && (!getLocalTestManifestCache() || !localEntry)) {
|
|
666
|
+
const manifest = getTestManifest();
|
|
667
|
+
if (manifest) {
|
|
668
|
+
const testEntry = lookupInManifest(manifest, qualifiedName || className);
|
|
669
|
+
if (testEntry) {
|
|
670
|
+
foundEntries.push({
|
|
671
|
+
entry: testEntry,
|
|
672
|
+
packageName: manifest.packageName || "@happyvertical/smrt-core",
|
|
673
|
+
filePath: testEntry.filePath,
|
|
674
|
+
manifestSource: "@happyvertical/smrt-core test manifest"
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
}
|
|
678
|
+
}
|
|
679
|
+
const staticManifestData = getStaticManifest();
|
|
680
|
+
const staticEntry = lookupInManifest(
|
|
681
|
+
staticManifestData,
|
|
682
|
+
qualifiedName || className
|
|
683
|
+
);
|
|
684
|
+
if (staticEntry) {
|
|
685
|
+
foundEntries.push({
|
|
686
|
+
entry: staticEntry,
|
|
687
|
+
packageName: staticManifestData.packageName || "@happyvertical/smrt-core",
|
|
688
|
+
filePath: staticEntry.filePath,
|
|
689
|
+
manifestSource: "@happyvertical/smrt-core static manifest"
|
|
690
|
+
});
|
|
691
|
+
}
|
|
692
|
+
for (const [cachedPkgName, manifest] of getManifestCacheMap().entries()) {
|
|
693
|
+
if (cachedPkgName === constructorPackage) {
|
|
694
|
+
continue;
|
|
695
|
+
}
|
|
696
|
+
const entry = lookupInManifest(manifest, qualifiedName || className);
|
|
697
|
+
if (entry) {
|
|
698
|
+
foundEntries.push({
|
|
699
|
+
entry: !entry.packageName && manifest.packageName ? { ...entry, packageName: manifest.packageName } : entry,
|
|
700
|
+
packageName: manifest.packageName || cachedPkgName,
|
|
701
|
+
filePath: entry.filePath,
|
|
702
|
+
manifestSource: `${manifest.packageName || cachedPkgName}/manifest.json`
|
|
703
|
+
});
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
if (foundEntries.length > 1) {
|
|
707
|
+
const uniqueByFile = /* @__PURE__ */ new Map();
|
|
708
|
+
for (const entry of foundEntries) {
|
|
709
|
+
let key = entry.filePath || `${entry.packageName}:${className}`;
|
|
710
|
+
if (entry.filePath) {
|
|
711
|
+
const pkgIdx = entry.filePath.lastIndexOf("packages/");
|
|
712
|
+
if (pkgIdx !== -1) {
|
|
713
|
+
key = entry.filePath.slice(pkgIdx);
|
|
714
|
+
}
|
|
715
|
+
}
|
|
716
|
+
if (!uniqueByFile.has(key)) {
|
|
717
|
+
uniqueByFile.set(key, entry);
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
if (uniqueByFile.size === 1) {
|
|
721
|
+
foundEntries.splice(1);
|
|
722
|
+
} else if (uniqueByFile.size > 1) {
|
|
723
|
+
const collisionInfo = foundEntries.map(
|
|
724
|
+
(f) => ` - ${f.packageName} (${f.filePath || "unknown file"}) from ${f.manifestSource}`
|
|
725
|
+
);
|
|
726
|
+
getManifestCollisionsMap().set(
|
|
727
|
+
className,
|
|
728
|
+
foundEntries.map((f) => ({
|
|
729
|
+
packageName: f.packageName,
|
|
730
|
+
filePath: f.filePath,
|
|
731
|
+
manifestSource: f.manifestSource
|
|
732
|
+
}))
|
|
733
|
+
);
|
|
734
|
+
throw new Error(
|
|
735
|
+
`SMRT Class Name Collision Detected: "${className}"
|
|
736
|
+
|
|
737
|
+
This class is defined in multiple packages:
|
|
738
|
+
${collisionInfo.join("\n")}
|
|
739
|
+
|
|
740
|
+
The collision will cause the wrong field definitions to be used,
|
|
741
|
+
leading to properties not being initialized correctly.
|
|
742
|
+
|
|
743
|
+
To fix:
|
|
744
|
+
1. Use unique class names across packages (e.g., ${className}_${constructorPackage?.split("/").pop() || "Unique"})
|
|
745
|
+
2. Or use @smrt({ name: 'unique_name' }) to override the registration name
|
|
746
|
+
3. Remove test classes with conflicting names from production manifests
|
|
747
|
+
|
|
748
|
+
If this is a test class collision, ensure test manifests are not included in production builds.`
|
|
749
|
+
);
|
|
750
|
+
}
|
|
751
|
+
}
|
|
752
|
+
if (foundEntries.length === 1) {
|
|
753
|
+
return foundEntries[0].entry;
|
|
754
|
+
}
|
|
755
|
+
return void 0;
|
|
756
|
+
}
|
|
757
|
+
function discoverSTISiblingsSync(collection) {
|
|
758
|
+
const cache = getSTISiblingCache();
|
|
759
|
+
const cached = cache.get(collection);
|
|
760
|
+
if (cached !== void 0) {
|
|
761
|
+
return cached;
|
|
762
|
+
}
|
|
763
|
+
const siblings = [];
|
|
764
|
+
const foundClasses = /* @__PURE__ */ new Set();
|
|
765
|
+
debugLog(
|
|
766
|
+
`[manifest-loader] discoverSTISiblingsSync called for collection: ${collection}`
|
|
767
|
+
);
|
|
768
|
+
const addFromManifest = (manifest, source) => {
|
|
769
|
+
if (!manifest?.objects) return;
|
|
770
|
+
for (const [key, entry] of Object.entries(manifest.objects)) {
|
|
771
|
+
if (entry.collection === collection) {
|
|
772
|
+
const className = entry.className || key;
|
|
773
|
+
const lowerClassName = className.toLowerCase();
|
|
774
|
+
if (!foundClasses.has(lowerClassName)) {
|
|
775
|
+
foundClasses.add(lowerClassName);
|
|
776
|
+
siblings.push({
|
|
777
|
+
className,
|
|
778
|
+
entry,
|
|
779
|
+
packageName: entry.packageName || manifest.packageName
|
|
780
|
+
});
|
|
781
|
+
debugLog(
|
|
782
|
+
`[manifest-loader] Found STI sibling: ${className} (collection: ${collection}) from ${source}`
|
|
783
|
+
);
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
};
|
|
788
|
+
if (isTestEnvironment()) {
|
|
789
|
+
if (!getLocalTestManifestCache()) {
|
|
790
|
+
loadLocalTestManifestSync();
|
|
791
|
+
}
|
|
792
|
+
addFromManifest(getLocalTestManifestCache(), "localTestManifest");
|
|
793
|
+
}
|
|
794
|
+
const testManifestData = isTestEnvironment() ? getTestManifest() : null;
|
|
795
|
+
if (testManifestData) {
|
|
796
|
+
addFromManifest(testManifestData, "testManifest");
|
|
797
|
+
}
|
|
798
|
+
const staticManifestData = getStaticManifest();
|
|
799
|
+
addFromManifest(staticManifestData, "staticManifest");
|
|
800
|
+
for (const [pkgName, manifest] of getManifestCacheMap().entries()) {
|
|
801
|
+
addFromManifest(manifest, `manifestCache:${pkgName}`);
|
|
802
|
+
}
|
|
803
|
+
const pendingDependencies = collectDeclaredSmrtDependencies([
|
|
804
|
+
getLocalTestManifestCache(),
|
|
805
|
+
isTestEnvironment() ? testManifestData : null,
|
|
806
|
+
staticManifestData,
|
|
807
|
+
...getManifestCacheMap().values()
|
|
808
|
+
]);
|
|
809
|
+
const visitedDependencies = /* @__PURE__ */ new Set();
|
|
810
|
+
debugLog(
|
|
811
|
+
`[manifest-loader] Scanning ${pendingDependencies.length} SMRT dependencies for STI siblings: ${pendingDependencies.join(", ")}`
|
|
812
|
+
);
|
|
813
|
+
while (pendingDependencies.length > 0) {
|
|
814
|
+
const pkg = pendingDependencies.shift();
|
|
815
|
+
if (!pkg || visitedDependencies.has(pkg)) {
|
|
816
|
+
continue;
|
|
817
|
+
}
|
|
818
|
+
visitedDependencies.add(pkg);
|
|
819
|
+
const manifest = loadExternalManifestSync(pkg);
|
|
820
|
+
if (manifest) {
|
|
821
|
+
addFromManifest(manifest, `smrtDependency:${pkg}`);
|
|
822
|
+
for (const dependency of manifest.smrtDependencies || []) {
|
|
823
|
+
if (!visitedDependencies.has(dependency)) {
|
|
824
|
+
pendingDependencies.push(dependency);
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
}
|
|
828
|
+
}
|
|
829
|
+
debugLog(
|
|
830
|
+
`[manifest-loader] discoverSTISiblingsSync found ${siblings.length} siblings for collection: ${collection}`
|
|
831
|
+
);
|
|
832
|
+
cache.set(collection, siblings);
|
|
833
|
+
return siblings;
|
|
834
|
+
}
|
|
835
|
+
export {
|
|
836
|
+
discoverManifestEntry,
|
|
837
|
+
discoverManifestSync,
|
|
838
|
+
discoverSTISiblingsSync,
|
|
839
|
+
findManifestEntryByQualifiedName,
|
|
840
|
+
getPackageName,
|
|
841
|
+
loadExternalManifest,
|
|
842
|
+
loadExternalManifestSync,
|
|
843
|
+
loadLocalTestManifestSync,
|
|
844
|
+
loadManifestFromPathSync,
|
|
845
|
+
lookupInManifest
|
|
846
|
+
};
|
|
847
|
+
//# sourceMappingURL=manifest-loader.js.map
|