@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,43 @@
|
|
|
1
|
+
import { JSONFactory } from "@happyvertical/json";
|
|
2
|
+
let adapter = null;
|
|
3
|
+
function getAdapter() {
|
|
4
|
+
if (!adapter) {
|
|
5
|
+
adapter = JSONFactory.create({
|
|
6
|
+
adapter: "auto",
|
|
7
|
+
// Use SIMD when available, fallback to native
|
|
8
|
+
fallback: true
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
return adapter;
|
|
12
|
+
}
|
|
13
|
+
function parse(text) {
|
|
14
|
+
return getAdapter().parse(text);
|
|
15
|
+
}
|
|
16
|
+
function stringify(value, replacer, space) {
|
|
17
|
+
return getAdapter().stringify(value, replacer, space);
|
|
18
|
+
}
|
|
19
|
+
function clone(value) {
|
|
20
|
+
return getAdapter().clone(value);
|
|
21
|
+
}
|
|
22
|
+
function safeParse(text) {
|
|
23
|
+
return getAdapter().safeParse(text);
|
|
24
|
+
}
|
|
25
|
+
function safeStringify(value) {
|
|
26
|
+
return getAdapter().safeStringify(value);
|
|
27
|
+
}
|
|
28
|
+
function isValid(text) {
|
|
29
|
+
return getAdapter().isValid(text);
|
|
30
|
+
}
|
|
31
|
+
function getAdapterInfo() {
|
|
32
|
+
return getAdapter().getInfo();
|
|
33
|
+
}
|
|
34
|
+
export {
|
|
35
|
+
clone,
|
|
36
|
+
getAdapterInfo,
|
|
37
|
+
isValid,
|
|
38
|
+
parse,
|
|
39
|
+
safeParse,
|
|
40
|
+
safeStringify,
|
|
41
|
+
stringify
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sources":["../../src/utils/json.ts"],"sourcesContent":["/**\n * JSON utilities with optional SIMD acceleration\n *\n * Uses @happyvertical/json for faster parsing when available,\n * with automatic fallback to native JSON.\n *\n * Performance: 2-3x faster parsing on large JSON files (680KB manifests)\n */\n\nimport {\n type JSONAdapter,\n JSONFactory,\n type ParseError,\n type Result,\n type StringifyError,\n} from '@happyvertical/json';\n\n// Singleton adapter instance\nlet adapter: JSONAdapter | null = null;\n\n/**\n * Get or create the JSON adapter instance\n */\nfunction getAdapter(): JSONAdapter {\n if (!adapter) {\n adapter = JSONFactory.create({\n adapter: 'auto', // Use SIMD when available, fallback to native\n fallback: true,\n });\n }\n return adapter;\n}\n\n/**\n * Parse JSON string with optional SIMD acceleration\n *\n * @example\n * ```typescript\n * import { parse } from '@happyvertical/smrt-core/utils/json';\n *\n * const data = parse<MyType>('{\"key\": \"value\"}');\n * ```\n */\nexport function parse<T = unknown>(text: string): T {\n return getAdapter().parse<T>(text);\n}\n\n/**\n * Stringify value to JSON with optional SIMD acceleration\n *\n * @example\n * ```typescript\n * import { stringify } from '@happyvertical/smrt-core/utils/json';\n *\n * const json = stringify({ key: 'value' });\n * const pretty = stringify({ key: 'value' }, null, 2);\n * ```\n */\nexport function stringify(\n value: unknown,\n replacer?:\n | ((key: string, value: unknown) => unknown)\n | (string | number)[]\n | null,\n space?: number | string,\n): string {\n return getAdapter().stringify(value, replacer as any, space as any);\n}\n\n/**\n * Deep clone via JSON round-trip with optional SIMD acceleration\n *\n * @example\n * ```typescript\n * import { clone } from '@happyvertical/smrt-core/utils/json';\n *\n * const copy = clone(original);\n * ```\n */\nexport function clone<T>(value: T): T {\n return getAdapter().clone(value);\n}\n\n/**\n * Parse JSON without throwing - returns Result type\n *\n * @example\n * ```typescript\n * import { safeParse } from '@happyvertical/smrt-core/utils/json';\n *\n * const result = safeParse<Config>(configJson);\n * if (result.success) {\n * console.log(result.value);\n * } else {\n * console.error(result.error.message);\n * }\n * ```\n */\nexport function safeParse<T = unknown>(text: string): Result<T, ParseError> {\n return getAdapter().safeParse<T>(text);\n}\n\n/**\n * Stringify without throwing - returns Result type\n *\n * @example\n * ```typescript\n * import { safeStringify } from '@happyvertical/smrt-core/utils/json';\n *\n * const result = safeStringify(data);\n * if (result.success) {\n * console.log(result.value);\n * } else {\n * console.error(result.error.message);\n * }\n * ```\n */\nexport function safeStringify(value: unknown): Result<string, StringifyError> {\n return getAdapter().safeStringify(value);\n}\n\n/**\n * Check if a string is valid JSON\n *\n * @example\n * ```typescript\n * import { isValid } from '@happyvertical/smrt-core/utils/json';\n *\n * if (isValid(userInput)) {\n * // Safe to parse\n * }\n * ```\n */\nexport function isValid(text: string): boolean {\n return getAdapter().isValid(text);\n}\n\n/**\n * Get information about the active JSON adapter\n *\n * @example\n * ```typescript\n * import { getAdapterInfo } from '@happyvertical/smrt-core/utils/json';\n *\n * const info = getAdapterInfo();\n * console.log(`Using ${info.name} adapter, SIMD: ${info.simdEnabled}`);\n * ```\n */\nexport function getAdapterInfo(): {\n name: string;\n isNative: boolean;\n version?: string;\n simdEnabled?: boolean;\n} {\n return getAdapter().getInfo();\n}\n\n/**\n * Re-export types for convenience\n */\nexport type { JSONAdapter, ParseError, Result, StringifyError };\n"],"names":[],"mappings":";AAkBA,IAAI,UAA8B;AAKlC,SAAS,aAA0B;AACjC,MAAI,CAAC,SAAS;AACZ,cAAU,YAAY,OAAO;AAAA,MAC3B,SAAS;AAAA;AAAA,MACT,UAAU;AAAA,IAAA,CACX;AAAA,EACH;AACA,SAAO;AACT;AAYO,SAAS,MAAmB,MAAiB;AAClD,SAAO,WAAA,EAAa,MAAS,IAAI;AACnC;AAaO,SAAS,UACd,OACA,UAIA,OACQ;AACR,SAAO,WAAA,EAAa,UAAU,OAAO,UAAiB,KAAY;AACpE;AAYO,SAAS,MAAS,OAAa;AACpC,SAAO,WAAA,EAAa,MAAM,KAAK;AACjC;AAiBO,SAAS,UAAuB,MAAqC;AAC1E,SAAO,WAAA,EAAa,UAAa,IAAI;AACvC;AAiBO,SAAS,cAAc,OAAgD;AAC5E,SAAO,WAAA,EAAa,cAAc,KAAK;AACzC;AAcO,SAAS,QAAQ,MAAuB;AAC7C,SAAO,WAAA,EAAa,QAAQ,IAAI;AAClC;AAaO,SAAS,iBAKd;AACA,SAAO,WAAA,EAAa,QAAA;AACtB;"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Simple LRU (Least Recently Used) Cache implementation
|
|
3
|
+
*
|
|
4
|
+
* Automatically evicts least recently used entries when size limit is reached.
|
|
5
|
+
* Useful for preventing memory leaks in long-running applications.
|
|
6
|
+
*/
|
|
7
|
+
export declare class LRUCache<K, V> {
|
|
8
|
+
private cache;
|
|
9
|
+
private readonly maxSize;
|
|
10
|
+
/**
|
|
11
|
+
* Create an LRU cache with a maximum size
|
|
12
|
+
*
|
|
13
|
+
* @param maxSize - Maximum number of entries to store (default: 100)
|
|
14
|
+
*/
|
|
15
|
+
constructor(maxSize?: number);
|
|
16
|
+
/**
|
|
17
|
+
* Get a value from the cache
|
|
18
|
+
* Marks the entry as recently used (moves to end of Map)
|
|
19
|
+
*
|
|
20
|
+
* @param key - Cache key
|
|
21
|
+
* @returns Value if found, undefined otherwise
|
|
22
|
+
*/
|
|
23
|
+
get(key: K): V | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* Set a value in the cache
|
|
26
|
+
* Evicts least recently used entry if cache is full
|
|
27
|
+
*
|
|
28
|
+
* @param key - Cache key
|
|
29
|
+
* @param value - Value to store
|
|
30
|
+
*/
|
|
31
|
+
set(key: K, value: V): void;
|
|
32
|
+
/**
|
|
33
|
+
* Check if key exists in cache
|
|
34
|
+
*
|
|
35
|
+
* @param key - Cache key
|
|
36
|
+
* @returns True if key exists
|
|
37
|
+
*/
|
|
38
|
+
has(key: K): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Remove an entry from the cache
|
|
41
|
+
*
|
|
42
|
+
* @param key - Cache key
|
|
43
|
+
* @returns True if entry was removed, false if not found
|
|
44
|
+
*/
|
|
45
|
+
delete(key: K): boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Clear all entries from the cache
|
|
48
|
+
*/
|
|
49
|
+
clear(): void;
|
|
50
|
+
/**
|
|
51
|
+
* Get current cache size
|
|
52
|
+
*
|
|
53
|
+
* @returns Number of entries in cache
|
|
54
|
+
*/
|
|
55
|
+
get size(): number;
|
|
56
|
+
/**
|
|
57
|
+
* Get all keys in the cache (least to most recently used)
|
|
58
|
+
*
|
|
59
|
+
* @returns Array of keys
|
|
60
|
+
*/
|
|
61
|
+
keys(): K[];
|
|
62
|
+
/**
|
|
63
|
+
* Get all values in the cache (least to most recently used)
|
|
64
|
+
*
|
|
65
|
+
* @returns Array of values
|
|
66
|
+
*/
|
|
67
|
+
values(): V[];
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=lru-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru-cache.d.ts","sourceRoot":"","sources":["../../src/utils/lru-cache.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC;;;;OAIG;gBACS,OAAO,SAAM;IAKzB;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAa1B;;;;;;OAMG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAmB3B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIpB;;;;;OAKG;IACH,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO;IAIvB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;;;OAIG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;;;OAIG;IACH,IAAI,IAAI,CAAC,EAAE;IAIX;;;;OAIG;IACH,MAAM,IAAI,CAAC,EAAE;CAGd"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
class LRUCache {
|
|
2
|
+
cache;
|
|
3
|
+
maxSize;
|
|
4
|
+
/**
|
|
5
|
+
* Create an LRU cache with a maximum size
|
|
6
|
+
*
|
|
7
|
+
* @param maxSize - Maximum number of entries to store (default: 100)
|
|
8
|
+
*/
|
|
9
|
+
constructor(maxSize = 100) {
|
|
10
|
+
this.cache = /* @__PURE__ */ new Map();
|
|
11
|
+
this.maxSize = maxSize;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Get a value from the cache
|
|
15
|
+
* Marks the entry as recently used (moves to end of Map)
|
|
16
|
+
*
|
|
17
|
+
* @param key - Cache key
|
|
18
|
+
* @returns Value if found, undefined otherwise
|
|
19
|
+
*/
|
|
20
|
+
get(key) {
|
|
21
|
+
if (!this.cache.has(key)) {
|
|
22
|
+
return void 0;
|
|
23
|
+
}
|
|
24
|
+
const value = this.cache.get(key);
|
|
25
|
+
this.cache.delete(key);
|
|
26
|
+
this.cache.set(key, value);
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Set a value in the cache
|
|
31
|
+
* Evicts least recently used entry if cache is full
|
|
32
|
+
*
|
|
33
|
+
* @param key - Cache key
|
|
34
|
+
* @param value - Value to store
|
|
35
|
+
*/
|
|
36
|
+
set(key, value) {
|
|
37
|
+
if (this.cache.has(key)) {
|
|
38
|
+
this.cache.delete(key);
|
|
39
|
+
}
|
|
40
|
+
if (this.cache.size >= this.maxSize) {
|
|
41
|
+
const firstKey = this.cache.keys().next().value;
|
|
42
|
+
if (firstKey !== void 0) {
|
|
43
|
+
this.cache.delete(firstKey);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
this.cache.set(key, value);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Check if key exists in cache
|
|
50
|
+
*
|
|
51
|
+
* @param key - Cache key
|
|
52
|
+
* @returns True if key exists
|
|
53
|
+
*/
|
|
54
|
+
has(key) {
|
|
55
|
+
return this.cache.has(key);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Remove an entry from the cache
|
|
59
|
+
*
|
|
60
|
+
* @param key - Cache key
|
|
61
|
+
* @returns True if entry was removed, false if not found
|
|
62
|
+
*/
|
|
63
|
+
delete(key) {
|
|
64
|
+
return this.cache.delete(key);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Clear all entries from the cache
|
|
68
|
+
*/
|
|
69
|
+
clear() {
|
|
70
|
+
this.cache.clear();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get current cache size
|
|
74
|
+
*
|
|
75
|
+
* @returns Number of entries in cache
|
|
76
|
+
*/
|
|
77
|
+
get size() {
|
|
78
|
+
return this.cache.size;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Get all keys in the cache (least to most recently used)
|
|
82
|
+
*
|
|
83
|
+
* @returns Array of keys
|
|
84
|
+
*/
|
|
85
|
+
keys() {
|
|
86
|
+
return Array.from(this.cache.keys());
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get all values in the cache (least to most recently used)
|
|
90
|
+
*
|
|
91
|
+
* @returns Array of values
|
|
92
|
+
*/
|
|
93
|
+
values() {
|
|
94
|
+
return Array.from(this.cache.values());
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export {
|
|
98
|
+
LRUCache
|
|
99
|
+
};
|
|
100
|
+
//# sourceMappingURL=lru-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lru-cache.js","sources":["../../src/utils/lru-cache.ts"],"sourcesContent":["/**\n * Simple LRU (Least Recently Used) Cache implementation\n *\n * Automatically evicts least recently used entries when size limit is reached.\n * Useful for preventing memory leaks in long-running applications.\n */\nexport class LRUCache<K, V> {\n private cache: Map<K, V>;\n private readonly maxSize: number;\n\n /**\n * Create an LRU cache with a maximum size\n *\n * @param maxSize - Maximum number of entries to store (default: 100)\n */\n constructor(maxSize = 100) {\n this.cache = new Map();\n this.maxSize = maxSize;\n }\n\n /**\n * Get a value from the cache\n * Marks the entry as recently used (moves to end of Map)\n *\n * @param key - Cache key\n * @returns Value if found, undefined otherwise\n */\n get(key: K): V | undefined {\n if (!this.cache.has(key)) {\n return undefined;\n }\n\n // Move to end (most recently used)\n const value = this.cache.get(key)!;\n this.cache.delete(key);\n this.cache.set(key, value);\n\n return value;\n }\n\n /**\n * Set a value in the cache\n * Evicts least recently used entry if cache is full\n *\n * @param key - Cache key\n * @param value - Value to store\n */\n set(key: K, value: V): void {\n // Remove if exists (will re-add at end)\n if (this.cache.has(key)) {\n this.cache.delete(key);\n }\n\n // Evict least recently used entry if at capacity\n if (this.cache.size >= this.maxSize) {\n // First entry is least recently used (Map maintains insertion order)\n const firstKey = this.cache.keys().next().value;\n if (firstKey !== undefined) {\n this.cache.delete(firstKey);\n }\n }\n\n // Add as most recently used (at end)\n this.cache.set(key, value);\n }\n\n /**\n * Check if key exists in cache\n *\n * @param key - Cache key\n * @returns True if key exists\n */\n has(key: K): boolean {\n return this.cache.has(key);\n }\n\n /**\n * Remove an entry from the cache\n *\n * @param key - Cache key\n * @returns True if entry was removed, false if not found\n */\n delete(key: K): boolean {\n return this.cache.delete(key);\n }\n\n /**\n * Clear all entries from the cache\n */\n clear(): void {\n this.cache.clear();\n }\n\n /**\n * Get current cache size\n *\n * @returns Number of entries in cache\n */\n get size(): number {\n return this.cache.size;\n }\n\n /**\n * Get all keys in the cache (least to most recently used)\n *\n * @returns Array of keys\n */\n keys(): K[] {\n return Array.from(this.cache.keys());\n }\n\n /**\n * Get all values in the cache (least to most recently used)\n *\n * @returns Array of values\n */\n values(): V[] {\n return Array.from(this.cache.values());\n }\n}\n"],"names":[],"mappings":"AAMO,MAAM,SAAe;AAAA,EAClB;AAAA,EACS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOjB,YAAY,UAAU,KAAK;AACzB,SAAK,4BAAY,IAAA;AACjB,SAAK,UAAU;AAAA,EACjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,KAAuB;AACzB,QAAI,CAAC,KAAK,MAAM,IAAI,GAAG,GAAG;AACxB,aAAO;AAAA,IACT;AAGA,UAAM,QAAQ,KAAK,MAAM,IAAI,GAAG;AAChC,SAAK,MAAM,OAAO,GAAG;AACrB,SAAK,MAAM,IAAI,KAAK,KAAK;AAEzB,WAAO;AAAA,EACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,IAAI,KAAQ,OAAgB;AAE1B,QAAI,KAAK,MAAM,IAAI,GAAG,GAAG;AACvB,WAAK,MAAM,OAAO,GAAG;AAAA,IACvB;AAGA,QAAI,KAAK,MAAM,QAAQ,KAAK,SAAS;AAEnC,YAAM,WAAW,KAAK,MAAM,KAAA,EAAO,OAAO;AAC1C,UAAI,aAAa,QAAW;AAC1B,aAAK,MAAM,OAAO,QAAQ;AAAA,MAC5B;AAAA,IACF;AAGA,SAAK,MAAM,IAAI,KAAK,KAAK;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,IAAI,KAAiB;AACnB,WAAO,KAAK,MAAM,IAAI,GAAG;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,OAAO,KAAiB;AACtB,WAAO,KAAK,MAAM,OAAO,GAAG;AAAA,EAC9B;AAAA;AAAA;AAAA;AAAA,EAKA,QAAc;AACZ,SAAK,MAAM,MAAA;AAAA,EACb;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,IAAI,OAAe;AACjB,WAAO,KAAK,MAAM;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,OAAY;AACV,WAAO,MAAM,KAAK,KAAK,MAAM,MAAM;AAAA,EACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,SAAc;AACZ,WAAO,MAAM,KAAK,KAAK,MAAM,QAAQ;AAAA,EACvC;AACF;"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts a camelCase string to snake_case.
|
|
3
|
+
*/
|
|
4
|
+
export declare function toSnakeCase(str: string): string;
|
|
5
|
+
/**
|
|
6
|
+
* Pluralizes an English word using the pluralize library.
|
|
7
|
+
*
|
|
8
|
+
* For snake_case table names with multiple words, only the last word is
|
|
9
|
+
* pluralized: `journal_entry` -> `journal_entries`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function pluralize(word: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Converts a class name to a pluralized snake_case table name.
|
|
14
|
+
*/
|
|
15
|
+
export declare function classnameToTablename(className: string): string;
|
|
16
|
+
//# sourceMappingURL=naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.d.ts","sourceRoot":"","sources":["../../src/utils/naming.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAS9C;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAI9D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import pluralizeLib from "pluralize";
|
|
2
|
+
function toSnakeCase(str) {
|
|
3
|
+
return str.replace(/([A-Z])/g, "_$1").toLowerCase().replace(/^_/, "");
|
|
4
|
+
}
|
|
5
|
+
function pluralize(word) {
|
|
6
|
+
if (word.includes("_")) {
|
|
7
|
+
const parts = word.split("_");
|
|
8
|
+
const lastWord = parts.pop();
|
|
9
|
+
if (!lastWord) return word;
|
|
10
|
+
return [...parts, pluralizeLib(lastWord)].join("_");
|
|
11
|
+
}
|
|
12
|
+
return pluralizeLib(word);
|
|
13
|
+
}
|
|
14
|
+
function classnameToTablename(className) {
|
|
15
|
+
const snakeCase = className.replace(/([a-z])([A-Z])/g, "$1_$2").toLowerCase();
|
|
16
|
+
return pluralize(snakeCase);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
classnameToTablename,
|
|
20
|
+
pluralize,
|
|
21
|
+
toSnakeCase
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sources":["../../src/utils/naming.ts"],"sourcesContent":["import pluralizeLib from 'pluralize';\n\n/**\n * Converts a camelCase string to snake_case.\n */\nexport function toSnakeCase(str: string): string {\n return str\n .replace(/([A-Z])/g, '_$1')\n .toLowerCase()\n .replace(/^_/, '');\n}\n\n/**\n * Pluralizes an English word using the pluralize library.\n *\n * For snake_case table names with multiple words, only the last word is\n * pluralized: `journal_entry` -> `journal_entries`.\n */\nexport function pluralize(word: string): string {\n if (word.includes('_')) {\n const parts = word.split('_');\n const lastWord = parts.pop();\n if (!lastWord) return word;\n return [...parts, pluralizeLib(lastWord)].join('_');\n }\n\n return pluralizeLib(word);\n}\n\n/**\n * Converts a class name to a pluralized snake_case table name.\n */\nexport function classnameToTablename(className: string): string {\n const snakeCase = className.replace(/([a-z])([A-Z])/g, '$1_$2').toLowerCase();\n\n return pluralize(snakeCase);\n}\n"],"names":[],"mappings":";AAKO,SAAS,YAAY,KAAqB;AAC/C,SAAO,IACJ,QAAQ,YAAY,KAAK,EACzB,cACA,QAAQ,MAAM,EAAE;AACrB;AAQO,SAAS,UAAU,MAAsB;AAC9C,MAAI,KAAK,SAAS,GAAG,GAAG;AACtB,UAAM,QAAQ,KAAK,MAAM,GAAG;AAC5B,UAAM,WAAW,MAAM,IAAA;AACvB,QAAI,CAAC,SAAU,QAAO;AACtB,WAAO,CAAC,GAAG,OAAO,aAAa,QAAQ,CAAC,EAAE,KAAK,GAAG;AAAA,EACpD;AAEA,SAAO,aAAa,IAAI;AAC1B;AAKO,SAAS,qBAAqB,WAA2B;AAC9D,QAAM,YAAY,UAAU,QAAQ,mBAAmB,OAAO,EAAE,YAAA;AAEhE,SAAO,UAAU,SAAS;AAC5B;"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { QualifiedClassName } from '../scanner/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a qualified class name from package name and class name.
|
|
4
|
+
*
|
|
5
|
+
* @param packageName - The npm package name (e.g., "@happyvertical/smrt-core")
|
|
6
|
+
* @param className - The class name (e.g., "Product")
|
|
7
|
+
* @returns Qualified name in format "@package/name:ClassName"
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* createQualifiedName('@happyvertical/smrt-core', 'Product')
|
|
11
|
+
* // Returns: "@happyvertical/smrt-core:Product"
|
|
12
|
+
*/
|
|
13
|
+
export declare function createQualifiedName(packageName: string, className: string): QualifiedClassName;
|
|
14
|
+
/**
|
|
15
|
+
* Result of parsing a qualified class name.
|
|
16
|
+
*/
|
|
17
|
+
export interface ParsedQualifiedName {
|
|
18
|
+
/** The package name (e.g., "@happyvertical/smrt-core") */
|
|
19
|
+
packageName: string;
|
|
20
|
+
/** The class name (e.g., "Product") */
|
|
21
|
+
className: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Parses a qualified class name into its components.
|
|
25
|
+
*
|
|
26
|
+
* @param qualifiedName - The qualified name to parse
|
|
27
|
+
* @returns Object with packageName and className
|
|
28
|
+
* @throws Error if the name is not a valid qualified name
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* parseQualifiedName('@happyvertical/smrt-core:Product')
|
|
32
|
+
* // Returns: { packageName: '@happyvertical/smrt-core', className: 'Product' }
|
|
33
|
+
*/
|
|
34
|
+
export declare function parseQualifiedName(qualifiedName: string): ParsedQualifiedName;
|
|
35
|
+
/**
|
|
36
|
+
* Checks if a name is a valid qualified class name.
|
|
37
|
+
*
|
|
38
|
+
* A valid qualified name:
|
|
39
|
+
* - Contains a colon (:) separating package and class
|
|
40
|
+
* - Has a package name with a forward slash (scoped npm package)
|
|
41
|
+
* - Has a non-empty class name after the colon
|
|
42
|
+
*
|
|
43
|
+
* @param name - The name to check
|
|
44
|
+
* @returns true if the name is a valid qualified class name
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* isQualifiedName('@happyvertical/smrt-core:Product') // true
|
|
48
|
+
* isQualifiedName('Product') // false
|
|
49
|
+
* isQualifiedName('smrt-core:Product') // false (no @ scope)
|
|
50
|
+
*/
|
|
51
|
+
export declare function isQualifiedName(name: string): name is QualifiedClassName;
|
|
52
|
+
/**
|
|
53
|
+
* Extracts just the class name from a qualified name or simple name.
|
|
54
|
+
* Useful when you need the class name regardless of whether
|
|
55
|
+
* the input is qualified or not.
|
|
56
|
+
*
|
|
57
|
+
* @param name - Qualified name or simple class name
|
|
58
|
+
* @returns The simple class name
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* getClassName('@happyvertical/smrt-core:Product') // 'Product'
|
|
62
|
+
* getClassName('Product') // 'Product'
|
|
63
|
+
*/
|
|
64
|
+
export declare function getClassName(name: string): string;
|
|
65
|
+
/**
|
|
66
|
+
* Extracts the package name from a qualified name.
|
|
67
|
+
* Returns undefined if the name is not qualified.
|
|
68
|
+
*
|
|
69
|
+
* @param name - Qualified name or simple class name
|
|
70
|
+
* @returns The package name, or undefined if not qualified
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* getPackageFromQualifiedName('@happyvertical/smrt-core:Product')
|
|
74
|
+
* // Returns: '@happyvertical/smrt-core'
|
|
75
|
+
*
|
|
76
|
+
* getPackageFromQualifiedName('Product')
|
|
77
|
+
* // Returns: undefined
|
|
78
|
+
*/
|
|
79
|
+
export declare function getPackageFromQualifiedName(name: string): string | undefined;
|
|
80
|
+
/**
|
|
81
|
+
* Compares two qualified names for equality.
|
|
82
|
+
* Case-sensitive comparison.
|
|
83
|
+
*
|
|
84
|
+
* @param a - First qualified name
|
|
85
|
+
* @param b - Second qualified name
|
|
86
|
+
* @returns true if the qualified names are equal
|
|
87
|
+
*/
|
|
88
|
+
export declare function qualifiedNamesEqual(a: string, b: string): boolean;
|
|
89
|
+
/**
|
|
90
|
+
* Checks if a qualified name belongs to a specific package.
|
|
91
|
+
*
|
|
92
|
+
* @param qualifiedName - The qualified name to check
|
|
93
|
+
* @param packageName - The package name to match against
|
|
94
|
+
* @returns true if the qualified name is from the specified package
|
|
95
|
+
*
|
|
96
|
+
* @example
|
|
97
|
+
* isFromPackage('@happyvertical/smrt-core:Product', '@happyvertical/smrt-core')
|
|
98
|
+
* // Returns: true
|
|
99
|
+
*/
|
|
100
|
+
export declare function isFromPackage(qualifiedName: string, packageName: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Checks if a qualified name (like `_meta_type`) matches a short class name.
|
|
103
|
+
* This is useful for STI filtering where the database stores qualified names
|
|
104
|
+
* but code often uses short names for comparisons.
|
|
105
|
+
*
|
|
106
|
+
* @param qualifiedName - The qualified name or simple name to check (e.g., from `_meta_type`)
|
|
107
|
+
* @param shortName - The short class name to match against
|
|
108
|
+
* @returns true if the class name portion matches
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
* ```typescript
|
|
112
|
+
* // Filtering STI records by type
|
|
113
|
+
* const meetings = events.filter(e => isType(e._meta_type, 'Meeting'));
|
|
114
|
+
*
|
|
115
|
+
* // Works with both qualified and simple names
|
|
116
|
+
* isType('@happyvertical/praeco:MeetingRecap', 'MeetingRecap') // true
|
|
117
|
+
* isType('@happyvertical/praeco:MeetingRecap', 'Article') // false
|
|
118
|
+
* isType('MeetingRecap', 'MeetingRecap') // true (simple name passthrough)
|
|
119
|
+
* ```
|
|
120
|
+
*/
|
|
121
|
+
export declare function isType(qualifiedName: string | null | undefined, shortName: string): boolean;
|
|
122
|
+
//# sourceMappingURL=qualified-names.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qualified-names.d.ts","sourceRoot":"","sources":["../../src/utils/qualified-names.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE9D;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,kBAAkB,CAcpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,0DAA0D;IAC1D,WAAW,EAAE,MAAM,CAAC;IACpB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB,CAgB7E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,IAAI,kBAAkB,CAyBxE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAK5E;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,MAAM,CACpB,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,SAAS,EAAE,MAAM,GAChB,OAAO,CAKT"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
function createQualifiedName(packageName, className) {
|
|
2
|
+
if (!packageName) {
|
|
3
|
+
throw new Error(
|
|
4
|
+
`Cannot create qualified name: packageName is required. Got className="${className}" but no packageName.`
|
|
5
|
+
);
|
|
6
|
+
}
|
|
7
|
+
if (!className) {
|
|
8
|
+
throw new Error(
|
|
9
|
+
`Cannot create qualified name: className is required. Got packageName="${packageName}" but no className.`
|
|
10
|
+
);
|
|
11
|
+
}
|
|
12
|
+
return `${packageName}:${className}`;
|
|
13
|
+
}
|
|
14
|
+
function parseQualifiedName(qualifiedName) {
|
|
15
|
+
if (!isQualifiedName(qualifiedName)) {
|
|
16
|
+
throw new Error(
|
|
17
|
+
`Invalid qualified name: "${qualifiedName}". Expected format: "@package/name:ClassName"`
|
|
18
|
+
);
|
|
19
|
+
}
|
|
20
|
+
const colonIndex = qualifiedName.lastIndexOf(":");
|
|
21
|
+
return {
|
|
22
|
+
packageName: qualifiedName.slice(0, colonIndex),
|
|
23
|
+
className: qualifiedName.slice(colonIndex + 1)
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
function isQualifiedName(name) {
|
|
27
|
+
if (!name || typeof name !== "string") {
|
|
28
|
+
return false;
|
|
29
|
+
}
|
|
30
|
+
const colonIndex = name.lastIndexOf(":");
|
|
31
|
+
if (colonIndex === -1) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
const packageName = name.slice(0, colonIndex);
|
|
35
|
+
const className = name.slice(colonIndex + 1);
|
|
36
|
+
if (!packageName.startsWith("@") || !packageName.includes("/")) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
if (!className) {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|
|
44
|
+
function getClassName(name) {
|
|
45
|
+
if (isQualifiedName(name)) {
|
|
46
|
+
return parseQualifiedName(name).className;
|
|
47
|
+
}
|
|
48
|
+
return name;
|
|
49
|
+
}
|
|
50
|
+
function getPackageFromQualifiedName(name) {
|
|
51
|
+
if (isQualifiedName(name)) {
|
|
52
|
+
return parseQualifiedName(name).packageName;
|
|
53
|
+
}
|
|
54
|
+
return void 0;
|
|
55
|
+
}
|
|
56
|
+
function qualifiedNamesEqual(a, b) {
|
|
57
|
+
return a === b;
|
|
58
|
+
}
|
|
59
|
+
function isFromPackage(qualifiedName, packageName) {
|
|
60
|
+
if (!isQualifiedName(qualifiedName)) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
const parsed = parseQualifiedName(qualifiedName);
|
|
64
|
+
return parsed.packageName === packageName;
|
|
65
|
+
}
|
|
66
|
+
function isType(qualifiedName, shortName) {
|
|
67
|
+
if (!qualifiedName) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
return getClassName(qualifiedName) === shortName;
|
|
71
|
+
}
|
|
72
|
+
export {
|
|
73
|
+
createQualifiedName,
|
|
74
|
+
getClassName,
|
|
75
|
+
getPackageFromQualifiedName,
|
|
76
|
+
isFromPackage,
|
|
77
|
+
isQualifiedName,
|
|
78
|
+
isType,
|
|
79
|
+
parseQualifiedName,
|
|
80
|
+
qualifiedNamesEqual
|
|
81
|
+
};
|
|
82
|
+
//# sourceMappingURL=qualified-names.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qualified-names.js","sources":["../../src/utils/qualified-names.ts"],"sourcesContent":["/**\n * Utilities for working with qualified class names in the SMRT framework.\n *\n * Qualified names follow the format: \"@package/name:ClassName\"\n * Example: \"@happyvertical/smrt-core:Product\"\n *\n * This format uniquely identifies classes across packages, eliminating\n * name collisions when multiple packages define classes with the same name.\n */\n\nimport type { QualifiedClassName } from '../scanner/types.js';\n\n/**\n * Creates a qualified class name from package name and class name.\n *\n * @param packageName - The npm package name (e.g., \"@happyvertical/smrt-core\")\n * @param className - The class name (e.g., \"Product\")\n * @returns Qualified name in format \"@package/name:ClassName\"\n *\n * @example\n * createQualifiedName('@happyvertical/smrt-core', 'Product')\n * // Returns: \"@happyvertical/smrt-core:Product\"\n */\nexport function createQualifiedName(\n packageName: string,\n className: string,\n): QualifiedClassName {\n if (!packageName) {\n throw new Error(\n `Cannot create qualified name: packageName is required. ` +\n `Got className=\"${className}\" but no packageName.`,\n );\n }\n if (!className) {\n throw new Error(\n `Cannot create qualified name: className is required. ` +\n `Got packageName=\"${packageName}\" but no className.`,\n );\n }\n return `${packageName}:${className}` as QualifiedClassName;\n}\n\n/**\n * Result of parsing a qualified class name.\n */\nexport interface ParsedQualifiedName {\n /** The package name (e.g., \"@happyvertical/smrt-core\") */\n packageName: string;\n /** The class name (e.g., \"Product\") */\n className: string;\n}\n\n/**\n * Parses a qualified class name into its components.\n *\n * @param qualifiedName - The qualified name to parse\n * @returns Object with packageName and className\n * @throws Error if the name is not a valid qualified name\n *\n * @example\n * parseQualifiedName('@happyvertical/smrt-core:Product')\n * // Returns: { packageName: '@happyvertical/smrt-core', className: 'Product' }\n */\nexport function parseQualifiedName(qualifiedName: string): ParsedQualifiedName {\n if (!isQualifiedName(qualifiedName)) {\n throw new Error(\n `Invalid qualified name: \"${qualifiedName}\". ` +\n `Expected format: \"@package/name:ClassName\"`,\n );\n }\n\n // Use lastIndexOf to handle edge cases like \"@scope/pkg:Nested:Class\"\n // (though class names shouldn't have colons, this is defensive)\n const colonIndex = qualifiedName.lastIndexOf(':');\n\n return {\n packageName: qualifiedName.slice(0, colonIndex),\n className: qualifiedName.slice(colonIndex + 1),\n };\n}\n\n/**\n * Checks if a name is a valid qualified class name.\n *\n * A valid qualified name:\n * - Contains a colon (:) separating package and class\n * - Has a package name with a forward slash (scoped npm package)\n * - Has a non-empty class name after the colon\n *\n * @param name - The name to check\n * @returns true if the name is a valid qualified class name\n *\n * @example\n * isQualifiedName('@happyvertical/smrt-core:Product') // true\n * isQualifiedName('Product') // false\n * isQualifiedName('smrt-core:Product') // false (no @ scope)\n */\nexport function isQualifiedName(name: string): name is QualifiedClassName {\n if (!name || typeof name !== 'string') {\n return false;\n }\n\n const colonIndex = name.lastIndexOf(':');\n if (colonIndex === -1) {\n return false;\n }\n\n const packageName = name.slice(0, colonIndex);\n const className = name.slice(colonIndex + 1);\n\n // Package name must be a scoped npm package (contains @)\n // and have a path (contains /)\n if (!packageName.startsWith('@') || !packageName.includes('/')) {\n return false;\n }\n\n // Class name must be non-empty\n if (!className) {\n return false;\n }\n\n return true;\n}\n\n/**\n * Extracts just the class name from a qualified name or simple name.\n * Useful when you need the class name regardless of whether\n * the input is qualified or not.\n *\n * @param name - Qualified name or simple class name\n * @returns The simple class name\n *\n * @example\n * getClassName('@happyvertical/smrt-core:Product') // 'Product'\n * getClassName('Product') // 'Product'\n */\nexport function getClassName(name: string): string {\n if (isQualifiedName(name)) {\n return parseQualifiedName(name).className;\n }\n return name;\n}\n\n/**\n * Extracts the package name from a qualified name.\n * Returns undefined if the name is not qualified.\n *\n * @param name - Qualified name or simple class name\n * @returns The package name, or undefined if not qualified\n *\n * @example\n * getPackageFromQualifiedName('@happyvertical/smrt-core:Product')\n * // Returns: '@happyvertical/smrt-core'\n *\n * getPackageFromQualifiedName('Product')\n * // Returns: undefined\n */\nexport function getPackageFromQualifiedName(name: string): string | undefined {\n if (isQualifiedName(name)) {\n return parseQualifiedName(name).packageName;\n }\n return undefined;\n}\n\n/**\n * Compares two qualified names for equality.\n * Case-sensitive comparison.\n *\n * @param a - First qualified name\n * @param b - Second qualified name\n * @returns true if the qualified names are equal\n */\nexport function qualifiedNamesEqual(a: string, b: string): boolean {\n return a === b;\n}\n\n/**\n * Checks if a qualified name belongs to a specific package.\n *\n * @param qualifiedName - The qualified name to check\n * @param packageName - The package name to match against\n * @returns true if the qualified name is from the specified package\n *\n * @example\n * isFromPackage('@happyvertical/smrt-core:Product', '@happyvertical/smrt-core')\n * // Returns: true\n */\nexport function isFromPackage(\n qualifiedName: string,\n packageName: string,\n): boolean {\n if (!isQualifiedName(qualifiedName)) {\n return false;\n }\n const parsed = parseQualifiedName(qualifiedName);\n return parsed.packageName === packageName;\n}\n\n/**\n * Checks if a qualified name (like `_meta_type`) matches a short class name.\n * This is useful for STI filtering where the database stores qualified names\n * but code often uses short names for comparisons.\n *\n * @param qualifiedName - The qualified name or simple name to check (e.g., from `_meta_type`)\n * @param shortName - The short class name to match against\n * @returns true if the class name portion matches\n *\n * @example\n * ```typescript\n * // Filtering STI records by type\n * const meetings = events.filter(e => isType(e._meta_type, 'Meeting'));\n *\n * // Works with both qualified and simple names\n * isType('@happyvertical/praeco:MeetingRecap', 'MeetingRecap') // true\n * isType('@happyvertical/praeco:MeetingRecap', 'Article') // false\n * isType('MeetingRecap', 'MeetingRecap') // true (simple name passthrough)\n * ```\n */\nexport function isType(\n qualifiedName: string | null | undefined,\n shortName: string,\n): boolean {\n if (!qualifiedName) {\n return false;\n }\n return getClassName(qualifiedName) === shortName;\n}\n"],"names":[],"mappings":"AAuBO,SAAS,oBACd,aACA,WACoB;AACpB,MAAI,CAAC,aAAa;AAChB,UAAM,IAAI;AAAA,MACR,yEACoB,SAAS;AAAA,IAAA;AAAA,EAEjC;AACA,MAAI,CAAC,WAAW;AACd,UAAM,IAAI;AAAA,MACR,yEACsB,WAAW;AAAA,IAAA;AAAA,EAErC;AACA,SAAO,GAAG,WAAW,IAAI,SAAS;AACpC;AAuBO,SAAS,mBAAmB,eAA4C;AAC7E,MAAI,CAAC,gBAAgB,aAAa,GAAG;AACnC,UAAM,IAAI;AAAA,MACR,4BAA4B,aAAa;AAAA,IAAA;AAAA,EAG7C;AAIA,QAAM,aAAa,cAAc,YAAY,GAAG;AAEhD,SAAO;AAAA,IACL,aAAa,cAAc,MAAM,GAAG,UAAU;AAAA,IAC9C,WAAW,cAAc,MAAM,aAAa,CAAC;AAAA,EAAA;AAEjD;AAkBO,SAAS,gBAAgB,MAA0C;AACxE,MAAI,CAAC,QAAQ,OAAO,SAAS,UAAU;AACrC,WAAO;AAAA,EACT;AAEA,QAAM,aAAa,KAAK,YAAY,GAAG;AACvC,MAAI,eAAe,IAAI;AACrB,WAAO;AAAA,EACT;AAEA,QAAM,cAAc,KAAK,MAAM,GAAG,UAAU;AAC5C,QAAM,YAAY,KAAK,MAAM,aAAa,CAAC;AAI3C,MAAI,CAAC,YAAY,WAAW,GAAG,KAAK,CAAC,YAAY,SAAS,GAAG,GAAG;AAC9D,WAAO;AAAA,EACT;AAGA,MAAI,CAAC,WAAW;AACd,WAAO;AAAA,EACT;AAEA,SAAO;AACT;AAcO,SAAS,aAAa,MAAsB;AACjD,MAAI,gBAAgB,IAAI,GAAG;AACzB,WAAO,mBAAmB,IAAI,EAAE;AAAA,EAClC;AACA,SAAO;AACT;AAgBO,SAAS,4BAA4B,MAAkC;AAC5E,MAAI,gBAAgB,IAAI,GAAG;AACzB,WAAO,mBAAmB,IAAI,EAAE;AAAA,EAClC;AACA,SAAO;AACT;AAUO,SAAS,oBAAoB,GAAW,GAAoB;AACjE,SAAO,MAAM;AACf;AAaO,SAAS,cACd,eACA,aACS;AACT,MAAI,CAAC,gBAAgB,aAAa,GAAG;AACnC,WAAO;AAAA,EACT;AACA,QAAM,SAAS,mBAAmB,aAAa;AAC/C,SAAO,OAAO,gBAAgB;AAChC;AAsBO,SAAS,OACd,eACA,WACS;AACT,MAAI,CAAC,eAAe;AAClB,WAAO;AAAA,EACT;AACA,SAAO,aAAa,aAAa,MAAM;AACzC;"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { SmartObjectManifest } from '../scanner/types.js';
|
|
2
|
+
export interface OxcScannerLike {
|
|
3
|
+
scanAndResolve(): Promise<{
|
|
4
|
+
results: {
|
|
5
|
+
typeAliases: Record<string, string>;
|
|
6
|
+
errors: Array<{
|
|
7
|
+
filePath: string;
|
|
8
|
+
message: string;
|
|
9
|
+
line?: number;
|
|
10
|
+
}>;
|
|
11
|
+
};
|
|
12
|
+
resolved: unknown[];
|
|
13
|
+
}>;
|
|
14
|
+
}
|
|
15
|
+
export interface OxcScannerConstructor {
|
|
16
|
+
new (options: {
|
|
17
|
+
cwd: string;
|
|
18
|
+
include?: string[];
|
|
19
|
+
exclude?: string[];
|
|
20
|
+
baseClasses?: string[];
|
|
21
|
+
includePrivateMethods?: boolean;
|
|
22
|
+
includeStaticMethods?: boolean;
|
|
23
|
+
followImports?: boolean;
|
|
24
|
+
}): OxcScannerLike;
|
|
25
|
+
}
|
|
26
|
+
export interface ManifestAdapterLike {
|
|
27
|
+
toManifest(resolved: unknown[], options: {
|
|
28
|
+
packageName?: string;
|
|
29
|
+
packageVersion?: string;
|
|
30
|
+
typeAliases: Record<string, string>;
|
|
31
|
+
}): SmartObjectManifest;
|
|
32
|
+
}
|
|
33
|
+
export interface ScannerModule {
|
|
34
|
+
OxcScanner: OxcScannerConstructor;
|
|
35
|
+
ManifestAdapter: new () => ManifestAdapterLike;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=scanner-module.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner-module.d.ts","sourceRoot":"","sources":["../../src/utils/scanner-module.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,cAAc,IAAI,OAAO,CAAC;QACxB,OAAO,EAAE;YACP,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACpC,MAAM,EAAE,KAAK,CAAC;gBACZ,QAAQ,EAAE,MAAM,CAAC;gBACjB,OAAO,EAAE,MAAM,CAAC;gBAChB,IAAI,CAAC,EAAE,MAAM,CAAC;aACf,CAAC,CAAC;SACJ,CAAC;QACF,QAAQ,EAAE,OAAO,EAAE,CAAC;KACrB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,OAAO,EAAE;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;QACvB,qBAAqB,CAAC,EAAE,OAAO,CAAC;QAChC,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;KACzB,GAAG,cAAc,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,UAAU,CACR,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACrC,GACA,mBAAmB,CAAC;CACxB;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,qBAAqB,CAAC;IAClC,eAAe,EAAE,UAAU,mBAAmB,CAAC;CAChD"}
|