@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,272 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://flextudio.local/meta-contract/v1/events.schema.json",
|
|
4
|
+
"title": "Scenario Events",
|
|
5
|
+
"description": "scenarioMeta.Events — 시나리오 레벨 이벤트 핸들러 맵. 키 패턴 `^[A-Za-z_][A-Za-z0-9_.]*$` (영문/숫자/언더스코어/점, 첫 글자는 영문/언더스코어). 값은 Action 객체 배열. Step / Group / Control / BottomButton 의 Events 안에서 핸들러 이름으로 참조한다 (validator.ts checkEventReferences 와 정합). 실 샘플 예: `Init`, `Loaded`, `Click`, `userCheck`, `getList`, `STEP1_Query_E`, `Step6Init`, `Chart.js`, `loadMapScript`. Event-Service 흐름 (Event 호출 → Service 호출 → DB 조회 → 결과를 컬렉션 카테고리에 저장 → Step 재로드) 을 코드로 표현.",
|
|
6
|
+
|
|
7
|
+
"type": "object",
|
|
8
|
+
"patternProperties": {
|
|
9
|
+
"^[A-Za-z_][A-Za-z0-9_.]*$": {
|
|
10
|
+
"type": "array",
|
|
11
|
+
"description": "Action 배열 — 위에서 아래로 순차 실행. IsSkip:true 면 그 항목 건너뜀 (디버깅 토글).",
|
|
12
|
+
"items": { "$ref": "#/$defs/eventAction" }
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
"additionalProperties": false,
|
|
16
|
+
|
|
17
|
+
"$defs": {
|
|
18
|
+
"eventAction": {
|
|
19
|
+
"title": "EventAction",
|
|
20
|
+
"description": "이벤트 한 단계의 동작 정의. `Action` discriminator 로 4분기 (Script / LinkedEvent / Service / API). 스킬 생성에서는 Script / LinkedEvent 만 허용 (Service / API 는 [no-service] 후검증으로 차단; 운영 메타 호환은 strict_no_service:false 로 비활성).",
|
|
21
|
+
"type": "object",
|
|
22
|
+
"required": ["Action"],
|
|
23
|
+
"oneOf": [
|
|
24
|
+
{ "$ref": "#/$defs/scriptAction" },
|
|
25
|
+
{ "$ref": "#/$defs/linkedEventAction" },
|
|
26
|
+
{ "$ref": "#/$defs/serviceAction" },
|
|
27
|
+
{ "$ref": "#/$defs/apiAction" }
|
|
28
|
+
]
|
|
29
|
+
},
|
|
30
|
+
|
|
31
|
+
"scriptAction": {
|
|
32
|
+
"title": "Script Action",
|
|
33
|
+
"description": "JavaScript 한 줄/블록 실행. 가장 흔히 사용되는 액션 유형 (실 샘플 624 회). 생성 허용. 스크립트 안에서 Current.step / f.Content / Load.* / f.Date / f.Setting 등 런타임 API 호출 가능.",
|
|
34
|
+
"type": "object",
|
|
35
|
+
"required": ["Action", "Script"],
|
|
36
|
+
"additionalProperties": false,
|
|
37
|
+
"properties": {
|
|
38
|
+
"Action": { "const": "Script" },
|
|
39
|
+
"Script": { "type": "string", "description": "실행할 JavaScript 코드. 빈 문자열 금지 (의미 없음)." },
|
|
40
|
+
"EventName": { "type": "string", "description": "(선택) 디버그/표시용 메모성 이름. 동작에 영향 없음." },
|
|
41
|
+
"IsSkip": { "type": "boolean", "description": "true 면 이 단계 건너뜀 (디버깅 토글)." },
|
|
42
|
+
"isMethodClose": { "type": "boolean", "description": "(선택) 메서드 마무리 표시 — 런타임 내부용." },
|
|
43
|
+
"ResultBlocks": { "type": "array", "description": "(선택) 결과 블록 정의 — 거의 사용 안 함. 일반 Script 에서는 비움." }
|
|
44
|
+
}
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
"linkedEventAction": {
|
|
48
|
+
"title": "LinkedEvent Action",
|
|
49
|
+
"description": "다른 이벤트 핸들러를 호출. EventName 은 scenarioMeta.Events 의 키 중 하나여야 함 ([event-ref] 검증). 실 샘플 239 회. 생성 허용.",
|
|
50
|
+
"type": "object",
|
|
51
|
+
"required": ["Action", "EventName"],
|
|
52
|
+
"additionalProperties": false,
|
|
53
|
+
"properties": {
|
|
54
|
+
"Action": { "const": "LinkedEvent" },
|
|
55
|
+
"EventName": { "type": "string", "minLength": 1, "description": "호출할 이벤트 핸들러 이름. scenarioMeta.Events 키 중 하나." },
|
|
56
|
+
"IsSkip": { "type": "boolean" },
|
|
57
|
+
"isMethodClose": { "type": "boolean" },
|
|
58
|
+
"Script": { "type": "string", "description": "(선택) 호출 전 실행할 보조 스크립트. 보통 비움." },
|
|
59
|
+
"UseResultOptions": { "type": "boolean" }
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
|
|
63
|
+
"serviceAction": {
|
|
64
|
+
"title": "Service Action",
|
|
65
|
+
"description": "ServiceBinding 항목 호출 (DB / 외부 시스템). 스킬 생성 시에는 사용 금지 — `[no-service]` 후검증이 strict (`strict_no_service:true`). 운영 메타 호환을 위해 형식만 정의. 실 샘플 116 회. ServiceBinding 필드는 string (scenario.ServiceBinding 키 참조) 또는 inline object (실 FlexSQL 패턴) 둘 다 가능.",
|
|
66
|
+
"type": "object",
|
|
67
|
+
"required": ["Action"],
|
|
68
|
+
"additionalProperties": true,
|
|
69
|
+
"properties": {
|
|
70
|
+
"Action": { "const": "Service" },
|
|
71
|
+
"ServiceBinding": {
|
|
72
|
+
"description": "scenarioMeta.ServiceBinding 의 키 문자열, 또는 인라인 ServiceBinding 정의 객체. 인라인 형태는 FlexSQL SQLServiceName 직접 명시 시 흔함.",
|
|
73
|
+
"oneOf": [
|
|
74
|
+
{ "type": "string" },
|
|
75
|
+
{ "$ref": "service-binding.schema.json#/$defs/serviceBindingEntry" }
|
|
76
|
+
]
|
|
77
|
+
},
|
|
78
|
+
"ServiceName": { "type": "string", "description": "(string ServiceBinding 사용 시) 서비스 이름. 인라인 ServiceBinding 사용 시 SQLServiceName 으로 식별." },
|
|
79
|
+
"SystemID": { "type": "string", "description": "Flextudio / Other / FlexSQL / New_<ID> 등." },
|
|
80
|
+
"Version": { "type": "number", "minimum": 1, "const": 2, "description": "프로퍼티가 숫자 저장. 고정값 2" },
|
|
81
|
+
"SetCategory": { "type": "boolean", "description": "결과 반영 대상 카테고리 토글." },
|
|
82
|
+
"UseCategory": { "type": "boolean" },
|
|
83
|
+
"UseInnerBlock": { "type": "boolean" },
|
|
84
|
+
"UseParamOptions": { "type": "boolean" },
|
|
85
|
+
"UseResultOptions": { "type": "boolean" },
|
|
86
|
+
"ParamBlock": {
|
|
87
|
+
"description": "(레거시) 단일 파라미터 블록. UserData / Filters 등을 직접 둠. 신 버전은 ParamBlocks 배열 사용.",
|
|
88
|
+
"$ref": "#/$defs/legacyParamBlock"
|
|
89
|
+
},
|
|
90
|
+
"ParamBlocks": {
|
|
91
|
+
"type": "array",
|
|
92
|
+
"description": "보내는 데이터 블록 배열 — 카테고리별로 1개씩. 각 블록은 어느 카테고리의 어떤 섹터를 어떤 필터로 보낼지 정의. flextudio-guide §6.6 '서비스 보내는 데이터'.",
|
|
93
|
+
"items": { "$ref": "#/$defs/paramBlock" }
|
|
94
|
+
},
|
|
95
|
+
"ResultBlock": {
|
|
96
|
+
"description": "(레거시) 단일 결과 블록. IsNotDelete 등.",
|
|
97
|
+
"$ref": "#/$defs/legacyResultBlock"
|
|
98
|
+
},
|
|
99
|
+
"ResultBlocks": {
|
|
100
|
+
"type": "array",
|
|
101
|
+
"description": "받은 데이터 블록 배열 — 결과를 어느 카테고리에 어떻게 반영할지 정의 (replace/add/merge). flextudio-guide §6.6 '서비스 받은 데이터'.",
|
|
102
|
+
"items": { "$ref": "#/$defs/resultBlock" }
|
|
103
|
+
},
|
|
104
|
+
"InnerBlocks": {
|
|
105
|
+
"type": "array",
|
|
106
|
+
"description": "받은 데이터의 중첩 배열 필드 정의 (예: 부모 row 안의 자식 list). InnerBlockKey 로 결과 객체 안의 어떤 필드가 반복 배열인지 식별.",
|
|
107
|
+
"items": { "$ref": "#/$defs/innerBlock" }
|
|
108
|
+
},
|
|
109
|
+
"Script": { "type": "string", "description": "(선택) 서비스 호출 전/후 보조 스크립트." },
|
|
110
|
+
"IsSkip": { "type": "boolean" },
|
|
111
|
+
"isMethodClose": { "type": "boolean" },
|
|
112
|
+
"isResultBlocksClose": { "type": "boolean" },
|
|
113
|
+
"isBreakPoint": { "type": "boolean" },
|
|
114
|
+
"useReflectContent": { "type": "boolean", "description": "결과 반영 후 자동 reload 여부." }
|
|
115
|
+
}
|
|
116
|
+
},
|
|
117
|
+
|
|
118
|
+
"apiAction": {
|
|
119
|
+
"title": "API Action",
|
|
120
|
+
"description": "외부 API 호출 (FlexAutoQuery / 사용자 정의 시스템). 스킬 생성 시 사용 금지 — `[no-service]` 가 차단. 실 샘플 28 회. fEventKey + fEvent 로 외부 시스템 라우팅 정의.",
|
|
121
|
+
"type": "object",
|
|
122
|
+
"required": ["Action", "ModuleID"],
|
|
123
|
+
"additionalProperties": true,
|
|
124
|
+
"properties": {
|
|
125
|
+
"Action": { "const": "API" },
|
|
126
|
+
"ModuleID": { "type": "string", "description": "모듈 식별자 (FlexAutoQuery 의 경우 GUID 형태일 수 있음)." },
|
|
127
|
+
"ServiceName": { "type": "string" },
|
|
128
|
+
"SystemID": { "type": "string", "description": "Flextudio / Other / New_<ID> 등." },
|
|
129
|
+
"SystemType": { "type": "string", "description": "FlexAutoQuery / CustomSystem 등." },
|
|
130
|
+
"fEvent": {
|
|
131
|
+
"type": "object",
|
|
132
|
+
"description": "fEventKey 에 나열된 키들의 실제 값 매핑. 값은 보통 `{%_base.X.Y%}` / `{%_c.Cat[0].field%}` 등 템플릿 표현식.",
|
|
133
|
+
"additionalProperties": { "type": "string" }
|
|
134
|
+
},
|
|
135
|
+
"fEventKey": {
|
|
136
|
+
"type": "array",
|
|
137
|
+
"description": "fEvent 객체에서 사용할 키 이름 배열. 예: ['fBaseCompanyID', 'fBaseUserNo', 'url', 'mapping'].",
|
|
138
|
+
"items": { "type": "string" }
|
|
139
|
+
},
|
|
140
|
+
"UseCategory": { "type": "boolean" },
|
|
141
|
+
"UseParamBlock": { "type": "boolean" },
|
|
142
|
+
"UseResultBlock": { "type": "boolean" },
|
|
143
|
+
"UsePKey": { "type": "boolean" },
|
|
144
|
+
"SetCategory": { "type": "boolean", "description": "결과 반영 대상 카테고리 토글." },
|
|
145
|
+
"ParamBlocks": { "type": "array", "items": { "$ref": "#/$defs/paramBlock" } },
|
|
146
|
+
"ResultBlocks": { "type": "array", "items": { "$ref": "#/$defs/resultBlock" } },
|
|
147
|
+
"NotSeperateInnerBlock":{ "type": "boolean" },
|
|
148
|
+
"useReflectContent": { "type": "boolean" }
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
|
|
152
|
+
"paramBlock": {
|
|
153
|
+
"title": "ParamBlock — 보내는 데이터 블록",
|
|
154
|
+
"description": "Service / API 호출 시 어느 카테고리의 데이터를 어떤 필터로 서버로 보낼지 정의. flextudio-guide §6.6 '서비스 보내는 데이터'. 'Event 가 Service 호출 → Service 가 DB 조회' 흐름의 Service 호출 입력.",
|
|
155
|
+
"type": "object",
|
|
156
|
+
"additionalProperties": true,
|
|
157
|
+
"properties": {
|
|
158
|
+
"CategoryName": {
|
|
159
|
+
"$ref": "naming-objects.schema.json#/$defs/categoryNameOrEmpty",
|
|
160
|
+
"description": "보낼 카테고리 이름. 빈 문자열 `''` 이면 컬렉션 루트/기본 컨텍스트. UserData 만 사용할 때는 비움. JS 빌트인 충돌 키는 schema 차단."
|
|
161
|
+
},
|
|
162
|
+
"UseFilter": {
|
|
163
|
+
"type": "boolean",
|
|
164
|
+
"description": "true 면 Filters 배열로 섹터 필터링. false 면 카테고리 전체 섹터 전송."
|
|
165
|
+
},
|
|
166
|
+
"Filters": {
|
|
167
|
+
"type": "array",
|
|
168
|
+
"description": "섹터 필터링 규칙 (UseFilter:true 일 때). FilterType 별 분기는 data-objects sectorFilter 와 동일 (Status / Condition / Custom / Parent 4종).",
|
|
169
|
+
"items": { "$ref": "data-objects.schema.json#/$defs/sectorFilter" }
|
|
170
|
+
},
|
|
171
|
+
"UserData": {
|
|
172
|
+
"type": "array",
|
|
173
|
+
"description": "사용자/시스템 컨텍스트에서 직접 전송할 키 이름 배열. 예: `['CompanySeq', 'EmpSeq', 'BaseDate']` — `_base.User.<key>` / `_base.Company.<key>` 등에서 자동 매핑.",
|
|
174
|
+
"items": { "type": "string" }
|
|
175
|
+
},
|
|
176
|
+
"UserFilterOption": {
|
|
177
|
+
"type": "boolean",
|
|
178
|
+
"description": "사용자 필터 옵션 토글 (실 샘플은 모두 false). 보통 UseFilter 와 같이 쓰지 않음."
|
|
179
|
+
},
|
|
180
|
+
"ParamItems": {
|
|
181
|
+
"type": "array",
|
|
182
|
+
"description": "(레거시 / 일부 외부 시스템) 명시적 키-값 매핑 배열. 신 버전은 보통 UserData 또는 카테고리 데이터 자체 사용.",
|
|
183
|
+
"items": { "type": "object" }
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"allOf": [
|
|
187
|
+
{
|
|
188
|
+
"if": {
|
|
189
|
+
"properties": { "UseFilter": { "const": true } },
|
|
190
|
+
"required": ["UseFilter"]
|
|
191
|
+
},
|
|
192
|
+
"then": { "required": ["Filters"] }
|
|
193
|
+
}
|
|
194
|
+
]
|
|
195
|
+
},
|
|
196
|
+
|
|
197
|
+
"legacyParamBlock": {
|
|
198
|
+
"title": "ParamBlock (레거시 단수형)",
|
|
199
|
+
"description": "(구버전) Service.ParamBlock — 단일 객체. 신 버전은 ParamBlocks 배열 사용. 일부 운영 메타에 잔존.",
|
|
200
|
+
"type": "object",
|
|
201
|
+
"additionalProperties": true,
|
|
202
|
+
"properties": {
|
|
203
|
+
"UserData": { "type": "array", "items": { "type": "string" } },
|
|
204
|
+
"Filters": { "type": "array", "items": { "$ref": "data-objects.schema.json#/$defs/sectorFilter" } }
|
|
205
|
+
}
|
|
206
|
+
},
|
|
207
|
+
|
|
208
|
+
"resultBlock": {
|
|
209
|
+
"title": "ResultBlock — 받은 데이터 블록",
|
|
210
|
+
"description": "Service / API 결과를 어느 카테고리에 어떻게 반영할지 정의. flextudio-guide §6.6 '서비스 받은 데이터' (화면 반영 = replace, 추가 = add, 덮어쓰기 = replace, 병합 = merge).",
|
|
211
|
+
"type": "object",
|
|
212
|
+
"additionalProperties": true,
|
|
213
|
+
"properties": {
|
|
214
|
+
"TargetType": {
|
|
215
|
+
"type": "string",
|
|
216
|
+
"enum": ["category", "replace", "add", "merge"],
|
|
217
|
+
"description": "결과 반영 방식. category=카테고리 자체 교체 / replace=섹터 전체 교체(덮어쓰기) / add=섹터 추가 / merge=PKeys 기준 병합."
|
|
218
|
+
},
|
|
219
|
+
"CategoryName": {
|
|
220
|
+
"$ref": "naming-objects.schema.json#/$defs/categoryName",
|
|
221
|
+
"description": "결과를 반영할 카테고리 이름 (예: `userInfo`, `questionList`, `pageInfo`). JS 빌트인 충돌 키는 schema 차단."
|
|
222
|
+
},
|
|
223
|
+
"PKeys": {
|
|
224
|
+
"$ref": "naming-objects.schema.json#/$defs/ckeysArray",
|
|
225
|
+
"description": "merge 모드에서 병합 키로 사용할 컬렉션 키 배열. 같은 PKey 값을 가진 섹터는 갱신, 없으면 추가. 시스템 게터 / JS 빌트인 차단."
|
|
226
|
+
},
|
|
227
|
+
"IsNotDelete": {
|
|
228
|
+
"type": "boolean",
|
|
229
|
+
"description": "true 면 기존 섹터 삭제 안 함 (replace 모드에서 누락 섹터 보존)."
|
|
230
|
+
},
|
|
231
|
+
"ResultItems": {
|
|
232
|
+
"type": "array",
|
|
233
|
+
"description": "(레거시) 명시적 결과 매핑. 보통 비움.",
|
|
234
|
+
"items": { "type": "object" }
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
"allOf": [
|
|
238
|
+
{
|
|
239
|
+
"if": {
|
|
240
|
+
"properties": { "TargetType": { "const": "merge" } },
|
|
241
|
+
"required": ["TargetType"]
|
|
242
|
+
},
|
|
243
|
+
"then": { "required": ["PKeys"] }
|
|
244
|
+
}
|
|
245
|
+
]
|
|
246
|
+
},
|
|
247
|
+
|
|
248
|
+
"legacyResultBlock": {
|
|
249
|
+
"title": "ResultBlock (레거시 단수형)",
|
|
250
|
+
"description": "(구버전) Service.ResultBlock — 단일 객체. 신 버전은 ResultBlocks 배열 사용.",
|
|
251
|
+
"type": "object",
|
|
252
|
+
"additionalProperties": true,
|
|
253
|
+
"properties": {
|
|
254
|
+
"IsNotDelete": { "type": "boolean" }
|
|
255
|
+
}
|
|
256
|
+
},
|
|
257
|
+
|
|
258
|
+
"innerBlock": {
|
|
259
|
+
"title": "InnerBlock — 중첩 결과 배열 키",
|
|
260
|
+
"description": "결과 객체 안의 특정 필드가 자식 배열 (반복 데이터) 임을 명시. 예: 부모 schedule row 안의 dayData 배열. InnerBlockKey 로 그 필드 이름을 지정. **메타 트리의 UseInnerBlock (Group 의 자식 반복) 과는 별개 개념** — 이쪽은 Service 결과 데이터의 구조 매핑.",
|
|
261
|
+
"type": "object",
|
|
262
|
+
"required": ["InnerBlockKey"],
|
|
263
|
+
"additionalProperties": true,
|
|
264
|
+
"properties": {
|
|
265
|
+
"InnerBlockKey": {
|
|
266
|
+
"type": "string",
|
|
267
|
+
"description": "결과 객체 안의 자식 배열 필드 이름. 실 샘플: `dayData`, `scheduleData`, `WkDateList`."
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Group
|
|
2
|
+
|
|
3
|
+
컨테이너 노드. `ContentsType: "Group"` 단일. 자식으로 Group 또는 Control 보유.
|
|
4
|
+
|
|
5
|
+
## v1 단순화
|
|
6
|
+
|
|
7
|
+
코드(`const.js`)에는 `ContentsType: "Layout"` 분기가 남아 있지만, **컨트랙트 v1 에서는 Group 단일**. Layout이 가졌던 역할(Control들의 직접 부모)은 Group이 흡수. 별도 `GroupType`/`LayoutType` 필드 없음.
|
|
8
|
+
|
|
9
|
+
## 식별
|
|
10
|
+
|
|
11
|
+
- 키: `Id` 형식 **`^f_[1-9][0-9]*$`** — `f_` + 1 이상 양의 정수 (자리수 무관). 예: `f_1`, `f_42`, `f_8161`. **`f_0`/`f_01`/`f_abc` 불가**.
|
|
12
|
+
- **시나리오 전체 유일** — Group/Control/BottomButton 의 Id 는 한 시나리오 안에서 중복 금지. validate.mjs 의 `checkIdUniqueness()` 후검증으로 확인.
|
|
13
|
+
- discriminator: `ContentsType: "Group"`
|
|
14
|
+
|
|
15
|
+
## 핵심 필드
|
|
16
|
+
|
|
17
|
+
| 키 | 타입 | 비고 |
|
|
18
|
+
|---|---|---|
|
|
19
|
+
| `Id` | string | 🔴 필수 |
|
|
20
|
+
| `ContentsType` | const `"Group"` | 🔴 필수 |
|
|
21
|
+
| `ContentsName` | string | 표시명 (탐색기) |
|
|
22
|
+
| `ContentStyle` | string | 기본 `"None"` |
|
|
23
|
+
| `Width`, `Height` | sizeObject | |
|
|
24
|
+
| `UseDataConnection` | boolean | **모든 Group 에 반드시 명시 (false 라도)**. 데이터 연결 그룹은 `true` (+ DataConnection 객체), 정적/래퍼 그룹은 `false`. **키 생략 금지** — 생략하면 스튜디오가 `UseOldDataConnection:true` 를 자동 생성(레거시 렌더), `[group-dc]` 후검증이 차단. 직렬화 시 `"true"`/`"false"` 로 보일 수 있으나 데이터형은 boolean. |
|
|
25
|
+
| `DataConnection` | object | UseDataConnection=true 일 때 함께 |
|
|
26
|
+
| `ScrollType` | enum `""\|"ScrollY"\|"ScrollX"` | |
|
|
27
|
+
| `UseEmptyView` | boolean | query 그룹 권장. `false` 면 빈 데이터 시 "값이 없습니다" 류 안내 문구 노출, `true` 면 안내 미표시. (property-data.js createUseEmptyView — SWITCH) |
|
|
28
|
+
| `Padding`, `Margin` | spacing | `Btm` 키 |
|
|
29
|
+
| `DisplayStyle` | object | Flex 레이아웃 |
|
|
30
|
+
| `BgStyle`, `BorderStyle` | object | |
|
|
31
|
+
| `UseAbsoluteLayout` | boolean | true 시 flow에서 빠짐 |
|
|
32
|
+
| `AbsolutePosition` | spacing | 사용 방향만 키 포함 |
|
|
33
|
+
| `UseFixedSize` | boolean | |
|
|
34
|
+
| `Events` | object | Click, ScrollEnd 등 |
|
|
35
|
+
| `LoadScript` | string | |
|
|
36
|
+
| `Contents` | Node[] | 자식: Group \| Control |
|
|
37
|
+
|
|
38
|
+
스타일 객체 상세는 `style-objects.md` 참조.
|
|
39
|
+
|
|
40
|
+
## DataConnection (요약)
|
|
41
|
+
|
|
42
|
+
`UseDataConnection: true` 일 때 같이:
|
|
43
|
+
|
|
44
|
+
```jsonc
|
|
45
|
+
"DataConnection": {
|
|
46
|
+
"TargetType": "category",
|
|
47
|
+
"DataUsage": "default" | "new" | "update" | "detail" | "query",
|
|
48
|
+
"CategoryName": "CtgXxx",
|
|
49
|
+
// DataUsage별 추가 필드:
|
|
50
|
+
// default: UseNewSector:true + OnlyIfNoSector:true
|
|
51
|
+
// new: UseNewSector:true
|
|
52
|
+
// update/detail: UseTargetSector:true + TargetSector:{Filters:[{FilterType:"Status",Status:["active"]}]}
|
|
53
|
+
// query: 추가 필드 없음 / (옵션) UseTargetSector:true + UseNewSector:false + Filters
|
|
54
|
+
// 상위 DataConnection 연동 (자식 Group):
|
|
55
|
+
// new + UseDCLink:true + DCLinkCkey.DCLinkItems[] ← 부모 키 자동 매핑
|
|
56
|
+
// query + UseTargetSector:true + Filters[Parent] ← 부모 키 일치 섹터만
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- query 그룹: `UseEmptyView` 는 DataConnection 밖 Group 레벨 — `false` 시 빈 데이터 안내 문구 노출.
|
|
61
|
+
- **하위 데이터 항목 콜렉션키 필수**: mock(또는 운영 데이터)을 박은 DC 그룹 하위에서 데이터가 연결되어야 하는 항목들은 콜렉션키(`LabelCKey`/`Ckeys`/`SaveValueKey` 등)로 바인딩해야 한다. 정적 텍스트만 두면 복제 카드가 같은 문구만 반복하고 데이터가 안 나옴 — [mockup-data.md](mockup-data.md) ★ 짝 규칙 / rules.md §5.6.
|
|
62
|
+
- **`[dc-empty]` 후검증이 차단**: DC 그룹의 자식 트리(중첩 DC 그룹 안쪽은 제외) 에 `LabelCKey` / `Ckeys` / `SaveValueKey` 가 단 하나도 없으면 에러. 반복 카드는 표시할 키를 라벨/입력으로 1개 이상 노출, 상세 그룹은 캡션-값 패턴의 **값 라벨에 LabelCKey** 를 박을 것. 부모-자식 DC 패턴(`FilterType:Parent`) 에서도 양쪽 모두 자체 자식에 컬렉션키가 박혀 있어야 한다.
|
|
63
|
+
- boolean 키들은 직렬화 시 `"true"`/`"false"` 문자열로 보일 수 있으나 데이터형은 boolean (schema/md 모두 boolean 표기).
|
|
64
|
+
- 데이터형이 애매한 키는 [property-data.js](../../../public/javascripts/scenario-studio/property-data.js) 의 `createXxx` 함수 EditControl 타입을 진실원본으로 본다.
|
|
65
|
+
- 상세 분기 + 함정 카탈로그는 [data-objects.md](data-objects.md) 참조.
|
|
66
|
+
|
|
67
|
+
## 자식 제약
|
|
68
|
+
|
|
69
|
+
- `Contents[]` 에 Group 또는 Control. Step 자식 불가.
|
|
70
|
+
- 무한 중첩 가능 — 단 불필요한 중첩은 성능 저하.
|
|
71
|
+
- query 그룹에는 헤더/필터/추가버튼 같은 1번만 표시할 요소를 넣지 말 것 (그룹 자체가 복제됨). 비연결 래퍼로 분리.
|
|
72
|
+
|
|
73
|
+
## Group 네비게이션 / 이벤트 (UseMove vs UseEvents)
|
|
74
|
+
|
|
75
|
+
Group 도 클릭 시 Step 이동 또는 이벤트 호출 가능. UseMove 와 UseEvents 는 동시 활성화 지양 (의도 충돌). 둘은 상호배타적으로 사용.
|
|
76
|
+
|
|
77
|
+
### UseMove — 클릭 시 Step 이동
|
|
78
|
+
|
|
79
|
+
```jsonc
|
|
80
|
+
{
|
|
81
|
+
"ContentsType": "Group",
|
|
82
|
+
"UseMove": true,
|
|
83
|
+
"MoveSteps": {
|
|
84
|
+
"MoveStepOrder": ["Step4"],
|
|
85
|
+
"Step4": { "Condition": "", "MoveTo": "Next", "Direction": "toBottom" }
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
- `UseMove: true` 시 `MoveSteps` 필수 (schema 분기 강제).
|
|
91
|
+
- `MoveSteps.MoveStepOrder`: 이동 대상 StepId 배열 (`^Step[1-9][0-9]*$`).
|
|
92
|
+
- 각 StepId 키에 `{ Condition, MoveTo, Direction }` 옵션 객체 **동일 레벨 필수** — 누락 시 스튜디오 프로퍼티 패널 렌더 TypeError (`moveTypeCombo.value(valueObj[K.MOVETO])`). validators 의 `checkMoveStepsTargets` 가 후검증으로 잡음.
|
|
93
|
+
- `MoveTo` enum: `Next` / `Prev` / `Prev_ReStart` / `Init` (group.schema.json patternProperties 강제).
|
|
94
|
+
|
|
95
|
+
### UseEvents — 클릭 시 이벤트 호출
|
|
96
|
+
|
|
97
|
+
```jsonc
|
|
98
|
+
{
|
|
99
|
+
"ContentsType": "Group",
|
|
100
|
+
"UseEvents": true,
|
|
101
|
+
"Events": {
|
|
102
|
+
"ContentEvent": ["Click"],
|
|
103
|
+
"Click": "CardClicked_E"
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
- `Events.ContentEvent` 에 `Click` / `ScrollEnd` 선언.
|
|
109
|
+
- 이벤트 이름 키에 핸들러 이름 매핑.
|
|
110
|
+
|
|
111
|
+
> Group / Label / Button 모두 UseMove + MoveSteps 와 Click 이벤트를 지원. Group 은 `UseEvents` + `Events.ContentEvent: ["Click"]` 패턴, Label/Button 은 `UseClickEvent` + `Events.Click` 패턴 (control.md 참조).
|
|
112
|
+
|
|
113
|
+
## ★ InnerBlock — Group 메타 트리에서 사용 금지
|
|
114
|
+
|
|
115
|
+
부모 섹터의 배열 필드를 자식 Group 으로 반복 렌더링하는 InnerBlock 패턴은 **AI 생성 금지** ([no-inner-block] 정책).
|
|
116
|
+
|
|
117
|
+
스키마 차원에서 차단:
|
|
118
|
+
|
|
119
|
+
```jsonc
|
|
120
|
+
// group.schema.json
|
|
121
|
+
"UseInnerBlock": false, // JSON Schema property false → 어떤 값이든 거부
|
|
122
|
+
"InnerBlockKey": false
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
따라서 **Group 메타에 `UseInnerBlock` / `InnerBlockKey` 키를 두면 검증 실패** — 별도 후검증 없이 생성 단계에서 차단된다.
|
|
126
|
+
|
|
127
|
+
대안 패턴 (반복 렌더링이 필요할 때):
|
|
128
|
+
|
|
129
|
+
| 의도 | 권장 패턴 |
|
|
130
|
+
|---|---|
|
|
131
|
+
| 카테고리 섹터 수만큼 반복 | `DataUsage: "query"` + `CategoryName` (DataConnection 5종 중 query) |
|
|
132
|
+
| 부모 row 안의 자식 배열 표시 | 자식 배열을 별도 카테고리로 분리 + 자식 group 에 별도 query DataConnection |
|
|
133
|
+
|
|
134
|
+
> **별개 개념: Service/DataSource 결과 매핑의 InnerBlock** — `events.schema.json` / `data-sources.schema.json` / `service/*` 의 `UseInnerBlock` / `InnerBlocks` / `NotSeperateInnerBlock` 은 Service 결과 데이터의 구조 매핑(부모 row 객체 안의 자식 배열 키 식별)을 위한 별개 개념. 운영 메타에서만 등장하며 `[no-service]` 와 함께 차단된다 — Group 메타 트리의 InnerBlock 과 혼동하지 말 것 (events.md §2.3.3 참조).
|
|
135
|
+
|
|
136
|
+
## 함정
|
|
137
|
+
|
|
138
|
+
- `reload()` 는 Group에만. Control 직접 reload 시 에러.
|
|
139
|
+
- DataConnection 가진 Group 자체는 `reload()` 불가 (동일 Id 그룹 복제 문제).
|
|
140
|
+
- `Padding: {}` (빈 객체) 도 허용되나, 사용 방향이 있으면 `{Btm: "10", SizeUnit: "px"}` 형태로 명시.
|
|
141
|
+
- `ContentStyle: ""` 보다 `"None"` 사용.
|
|
142
|
+
- **`UseDataConnection` 키 생략 금지** — 비연결 그룹도 `"UseDataConnection": false` 를 명시. 키가 없으면 스튜디오(`convertTopLevelDataConnection`)가 레거시로 간주해 `UseDataConnection:false` + **`UseOldDataConnection:true`** 를 자동 생성하고 구버전 데이터연결 프로퍼티로 렌더한다. `[group-dc]` 후검증이 차단.
|
|
143
|
+
- `UseMove` 와 `UseEvents` 는 동시 활성화 지양 (의도 충돌). 클릭으로 Step 이동만 원하면 UseMove, 이벤트만 원하면 UseEvents.
|
|
144
|
+
- **`Tab` 컨트롤을 감싸는(조상) Group 에는 `UseMove` 금지** — 탭 헤더 클릭이 그 Group 의 Step 이동을 트리거해 탭 전환 대신 화면이 넘어가 버린다. `[tab-move]` 후검증이 차단. 상세는 [control/tab.md](control/tab.md) "부모/형제 제약".
|
|
145
|
+
- `UseInnerBlock` / `InnerBlockKey` 등장 금지 — 위 InnerBlock 섹션 참조.
|
|
146
|
+
- `RepeatStyle` 은 구 메타로 v1 에서 제거. 생성 결과물에 출력 금지.
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
3
|
+
"$id": "https://flextudio.local/meta-contract/v1/group.schema.json",
|
|
4
|
+
"title": "Group",
|
|
5
|
+
"description": "ContentsType=\"Group\" 단일. 컨테이너 노드. 자식으로 Group | Control 보유.",
|
|
6
|
+
"$comment": "★ Group 메타 트리의 InnerBlock 반복 (UseInnerBlock / InnerBlockKey) 은 [no-inner-block] 정책으로 AI 생성 금지 — 두 키 모두 schema 값 false (어떤 값이든 거부) 로 차단. (Service/DataSource 결과 매핑의 동명 키와는 별개 개념.)",
|
|
7
|
+
"type": "object",
|
|
8
|
+
"required": ["Id", "ContentsType"],
|
|
9
|
+
"additionalProperties": true,
|
|
10
|
+
|
|
11
|
+
"properties": {
|
|
12
|
+
"Id": { "type": "string", "pattern": "^f_[1-9][0-9]*$", "description": "f_숫자 형식. 1부터 시작, 선행 0 불가, 영문/언더스코어 불가. 시나리오 전체 유일 (validate.mjs 후검증)." },
|
|
13
|
+
"ContentsType": { "const": "Group" },
|
|
14
|
+
"ContentsName": { "type": "string" },
|
|
15
|
+
"ContentStyle": { "type": "string", "default": "None" },
|
|
16
|
+
|
|
17
|
+
"design": {
|
|
18
|
+
"$ref": "design-system/design.schema.json",
|
|
19
|
+
"description": "★ Group 스타일의 권장 short-form. verbose 한 raw 스타일 필드 대신 이 키로 배경·여백·테두리·정렬/레이아웃·그림자 등 스타일을 슬롯 이름으로 표현한다. design-system/materialize.mjs 가 검증 진입 직전에 raw 필드로 expand 하고 본 키는 결과에서 제거 — 따라서 validation 동작에는 영향 없음. 사용 가능한 슬롯·형식·enum 은 design-system/design.schema.json (Ajv 등록) 또는 DESIGN.md (get_design_rules) 참조. raw 필드와 공존 가능 — leaf 단위에서 design 이 우선."
|
|
20
|
+
},
|
|
21
|
+
|
|
22
|
+
"Width": { "$ref": "style-objects.schema.json#/$defs/sizeObject" },
|
|
23
|
+
"Height": { "$ref": "style-objects.schema.json#/$defs/sizeObject" },
|
|
24
|
+
|
|
25
|
+
"UseDataConnection": {
|
|
26
|
+
"type": "boolean",
|
|
27
|
+
"default": false,
|
|
28
|
+
"description": "Group 의 데이터 연결 사용 여부. **모든 Group 에 반드시 명시(false 라도)** — 정적/래퍼 그룹도 false 를 명시할 것. 키를 생략하면 스튜디오가 레거시로 간주해 UseOldDataConnection:true 를 자동 생성(구버전 데이터연결 프로퍼티로 렌더) — `[group-dc]` 후검증이 누락을 차단. 데이터 연결 그룹은 true + DataConnection 객체와 함께 사용 (카테고리 섹터 수만큼 반복 렌더링 / 단일 섹터 바인딩 등 DataUsage 별 동작). ★ 프로퍼티 EDITOR_CTRL.CHECKBOX 저장 — boolean 고정."
|
|
29
|
+
},
|
|
30
|
+
"DataConnection": { "$ref": "data-objects.schema.json#/$defs/dataConnection" },
|
|
31
|
+
|
|
32
|
+
"ScrollType": { "type": "string", "enum": ["", "ScrollY", "ScrollX"] },
|
|
33
|
+
|
|
34
|
+
"Padding": { "$ref": "style-objects.schema.json#/$defs/spacing" },
|
|
35
|
+
"Margin": { "$ref": "style-objects.schema.json#/$defs/spacing" },
|
|
36
|
+
"DisplayStyle":{ "$ref": "style-objects.schema.json#/$defs/displayStyle" },
|
|
37
|
+
"BgStyle": { "$ref": "style-objects.schema.json#/$defs/bgStyle" },
|
|
38
|
+
"BorderStyle": { "$ref": "style-objects.schema.json#/$defs/borderStyle" },
|
|
39
|
+
|
|
40
|
+
"UseAbsoluteLayout": { "type": "boolean", "default": false },
|
|
41
|
+
"AbsolutePosition": { "$ref": "style-objects.schema.json#/$defs/absolutePosition" },
|
|
42
|
+
|
|
43
|
+
"UseFixedSize": { "type": "boolean", "default": false },
|
|
44
|
+
"isColumnCtrl": { "type": "boolean", "const": false, "default": false, "$comment": "★ JS truthy 회피 — boolean false 만." },
|
|
45
|
+
|
|
46
|
+
"UseOpacity": { "type": "boolean", "default": false, "description": "투명도 사용 여부. true 일 때 OpacityValue 활성." },
|
|
47
|
+
"OpacityValue": { "type": "string", "$comment": "프로퍼티 SIZE_INPUT(unit=%) 으로 저장 — 문자열. 범위 0~100.", "description": "투명도 값. 0~100 사이 정수 문자열, 단위 % 고정. UseOpacity=true 일 때만 의미." },
|
|
48
|
+
|
|
49
|
+
"minWidth": { "$ref": "style-objects.schema.json#/$defs/sizeObject", "description": "최소 너비. ★ AI 생성 시 미포함 (사용자 수동 설정 전용)." },
|
|
50
|
+
"maxWidth": { "$ref": "style-objects.schema.json#/$defs/sizeObject", "description": "최대 너비. ★ AI 생성 시 미포함 (사용자 수동 설정 전용)." },
|
|
51
|
+
"minHeight": { "$ref": "style-objects.schema.json#/$defs/sizeObject", "description": "최소 높이. ★ AI 생성 시 미포함 (사용자 수동 설정 전용)." },
|
|
52
|
+
"maxHeight": { "$ref": "style-objects.schema.json#/$defs/sizeObject", "description": "최대 높이. ★ AI 생성 시 미포함 (사용자 수동 설정 전용)." },
|
|
53
|
+
|
|
54
|
+
"UseMove": {
|
|
55
|
+
"type": "boolean",
|
|
56
|
+
"default": false,
|
|
57
|
+
"description": "Group 클릭 시 Step 이동 모드. true 면 MoveSteps 함께 사용. UseEvents 와 상호배타."
|
|
58
|
+
},
|
|
59
|
+
"MoveSteps": {
|
|
60
|
+
"type": "object",
|
|
61
|
+
"additionalProperties": true,
|
|
62
|
+
"description": "이동 대상 Step 정의. UseMove=true 일 때. MoveStepOrder 배열의 각 StepId 마다 동일 레벨에 옵션 객체(Condition/MoveTo/Direction 등) 슬롯이 함께 존재해야 한다",
|
|
63
|
+
"properties": {
|
|
64
|
+
"MoveStepOrder": {
|
|
65
|
+
"type": "array",
|
|
66
|
+
"minItems": 1,
|
|
67
|
+
"items": { "type": "string", "pattern": "^Step[1-9][0-9]*$" }
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"patternProperties": {
|
|
71
|
+
"^Step[1-9][0-9]*$": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"additionalProperties": true,
|
|
74
|
+
"description": "StepId 별 이동 설정. 신규 생성 시 { Condition: '', MoveTo: 'Next' } 로 초기화.",
|
|
75
|
+
"properties": {
|
|
76
|
+
"Condition": { "type": "string", "description": "이동 조건식 (빈 문자열=무조건)." },
|
|
77
|
+
"MoveTo": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"enum": ["Next", "Prev", "Prev_ReStart", "Init"],
|
|
80
|
+
"description": "이동 동작. const.js MOVETYPE 참조 — bottom-buttons 의 None 은 Group MoveSteps 에서 사용 안 함 (이동 안 하면 UseEvents 사용)."
|
|
81
|
+
},
|
|
82
|
+
"Direction": {
|
|
83
|
+
"type": "string",
|
|
84
|
+
"description": "MoveTo='Next' 일 때 네비게이션 방향 (예: toBottom, toRight)."
|
|
85
|
+
},
|
|
86
|
+
"IsIgnoreRequired": { "type": "boolean", "description": "MoveTo='Next' 시 필수입력 검증 무시." },
|
|
87
|
+
"IsRequired": { "type": "boolean", "description": "MoveTo='Prev'/'Prev_ReStart' 시 필수입력 보존 여부." },
|
|
88
|
+
"IsRestored": { "type": "boolean", "description": "MoveTo='Prev'/'Prev_ReStart' 시 콜렉션 복원 여부." }
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
},
|
|
93
|
+
|
|
94
|
+
"UseEvents": {
|
|
95
|
+
"type": "boolean",
|
|
96
|
+
"default": false,
|
|
97
|
+
"description": "Group 이벤트 사용 (Click 등). UseMove 와 상호배타."
|
|
98
|
+
},
|
|
99
|
+
"Events": { "$ref": "control/_base.schema.json#/$defs/groupEvents" },
|
|
100
|
+
"LoadScript": { "type": "string" },
|
|
101
|
+
|
|
102
|
+
"UseInnerBlock": false,
|
|
103
|
+
"InnerBlockKey": false,
|
|
104
|
+
"UseEmptyView": {
|
|
105
|
+
"type": "boolean",
|
|
106
|
+
"description": "빈 카테고리/query 시 빈 데이터 안내 문구 표시 여부. true 면 빈 데이터 안내 미표시, false 면 \"값이 없습니다\" 류 안내 문구 노출. query DataUsage 그룹에서 주로 사용 (DataConnection 밖 Group 레벨 키). 단일 진실원본."
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
"Contents": {
|
|
110
|
+
"type": "array",
|
|
111
|
+
"description": "자식 노드. Group | Control.",
|
|
112
|
+
"items": { "$ref": "node.schema.json" }
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
|
|
116
|
+
"allOf": [
|
|
117
|
+
{
|
|
118
|
+
"if": {
|
|
119
|
+
"properties": { "UseDataConnection": { "const": true } },
|
|
120
|
+
"required": ["UseDataConnection"]
|
|
121
|
+
},
|
|
122
|
+
"then": { "required": ["DataConnection"] }
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
"$comment": "UseMove=true 면 MoveSteps 필요.",
|
|
126
|
+
"if": {
|
|
127
|
+
"properties": { "UseMove": { "const": true } },
|
|
128
|
+
"required": ["UseMove"]
|
|
129
|
+
},
|
|
130
|
+
"then": { "required": ["MoveSteps"] }
|
|
131
|
+
}
|
|
132
|
+
]
|
|
133
|
+
}
|