@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,126 @@
|
|
|
1
|
+
# Control Options — 컨트롤별 옵션 매트릭스
|
|
2
|
+
|
|
3
|
+
> 어떤 컨트롤에 어떤 옵션 키가 허용되는가.
|
|
4
|
+
>
|
|
5
|
+
> 진실원본: [schema/v1/control/*.schema.json](../schema/v1/control/), [_base.schema.json](../schema/v1/control/_base.schema.json), [design.schema.json](../schema/v1/design-system/design.schema.json).
|
|
6
|
+
|
|
7
|
+
## ★ 데이터 바인딩 3종 세트 (생성 전 필수 — 가장 자주 빠뜨림)
|
|
8
|
+
|
|
9
|
+
> 입력/선택 컨트롤이 **값을 저장하거나(`Ckeys`/`SaveValueKey`) 외부 선택지를 쓰면(`DataSourceName`)**, 아래 셋이 **항상 함께** 있어야 한다. 하나라도 빠지면 cross-check 가 막고, 값이 데이터 의존이라 **자동 보정되지 않는다** — 생성 시 직접 채운다. (자가 검증에서 가장 흔히 깨지는 지점. 단순 프로토타입이면 [데이터연결 없이 화면만](#데이터연결-없이-화면만-프로토타입) 참조.)
|
|
10
|
+
|
|
11
|
+
1. **조상 Group 의 데이터연결** — 컨트롤을 감싸는 Group(또는 상위 Group) 에 `"UseDataConnection": true` + `DataConnection` 객체.
|
|
12
|
+
- 없으면 → `[bind]` "uses SaveValueKey but no ancestor Group has UseDataConnection:true + DataConnection".
|
|
13
|
+
2. **`scenario.DataSources` 에 sample 정의** — `DataSourceName` 으로 참조한 **그 이름의 키를 `scenario.DataSources` 에 `Fixed` 또는 `Grid` 로 반드시 생성**. 참조만 하고 정의를 빠뜨리지 않는다.
|
|
14
|
+
- 미정의 참조 → `[dsref]` "DataSourceName='X' is not defined in scenario.DataSources".
|
|
15
|
+
- `SaveValueKey` 를 쓰는데 `scenario.DataSources` 가 통째로 비어있음 → `[proto]` "scenario.DataSources is empty".
|
|
16
|
+
- 운영 타입(`Collection`/`Service`/`API`) 금지 — AI 샘플은 `Fixed`/`Grid` 만 ([data-sources.md](../schema/v1/data-sources.md)).
|
|
17
|
+
3. **컨트롤 측 키** — 저장/표시/매핑 키를 컨트롤에 채운다.
|
|
18
|
+
- 입력(InputText/Number/…): `Ckeys` / `SaveValueKey`.
|
|
19
|
+
- 선택(Combo/Search/RadioBox/Tree): `DataSourceName` + 자식의 `DataSourceName` + `CollectionMapper` (UseDataSource:true 면 필수).
|
|
20
|
+
- 날짜(Calendar): `SelectType` 별 페어객체(`SingleDate` / `StartDate`+`EndDate`) 의 **`Ckeys` 를 1개 이상** 채움 — 데이터연결 컨텍스트에서 빈 배열 `[]` 은 `[date]` "must NOT have fewer than 1 items". (비연결이면 `[]` 허용, 단 페어객체 자체는 항상 둘 것.)
|
|
21
|
+
|
|
22
|
+
**증상 → 빠뜨린 것 빠른 표**
|
|
23
|
+
|
|
24
|
+
| validate cross-check | 빠뜨린 것 | 고치기 |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| `[bind]` | 조상 Group `UseDataConnection`/`DataConnection` | Group 에 데이터연결 부여 (1번) |
|
|
27
|
+
| `[dsref]` `is not defined` | `DataSources` 에 그 이름 정의 | 동일 이름 `Fixed`/`Grid` 추가 (2번) |
|
|
28
|
+
| `[proto]` `DataSources is empty` | `DataSources` 자체 | 최소 1개 `Fixed`/`Grid` 추가 (2번) |
|
|
29
|
+
| `[date]` `fewer than 1 items` | 페어객체 `.Ckeys` 비어있음 | `Ckeys: ["..."]` 채움 (3번) |
|
|
30
|
+
| `must have required property 'DataSourceName'` | 자식 ComboList/List 의 `DataSourceName` | 자식에 추가 ([combo](../schema/v1/control/combo.md)/[search](../schema/v1/control/search.md)) |
|
|
31
|
+
|
|
32
|
+
> ★ **빈 껍데기 컨트롤 금지 (조회 화면).** 조회 화면은 검색조건 Search/Combo 를 여럿 둔다. 각 컨트롤을 `ControlType` 만 있는 골격으로 두면 위 누락들이 **컨트롤 수만큼 곱으로 폭증**한다(Search N개 → ≈4N 에러). **하나를 끝까지 완결한 뒤 복제**하라. materialize 자동 보정은 *본체에 일부 정보가 있을 때만* 작동하고, 정보가 통째로 빈 컨트롤은 손대지 못한다.
|
|
33
|
+
|
|
34
|
+
> **materialize 가 자동 정규화하는 항목 (직접 신경 안 써도 흡수됨)** — Calendar `SelectType` 어휘(`One`→`SingleDate`), `ScenarioTitle`→`""`, BottomButton 잉여 토글(`UseEvents`/`UseClickEvent`)·`MoveTo='Prev'`→빈 `Prev`·`Next` 슬롯 객체→`""`·`design` expand, Combo 본체→자식 `DataSourceName` 동기화(★ `Ckeys` 는 자식 ComboList/List 에만 두고 본체엔 두지 않음 — `[combo-body-ckeys]`), `DataConnection` shape, `AllowExtensions` 문자열, boolean 문자열. **단 위는 "정보가 있을 때 형태만" 교정** — 없는 데이터(`DataSources` 정의, `CollectionMapper` 매핑값, Search 자식 `DataSourceName`)는 직접 채워야 한다.
|
|
35
|
+
|
|
36
|
+
### 데이터연결 없이 화면만 (프로토타입)
|
|
37
|
+
|
|
38
|
+
저장 의도가 없는 순수 표시/레이아웃이면 데이터연결을 만들지 않는다 — 단 **그 Group 에 `"UseDataConnection": false` 를 명시**하고, 컨트롤에서 `SaveValueKey`/`Ckeys`/`DataSourceName` 을 두지 않는다. (Calendar 등 페어객체는 두되 `Ckeys: []`.)
|
|
39
|
+
|
|
40
|
+
## 모든 컨트롤이 공유 — `controlBase`
|
|
41
|
+
|
|
42
|
+
`Id` / `ControlType` / `Caption` / `Width` / `Height` / `Padding` / `Margin` / `Ckeys` / `Events` / `DataConnection` / `Maxlength` / `Placeholder` / `DefaultValue` / `design`
|
|
43
|
+
|
|
44
|
+
## Input 계열이 추가로 공유 — `inputBase`
|
|
45
|
+
|
|
46
|
+
`InputText` / `InputNumber` / `InputMask` / `InputDate` / `MultiInputBox` / `Combo` / `Search` / `RadioBox` / `CheckBox`:
|
|
47
|
+
|
|
48
|
+
`CtrlDisplayCkey` / `DisplayValue` / `DisplayType` / `UseValidate` / `UseCondition` / `UseEvents`
|
|
49
|
+
|
|
50
|
+
## 컨트롤별 고유 옵션
|
|
51
|
+
|
|
52
|
+
### 입력 — text/number/mask/date
|
|
53
|
+
|
|
54
|
+
| 컨트롤 | 고유 옵션 |
|
|
55
|
+
|---|---|
|
|
56
|
+
| `InputText` | `InputType` |
|
|
57
|
+
| `InputNumber` | `InputType` |
|
|
58
|
+
| `InputMask` | `InputType`, `MaskType`, `UseNumberOnly`, `UseFixedDecimalPlaces`, `DecimalPlaces`, `RoundingMode` |
|
|
59
|
+
| `InputDate` | `DateFormat`, `Dialog` |
|
|
60
|
+
| `MultiInputBox` | — |
|
|
61
|
+
|
|
62
|
+
### 선택 — combo/search/radio/check
|
|
63
|
+
|
|
64
|
+
| 컨트롤 | 고유 옵션 |
|
|
65
|
+
|---|---|
|
|
66
|
+
| `Combo` | `DataSourceName`, `Dialog` |
|
|
67
|
+
| `Search` | `DisplayValue`, `Dialog` |
|
|
68
|
+
| `RadioBox` | `Items`, `DataSourceName`, `Direction`, `CategoryName`, `UseDataSource`, `UseCategory`, `UseAlignRight`, `UseDefaultValue`, `UseItemDesign`, `ItemBgStyle`, `ItemDesign`, `SaveNameKey` / `SaveNameName` / `SaveValueKey`, `UniqueKey`, `CollectionMapper`, `AfterScript` |
|
|
69
|
+
| `CheckBox` | `CheckBoxType`, `Items`, `SaveValueKey`, `UseAlignRight`, `UseTriming`, `ItemBgStyle` |
|
|
70
|
+
|
|
71
|
+
### 표시 — label/image/button
|
|
72
|
+
|
|
73
|
+
| 컨트롤 | 고유 옵션 |
|
|
74
|
+
|---|---|
|
|
75
|
+
| `Label` | `LabelCKey`, `LabelType`, `labeltext`, `ImageStyle`, `MoveStepOrder`, `MoveSteps`, `UseMove`, `UseClickEvent`, `UseFullShape`, `UseTriming`, `TooltipCKey`, `TooltipText`, `TooltipType` |
|
|
76
|
+
| `ImageBox` | `ImageBoxType`, `DefaultViewGroup`, `EditGroup`, `ViewGroup`, `UseDefaultValue`, `UseMultiData` |
|
|
77
|
+
| `Button` | `ButtonName`, `ButtonValue`, `ButtonValueCKey`, `ImageStyle`, `UseClickEvent` |
|
|
78
|
+
|
|
79
|
+
### 복합 — tab/tree/embed/calendar/calendar-navigator/input-file
|
|
80
|
+
|
|
81
|
+
| 컨트롤 | 고유 옵션 |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `Tab` | `TabHeader`, `TabHeaderItem`, `SelectTabHeader`, `SelectTabHeaderItem`, `ArrangeItems`, `ArrangeItemsStyle`, `Items`, `ItemName`, `ItemValue`, `LinkedStepId`, `Click` |
|
|
84
|
+
| `Tree` | `CategoryName`, `DataSourceName`, `CollectionMapper`, `MapperOrder`, `TreeType`, `NodeId`, `ParentId`, `Title`, `SubTitle`, `Icon`, `SubIcon`, `ThumbNail`, `DCLinkCkey`, `UseDCLink`, `UseExpandAll`, `UseMultiData`, `UseParentAutoSelect`, `UseSearchBar`, `UseSelectAllData` |
|
|
85
|
+
| `Embed` | `Embed` |
|
|
86
|
+
| `Calendar` | `CalendarType`, `SelectType`, `DayDsKey` |
|
|
87
|
+
| `CalendarNavigator` | `NavigatorType`, `NavigatorDateFormat`, `SingleDate`, `StartDate`, `EndDate`, `SelectDay`, `DayArea`, `DayDsKey`, `DaySetting`, `TypeDsKey`, `UseDayArea`, `UseDaySelector`, `UseDaySetting`, `UseTimeTable`, `UseDataConnection`, `OnChangeSwipe`, `ClickPrevNextBtn`, `CalendarNaviEventsOrder` |
|
|
88
|
+
| `InputFile` | `Title`, `Description`, `Limit`, `AllowExtensions`, `Directory`, `FileName`, `FolderRoute`, `FlexKey`, `Module`, `Const`, `Attributes`, `SharedTarget`, `InnerCKey`, `ckey`, `CategoryName`, `UseCategory`, `UseClickdownload` |
|
|
89
|
+
|
|
90
|
+
## 자주 헷갈리는 매핑
|
|
91
|
+
|
|
92
|
+
| 의도 | 정답 |
|
|
93
|
+
|---|---|
|
|
94
|
+
| 1000단위 콤마 (금액) | `InputMask` + `InputType:"money"` + `MaskType:"Money"` (★대소문자 정확히 — `money`/`time` 아님; InputType↔MaskType 짝: hhmm↔Time, money↔Money, yyyymmdd↔Date, phone↔Phone) |
|
|
95
|
+
| 라벨 표시 종류 (`LabelType`) | 정적 문구 → `LabelType:"labeltext"` + `labeltext:"값"` / 카테고리 필드값 표시 → `LabelType:"LabelCKey"` + `LabelCKey:"키"`. **임의값 금지** (`ckey`/`labelvalue` 등 — 정확값은 `labeltext` 또는 `LabelCKey` 둘뿐) |
|
|
96
|
+
| 버튼 클릭 이벤트 | `BottomButton` → `Events:{ "Click":"<핸들러>" }` (★`Events` 안에 — top-level `Click` 아님; 값=`scenario.Events` 핸들러 이름). Step 이동은 `MoveTo:"Next"` + `Next:{ "MoveStepOrder":["StepN"] }` (또는 `Prev`). `Button` 컨트롤 → `UseClickEvent:true` + `Events.Click`. **금지**: top-level `Click`, `ClickEvent`/`SubmitEvent` 임의 키, BottomButton 에 `UseClickEvent` |
|
|
97
|
+
| Step 이벤트 키 (`Step.Events`) | 허용 키만: `Init`/`Loaded`/`OnBackLoaded`/`OnLeave`/`OnForeground`/`ScrollEnd` (+`StepEventOrder`). 값은 `scenario.Events` 핸들러 **이름(문자열)** — 임의 키(`SubmitEvent` 등)나 인라인 액션 배열 금지(핸들러 본문은 `scenario.Events` 에) |
|
|
98
|
+
| 파일 첨부 (`InputFile`) | `Module` **필수**(기본 `"FlexFile"`; 5종 enum) + Module별 `Attributes` shape (상세 `docs/control/input-file.md`). `AllowExtensions` 는 소문자 확장자 **배열** `["jpg","pdf"]` (콤마 문자열 아님) |
|
|
99
|
+
| 날짜 입력 | `InputDate` + `DateFormat` |
|
|
100
|
+
| 라벨 문자열 | 컨트롤 본체의 `Caption` |
|
|
101
|
+
| 라벨 글자 크기 | `design.caption.text` |
|
|
102
|
+
| Group vs Control 분리 | Group 의 `Contents` 배열 아이템 = Control 노드 |
|
|
103
|
+
| 이벤트 핸들러 본문 | `scenario.Events` 에 정의 |
|
|
104
|
+
| 비연결 Group 명시 | 모든 Group 에 `UseDataConnection: false` 도 명시(생략 금지, `[group-dc]`) → 상세 `group.md` "함정" |
|
|
105
|
+
| 날짜 캘린더 Ckeys | 아래 "Calendar — SelectType / Ckeys 결정표" 참조 (페어 객체는 항상, `Ckeys` 채움만 조건부) |
|
|
106
|
+
|
|
107
|
+
## Calendar — SelectType / 페어객체 / Ckeys / 데이터연결 결정표
|
|
108
|
+
|
|
109
|
+
`Calendar`(InputDate 자식 또는 단독)의 `SelectType` 별 필수 구조. **페어 객체(`SingleDate`/`StartDate`/`EndDate`)는 항상 필수이고, `Ckeys` 를 채우느냐만 데이터연결 컨텍스트에 따라 갈린다** (`[date]` cross-check = `core/validators.mjs` checkInputDateConsistency).
|
|
110
|
+
|
|
111
|
+
| SelectType | 필수 페어 객체 | Ckeys — 조상 Group `UseDataConnection:true` | Ckeys — 비연결(프로토타이핑) |
|
|
112
|
+
|---|---|---|---|
|
|
113
|
+
| `SingleDate` | `SingleDate` (항상) | `["..."]` 1개 이상 필수 | `[]` 허용 |
|
|
114
|
+
| `FromTo` (dayCalendar 전용) | `StartDate` + `EndDate` (둘 다 항상) | 각 `["..."]` 1개 이상 | 각 `[]` 허용 |
|
|
115
|
+
|
|
116
|
+
- `monthCalendar` / `yearCalendar` → `SelectType` 은 `SingleDate` 만.
|
|
117
|
+
- `SingleDate: {}` 빈 객체 금지 — `Ckeys` 키는 항상 두되 값만 `[]` / `["..."]` (런타임 `dlgJson.SingleDate.Ckeys` 접근 안전).
|
|
118
|
+
- 상세: `schema/v1/control/calendar.md`, `schema/v1/control/input-date.md`.
|
|
119
|
+
|
|
120
|
+
## Combo / Search / InputDate 의 Dialog 호스트
|
|
121
|
+
|
|
122
|
+
| 본체 | Dialog 자식 |
|
|
123
|
+
|---|---|
|
|
124
|
+
| `Combo` | `ComboList` |
|
|
125
|
+
| `Search` | `List` |
|
|
126
|
+
| `InputDate` | `Calendar` |
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 이벤트(Events) 가이드
|
|
2
|
+
|
|
3
|
+
> 핸들러가 어떻게 정의·연결·실행되는지, 그리고 더 깔끔하게 구성하는 법.
|
|
4
|
+
> 진실원본: [schema/v1/events.md](../schema/v1/events.md) · [core/validators.mjs](../core/validators.mjs)
|
|
5
|
+
|
|
6
|
+
## 개념 — 이벤트가 동작하는 방식
|
|
7
|
+
|
|
8
|
+
이벤트는 세 부분으로 나뉜다.
|
|
9
|
+
|
|
10
|
+
1. **핸들러 맵** — `scenario.Events` 는 `이름 → Action 배열` 맵이다. Action 은 위에서
|
|
11
|
+
아래로 순차 실행된다.
|
|
12
|
+
2. **호출자 연결** — Step/Group/Control/BottomButton 이 자신의 `Events.<eventKey>` 값에
|
|
13
|
+
핸들러 이름을 적어 연결한다.
|
|
14
|
+
3. **실행 등록** — 호출자의 `*EventOrder` 배열(`StepEventOrder`, `ComboOrder` …)에 올라간
|
|
15
|
+
이벤트만 실제로 호출된다. 정의만 하고 EventOrder 에 없으면 동작하지 않는다.
|
|
16
|
+
|
|
17
|
+
```jsonc
|
|
18
|
+
"Events": {
|
|
19
|
+
"Init": [ { "Action": "Script", "Script": "Current.step.set('UserName', '홍길동');" } ],
|
|
20
|
+
"getList": [ { "Action": "Script", "Script": "f.Content('f_3').reload();" } ]
|
|
21
|
+
}
|
|
22
|
+
// 호출자 — EventOrder 에 등록해야 실제 호출됨
|
|
23
|
+
"Steps": { "Step1": { "StepEventOrder": ["Init"], "Events": { "Init": "Init", "Loaded": "getList" } } }
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## 권장 방식 — 기본적으로 이렇게
|
|
27
|
+
|
|
28
|
+
- **Action 은 `Script` 또는 `LinkedEvent` 만** 쓴다. 서버 호출(`Service`/`API`)은 운영 단계에서
|
|
29
|
+
사용자가 추가한다 — 생성 단계에서는 화면 동작과 샘플 데이터만 표현한다.
|
|
30
|
+
- **Script 본문은 JSON 문자열 한 줄**로 박고 줄바꿈은 `\n` 이스케이프로 표현한다.
|
|
31
|
+
JS `+` 연결이나 raw newline 은 파싱을 깨뜨린다.
|
|
32
|
+
- ✓ `"Script": "if (cond) return;\nf.Content('f_3').reload();"`
|
|
33
|
+
- **핸들러 이름은 영문**(`^[A-Za-z_][A-Za-z0-9_.]*$`). 한국어·공백·하이픈은 쓰지 않는다.
|
|
34
|
+
- **Combo / Search / InputDate 의 이벤트는 자식 Dialog 안**(`Dialog.Layouts[0].Controls[0]`)에
|
|
35
|
+
둔다. 본체(root)에 `Events`/`UseEvents` 를 붙이지 않는다.
|
|
36
|
+
|
|
37
|
+
## 더 좋게 — 한 단계 끌어올리는 법
|
|
38
|
+
|
|
39
|
+
- **핸들러를 작게 쪼개고 `LinkedEvent` 로 조합한다.** 한 핸들러에 모든 로직을 몰아넣기보다
|
|
40
|
+
`validate → save → reloadList` 처럼 의미 단위로 나누면 재사용·가독성이 올라간다.
|
|
41
|
+
|
|
42
|
+
```jsonc
|
|
43
|
+
"userCheck": [
|
|
44
|
+
{ "Action": "Script", "Script": "if (f.Setting.UserId === '') return;" },
|
|
45
|
+
{ "Action": "LinkedEvent", "EventName": "getList" }
|
|
46
|
+
]
|
|
47
|
+
```
|
|
48
|
+
- **이름으로 의도를 드러낸다.** `e1`·`onClick2` 대신 `SaveBookingEvent`·`reloadOrderList` 처럼
|
|
49
|
+
무엇을 하는지 이름만 봐도 읽히게 짓는다.
|
|
50
|
+
- **EventOrder 를 흐름 문서처럼 쓴다.** `["Init", "Loaded"]` 순서가 곧 화면 생애주기다 —
|
|
51
|
+
순서를 읽으면 동작이 보이도록 정렬한다.
|
|
52
|
+
- **데이터 갱신은 범위를 최소로.** 전체 Step reload(`Current.step.reload()`)보다 영향받는
|
|
53
|
+
그룹만 `f.Content('f_3').reload()` 로 갱신하면 깜빡임과 비용이 준다.
|
|
54
|
+
|
|
55
|
+
## 자주 틀리는 점 — 짧은 체크리스트
|
|
56
|
+
|
|
57
|
+
- [ ] 핸들러를 만들었는데 `*EventOrder` 에 안 넣음 → 호출 안 됨
|
|
58
|
+
- [ ] `Events.<key>` / `LinkedEvent.EventName` 값이 `scenario.Events` 키와 불일치(오타) → `[event-ref]`
|
|
59
|
+
- [ ] Combo/Search/InputDate **본체**에 이벤트 부착 → `[event]`
|
|
60
|
+
- [ ] Action 에 `Service`/`API` 사용 → 생성 금지(`[no-service]`)
|
|
61
|
+
- [ ] Script 를 `+` 연결/여러 줄로 작성 → 파싱 실패
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# Failure Discipline
|
|
2
|
+
|
|
3
|
+
This file extends `SKILL.md` for the validate-failure path. Where
|
|
4
|
+
`output-discipline` covers the emit step after `validate` returns `ok:true`,
|
|
5
|
+
this file covers what happens when it returns `ok:false` — or returns
|
|
6
|
+
something you did not expect. The failure mode here is not a broken delivery;
|
|
7
|
+
it is wasted cycles chasing the wrong cause.
|
|
8
|
+
|
|
9
|
+
## The prior
|
|
10
|
+
|
|
11
|
+
**`ok:false` means your input is wrong, not the tool.** The schema is ground
|
|
12
|
+
truth. `flex-scenario`, `ajv`, and the schema compiler are not under
|
|
13
|
+
suspicion. Start every recovery from "the JSON I generated violates the
|
|
14
|
+
contract" and stay there until the report proves otherwise.
|
|
15
|
+
|
|
16
|
+
**A tool-bug hypothesis is the last resort, never the first.** "Maybe ajv
|
|
17
|
+
mishandles cross-document `$ref`," "maybe `unevaluatedProperties` is a known
|
|
18
|
+
limitation," "maybe the spec is ambiguous" — these are the most expensive and
|
|
19
|
+
least likely explanations. If one forms, it is a signal that the prior has
|
|
20
|
+
flipped. Re-suspect the input before opening any `node_module`.
|
|
21
|
+
|
|
22
|
+
**Surprising output is still your output.** A materialized result that looks
|
|
23
|
+
wrong, a fragment validation that comes back empty, a count you did not
|
|
24
|
+
expect — treat it as a fact about what you produced, not a fault in the
|
|
25
|
+
reporter.
|
|
26
|
+
|
|
27
|
+
## Reading the report
|
|
28
|
+
|
|
29
|
+
**`errorCount` is volume, not severity.** One violation can emit hundreds of
|
|
30
|
+
errors. A report of hundreds errors is not the problems — it is usually one cause
|
|
31
|
+
plus its cascade. Never let the headline number set the response.
|
|
32
|
+
|
|
33
|
+
**Group by `kind` first, then read `schema`-kind from the deepest
|
|
34
|
+
`instancePath` up.** The `schema` errors point at concrete contract
|
|
35
|
+
violations (`must have required property 'X'`, `must match "then" schema`,
|
|
36
|
+
`must be equal to constant`). The deepest path is closest to the real cause;
|
|
37
|
+
shallower errors are usually consequences of it.
|
|
38
|
+
|
|
39
|
+
**Treat `strict-fields` / `unevaluatedProperties` as derivative.** When a
|
|
40
|
+
`oneOf` fails to resolve a branch, the strict variant flags *every* field —
|
|
41
|
+
including valid ones like `ControlType` — as undefined. These are cascade
|
|
42
|
+
noise, not the cause. Read them last, or not at all, until the `schema`
|
|
43
|
+
errors are resolved.
|
|
44
|
+
|
|
45
|
+
**A control that fails every branch failed the branch it was trying to be.**
|
|
46
|
+
A node with `ControlType: "InputDate"` reporting `missing 'ContentsType'`
|
|
47
|
+
(the Group branch) and `must be equal to constant` ×18 (the other control
|
|
48
|
+
branches) is one failure refracted through the discriminator. Read only the
|
|
49
|
+
InputDate branch's `schema` errors; discard the other branches' output.
|
|
50
|
+
|
|
51
|
+
## Diagnose before editing
|
|
52
|
+
|
|
53
|
+
**Read the actual cause before changing a byte.** No structural rewrite
|
|
54
|
+
precedes diagnosis. "Rewrite it to match a known-good example" before knowing
|
|
55
|
+
what failed produces the same failure with new line numbers.
|
|
56
|
+
|
|
57
|
+
**Cheapest test first.** Before opening `validators.mjs`, `schemas.mjs`, or
|
|
58
|
+
any validator internal: key-diff your failing node against the nearest passing
|
|
59
|
+
example in `examples/`. The difference is almost always one field, and the
|
|
60
|
+
diff finds it faster than reading the engine that reports it.
|
|
61
|
+
|
|
62
|
+
## One change, re-validate
|
|
63
|
+
|
|
64
|
+
**One minimal edit at the deepest violation, then re-run.** Fix the single
|
|
65
|
+
`schema` error closest to the leaf, re-validate, re-read. Do not batch fixes
|
|
66
|
+
or rewrite a whole control — batching destroys the mapping between a change
|
|
67
|
+
and its effect, and a rewrite reintroduces causes you already cleared.
|
|
68
|
+
|
|
69
|
+
## Recovery cues
|
|
70
|
+
|
|
71
|
+
The following are drift signals — when any appears, stop the current line of
|
|
72
|
+
investigation and return to the prior.
|
|
73
|
+
|
|
74
|
+
**About to hypothesize a bug in `ajv`, `flex-scenario`, or the schema
|
|
75
|
+
compiler.** The prior has flipped. Re-suspect your input. The cause is in the
|
|
76
|
+
report, not the engine.
|
|
77
|
+
|
|
78
|
+
**About to open `validators.mjs`, `schemas.mjs`, or a file under
|
|
79
|
+
`node_modules/`.** Did you read the `schema`-kind errors at the deepest
|
|
80
|
+
`instancePath` first? The validator internals explain *why noise is emitted*;
|
|
81
|
+
they do not contain the fix. The fix is the one contract violation that
|
|
82
|
+
triggered the cascade.
|
|
83
|
+
|
|
84
|
+
**The error count is large and urgency rises.** Count is cascade volume.
|
|
85
|
+
Collapse the `strict-fields` errors, find the handful of `schema` errors,
|
|
86
|
+
work the deepest one. Panic scales with the number; the work does not.
|
|
87
|
+
|
|
88
|
+
**About to rewrite a whole control, group, or step.** You have not isolated a
|
|
89
|
+
single cause. Narrow to one `instancePath`, fix that, re-validate. Rewriting
|
|
90
|
+
is diagnosis avoidance.
|
|
91
|
+
|
|
92
|
+
**The thought "I'm going in circles" appears.** That *is* the signal — not a
|
|
93
|
+
prompt to theorize harder. Stop. Either run a key-diff against a passing
|
|
94
|
+
example, or make the single deepest-error edit and re-validate. Action on one
|
|
95
|
+
concrete error beats another pass over the theory.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"count": 6,
|
|
3
|
+
"guides": [
|
|
4
|
+
{
|
|
5
|
+
"id": "control-options",
|
|
6
|
+
"path": "control-options.md",
|
|
7
|
+
"title": "Control Options — 컨트롤별 옵션 매트릭스",
|
|
8
|
+
"summary": "어떤 컨트롤에 어떤 옵션 키가 허용되는가."
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"id": "events",
|
|
12
|
+
"path": "events.md",
|
|
13
|
+
"title": "이벤트(Events) 가이드",
|
|
14
|
+
"summary": "핸들러가 어떻게 정의·연결·실행되는지, 그리고 더 깔끔하게 구성하는 법."
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "failure-discipline",
|
|
18
|
+
"path": "failure-discipline.md",
|
|
19
|
+
"title": "Failure Discipline"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "prompt-interview",
|
|
23
|
+
"path": "prompt-interview.md",
|
|
24
|
+
"title": "Prompt Interview — 비대화형 5질문 자기-답변",
|
|
25
|
+
"summary": "CLI 파이프(`flex-scenario gen`) 는 사용자에게 되묻는 통로가 없다. 모호 입력(L1~L2) 에서도 산출물은 **JSON 한 덩어리** 로 떨어진다. 그 결과 모델이 어떤 가정으로 시나리오를 만들었는지 외부에서 보이지 않아 사용자가 redirect 할 수 없는 게 병목 6."
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "scripts",
|
|
29
|
+
"path": "scripts.md",
|
|
30
|
+
"title": "Script 본문 가이드",
|
|
31
|
+
"summary": "이벤트 핸들러의 `Action:'Script'` 본문은 **intent short-form 을 1순위로 사용**한다. raw JS 본문은 intent 가 표현 못 하는 분기/조건이 있을 때만 escape hatch."
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
"id": "step-navigation",
|
|
35
|
+
"path": "step-navigation.md",
|
|
36
|
+
"title": "Step 이동 가이드",
|
|
37
|
+
"summary": "헤더 뒤로가기·하단 버튼·리스트 카드 클릭 등 Step 간 이동을 메타 채널로 표현하는 법."
|
|
38
|
+
}
|
|
39
|
+
]
|
|
40
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# Prompt Interview — 비대화형 5질문 자기-답변
|
|
2
|
+
|
|
3
|
+
> CLI 파이프(`flex-scenario gen`) 는 사용자에게 되묻는 통로가 없다. 모호 입력(L1~L2) 에서도 산출물은 **JSON 한 덩어리** 로 떨어진다. 그 결과 모델이 어떤 가정으로 시나리오를 만들었는지 외부에서 보이지 않아 사용자가 redirect 할 수 없는 게 병목 6.
|
|
4
|
+
>
|
|
5
|
+
> 이 가이드는 그 병목을 **모델이 자기 자신에게 5질문을 던지고 답을 시나리오에 명시적으로 기록** 하는 절차로 해소한다. 모드는 **비대화형 한 가지** — Claude Code 대화형은 별도 운용 (사람이 직접 묻고 답함).
|
|
6
|
+
|
|
7
|
+
## 적용 시점
|
|
8
|
+
|
|
9
|
+
- SKILL.md §시퀀스 **3 (요청 분석) 직후, 4 (examples Read) 직전**.
|
|
10
|
+
- 케이스 한 줄에 도메인만 적힌 L1 / 도메인+기능만 적힌 L2 케이스에서 특히 중요. L4~L5 풀스펙 케이스는 사실상 no-op (이미 답이 다 적혀 있음).
|
|
11
|
+
|
|
12
|
+
## 5질문 — 자기 답변 체크리스트
|
|
13
|
+
|
|
14
|
+
비대화형이므로 **모델이 직접 답을 만든다**. 답은 케이스 본문에서 추출 가능한 것 → 도메인 상식 추론 → 시나리오 표준 default 순으로 선택.
|
|
15
|
+
|
|
16
|
+
| # | 질문 | 답의 형식 | 추출 단서 / 기본값 |
|
|
17
|
+
|---|---|---|---|
|
|
18
|
+
| Q1 | **무슨 화면인가** (한 문장 정의) | 자유서술 1줄 | 케이스 첫 문장 우선 |
|
|
19
|
+
| Q2 | **Step 수와 흐름** | `N step (Step1: ... → Step2: ... → ...)` | 케이스에 명시 없으면 — 단순 입력 폼: 1, 입력→확인: 2, 입력→내역→확인: 3, 다중 입력 단계: 3~5 |
|
|
20
|
+
| Q3 | **각 Step 의 핵심 필드/컨트롤** | Step 별로 1줄: `Step1: 필드a/필드b/...` | 케이스에서 콤마/줄바꿈으로 묶인 항목 추출 |
|
|
21
|
+
| Q4 | **DataConnection 모드** | `query / new / update / detail` 중 어떤 조합 | 리스트/반복 표시 → `query`, 신규 입력 → `new` (mock 면제), 활성 섹터 편집 → `update`, 단건 조회 → `detail` |
|
|
22
|
+
| Q5 | **완료 후 동작** | `Step.Next` / 닫기 / 메시지 / 다음 화면 | 케이스에 명시 없으면 — 최종 Step 의 "제출/저장" 버튼 → `intent.script:{kind:'dialog', type:'Completed'}` + `MOVETYPE_INIT` 로 처음으로 복귀 |
|
|
23
|
+
|
|
24
|
+
> 5질문 외에 추가로 결정해야 할 슬롯(예: BackButton 표준 적용 여부 / Combo 의 다이얼로그 호스트 자식 / 카테고리명 컨벤션) 은 SKILL.md §"절대 금지" 와 cross-check 가 강제하므로 5질문에 포함하지 않는다 — 표준 자체로 결정됨.
|
|
25
|
+
|
|
26
|
+
## `__notes` 슬롯 — 답을 시나리오 root 에 기록
|
|
27
|
+
|
|
28
|
+
자기-답변 결과는 시나리오 root 의 `__notes` 슬롯에 **5~7줄, 한 줄 한 답** 으로 기록한다. 이 슬롯은 `schema/v1/scenario.schema.json` 에 화이트리스트로 등재되어 strict-fields 를 통과한다.
|
|
29
|
+
|
|
30
|
+
### 형식
|
|
31
|
+
|
|
32
|
+
```jsonc
|
|
33
|
+
{
|
|
34
|
+
"Steps": { ... },
|
|
35
|
+
"StartSteps": [ "Step1" ],
|
|
36
|
+
"__notes": [
|
|
37
|
+
"Q1: 출장 경비 정산 — 3-step (기본정보 → 비용항목 → 확인) 입력 화면",
|
|
38
|
+
"Q2: 3 step — 케이스에 'Step 1/2/3' 명시되어 그대로 채택",
|
|
39
|
+
"Q3-Step1: 출장지/부서/시작일/종료일/목적",
|
|
40
|
+
"Q3-Step2: 비용 시트 (사용일/항목/금액/영수증/비고) + read-only 합계",
|
|
41
|
+
"Q3-Step3: Step1+Step2 요약 (read-only Label / Input)",
|
|
42
|
+
"Q4: Step2 비용 시트는 DataUsage:'query' (반복 입력). 그 외 Step 은 단일 입력 폼이라 명시적 DC 불필요",
|
|
43
|
+
"Q5: Step3 '제출' 버튼 → dialog(type:'Completed') + MOVETYPE_INIT 으로 첫 Step 복귀"
|
|
44
|
+
]
|
|
45
|
+
}
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
### 기록 원칙
|
|
49
|
+
|
|
50
|
+
1. **각 줄은 `Q<번호>: ...` 또는 `Q<번호>-Step<N>: ...` 로 시작** — 사용자가 어떤 질문에 답한 줄인지 즉시 파악 가능.
|
|
51
|
+
2. **케이스 본문에서 추출했는지 / 추론했는지 구분** — 추론한 경우 답 뒤에 짧은 근거 (`(케이스에 명시 없어 N step 단순 폼으로 추정)`) 한 마디 덧붙임. 사용자가 redirect 할 때 추론 부분만 골라 수정 가능.
|
|
52
|
+
3. **5~7줄 권장, 12줄 한도** (schema `maxItems:12`). 그 이상 필요하면 케이스가 충분히 구체적이라 자기-인터뷰가 불필요한 단계 — 그대로 본문 작성에 집중.
|
|
53
|
+
4. **결정만 기록, 설명 금지** — "그래서 이렇게 했다" 는 적지 않는다. 결정 자체가 시나리오 본문에 펼쳐져 있다.
|
|
54
|
+
|
|
55
|
+
## 모드 판별
|
|
56
|
+
|
|
57
|
+
CLI 비대화형 호출에서만 `__notes` 를 채운다. 사람이 Claude Code 에서 직접 SKILL 을 호출한 대화형 흐름에선 모델이 사용자에게 1~2개 되묻고 진행하므로 `__notes` 슬롯은 비워둔다 (또는 사용자가 결정한 답을 같은 형식으로 기록).
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
case.md → 사용자 통로 없음? (CLI 파이프 / OneShot)
|
|
61
|
+
├─ Yes → 5질문 자기-답변 → __notes 기록 → 시나리오 작성
|
|
62
|
+
└─ No → 모호 슬롯 1~2개 사용자에게 되묻기 → 답 받고 진행 (__notes 비움)
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
판별 단서:
|
|
66
|
+
- 환경변수 `FLEX_INTERACTIVE=1` 이 있으면 대화형.
|
|
67
|
+
- 그 외엔 비대화형으로 가정 — `flex-scenario gen` 은 항상 비대화형.
|
|
68
|
+
|
|
69
|
+
## L1/L2 케이스 — 무엇을 추정해야 하나
|
|
70
|
+
|
|
71
|
+
L1 (도메인 한 단어), L2 (도메인+기능) 케이스에서 자주 빈 슬롯이 되는 항목과 표준 default:
|
|
72
|
+
|
|
73
|
+
| 빈 슬롯 | 표준 default | 비고 |
|
|
74
|
+
|---|---|---|
|
|
75
|
+
| Step 수 | 단순 폼 1 / 입력→확인 2 / 입력→내역→확인 3 | 케이스에 "한 화면" 같은 단서가 있으면 1, "확인" / "결재" 가 있으면 2~ |
|
|
76
|
+
| 필드 종류 | 도메인 상식 5~7개 + 메모/비고 1개 | 휴가신청: 신청자/부서/시작일/종료일/사유. 견적서: 거래처/품목/수량/단가/금액 |
|
|
77
|
+
| 데이터 모드 | 단건 폼은 명시 안 함. 시트/리스트가 있으면 `query` | `new` / `update` 는 케이스에 "수정/등록" 명시될 때만 |
|
|
78
|
+
| BackButton | 모든 Step `UseBackButton:true` + 첫 Step 닫기 / 후속 Step 이전 Step 복귀 | 표준이므로 5질문 외 자동 |
|
|
79
|
+
| 완료 동작 | `intent.script(dialog)` + `MOVETYPE_INIT` | "처리되었습니다" 한 줄 |
|
|
80
|
+
|
|
81
|
+
## 안티패턴
|
|
82
|
+
|
|
83
|
+
- **`__notes` 에 본문 설명을 적는다** — 결정 자체는 본문에 펼쳐져 있어야 한다. `__notes` 는 *결정 근거* 만.
|
|
84
|
+
- **5질문 모두 그대로 적는다** — 케이스에 이미 답이 있는 질문은 생략 가능 (L4~L5). `__notes` 는 결정한 *추론 부분* 만 적어도 충분.
|
|
85
|
+
- **`{=Field}` 토큰으로 Step 간 값 전달을 적는다** — Step 간 값 전달은 [INTENT.md §`copyStepValues`](../runtime/v1/intent-system/INTENT.md) 가 정답. `__notes` 와 무관.
|
|
86
|
+
- **사용자에게 되묻는 문구를 답에 적는다** — 비대화형에서 "어떤 도메인을 원하시나요?" 는 의미 없다. 자기 답을 만들어 기록.
|
|
87
|
+
|
|
88
|
+
## 측정
|
|
89
|
+
|
|
90
|
+
- 비대화형 호출에서 `__notes` 가 비어 있으면 (L1/L2 인데도) 자기-인터뷰 누락 — 회귀.
|
|
91
|
+
- `__notes` 가 7줄 초과 + L4/L5 인 경우 — 과잉 기록 (케이스가 이미 구체적이라 자기-인터뷰 불필요).
|
|
92
|
+
- 사용자가 결과를 보고 "이 가정이 틀렸다" 며 redirect 한 경우, 어떤 Q 항목이 어긋났는지 `__notes` 가 즉시 보여줘야 한다.
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Script 본문 가이드
|
|
2
|
+
|
|
3
|
+
> 이벤트 핸들러의 `Action:'Script'` 본문은 **intent short-form 을 1순위로 사용**한다. raw JS 본문은 intent 가 표현 못 하는 분기/조건이 있을 때만 escape hatch.
|
|
4
|
+
>
|
|
5
|
+
> 정본:
|
|
6
|
+
> - **intent 카탈로그**: [runtime/v1/intent-system/INTENT.md](../runtime/v1/intent-system/INTENT.md) (슬롯·scope·kind 매트릭스)
|
|
7
|
+
> - **intent 인프라**: [runtime/v1/intent-system/README.md](../runtime/v1/intent-system/README.md)
|
|
8
|
+
> - raw API 진실원본 (fallback 참고용): [scenario-gen-rules.md](../runtime/v1/script/scenario-gen-rules.md) · [_c.md](../runtime/v1/collection/_c.md) · [f_messagebox.md](../runtime/v1/script/f_messagebox.md) · [f_collection.md](../runtime/v1/script/f_collection.md) · [f_content.md](../runtime/v1/script/f_content.md)
|
|
9
|
+
> - 검증: [core/validators.mjs](../core/validators.mjs) `SCRIPT_DENY_PATTERNS` (펼침 후 결과까지 검사)
|
|
10
|
+
|
|
11
|
+
## 의도 → intent 매핑 (1순위)
|
|
12
|
+
|
|
13
|
+
| 의도 | intent 표기 | scope |
|
|
14
|
+
|---|---|---|
|
|
15
|
+
| Init 단계 mock 데이터 박기 | `intent.mock: { CtgX: [{...}, ...] }` | `event-script-init` (Step.Events.Init Action) |
|
|
16
|
+
| 활성 섹터의 N개 필드 일괄 갱신 | `intent.script: { kind:'updateActive', cat, set:{...}, reload? }` | `event-script` |
|
|
17
|
+
| 활성 섹터 삭제 | `intent.script: { kind:'deleteActive', cat, reload? }` | `event-script` |
|
|
18
|
+
| 카테고리 통째로 비우기 | `intent.script: { kind:'clearCategory', cat, reload? }` | `event-script` |
|
|
19
|
+
| 그룹 부분 재렌더만 | `intent.script: { kind:'reloadGroup', fid }` | `event-script` |
|
|
20
|
+
| 모달 다이얼로그 (확인/취소·에러) | `intent.script: { kind:'dialog', type, title, body?, buttons:[...] }` | `event-script` |
|
|
21
|
+
|
|
22
|
+
> Categories 정의 / `Collections` 슬롯 / `Panel.*` 은 **스튜디오 자동 재생성** — AI 단에서 채우지 않음. 카테고리 사용 사실은 `intent.mock` 의 카테고리명 + `DataConnection.CategoryName` 으로 cross-check 가 자동 추출.
|
|
23
|
+
|
|
24
|
+
이 매트릭스의 의도면 intent 로 표현 가능. **intent 펼침 결과가 raw 와 동등** — `[script-allow]` / `[mock-init]` / `[event-ref]` cross-check 모두 통과.
|
|
25
|
+
|
|
26
|
+
## intent 사용 — 6 가지 표준 패턴
|
|
27
|
+
|
|
28
|
+
### A. Init mock 데이터 — `intent.mock`
|
|
29
|
+
|
|
30
|
+
```jsonc
|
|
31
|
+
{
|
|
32
|
+
"Steps": {
|
|
33
|
+
"Step1": {
|
|
34
|
+
"Events": {
|
|
35
|
+
"Init": [{
|
|
36
|
+
"Action": "Script",
|
|
37
|
+
"intent": {
|
|
38
|
+
"mock": {
|
|
39
|
+
"CtgEmployee": [
|
|
40
|
+
{ "fName": "홍길동", "fAge": 30 },
|
|
41
|
+
{ "fName": "김철수", "fAge": 25 }
|
|
42
|
+
]
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}]
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
가드: 카테고리명 `^Ctg[A-Z]…` / 섹터 키는 [naming-objects.schema.json](../schema/v1/naming-objects.schema.json) 의 `sectorReservedKeys` + `jsReservedWords` 와 case-insensitive 충돌 차단 (`Status` / `STATUS` / `Length` 등).
|
|
53
|
+
|
|
54
|
+
### B. 활성 섹터 일괄 갱신 — `intent.script.updateActive`
|
|
55
|
+
|
|
56
|
+
```jsonc
|
|
57
|
+
{ "Action": "Script", "intent": { "script": {
|
|
58
|
+
"kind": "updateActive",
|
|
59
|
+
"cat": "CtgList",
|
|
60
|
+
"set": { "fStatus": "확정", "fApprovedAt": "2024-01-01" },
|
|
61
|
+
"reload": "f_3"
|
|
62
|
+
}}}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
펼침 결과: 가드 2단 (`if (!_c.CtgList) return; … if (!cur) return;`) + 직접 대입 N + `f.Content('f_3').reload();`
|
|
66
|
+
|
|
67
|
+
### C. 활성 섹터 완전삭제 — `intent.script.deleteActive`
|
|
68
|
+
|
|
69
|
+
```jsonc
|
|
70
|
+
{ "Action": "Script", "intent": { "script": {
|
|
71
|
+
"kind": "deleteActive", "cat": "CtgCart", "reload": "f_5"
|
|
72
|
+
}}}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
펼침 결과: 가드 2단 + `cur.release();` (완전삭제) + reload. ★ raw `.delete()` 는 added 가 아닌 섹터를 deleted 상태로 남겨 집계/루프를 오염시키므로 금지 (`[script-allow]` 차단) — 완전삭제는 `release()`.
|
|
76
|
+
|
|
77
|
+
### D. 카테고리 비우기 — `intent.script.clearCategory`
|
|
78
|
+
|
|
79
|
+
```jsonc
|
|
80
|
+
{ "Action": "Script", "intent": { "script": {
|
|
81
|
+
"kind": "clearCategory", "cat": "CtgOrderHistory", "reload": "f_3"
|
|
82
|
+
}}}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### E. 그룹 재렌더만 — `intent.script.reloadGroup`
|
|
86
|
+
|
|
87
|
+
```jsonc
|
|
88
|
+
{ "Action": "Script", "intent": { "script": { "kind": "reloadGroup", "fid": "f_3" } } }
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### F. 모달 다이얼로그 — `intent.script.dialog`
|
|
92
|
+
|
|
93
|
+
```jsonc
|
|
94
|
+
{ "Action": "Script", "intent": { "script": {
|
|
95
|
+
"kind": "dialog",
|
|
96
|
+
"type": "Alert",
|
|
97
|
+
"title": "삭제하시겠습니까?",
|
|
98
|
+
"body": "이 작업은 되돌릴 수 없습니다.",
|
|
99
|
+
"buttons": [
|
|
100
|
+
{ "label": "확인", "event": "DeleteConfirmEvent" },
|
|
101
|
+
{ "label": "취소", "color": "sub" }
|
|
102
|
+
]
|
|
103
|
+
}}}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
- 종결자는 항상 펼침 단계에서 `.show()` — `.send()` 오타 불가능.
|
|
107
|
+
- 버튼 액션은 `event` 문자열 (scenario.Events 키) 또는 생략 (닫기만). inline function 표현 불가.
|
|
108
|
+
|
|
109
|
+
## intent + raw 머지
|
|
110
|
+
|
|
111
|
+
같은 Action 안에 `intent` 와 raw `Script` 가 공존 가능. **펼침 결과가 raw 앞에 prepend**:
|
|
112
|
+
|
|
113
|
+
```jsonc
|
|
114
|
+
{
|
|
115
|
+
"Action": "Script",
|
|
116
|
+
"Script": "// 후속 로직 (intent 가 표현 못 하는 부분)",
|
|
117
|
+
"intent": { "script": { "kind": "updateActive", "cat": "CtgX", "set": { "fA": 1 } } }
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
펼친 결과:
|
|
122
|
+
```
|
|
123
|
+
if (!_c.CtgX) return;
|
|
124
|
+
const cur = _c.CtgX.activeSector;
|
|
125
|
+
if (!cur) return;
|
|
126
|
+
cur.fA = 1;
|
|
127
|
+
// 후속 로직 (intent 가 표현 못 하는 부분)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## raw escape hatch — intent 미지원 영역
|
|
131
|
+
|
|
132
|
+
intent 매트릭스에 없는 의도는 raw 본문으로. 대표적인 경우:
|
|
133
|
+
|
|
134
|
+
| 의도 | raw 표기 | 정본 |
|
|
135
|
+
|---|---|---|
|
|
136
|
+
| 런타임 단건 섹터 추가 (Init 외) | `f.Collection.addSector({...}, 'CtgX')` | [f_collection.md](../runtime/v1/script/f_collection.md) |
|
|
137
|
+
| 다중 카테고리에 상태 조건부 섹터 제거 | `f.Collection.removeSector('deleted', 'CtgX')` | 동상 |
|
|
138
|
+
| 분기 조건 (`if (_c.CtgX.length > 5) { ... }`) | raw JS — 절제 사용 | [_c.md](../runtime/v1/collection/_c.md) |
|
|
139
|
+
| 날짜 계산 | `f.Date('${rawDate}').format('YYYY-MM-DD')` | [scenario-gen-rules.md §2-3](../runtime/v1/script/scenario-gen-rules.md) |
|
|
140
|
+
| 다음 이벤트 호출 / 중단 | `f.Event(name).runNext()` / `.break()` | 동상 |
|
|
141
|
+
| 외부 스크립트 로드 | `f.Script.load('https://...', null, null)` | 동상 |
|
|
142
|
+
| Step 전체 재렌더 | `Current.step.reload()` | [current_step.md](../runtime/v1/script/current_step.md) |
|
|
143
|
+
| 섹터로 좁힌 부분 재렌더 (Embed `{%Load.sector%}` 바인딩 갱신 등) | `f.Content('<부모그룹 fid>', <그 그룹을 그린 섹터>).reload()` — sector 인자 필수, DC 그룹 자체 fid 금지(비연결 래퍼로) | [f_content.md §3-1·§5-4](../runtime/v1/script/f_content.md), [embed.md](../schema/v1/control/embed.md) |
|
|
144
|
+
|
|
145
|
+
raw 본문 작성 시 가드:
|
|
146
|
+
- **`activeSector` 사용 전 카테고리 + active 가드 2단** — intent.script.updateActive / deleteActive 는 자동 emit, raw 는 직접 적기.
|
|
147
|
+
- **다량 변경은 직접 대입 + 마지막 한 번만 reload**. `set` 호출 매번 reload 트리거하지 말 것.
|
|
148
|
+
- **카테고리명 / 컬렉션키 예약어 충돌 검사** — [naming-objects.schema.json](../schema/v1/naming-objects.schema.json) 의 두 enum. `Status` / `Length` / `IsActive` 등 case-insensitive 충돌은 `[script-allow]` 가 차단하지 않으므로 raw 작성 시 직접 회피.
|
|
149
|
+
|
|
150
|
+
## 자주 틀리는 점 — 짧은 체크리스트
|
|
151
|
+
|
|
152
|
+
- [ ] `intent.script.dialog` 가 표현 가능한 다이얼로그를 raw `f.MessageBox()` 로 박음 — **intent 우선**, raw 는 표현 한계 시 (예: 동적 button label).
|
|
153
|
+
- [ ] `intent.mock` 대신 raw `addSector` 를 Init 에 박음 — intent 가 카테고리명 / 예약어 / 인자 순서 모두 자동 가드.
|
|
154
|
+
- [ ] `f.MessageBox().send(...)` / `.setBody(...)` / `.chain(...)` — **가짜 메서드**. intent 사용 시 구조적으로 차단.
|
|
155
|
+
- [ ] `_c.<Cat>.clear()` / `_c.<Cat>.deleteActiveSector()` / `_c.<Cat>.activeSector()` / `_c.<Cat>.sectors()` — 가짜. intent.script.clearCategory / deleteActive 권장.
|
|
156
|
+
- [ ] `f.Message()` (인스턴스) — 차단된 채널. `f.MessageBox` 또는 intent.script.dialog 만.
|
|
157
|
+
- [ ] `f.Notification` — 전체 발송 차단. 다이얼로그는 intent.script.dialog.
|
|
158
|
+
- [ ] `Current.step.moveToNext(...)` 같은 명령형 흐름 제어 — 메타 채널 (`BottomButton.MoveTo` / `UseMove + MoveSteps`).
|
|
159
|
+
- [ ] `f.Frame.popUp(...)` — 같은 시나리오 PopUp 은 메타 (`StepDialogType`).
|
|
160
|
+
- [ ] `{=Field}` 가 event Script 본문에 박힘 — display 토큰 전용. event Script 안에서는 `_c.<Cat>.activeSector.<Field>` 로 명시 참조.
|
|
161
|
+
|
|
162
|
+
## 가짜 핸들이 의심될 때
|
|
163
|
+
|
|
164
|
+
1. **intent 매트릭스에 의도가 있나?** 있으면 intent 사용.
|
|
165
|
+
2. **본 파일의 raw escape 표에 있나?** 있으면 raw fallback OK.
|
|
166
|
+
3. **공식 자동완성에 잡히나?** 스튜디오 IDE 에서 `f.<X>().` / `_c.<Cat>.` 를 쳐서 노출되는 것 외엔 가짜.
|
|
167
|
+
4. **`runtime/v1/script/` 또는 `runtime/v1/collection/` 에 명시되어 있나?** 없으면 가짜.
|
|
168
|
+
|
|
169
|
+
그래도 모호하면 `feedback/` 에 한 줄 머지 → ready-to-promote → 검증.
|