@vibesdotdev/config 0.0.1
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/README.md +85 -0
- package/SPEC.md +71 -0
- package/dist/adapters/cli/flags.d.ts +75 -0
- package/dist/adapters/cli/flags.d.ts.map +1 -0
- package/dist/adapters/cli/flags.js +221 -0
- package/dist/adapters/cli/flags.js.map +1 -0
- package/dist/adapters/cli/index.d.ts +12 -0
- package/dist/adapters/cli/index.d.ts.map +1 -0
- package/dist/adapters/cli/index.js +9 -0
- package/dist/adapters/cli/index.js.map +1 -0
- package/dist/adapters/cli/mappings.d.ts +17 -0
- package/dist/adapters/cli/mappings.d.ts.map +1 -0
- package/dist/adapters/cli/mappings.js +32 -0
- package/dist/adapters/cli/mappings.js.map +1 -0
- package/dist/adapters/cli/prompts.d.ts +28 -0
- package/dist/adapters/cli/prompts.d.ts.map +1 -0
- package/dist/adapters/cli/prompts.js +55 -0
- package/dist/adapters/cli/prompts.js.map +1 -0
- package/dist/adapters/cli/schemas/flags.schema.d.ts +8 -0
- package/dist/adapters/cli/schemas/flags.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/flags.schema.js +2 -0
- package/dist/adapters/cli/schemas/flags.schema.js.map +1 -0
- package/dist/adapters/cli/schemas/mappings.schema.d.ts +2 -0
- package/dist/adapters/cli/schemas/mappings.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/mappings.schema.js +2 -0
- package/dist/adapters/cli/schemas/mappings.schema.js.map +1 -0
- package/dist/adapters/cli/schemas/prompts.schema.d.ts +5 -0
- package/dist/adapters/cli/schemas/prompts.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/prompts.schema.js +2 -0
- package/dist/adapters/cli/schemas/prompts.schema.js.map +1 -0
- package/dist/adapters/cli/schemas/wizard.schema.d.ts +19 -0
- package/dist/adapters/cli/schemas/wizard.schema.d.ts.map +1 -0
- package/dist/adapters/cli/schemas/wizard.schema.js +2 -0
- package/dist/adapters/cli/schemas/wizard.schema.js.map +1 -0
- package/dist/adapters/cli/wizard.d.ts +33 -0
- package/dist/adapters/cli/wizard.d.ts.map +1 -0
- package/dist/adapters/cli/wizard.js +77 -0
- package/dist/adapters/cli/wizard.js.map +1 -0
- package/dist/browser/index.d.ts +7 -0
- package/dist/browser/index.d.ts.map +1 -0
- package/dist/browser/index.js +4 -0
- package/dist/browser/index.js.map +1 -0
- package/dist/cli/settings.descriptor.d.ts +9 -0
- package/dist/cli/settings.descriptor.d.ts.map +1 -0
- package/dist/cli/settings.descriptor.js +18 -0
- package/dist/cli/settings.descriptor.js.map +1 -0
- package/dist/cli/types.d.ts +57 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +9 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/client/index.d.ts +19 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +145 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/storage.d.ts +48 -0
- package/dist/client/storage.d.ts.map +1 -0
- package/dist/client/storage.js +46 -0
- package/dist/client/storage.js.map +1 -0
- package/dist/collection/collection.d.ts +46 -0
- package/dist/collection/collection.d.ts.map +1 -0
- package/dist/collection/collection.js +93 -0
- package/dist/collection/collection.js.map +1 -0
- package/dist/collection/index.d.ts +6 -0
- package/dist/collection/index.d.ts.map +1 -0
- package/dist/collection/index.js +5 -0
- package/dist/collection/index.js.map +1 -0
- package/dist/common/index.d.ts +7 -0
- package/dist/common/index.d.ts.map +1 -0
- package/dist/common/index.js +4 -0
- package/dist/common/index.js.map +1 -0
- package/dist/config.context.descriptor.d.ts +21 -0
- package/dist/config.context.descriptor.d.ts.map +1 -0
- package/dist/config.context.descriptor.js +11 -0
- package/dist/config.context.descriptor.js.map +1 -0
- package/dist/config.plugin.d.ts +15 -0
- package/dist/config.plugin.d.ts.map +1 -0
- package/dist/config.plugin.js +166 -0
- package/dist/config.plugin.js.map +1 -0
- package/dist/crud/base-types.d.ts +10 -0
- package/dist/crud/base-types.d.ts.map +1 -0
- package/dist/crud/base-types.js +10 -0
- package/dist/crud/base-types.js.map +1 -0
- package/dist/crud/index.d.ts +4 -0
- package/dist/crud/index.d.ts.map +1 -0
- package/dist/crud/index.js +2 -0
- package/dist/crud/index.js.map +1 -0
- package/dist/crud/schemas/base-types.schema.d.ts +19 -0
- package/dist/crud/schemas/base-types.schema.d.ts.map +1 -0
- package/dist/crud/schemas/base-types.schema.js +2 -0
- package/dist/crud/schemas/base-types.schema.js.map +1 -0
- package/dist/crud/schemas/shared.schema.d.ts +13 -0
- package/dist/crud/schemas/shared.schema.d.ts.map +1 -0
- package/dist/crud/schemas/shared.schema.js +2 -0
- package/dist/crud/schemas/shared.schema.js.map +1 -0
- package/dist/crud/shared.d.ts +8 -0
- package/dist/crud/shared.d.ts.map +1 -0
- package/dist/crud/shared.js +8 -0
- package/dist/crud/shared.js.map +1 -0
- package/dist/crud/types.d.ts +250 -0
- package/dist/crud/types.d.ts.map +1 -0
- package/dist/crud/types.js +22 -0
- package/dist/crud/types.js.map +1 -0
- package/dist/docs/environment.docs.descriptor.d.ts +4 -0
- package/dist/docs/environment.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/environment.docs.descriptor.js +383 -0
- package/dist/docs/environment.docs.descriptor.js.map +1 -0
- package/dist/docs/manifests.docs.descriptor.d.ts +4 -0
- package/dist/docs/manifests.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/manifests.docs.descriptor.js +503 -0
- package/dist/docs/manifests.docs.descriptor.js.map +1 -0
- package/dist/docs/validation.docs.descriptor.d.ts +4 -0
- package/dist/docs/validation.docs.descriptor.d.ts.map +1 -0
- package/dist/docs/validation.docs.descriptor.js +441 -0
- package/dist/docs/validation.docs.descriptor.js.map +1 -0
- package/dist/doctor.d.ts +42 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +119 -0
- package/dist/doctor.js.map +1 -0
- package/dist/env.d.ts +28 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +75 -0
- package/dist/env.js.map +1 -0
- package/dist/env.runtime.d.ts +19 -0
- package/dist/env.runtime.d.ts.map +1 -0
- package/dist/env.runtime.js +37 -0
- package/dist/env.runtime.js.map +1 -0
- package/dist/environment/current.d.ts +32 -0
- package/dist/environment/current.d.ts.map +1 -0
- package/dist/environment/current.js +91 -0
- package/dist/environment/current.js.map +1 -0
- package/dist/environment/environment.config.descriptor.d.ts +11 -0
- package/dist/environment/environment.config.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.config.descriptor.js +51 -0
- package/dist/environment/environment.config.descriptor.js.map +1 -0
- package/dist/environment/environment.config.schema.d.ts +47 -0
- package/dist/environment/environment.config.schema.d.ts.map +1 -0
- package/dist/environment/environment.config.schema.js +19 -0
- package/dist/environment/environment.config.schema.js.map +1 -0
- package/dist/environment/environment.local.descriptor.d.ts +11 -0
- package/dist/environment/environment.local.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.local.descriptor.js +42 -0
- package/dist/environment/environment.local.descriptor.js.map +1 -0
- package/dist/environment/environment.plugin.d.ts +9 -0
- package/dist/environment/environment.plugin.d.ts.map +1 -0
- package/dist/environment/environment.plugin.js +27 -0
- package/dist/environment/environment.plugin.js.map +1 -0
- package/dist/environment/environment.production.descriptor.d.ts +10 -0
- package/dist/environment/environment.production.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.production.descriptor.js +37 -0
- package/dist/environment/environment.production.descriptor.js.map +1 -0
- package/dist/environment/environment.staging.descriptor.d.ts +11 -0
- package/dist/environment/environment.staging.descriptor.d.ts.map +1 -0
- package/dist/environment/environment.staging.descriptor.js +22 -0
- package/dist/environment/environment.staging.descriptor.js.map +1 -0
- package/dist/environment/index.d.ts +8 -0
- package/dist/environment/index.d.ts.map +1 -0
- package/dist/environment/index.js +9 -0
- package/dist/environment/index.js.map +1 -0
- package/dist/environment/kinds/environment.default.d.ts +23 -0
- package/dist/environment/kinds/environment.default.d.ts.map +1 -0
- package/dist/environment/kinds/environment.default.js +49 -0
- package/dist/environment/kinds/environment.default.js.map +1 -0
- package/dist/environment/kinds/environment.interface.d.ts +7 -0
- package/dist/environment/kinds/environment.interface.d.ts.map +1 -0
- package/dist/environment/kinds/environment.interface.js +7 -0
- package/dist/environment/kinds/environment.interface.js.map +1 -0
- package/dist/environment/kinds/environment.kind.d.ts +10 -0
- package/dist/environment/kinds/environment.kind.d.ts.map +1 -0
- package/dist/environment/kinds/environment.kind.js +57 -0
- package/dist/environment/kinds/environment.kind.js.map +1 -0
- package/dist/environment/kinds/environment.schema.d.ts +34 -0
- package/dist/environment/kinds/environment.schema.d.ts.map +1 -0
- package/dist/environment/kinds/environment.schema.js +46 -0
- package/dist/environment/kinds/environment.schema.js.map +1 -0
- package/dist/environment/kinds/index.d.ts +8 -0
- package/dist/environment/kinds/index.d.ts.map +1 -0
- package/dist/environment/kinds/index.js +7 -0
- package/dist/environment/kinds/index.js.map +1 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.d.ts +11 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.d.ts.map +1 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.js +2 -0
- package/dist/environment/kinds/schemas/environment.interface.schema.js.map +1 -0
- package/dist/environment/kinds/schemas/environment.schema.d.ts +30 -0
- package/dist/environment/kinds/schemas/environment.schema.d.ts.map +1 -0
- package/dist/environment/kinds/schemas/environment.schema.js +2 -0
- package/dist/environment/kinds/schemas/environment.schema.js.map +1 -0
- package/dist/environment/schemas/current.schema.d.ts +20 -0
- package/dist/environment/schemas/current.schema.d.ts.map +1 -0
- package/dist/environment/schemas/current.schema.js +2 -0
- package/dist/environment/schemas/current.schema.js.map +1 -0
- package/dist/environment/schemas/environment.config.schema.d.ts +4 -0
- package/dist/environment/schemas/environment.config.schema.d.ts.map +1 -0
- package/dist/environment/schemas/environment.config.schema.js +2 -0
- package/dist/environment/schemas/environment.config.schema.js.map +1 -0
- package/dist/extensions/index.d.ts +8 -0
- package/dist/extensions/index.d.ts.map +1 -0
- package/dist/extensions/index.js +8 -0
- package/dist/extensions/index.js.map +1 -0
- package/dist/extensions/registry.d.ts +41 -0
- package/dist/extensions/registry.d.ts.map +1 -0
- package/dist/extensions/registry.js +142 -0
- package/dist/extensions/registry.js.map +1 -0
- package/dist/extensions/types.d.ts +101 -0
- package/dist/extensions/types.d.ts.map +1 -0
- package/dist/extensions/types.js +8 -0
- package/dist/extensions/types.js.map +1 -0
- package/dist/form/core/field-resolver.d.ts +42 -0
- package/dist/form/core/field-resolver.d.ts.map +1 -0
- package/dist/form/core/field-resolver.js +293 -0
- package/dist/form/core/field-resolver.js.map +1 -0
- package/dist/form/core/groups.d.ts +20 -0
- package/dist/form/core/groups.d.ts.map +1 -0
- package/dist/form/core/groups.js +69 -0
- package/dist/form/core/groups.js.map +1 -0
- package/dist/form/core/index.d.ts +8 -0
- package/dist/form/core/index.d.ts.map +1 -0
- package/dist/form/core/index.js +6 -0
- package/dist/form/core/index.js.map +1 -0
- package/dist/form/core/nested-utils.d.ts +40 -0
- package/dist/form/core/nested-utils.d.ts.map +1 -0
- package/dist/form/core/nested-utils.js +98 -0
- package/dist/form/core/nested-utils.js.map +1 -0
- package/dist/form/core/schemas/validation.schema.d.ts +9 -0
- package/dist/form/core/schemas/validation.schema.d.ts.map +1 -0
- package/dist/form/core/schemas/validation.schema.js +2 -0
- package/dist/form/core/schemas/validation.schema.js.map +1 -0
- package/dist/form/core/types.d.ts +103 -0
- package/dist/form/core/types.d.ts.map +1 -0
- package/dist/form/core/types.js +2 -0
- package/dist/form/core/types.js.map +1 -0
- package/dist/form/core/validation.d.ts +23 -0
- package/dist/form/core/validation.d.ts.map +1 -0
- package/dist/form/core/validation.js +103 -0
- package/dist/form/core/validation.js.map +1 -0
- package/dist/form/core/visibility.d.ts +37 -0
- package/dist/form/core/visibility.d.ts.map +1 -0
- package/dist/form/core/visibility.js +128 -0
- package/dist/form/core/visibility.js.map +1 -0
- package/dist/form/index.d.ts +8 -0
- package/dist/form/index.d.ts.map +1 -0
- package/dist/form/index.js +2 -0
- package/dist/form/index.js.map +1 -0
- package/dist/index.d.ts +18 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/dist/loader/cli/index.d.ts +61 -0
- package/dist/loader/cli/index.d.ts.map +1 -0
- package/dist/loader/cli/index.js +263 -0
- package/dist/loader/cli/index.js.map +1 -0
- package/dist/loader/cli/loaders.d.ts +13 -0
- package/dist/loader/cli/loaders.d.ts.map +1 -0
- package/dist/loader/cli/loaders.js +132 -0
- package/dist/loader/cli/loaders.js.map +1 -0
- package/dist/loader/cli/types.d.ts +152 -0
- package/dist/loader/cli/types.d.ts.map +1 -0
- package/dist/loader/cli/types.js +5 -0
- package/dist/loader/cli/types.js.map +1 -0
- package/dist/loader/cli/utils.d.ts +53 -0
- package/dist/loader/cli/utils.d.ts.map +1 -0
- package/dist/loader/cli/utils.js +198 -0
- package/dist/loader/cli/utils.js.map +1 -0
- package/dist/loader/client.d.ts +18 -0
- package/dist/loader/client.d.ts.map +1 -0
- package/dist/loader/client.js +109 -0
- package/dist/loader/client.js.map +1 -0
- package/dist/loader/discovery.d.ts +48 -0
- package/dist/loader/discovery.d.ts.map +1 -0
- package/dist/loader/discovery.js +253 -0
- package/dist/loader/discovery.js.map +1 -0
- package/dist/loader/file-loader.d.ts +17 -0
- package/dist/loader/file-loader.d.ts.map +1 -0
- package/dist/loader/file-loader.js +237 -0
- package/dist/loader/file-loader.js.map +1 -0
- package/dist/loader/index.d.ts +9 -0
- package/dist/loader/index.d.ts.map +1 -0
- package/dist/loader/index.js +8 -0
- package/dist/loader/index.js.map +1 -0
- package/dist/loader/index.server.d.ts +66 -0
- package/dist/loader/index.server.d.ts.map +1 -0
- package/dist/loader/index.server.js +256 -0
- package/dist/loader/index.server.js.map +1 -0
- package/dist/loader/merge.d.ts +88 -0
- package/dist/loader/merge.d.ts.map +1 -0
- package/dist/loader/merge.js +301 -0
- package/dist/loader/merge.js.map +1 -0
- package/dist/loader/schemas/merge.schema.d.ts +8 -0
- package/dist/loader/schemas/merge.schema.d.ts.map +1 -0
- package/dist/loader/schemas/merge.schema.js +2 -0
- package/dist/loader/schemas/merge.schema.js.map +1 -0
- package/dist/loader/schemas/validation.schema.d.ts +17 -0
- package/dist/loader/schemas/validation.schema.d.ts.map +1 -0
- package/dist/loader/schemas/validation.schema.js +2 -0
- package/dist/loader/schemas/validation.schema.js.map +1 -0
- package/dist/loader/server.d.ts +3 -0
- package/dist/loader/server.d.ts.map +1 -0
- package/dist/loader/server.js +2 -0
- package/dist/loader/server.js.map +1 -0
- package/dist/loader/types.d.ts +136 -0
- package/dist/loader/types.d.ts.map +1 -0
- package/dist/loader/types.js +24 -0
- package/dist/loader/types.js.map +1 -0
- package/dist/loader/validation.d.ts +59 -0
- package/dist/loader/validation.d.ts.map +1 -0
- package/dist/loader/validation.js +218 -0
- package/dist/loader/validation.js.map +1 -0
- package/dist/manifest/builder.d.ts +172 -0
- package/dist/manifest/builder.d.ts.map +1 -0
- package/dist/manifest/builder.js +336 -0
- package/dist/manifest/builder.js.map +1 -0
- package/dist/manifest/config-manifest.d.ts +199 -0
- package/dist/manifest/config-manifest.d.ts.map +1 -0
- package/dist/manifest/config-manifest.js +388 -0
- package/dist/manifest/config-manifest.js.map +1 -0
- package/dist/manifest/index.d.ts +10 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +20 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/schema.d.ts +460 -0
- package/dist/manifest/schema.d.ts.map +1 -0
- package/dist/manifest/schema.js +187 -0
- package/dist/manifest/schema.js.map +1 -0
- package/dist/manifest/schemas/builder.schema.d.ts +20 -0
- package/dist/manifest/schemas/builder.schema.d.ts.map +1 -0
- package/dist/manifest/schemas/builder.schema.js +2 -0
- package/dist/manifest/schemas/builder.schema.js.map +1 -0
- package/dist/manifest/schemas/config-manifest.schema.d.ts +2 -0
- package/dist/manifest/schemas/config-manifest.schema.d.ts.map +1 -0
- package/dist/manifest/schemas/config-manifest.schema.js +2 -0
- package/dist/manifest/schemas/config-manifest.schema.js.map +1 -0
- package/dist/manifest/schemas/schema.schema.d.ts +83 -0
- package/dist/manifest/schemas/schema.schema.d.ts.map +1 -0
- package/dist/manifest/schemas/schema.schema.js +2 -0
- package/dist/manifest/schemas/schema.schema.js.map +1 -0
- package/dist/manifest/types.d.ts +563 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +9 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/routing/index.d.ts +29 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +35 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/routing/merge.d.ts +164 -0
- package/dist/routing/merge.d.ts.map +1 -0
- package/dist/routing/merge.js +460 -0
- package/dist/routing/merge.js.map +1 -0
- package/dist/routing/registry.d.ts +145 -0
- package/dist/routing/registry.d.ts.map +1 -0
- package/dist/routing/registry.js +459 -0
- package/dist/routing/registry.js.map +1 -0
- package/dist/routing/schemas/merge.schema.d.ts +5 -0
- package/dist/routing/schemas/merge.schema.d.ts.map +1 -0
- package/dist/routing/schemas/merge.schema.js +2 -0
- package/dist/routing/schemas/merge.schema.js.map +1 -0
- package/dist/routing/types.d.ts +358 -0
- package/dist/routing/types.d.ts.map +1 -0
- package/dist/routing/types.js +89 -0
- package/dist/routing/types.js.map +1 -0
- package/dist/schema/extend-zod.d.ts +137 -0
- package/dist/schema/extend-zod.d.ts.map +1 -0
- package/dist/schema/extend-zod.js +243 -0
- package/dist/schema/extend-zod.js.map +1 -0
- package/dist/schema/index.d.ts +9 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +10 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/references.d.ts +9 -0
- package/dist/schema/references.d.ts.map +1 -0
- package/dist/schema/references.js +9 -0
- package/dist/schema/references.js.map +1 -0
- package/dist/schema/resolver.d.ts +45 -0
- package/dist/schema/resolver.d.ts.map +1 -0
- package/dist/schema/resolver.js +267 -0
- package/dist/schema/resolver.js.map +1 -0
- package/dist/schema/schemas/extend-zod.schema.d.ts +16 -0
- package/dist/schema/schemas/extend-zod.schema.d.ts.map +1 -0
- package/dist/schema/schemas/extend-zod.schema.js +2 -0
- package/dist/schema/schemas/extend-zod.schema.js.map +1 -0
- package/dist/schema/schemas/references.schema.d.ts +70 -0
- package/dist/schema/schemas/references.schema.d.ts.map +1 -0
- package/dist/schema/schemas/references.schema.js +2 -0
- package/dist/schema/schemas/references.schema.js.map +1 -0
- package/dist/schemas/collection.d.ts +31 -0
- package/dist/schemas/collection.d.ts.map +1 -0
- package/dist/schemas/collection.js +22 -0
- package/dist/schemas/collection.js.map +1 -0
- package/dist/schemas/config-manifest-descriptor.d.ts +495 -0
- package/dist/schemas/config-manifest-descriptor.d.ts.map +1 -0
- package/dist/schemas/config-manifest-descriptor.js +210 -0
- package/dist/schemas/config-manifest-descriptor.js.map +1 -0
- package/dist/schemas/config-registry-state.d.ts +8 -0
- package/dist/schemas/config-registry-state.d.ts.map +1 -0
- package/dist/schemas/config-registry-state.js +6 -0
- package/dist/schemas/config-registry-state.js.map +1 -0
- package/dist/schemas/doctor.schema.d.ts +25 -0
- package/dist/schemas/doctor.schema.d.ts.map +1 -0
- package/dist/schemas/doctor.schema.js +2 -0
- package/dist/schemas/doctor.schema.js.map +1 -0
- package/dist/schemas/index.d.ts +8 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +21 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -0
- package/dist/services/config-accessor.d.ts +40 -0
- package/dist/services/config-accessor.d.ts.map +1 -0
- package/dist/services/config-accessor.js +180 -0
- package/dist/services/config-accessor.js.map +1 -0
- package/dist/services/config-storage/index.d.ts +8 -0
- package/dist/services/config-storage/index.d.ts.map +1 -0
- package/dist/services/config-storage/index.js +7 -0
- package/dist/services/config-storage/index.js.map +1 -0
- package/dist/services/config-storage/service.d.ts +63 -0
- package/dist/services/config-storage/service.d.ts.map +1 -0
- package/dist/services/config-storage/service.js +234 -0
- package/dist/services/config-storage/service.js.map +1 -0
- package/dist/services/config.d.ts +3 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +30 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/encryption.d.ts +114 -0
- package/dist/services/encryption.d.ts.map +1 -0
- package/dist/services/encryption.js +232 -0
- package/dist/services/encryption.js.map +1 -0
- package/dist/services/index.d.ts +12 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +16 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/loader/loader.descriptor.d.ts +103 -0
- package/dist/services/loader/loader.descriptor.d.ts.map +1 -0
- package/dist/services/loader/loader.descriptor.js +60 -0
- package/dist/services/loader/loader.descriptor.js.map +1 -0
- package/dist/services/loader/loader.impl.cloud.d.ts +55 -0
- package/dist/services/loader/loader.impl.cloud.d.ts.map +1 -0
- package/dist/services/loader/loader.impl.cloud.js +182 -0
- package/dist/services/loader/loader.impl.cloud.js.map +1 -0
- package/dist/services/loader/loader.impl.consumer.d.ts +48 -0
- package/dist/services/loader/loader.impl.consumer.d.ts.map +1 -0
- package/dist/services/loader/loader.impl.consumer.js +175 -0
- package/dist/services/loader/loader.impl.consumer.js.map +1 -0
- package/dist/services/loader/loader.impl.consumer.local-first.d.ts +59 -0
- package/dist/services/loader/loader.impl.consumer.local-first.d.ts.map +1 -0
- package/dist/services/loader/loader.impl.consumer.local-first.js +347 -0
- package/dist/services/loader/loader.impl.consumer.local-first.js.map +1 -0
- package/dist/services/manifest-utils.d.ts +47 -0
- package/dist/services/manifest-utils.d.ts.map +1 -0
- package/dist/services/manifest-utils.js +105 -0
- package/dist/services/manifest-utils.js.map +1 -0
- package/dist/services/schemas/config-accessor.schema.d.ts +10 -0
- package/dist/services/schemas/config-accessor.schema.d.ts.map +1 -0
- package/dist/services/schemas/config-accessor.schema.js +2 -0
- package/dist/services/schemas/config-accessor.schema.js.map +1 -0
- package/dist/services/schemas/encryption.schema.d.ts +22 -0
- package/dist/services/schemas/encryption.schema.d.ts.map +1 -0
- package/dist/services/schemas/encryption.schema.js +2 -0
- package/dist/services/schemas/encryption.schema.js.map +1 -0
- package/dist/services/schemas/manifest-utils.schema.d.ts +4 -0
- package/dist/services/schemas/manifest-utils.schema.d.ts.map +1 -0
- package/dist/services/schemas/manifest-utils.schema.js +2 -0
- package/dist/services/schemas/manifest-utils.schema.js.map +1 -0
- package/dist/settings/assemble.d.ts +28 -0
- package/dist/settings/assemble.d.ts.map +1 -0
- package/dist/settings/assemble.js +30 -0
- package/dist/settings/assemble.js.map +1 -0
- package/dist/settings/index.d.ts +10 -0
- package/dist/settings/index.d.ts.map +1 -0
- package/dist/settings/index.js +10 -0
- package/dist/settings/index.js.map +1 -0
- package/dist/settings/settings-section.schema.d.ts +49 -0
- package/dist/settings/settings-section.schema.d.ts.map +1 -0
- package/dist/settings/settings-section.schema.js +70 -0
- package/dist/settings/settings-section.schema.js.map +1 -0
- package/dist/storage/adapter.d.ts +11 -0
- package/dist/storage/adapter.d.ts.map +1 -0
- package/dist/storage/adapter.js +8 -0
- package/dist/storage/adapter.js.map +1 -0
- package/dist/storage/index.d.ts +8 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +8 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/schemas.d.ts +257 -0
- package/dist/storage/schemas.d.ts.map +1 -0
- package/dist/storage/schemas.js +179 -0
- package/dist/storage/schemas.js.map +1 -0
- package/dist/storage/types.d.ts +74 -0
- package/dist/storage/types.d.ts.map +1 -0
- package/dist/storage/types.js +7 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/system-constants.d.ts +95 -0
- package/dist/system-constants.d.ts.map +1 -0
- package/dist/system-constants.js +110 -0
- package/dist/system-constants.js.map +1 -0
- package/package.json +417 -0
- package/src/adapters/cli/flags.ts +260 -0
- package/src/adapters/cli/index.ts +24 -0
- package/src/adapters/cli/mappings.ts +43 -0
- package/src/adapters/cli/prompts.ts +70 -0
- package/src/adapters/cli/schemas/flags.schema.ts +8 -0
- package/src/adapters/cli/schemas/mappings.schema.ts +3 -0
- package/src/adapters/cli/schemas/prompts.schema.ts +4 -0
- package/src/adapters/cli/schemas/wizard.schema.ts +21 -0
- package/src/adapters/cli/wizard.ts +106 -0
- package/src/adapters/web/components/ManifestForm.svelte +817 -0
- package/src/browser/index.ts +86 -0
- package/src/cli/settings.descriptor.ts +23 -0
- package/src/cli/types.ts +59 -0
- package/src/client/index.ts +169 -0
- package/src/client/storage.ts +76 -0
- package/src/collection/collection.ts +121 -0
- package/src/collection/index.ts +6 -0
- package/src/common/index.ts +86 -0
- package/src/config.context.descriptor.ts +12 -0
- package/src/config.plugin.ts +214 -0
- package/src/crud/base-types.ts +10 -0
- package/src/crud/index.ts +15 -0
- package/src/crud/schemas/base-types.schema.ts +20 -0
- package/src/crud/schemas/shared.schema.ts +14 -0
- package/src/crud/shared.ts +8 -0
- package/src/crud/types.ts +299 -0
- package/src/docs/environment.docs.descriptor.ts +385 -0
- package/src/docs/manifests.docs.descriptor.ts +505 -0
- package/src/docs/validation.docs.descriptor.ts +443 -0
- package/src/doctor.ts +143 -0
- package/src/env.runtime.ts +49 -0
- package/src/env.ts +91 -0
- package/src/environment/current.ts +108 -0
- package/src/environment/environment.config.descriptor.ts +60 -0
- package/src/environment/environment.config.schema.ts +24 -0
- package/src/environment/environment.local.descriptor.ts +45 -0
- package/src/environment/environment.plugin.ts +31 -0
- package/src/environment/environment.production.descriptor.ts +40 -0
- package/src/environment/environment.staging.descriptor.ts +25 -0
- package/src/environment/index.ts +22 -0
- package/src/environment/kinds/environment.default.ts +57 -0
- package/src/environment/kinds/environment.interface.ts +10 -0
- package/src/environment/kinds/environment.kind.ts +69 -0
- package/src/environment/kinds/environment.schema.ts +57 -0
- package/src/environment/kinds/index.ts +8 -0
- package/src/environment/kinds/schemas/environment.interface.schema.ts +11 -0
- package/src/environment/kinds/schemas/environment.schema.ts +24 -0
- package/src/environment/schemas/current.schema.ts +21 -0
- package/src/environment/schemas/environment.config.schema.ts +3 -0
- package/src/extensions/index.ts +26 -0
- package/src/extensions/registry.ts +179 -0
- package/src/extensions/types.ts +123 -0
- package/src/form/core/field-resolver.ts +380 -0
- package/src/form/core/groups.ts +96 -0
- package/src/form/core/index.ts +41 -0
- package/src/form/core/nested-utils.ts +115 -0
- package/src/form/core/schemas/validation.schema.ts +9 -0
- package/src/form/core/types.ts +115 -0
- package/src/form/core/validation.ts +137 -0
- package/src/form/core/visibility.ts +172 -0
- package/src/form/index.ts +36 -0
- package/src/index.ts +69 -0
- package/src/js-yaml.d.ts +4 -0
- package/src/loader/cli/index.ts +386 -0
- package/src/loader/cli/loaders.ts +153 -0
- package/src/loader/cli/types.ts +181 -0
- package/src/loader/cli/utils.ts +236 -0
- package/src/loader/client.ts +140 -0
- package/src/loader/discovery.ts +291 -0
- package/src/loader/file-loader.ts +262 -0
- package/src/loader/index.server.ts +389 -0
- package/src/loader/index.ts +18 -0
- package/src/loader/merge.ts +366 -0
- package/src/loader/schemas/merge.schema.ts +8 -0
- package/src/loader/schemas/validation.schema.ts +18 -0
- package/src/loader/server.ts +15 -0
- package/src/loader/types.ts +142 -0
- package/src/loader/validation.ts +261 -0
- package/src/manifest/builder.ts +452 -0
- package/src/manifest/config-manifest.ts +482 -0
- package/src/manifest/index.ts +92 -0
- package/src/manifest/schema.ts +249 -0
- package/src/manifest/schemas/builder.schema.ts +33 -0
- package/src/manifest/schemas/config-manifest.schema.ts +1 -0
- package/src/manifest/schemas/schema.schema.ts +99 -0
- package/src/manifest/types.ts +726 -0
- package/src/routing/index.ts +105 -0
- package/src/routing/merge.ts +589 -0
- package/src/routing/registry.ts +595 -0
- package/src/routing/schemas/merge.schema.ts +6 -0
- package/src/routing/types.ts +470 -0
- package/src/schema/extend-zod.ts +289 -0
- package/src/schema/index.ts +44 -0
- package/src/schema/references.ts +21 -0
- package/src/schema/resolver.ts +343 -0
- package/src/schema/schemas/extend-zod.schema.ts +16 -0
- package/src/schema/schemas/references.schema.ts +86 -0
- package/src/schemas/collection.ts +38 -0
- package/src/schemas/config-manifest-descriptor.ts +259 -0
- package/src/schemas/config-registry-state.ts +13 -0
- package/src/schemas/doctor.schema.ts +27 -0
- package/src/schemas/index.ts +53 -0
- package/src/server/index.ts +4 -0
- package/src/services/config-accessor.ts +218 -0
- package/src/services/config-storage/index.ts +8 -0
- package/src/services/config-storage/service.ts +355 -0
- package/src/services/config.ts +37 -0
- package/src/services/encryption.ts +260 -0
- package/src/services/index.ts +34 -0
- package/src/services/loader/loader.descriptor.ts +96 -0
- package/src/services/loader/loader.impl.cloud.ts +214 -0
- package/src/services/loader/loader.impl.consumer.local-first.ts +417 -0
- package/src/services/loader/loader.impl.consumer.ts +213 -0
- package/src/services/manifest-utils.ts +119 -0
- package/src/services/schemas/config-accessor.schema.ts +11 -0
- package/src/services/schemas/encryption.schema.ts +23 -0
- package/src/services/schemas/manifest-utils.schema.ts +4 -0
- package/src/settings/assemble.ts +46 -0
- package/src/settings/index.ts +19 -0
- package/src/settings/settings-section.schema.ts +84 -0
- package/src/storage/adapter.ts +12 -0
- package/src/storage/index.ts +48 -0
- package/src/storage/schemas.ts +215 -0
- package/src/storage/types.ts +88 -0
- package/src/system-constants.ts +121 -0
|
@@ -0,0 +1,595 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Variant Registry
|
|
3
|
+
*
|
|
4
|
+
* Generic registry for manifest variants with lazy loading support.
|
|
5
|
+
* Can be used for providers, agents, or any discriminated config type.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import {
|
|
9
|
+
type ManifestVariant,
|
|
10
|
+
type ManifestRouting,
|
|
11
|
+
type ResolvedVariant,
|
|
12
|
+
type NestedRouting,
|
|
13
|
+
type ResolvedNestedVariant,
|
|
14
|
+
type ActiveNestedVariant,
|
|
15
|
+
hasLazyVariants,
|
|
16
|
+
hasEagerVariants,
|
|
17
|
+
hasNestedLazyVariants,
|
|
18
|
+
hasNestedEagerVariants,
|
|
19
|
+
getNestedDiscriminatorPath,
|
|
20
|
+
getNestedEnablePath
|
|
21
|
+
} from './types.ts';
|
|
22
|
+
|
|
23
|
+
// Registry State
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Internal registry state for a specific manifest's variants
|
|
27
|
+
*/
|
|
28
|
+
interface RegistryState {
|
|
29
|
+
/** Loaded variants map */
|
|
30
|
+
variants: Map<string, ManifestVariant>;
|
|
31
|
+
/** Whether lazy variants have been loaded */
|
|
32
|
+
loaded: boolean;
|
|
33
|
+
/** Loading promise (for deduplication) */
|
|
34
|
+
loadingPromise?: Promise<void>;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Global registry state keyed by manifest ID
|
|
39
|
+
*/
|
|
40
|
+
const registryState = new Map<string, RegistryState>();
|
|
41
|
+
|
|
42
|
+
// Registry Functions
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Get or create registry state for a manifest
|
|
46
|
+
*/
|
|
47
|
+
function getState(manifestId: string): RegistryState {
|
|
48
|
+
let state = registryState.get(manifestId);
|
|
49
|
+
if (!state) {
|
|
50
|
+
state = {
|
|
51
|
+
variants: new Map(),
|
|
52
|
+
loaded: false
|
|
53
|
+
};
|
|
54
|
+
registryState.set(manifestId, state);
|
|
55
|
+
}
|
|
56
|
+
return state;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Register a variant for a manifest
|
|
61
|
+
*
|
|
62
|
+
* @param manifestId - The manifest this variant belongs to
|
|
63
|
+
* @param variant - The variant to register
|
|
64
|
+
*/
|
|
65
|
+
export function registerVariant(manifestId: string, variant: ManifestVariant): void {
|
|
66
|
+
const state = getState(manifestId);
|
|
67
|
+
state.variants.set(variant.id, variant);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Register multiple variants for a manifest
|
|
72
|
+
*
|
|
73
|
+
* @param manifestId - The manifest these variants belong to
|
|
74
|
+
* @param variants - Array of variants to register
|
|
75
|
+
*/
|
|
76
|
+
export function registerVariants(manifestId: string, variants: ManifestVariant[]): void {
|
|
77
|
+
const state = getState(manifestId);
|
|
78
|
+
for (const variant of variants) {
|
|
79
|
+
state.variants.set(variant.id, variant);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* Get a specific variant by ID
|
|
85
|
+
*
|
|
86
|
+
* @param manifestId - The manifest to look up
|
|
87
|
+
* @param variantId - The variant ID (discriminator value)
|
|
88
|
+
* @returns The variant or undefined
|
|
89
|
+
*/
|
|
90
|
+
export function getVariant(manifestId: string, variantId: string): ManifestVariant | undefined {
|
|
91
|
+
const state = getState(manifestId);
|
|
92
|
+
return state.variants.get(variantId);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Get all registered variants for a manifest
|
|
97
|
+
*
|
|
98
|
+
* @param manifestId - The manifest to look up
|
|
99
|
+
* @returns Map of variants keyed by ID
|
|
100
|
+
*/
|
|
101
|
+
export function getAllVariants(manifestId: string): Map<string, ManifestVariant> {
|
|
102
|
+
const state = getState(manifestId);
|
|
103
|
+
return new Map(state.variants);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Check if a variant is registered
|
|
108
|
+
*
|
|
109
|
+
* @param manifestId - The manifest to check
|
|
110
|
+
* @param variantId - The variant ID to check
|
|
111
|
+
* @returns Whether the variant is registered
|
|
112
|
+
*/
|
|
113
|
+
export function hasVariant(manifestId: string, variantId: string): boolean {
|
|
114
|
+
const state = getState(manifestId);
|
|
115
|
+
return state.variants.has(variantId);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Clear all variants for a manifest
|
|
120
|
+
*
|
|
121
|
+
* @param manifestId - The manifest to clear
|
|
122
|
+
*/
|
|
123
|
+
export function clearVariants(manifestId: string): void {
|
|
124
|
+
const state = getState(manifestId);
|
|
125
|
+
state.variants.clear();
|
|
126
|
+
state.loaded = false;
|
|
127
|
+
state.loadingPromise = undefined;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/**
|
|
131
|
+
* Clear the entire registry (useful for testing)
|
|
132
|
+
*/
|
|
133
|
+
export function clearRegistry(): void {
|
|
134
|
+
registryState.clear();
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
// Routing Integration
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Load variants from a routing configuration
|
|
141
|
+
* Handles both eager and lazy loading, with deduplication
|
|
142
|
+
*
|
|
143
|
+
* @param manifestId - The manifest ID
|
|
144
|
+
* @param routing - The routing configuration
|
|
145
|
+
*/
|
|
146
|
+
export async function loadVariantsFromRouting(
|
|
147
|
+
manifestId: string,
|
|
148
|
+
routing: ManifestRouting
|
|
149
|
+
): Promise<void> {
|
|
150
|
+
const state = getState(manifestId);
|
|
151
|
+
|
|
152
|
+
// Already loaded
|
|
153
|
+
if (state.loaded) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
// Loading in progress - wait for it
|
|
158
|
+
if (state.loadingPromise) {
|
|
159
|
+
return state.loadingPromise;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
// Eager variants - just copy them
|
|
163
|
+
if (hasEagerVariants(routing)) {
|
|
164
|
+
for (const [id, variant] of routing.variants) {
|
|
165
|
+
state.variants.set(id, variant);
|
|
166
|
+
}
|
|
167
|
+
state.loaded = true;
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
// Lazy variants - load them
|
|
172
|
+
if (hasLazyVariants(routing)) {
|
|
173
|
+
state.loadingPromise = (async () => {
|
|
174
|
+
try {
|
|
175
|
+
const loadedVariants = await routing.variants();
|
|
176
|
+
for (const [id, variant] of loadedVariants) {
|
|
177
|
+
state.variants.set(id, variant);
|
|
178
|
+
}
|
|
179
|
+
state.loaded = true;
|
|
180
|
+
} finally {
|
|
181
|
+
state.loadingPromise = undefined;
|
|
182
|
+
}
|
|
183
|
+
})();
|
|
184
|
+
|
|
185
|
+
return state.loadingPromise;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Resolve a variant from routing based on discriminator value
|
|
191
|
+
*
|
|
192
|
+
* @param manifestId - The manifest ID
|
|
193
|
+
* @param routing - The routing configuration
|
|
194
|
+
* @param discriminatorValue - The current value of the discriminator field
|
|
195
|
+
* @returns Resolved variant information
|
|
196
|
+
*/
|
|
197
|
+
export async function resolveVariant<
|
|
198
|
+
TConfig extends Record<string, unknown> = Record<string, unknown>
|
|
199
|
+
>(
|
|
200
|
+
manifestId: string,
|
|
201
|
+
routing: ManifestRouting,
|
|
202
|
+
discriminatorValue: string
|
|
203
|
+
): Promise<ResolvedVariant<TConfig>> {
|
|
204
|
+
// Ensure variants are loaded
|
|
205
|
+
await loadVariantsFromRouting(manifestId, routing);
|
|
206
|
+
|
|
207
|
+
const state = getState(manifestId);
|
|
208
|
+
const variant = state.variants.get(discriminatorValue) as ManifestVariant<TConfig> | undefined;
|
|
209
|
+
|
|
210
|
+
if (variant) {
|
|
211
|
+
return {
|
|
212
|
+
variant,
|
|
213
|
+
found: true,
|
|
214
|
+
discriminatorValue,
|
|
215
|
+
usedFallback: false
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
// Try fallback
|
|
220
|
+
if (routing.fallback) {
|
|
221
|
+
return {
|
|
222
|
+
variant: routing.fallback as ManifestVariant<TConfig>,
|
|
223
|
+
found: true,
|
|
224
|
+
discriminatorValue,
|
|
225
|
+
usedFallback: true
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
return {
|
|
230
|
+
variant: undefined,
|
|
231
|
+
found: false,
|
|
232
|
+
discriminatorValue,
|
|
233
|
+
usedFallback: false
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
/**
|
|
238
|
+
* Synchronously get a variant (only works if already loaded)
|
|
239
|
+
* Use this when you know variants have been pre-loaded
|
|
240
|
+
*
|
|
241
|
+
* @param manifestId - The manifest ID
|
|
242
|
+
* @param routing - The routing configuration
|
|
243
|
+
* @param discriminatorValue - The current value of the discriminator field
|
|
244
|
+
* @returns The variant or undefined
|
|
245
|
+
*/
|
|
246
|
+
export function resolveVariantSync<
|
|
247
|
+
TConfig extends Record<string, unknown> = Record<string, unknown>
|
|
248
|
+
>(
|
|
249
|
+
manifestId: string,
|
|
250
|
+
routing: ManifestRouting,
|
|
251
|
+
discriminatorValue: string
|
|
252
|
+
): ManifestVariant<TConfig> | undefined {
|
|
253
|
+
const state = getState(manifestId);
|
|
254
|
+
|
|
255
|
+
// Check if lazy variants need loading
|
|
256
|
+
if (!state.loaded && hasLazyVariants(routing)) {
|
|
257
|
+
// Can't resolve synchronously - variants not loaded
|
|
258
|
+
return undefined;
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
// For eager variants, ensure they're in state
|
|
262
|
+
if (hasEagerVariants(routing)) {
|
|
263
|
+
for (const [id, variant] of routing.variants) {
|
|
264
|
+
if (!state.variants.has(id)) {
|
|
265
|
+
state.variants.set(id, variant);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
const variant = state.variants.get(discriminatorValue);
|
|
271
|
+
if (variant) {
|
|
272
|
+
return variant as ManifestVariant<TConfig>;
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
// Try fallback
|
|
276
|
+
if (routing.fallback) {
|
|
277
|
+
return routing.fallback as ManifestVariant<TConfig>;
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
return undefined;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Nested Routing Integration
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Generate a unique registry key for a nested routing path
|
|
287
|
+
* This allows nested routings to share variants when they use the same variants map
|
|
288
|
+
*
|
|
289
|
+
* @param manifestId - The base manifest ID
|
|
290
|
+
* @param path - The nested routing path
|
|
291
|
+
*/
|
|
292
|
+
function getNestedRegistryKey(manifestId: string, path: string): string {
|
|
293
|
+
return `${manifestId}:${path}`;
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
/**
|
|
297
|
+
* Load variants from a nested routing configuration
|
|
298
|
+
* Handles both eager and lazy loading, with deduplication
|
|
299
|
+
*
|
|
300
|
+
* @param manifestId - The base manifest ID
|
|
301
|
+
* @param routing - The nested routing configuration
|
|
302
|
+
*/
|
|
303
|
+
export async function loadNestedVariantsFromRouting(
|
|
304
|
+
manifestId: string,
|
|
305
|
+
routing: NestedRouting
|
|
306
|
+
): Promise<void> {
|
|
307
|
+
const registryKey = getNestedRegistryKey(manifestId, routing.path);
|
|
308
|
+
const state = getState(registryKey);
|
|
309
|
+
|
|
310
|
+
// Already loaded
|
|
311
|
+
if (state.loaded) {
|
|
312
|
+
return;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
// Loading in progress - wait for it
|
|
316
|
+
if (state.loadingPromise) {
|
|
317
|
+
return state.loadingPromise;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
// Eager variants - just copy them
|
|
321
|
+
if (hasNestedEagerVariants(routing)) {
|
|
322
|
+
for (const [id, variant] of routing.variants) {
|
|
323
|
+
state.variants.set(id, variant);
|
|
324
|
+
}
|
|
325
|
+
state.loaded = true;
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
// Lazy variants - load them
|
|
330
|
+
if (hasNestedLazyVariants(routing)) {
|
|
331
|
+
state.loadingPromise = (async () => {
|
|
332
|
+
try {
|
|
333
|
+
const loadedVariants = await routing.variants();
|
|
334
|
+
for (const [id, variant] of loadedVariants) {
|
|
335
|
+
state.variants.set(id, variant);
|
|
336
|
+
}
|
|
337
|
+
state.loaded = true;
|
|
338
|
+
} finally {
|
|
339
|
+
state.loadingPromise = undefined;
|
|
340
|
+
}
|
|
341
|
+
})();
|
|
342
|
+
|
|
343
|
+
return state.loadingPromise;
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
/**
|
|
348
|
+
* Get a value at a dot-notation path from an object
|
|
349
|
+
*/
|
|
350
|
+
function getValueAtPath(obj: Record<string, unknown>, path: string): unknown {
|
|
351
|
+
const parts = path.split('.');
|
|
352
|
+
let current: unknown = obj;
|
|
353
|
+
for (const part of parts) {
|
|
354
|
+
if (current == null || typeof current !== 'object') {
|
|
355
|
+
return undefined;
|
|
356
|
+
}
|
|
357
|
+
current = (current as Record<string, unknown>)[part];
|
|
358
|
+
}
|
|
359
|
+
return current;
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Resolve a nested variant from routing based on discriminator value
|
|
364
|
+
*
|
|
365
|
+
* @param manifestId - The base manifest ID
|
|
366
|
+
* @param routing - The nested routing configuration
|
|
367
|
+
* @param values - Current form values (used to extract discriminator value)
|
|
368
|
+
* @returns Resolved nested variant information
|
|
369
|
+
*/
|
|
370
|
+
export async function resolveNestedVariant<
|
|
371
|
+
TConfig extends Record<string, unknown> = Record<string, unknown>
|
|
372
|
+
>(
|
|
373
|
+
manifestId: string,
|
|
374
|
+
routing: NestedRouting,
|
|
375
|
+
values: Record<string, unknown>
|
|
376
|
+
): Promise<ResolvedNestedVariant<TConfig>> {
|
|
377
|
+
// Get the discriminator value from the nested path
|
|
378
|
+
const discriminatorPath = getNestedDiscriminatorPath(routing);
|
|
379
|
+
const discriminatorValue = getValueAtPath(values, discriminatorPath) as string | undefined;
|
|
380
|
+
|
|
381
|
+
// Check if this section is enabled
|
|
382
|
+
const enablePath = getNestedEnablePath(routing);
|
|
383
|
+
const enabled = enablePath
|
|
384
|
+
? ((getValueAtPath(values, enablePath) as boolean) ?? false)
|
|
385
|
+
: (routing.required ?? true);
|
|
386
|
+
|
|
387
|
+
// If not enabled and not required, return early
|
|
388
|
+
if (!enabled && !routing.required) {
|
|
389
|
+
return {
|
|
390
|
+
path: routing.path,
|
|
391
|
+
variant: undefined,
|
|
392
|
+
found: false,
|
|
393
|
+
discriminatorValue: discriminatorValue ?? '',
|
|
394
|
+
usedFallback: false,
|
|
395
|
+
enabled: false
|
|
396
|
+
};
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
// No discriminator value yet
|
|
400
|
+
if (!discriminatorValue) {
|
|
401
|
+
return {
|
|
402
|
+
path: routing.path,
|
|
403
|
+
variant: undefined,
|
|
404
|
+
found: false,
|
|
405
|
+
discriminatorValue: '',
|
|
406
|
+
usedFallback: false,
|
|
407
|
+
enabled
|
|
408
|
+
};
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// Ensure variants are loaded
|
|
412
|
+
await loadNestedVariantsFromRouting(manifestId, routing);
|
|
413
|
+
|
|
414
|
+
const registryKey = getNestedRegistryKey(manifestId, routing.path);
|
|
415
|
+
const state = getState(registryKey);
|
|
416
|
+
const variant = state.variants.get(discriminatorValue) as ManifestVariant<TConfig> | undefined;
|
|
417
|
+
|
|
418
|
+
if (variant) {
|
|
419
|
+
return {
|
|
420
|
+
path: routing.path,
|
|
421
|
+
variant,
|
|
422
|
+
found: true,
|
|
423
|
+
discriminatorValue,
|
|
424
|
+
usedFallback: false,
|
|
425
|
+
enabled
|
|
426
|
+
};
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
// Try fallback
|
|
430
|
+
if (routing.fallback) {
|
|
431
|
+
return {
|
|
432
|
+
path: routing.path,
|
|
433
|
+
variant: routing.fallback as ManifestVariant<TConfig>,
|
|
434
|
+
found: true,
|
|
435
|
+
discriminatorValue,
|
|
436
|
+
usedFallback: true,
|
|
437
|
+
enabled
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
|
|
441
|
+
return {
|
|
442
|
+
path: routing.path,
|
|
443
|
+
variant: undefined,
|
|
444
|
+
found: false,
|
|
445
|
+
discriminatorValue,
|
|
446
|
+
usedFallback: false,
|
|
447
|
+
enabled
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
/**
|
|
452
|
+
* Resolve all nested variants from multiple routing configurations
|
|
453
|
+
*
|
|
454
|
+
* @param manifestId - The base manifest ID
|
|
455
|
+
* @param routings - Array of nested routing configurations
|
|
456
|
+
* @param values - Current form values
|
|
457
|
+
* @returns Array of resolved nested variants
|
|
458
|
+
*/
|
|
459
|
+
export async function resolveAllNestedVariants<
|
|
460
|
+
TConfig extends Record<string, unknown> = Record<string, unknown>
|
|
461
|
+
>(
|
|
462
|
+
manifestId: string,
|
|
463
|
+
routings: NestedRouting[],
|
|
464
|
+
values: Record<string, unknown>
|
|
465
|
+
): Promise<ResolvedNestedVariant<TConfig>[]> {
|
|
466
|
+
const results = await Promise.all(
|
|
467
|
+
routings.map((routing) => resolveNestedVariant<TConfig>(manifestId, routing, values))
|
|
468
|
+
);
|
|
469
|
+
return results;
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Get all active nested variants (enabled and resolved)
|
|
474
|
+
*
|
|
475
|
+
* @param manifestId - The base manifest ID
|
|
476
|
+
* @param routings - Array of nested routing configurations
|
|
477
|
+
* @param values - Current form values
|
|
478
|
+
* @returns Map of active variants keyed by path
|
|
479
|
+
*/
|
|
480
|
+
export async function getActiveNestedVariants(
|
|
481
|
+
manifestId: string,
|
|
482
|
+
routings: NestedRouting[],
|
|
483
|
+
values: Record<string, unknown>
|
|
484
|
+
): Promise<Map<string, ActiveNestedVariant>> {
|
|
485
|
+
const resolved = await resolveAllNestedVariants(manifestId, routings, values);
|
|
486
|
+
const active = new Map<string, ActiveNestedVariant>();
|
|
487
|
+
|
|
488
|
+
for (const result of resolved) {
|
|
489
|
+
if (result.found && result.variant && result.enabled) {
|
|
490
|
+
active.set(result.path, {
|
|
491
|
+
path: result.path,
|
|
492
|
+
discriminatorValue: result.discriminatorValue,
|
|
493
|
+
variant: result.variant,
|
|
494
|
+
enabled: result.enabled
|
|
495
|
+
});
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
return active;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
/**
|
|
503
|
+
* Synchronously get a nested variant (only works if already loaded)
|
|
504
|
+
*
|
|
505
|
+
* @param manifestId - The base manifest ID
|
|
506
|
+
* @param routing - The nested routing configuration
|
|
507
|
+
* @param discriminatorValue - The discriminator value
|
|
508
|
+
* @returns The variant or undefined
|
|
509
|
+
*/
|
|
510
|
+
export function resolveNestedVariantSync<
|
|
511
|
+
TConfig extends Record<string, unknown> = Record<string, unknown>
|
|
512
|
+
>(
|
|
513
|
+
manifestId: string,
|
|
514
|
+
routing: NestedRouting,
|
|
515
|
+
discriminatorValue: string
|
|
516
|
+
): ManifestVariant<TConfig> | undefined {
|
|
517
|
+
const registryKey = getNestedRegistryKey(manifestId, routing.path);
|
|
518
|
+
const state = getState(registryKey);
|
|
519
|
+
|
|
520
|
+
// Check if lazy variants need loading
|
|
521
|
+
if (!state.loaded && hasNestedLazyVariants(routing)) {
|
|
522
|
+
// Can't resolve synchronously - variants not loaded
|
|
523
|
+
return undefined;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
// For eager variants, ensure they're in state
|
|
527
|
+
if (hasNestedEagerVariants(routing)) {
|
|
528
|
+
for (const [id, variant] of routing.variants) {
|
|
529
|
+
if (!state.variants.has(id)) {
|
|
530
|
+
state.variants.set(id, variant);
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
}
|
|
534
|
+
|
|
535
|
+
const variant = state.variants.get(discriminatorValue);
|
|
536
|
+
if (variant) {
|
|
537
|
+
return variant as ManifestVariant<TConfig>;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// Try fallback
|
|
541
|
+
if (routing.fallback) {
|
|
542
|
+
return routing.fallback as ManifestVariant<TConfig>;
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
return undefined;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
/**
|
|
549
|
+
* Check if nested variants are loaded for a manifest path
|
|
550
|
+
*/
|
|
551
|
+
export function areNestedVariantsLoaded(manifestId: string, path: string): boolean {
|
|
552
|
+
const registryKey = getNestedRegistryKey(manifestId, path);
|
|
553
|
+
const state = registryState.get(registryKey);
|
|
554
|
+
return state?.loaded ?? false;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
/**
|
|
558
|
+
* Get all nested variants for a manifest path
|
|
559
|
+
*/
|
|
560
|
+
export function getAllNestedVariants(
|
|
561
|
+
manifestId: string,
|
|
562
|
+
path: string
|
|
563
|
+
): Map<string, ManifestVariant> {
|
|
564
|
+
const registryKey = getNestedRegistryKey(manifestId, path);
|
|
565
|
+
const state = getState(registryKey);
|
|
566
|
+
return new Map(state.variants);
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
// Registry Information
|
|
570
|
+
|
|
571
|
+
/**
|
|
572
|
+
* Get registry status for debugging
|
|
573
|
+
*/
|
|
574
|
+
export function getRegistryStatus(): {
|
|
575
|
+
manifests: string[];
|
|
576
|
+
variants: Record<string, string[]>;
|
|
577
|
+
} {
|
|
578
|
+
const manifests: string[] = [];
|
|
579
|
+
const variants: Record<string, string[]> = {};
|
|
580
|
+
|
|
581
|
+
for (const [manifestId, state] of registryState) {
|
|
582
|
+
manifests.push(manifestId);
|
|
583
|
+
variants[manifestId] = Array.from(state.variants.keys());
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
return { manifests, variants };
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
/**
|
|
590
|
+
* Check if variants are loaded for a manifest
|
|
591
|
+
*/
|
|
592
|
+
export function areVariantsLoaded(manifestId: string): boolean {
|
|
593
|
+
const state = registryState.get(manifestId);
|
|
594
|
+
return state?.loaded ?? false;
|
|
595
|
+
}
|