@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,482 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Config Manifest Class
|
|
3
|
+
*
|
|
4
|
+
* Extends StorageManifest with form metadata and UI rendering support.
|
|
5
|
+
* This is the runtime class used by the config module.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
import { StorageManifest } from '@vibesdotdev/storage/manifest';
|
|
9
|
+
import type { Unsubscribe } from '@vibesdotdev/storage/interfaces/document-store';
|
|
10
|
+
import type { StorageManifestDescriptor } from '@vibesdotdev/storage/schemas/manifest-descriptor';
|
|
11
|
+
import { getVibesRuntime } from '@vibesdotdev/runtime/api/runtime';
|
|
12
|
+
import type { KindContext } from '@vibesdotdev/runtime/schemas/kind';
|
|
13
|
+
import type {
|
|
14
|
+
ConfigManifestDescriptor,
|
|
15
|
+
ConfigFieldMeta,
|
|
16
|
+
ConfigFieldGroup,
|
|
17
|
+
ManifestNavigation,
|
|
18
|
+
ManifestContext,
|
|
19
|
+
ConfigTier
|
|
20
|
+
} from '../schemas/config-manifest-descriptor';
|
|
21
|
+
import type {
|
|
22
|
+
ConfigContext,
|
|
23
|
+
ConfigRule,
|
|
24
|
+
FieldDefaults,
|
|
25
|
+
FieldRules
|
|
26
|
+
} from '../manifest/types';
|
|
27
|
+
import { evaluateRule } from '../form/core/visibility';
|
|
28
|
+
|
|
29
|
+
import type { ConfigChangeCallback } from './schemas/config-manifest.schema.ts';
|
|
30
|
+
export type { ConfigChangeCallback };
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Config Manifest - extends StorageManifest with form metadata.
|
|
34
|
+
*
|
|
35
|
+
* Provides:
|
|
36
|
+
* - All StorageManifest operations (load, save, exists, delete)
|
|
37
|
+
* - Form field metadata for UI rendering
|
|
38
|
+
* - Context-aware default values
|
|
39
|
+
* - Conditional visibility rules
|
|
40
|
+
* - Navigation configuration
|
|
41
|
+
* - Field-level get/set/subscribe for reactive config access
|
|
42
|
+
*
|
|
43
|
+
* @template T - The type of configuration data
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```ts
|
|
47
|
+
* // Create from descriptor (runtime instantiation)
|
|
48
|
+
* const manifest = new ConfigManifest<AIConfig>(descriptor);
|
|
49
|
+
*
|
|
50
|
+
* // Load with defaults applied
|
|
51
|
+
* const config = await manifest.loadWithDefaults(context);
|
|
52
|
+
*
|
|
53
|
+
* // Get visible fields for rendering
|
|
54
|
+
* const fields = manifest.getVisibleFields(currentValues, context);
|
|
55
|
+
*
|
|
56
|
+
* // Reactive field-level access (runtime-aligned, replaces createConfigAccessor)
|
|
57
|
+
* const config = manifest.get();
|
|
58
|
+
* manifest.setField('temperature', 0.8);
|
|
59
|
+
* manifest.subscribe((config) => console.log('Config changed:', config));
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export class ConfigManifest<T> extends StorageManifest<T> {
|
|
63
|
+
protected readonly configDescriptor: ConfigManifestDescriptor;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Create a config manifest instance.
|
|
67
|
+
*
|
|
68
|
+
* @param descriptorOrId - Either the full descriptor (for runtime instantiation)
|
|
69
|
+
* or the manifest ID string (for manual instantiation)
|
|
70
|
+
* @param context - Runtime context (optional for manual instantiation, provided by runtime resolution)
|
|
71
|
+
*/
|
|
72
|
+
constructor(descriptorOrId: ConfigManifestDescriptor | string, context?: KindContext) {
|
|
73
|
+
if (typeof descriptorOrId === 'string') {
|
|
74
|
+
const runtime = getVibesRuntime();
|
|
75
|
+
const descriptor = runtime
|
|
76
|
+
.query<ConfigManifestDescriptor, ConfigManifest<T>>('config/manifest')
|
|
77
|
+
.withId(descriptorOrId)
|
|
78
|
+
.firstDescriptor() as ConfigManifestDescriptor | null;
|
|
79
|
+
|
|
80
|
+
if (!descriptor) {
|
|
81
|
+
throw new Error(`Config manifest '${descriptorOrId}' not found. Is it registered?`);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
// Call parent with the looked-up descriptor
|
|
85
|
+
super(descriptor as unknown as StorageManifestDescriptor, context ?? { runtime });
|
|
86
|
+
|
|
87
|
+
this.configDescriptor = descriptor;
|
|
88
|
+
} else {
|
|
89
|
+
// Direct descriptor (runtime instantiation)
|
|
90
|
+
super(descriptorOrId as unknown as StorageManifestDescriptor, context);
|
|
91
|
+
|
|
92
|
+
this.configDescriptor = descriptorOrId;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Create a config manifest by looking up its ID.
|
|
98
|
+
*/
|
|
99
|
+
static fromId<T>(manifestId: string): ConfigManifest<T> {
|
|
100
|
+
return new ConfigManifest<T>(manifestId);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Config-Specific Properties
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* Get the configuration tier.
|
|
107
|
+
*/
|
|
108
|
+
get tier(): ConfigTier {
|
|
109
|
+
return this.configDescriptor.tier;
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
/**
|
|
113
|
+
* Get the manifest name.
|
|
114
|
+
*/
|
|
115
|
+
get name(): string | undefined {
|
|
116
|
+
return this.configDescriptor.name;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Get the manifest description.
|
|
121
|
+
*/
|
|
122
|
+
get description(): string | undefined {
|
|
123
|
+
return this.configDescriptor.description;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Get the category within the tier.
|
|
128
|
+
*/
|
|
129
|
+
get category(): string | undefined {
|
|
130
|
+
return this.configDescriptor.category;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* Get field metadata for all fields.
|
|
135
|
+
*/
|
|
136
|
+
get fields(): Record<string, ConfigFieldMeta> {
|
|
137
|
+
return this.configDescriptor.fields;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Get field groups for UI organization.
|
|
142
|
+
*/
|
|
143
|
+
get groups(): ConfigFieldGroup[] {
|
|
144
|
+
return this.configDescriptor.groups ?? [];
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/**
|
|
148
|
+
* Get navigation configuration.
|
|
149
|
+
*/
|
|
150
|
+
get navigation(): ManifestNavigation | undefined {
|
|
151
|
+
return this.configDescriptor.navigation;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Get context constraints for this manifest.
|
|
156
|
+
* (Named differently from base class 'context' which is runtime context)
|
|
157
|
+
*/
|
|
158
|
+
get manifestContext(): ManifestContext | undefined {
|
|
159
|
+
return this.configDescriptor.context;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Get the manifest icon.
|
|
164
|
+
*/
|
|
165
|
+
get icon(): string | undefined {
|
|
166
|
+
return this.configDescriptor.icon;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Get sensitive fields list.
|
|
171
|
+
*/
|
|
172
|
+
get sensitiveFields(): string[] | undefined {
|
|
173
|
+
return this.configDescriptor.sensitiveFields;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
// Field Metadata Access
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Get metadata for a specific field.
|
|
180
|
+
*/
|
|
181
|
+
getFieldMeta(fieldPath: string): ConfigFieldMeta | undefined {
|
|
182
|
+
return this.configDescriptor.fields[fieldPath];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
/**
|
|
186
|
+
* Get all field paths.
|
|
187
|
+
*/
|
|
188
|
+
getFieldPaths(): string[] {
|
|
189
|
+
return Object.keys(this.configDescriptor.fields);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Get fields in a specific group.
|
|
194
|
+
*/
|
|
195
|
+
getFieldsInGroup(groupId: string): string[] {
|
|
196
|
+
return Object.entries(this.configDescriptor.fields)
|
|
197
|
+
.filter(([_, meta]) => meta.ui.group === groupId)
|
|
198
|
+
.map(([path]) => path);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Get fields without a group.
|
|
203
|
+
*/
|
|
204
|
+
getUngroupedFields(): string[] {
|
|
205
|
+
return Object.entries(this.configDescriptor.fields)
|
|
206
|
+
.filter(([_, meta]) => !meta.ui.group)
|
|
207
|
+
.map(([path]) => path);
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
// Default Values
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Resolve the default value for a field based on context.
|
|
214
|
+
*/
|
|
215
|
+
resolveDefault<V>(fieldPath: string, ctx: ConfigContext): V | undefined {
|
|
216
|
+
const meta = this.getFieldMeta(fieldPath);
|
|
217
|
+
if (!meta?.defaults) return undefined;
|
|
218
|
+
|
|
219
|
+
const defaults = meta.defaults as FieldDefaults<V>;
|
|
220
|
+
|
|
221
|
+
// Check for custom resolver
|
|
222
|
+
if (defaults.resolver) {
|
|
223
|
+
return defaults.resolver(ctx);
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
// Check context-specific overrides
|
|
227
|
+
if (defaults.byHardware?.[ctx.hardware] !== undefined) {
|
|
228
|
+
return defaults.byHardware[ctx.hardware];
|
|
229
|
+
}
|
|
230
|
+
if (defaults.byEnvironment?.[ctx.environment] !== undefined) {
|
|
231
|
+
return defaults.byEnvironment[ctx.environment];
|
|
232
|
+
}
|
|
233
|
+
if (defaults.bySurface?.[ctx.surface] !== undefined) {
|
|
234
|
+
return defaults.bySurface[ctx.surface];
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
// Fall back to base default
|
|
238
|
+
return defaults.base;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Get all default values for the current context.
|
|
243
|
+
*/
|
|
244
|
+
getDefaults(ctx: ConfigContext): Partial<T> {
|
|
245
|
+
const defaults: Record<string, unknown> = {};
|
|
246
|
+
|
|
247
|
+
for (const fieldPath of this.getFieldPaths()) {
|
|
248
|
+
const value = this.resolveDefault(fieldPath, ctx);
|
|
249
|
+
if (value !== undefined) {
|
|
250
|
+
defaults[fieldPath] = value;
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
return defaults as Partial<T>;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
// Visibility Rules
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Check if a field is visible based on current values and context.
|
|
261
|
+
*/
|
|
262
|
+
isFieldVisible(fieldPath: string, values: Record<string, unknown>, ctx: ConfigContext): boolean {
|
|
263
|
+
const meta = this.getFieldMeta(fieldPath);
|
|
264
|
+
const rules = meta?.rules as FieldRules | undefined;
|
|
265
|
+
if (!rules?.visibleWhen) return true;
|
|
266
|
+
|
|
267
|
+
return evaluateRule(rules.visibleWhen as ConfigRule, values, ctx);
|
|
268
|
+
}
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Check if a field is disabled based on current values and context.
|
|
272
|
+
*/
|
|
273
|
+
isFieldDisabled(fieldPath: string, values: Record<string, unknown>, ctx: ConfigContext): boolean {
|
|
274
|
+
const meta = this.getFieldMeta(fieldPath);
|
|
275
|
+
const rules = meta?.rules as FieldRules | undefined;
|
|
276
|
+
if (!rules?.disabledWhen) return false;
|
|
277
|
+
|
|
278
|
+
return evaluateRule(rules.disabledWhen as ConfigRule, values, ctx);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
/**
|
|
282
|
+
* Check if a field is required based on current values and context.
|
|
283
|
+
*/
|
|
284
|
+
isFieldRequired(fieldPath: string, values: Record<string, unknown>, ctx: ConfigContext): boolean {
|
|
285
|
+
const meta = this.getFieldMeta(fieldPath);
|
|
286
|
+
const rules = meta?.rules as FieldRules | undefined;
|
|
287
|
+
if (!rules?.requiredWhen) return false;
|
|
288
|
+
|
|
289
|
+
return evaluateRule(rules.requiredWhen as ConfigRule, values, ctx);
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Get all visible fields for the current values and context.
|
|
294
|
+
*/
|
|
295
|
+
getVisibleFields(values: Record<string, unknown>, ctx: ConfigContext): string[] {
|
|
296
|
+
return this.getFieldPaths().filter((path) => this.isFieldVisible(path, values, ctx));
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
/**
|
|
300
|
+
* Check if a group is visible based on current values and context.
|
|
301
|
+
*/
|
|
302
|
+
isGroupVisible(groupId: string, values: Record<string, unknown>, ctx: ConfigContext): boolean {
|
|
303
|
+
const group = this.groups.find((g) => g.id === groupId);
|
|
304
|
+
// Groups can have optional visibility rules stored in descriptor
|
|
305
|
+
const groupWithRules = group as (typeof group & { visibleWhen?: ConfigRule }) | undefined;
|
|
306
|
+
if (!groupWithRules?.visibleWhen) return true;
|
|
307
|
+
|
|
308
|
+
return evaluateRule(groupWithRules.visibleWhen, values, ctx);
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
// Context Checks
|
|
312
|
+
|
|
313
|
+
/**
|
|
314
|
+
* Check if this manifest applies to the given context.
|
|
315
|
+
*/
|
|
316
|
+
appliesToContext(ctx: ConfigContext): boolean {
|
|
317
|
+
const constraints = this.manifestContext;
|
|
318
|
+
if (!constraints) return true;
|
|
319
|
+
|
|
320
|
+
// Check hardware constraint
|
|
321
|
+
if (constraints.hardware && !constraints.hardware.includes(ctx.hardware)) {
|
|
322
|
+
return false;
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// Check environment constraint
|
|
326
|
+
if (constraints.environment && !constraints.environment.includes(ctx.environment)) {
|
|
327
|
+
return false;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
// Check surface constraint
|
|
331
|
+
if (constraints.surfaces && !constraints.surfaces.includes(ctx.surface)) {
|
|
332
|
+
return false;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
// Check required features
|
|
336
|
+
if (constraints.requiredFeatures) {
|
|
337
|
+
for (const feature of constraints.requiredFeatures) {
|
|
338
|
+
if (!ctx.enabledFeatures.has(feature)) {
|
|
339
|
+
return false;
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
return true;
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Extended Load/Save
|
|
348
|
+
|
|
349
|
+
/**
|
|
350
|
+
* Load configuration with context-aware defaults applied.
|
|
351
|
+
*
|
|
352
|
+
* @param ctx - Current config context
|
|
353
|
+
* @returns Merged config with defaults applied for missing fields
|
|
354
|
+
*/
|
|
355
|
+
async loadWithDefaults(ctx: ConfigContext): Promise<T> {
|
|
356
|
+
const stored = await this.load();
|
|
357
|
+
const defaults = this.getDefaults(ctx);
|
|
358
|
+
|
|
359
|
+
// Merge defaults under stored values
|
|
360
|
+
return {
|
|
361
|
+
...defaults,
|
|
362
|
+
...stored
|
|
363
|
+
} as T;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Save configuration, optionally running onSave lifecycle hook.
|
|
368
|
+
*
|
|
369
|
+
* @param data - Configuration data to save
|
|
370
|
+
* @param ctx - Current config context (for lifecycle hooks)
|
|
371
|
+
*/
|
|
372
|
+
async saveWithHooks(data: T, ctx?: ConfigContext): Promise<void> {
|
|
373
|
+
// If we have a context and onSave hook, run it
|
|
374
|
+
// Note: Lifecycle hooks are defined in the full ConfigManifest interface
|
|
375
|
+
// but stored in the descriptor as function references
|
|
376
|
+
const descriptor = this.configDescriptor as unknown as {
|
|
377
|
+
onSave?: (config: T, ctx: ConfigContext) => T | Promise<T>;
|
|
378
|
+
};
|
|
379
|
+
|
|
380
|
+
let finalData = data;
|
|
381
|
+
if (ctx && descriptor.onSave) {
|
|
382
|
+
finalData = await descriptor.onSave(data, ctx);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
await this.save(finalData);
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
// Field-Level Reactive API (Runtime-Aligned, replaces createConfigAccessor)
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Get the current configuration (from cache if available).
|
|
392
|
+
* Loads from storage if not cached.
|
|
393
|
+
*
|
|
394
|
+
* @returns Current config or null if not loaded
|
|
395
|
+
*/
|
|
396
|
+
get(): T | null {
|
|
397
|
+
return this.getCachedData() ?? null;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Get a specific field value from the cached config.
|
|
402
|
+
*
|
|
403
|
+
* @param fieldPath - Dot-notation path to the field
|
|
404
|
+
* @returns The field value or undefined if not found
|
|
405
|
+
*/
|
|
406
|
+
getField<K extends keyof T>(fieldPath: K): T[K] | undefined;
|
|
407
|
+
getField(fieldPath: string): unknown;
|
|
408
|
+
getField(fieldPath: string | keyof T): unknown {
|
|
409
|
+
const data = this.get();
|
|
410
|
+
if (!data) return undefined;
|
|
411
|
+
|
|
412
|
+
// Handle dot notation
|
|
413
|
+
const path = String(fieldPath);
|
|
414
|
+
if (path.includes('.')) {
|
|
415
|
+
const parts = path.split('.');
|
|
416
|
+
let current: unknown = data;
|
|
417
|
+
for (const part of parts) {
|
|
418
|
+
if (current && typeof current === 'object') {
|
|
419
|
+
current = (current as Record<string, unknown>)[part];
|
|
420
|
+
} else {
|
|
421
|
+
return undefined;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
return current;
|
|
425
|
+
}
|
|
426
|
+
|
|
427
|
+
return (data as Record<string, unknown>)[path];
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Set a single field value and save to storage.
|
|
432
|
+
*
|
|
433
|
+
* @param fieldPath - Dot-notation path to the field
|
|
434
|
+
* @param value - The value to set
|
|
435
|
+
*/
|
|
436
|
+
async setField<K extends keyof T>(fieldPath: K, value: T[K]): Promise<void>;
|
|
437
|
+
async setField(fieldPath: string, value: unknown): Promise<void>;
|
|
438
|
+
async setField(fieldPath: string | keyof T, value: unknown): Promise<void> {
|
|
439
|
+
const data = (this.get() ?? {}) as T;
|
|
440
|
+
const path = String(fieldPath);
|
|
441
|
+
|
|
442
|
+
// Handle dot notation
|
|
443
|
+
if (path.includes('.')) {
|
|
444
|
+
const parts = path.split('.');
|
|
445
|
+
const last = parts.pop()!;
|
|
446
|
+
let current: Record<string, unknown> = data as Record<string, unknown>;
|
|
447
|
+
|
|
448
|
+
for (const part of parts) {
|
|
449
|
+
if (!(part in current) || typeof current[part] !== 'object') {
|
|
450
|
+
current[part] = {};
|
|
451
|
+
}
|
|
452
|
+
current = current[part] as Record<string, unknown>;
|
|
453
|
+
}
|
|
454
|
+
current[last] = value;
|
|
455
|
+
} else {
|
|
456
|
+
(data as Record<string, unknown>)[path] = value;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
await this.save(data);
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
/**
|
|
463
|
+
* Set multiple field values at once and save to storage.
|
|
464
|
+
*
|
|
465
|
+
* @param fields - Partial object with fields to update
|
|
466
|
+
*/
|
|
467
|
+
async setFields(fields: Partial<T>): Promise<void> {
|
|
468
|
+
const data = { ...this.get(), ...fields } as T;
|
|
469
|
+
await this.save(data);
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/**
|
|
473
|
+
* Subscribe to configuration changes.
|
|
474
|
+
* Replaces the createConfigAccessor subscribe pattern.
|
|
475
|
+
*
|
|
476
|
+
* @param callback - Function called when config changes
|
|
477
|
+
* @returns Unsubscribe function
|
|
478
|
+
*/
|
|
479
|
+
override subscribe(callback: ConfigChangeCallback<T>): Unsubscribe {
|
|
480
|
+
return super.subscribe(callback as (data: T | null) => void);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration Manifest Module
|
|
3
|
+
*
|
|
4
|
+
* Types and utilities for defining configuration manifests.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Runtime-aware ConfigManifest class (extends StorageManifest)
|
|
8
|
+
export { ConfigManifest } from './config-manifest.ts';
|
|
9
|
+
|
|
10
|
+
// Types
|
|
11
|
+
export type {
|
|
12
|
+
ConfigTier,
|
|
13
|
+
StorageAdapterType,
|
|
14
|
+
StorageScope,
|
|
15
|
+
ConfigSurface,
|
|
16
|
+
HardwareContext,
|
|
17
|
+
EnvironmentContext,
|
|
18
|
+
ConfigContext,
|
|
19
|
+
ConfigRule,
|
|
20
|
+
ConfigFieldRule,
|
|
21
|
+
ConfigContextRule,
|
|
22
|
+
ConfigAndRule,
|
|
23
|
+
ConfigOrRule,
|
|
24
|
+
ConfigNotRule,
|
|
25
|
+
ConfigFunctionRule,
|
|
26
|
+
FieldComponent,
|
|
27
|
+
FieldWidth,
|
|
28
|
+
FieldUI,
|
|
29
|
+
FieldOption,
|
|
30
|
+
FieldAccess,
|
|
31
|
+
FieldRules,
|
|
32
|
+
FieldDefaults,
|
|
33
|
+
ConfigFieldMeta,
|
|
34
|
+
ConfigFieldGroup,
|
|
35
|
+
ManifestStorage,
|
|
36
|
+
ManifestContext,
|
|
37
|
+
// ConfigManifest interface is deprecated - use the class from config-manifest.js
|
|
38
|
+
ConfigManifest as ConfigManifestInterface,
|
|
39
|
+
InferConfigType,
|
|
40
|
+
FieldPaths
|
|
41
|
+
} from './types.ts';
|
|
42
|
+
|
|
43
|
+
// Schemas (for validation/serialization)
|
|
44
|
+
export {
|
|
45
|
+
configTierSchema,
|
|
46
|
+
storageAdapterSchema,
|
|
47
|
+
storageScopeSchema,
|
|
48
|
+
configSurfaceSchema,
|
|
49
|
+
hardwareContextSchema,
|
|
50
|
+
environmentContextSchema,
|
|
51
|
+
fieldComponentSchema,
|
|
52
|
+
fieldWidthSchema,
|
|
53
|
+
fieldUISchema,
|
|
54
|
+
fieldOptionSchema,
|
|
55
|
+
fieldAccessSchema,
|
|
56
|
+
fieldRulesSchema,
|
|
57
|
+
fieldDefaultsSchema,
|
|
58
|
+
configFieldMetaSchema,
|
|
59
|
+
configFieldGroupSchema,
|
|
60
|
+
manifestStorageSchema,
|
|
61
|
+
manifestContextSchema,
|
|
62
|
+
configManifestMetaSchema,
|
|
63
|
+
configRuleSchema
|
|
64
|
+
} from './schema.ts';
|
|
65
|
+
|
|
66
|
+
// Builder
|
|
67
|
+
export {
|
|
68
|
+
createConfigManifest,
|
|
69
|
+
ManifestBuilder,
|
|
70
|
+
type CreateManifestOptions,
|
|
71
|
+
// Field helpers
|
|
72
|
+
inputField,
|
|
73
|
+
textareaField,
|
|
74
|
+
numberField,
|
|
75
|
+
booleanField,
|
|
76
|
+
selectField,
|
|
77
|
+
radioField,
|
|
78
|
+
sliderField,
|
|
79
|
+
secretField,
|
|
80
|
+
jsonField,
|
|
81
|
+
// Option helpers
|
|
82
|
+
option,
|
|
83
|
+
optionsFromEnum,
|
|
84
|
+
// Defaults helpers
|
|
85
|
+
defaults,
|
|
86
|
+
// Rules helpers
|
|
87
|
+
whenField,
|
|
88
|
+
whenContext,
|
|
89
|
+
allOf,
|
|
90
|
+
anyOf,
|
|
91
|
+
not
|
|
92
|
+
} from './builder.ts';
|