@flextudio/scenario 0.1.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 +202 -0
- package/README.md +260 -0
- package/bin/flex-scenario.mjs +895 -0
- package/commands/flex-spec.md +28 -0
- package/contract-data/README.md +267 -0
- package/contract-data/examples/README.md +147 -0
- package/contract-data/examples/basic/basic-list-detail.json +2521 -0
- package/contract-data/examples/basic/delivery-address-popup.json +2175 -0
- package/contract-data/examples/basic/fixedtop-floating-form.json +1524 -0
- package/contract-data/examples/basic/search-period-popup.json +1524 -0
- package/contract-data/examples/design/booking-wizard-3step.json +1335 -0
- package/contract-data/examples/design/list-detail-form-3step.json +1516 -0
- package/contract-data/examples/design/list-filter-2step.json +1365 -0
- package/contract-data/examples/design/list-filter-detail-3step.json +1570 -0
- package/contract-data/examples/design/result-entry-wizard-4step.json +1861 -0
- package/contract-data/examples/intent/mock-employee-list.json +54 -0
- package/contract-data/examples/intent/script-cart-flow.json +96 -0
- package/contract-data/examples/intent/script-dialog-confirm.json +61 -0
- package/contract-data/runtime/v1/collection/README.md +119 -0
- package/contract-data/runtime/v1/collection/_c.md +205 -0
- package/contract-data/runtime/v1/collection/category.md +165 -0
- package/contract-data/runtime/v1/collection/collection.md +135 -0
- package/contract-data/runtime/v1/collection/lifecycle.md +140 -0
- package/contract-data/runtime/v1/collection/naming.md +174 -0
- package/contract-data/runtime/v1/collection/sector.md +176 -0
- package/contract-data/runtime/v1/collection/status.md +114 -0
- package/contract-data/runtime/v1/intent-system/INTENT.md +552 -0
- package/contract-data/runtime/v1/intent-system/README.md +118 -0
- package/contract-data/runtime/v1/intent-system/intent.schema.json +164 -0
- package/contract-data/runtime/v1/intent-system/kinds/_base.mjs +137 -0
- package/contract-data/runtime/v1/intent-system/kinds/clearCategory.mjs +35 -0
- package/contract-data/runtime/v1/intent-system/kinds/copyStepValues.mjs +100 -0
- package/contract-data/runtime/v1/intent-system/kinds/deleteActive.mjs +45 -0
- package/contract-data/runtime/v1/intent-system/kinds/dialog.mjs +127 -0
- package/contract-data/runtime/v1/intent-system/kinds/reloadGroup.mjs +28 -0
- package/contract-data/runtime/v1/intent-system/kinds/updateActive.mjs +74 -0
- package/contract-data/runtime/v1/intent-system/materialize.mjs +495 -0
- package/contract-data/runtime/v1/script/README.md +37 -0
- package/contract-data/runtime/v1/script/current_step.md +112 -0
- package/contract-data/runtime/v1/script/f_collection.md +142 -0
- package/contract-data/runtime/v1/script/f_content.md +133 -0
- package/contract-data/runtime/v1/script/f_messagebox.md +132 -0
- package/contract-data/runtime/v1/script/scenario-gen-rules.md +264 -0
- package/contract-data/schema/v1/SKELETON-SHELL.md +120 -0
- package/contract-data/schema/v1/bottom-buttons.md +155 -0
- package/contract-data/schema/v1/bottom-buttons.schema.json +134 -0
- package/contract-data/schema/v1/control/_base.schema.json +1296 -0
- package/contract-data/schema/v1/control/button.md +147 -0
- package/contract-data/schema/v1/control/button.schema.json +55 -0
- package/contract-data/schema/v1/control/calendar-navigator.md +143 -0
- package/contract-data/schema/v1/control/calendar-navigator.schema.json +164 -0
- package/contract-data/schema/v1/control/calendar.md +128 -0
- package/contract-data/schema/v1/control/calendar.schema.json +18 -0
- package/contract-data/schema/v1/control/check-box.md +117 -0
- package/contract-data/schema/v1/control/check-box.schema.json +41 -0
- package/contract-data/schema/v1/control/combo.md +293 -0
- package/contract-data/schema/v1/control/combo.schema.json +23 -0
- package/contract-data/schema/v1/control/embed.md +211 -0
- package/contract-data/schema/v1/control/embed.schema.json +30 -0
- package/contract-data/schema/v1/control/image-box.md +237 -0
- package/contract-data/schema/v1/control/image-box.schema.json +49 -0
- package/contract-data/schema/v1/control/input-date.md +175 -0
- package/contract-data/schema/v1/control/input-date.schema.json +27 -0
- package/contract-data/schema/v1/control/input-file.md +192 -0
- package/contract-data/schema/v1/control/input-file.schema.json +139 -0
- package/contract-data/schema/v1/control/input-mask.md +89 -0
- package/contract-data/schema/v1/control/input-mask.schema.json +45 -0
- package/contract-data/schema/v1/control/input-number.md +55 -0
- package/contract-data/schema/v1/control/input-number.schema.json +24 -0
- package/contract-data/schema/v1/control/input-text.md +73 -0
- package/contract-data/schema/v1/control/input-text.schema.json +24 -0
- package/contract-data/schema/v1/control/label.md +127 -0
- package/contract-data/schema/v1/control/label.schema.json +113 -0
- package/contract-data/schema/v1/control/multi-input-box.md +51 -0
- package/contract-data/schema/v1/control/multi-input-box.schema.json +19 -0
- package/contract-data/schema/v1/control/other.schema.json +24 -0
- package/contract-data/schema/v1/control/radio-box.md +150 -0
- package/contract-data/schema/v1/control/radio-box.schema.json +87 -0
- package/contract-data/schema/v1/control/search.md +163 -0
- package/contract-data/schema/v1/control/search.schema.json +23 -0
- package/contract-data/schema/v1/control/tab.md +240 -0
- package/contract-data/schema/v1/control/tab.schema.json +112 -0
- package/contract-data/schema/v1/control/tree.md +278 -0
- package/contract-data/schema/v1/control/tree.schema.json +83 -0
- package/contract-data/schema/v1/control.md +264 -0
- package/contract-data/schema/v1/control.schema.json +30 -0
- package/contract-data/schema/v1/data-objects.md +278 -0
- package/contract-data/schema/v1/data-objects.schema.json +161 -0
- package/contract-data/schema/v1/data-sources.md +215 -0
- package/contract-data/schema/v1/data-sources.schema.json +184 -0
- package/contract-data/schema/v1/design-system/DESIGN.md +282 -0
- package/contract-data/schema/v1/design-system/README.md +235 -0
- package/contract-data/schema/v1/design-system/design.schema.json +496 -0
- package/contract-data/schema/v1/design-system/error-mapping.mjs +132 -0
- package/contract-data/schema/v1/design-system/materialize.mjs +1435 -0
- package/contract-data/schema/v1/design-system/tests/_base.additional-meta.test.mjs +98 -0
- package/contract-data/schema/v1/design-system/tests/_base.materialize.test.mjs +596 -0
- package/contract-data/schema/v1/design-system/tests/checklist.test.mjs +135 -0
- package/contract-data/schema/v1/design-system/tests/design.schema.test.mjs +487 -0
- package/contract-data/schema/v1/design-system/tests/error-mapping.test.mjs +244 -0
- package/contract-data/schema/v1/design-system/tests/materialize.test.mjs +1093 -0
- package/contract-data/schema/v1/design-system/tests/move-step.test.mjs +119 -0
- package/contract-data/schema/v1/design-system/tests/override.integration.test.mjs +116 -0
- package/contract-data/schema/v1/design-system/tokens.json +76 -0
- package/contract-data/schema/v1/events.md +467 -0
- package/contract-data/schema/v1/events.schema.json +272 -0
- package/contract-data/schema/v1/group.md +146 -0
- package/contract-data/schema/v1/group.schema.json +133 -0
- package/contract-data/schema/v1/mockup-data.md +186 -0
- package/contract-data/schema/v1/naming-objects.schema.json +133 -0
- package/contract-data/schema/v1/node.md +32 -0
- package/contract-data/schema/v1/node.schema.json +24 -0
- package/contract-data/schema/v1/patterns/_base.additional-meta.mjs +135 -0
- package/contract-data/schema/v1/patterns/_base.controls.mjs +759 -0
- package/contract-data/schema/v1/patterns/_base.icon.mjs +61 -0
- package/contract-data/schema/v1/patterns/_base.id.mjs +15 -0
- package/contract-data/schema/v1/patterns/_base.materialize.mjs +1181 -0
- package/contract-data/schema/v1/patterns/_base.style.mjs +312 -0
- package/contract-data/schema/v1/patterns/atom/badge.materialize.mjs +68 -0
- package/contract-data/schema/v1/patterns/atom/badge.schema.json +44 -0
- package/contract-data/schema/v1/patterns/atom/button.materialize.mjs +91 -0
- package/contract-data/schema/v1/patterns/atom/button.schema.json +70 -0
- package/contract-data/schema/v1/patterns/atom/checkbox.materialize.mjs +40 -0
- package/contract-data/schema/v1/patterns/atom/checkbox.schema.json +39 -0
- package/contract-data/schema/v1/patterns/atom/segmented-radio.materialize.mjs +67 -0
- package/contract-data/schema/v1/patterns/atom/segmented-radio.schema.json +49 -0
- package/contract-data/schema/v1/patterns/atom/switch.materialize.mjs +58 -0
- package/contract-data/schema/v1/patterns/atom/switch.schema.json +27 -0
- package/contract-data/schema/v1/patterns/molecule/checklist.materialize.mjs +130 -0
- package/contract-data/schema/v1/patterns/molecule/checklist.schema.json +63 -0
- package/contract-data/schema/v1/patterns/molecule/input-action.materialize.mjs +356 -0
- package/contract-data/schema/v1/patterns/molecule/input-action.schema.json +251 -0
- package/contract-data/schema/v1/patterns/molecule/input-button.materialize.mjs +183 -0
- package/contract-data/schema/v1/patterns/molecule/input-button.schema.json +141 -0
- package/contract-data/schema/v1/patterns/molecule/input-pair.materialize.mjs +254 -0
- package/contract-data/schema/v1/patterns/molecule/input-pair.schema.json +210 -0
- package/contract-data/schema/v1/scenario.md +112 -0
- package/contract-data/schema/v1/scenario.schema.json +161 -0
- package/contract-data/schema/v1/service/CustomSystem.md +139 -0
- package/contract-data/schema/v1/service/CustomSystem.schema.json +41 -0
- package/contract-data/schema/v1/service/Firestore.md +125 -0
- package/contract-data/schema/v1/service/Firestore.schema.json +28 -0
- package/contract-data/schema/v1/service/FlexAutoQuery.md +128 -0
- package/contract-data/schema/v1/service/FlexAutoQuery.schema.json +35 -0
- package/contract-data/schema/v1/service/FlexSQL.md +96 -0
- package/contract-data/schema/v1/service/FlexSQL.schema.json +33 -0
- package/contract-data/schema/v1/service/Flextudio API.md +161 -0
- package/contract-data/schema/v1/service/Flextudio API.schema.json +115 -0
- package/contract-data/schema/v1/service/Flextudio.md +87 -0
- package/contract-data/schema/v1/service/Flextudio.schema.json +26 -0
- package/contract-data/schema/v1/service/GoogleSheet.md +71 -0
- package/contract-data/schema/v1/service/GoogleSheet.schema.json +31 -0
- package/contract-data/schema/v1/service/README.md +127 -0
- package/contract-data/schema/v1/service/_base.schema.json +31 -0
- package/contract-data/schema/v1/service/ksystem.md +76 -0
- package/contract-data/schema/v1/service/ksystem.schema.json +36 -0
- package/contract-data/schema/v1/service-binding.md +228 -0
- package/contract-data/schema/v1/service-binding.schema.json +51 -0
- package/contract-data/schema/v1/step.md +546 -0
- package/contract-data/schema/v1/step.schema.json +258 -0
- package/contract-data/schema/v1/style-objects.md +183 -0
- package/contract-data/schema/v1/style-objects.schema.json +155 -0
- package/contract-data/spec/catalog.json +406 -0
- package/contract-data/spec/rules.md +400 -0
- package/node_modules/@flextudio/contract-core/contract.mjs +367 -0
- package/node_modules/@flextudio/contract-core/index.mjs +16 -0
- package/node_modules/@flextudio/contract-core/package.json +21 -0
- package/node_modules/@flextudio/contract-core/paths.mjs +72 -0
- package/node_modules/@flextudio/contract-core/schemas.mjs +474 -0
- package/node_modules/@flextudio/contract-core/validators.mjs +2471 -0
- package/node_modules/ajv/.runkit_example.js +23 -0
- package/node_modules/ajv/LICENSE +22 -0
- package/node_modules/ajv/README.md +207 -0
- package/node_modules/ajv/dist/2019.d.ts +19 -0
- package/node_modules/ajv/dist/2019.js +61 -0
- package/node_modules/ajv/dist/2019.js.map +1 -0
- package/node_modules/ajv/dist/2020.d.ts +19 -0
- package/node_modules/ajv/dist/2020.js +55 -0
- package/node_modules/ajv/dist/2020.js.map +1 -0
- package/node_modules/ajv/dist/ajv.d.ts +18 -0
- package/node_modules/ajv/dist/ajv.js +50 -0
- package/node_modules/ajv/dist/ajv.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
- package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
- package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
- package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
- package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
- package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
- package/node_modules/ajv/dist/compile/errors.js +123 -0
- package/node_modules/ajv/dist/compile/errors.js.map +1 -0
- package/node_modules/ajv/dist/compile/index.d.ts +80 -0
- package/node_modules/ajv/dist/compile/index.js +242 -0
- package/node_modules/ajv/dist/compile/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
- package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js +236 -0
- package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
- package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
- package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
- package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
- package/node_modules/ajv/dist/compile/names.d.ts +20 -0
- package/node_modules/ajv/dist/compile/names.js +28 -0
- package/node_modules/ajv/dist/compile/names.js.map +1 -0
- package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
- package/node_modules/ajv/dist/compile/ref_error.js +12 -0
- package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
- package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
- package/node_modules/ajv/dist/compile/resolve.js +155 -0
- package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
- package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
- package/node_modules/ajv/dist/compile/rules.js +26 -0
- package/node_modules/ajv/dist/compile/rules.js.map +1 -0
- package/node_modules/ajv/dist/compile/util.d.ts +40 -0
- package/node_modules/ajv/dist/compile/util.js +178 -0
- package/node_modules/ajv/dist/compile/util.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
- package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
- package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
- package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
- package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
- package/node_modules/ajv/dist/compile/validate/index.js +520 -0
- package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
- package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
- package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
- package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
- package/node_modules/ajv/dist/core.d.ts +174 -0
- package/node_modules/ajv/dist/core.js +618 -0
- package/node_modules/ajv/dist/core.js.map +1 -0
- package/node_modules/ajv/dist/jtd.d.ts +47 -0
- package/node_modules/ajv/dist/jtd.js +72 -0
- package/node_modules/ajv/dist/jtd.js.map +1 -0
- package/node_modules/ajv/dist/refs/data.json +13 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
- package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/equal.js +7 -0
- package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
- package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
- package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
- package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
- package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/quote.js +30 -0
- package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
- package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/re2.js +6 -0
- package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
- package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
- package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
- package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
- package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
- package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
- package/node_modules/ajv/dist/runtime/uri.js +6 -0
- package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
- package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
- package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
- package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
- package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
- package/node_modules/ajv/dist/standalone/index.js +90 -0
- package/node_modules/ajv/dist/standalone/index.js.map +1 -0
- package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
- package/node_modules/ajv/dist/standalone/instance.js +35 -0
- package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
- package/node_modules/ajv/dist/types/index.d.ts +183 -0
- package/node_modules/ajv/dist/types/index.js +3 -0
- package/node_modules/ajv/dist/types/index.js.map +1 -0
- package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
- package/node_modules/ajv/dist/types/json-schema.js +3 -0
- package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
- package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
- package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
- package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
- package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
- package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
- package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
- package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
- package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
- package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
- package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
- package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
- package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
- package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
- package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
- package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
- package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
- package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
- package/node_modules/ajv/dist/vocabularies/code.js +131 -0
- package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
- package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
- package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
- package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
- package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
- package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
- package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
- package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
- package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
- package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
- package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
- package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
- package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
- package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
- package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
- package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
- package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
- package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
- package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
- package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
- package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
- package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
- package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
- package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/next.js +8 -0
- package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
- package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
- package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
- package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
- package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
- package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
- package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
- package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
- package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
- package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
- package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
- package/node_modules/ajv/lib/2019.ts +81 -0
- package/node_modules/ajv/lib/2020.ts +75 -0
- package/node_modules/ajv/lib/ajv.ts +70 -0
- package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
- package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
- package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
- package/node_modules/ajv/lib/compile/errors.ts +184 -0
- package/node_modules/ajv/lib/compile/index.ts +324 -0
- package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
- package/node_modules/ajv/lib/compile/jtd/serialize.ts +277 -0
- package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
- package/node_modules/ajv/lib/compile/names.ts +27 -0
- package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
- package/node_modules/ajv/lib/compile/resolve.ts +149 -0
- package/node_modules/ajv/lib/compile/rules.ts +50 -0
- package/node_modules/ajv/lib/compile/util.ts +213 -0
- package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
- package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
- package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
- package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
- package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
- package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
- package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
- package/node_modules/ajv/lib/core.ts +892 -0
- package/node_modules/ajv/lib/jtd.ts +132 -0
- package/node_modules/ajv/lib/refs/data.json +13 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
- package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
- package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
- package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
- package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
- package/node_modules/ajv/lib/runtime/equal.ts +7 -0
- package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
- package/node_modules/ajv/lib/runtime/quote.ts +31 -0
- package/node_modules/ajv/lib/runtime/re2.ts +6 -0
- package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
- package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
- package/node_modules/ajv/lib/runtime/uri.ts +6 -0
- package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
- package/node_modules/ajv/lib/standalone/index.ts +100 -0
- package/node_modules/ajv/lib/standalone/instance.ts +36 -0
- package/node_modules/ajv/lib/types/index.ts +244 -0
- package/node_modules/ajv/lib/types/json-schema.ts +187 -0
- package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
- package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
- package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
- package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
- package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
- package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
- package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
- package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
- package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
- package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
- package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
- package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
- package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
- package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
- package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
- package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
- package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
- package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
- package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
- package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
- package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
- package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
- package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
- package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
- package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
- package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
- package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
- package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
- package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
- package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
- package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
- package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
- package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
- package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
- package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
- package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
- package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
- package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
- package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
- package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
- package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
- package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
- package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +39 -0
- package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
- package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
- package/node_modules/ajv/package.json +126 -0
- package/node_modules/fast-deep-equal/LICENSE +21 -0
- package/node_modules/fast-deep-equal/README.md +96 -0
- package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/index.js +72 -0
- package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/es6/react.js +79 -0
- package/node_modules/fast-deep-equal/index.d.ts +4 -0
- package/node_modules/fast-deep-equal/index.js +46 -0
- package/node_modules/fast-deep-equal/package.json +61 -0
- package/node_modules/fast-deep-equal/react.d.ts +2 -0
- package/node_modules/fast-deep-equal/react.js +53 -0
- package/node_modules/fast-uri/.gitattributes +2 -0
- package/node_modules/fast-uri/.github/dependabot.yml +13 -0
- package/node_modules/fast-uri/.github/workflows/ci.yml +106 -0
- package/node_modules/fast-uri/.github/workflows/lock-threads.yml +19 -0
- package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
- package/node_modules/fast-uri/LICENSE +30 -0
- package/node_modules/fast-uri/README.md +152 -0
- package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
- package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
- package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
- package/node_modules/fast-uri/benchmark/package.json +17 -0
- package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
- package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
- package/node_modules/fast-uri/eslint.config.js +6 -0
- package/node_modules/fast-uri/index.js +406 -0
- package/node_modules/fast-uri/lib/schemes.js +267 -0
- package/node_modules/fast-uri/lib/utils.js +443 -0
- package/node_modules/fast-uri/package.json +68 -0
- package/node_modules/fast-uri/test/ajv.test.js +43 -0
- package/node_modules/fast-uri/test/equal.test.js +117 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
- package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
- package/node_modules/fast-uri/test/parse.test.js +323 -0
- package/node_modules/fast-uri/test/resolve.test.js +87 -0
- package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
- package/node_modules/fast-uri/test/security-normalization.test.js +39 -0
- package/node_modules/fast-uri/test/security.test.js +133 -0
- package/node_modules/fast-uri/test/serialize.test.js +151 -0
- package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
- package/node_modules/fast-uri/test/uri-js.test.js +912 -0
- package/node_modules/fast-uri/test/util.test.js +38 -0
- package/node_modules/fast-uri/tsconfig.json +9 -0
- package/node_modules/fast-uri/types/index.d.ts +60 -0
- package/node_modules/fast-uri/types/index.test-d.ts +17 -0
- package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
- package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
- package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
- package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
- package/node_modules/json-schema-traverse/LICENSE +21 -0
- package/node_modules/json-schema-traverse/README.md +95 -0
- package/node_modules/json-schema-traverse/index.d.ts +40 -0
- package/node_modules/json-schema-traverse/index.js +93 -0
- package/node_modules/json-schema-traverse/package.json +43 -0
- package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
- package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
- package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
- package/node_modules/require-from-string/index.js +34 -0
- package/node_modules/require-from-string/license +21 -0
- package/node_modules/require-from-string/package.json +28 -0
- package/node_modules/require-from-string/readme.md +56 -0
- package/package.json +51 -0
- package/scripts/api-call.mjs +59 -0
- package/scripts/auth.mjs +262 -0
- package/scripts/build-skill-payload.mjs +338 -0
- package/scripts/cleanup.mjs +166 -0
- package/scripts/install-paths.mjs +146 -0
- package/scripts/postinstall.mjs +218 -0
- package/scripts/postpack.mjs +43 -0
- package/scripts/prepack.mjs +222 -0
- package/scripts/tty-menu.mjs +100 -0
- package/skill/README.md +55 -0
- package/skill/SKILL.md +138 -0
- package/skill/catalog.json +406 -0
- package/skill/design-rules.md +282 -0
- package/skill/design-system.md +235 -0
- package/skill/docs/SKELETON-SHELL.md +120 -0
- package/skill/docs/bottom-buttons.md +155 -0
- package/skill/docs/control/button.md +147 -0
- package/skill/docs/control/calendar-navigator.md +143 -0
- package/skill/docs/control/calendar.md +128 -0
- package/skill/docs/control/check-box.md +117 -0
- package/skill/docs/control/combo.md +293 -0
- package/skill/docs/control/embed.md +211 -0
- package/skill/docs/control/image-box.md +237 -0
- package/skill/docs/control/input-date.md +175 -0
- package/skill/docs/control/input-file.md +192 -0
- package/skill/docs/control/input-mask.md +89 -0
- package/skill/docs/control/input-number.md +55 -0
- package/skill/docs/control/input-text.md +73 -0
- package/skill/docs/control/label.md +127 -0
- package/skill/docs/control/multi-input-box.md +51 -0
- package/skill/docs/control/radio-box.md +150 -0
- package/skill/docs/control/search.md +163 -0
- package/skill/docs/control/tab.md +240 -0
- package/skill/docs/control/tree.md +278 -0
- package/skill/docs/control.md +264 -0
- package/skill/docs/data-objects.md +278 -0
- package/skill/docs/data-sources.md +215 -0
- package/skill/docs/events.md +467 -0
- package/skill/docs/group.md +146 -0
- package/skill/docs/index.json +125 -0
- package/skill/docs/mockup-data.md +186 -0
- package/skill/docs/node.md +32 -0
- package/skill/docs/scenario.md +112 -0
- package/skill/docs/service/CustomSystem.md +139 -0
- package/skill/docs/service/Firestore.md +125 -0
- package/skill/docs/service/FlexAutoQuery.md +128 -0
- package/skill/docs/service/FlexSQL.md +96 -0
- package/skill/docs/service/Flextudio API.md +161 -0
- package/skill/docs/service/Flextudio.md +87 -0
- package/skill/docs/service/GoogleSheet.md +71 -0
- package/skill/docs/service/README.md +127 -0
- package/skill/docs/service/ksystem.md +76 -0
- package/skill/docs/service-binding.md +228 -0
- package/skill/docs/step.md +546 -0
- package/skill/docs/style-objects.md +183 -0
- package/skill/examples/README.md +147 -0
- package/skill/examples/basic/basic-list-detail.json +2521 -0
- package/skill/examples/basic/delivery-address-popup.json +2175 -0
- package/skill/examples/basic/fixedtop-floating-form.json +1524 -0
- package/skill/examples/basic/search-period-popup.json +1524 -0
- package/skill/examples/design/booking-wizard-3step.json +1335 -0
- package/skill/examples/design/list-detail-form-3step.json +1516 -0
- package/skill/examples/design/list-filter-2step.json +1365 -0
- package/skill/examples/design/list-filter-detail-3step.json +1570 -0
- package/skill/examples/design/result-entry-wizard-4step.json +1861 -0
- package/skill/examples/index.json +150 -0
- package/skill/examples/intent/mock-employee-list.json +54 -0
- package/skill/examples/intent/script-cart-flow.json +96 -0
- package/skill/examples/intent/script-dialog-confirm.json +61 -0
- package/skill/intent-rules.md +552 -0
- package/skill/intent-system.md +118 -0
- package/skill/patterns/atom/badge.json +103 -0
- package/skill/patterns/atom/button.json +111 -0
- package/skill/patterns/atom/checkbox.json +70 -0
- package/skill/patterns/atom/segmented-radio.json +92 -0
- package/skill/patterns/atom/switch.json +57 -0
- package/skill/patterns/index.json +471 -0
- package/skill/patterns/molecule/checklist.json +107 -0
- package/skill/patterns/molecule/input-action.json +355 -0
- package/skill/patterns/molecule/input-button.json +212 -0
- package/skill/patterns/molecule/input-pair.json +284 -0
- package/skill/references/build-sequence.md +55 -0
- package/skill/references/patterns-cheatsheet.md +87 -0
- package/skill/references/spec-evolve/README.md +43 -0
- package/skill/references/spec-evolve/conventions.md +92 -0
- package/skill/references/spec-evolve/data-connection.md +102 -0
- package/skill/references/spec-evolve/intake.md +41 -0
- package/skill/references/spec-evolve/key-roles.md +44 -0
- package/skill/references/spec-evolve/lint.md +27 -0
- package/skill/references/spec-evolve/mockup.md +50 -0
- package/skill/references/spec-evolve/query-screens.md +66 -0
- package/skill/references/spec-evolve/routing.md +43 -0
- package/skill/references/spec-evolve/spec-format.md +76 -0
- package/skill/references/spec-evolve/templates/master-detail.spec.md +97 -0
- package/skill/references/spec-evolve/templates/query-screen.spec.md +96 -0
- package/skill/references/spec-evolve/templates/static-prototype.spec.md +54 -0
- package/skill/references/spec-evolve/templates-index.json +26 -0
- package/skill/rules.md +400 -0
- package/skill/schemas/bottom-buttons.schema.json +134 -0
- package/skill/schemas/control/_base.schema.json +1296 -0
- package/skill/schemas/control/button.schema.json +55 -0
- package/skill/schemas/control/calendar-navigator.schema.json +164 -0
- package/skill/schemas/control/calendar.schema.json +18 -0
- package/skill/schemas/control/check-box.schema.json +41 -0
- package/skill/schemas/control/combo.schema.json +23 -0
- package/skill/schemas/control/embed.schema.json +30 -0
- package/skill/schemas/control/image-box.schema.json +49 -0
- package/skill/schemas/control/input-date.schema.json +27 -0
- package/skill/schemas/control/input-file.schema.json +139 -0
- package/skill/schemas/control/input-mask.schema.json +45 -0
- package/skill/schemas/control/input-number.schema.json +24 -0
- package/skill/schemas/control/input-text.schema.json +24 -0
- package/skill/schemas/control/label.schema.json +113 -0
- package/skill/schemas/control/multi-input-box.schema.json +19 -0
- package/skill/schemas/control/other.schema.json +24 -0
- package/skill/schemas/control/radio-box.schema.json +87 -0
- package/skill/schemas/control/search.schema.json +23 -0
- package/skill/schemas/control/tab.schema.json +112 -0
- package/skill/schemas/control/tree.schema.json +83 -0
- package/skill/schemas/control.schema.json +30 -0
- package/skill/schemas/data-objects.schema.json +161 -0
- package/skill/schemas/data-sources.schema.json +184 -0
- package/skill/schemas/design-system/design.schema.json +496 -0
- package/skill/schemas/events.schema.json +272 -0
- package/skill/schemas/group.schema.json +133 -0
- package/skill/schemas/index.json +362 -0
- package/skill/schemas/naming-objects.schema.json +133 -0
- package/skill/schemas/node.schema.json +24 -0
- package/skill/schemas/patterns/atom/badge.schema.json +44 -0
- package/skill/schemas/patterns/atom/button.schema.json +70 -0
- package/skill/schemas/patterns/atom/checkbox.schema.json +39 -0
- package/skill/schemas/patterns/atom/segmented-radio.schema.json +49 -0
- package/skill/schemas/patterns/atom/switch.schema.json +27 -0
- package/skill/schemas/patterns/molecule/checklist.schema.json +63 -0
- package/skill/schemas/patterns/molecule/input-action.schema.json +251 -0
- package/skill/schemas/patterns/molecule/input-button.schema.json +141 -0
- package/skill/schemas/patterns/molecule/input-pair.schema.json +210 -0
- package/skill/schemas/scenario.schema.json +161 -0
- package/skill/schemas/service/CustomSystem.schema.json +41 -0
- package/skill/schemas/service/Firestore.schema.json +28 -0
- package/skill/schemas/service/FlexAutoQuery.schema.json +35 -0
- package/skill/schemas/service/FlexSQL.schema.json +33 -0
- package/skill/schemas/service/Flextudio API.schema.json +115 -0
- package/skill/schemas/service/Flextudio.schema.json +26 -0
- package/skill/schemas/service/GoogleSheet.schema.json +31 -0
- package/skill/schemas/service/_base.schema.json +31 -0
- package/skill/schemas/service/ksystem.schema.json +36 -0
- package/skill/schemas/service-binding.schema.json +51 -0
- package/skill/schemas/step.schema.json +258 -0
- package/skill/schemas/style-objects.schema.json +155 -0
- package/skill/skill-guides/README.md +50 -0
- package/skill/skill-guides/control-options.md +126 -0
- package/skill/skill-guides/events.md +61 -0
- package/skill/skill-guides/failure-discipline.md +95 -0
- package/skill/skill-guides/index.json +40 -0
- package/skill/skill-guides/prompt-interview.md +92 -0
- package/skill/skill-guides/scripts.md +169 -0
- package/skill/skill-guides/step-navigation.md +98 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// kinds/updateActive.mjs — 가드 2단 + 직접 대입 N + 옵션 reload (scripts.md §A)
|
|
2
|
+
|
|
3
|
+
import {
|
|
4
|
+
CATEGORY_NAME_RE,
|
|
5
|
+
FID_RE,
|
|
6
|
+
jsString,
|
|
7
|
+
jsValue,
|
|
8
|
+
validateKey,
|
|
9
|
+
} from "./_base.mjs";
|
|
10
|
+
|
|
11
|
+
export const meta = Object.freeze({
|
|
12
|
+
name: "updateActive",
|
|
13
|
+
allowedScopes: null,
|
|
14
|
+
summary: "활성 섹터의 N개 필드 일괄 갱신 — 가드 2단 + 직접 대입 + 옵션 reload",
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export default function expand(props, scopePath) {
|
|
18
|
+
const errors = [];
|
|
19
|
+
const { cat, set, reload } = props;
|
|
20
|
+
if (!CATEGORY_NAME_RE.test(cat || "")) {
|
|
21
|
+
errors.push({
|
|
22
|
+
kind: "intent",
|
|
23
|
+
phase: "updateActive-cat-format",
|
|
24
|
+
path: `${scopePath}.cat`,
|
|
25
|
+
message: `intent.script(updateActive).cat 형식 위반 — 'Ctg' 접두 + PascalCase.`,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
if (!set || typeof set !== "object" || Array.isArray(set)) {
|
|
29
|
+
errors.push({
|
|
30
|
+
kind: "intent",
|
|
31
|
+
phase: "updateActive-set-shape",
|
|
32
|
+
path: `${scopePath}.set`,
|
|
33
|
+
message: `intent.script(updateActive).set 은 { key: value, ... } 객체 필수.`,
|
|
34
|
+
});
|
|
35
|
+
} else if (Object.keys(set).length === 0) {
|
|
36
|
+
errors.push({
|
|
37
|
+
kind: "intent",
|
|
38
|
+
phase: "updateActive-set-empty",
|
|
39
|
+
path: `${scopePath}.set`,
|
|
40
|
+
message: `intent.script(updateActive).set 은 1개 이상의 키 필수.`,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (reload != null && !FID_RE.test(reload)) {
|
|
44
|
+
errors.push({
|
|
45
|
+
kind: "intent",
|
|
46
|
+
phase: "updateActive-reload-format",
|
|
47
|
+
path: `${scopePath}.reload`,
|
|
48
|
+
message: `intent.script(updateActive).reload 는 'f_N' 형태 (옵션).`,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
if (errors.length > 0) return { script: "", errors };
|
|
52
|
+
|
|
53
|
+
// set 의 키 형식 / 예약어 검사 — _base 의 통일 헬퍼.
|
|
54
|
+
for (const k of Object.keys(set)) {
|
|
55
|
+
validateKey(k, {
|
|
56
|
+
path: `${scopePath}.set.${k}`,
|
|
57
|
+
errors,
|
|
58
|
+
kindLabel: "intent.script(updateActive).set",
|
|
59
|
+
kindPhasePrefix: "updateActive-set-key", // → updateActive-set-key-format / -reserved
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
if (errors.length > 0) return { script: "", errors };
|
|
63
|
+
|
|
64
|
+
const lines = [
|
|
65
|
+
`if (!_c.${cat}) return;`,
|
|
66
|
+
`const cur = _c.${cat}.activeSector;`,
|
|
67
|
+
`if (!cur) return;`,
|
|
68
|
+
];
|
|
69
|
+
for (const [k, v] of Object.entries(set)) {
|
|
70
|
+
lines.push(`cur.${k} = ${jsValue(v)};`);
|
|
71
|
+
}
|
|
72
|
+
if (reload) lines.push(`f.Content(${jsString(reload)}).reload();`);
|
|
73
|
+
return { script: lines.join("\n"), errors: [] };
|
|
74
|
+
}
|
|
@@ -0,0 +1,495 @@
|
|
|
1
|
+
// intent-system/materialize.mjs
|
|
2
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
3
|
+
// `intent` 키 expander — 런타임 영역 (컬렉션/섹터/카테고리/스크립트) 의
|
|
4
|
+
// short-form 진입점을 raw 메타/Script 본문으로 펼친다.
|
|
5
|
+
//
|
|
6
|
+
// 책임 분리:
|
|
7
|
+
// - 슬롯 walker (mock/script/categories) + scope 추론 + 슬롯 디스패치 → 본 파일
|
|
8
|
+
// - script kind 펼침 함수 → kinds/<kind>.mjs (registry 로 자동 로드)
|
|
9
|
+
// - 공통 헬퍼 (jsString / 예약어 / 패턴) → kinds/_base.mjs
|
|
10
|
+
// - mock / categories 슬롯 펼침 함수 → 본 파일 (단일 펼침이라 분리 안 함)
|
|
11
|
+
//
|
|
12
|
+
// 진실원본:
|
|
13
|
+
// - 슬롯 카탈로그: INTENT.md
|
|
14
|
+
// - schema: intent.schema.json
|
|
15
|
+
// - 예약어 enum: schema/v1/naming-objects.schema.json (kinds/_base.mjs 가 import)
|
|
16
|
+
//
|
|
17
|
+
// 위치 — design-system 과의 차이:
|
|
18
|
+
// - design-system 은 schema/v1/design-system/ 에서 컨트롤 노드 단위로 동작.
|
|
19
|
+
// - intent-system 은 runtime/v1/intent-system/ 에서 시나리오 전역 walker.
|
|
20
|
+
// 호스트가 Action / Step.Events / scenario root 등 여러 위치라 컨트롤
|
|
21
|
+
// walker (_base.materialize.mjs) 와 분리. validate entry 가 두 단계를
|
|
22
|
+
// 순차 호출.
|
|
23
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
24
|
+
|
|
25
|
+
import { readdirSync } from "node:fs";
|
|
26
|
+
import { dirname, join } from "node:path";
|
|
27
|
+
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
28
|
+
|
|
29
|
+
import {
|
|
30
|
+
CATEGORY_NAME_RE,
|
|
31
|
+
jsString,
|
|
32
|
+
validateKey,
|
|
33
|
+
} from "./kinds/_base.mjs";
|
|
34
|
+
|
|
35
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
36
|
+
const KINDS_DIR = join(__dirname, "kinds");
|
|
37
|
+
|
|
38
|
+
const INTENT_KEY = "intent";
|
|
39
|
+
|
|
40
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
41
|
+
// Scope 시스템
|
|
42
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* 스크립트 / 호스트 종류별 스코프 enum.
|
|
46
|
+
* INTENT.md "Scope 카탈로그" 표와 정렬.
|
|
47
|
+
*/
|
|
48
|
+
export const SCOPES = Object.freeze({
|
|
49
|
+
SCENARIO_ROOT: "scenario-root",
|
|
50
|
+
EVENT_SCRIPT_INIT: "event-script-init",
|
|
51
|
+
EVENT_SCRIPT: "event-script",
|
|
52
|
+
LOAD_SCRIPT: "load-script", // 트리 노드 아님 — 미래 확장 placeholder
|
|
53
|
+
FILTER_SCRIPT: "filter-script", // 미래 확장 placeholder
|
|
54
|
+
GROUP: "group",
|
|
55
|
+
CONTROL: "control",
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
/** initHandlers 미전달 시 기본 — 빈 Set (절대 변형 금지). */
|
|
59
|
+
const _NO_INIT_HANDLERS = new Set();
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* 노드 + path 로부터 호스트 scope 를 추론.
|
|
63
|
+
*
|
|
64
|
+
* 1) path 기반: `.Events.<name>[N]` 매치 → event-script-init / event-script
|
|
65
|
+
* - 인라인 `$.Steps.<id>.Events.Init[N]` → event-script-init
|
|
66
|
+
* - 어떤 Step 의 Events.Init 이 문자열로 참조하는 named 핸들러
|
|
67
|
+
* (`$.Events.<name>[N]`, name ∈ initHandlers) → event-script-init
|
|
68
|
+
* (그래야 named 핸들러 안의 intent.mock 이 펼쳐진다 — intent.mock 은
|
|
69
|
+
* event-script-init 전용. 인라인 배열 Init 은 schema Init:string 와
|
|
70
|
+
* 충돌하므로 named 핸들러가 schema-valid 한 정상 배치.)
|
|
71
|
+
* - 그 외 Events 핸들러 → event-script
|
|
72
|
+
* 2) node 기반 fallback: `ContentsType:'Group'` → group, `ControlType:'X'` → control:X
|
|
73
|
+
* 3) path === '$' → scenario-root
|
|
74
|
+
* 4) 그 외 → unknown
|
|
75
|
+
*
|
|
76
|
+
* @param {Set<string>} initHandlers Step.Events.Init 이 참조하는 named 핸들러 이름 집합
|
|
77
|
+
* (applyIntentToScenario 가 수집해 전달; 미전달 시 인라인 Init 만 init scope).
|
|
78
|
+
*/
|
|
79
|
+
export function inferScope(node, path, initHandlers = _NO_INIT_HANDLERS) {
|
|
80
|
+
if (path === "$") return SCOPES.SCENARIO_ROOT;
|
|
81
|
+
|
|
82
|
+
const m = /\.Events\.([A-Za-z_][A-Za-z0-9_]*)\[\d+\](?![^[]*\.Events\.)/.exec(path);
|
|
83
|
+
if (m) {
|
|
84
|
+
const eventName = m[1];
|
|
85
|
+
const isScriptAction = node && typeof node === "object" && node.Action === "Script";
|
|
86
|
+
if (isScriptAction || node?.intent != null) {
|
|
87
|
+
const isInlineStepInit =
|
|
88
|
+
eventName === "Init" &&
|
|
89
|
+
/^\$\.Steps\.[A-Za-z_][A-Za-z0-9_]*\.Events\.Init\[\d+\]$/.test(path);
|
|
90
|
+
const isNamedInitHandler =
|
|
91
|
+
initHandlers.has(eventName) &&
|
|
92
|
+
/^\$\.Events\.[A-Za-z_][A-Za-z0-9_]*\[\d+\]$/.test(path);
|
|
93
|
+
return (isInlineStepInit || isNamedInitHandler)
|
|
94
|
+
? SCOPES.EVENT_SCRIPT_INIT
|
|
95
|
+
: SCOPES.EVENT_SCRIPT;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (node && typeof node === "object") {
|
|
100
|
+
if (node.ContentsType === "Group") return SCOPES.GROUP;
|
|
101
|
+
if (typeof node.ControlType === "string") return `control:${node.ControlType}`;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
return "unknown";
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
108
|
+
// kind registry — kinds/ 디렉토리 스캔으로 자동 등록.
|
|
109
|
+
//
|
|
110
|
+
// 부팅 시 한 번만 await — 이후 sync 디스패치. 새 kind 추가는 kinds/<name>.mjs
|
|
111
|
+
// 파일만 추가하면 자동 인식. 파일명 = kind 이름 (확장자 제외, `_` 접두는 무시).
|
|
112
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
113
|
+
|
|
114
|
+
const _SCRIPT_KIND_REGISTRY = new Map();
|
|
115
|
+
|
|
116
|
+
async function loadScriptKindRegistry() {
|
|
117
|
+
const entries = readdirSync(KINDS_DIR);
|
|
118
|
+
for (const entry of entries) {
|
|
119
|
+
if (entry.startsWith("_")) continue; // _base.mjs 등 제외
|
|
120
|
+
if (!entry.endsWith(".mjs")) continue;
|
|
121
|
+
const name = entry.slice(0, -".mjs".length);
|
|
122
|
+
const mod = await import(pathToFileURL(join(KINDS_DIR, entry)).href);
|
|
123
|
+
if (typeof mod.default !== "function") {
|
|
124
|
+
throw new Error(`intent kind '${name}' (${entry}) 에 default export (expand fn) 없음.`);
|
|
125
|
+
}
|
|
126
|
+
_SCRIPT_KIND_REGISTRY.set(name, {
|
|
127
|
+
meta: mod.meta ?? { name, allowedScopes: null },
|
|
128
|
+
expand: mod.default,
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
await loadScriptKindRegistry();
|
|
134
|
+
|
|
135
|
+
/** kind 이름 list — introspection / 에러 메시지 / INTENT.md 검증용. */
|
|
136
|
+
export function listScriptKinds() {
|
|
137
|
+
return [..._SCRIPT_KIND_REGISTRY.keys()];
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
141
|
+
// 슬롯 카탈로그 — 각 슬롯의 활성 Phase + 허용 scope + 펼침 함수
|
|
142
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
143
|
+
|
|
144
|
+
const KNOWN_SLOTS = Object.freeze({
|
|
145
|
+
mock: {
|
|
146
|
+
activePhase: 2,
|
|
147
|
+
placeholderPhase: 2,
|
|
148
|
+
allowedScopes: [SCOPES.EVENT_SCRIPT_INIT],
|
|
149
|
+
expand: expandMock,
|
|
150
|
+
},
|
|
151
|
+
script: {
|
|
152
|
+
activePhase: 3,
|
|
153
|
+
placeholderPhase: 3,
|
|
154
|
+
allowedScopes: [SCOPES.EVENT_SCRIPT, SCOPES.EVENT_SCRIPT_INIT],
|
|
155
|
+
expand: expandScript,
|
|
156
|
+
},
|
|
157
|
+
// categories 슬롯은 Phase 4 에서 도입 후 폐기. Panel.* + Collections 모두
|
|
158
|
+
// 스튜디오가 자동 재생성하므로 AI 가 카테고리 정의를 박을 필요 없음.
|
|
159
|
+
// 카테고리 사용 사실은 intent.mock 의 카테고리명 + DataConnection.CategoryName
|
|
160
|
+
// 으로 cross-check 가 추출.
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
164
|
+
// mock 슬롯 펼침
|
|
165
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* 입력: { <Cat>: [ {<field>: <value>, ...}, ... ], ... }
|
|
169
|
+
* 출력: { script: "f.Collection.addSector({...}, '<Cat>')\n...", errors }
|
|
170
|
+
*
|
|
171
|
+
* 카테고리당 한 줄씩, 같은 카테고리 안 섹터는 `\n` 으로 연결. 호스트 Action 의
|
|
172
|
+
* Script 와 prepend 머지 (applyIntent 가 처리).
|
|
173
|
+
*/
|
|
174
|
+
function expandMock(props, scopePath) {
|
|
175
|
+
const errors = [];
|
|
176
|
+
if (!props || typeof props !== "object" || Array.isArray(props)) {
|
|
177
|
+
errors.push({
|
|
178
|
+
kind: "intent",
|
|
179
|
+
phase: "mock-shape",
|
|
180
|
+
path: scopePath,
|
|
181
|
+
message: `intent.mock 값은 객체여야 함 ({ '<Cat>': [{...}, ...] }). 받은 타입: ${Array.isArray(props) ? "array" : props === null ? "null" : typeof props}`,
|
|
182
|
+
});
|
|
183
|
+
return { script: "", errors };
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
const lines = [];
|
|
187
|
+
for (const [catName, sectors] of Object.entries(props)) {
|
|
188
|
+
const catPath = `${scopePath}.${catName}`;
|
|
189
|
+
if (!CATEGORY_NAME_RE.test(catName)) {
|
|
190
|
+
errors.push({
|
|
191
|
+
kind: "intent",
|
|
192
|
+
phase: "mock-category-name",
|
|
193
|
+
path: catPath,
|
|
194
|
+
catName,
|
|
195
|
+
message: `카테고리명 '${catName}' 형식 위반 — 'Ctg' 접두 + PascalCase (예: CtgEmployee, CtgItemList).`,
|
|
196
|
+
hint: `runtime/v1/collection/naming.md §2 (cross-check [category-name] 과 정렬).`,
|
|
197
|
+
});
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (!Array.isArray(sectors)) {
|
|
201
|
+
errors.push({
|
|
202
|
+
kind: "intent",
|
|
203
|
+
phase: "mock-sectors-shape",
|
|
204
|
+
path: catPath,
|
|
205
|
+
catName,
|
|
206
|
+
message: `intent.mock['${catName}'] 값은 섹터 객체 배열이어야 함. 받은 타입: ${typeof sectors}`,
|
|
207
|
+
});
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
if (sectors.length === 0) continue;
|
|
211
|
+
|
|
212
|
+
for (let i = 0; i < sectors.length; i++) {
|
|
213
|
+
const sector = sectors[i];
|
|
214
|
+
const sectorPath = `${catPath}[${i}]`;
|
|
215
|
+
if (!sector || typeof sector !== "object" || Array.isArray(sector)) {
|
|
216
|
+
errors.push({
|
|
217
|
+
kind: "intent",
|
|
218
|
+
phase: "mock-sector-shape",
|
|
219
|
+
path: sectorPath,
|
|
220
|
+
catName,
|
|
221
|
+
index: i,
|
|
222
|
+
message: `섹터 객체는 { key: value, ... } 형태여야 함.`,
|
|
223
|
+
});
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
// 키 형식 + 예약어 검사 (case-insensitive) — _base 의 통일 헬퍼.
|
|
227
|
+
let keyError = false;
|
|
228
|
+
for (const k of Object.keys(sector)) {
|
|
229
|
+
const beforeLen = errors.length;
|
|
230
|
+
validateKey(k, {
|
|
231
|
+
path: `${sectorPath}.${k}`,
|
|
232
|
+
errors,
|
|
233
|
+
kindLabel: "mock 섹터",
|
|
234
|
+
kindPhasePrefix: "mock-sector-key",
|
|
235
|
+
});
|
|
236
|
+
if (errors.length !== beforeLen) keyError = true;
|
|
237
|
+
}
|
|
238
|
+
if (keyError) continue;
|
|
239
|
+
|
|
240
|
+
lines.push(`f.Collection.addSector(${serializeSectorObject(sector)}, '${catName}')`);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
return { script: lines.join("\n"), errors };
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
function serializeSectorObject(sector) {
|
|
248
|
+
const parts = [];
|
|
249
|
+
for (const [k, v] of Object.entries(sector)) {
|
|
250
|
+
parts.push(`${k}: ${JSON.stringify(v)}`);
|
|
251
|
+
}
|
|
252
|
+
return `{${parts.join(", ")}}`;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
256
|
+
// script 슬롯 — kind registry 디스패치
|
|
257
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
258
|
+
|
|
259
|
+
function expandScript(props, scopePath) {
|
|
260
|
+
if (!props || typeof props !== "object" || Array.isArray(props)) {
|
|
261
|
+
return {
|
|
262
|
+
script: "",
|
|
263
|
+
errors: [{
|
|
264
|
+
kind: "intent",
|
|
265
|
+
phase: "script-shape",
|
|
266
|
+
path: scopePath,
|
|
267
|
+
message: `intent.script 값은 객체여야 함 ({ "kind": "<name>", ... }). 받은 타입: ${Array.isArray(props) ? "array" : props === null ? "null" : typeof props}`,
|
|
268
|
+
}],
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
const kind = props.kind;
|
|
272
|
+
if (typeof kind !== "string" || kind === "") {
|
|
273
|
+
return {
|
|
274
|
+
script: "",
|
|
275
|
+
errors: [{
|
|
276
|
+
kind: "intent",
|
|
277
|
+
phase: "script-kind-missing",
|
|
278
|
+
path: scopePath,
|
|
279
|
+
message: `intent.script.kind 필드 누락 또는 빈 문자열. 활성 kind: ${listScriptKinds().join(" / ")}.`,
|
|
280
|
+
}],
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
const entry = _SCRIPT_KIND_REGISTRY.get(kind);
|
|
284
|
+
if (!entry) {
|
|
285
|
+
return {
|
|
286
|
+
script: "",
|
|
287
|
+
errors: [{
|
|
288
|
+
kind: "intent",
|
|
289
|
+
phase: "unknown-kind",
|
|
290
|
+
path: `${scopePath}.kind`,
|
|
291
|
+
kindName: kind,
|
|
292
|
+
message: `intent.script.kind '${kind}' 미정의 — 활성 kind: ${listScriptKinds().join(" / ")}. 새 kind 는 runtime/v1/intent-system/kinds/<name>.mjs 추가로 등록.`,
|
|
293
|
+
}],
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
return entry.expand(props, scopePath);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
300
|
+
// Public — applyIntent (단일 노드)
|
|
301
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
302
|
+
|
|
303
|
+
export function applyIntent(node, path = "$", initHandlers = _NO_INIT_HANDLERS) {
|
|
304
|
+
if (node == null || typeof node !== "object" || Array.isArray(node)) {
|
|
305
|
+
return { node, errors: [], applied: 0 };
|
|
306
|
+
}
|
|
307
|
+
if (!(INTENT_KEY in node)) {
|
|
308
|
+
return { node, errors: [], applied: 0 };
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
const intent = node[INTENT_KEY];
|
|
312
|
+
const intentPath = `${path}.${INTENT_KEY}`;
|
|
313
|
+
const errors = [];
|
|
314
|
+
const scope = inferScope(node, path, initHandlers);
|
|
315
|
+
|
|
316
|
+
if (intent == null || typeof intent !== "object" || Array.isArray(intent)) {
|
|
317
|
+
errors.push({
|
|
318
|
+
kind: "intent",
|
|
319
|
+
phase: "shape",
|
|
320
|
+
path: intentPath,
|
|
321
|
+
scope,
|
|
322
|
+
message: `intent 값은 객체여야 함 (받은 타입: ${Array.isArray(intent) ? "array" : intent === null ? "null" : typeof intent}).`,
|
|
323
|
+
hint: `형태: "intent": { "<slot>": ... } — 슬롯은 ${Object.keys(KNOWN_SLOTS).join(" / ")}.`,
|
|
324
|
+
});
|
|
325
|
+
const { [INTENT_KEY]: _drop, ...rest } = node;
|
|
326
|
+
return { node: rest, errors, applied: 0 };
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
let applied = 0;
|
|
330
|
+
const merged = { ...node };
|
|
331
|
+
delete merged[INTENT_KEY];
|
|
332
|
+
|
|
333
|
+
for (const slot of Object.keys(intent)) {
|
|
334
|
+
const meta = KNOWN_SLOTS[slot];
|
|
335
|
+
const slotPath = `${intentPath}.${slot}`;
|
|
336
|
+
|
|
337
|
+
if (!meta) {
|
|
338
|
+
errors.push({
|
|
339
|
+
kind: "intent",
|
|
340
|
+
phase: "unknown-slot",
|
|
341
|
+
path: slotPath,
|
|
342
|
+
slot,
|
|
343
|
+
scope,
|
|
344
|
+
message: `intent 슬롯 '${slot}' 미정의 — 허용: ${Object.keys(KNOWN_SLOTS).join(" / ")}.`,
|
|
345
|
+
hint: `runtime/v1/intent-system/INTENT.md '슬롯 ⨯ 호스트 매트릭스' 표 참고.`,
|
|
346
|
+
});
|
|
347
|
+
continue;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
if (!meta.allowedScopes.includes(scope)) {
|
|
351
|
+
errors.push({
|
|
352
|
+
kind: "intent",
|
|
353
|
+
phase: "wrong-scope",
|
|
354
|
+
path: slotPath,
|
|
355
|
+
slot,
|
|
356
|
+
scope,
|
|
357
|
+
allowedScopes: [...meta.allowedScopes],
|
|
358
|
+
message: `intent.${slot} 슬롯은 scope '${scope}' 에서 사용 불가 — 허용 scope: ${meta.allowedScopes.join(", ")}.`,
|
|
359
|
+
hint: `INTENT.md 'Scope 카탈로그' 참고.`,
|
|
360
|
+
});
|
|
361
|
+
continue;
|
|
362
|
+
}
|
|
363
|
+
|
|
364
|
+
if (meta.activePhase == null) {
|
|
365
|
+
errors.push({
|
|
366
|
+
kind: "intent",
|
|
367
|
+
phase: "slot-not-implemented",
|
|
368
|
+
path: slotPath,
|
|
369
|
+
slot,
|
|
370
|
+
scope,
|
|
371
|
+
message: `intent.${slot} 슬롯은 Phase ${meta.placeholderPhase} 에서 활성화 예정 — 현재는 펼침 로직 미구현.`,
|
|
372
|
+
});
|
|
373
|
+
continue;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
// 슬롯별 펼침 디스패치.
|
|
377
|
+
const r = meta.expand(intent[slot], slotPath);
|
|
378
|
+
if (r.errors && r.errors.length > 0) {
|
|
379
|
+
for (const e of r.errors) errors.push({ scope, ...e });
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
// mock / script — script (Script 본문) prepend 머지.
|
|
383
|
+
// (categories 슬롯 폐기 후 활성 머지 경로는 이것 하나.)
|
|
384
|
+
if (typeof r.script === "string" && r.script !== "") {
|
|
385
|
+
const existing = typeof merged.Script === "string" ? merged.Script : "";
|
|
386
|
+
merged.Script = existing ? `${r.script}\n${existing}` : r.script;
|
|
387
|
+
applied += 1;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
return { node: merged, errors, applied };
|
|
392
|
+
}
|
|
393
|
+
|
|
394
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
395
|
+
// Public — 트리 walker
|
|
396
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
397
|
+
|
|
398
|
+
export function applyIntentToScenario(scenario) {
|
|
399
|
+
const errors = [];
|
|
400
|
+
const counters = {
|
|
401
|
+
intentsSeen: 0,
|
|
402
|
+
slotsApplied: 0,
|
|
403
|
+
unknownSlots: 0,
|
|
404
|
+
wrongScopes: 0,
|
|
405
|
+
mockSectorsExpanded: 0,
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
if (scenario == null || typeof scenario !== "object" || Array.isArray(scenario)) {
|
|
409
|
+
return {
|
|
410
|
+
scenario,
|
|
411
|
+
report: { ...counters, note: "scenario 는 object 가 아님" },
|
|
412
|
+
errors: [
|
|
413
|
+
{ kind: "intent", phase: "shape", path: "$", message: "scenario 는 object 여야 함." },
|
|
414
|
+
],
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
// Step.Events.Init 이 문자열로 참조하는 named 핸들러 이름 수집 — 그 핸들러
|
|
419
|
+
// (scenario.Events.<name>) 안의 intent.mock 을 event-script-init 로 인정하기
|
|
420
|
+
// 위함 (inferScope 로 전달). 인라인 배열 Init 은 schema Init:string 와 충돌하므로
|
|
421
|
+
// named 핸들러가 intent.mock 의 schema-valid 한 정상 배치.
|
|
422
|
+
const initHandlers = new Set();
|
|
423
|
+
if (scenario.Steps && typeof scenario.Steps === "object" && !Array.isArray(scenario.Steps)) {
|
|
424
|
+
for (const step of Object.values(scenario.Steps)) {
|
|
425
|
+
const init = step?.Events?.Init;
|
|
426
|
+
if (typeof init === "string" && init) initHandlers.add(init);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
function walk(node, path) {
|
|
431
|
+
if (node == null) return node;
|
|
432
|
+
if (Array.isArray(node)) {
|
|
433
|
+
return node.map((item, i) => walk(item, `${path}[${i}]`));
|
|
434
|
+
}
|
|
435
|
+
if (typeof node !== "object") return node;
|
|
436
|
+
|
|
437
|
+
let current = node;
|
|
438
|
+
if (INTENT_KEY in current) {
|
|
439
|
+
counters.intentsSeen += 1;
|
|
440
|
+
const r = applyIntent(current, path, initHandlers);
|
|
441
|
+
for (const e of r.errors) {
|
|
442
|
+
if (e.phase === "unknown-slot") counters.unknownSlots += 1;
|
|
443
|
+
if (e.phase === "wrong-scope") counters.wrongScopes += 1;
|
|
444
|
+
errors.push(e);
|
|
445
|
+
}
|
|
446
|
+
counters.slotsApplied += r.applied;
|
|
447
|
+
if (current[INTENT_KEY].mock && typeof current[INTENT_KEY].mock === "object") {
|
|
448
|
+
for (const sectors of Object.values(current[INTENT_KEY].mock)) {
|
|
449
|
+
if (Array.isArray(sectors)) counters.mockSectorsExpanded += sectors.length;
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
current = r.node;
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
const out = {};
|
|
456
|
+
for (const [k, v] of Object.entries(current)) {
|
|
457
|
+
out[k] = walk(v, `${path}.${k}`);
|
|
458
|
+
}
|
|
459
|
+
return out;
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
const out = walk(scenario, "$");
|
|
463
|
+
return {
|
|
464
|
+
scenario: out,
|
|
465
|
+
report: {
|
|
466
|
+
...counters,
|
|
467
|
+
activeSlots: Object.entries(KNOWN_SLOTS).filter(([, m]) => m.activePhase != null).map(([n]) => n),
|
|
468
|
+
activeKinds: listScriptKinds(),
|
|
469
|
+
},
|
|
470
|
+
errors,
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
export function applyIntentToFragment(node) {
|
|
475
|
+
const r = applyIntentToScenario(node);
|
|
476
|
+
return { fragment: r.scenario, report: r.report, errors: r.errors };
|
|
477
|
+
}
|
|
478
|
+
|
|
479
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
480
|
+
// Introspection
|
|
481
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
482
|
+
|
|
483
|
+
export const intentKnownSlots = Object.freeze(Object.keys(KNOWN_SLOTS));
|
|
484
|
+
export const intentSlotMeta = Object.freeze(
|
|
485
|
+
Object.fromEntries(
|
|
486
|
+
Object.entries(KNOWN_SLOTS).map(([n, m]) => [
|
|
487
|
+
n,
|
|
488
|
+
Object.freeze({
|
|
489
|
+
activePhase: m.activePhase,
|
|
490
|
+
placeholderPhase: m.placeholderPhase,
|
|
491
|
+
allowedScopes: Object.freeze([...m.allowedScopes]),
|
|
492
|
+
}),
|
|
493
|
+
]),
|
|
494
|
+
),
|
|
495
|
+
);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Runtime · Script (`f.*` / `Current.*` / `f.Content`) 진입점
|
|
2
|
+
|
|
3
|
+
스크립트 영역(이벤트 스크립트, Init/After Script, Test-API/SQL Script 등)에서 호출 가능한 글로벌 객체들의 정의.
|
|
4
|
+
시나리오 생성(AI 메타 자동 생성) 단계와 사용자 스크립트 단계에서 **사용 가능 범위가 다르므로** 본 폴더에서 그 경계를 명확히 한다.
|
|
5
|
+
|
|
6
|
+
## 0. 핵심 규칙 — 시나리오 생성 시 허용 범위 (요약)
|
|
7
|
+
|
|
8
|
+
> 시나리오 생성 결과물의 스크립트 본문에서 사용 가능한 진입점은 **컬렉션 변형 + 리로드 두 영역뿐**.
|
|
9
|
+
> 그 외의 `f.*` / `_c.*` / `Current.*` / `f.Content().*` 멤버는 출력 금지 — 검증에서 차단.
|
|
10
|
+
|
|
11
|
+
| 영역 | 허용 멤버 |
|
|
12
|
+
|---|---|
|
|
13
|
+
| 컬렉션 변형 | `f.Collection.addSector(obj, '카테고리')` |
|
|
14
|
+
| 컬렉션 직접 접근 | `_c.카테고리.*`, `sector.*` (set/delete/setStatus/select 등) |
|
|
15
|
+
| 리로드 (스텝) | `Current.step.reload()`, `Current.step.reloadWithAnimation()` |
|
|
16
|
+
| 리로드 (그룹) | `f.Content(fid).reload()`, `f.Content(fid).reloadWithAnimation()` |
|
|
17
|
+
|
|
18
|
+
> **섹터 접근은 스크립트 위치마다 다른 진입점** — 이벤트 Script 는 `_c.<카테고리>.activeSector` / `_c.<카테고리>[n]`, LoadScript(`{% %}`) 는 `Load.sector.<field>`, Filter Custom 은 bare `sector.X`. `_c.Sector` 는 어디서도 금지 (가짜 핸들). 매트릭스는 [scenario-gen-rules.md §2-1.1](./scenario-gen-rules.md) 와 [../collection/_c.md §6.5](../collection/_c.md).
|
|
19
|
+
|
|
20
|
+
자세한 정책 / 검증 설계는 [scenario-gen-rules.md](./scenario-gen-rules.md).
|
|
21
|
+
|
|
22
|
+
## 1. 폴더 구성
|
|
23
|
+
|
|
24
|
+
| 파일 | 내용 |
|
|
25
|
+
|---|---|
|
|
26
|
+
| [f_collection.md](./f_collection.md) | `f.Collection.*` 전체 시그니처와 내부 동작. **생성 시 허용된 것은 `addSector` 뿐** |
|
|
27
|
+
| [current_step.md](./current_step.md) | `Current.step` 의 모든 멤버. **생성 시 허용된 것은 `reload` / `reloadWithAnimation` 뿐** |
|
|
28
|
+
| [f_content.md](./f_content.md) | `f.Content(fid)` 의 모든 멤버. **생성 시 허용된 것은 `reload` / `reloadWithAnimation` 뿐** |
|
|
29
|
+
| [scenario-gen-rules.md](./scenario-gen-rules.md) | 시나리오 생성 단계 작성 규칙 — 결정 트리, 금지 패턴, 검증 설계 |
|
|
30
|
+
|
|
31
|
+
> 본 폴더는 `f.*` / `Current.*` / `f.Content` 진입점만 다룬다. `_c.*` 직접 접근 패턴은 [../collection/](../collection/) 의 `sector.md` / `category.md` / `_c.md` 참조.
|
|
32
|
+
|
|
33
|
+
## 2. 관련 문서
|
|
34
|
+
|
|
35
|
+
- [../collection/README.md](../collection/README.md) — Collection/Category/Sector 모델 전반
|
|
36
|
+
- [../collection/sector.md §4-0](../collection/sector.md) — 직접 대입 vs `set()` vs `setValue()` 비교
|
|
37
|
+
- [../collection/category.md](../collection/category.md) — 카테고리 메서드(`add`/`remove`/`addSector`/`activate` 등)
|