@entifix/core 0.1.0-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/base-entities/configuration-client/configuration-client-singleton.d.ts +39 -0
- package/dist/base-entities/configuration-client/configuration-client-singleton.d.ts.map +1 -0
- package/dist/base-entities/configuration-client/configuration-client-singleton.js +164 -0
- package/dist/base-entities/configuration-client/configuration-client-singleton.js.map +1 -0
- package/dist/base-entities/configuration-client/index.d.ts +4 -0
- package/dist/base-entities/configuration-client/index.d.ts.map +1 -0
- package/dist/base-entities/configuration-client/index.js +5 -0
- package/dist/base-entities/configuration-client/index.js.map +1 -0
- package/dist/base-entities/configuration-client/read-configuration-from-process.d.ts +11 -0
- package/dist/base-entities/configuration-client/read-configuration-from-process.d.ts.map +1 -0
- package/dist/base-entities/configuration-client/read-configuration-from-process.js +26 -0
- package/dist/base-entities/configuration-client/read-configuration-from-process.js.map +1 -0
- package/dist/base-entities/configuration-client/types.d.ts +38 -0
- package/dist/base-entities/configuration-client/types.d.ts.map +1 -0
- package/dist/base-entities/configuration-client/types.js +3 -0
- package/dist/base-entities/configuration-client/types.js.map +1 -0
- package/dist/base-entities/entifix-error/entifix-error.d.ts +31 -0
- package/dist/base-entities/entifix-error/entifix-error.d.ts.map +1 -0
- package/dist/base-entities/entifix-error/entifix-error.js +56 -0
- package/dist/base-entities/entifix-error/entifix-error.js.map +1 -0
- package/dist/base-entities/entifix-error/index.d.ts +2 -0
- package/dist/base-entities/entifix-error/index.d.ts.map +1 -0
- package/dist/base-entities/entifix-error/index.js +3 -0
- package/dist/base-entities/entifix-error/index.js.map +1 -0
- package/dist/command-palette/command-matching.d.ts +79 -0
- package/dist/command-palette/command-matching.d.ts.map +1 -0
- package/dist/command-palette/command-matching.js +116 -0
- package/dist/command-palette/command-matching.js.map +1 -0
- package/dist/command-palette/command-source.d.ts +109 -0
- package/dist/command-palette/command-source.d.ts.map +1 -0
- package/dist/command-palette/command-source.js +11 -0
- package/dist/command-palette/command-source.js.map +1 -0
- package/dist/command-palette/index.d.ts +3 -0
- package/dist/command-palette/index.d.ts.map +1 -0
- package/dist/command-palette/index.js +4 -0
- package/dist/command-palette/index.js.map +1 -0
- package/dist/entity-definition/decorators/accessor/accessor.d.ts +3 -0
- package/dist/entity-definition/decorators/accessor/accessor.d.ts.map +1 -0
- package/dist/entity-definition/decorators/accessor/accessor.js +11 -0
- package/dist/entity-definition/decorators/accessor/accessor.js.map +1 -0
- package/dist/entity-definition/decorators/accessor/index.d.ts +2 -0
- package/dist/entity-definition/decorators/accessor/index.d.ts.map +1 -0
- package/dist/entity-definition/decorators/accessor/index.js +3 -0
- package/dist/entity-definition/decorators/accessor/index.js.map +1 -0
- package/dist/entity-definition/decorators/entity/entity.d.ts +4 -0
- package/dist/entity-definition/decorators/entity/entity.d.ts.map +1 -0
- package/dist/entity-definition/decorators/entity/entity.js +9 -0
- package/dist/entity-definition/decorators/entity/entity.js.map +1 -0
- package/dist/entity-definition/decorators/entity/index.d.ts +2 -0
- package/dist/entity-definition/decorators/entity/index.d.ts.map +1 -0
- package/dist/entity-definition/decorators/entity/index.js +3 -0
- package/dist/entity-definition/decorators/entity/index.js.map +1 -0
- package/dist/entity-definition/decorators/method/index.d.ts +2 -0
- package/dist/entity-definition/decorators/method/index.d.ts.map +1 -0
- package/dist/entity-definition/decorators/method/index.js +3 -0
- package/dist/entity-definition/decorators/method/index.js.map +1 -0
- package/dist/entity-definition/decorators/method/method.d.ts +3 -0
- package/dist/entity-definition/decorators/method/method.d.ts.map +1 -0
- package/dist/entity-definition/decorators/method/method.js +10 -0
- package/dist/entity-definition/decorators/method/method.js.map +1 -0
- package/dist/entity-definition/decorators/use-case/index.d.ts +2 -0
- package/dist/entity-definition/decorators/use-case/index.d.ts.map +1 -0
- package/dist/entity-definition/decorators/use-case/index.js +3 -0
- package/dist/entity-definition/decorators/use-case/index.js.map +1 -0
- package/dist/entity-definition/decorators/use-case/use-case.d.ts +18 -0
- package/dist/entity-definition/decorators/use-case/use-case.d.ts.map +1 -0
- package/dist/entity-definition/decorators/use-case/use-case.js +26 -0
- package/dist/entity-definition/decorators/use-case/use-case.js.map +1 -0
- package/dist/entity-definition/describe/describe-child-columns.d.ts +33 -0
- package/dist/entity-definition/describe/describe-child-columns.d.ts.map +1 -0
- package/dist/entity-definition/describe/describe-child-columns.js +44 -0
- package/dist/entity-definition/describe/describe-child-columns.js.map +1 -0
- package/dist/entity-definition/describe/describe-entity-columns.d.ts +83 -0
- package/dist/entity-definition/describe/describe-entity-columns.d.ts.map +1 -0
- package/dist/entity-definition/describe/describe-entity-columns.js +112 -0
- package/dist/entity-definition/describe/describe-entity-columns.js.map +1 -0
- package/dist/entity-definition/describe/describe-entity-use-cases.d.ts +34 -0
- package/dist/entity-definition/describe/describe-entity-use-cases.d.ts.map +1 -0
- package/dist/entity-definition/describe/describe-entity-use-cases.js +24 -0
- package/dist/entity-definition/describe/describe-entity-use-cases.js.map +1 -0
- package/dist/entity-definition/describe/index.d.ts +4 -0
- package/dist/entity-definition/describe/index.d.ts.map +1 -0
- package/dist/entity-definition/describe/index.js +5 -0
- package/dist/entity-definition/describe/index.js.map +1 -0
- package/dist/entity-definition/field-path.d.ts +49 -0
- package/dist/entity-definition/field-path.d.ts.map +1 -0
- package/dist/entity-definition/field-path.js +58 -0
- package/dist/entity-definition/field-path.js.map +1 -0
- package/dist/entity-definition/helpers/entity-definition-helpers.d.ts +59 -0
- package/dist/entity-definition/helpers/entity-definition-helpers.d.ts.map +1 -0
- package/dist/entity-definition/helpers/entity-definition-helpers.js +115 -0
- package/dist/entity-definition/helpers/entity-definition-helpers.js.map +1 -0
- package/dist/entity-definition/helpers/index.d.ts +2 -0
- package/dist/entity-definition/helpers/index.d.ts.map +1 -0
- package/dist/entity-definition/helpers/index.js +3 -0
- package/dist/entity-definition/helpers/index.js.map +1 -0
- package/dist/entity-definition/links/apply-entity-links/apply-entity-links.d.ts +48 -0
- package/dist/entity-definition/links/apply-entity-links/apply-entity-links.d.ts.map +1 -0
- package/dist/entity-definition/links/apply-entity-links/apply-entity-links.js +88 -0
- package/dist/entity-definition/links/apply-entity-links/apply-entity-links.js.map +1 -0
- package/dist/entity-definition/links/apply-entity-links/index.d.ts +2 -0
- package/dist/entity-definition/links/apply-entity-links/index.d.ts.map +1 -0
- package/dist/entity-definition/links/apply-entity-links/index.js +3 -0
- package/dist/entity-definition/links/apply-entity-links/index.js.map +1 -0
- package/dist/entity-definition/links/entity-collection-link/entity-collection-link.d.ts +29 -0
- package/dist/entity-definition/links/entity-collection-link/entity-collection-link.d.ts.map +1 -0
- package/dist/entity-definition/links/entity-collection-link/entity-collection-link.js +61 -0
- package/dist/entity-definition/links/entity-collection-link/entity-collection-link.js.map +1 -0
- package/dist/entity-definition/links/entity-collection-link/index.d.ts +2 -0
- package/dist/entity-definition/links/entity-collection-link/index.d.ts.map +1 -0
- package/dist/entity-definition/links/entity-collection-link/index.js +3 -0
- package/dist/entity-definition/links/entity-collection-link/index.js.map +1 -0
- package/dist/entity-definition/links/entity-link/entity-link.d.ts +58 -0
- package/dist/entity-definition/links/entity-link/entity-link.d.ts.map +1 -0
- package/dist/entity-definition/links/entity-link/entity-link.js +79 -0
- package/dist/entity-definition/links/entity-link/entity-link.js.map +1 -0
- package/dist/entity-definition/links/entity-link/index.d.ts +2 -0
- package/dist/entity-definition/links/entity-link/index.d.ts.map +1 -0
- package/dist/entity-definition/links/entity-link/index.js +3 -0
- package/dist/entity-definition/links/entity-link/index.js.map +1 -0
- package/dist/entity-definition/links/entity-link-source/entity-link-source.d.ts +74 -0
- package/dist/entity-definition/links/entity-link-source/entity-link-source.d.ts.map +1 -0
- package/dist/entity-definition/links/entity-link-source/entity-link-source.js +11 -0
- package/dist/entity-definition/links/entity-link-source/entity-link-source.js.map +1 -0
- package/dist/entity-definition/links/entity-link-source/index.d.ts +2 -0
- package/dist/entity-definition/links/entity-link-source/index.d.ts.map +1 -0
- package/dist/entity-definition/links/entity-link-source/index.js +3 -0
- package/dist/entity-definition/links/entity-link-source/index.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-accessor/index.d.ts +2 -0
- package/dist/entity-definition/meta-entities/meta-accessor/index.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-accessor/index.js +3 -0
- package/dist/entity-definition/meta-entities/meta-accessor/index.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.d.ts +137 -0
- package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.js +52 -0
- package/dist/entity-definition/meta-entities/meta-accessor/meta-accessor.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-entity/index.d.ts +2 -0
- package/dist/entity-definition/meta-entities/meta-entity/index.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-entity/index.js +3 -0
- package/dist/entity-definition/meta-entities/meta-entity/index.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-entity/meta-entity.d.ts +17 -0
- package/dist/entity-definition/meta-entities/meta-entity/meta-entity.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-entity/meta-entity.js +13 -0
- package/dist/entity-definition/meta-entities/meta-entity/meta-entity.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-method/index.d.ts +2 -0
- package/dist/entity-definition/meta-entities/meta-method/index.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-method/index.js +3 -0
- package/dist/entity-definition/meta-entities/meta-method/index.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-method/meta-method.d.ts +16 -0
- package/dist/entity-definition/meta-entities/meta-method/meta-method.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-method/meta-method.js +11 -0
- package/dist/entity-definition/meta-entities/meta-method/meta-method.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-use-case/index.d.ts +2 -0
- package/dist/entity-definition/meta-entities/meta-use-case/index.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-use-case/index.js +3 -0
- package/dist/entity-definition/meta-entities/meta-use-case/index.js.map +1 -0
- package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.d.ts +94 -0
- package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.d.ts.map +1 -0
- package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.js +17 -0
- package/dist/entity-definition/meta-entities/meta-use-case/meta-use-case.js.map +1 -0
- package/dist/entity-definition/metadata/entity-metadata-document.d.ts +23 -0
- package/dist/entity-definition/metadata/entity-metadata-document.d.ts.map +1 -0
- package/dist/entity-definition/metadata/entity-metadata-document.js +16 -0
- package/dist/entity-definition/metadata/entity-metadata-document.js.map +1 -0
- package/dist/entity-definition/metadata/entity-metadata-source.d.ts +19 -0
- package/dist/entity-definition/metadata/entity-metadata-source.d.ts.map +1 -0
- package/dist/entity-definition/metadata/entity-metadata-source.js +15 -0
- package/dist/entity-definition/metadata/entity-metadata-source.js.map +1 -0
- package/dist/entity-definition/metadata/index.d.ts +3 -0
- package/dist/entity-definition/metadata/index.d.ts.map +1 -0
- package/dist/entity-definition/metadata/index.js +4 -0
- package/dist/entity-definition/metadata/index.js.map +1 -0
- package/dist/entity-definition/reconstruct/clone-entity-draft.d.ts +34 -0
- package/dist/entity-definition/reconstruct/clone-entity-draft.d.ts.map +1 -0
- package/dist/entity-definition/reconstruct/clone-entity-draft.js +75 -0
- package/dist/entity-definition/reconstruct/clone-entity-draft.js.map +1 -0
- package/dist/entity-definition/reconstruct/coerce-field-value.d.ts +34 -0
- package/dist/entity-definition/reconstruct/coerce-field-value.d.ts.map +1 -0
- package/dist/entity-definition/reconstruct/coerce-field-value.js +42 -0
- package/dist/entity-definition/reconstruct/coerce-field-value.js.map +1 -0
- package/dist/entity-definition/reconstruct/index.d.ts +5 -0
- package/dist/entity-definition/reconstruct/index.d.ts.map +1 -0
- package/dist/entity-definition/reconstruct/index.js +6 -0
- package/dist/entity-definition/reconstruct/index.js.map +1 -0
- package/dist/entity-definition/reconstruct/reconstruct-child.d.ts +35 -0
- package/dist/entity-definition/reconstruct/reconstruct-child.d.ts.map +1 -0
- package/dist/entity-definition/reconstruct/reconstruct-child.js +47 -0
- package/dist/entity-definition/reconstruct/reconstruct-child.js.map +1 -0
- package/dist/entity-definition/reconstruct/reconstruct-entity.d.ts +49 -0
- package/dist/entity-definition/reconstruct/reconstruct-entity.d.ts.map +1 -0
- package/dist/entity-definition/reconstruct/reconstruct-entity.js +116 -0
- package/dist/entity-definition/reconstruct/reconstruct-entity.js.map +1 -0
- package/dist/entity-definition/serializer/deserialize.d.ts +13 -0
- package/dist/entity-definition/serializer/deserialize.d.ts.map +1 -0
- package/dist/entity-definition/serializer/deserialize.js +145 -0
- package/dist/entity-definition/serializer/deserialize.js.map +1 -0
- package/dist/entity-definition/serializer/index.d.ts +3 -0
- package/dist/entity-definition/serializer/index.d.ts.map +1 -0
- package/dist/entity-definition/serializer/index.js +4 -0
- package/dist/entity-definition/serializer/index.js.map +1 -0
- package/dist/entity-definition/serializer/serialize.d.ts +26 -0
- package/dist/entity-definition/serializer/serialize.d.ts.map +1 -0
- package/dist/entity-definition/serializer/serialize.js +64 -0
- package/dist/entity-definition/serializer/serialize.js.map +1 -0
- package/dist/envelope/event-pattern.d.ts +14 -0
- package/dist/envelope/event-pattern.d.ts.map +1 -0
- package/dist/envelope/event-pattern.js +30 -0
- package/dist/envelope/event-pattern.js.map +1 -0
- package/dist/envelope/index.d.ts +5 -0
- package/dist/envelope/index.d.ts.map +1 -0
- package/dist/envelope/index.js +6 -0
- package/dist/envelope/index.js.map +1 -0
- package/dist/envelope/make-envelope.d.ts +45 -0
- package/dist/envelope/make-envelope.d.ts.map +1 -0
- package/dist/envelope/make-envelope.js +111 -0
- package/dist/envelope/make-envelope.js.map +1 -0
- package/dist/envelope/read-envelope.d.ts +48 -0
- package/dist/envelope/read-envelope.d.ts.map +1 -0
- package/dist/envelope/read-envelope.js +138 -0
- package/dist/envelope/read-envelope.js.map +1 -0
- package/dist/envelope/types.d.ts +173 -0
- package/dist/envelope/types.d.ts.map +1 -0
- package/dist/envelope/types.js +6 -0
- package/dist/envelope/types.js.map +1 -0
- package/dist/http/session-cookies.d.ts +25 -0
- package/dist/http/session-cookies.d.ts.map +1 -0
- package/dist/http/session-cookies.js +22 -0
- package/dist/http/session-cookies.js.map +1 -0
- package/dist/i18n/format.d.ts +22 -0
- package/dist/i18n/format.d.ts.map +1 -0
- package/dist/i18n/format.js +49 -0
- package/dist/i18n/format.js.map +1 -0
- package/dist/i18n/index.d.ts +4 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/index.js +5 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/locales.d.ts +23 -0
- package/dist/i18n/locales.d.ts.map +1 -0
- package/dist/i18n/locales.js +25 -0
- package/dist/i18n/locales.js.map +1 -0
- package/dist/i18n/negotiate.d.ts +39 -0
- package/dist/i18n/negotiate.d.ts.map +1 -0
- package/dist/i18n/negotiate.js +63 -0
- package/dist/i18n/negotiate.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +43 -0
- package/dist/index.js.map +1 -0
- package/dist/rsql/coerce-rsql.d.ts +27 -0
- package/dist/rsql/coerce-rsql.d.ts.map +1 -0
- package/dist/rsql/coerce-rsql.js +121 -0
- package/dist/rsql/coerce-rsql.js.map +1 -0
- package/dist/rsql/index.d.ts +8 -0
- package/dist/rsql/index.d.ts.map +1 -0
- package/dist/rsql/index.js +9 -0
- package/dist/rsql/index.js.map +1 -0
- package/dist/rsql/load-request-url.d.ts +30 -0
- package/dist/rsql/load-request-url.d.ts.map +1 -0
- package/dist/rsql/load-request-url.js +67 -0
- package/dist/rsql/load-request-url.js.map +1 -0
- package/dist/rsql/parse-rsql.d.ts +35 -0
- package/dist/rsql/parse-rsql.d.ts.map +1 -0
- package/dist/rsql/parse-rsql.js +235 -0
- package/dist/rsql/parse-rsql.js.map +1 -0
- package/dist/rsql/rsql-operators.d.ts +36 -0
- package/dist/rsql/rsql-operators.d.ts.map +1 -0
- package/dist/rsql/rsql-operators.js +65 -0
- package/dist/rsql/rsql-operators.js.map +1 -0
- package/dist/rsql/rsql-values.d.ts +11 -0
- package/dist/rsql/rsql-values.d.ts.map +1 -0
- package/dist/rsql/rsql-values.js +26 -0
- package/dist/rsql/rsql-values.js.map +1 -0
- package/dist/rsql/serialize-rsql.d.ts +19 -0
- package/dist/rsql/serialize-rsql.d.ts.map +1 -0
- package/dist/rsql/serialize-rsql.js +71 -0
- package/dist/rsql/serialize-rsql.js.map +1 -0
- package/dist/rsql/sort-param.d.ts +20 -0
- package/dist/rsql/sort-param.d.ts.map +1 -0
- package/dist/rsql/sort-param.js +66 -0
- package/dist/rsql/sort-param.js.map +1 -0
- package/dist/types/BulkOutcome.d.ts +27 -0
- package/dist/types/BulkOutcome.d.ts.map +1 -0
- package/dist/types/BulkOutcome.js +8 -0
- package/dist/types/BulkOutcome.js.map +1 -0
- package/dist/types/Entity.d.ts +6 -0
- package/dist/types/Entity.d.ts.map +1 -0
- package/dist/types/Entity.js +3 -0
- package/dist/types/Entity.js.map +1 -0
- package/dist/types/EntityAction.d.ts +15 -0
- package/dist/types/EntityAction.d.ts.map +1 -0
- package/dist/types/EntityAction.js +18 -0
- package/dist/types/EntityAction.js.map +1 -0
- package/dist/types/EntityDraft.d.ts +47 -0
- package/dist/types/EntityDraft.d.ts.map +1 -0
- package/dist/types/EntityDraft.js +14 -0
- package/dist/types/EntityDraft.js.map +1 -0
- package/dist/types/EntityFiltering.d.ts +45 -0
- package/dist/types/EntityFiltering.d.ts.map +1 -0
- package/dist/types/EntityFiltering.js +30 -0
- package/dist/types/EntityFiltering.js.map +1 -0
- package/dist/types/EntityLoadRequest.d.ts +10 -0
- package/dist/types/EntityLoadRequest.d.ts.map +1 -0
- package/dist/types/EntityLoadRequest.js +3 -0
- package/dist/types/EntityLoadRequest.js.map +1 -0
- package/dist/types/EntityPage.d.ts +8 -0
- package/dist/types/EntityPage.d.ts.map +1 -0
- package/dist/types/EntityPage.js +3 -0
- package/dist/types/EntityPage.js.map +1 -0
- package/dist/types/EntityRowDraft.d.ts +79 -0
- package/dist/types/EntityRowDraft.d.ts.map +1 -0
- package/dist/types/EntityRowDraft.js +65 -0
- package/dist/types/EntityRowDraft.js.map +1 -0
- package/dist/types/EntitySelection.d.ts +117 -0
- package/dist/types/EntitySelection.d.ts.map +1 -0
- package/dist/types/EntitySelection.js +107 -0
- package/dist/types/EntitySelection.js.map +1 -0
- package/dist/types/EntitySorting.d.ts +7 -0
- package/dist/types/EntitySorting.d.ts.map +1 -0
- package/dist/types/EntitySorting.js +3 -0
- package/dist/types/EntitySorting.js.map +1 -0
- package/dist/types/Json.d.ts +37 -0
- package/dist/types/Json.d.ts.map +1 -0
- package/dist/types/Json.js +43 -0
- package/dist/types/Json.js.map +1 -0
- package/dist/types/StandardSchema.d.ts +45 -0
- package/dist/types/StandardSchema.d.ts.map +1 -0
- package/dist/types/StandardSchema.js +15 -0
- package/dist/types/StandardSchema.js.map +1 -0
- package/dist/types/UseCase.d.ts +10 -0
- package/dist/types/UseCase.d.ts.map +1 -0
- package/dist/types/UseCase.js +10 -0
- package/dist/types/UseCase.js.map +1 -0
- package/dist/wizard/index.d.ts +4 -0
- package/dist/wizard/index.d.ts.map +1 -0
- package/dist/wizard/index.js +5 -0
- package/dist/wizard/index.js.map +1 -0
- package/dist/wizard/wizard-definition.d.ts +108 -0
- package/dist/wizard/wizard-definition.d.ts.map +1 -0
- package/dist/wizard/wizard-definition.js +125 -0
- package/dist/wizard/wizard-definition.js.map +1 -0
- package/dist/wizard/wizard-navigation.d.ts +81 -0
- package/dist/wizard/wizard-navigation.d.ts.map +1 -0
- package/dist/wizard/wizard-navigation.js +139 -0
- package/dist/wizard/wizard-navigation.js.map +1 -0
- package/dist/wizard/wizard-state.d.ts +89 -0
- package/dist/wizard/wizard-state.d.ts.map +1 -0
- package/dist/wizard/wizard-state.js +103 -0
- package/dist/wizard/wizard-state.js.map +1 -0
- package/package.json +64 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 r10c Technologies
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Effect } from 'effect';
|
|
2
|
+
import { EntifixBuildError } from '../entifix-error/index.js';
|
|
3
|
+
import { ConfigurationClient, ConfigurationClientGroup, ConfigurationExtractMode, ConfigurationItem, ConfigurationPlain } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* In-memory {@link ConfigurationClientGroup} backed by a group's
|
|
6
|
+
* {@link ConfigurationItem} list.
|
|
7
|
+
*
|
|
8
|
+
* String resolution supports `exact` and `compose`; the numeric/date/array
|
|
9
|
+
* getters resolve the raw value with `exact` semantics (the `compose` mode is
|
|
10
|
+
* URL-oriented and only meaningful for strings). `match` remains unimplemented
|
|
11
|
+
* (no defined semantics / consumer yet) and fails explicitly.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ConfigurationClientGroupInMemory implements ConfigurationClientGroup {
|
|
14
|
+
#private;
|
|
15
|
+
constructor(items?: ConfigurationItem[]);
|
|
16
|
+
getString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string, EntifixBuildError>;
|
|
17
|
+
getNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number, EntifixBuildError>;
|
|
18
|
+
getDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date, EntifixBuildError>;
|
|
19
|
+
getArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string[], EntifixBuildError>;
|
|
20
|
+
getArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number[], EntifixBuildError>;
|
|
21
|
+
getArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date[], EntifixBuildError>;
|
|
22
|
+
getOptionalString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string | undefined, EntifixBuildError>;
|
|
23
|
+
getOptionalNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number | undefined, EntifixBuildError>;
|
|
24
|
+
getOptionalDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date | undefined, EntifixBuildError>;
|
|
25
|
+
getOptionalArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<number[] | undefined, EntifixBuildError>;
|
|
26
|
+
getOptionalArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<string[] | undefined, EntifixBuildError>;
|
|
27
|
+
getOptionalArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect.Effect<Date[] | undefined, EntifixBuildError>;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* In-memory {@link ConfigurationClient} backed by a loaded
|
|
31
|
+
* {@link ConfigurationPlain}. Each `in(group)` returns a group view scoped to
|
|
32
|
+
* that group's items.
|
|
33
|
+
*/
|
|
34
|
+
export declare class ConfigurationClientInMemory implements ConfigurationClient {
|
|
35
|
+
#private;
|
|
36
|
+
constructor(plainConfig?: ConfigurationPlain);
|
|
37
|
+
in(group: string): ConfigurationClientGroup;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=configuration-client-singleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configuration-client-singleton.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/configuration-client-singleton.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAkEpB;;;;;;;;GAQG;AACH,qBAAa,gCAAiC,YAAW,wBAAwB;;gBAGnE,KAAK,GAAE,iBAAiB,EAAO;IA0C3C,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAa3C,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC;IAK3C,OAAO,CACL,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAKzC,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC;IAK7C,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC;IAS7C,YAAY,CACV,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC;IAS3C,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC;IAKvD,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC;IASvD,eAAe,CACb,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,iBAAiB,CAAC;IASrD,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC;IAazD,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC;IAOzD,oBAAoB,CAClB,GAAG,EAAE,MAAM,EACX,WAAW,GAAE,wBAAkC,GAC9C,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC;CAUxD;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,YAAW,mBAAmB;;gBAGzD,WAAW,GAAE,kBAAuB;IAIhD,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB;CAG5C"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
import { _ as _class_private_field_loose_base } from "@swc/helpers/_/_class_private_field_loose_base";
|
|
2
|
+
import { _ as _class_private_field_loose_key } from "@swc/helpers/_/_class_private_field_loose_key";
|
|
3
|
+
import { Effect } from 'effect';
|
|
4
|
+
import { EntifixBuildError } from '../entifix-error/index.js';
|
|
5
|
+
/**
|
|
6
|
+
* Joins a base URL with extra path segments, normalizing slashes so neither
|
|
7
|
+
* doubled nor missing separators appear (e.g. `http://h/api` + `['product']`
|
|
8
|
+
* -> `http://h/api/product`).
|
|
9
|
+
*/ function composeUrl(base, segments) {
|
|
10
|
+
return [
|
|
11
|
+
base.replace(/\/+$/, ''),
|
|
12
|
+
...segments.map((segment)=>segment.replace(/^\/+|\/+$/g, ''))
|
|
13
|
+
].filter((part)=>part.length > 0).join('/');
|
|
14
|
+
}
|
|
15
|
+
/** Parses a raw string into a finite number, failing on non-numeric input. */ function parseNumber(key, raw) {
|
|
16
|
+
const parsed = Number(raw);
|
|
17
|
+
if (raw.trim() === '' || Number.isNaN(parsed)) {
|
|
18
|
+
return Effect.fail(new EntifixBuildError(`Configuration key "${key}" is not a number`, undefined, {
|
|
19
|
+
key,
|
|
20
|
+
raw
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
return Effect.succeed(parsed);
|
|
24
|
+
}
|
|
25
|
+
/** Parses a raw string into a valid Date, failing on unparseable input. */ function parseDate(key, raw) {
|
|
26
|
+
const parsed = new Date(raw);
|
|
27
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
28
|
+
return Effect.fail(new EntifixBuildError(`Configuration key "${key}" is not a date`, undefined, {
|
|
29
|
+
key,
|
|
30
|
+
raw
|
|
31
|
+
}));
|
|
32
|
+
}
|
|
33
|
+
return Effect.succeed(parsed);
|
|
34
|
+
}
|
|
35
|
+
/** Splits a comma-separated raw value into trimmed, non-empty segments. */ function splitArray(raw) {
|
|
36
|
+
return raw.split(',').map((segment)=>segment.trim()).filter((segment)=>segment.length > 0);
|
|
37
|
+
}
|
|
38
|
+
var _items = /*#__PURE__*/ _class_private_field_loose_key("_items"), _find = /*#__PURE__*/ _class_private_field_loose_key("_find"), _lookup = /*#__PURE__*/ _class_private_field_loose_key("_lookup"), _lookupOptional = /*#__PURE__*/ _class_private_field_loose_key("_lookupOptional"), _unsupportedMode = /*#__PURE__*/ _class_private_field_loose_key("_unsupportedMode");
|
|
39
|
+
/**
|
|
40
|
+
* In-memory {@link ConfigurationClientGroup} backed by a group's
|
|
41
|
+
* {@link ConfigurationItem} list.
|
|
42
|
+
*
|
|
43
|
+
* String resolution supports `exact` and `compose`; the numeric/date/array
|
|
44
|
+
* getters resolve the raw value with `exact` semantics (the `compose` mode is
|
|
45
|
+
* URL-oriented and only meaningful for strings). `match` remains unimplemented
|
|
46
|
+
* (no defined semantics / consumer yet) and fails explicitly.
|
|
47
|
+
*/ export class ConfigurationClientGroupInMemory {
|
|
48
|
+
getString(key, extractMode = 'exact') {
|
|
49
|
+
if (extractMode === 'compose') {
|
|
50
|
+
const [head, ...segments] = key.split('.');
|
|
51
|
+
return _class_private_field_loose_base(this, _lookup)[_lookup](head).pipe(Effect.map((base)=>composeUrl(base, segments)));
|
|
52
|
+
}
|
|
53
|
+
if (extractMode === 'exact') {
|
|
54
|
+
return _class_private_field_loose_base(this, _lookup)[_lookup](key);
|
|
55
|
+
}
|
|
56
|
+
return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
57
|
+
}
|
|
58
|
+
getNumber(key, extractMode = 'exact') {
|
|
59
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
60
|
+
return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>parseNumber(key, raw)));
|
|
61
|
+
}
|
|
62
|
+
getDate(key, extractMode = 'exact') {
|
|
63
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
64
|
+
return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>parseDate(key, raw)));
|
|
65
|
+
}
|
|
66
|
+
getArrayString(key, extractMode = 'exact') {
|
|
67
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
68
|
+
return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.map(splitArray));
|
|
69
|
+
}
|
|
70
|
+
getArrayNumber(key, extractMode = 'exact') {
|
|
71
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
72
|
+
return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>Effect.all(splitArray(raw).map((segment)=>parseNumber(key, segment)))));
|
|
73
|
+
}
|
|
74
|
+
getArrayDate(key, extractMode = 'exact') {
|
|
75
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
76
|
+
return _class_private_field_loose_base(this, _lookup)[_lookup](key).pipe(Effect.flatMap((raw)=>Effect.all(splitArray(raw).map((segment)=>parseDate(key, segment)))));
|
|
77
|
+
}
|
|
78
|
+
getOptionalString(key, extractMode = 'exact') {
|
|
79
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
80
|
+
return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key);
|
|
81
|
+
}
|
|
82
|
+
getOptionalNumber(key, extractMode = 'exact') {
|
|
83
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
84
|
+
return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : parseNumber(key, raw)));
|
|
85
|
+
}
|
|
86
|
+
getOptionalDate(key, extractMode = 'exact') {
|
|
87
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
88
|
+
return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : parseDate(key, raw)));
|
|
89
|
+
}
|
|
90
|
+
getOptionalArrayNumber(key, extractMode = 'exact') {
|
|
91
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
92
|
+
return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : Effect.all(splitArray(raw).map((segment)=>parseNumber(key, segment)))));
|
|
93
|
+
}
|
|
94
|
+
getOptionalArrayString(key, extractMode = 'exact') {
|
|
95
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
96
|
+
return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.map((raw)=>raw === undefined ? undefined : splitArray(raw)));
|
|
97
|
+
}
|
|
98
|
+
getOptionalArrayDate(key, extractMode = 'exact') {
|
|
99
|
+
if (extractMode !== 'exact') return _class_private_field_loose_base(this, _unsupportedMode)[_unsupportedMode](key, extractMode);
|
|
100
|
+
return _class_private_field_loose_base(this, _lookupOptional)[_lookupOptional](key).pipe(Effect.flatMap((raw)=>raw === undefined ? Effect.succeed(undefined) : Effect.all(splitArray(raw).map((segment)=>parseDate(key, segment)))));
|
|
101
|
+
}
|
|
102
|
+
constructor(items = []){
|
|
103
|
+
Object.defineProperty(this, _find, {
|
|
104
|
+
value: find
|
|
105
|
+
});
|
|
106
|
+
Object.defineProperty(this, _lookup, {
|
|
107
|
+
value: lookup
|
|
108
|
+
});
|
|
109
|
+
Object.defineProperty(this, _lookupOptional, {
|
|
110
|
+
value: lookupOptional
|
|
111
|
+
});
|
|
112
|
+
Object.defineProperty(this, _unsupportedMode, {
|
|
113
|
+
value: unsupportedMode
|
|
114
|
+
});
|
|
115
|
+
Object.defineProperty(this, _items, {
|
|
116
|
+
writable: true,
|
|
117
|
+
value: void 0
|
|
118
|
+
});
|
|
119
|
+
_class_private_field_loose_base(this, _items)[_items] = items;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function find(key) {
|
|
123
|
+
return _class_private_field_loose_base(this, _items)[_items].find((candidate)=>candidate.key === key);
|
|
124
|
+
}
|
|
125
|
+
function lookup(key) {
|
|
126
|
+
const item = _class_private_field_loose_base(this, _find)[_find](key);
|
|
127
|
+
if (item === undefined || item.value == null) {
|
|
128
|
+
return Effect.fail(new EntifixBuildError(`Configuration key "${key}" not found`, undefined, {
|
|
129
|
+
key,
|
|
130
|
+
availableKeys: _class_private_field_loose_base(this, _items)[_items].map((candidate)=>candidate.key)
|
|
131
|
+
}));
|
|
132
|
+
}
|
|
133
|
+
return Effect.succeed(String(item.value));
|
|
134
|
+
}
|
|
135
|
+
function lookupOptional(key) {
|
|
136
|
+
const item = _class_private_field_loose_base(this, _find)[_find](key);
|
|
137
|
+
return Effect.succeed(item === undefined || item.value == null ? undefined : String(item.value));
|
|
138
|
+
}
|
|
139
|
+
function unsupportedMode(key, extractMode) {
|
|
140
|
+
return Effect.fail(new EntifixBuildError(`Configuration extract mode "${extractMode}" is not implemented yet`, undefined, {
|
|
141
|
+
key,
|
|
142
|
+
extractMode
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
var _plainConfig = /*#__PURE__*/ _class_private_field_loose_key("_plainConfig");
|
|
146
|
+
/**
|
|
147
|
+
* In-memory {@link ConfigurationClient} backed by a loaded
|
|
148
|
+
* {@link ConfigurationPlain}. Each `in(group)` returns a group view scoped to
|
|
149
|
+
* that group's items.
|
|
150
|
+
*/ export class ConfigurationClientInMemory {
|
|
151
|
+
in(group) {
|
|
152
|
+
var _class_private_field_loose_base__plainConfig_group;
|
|
153
|
+
return new ConfigurationClientGroupInMemory((_class_private_field_loose_base__plainConfig_group = _class_private_field_loose_base(this, _plainConfig)[_plainConfig][group]) != null ? _class_private_field_loose_base__plainConfig_group : []);
|
|
154
|
+
}
|
|
155
|
+
constructor(plainConfig = {}){
|
|
156
|
+
Object.defineProperty(this, _plainConfig, {
|
|
157
|
+
writable: true,
|
|
158
|
+
value: void 0
|
|
159
|
+
});
|
|
160
|
+
_class_private_field_loose_base(this, _plainConfig)[_plainConfig] = plainConfig;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
//# sourceMappingURL=configuration-client-singleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/base-entities/configuration-client/configuration-client-singleton.ts"],"sourcesContent":["import { Effect } from 'effect';\n\nimport { EntifixBuildError } from '../entifix-error/index.js';\nimport {\n ConfigurationClient,\n ConfigurationClientGroup,\n ConfigurationExtractMode,\n ConfigurationItem,\n ConfigurationPlain,\n} from './types.js';\n\n/**\n * Joins a base URL with extra path segments, normalizing slashes so neither\n * doubled nor missing separators appear (e.g. `http://h/api` + `['product']`\n * -> `http://h/api/product`).\n */\nfunction composeUrl(base: string, segments: string[]): string {\n return [\n base.replace(/\\/+$/, ''),\n ...segments.map(segment => segment.replace(/^\\/+|\\/+$/g, '')),\n ]\n .filter(part => part.length > 0)\n .join('/');\n}\n\n/** Parses a raw string into a finite number, failing on non-numeric input. */\nfunction parseNumber(\n key: string,\n raw: string,\n): Effect.Effect<number, EntifixBuildError> {\n const parsed = Number(raw);\n if (raw.trim() === '' || Number.isNaN(parsed)) {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration key \"${key}\" is not a number`,\n undefined,\n {\n key,\n raw,\n },\n ),\n );\n }\n return Effect.succeed(parsed);\n}\n\n/** Parses a raw string into a valid Date, failing on unparseable input. */\nfunction parseDate(\n key: string,\n raw: string,\n): Effect.Effect<Date, EntifixBuildError> {\n const parsed = new Date(raw);\n if (Number.isNaN(parsed.getTime())) {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration key \"${key}\" is not a date`,\n undefined,\n {\n key,\n raw,\n },\n ),\n );\n }\n return Effect.succeed(parsed);\n}\n\n/** Splits a comma-separated raw value into trimmed, non-empty segments. */\nfunction splitArray(raw: string): string[] {\n return raw\n .split(',')\n .map(segment => segment.trim())\n .filter(segment => segment.length > 0);\n}\n\n/**\n * In-memory {@link ConfigurationClientGroup} backed by a group's\n * {@link ConfigurationItem} list.\n *\n * String resolution supports `exact` and `compose`; the numeric/date/array\n * getters resolve the raw value with `exact` semantics (the `compose` mode is\n * URL-oriented and only meaningful for strings). `match` remains unimplemented\n * (no defined semantics / consumer yet) and fails explicitly.\n */\nexport class ConfigurationClientGroupInMemory implements ConfigurationClientGroup {\n #items: ConfigurationItem[];\n\n constructor(items: ConfigurationItem[] = []) {\n this.#items = items;\n }\n\n #find(key: string): ConfigurationItem | undefined {\n return this.#items.find(candidate => candidate.key === key);\n }\n\n #lookup(key: string): Effect.Effect<string, EntifixBuildError> {\n const item = this.#find(key);\n if (item === undefined || item.value == null) {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration key \"${key}\" not found`,\n undefined,\n { key, availableKeys: this.#items.map(candidate => candidate.key) },\n ),\n );\n }\n return Effect.succeed(String(item.value));\n }\n\n #lookupOptional(key: string): Effect.Effect<string | undefined, never> {\n const item = this.#find(key);\n return Effect.succeed(\n item === undefined || item.value == null ? undefined : String(item.value),\n );\n }\n\n #unsupportedMode(\n key: string,\n extractMode: ConfigurationExtractMode,\n ): Effect.Effect<never, EntifixBuildError> {\n return Effect.fail(\n new EntifixBuildError(\n `Configuration extract mode \"${extractMode}\" is not implemented yet`,\n undefined,\n { key, extractMode },\n ),\n );\n }\n\n getString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string, EntifixBuildError> {\n if (extractMode === 'compose') {\n const [head, ...segments] = key.split('.');\n return this.#lookup(head).pipe(\n Effect.map(base => composeUrl(base, segments)),\n );\n }\n if (extractMode === 'exact') {\n return this.#lookup(key);\n }\n return this.#unsupportedMode(key, extractMode);\n }\n\n getNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(Effect.flatMap(raw => parseNumber(key, raw)));\n }\n\n getDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(Effect.flatMap(raw => parseDate(key, raw)));\n }\n\n getArrayString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string[], EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(Effect.map(splitArray));\n }\n\n getArrayNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number[], EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(\n Effect.flatMap(raw =>\n Effect.all(splitArray(raw).map(segment => parseNumber(key, segment))),\n ),\n );\n }\n\n getArrayDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date[], EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookup(key).pipe(\n Effect.flatMap(raw =>\n Effect.all(splitArray(raw).map(segment => parseDate(key, segment))),\n ),\n );\n }\n\n getOptionalString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key);\n }\n\n getOptionalNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined ? Effect.succeed(undefined) : parseNumber(key, raw),\n ),\n );\n }\n\n getOptionalDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined ? Effect.succeed(undefined) : parseDate(key, raw),\n ),\n );\n }\n\n getOptionalArrayNumber(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<number[] | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined\n ? Effect.succeed(undefined)\n : Effect.all(\n splitArray(raw).map(segment => parseNumber(key, segment)),\n ),\n ),\n );\n }\n\n getOptionalArrayString(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<string[] | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.map(raw => (raw === undefined ? undefined : splitArray(raw))),\n );\n }\n\n getOptionalArrayDate(\n key: string,\n extractMode: ConfigurationExtractMode = 'exact',\n ): Effect.Effect<Date[] | undefined, EntifixBuildError> {\n if (extractMode !== 'exact') return this.#unsupportedMode(key, extractMode);\n return this.#lookupOptional(key).pipe(\n Effect.flatMap(raw =>\n raw === undefined\n ? Effect.succeed(undefined)\n : Effect.all(splitArray(raw).map(segment => parseDate(key, segment))),\n ),\n );\n }\n}\n\n/**\n * In-memory {@link ConfigurationClient} backed by a loaded\n * {@link ConfigurationPlain}. Each `in(group)` returns a group view scoped to\n * that group's items.\n */\nexport class ConfigurationClientInMemory implements ConfigurationClient {\n #plainConfig: ConfigurationPlain;\n\n constructor(plainConfig: ConfigurationPlain = {}) {\n this.#plainConfig = plainConfig;\n }\n\n in(group: string): ConfigurationClientGroup {\n return new ConfigurationClientGroupInMemory(this.#plainConfig[group] ?? []);\n }\n}\n"],"names":["Effect","EntifixBuildError","composeUrl","base","segments","replace","map","segment","filter","part","length","join","parseNumber","key","raw","parsed","Number","trim","isNaN","fail","undefined","succeed","parseDate","Date","getTime","splitArray","split","ConfigurationClientGroupInMemory","getString","extractMode","head","pipe","getNumber","flatMap","getDate","getArrayString","getArrayNumber","all","getArrayDate","getOptionalString","getOptionalNumber","getOptionalDate","getOptionalArrayNumber","getOptionalArrayString","getOptionalArrayDate","items","find","candidate","item","value","availableKeys","String","ConfigurationClientInMemory","in","group","plainConfig"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,sCAAsC,CAAC;AACrD,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/base-entities/configuration-client/index.ts"],"sourcesContent":["export * from './configuration-client-singleton.js';\nexport * from './read-configuration-from-process.js';\nexport * from './types.js';\n"],"names":[],"mappings":"AAAA,cAAc,sCAAsC;AACpD,cAAc,uCAAuC;AACrD,cAAc,aAAa"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ConfigurationPlain } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Groups a flat record of `GROUP__KEY=value` entries into `ConfigurationPlain`.
|
|
4
|
+
*
|
|
5
|
+
* The input is expected to be already scoped to a single service (the
|
|
6
|
+
* `SERVICE__` prefix removed by the caller). Each entry's name is split on the
|
|
7
|
+
* first `__` into a group and a key (the key may itself contain `__`). Malformed
|
|
8
|
+
* entries without a group/key pair are skipped.
|
|
9
|
+
*/
|
|
10
|
+
export declare const readConfigurationFromProcess: (keys: Record<string, string>) => ConfigurationPlain;
|
|
11
|
+
//# sourceMappingURL=read-configuration-from-process.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read-configuration-from-process.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/read-configuration-from-process.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAEnE;;;;;;;GAOG;AACH,eAAO,MAAM,4BAA4B,GACvC,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3B,kBAeF,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Groups a flat record of `GROUP__KEY=value` entries into `ConfigurationPlain`.
|
|
3
|
+
*
|
|
4
|
+
* The input is expected to be already scoped to a single service (the
|
|
5
|
+
* `SERVICE__` prefix removed by the caller). Each entry's name is split on the
|
|
6
|
+
* first `__` into a group and a key (the key may itself contain `__`). Malformed
|
|
7
|
+
* entries without a group/key pair are skipped.
|
|
8
|
+
*/ export const readConfigurationFromProcess = (keys)=>{
|
|
9
|
+
const config = {};
|
|
10
|
+
for (const [name, value] of Object.entries(keys)){
|
|
11
|
+
var _config, _group, _;
|
|
12
|
+
const [group, ...rest] = name.split('__');
|
|
13
|
+
if (!group || rest.length === 0) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
const key = rest.join('__');
|
|
17
|
+
const item = {
|
|
18
|
+
key,
|
|
19
|
+
value
|
|
20
|
+
};
|
|
21
|
+
((_ = (_config = config)[_group = group]) != null ? _ : _config[_group] = []).push(item);
|
|
22
|
+
}
|
|
23
|
+
return config;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=read-configuration-from-process.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/base-entities/configuration-client/read-configuration-from-process.ts"],"sourcesContent":["import { ConfigurationItem, ConfigurationPlain } from './types.js';\n\n/**\n * Groups a flat record of `GROUP__KEY=value` entries into `ConfigurationPlain`.\n *\n * The input is expected to be already scoped to a single service (the\n * `SERVICE__` prefix removed by the caller). Each entry's name is split on the\n * first `__` into a group and a key (the key may itself contain `__`). Malformed\n * entries without a group/key pair are skipped.\n */\nexport const readConfigurationFromProcess = (\n keys: Record<string, string>,\n): ConfigurationPlain => {\n const config: ConfigurationPlain = {};\n\n for (const [name, value] of Object.entries(keys)) {\n const [group, ...rest] = name.split('__');\n if (!group || rest.length === 0) {\n continue;\n }\n\n const key = rest.join('__');\n const item: ConfigurationItem = { key, value };\n (config[group] ??= []).push(item);\n }\n\n return config;\n};\n"],"names":["readConfigurationFromProcess","keys","config","name","value","Object","entries","group","rest","split","length","key","join","item","push"],"mappings":"AAEA;;;;;;;CAOC,GACD,OAAO,MAAMA,+BAA+B,CAC1CC;IAEA,MAAMC,SAA6B,CAAC;IAEpC,KAAK,MAAM,CAACC,MAAMC,MAAM,IAAIC,OAAOC,OAAO,CAACL,MAAO;YAQ/CC,SAAOK,QAAPL;QAPD,MAAM,CAACK,OAAO,GAAGC,KAAK,GAAGL,KAAKM,KAAK,CAAC;QACpC,IAAI,CAACF,SAASC,KAAKE,MAAM,KAAK,GAAG;YAC/B;QACF;QAEA,MAAMC,MAAMH,KAAKI,IAAI,CAAC;QACtB,MAAMC,OAA0B;YAAEF;YAAKP;QAAM;QAC7C,EAACF,IAAAA,CAAAA,UAAAA,OAAM,CAACK,SAAAA,MAAM,YAAbL,IAAAA,OAAM,CAACK,OAAM,GAAK,EAAE,EAAEO,IAAI,CAACD;IAC9B;IAEA,OAAOX;AACT,EAAE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Effect } from 'effect/Effect';
|
|
2
|
+
import { EntifixBuildError } from '../entifix-error/index.js';
|
|
3
|
+
export type ConfigurationExtractMode = 'exact' | 'match' | 'compose';
|
|
4
|
+
export interface ConfigurationClientGroup {
|
|
5
|
+
getNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number, EntifixBuildError>;
|
|
6
|
+
getString(key: string, extractMode?: ConfigurationExtractMode): Effect<string, EntifixBuildError>;
|
|
7
|
+
getDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date, EntifixBuildError>;
|
|
8
|
+
getArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number[], EntifixBuildError>;
|
|
9
|
+
getArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect<string[], EntifixBuildError>;
|
|
10
|
+
getArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date[], EntifixBuildError>;
|
|
11
|
+
getOptionalNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number | undefined, EntifixBuildError>;
|
|
12
|
+
getOptionalString(key: string, extractMode?: ConfigurationExtractMode): Effect<string | undefined, EntifixBuildError>;
|
|
13
|
+
getOptionalDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date | undefined, EntifixBuildError>;
|
|
14
|
+
getOptionalArrayNumber(key: string, extractMode?: ConfigurationExtractMode): Effect<number[] | undefined, EntifixBuildError>;
|
|
15
|
+
getOptionalArrayString(key: string, extractMode?: ConfigurationExtractMode): Effect<string[] | undefined, EntifixBuildError>;
|
|
16
|
+
getOptionalArrayDate(key: string, extractMode?: ConfigurationExtractMode): Effect<Date[] | undefined, EntifixBuildError>;
|
|
17
|
+
}
|
|
18
|
+
export interface ConfigurationClient {
|
|
19
|
+
in(key: string): ConfigurationClientGroup;
|
|
20
|
+
}
|
|
21
|
+
export interface ConfigurationItem {
|
|
22
|
+
key: string;
|
|
23
|
+
value: unknown;
|
|
24
|
+
/**
|
|
25
|
+
* Marks the value as a credential — a connection password, a signing key.
|
|
26
|
+
*
|
|
27
|
+
* It travels with the item because the only place that knows is the
|
|
28
|
+
* configuration store's own `is_secret` column, while the place that must act
|
|
29
|
+
* on it is a service's `GET /api/config` introspection route, several hops
|
|
30
|
+
* away. Inferring it there from the key's *name* would be a guess, and the
|
|
31
|
+
* cost of guessing wrong is publishing a private key.
|
|
32
|
+
*/
|
|
33
|
+
isSecret?: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface ConfigurationPlain {
|
|
36
|
+
[key: string]: ConfigurationItem[];
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/base-entities/configuration-client/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,MAAM,MAAM,wBAAwB,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAC;AAErE,MAAM,WAAW,wBAAwB;IACvC,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrC,SAAS,CACP,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACrC,OAAO,CACL,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IACnC,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvC,cAAc,CACZ,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvC,YAAY,CACV,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACrC,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACjD,iBAAiB,CACf,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACjD,eAAe,CACb,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC/C,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACnD,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,MAAM,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACnD,oBAAoB,CAClB,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,wBAAwB,GACrC,MAAM,CAAC,IAAI,EAAE,GAAG,SAAS,EAAE,iBAAiB,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,wBAAwB,CAAC;CAC3C;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,OAAO,CAAC;IACf;;;;;;;;OAQG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/base-entities/configuration-client/types.ts"],"sourcesContent":["import { Effect } from 'effect/Effect';\n\nimport { EntifixBuildError } from '../entifix-error/index.js';\n\nexport type ConfigurationExtractMode = 'exact' | 'match' | 'compose';\n\nexport interface ConfigurationClientGroup {\n getNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number, EntifixBuildError>;\n getString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string, EntifixBuildError>;\n getDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date, EntifixBuildError>;\n getArrayNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number[], EntifixBuildError>;\n getArrayString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string[], EntifixBuildError>;\n getArrayDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date[], EntifixBuildError>;\n getOptionalNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number | undefined, EntifixBuildError>;\n getOptionalString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string | undefined, EntifixBuildError>;\n getOptionalDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date | undefined, EntifixBuildError>;\n getOptionalArrayNumber(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<number[] | undefined, EntifixBuildError>;\n getOptionalArrayString(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<string[] | undefined, EntifixBuildError>;\n getOptionalArrayDate(\n key: string,\n extractMode?: ConfigurationExtractMode,\n ): Effect<Date[] | undefined, EntifixBuildError>;\n}\n\nexport interface ConfigurationClient {\n in(key: string): ConfigurationClientGroup;\n}\n\nexport interface ConfigurationItem {\n key: string;\n value: unknown;\n /**\n * Marks the value as a credential — a connection password, a signing key.\n *\n * It travels with the item because the only place that knows is the\n * configuration store's own `is_secret` column, while the place that must act\n * on it is a service's `GET /api/config` introspection route, several hops\n * away. Inferring it there from the key's *name* would be a guess, and the\n * cost of guessing wrong is publishing a private key.\n */\n isSecret?: boolean;\n}\n\nexport interface ConfigurationPlain {\n [key: string]: ConfigurationItem[];\n}\n"],"names":[],"mappings":"AA4EA,WAEC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare abstract class EntifixError extends Error {
|
|
2
|
+
abstract readonly _tag: string;
|
|
3
|
+
readonly cause: Error | undefined;
|
|
4
|
+
readonly details?: Record<string, unknown>;
|
|
5
|
+
constructor(message: string, cause?: unknown, details?: Record<string, unknown>);
|
|
6
|
+
}
|
|
7
|
+
export declare class EntifixBuildError extends EntifixError {
|
|
8
|
+
_tag: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class EntifixLogicError extends EntifixError {
|
|
11
|
+
_tag: string;
|
|
12
|
+
}
|
|
13
|
+
export declare class EntifixConnError extends EntifixError {
|
|
14
|
+
_tag: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* A transaction/saga step failed (validate, execute, rollback, free) — distinct
|
|
18
|
+
* from a lock acquisition failure, which callers retry, and from a build error,
|
|
19
|
+
* which is the client's fault.
|
|
20
|
+
*/
|
|
21
|
+
export declare class EntifixTransactionError extends EntifixError {
|
|
22
|
+
_tag: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* A resource could not be locked within the allowed retries/TTL — a contention
|
|
26
|
+
* signal callers surface as a `409`/`423`, not a `500`.
|
|
27
|
+
*/
|
|
28
|
+
export declare class EntifixLockError extends EntifixError {
|
|
29
|
+
_tag: string;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=entifix-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entifix-error.d.ts","sourceRoot":"","sources":["../../../src/base-entities/entifix-error/entifix-error.ts"],"names":[],"mappings":"AAUA,8BAAsB,YAAa,SAAQ,KAAK;IAE9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,SAAkB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IAC3C,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAKzC,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,OAAO,EACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAOpC;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IAExC,IAAI,SAAuB;CAErC;AAED,qBAAa,iBAAkB,SAAQ,YAAY;IAExC,IAAI,SAAuB;CAErC;AAED,qBAAa,gBAAiB,SAAQ,YAAY;IAEvC,IAAI,SAAsB;CAEpC;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IAE9C,IAAI,SAA6B;CAE3C;AAED;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAEvC,IAAI,SAAsB;CAEpC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
function assertCause(cause) {
|
|
2
|
+
if (cause instanceof Error) {
|
|
3
|
+
return cause;
|
|
4
|
+
} else if (cause && typeof cause === 'object' && 'message' in cause) {
|
|
5
|
+
return new Error(String(cause['message']));
|
|
6
|
+
}
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
export class EntifixError extends Error {
|
|
10
|
+
// #endregion properties
|
|
11
|
+
// #region constructors
|
|
12
|
+
constructor(message, cause, details){
|
|
13
|
+
super(message);
|
|
14
|
+
this.cause = assertCause(cause);
|
|
15
|
+
this.details = details;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class EntifixBuildError extends EntifixError {
|
|
19
|
+
constructor(...args){
|
|
20
|
+
super(...args), // #region properties
|
|
21
|
+
this._tag = 'EntifixBuildError';
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export class EntifixLogicError extends EntifixError {
|
|
25
|
+
constructor(...args){
|
|
26
|
+
super(...args), // #region properties
|
|
27
|
+
this._tag = 'EntifixLogicError';
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export class EntifixConnError extends EntifixError {
|
|
31
|
+
constructor(...args){
|
|
32
|
+
super(...args), // #region properties
|
|
33
|
+
this._tag = 'EntifixConnError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* A transaction/saga step failed (validate, execute, rollback, free) — distinct
|
|
38
|
+
* from a lock acquisition failure, which callers retry, and from a build error,
|
|
39
|
+
* which is the client's fault.
|
|
40
|
+
*/ export class EntifixTransactionError extends EntifixError {
|
|
41
|
+
constructor(...args){
|
|
42
|
+
super(...args), // #region properties
|
|
43
|
+
this._tag = 'EntifixTransactionError';
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* A resource could not be locked within the allowed retries/TTL — a contention
|
|
48
|
+
* signal callers surface as a `409`/`423`, not a `500`.
|
|
49
|
+
*/ export class EntifixLockError extends EntifixError {
|
|
50
|
+
constructor(...args){
|
|
51
|
+
super(...args), // #region properties
|
|
52
|
+
this._tag = 'EntifixLockError';
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=entifix-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/base-entities/entifix-error/entifix-error.ts"],"sourcesContent":["function assertCause(cause: unknown): Error | undefined {\n if (cause instanceof Error) {\n return cause;\n } else if (cause && typeof cause === 'object' && 'message' in cause) {\n return new Error(String(cause['message']));\n }\n\n return undefined;\n}\n\nexport abstract class EntifixError extends Error {\n // #region properties\n abstract readonly _tag: string;\n override readonly cause: Error | undefined;\n readonly details?: Record<string, unknown>;\n // #endregion properties\n\n // #region constructors\n constructor(\n message: string,\n cause?: unknown,\n details?: Record<string, unknown>,\n ) {\n super(message);\n this.cause = assertCause(cause);\n this.details = details;\n }\n // #endregion constructors\n}\n\nexport class EntifixBuildError extends EntifixError {\n // #region properties\n override _tag = 'EntifixBuildError';\n // #endregion properties\n}\n\nexport class EntifixLogicError extends EntifixError {\n // #region properties\n override _tag = 'EntifixLogicError';\n // #endregion properties\n}\n\nexport class EntifixConnError extends EntifixError {\n // #region properties\n override _tag = 'EntifixConnError';\n // #endregion properties\n}\n\n/**\n * A transaction/saga step failed (validate, execute, rollback, free) — distinct\n * from a lock acquisition failure, which callers retry, and from a build error,\n * which is the client's fault.\n */\nexport class EntifixTransactionError extends EntifixError {\n // #region properties\n override _tag = 'EntifixTransactionError';\n // #endregion properties\n}\n\n/**\n * A resource could not be locked within the allowed retries/TTL — a contention\n * signal callers surface as a `409`/`423`, not a `500`.\n */\nexport class EntifixLockError extends EntifixError {\n // #region properties\n override _tag = 'EntifixLockError';\n // #endregion properties\n}\n"],"names":["assertCause","cause","Error","String","undefined","EntifixError","message","details","EntifixBuildError","_tag","EntifixLogicError","EntifixConnError","EntifixTransactionError","EntifixLockError"],"mappings":"AAAA,SAASA,YAAYC,KAAc;IACjC,IAAIA,iBAAiBC,OAAO;QAC1B,OAAOD;IACT,OAAO,IAAIA,SAAS,OAAOA,UAAU,YAAY,aAAaA,OAAO;QACnE,OAAO,IAAIC,MAAMC,OAAOF,KAAK,CAAC,UAAU;IAC1C;IAEA,OAAOG;AACT;AAEA,OAAO,MAAeC,qBAAqBH;IAKzC,wBAAwB;IAExB,uBAAuB;IACvB,YACEI,OAAe,EACfL,KAAe,EACfM,OAAiC,CACjC;QACA,KAAK,CAACD;QACN,IAAI,CAACL,KAAK,GAAGD,YAAYC;QACzB,IAAI,CAACM,OAAO,GAAGA;IACjB;AAEF;AAEA,OAAO,MAAMC,0BAA0BH;;QAAhC,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA,OAAO,MAAMC,0BAA0BL;;QAAhC,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA,OAAO,MAAME,yBAAyBN;;QAA/B,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA;;;;CAIC,GACD,OAAO,MAAMG,gCAAgCP;;QAAtC,gBACL,qBAAqB;aACZI,OAAO;;AAElB;AAEA;;;CAGC,GACD,OAAO,MAAMI,yBAAyBR;;QAA/B,gBACL,qBAAqB;aACZI,OAAO;;AAElB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/base-entities/entifix-error/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/base-entities/entifix-error/index.ts"],"sourcesContent":["export * from './entifix-error.js';\n"],"names":[],"mappings":"AAAA,cAAc,qBAAqB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import type { CommandOption } from './command-source.js';
|
|
2
|
+
/**
|
|
3
|
+
* Normalize a string for matching: case-folded, and with accents removed.
|
|
4
|
+
*
|
|
5
|
+
* ⚠️ The accent fold is correctness, not polish. The fleet ships Spanish as its
|
|
6
|
+
* default locale, and without it `categoria` does not match `Categoría`, `marron`
|
|
7
|
+
* does not match `Marrón`, and `articulo` does not match `Artículo` — so the
|
|
8
|
+
* palette silently finds nothing for the most natural way to type most of its
|
|
9
|
+
* own copy. Nobody reaches for the accented key in a search box.
|
|
10
|
+
*
|
|
11
|
+
* NFD splits a precomposed letter into its base plus a combining mark, and the
|
|
12
|
+
* `\p{Diacritic}` class is what then removes only the mark. `ñ` decomposes too,
|
|
13
|
+
* so `nino` matches `Niño` — which is what a person typing quickly wants, even
|
|
14
|
+
* though ñ is a letter of its own in Spanish rather than an accented n.
|
|
15
|
+
*/
|
|
16
|
+
export declare function foldForMatch(text: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Does `text` contain every character of `term`, in order?
|
|
19
|
+
*
|
|
20
|
+
* Subsequence rather than substring, so `prbr` finds "Producto Bruto" and `numa`
|
|
21
|
+
* finds "Nueva marca" — the thing that makes a palette feel fast. Deliberately
|
|
22
|
+
* **not** scored: ADR 0040 fixed group order as the ranking, and a score inside
|
|
23
|
+
* a group would reshuffle it on every keystroke for no gain a person can learn.
|
|
24
|
+
*
|
|
25
|
+
* An empty term matches everything, which is what makes an unfiltered palette
|
|
26
|
+
* the same code path as a filtered one.
|
|
27
|
+
*/
|
|
28
|
+
export declare function subsequenceMatch(term: string, text: string): boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Does this option answer to `term`, by its label or by any of its keywords?
|
|
31
|
+
*
|
|
32
|
+
* The keywords are what let a Spanish command match an English word someone
|
|
33
|
+
* typed — "Nuevo producto" answering to `new` — without translating the label.
|
|
34
|
+
*/
|
|
35
|
+
export declare function matchesCommand(term: string, option: CommandOption): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Split a catalog-resolved keyword list into terms.
|
|
38
|
+
*
|
|
39
|
+
* `MetaUseCase.keywordsKey` is a catalog **key** rather than a `string[]` so the
|
|
40
|
+
* terms are per-locale; what the catalog holds is therefore one string, and this
|
|
41
|
+
* is the convention for reading it. Commas, because a keyword may itself be two
|
|
42
|
+
* words ("cerrar sesión") and splitting on whitespace would break that into
|
|
43
|
+
* terms that match nothing on their own.
|
|
44
|
+
*
|
|
45
|
+
* Empty entries are dropped rather than kept as `''`, which would match every
|
|
46
|
+
* option through {@link subsequenceMatch}'s empty-term rule.
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseKeywords(value: string | undefined): string[];
|
|
49
|
+
/** Which sources a typed term is asking for. */
|
|
50
|
+
export type CommandScope = 'all' | 'commands' | 'records';
|
|
51
|
+
/** A term, split into the scope its prefix asked for and the rest. */
|
|
52
|
+
export interface ParsedCommandTerm {
|
|
53
|
+
readonly scope: CommandScope;
|
|
54
|
+
readonly term: string;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* `>` narrows to commands, `#` to records, anything else searches both.
|
|
58
|
+
*
|
|
59
|
+
* A grammar for *entry* rather than for depth: descending into a sub-picker is a
|
|
60
|
+
* page stack, not a third prefix, because a prefix a person has to remember is
|
|
61
|
+
* worse than a list they can see. Two characters only, and both are the ones
|
|
62
|
+
* VS Code and GitHub already trained people on.
|
|
63
|
+
*
|
|
64
|
+
* The prefix is stripped and the remainder trimmed at the front only — a
|
|
65
|
+
* trailing space is something the person is still typing, and eating it would
|
|
66
|
+
* make the list jump between keystrokes.
|
|
67
|
+
*/
|
|
68
|
+
export declare function parseCommandTerm(raw: string): ParsedCommandTerm;
|
|
69
|
+
/**
|
|
70
|
+
* The one thing selecting an option does.
|
|
71
|
+
*
|
|
72
|
+
* An option declaring none is a line that looks selectable and does nothing;
|
|
73
|
+
* one declaring two is a line whose behaviour depends on the order a renderer
|
|
74
|
+
* happens to check its members in. Both are silent, so this throws — at the
|
|
75
|
+
* first render of the palette rather than on the click, which is the posture
|
|
76
|
+
* `surfaceFor` and `assertSearchable` already take for the same reason.
|
|
77
|
+
*/
|
|
78
|
+
export declare function commandEffectOf(option: CommandOption): 'href' | 'run' | 'push';
|
|
79
|
+
//# sourceMappingURL=command-matching.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command-matching.d.ts","sourceRoot":"","sources":["../../src/command-palette/command-matching.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAWpE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAK3E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,EAAE,CAMjE;AAED,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1D,sEAAsE;AACtE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,CAQ/D;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,GACpB,MAAM,GAAG,KAAK,GAAG,MAAM,CAezB"}
|