@owlmeans/viable-common 0.0.43 → 0.0.45
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/agent-meta/manifest.json +2 -2
- package/agent-meta/skills/agent-presentation/SKILL.md +4 -4
- package/agent-meta/skills/viable-common/SKILL.md +59 -36
- package/build/agent/consts.d.ts +58 -0
- package/build/agent/consts.d.ts.map +1 -0
- package/build/agent/consts.js +63 -0
- package/build/agent/consts.js.map +1 -0
- package/build/agent/consts.local.d.ts +21 -0
- package/build/agent/consts.local.d.ts.map +1 -0
- package/build/agent/consts.local.js +44 -0
- package/build/agent/consts.local.js.map +1 -0
- package/build/agent/index.d.ts +2 -0
- package/build/agent/index.d.ts.map +1 -1
- package/build/agent/index.js +1 -0
- package/build/agent/index.js.map +1 -1
- package/build/agent/presentation/types.d.ts +21 -0
- package/build/agent/presentation/types.d.ts.map +1 -0
- package/build/agent/presentation/types.js.map +1 -0
- package/build/agent/presentation.d.ts +12 -94
- package/build/agent/presentation.d.ts.map +1 -1
- package/build/agent/presentation.js +218 -299
- package/build/agent/presentation.js.map +1 -1
- package/build/agent/types.d.ts +30 -0
- package/build/agent/types.d.ts.map +1 -1
- package/build/agent/types.local.d.ts +4 -0
- package/build/agent/types.local.d.ts.map +1 -0
- package/build/agent/types.local.js +2 -0
- package/build/agent/types.local.js.map +1 -0
- package/build/areas/consts.d.ts +5 -0
- package/build/areas/consts.d.ts.map +1 -1
- package/build/areas/consts.js +4 -0
- package/build/areas/consts.js.map +1 -1
- package/build/areas/index.d.ts +1 -0
- package/build/areas/index.d.ts.map +1 -1
- package/build/areas/index.js.map +1 -1
- package/build/areas/tenancy/types.d.ts +23 -0
- package/build/areas/tenancy/types.d.ts.map +1 -0
- package/build/areas/tenancy/types.js +2 -0
- package/build/areas/tenancy/types.js.map +1 -0
- package/build/areas/tenancy.d.ts +6 -50
- package/build/areas/tenancy.d.ts.map +1 -1
- package/build/areas/tenancy.js +21 -31
- package/build/areas/tenancy.js.map +1 -1
- package/build/areas/types.d.ts +32 -0
- package/build/areas/types.d.ts.map +1 -1
- package/build/ba/connecting/types.d.ts +45 -0
- package/build/ba/connecting/types.d.ts.map +1 -0
- package/build/ba/connecting/types.js +2 -0
- package/build/ba/connecting/types.js.map +1 -0
- package/build/ba/connecting.d.ts +4 -0
- package/build/ba/connecting.d.ts.map +1 -0
- package/build/ba/connecting.js +47 -0
- package/build/ba/connecting.js.map +1 -0
- package/build/ba/helpers.d.ts +4 -39
- package/build/ba/helpers.d.ts.map +1 -1
- package/build/ba/helpers.js +5 -79
- package/build/ba/helpers.js.map +1 -1
- package/build/ba/index.d.ts +2 -0
- package/build/ba/index.d.ts.map +1 -1
- package/build/ba/index.js +1 -0
- package/build/ba/index.js.map +1 -1
- package/build/ba/types.d.ts +1 -1
- package/build/ba/types.d.ts.map +1 -1
- package/build/blueprint/consts.d.ts +41 -0
- package/build/blueprint/consts.d.ts.map +1 -1
- package/build/blueprint/consts.js +51 -0
- package/build/blueprint/consts.js.map +1 -1
- package/build/blueprint/consts.local.d.ts +2 -0
- package/build/blueprint/consts.local.d.ts.map +1 -0
- package/build/blueprint/consts.local.js +3 -0
- package/build/blueprint/consts.local.js.map +1 -0
- package/build/blueprint/index.d.ts +1 -0
- package/build/blueprint/index.d.ts.map +1 -1
- package/build/blueprint/index.js +1 -0
- package/build/blueprint/index.js.map +1 -1
- package/build/blueprint/types.d.ts +3 -52
- package/build/blueprint/types.d.ts.map +1 -1
- package/build/blueprint/types.js +1 -65
- package/build/blueprint/types.js.map +1 -1
- package/build/blueprint/utils.d.ts +11 -0
- package/build/blueprint/utils.d.ts.map +1 -0
- package/build/blueprint/utils.js +16 -0
- package/build/blueprint/utils.js.map +1 -0
- package/build/branding.d.ts +0 -8
- package/build/branding.d.ts.map +1 -1
- package/build/branding.js +0 -16
- package/build/branding.js.map +1 -1
- package/build/connect/branding/types.d.ts +28 -0
- package/build/connect/branding/types.d.ts.map +1 -0
- package/build/connect/branding/types.js +2 -0
- package/build/connect/branding/types.js.map +1 -0
- package/build/connect/consts.d.ts +2 -10
- package/build/connect/consts.d.ts.map +1 -1
- package/build/connect/consts.js +2 -23
- package/build/connect/consts.js.map +1 -1
- package/build/connect/conversion/types.d.ts +93 -0
- package/build/connect/conversion/types.d.ts.map +1 -0
- package/build/connect/conversion/types.js +2 -0
- package/build/connect/conversion/types.js.map +1 -0
- package/build/connect/entrypoints/types.d.ts +30 -0
- package/build/connect/entrypoints/types.d.ts.map +1 -0
- package/build/connect/entrypoints/types.js +2 -0
- package/build/connect/entrypoints/types.js.map +1 -0
- package/build/connect/entrypoints.d.ts +61 -92
- package/build/connect/entrypoints.d.ts.map +1 -1
- package/build/connect/entrypoints.js +5 -2
- package/build/connect/entrypoints.js.map +1 -1
- package/build/connect/errors/types.d.ts +20 -0
- package/build/connect/errors/types.d.ts.map +1 -0
- package/build/connect/errors/types.js +2 -0
- package/build/connect/errors/types.js.map +1 -0
- package/build/connect/errors.d.ts +32 -0
- package/build/connect/errors.d.ts.map +1 -1
- package/build/connect/errors.js +65 -0
- package/build/connect/errors.js.map +1 -1
- package/build/connect/index.d.ts +13 -2
- package/build/connect/index.d.ts.map +1 -1
- package/build/connect/index.js +1 -0
- package/build/connect/index.js.map +1 -1
- package/build/connect/kit/types.d.ts +52 -0
- package/build/connect/kit/types.d.ts.map +1 -0
- package/build/connect/kit/types.js +2 -0
- package/build/connect/{types.js.map → kit/types.js.map} +1 -1
- package/build/connect/model-tier/types.d.ts +16 -0
- package/build/connect/model-tier/types.d.ts.map +1 -0
- package/build/connect/model-tier/types.js +2 -0
- package/build/connect/model-tier/types.js.map +1 -0
- package/build/connect/model-tier.d.ts +4 -0
- package/build/connect/model-tier.d.ts.map +1 -0
- package/build/connect/model-tier.js +21 -0
- package/build/connect/model-tier.js.map +1 -0
- package/build/connect/{ops.d.ts → ops/types.d.ts} +13 -4
- package/build/connect/ops/types.d.ts.map +1 -0
- package/build/connect/ops/types.js +2 -0
- package/build/connect/ops/types.js.map +1 -0
- package/build/connect/pipeline/types.d.ts +39 -0
- package/build/connect/pipeline/types.d.ts.map +1 -0
- package/build/connect/pipeline/types.js +2 -0
- package/build/connect/pipeline/types.js.map +1 -0
- package/build/connect/project/types.d.ts +127 -0
- package/build/connect/project/types.d.ts.map +1 -0
- package/build/connect/project/types.js +2 -0
- package/build/connect/project/types.js.map +1 -0
- package/build/connect/references/types.d.ts +157 -0
- package/build/connect/references/types.d.ts.map +1 -0
- package/build/connect/references/types.js +2 -0
- package/build/connect/references/types.js.map +1 -0
- package/build/connect/references/types.local.d.ts +5 -0
- package/build/connect/references/types.local.d.ts.map +1 -0
- package/build/connect/references/types.local.js +2 -0
- package/build/connect/references/types.local.js.map +1 -0
- package/build/connect/references.d.ts +1 -153
- package/build/connect/references.d.ts.map +1 -1
- package/build/connect/references.js.map +1 -1
- package/build/connect/schemas.d.ts +9 -5
- package/build/connect/schemas.d.ts.map +1 -1
- package/build/connect/schemas.js +10 -3
- package/build/connect/schemas.js.map +1 -1
- package/build/connect/session/types.d.ts +73 -0
- package/build/connect/session/types.d.ts.map +1 -0
- package/build/connect/session/types.js +2 -0
- package/build/connect/session/types.js.map +1 -0
- package/build/connect/settings/types.d.ts +48 -0
- package/build/connect/settings/types.d.ts.map +1 -0
- package/build/connect/settings/types.js +2 -0
- package/build/connect/settings/types.js.map +1 -0
- package/build/consts.d.ts +8 -0
- package/build/consts.d.ts.map +1 -1
- package/build/consts.js +16 -0
- package/build/consts.js.map +1 -1
- package/build/convert/analysis/types.d.ts +93 -0
- package/build/convert/analysis/types.d.ts.map +1 -0
- package/build/convert/analysis/types.js +2 -0
- package/build/convert/analysis/types.js.map +1 -0
- package/build/convert/census/consts.local.d.ts +55 -0
- package/build/convert/census/consts.local.d.ts.map +1 -0
- package/build/convert/census/consts.local.js +104 -0
- package/build/convert/census/consts.local.js.map +1 -0
- package/build/convert/census/types.d.ts +176 -0
- package/build/convert/census/types.d.ts.map +1 -0
- package/build/convert/census/types.js +2 -0
- package/build/convert/census/types.js.map +1 -0
- package/build/convert/census.d.ts +4 -0
- package/build/convert/census.d.ts.map +1 -0
- package/build/convert/census.js +83 -0
- package/build/convert/census.js.map +1 -0
- package/build/convert/consts.d.ts +4 -12
- package/build/convert/consts.d.ts.map +1 -1
- package/build/convert/consts.js +4 -3
- package/build/convert/consts.js.map +1 -1
- package/build/convert/detection/types.d.ts +67 -0
- package/build/convert/detection/types.d.ts.map +1 -0
- package/build/convert/detection/types.js +2 -0
- package/build/convert/detection/types.js.map +1 -0
- package/build/convert/docs/types.d.ts +129 -0
- package/build/convert/docs/types.d.ts.map +1 -0
- package/build/convert/docs/types.js +2 -0
- package/build/convert/docs/types.js.map +1 -0
- package/build/convert/docs.d.ts +4 -0
- package/build/convert/docs.d.ts.map +1 -0
- package/build/convert/docs.js +9 -0
- package/build/convert/docs.js.map +1 -0
- package/build/convert/estimate/types.d.ts +77 -0
- package/build/convert/estimate/types.d.ts.map +1 -0
- package/build/convert/estimate/types.js +2 -0
- package/build/convert/estimate/types.js.map +1 -0
- package/build/convert/estimate.d.ts +11 -0
- package/build/convert/estimate.d.ts.map +1 -0
- package/build/convert/estimate.js +18 -0
- package/build/convert/estimate.js.map +1 -0
- package/build/convert/helpers.d.ts +14 -78
- package/build/convert/helpers.d.ts.map +1 -1
- package/build/convert/helpers.js +27 -300
- package/build/convert/helpers.js.map +1 -1
- package/build/convert/index.d.ts +15 -0
- package/build/convert/index.d.ts.map +1 -1
- package/build/convert/index.js +6 -0
- package/build/convert/index.js.map +1 -1
- package/build/convert/origin/types.d.ts +41 -0
- package/build/convert/origin/types.d.ts.map +1 -0
- package/build/convert/origin/types.js +2 -0
- package/build/convert/origin/types.js.map +1 -0
- package/build/convert/origin.d.ts +4 -0
- package/build/convert/origin.d.ts.map +1 -0
- package/build/convert/origin.js +25 -0
- package/build/convert/origin.js.map +1 -0
- package/build/convert/record/types.d.ts +98 -0
- package/build/convert/record/types.d.ts.map +1 -0
- package/build/convert/record/types.js +2 -0
- package/build/convert/record/types.js.map +1 -0
- package/build/convert/schemas.d.ts +7 -6
- package/build/convert/schemas.d.ts.map +1 -1
- package/build/convert/schemas.js +1 -5
- package/build/convert/schemas.js.map +1 -1
- package/build/convert/stage/types.d.ts +27 -0
- package/build/convert/stage/types.d.ts.map +1 -0
- package/build/convert/stage/types.js +2 -0
- package/build/convert/stage/types.js.map +1 -0
- package/build/convert/stage.d.ts +4 -0
- package/build/convert/stage.d.ts.map +1 -0
- package/build/convert/stage.js +25 -0
- package/build/convert/stage.js.map +1 -0
- package/build/convert/taxonomy/types.d.ts +71 -0
- package/build/convert/taxonomy/types.d.ts.map +1 -0
- package/build/convert/taxonomy/types.js +2 -0
- package/build/convert/taxonomy/types.js.map +1 -0
- package/build/convert/types.d.ts +1 -648
- package/build/convert/types.d.ts.map +1 -1
- package/build/convert/utils.d.ts +5 -0
- package/build/convert/utils.d.ts.map +1 -0
- package/build/convert/utils.js +6 -0
- package/build/convert/utils.js.map +1 -0
- package/build/design/consts.d.ts +37 -0
- package/build/design/consts.d.ts.map +1 -1
- package/build/design/consts.js +44 -8
- package/build/design/consts.js.map +1 -1
- package/build/design/helpers.d.ts +9 -49
- package/build/design/helpers.d.ts.map +1 -1
- package/build/design/helpers.js +17 -224
- package/build/design/helpers.js.map +1 -1
- package/build/design/index.d.ts +3 -0
- package/build/design/index.d.ts.map +1 -1
- package/build/design/index.js +1 -0
- package/build/design/index.js.map +1 -1
- package/build/design/runtime/types.d.ts +16 -0
- package/build/design/runtime/types.d.ts.map +1 -0
- package/build/design/runtime/types.js +2 -0
- package/build/design/runtime/types.js.map +1 -0
- package/build/design/runtime.d.ts +8 -105
- package/build/design/runtime.d.ts.map +1 -1
- package/build/design/runtime.js +13 -48
- package/build/design/runtime.js.map +1 -1
- package/build/design/schemas.d.ts +1 -9
- package/build/design/schemas.d.ts.map +1 -1
- package/build/design/schemas.js +1 -1
- package/build/design/schemas.js.map +1 -1
- package/build/design/story/types.d.ts +67 -0
- package/build/design/story/types.d.ts.map +1 -0
- package/build/design/story/types.js +2 -0
- package/build/design/story/types.js.map +1 -0
- package/build/design/story.d.ts +4 -0
- package/build/design/story.d.ts.map +1 -0
- package/build/design/story.js +184 -0
- package/build/design/story.js.map +1 -0
- package/build/design/types.d.ts +75 -1
- package/build/design/types.d.ts.map +1 -1
- package/build/dev/schemas.d.ts.map +1 -1
- package/build/dev/schemas.js.map +1 -1
- package/build/dev/types.local.d.ts +5 -0
- package/build/dev/types.local.d.ts.map +1 -0
- package/build/dev/types.local.js +2 -0
- package/build/dev/types.local.js.map +1 -0
- package/build/integrity/consts.d.ts +0 -117
- package/build/integrity/consts.d.ts.map +1 -1
- package/build/integrity/consts.js +0 -281
- package/build/integrity/consts.js.map +1 -1
- package/build/integrity/consts.local.d.ts +5 -0
- package/build/integrity/consts.local.d.ts.map +1 -0
- package/build/integrity/consts.local.js +5 -0
- package/build/integrity/consts.local.js.map +1 -0
- package/build/integrity/index.d.ts +5 -0
- package/build/integrity/index.d.ts.map +1 -1
- package/build/integrity/index.js +3 -0
- package/build/integrity/index.js.map +1 -1
- package/build/integrity/layout/consts.d.ts +59 -0
- package/build/integrity/layout/consts.d.ts.map +1 -0
- package/build/integrity/layout/consts.js +66 -0
- package/build/integrity/layout/consts.js.map +1 -0
- package/build/integrity/layout/consts.local.d.ts +18 -0
- package/build/integrity/layout/consts.local.d.ts.map +1 -0
- package/build/integrity/layout/consts.local.js +176 -0
- package/build/integrity/layout/consts.local.js.map +1 -0
- package/build/integrity/layout/types.d.ts +35 -0
- package/build/integrity/layout/types.d.ts.map +1 -0
- package/build/integrity/layout/types.js +2 -0
- package/build/integrity/layout/types.js.map +1 -0
- package/build/integrity/layout.d.ts +4 -0
- package/build/integrity/layout.d.ts.map +1 -0
- package/build/integrity/layout.js +25 -0
- package/build/integrity/layout.js.map +1 -0
- package/build/integrity/types.d.ts +36 -2
- package/build/integrity/types.d.ts.map +1 -1
- package/build/integrity/utils.d.ts +13 -0
- package/build/integrity/utils.d.ts.map +1 -0
- package/build/integrity/utils.js +12 -0
- package/build/integrity/utils.js.map +1 -0
- package/build/integrity/verify/types.d.ts +26 -0
- package/build/integrity/verify/types.d.ts.map +1 -0
- package/build/integrity/verify/types.js +2 -0
- package/build/integrity/verify/types.js.map +1 -0
- package/build/integrity/verify.d.ts +5 -19
- package/build/integrity/verify.d.ts.map +1 -1
- package/build/integrity/verify.js +165 -175
- package/build/integrity/verify.js.map +1 -1
- package/build/intent/consts.d.ts +16 -0
- package/build/intent/consts.d.ts.map +1 -1
- package/build/intent/consts.js +63 -0
- package/build/intent/consts.js.map +1 -1
- package/build/intent/entrypoints.d.ts +2 -12
- package/build/intent/entrypoints.d.ts.map +1 -1
- package/build/intent/entrypoints.js.map +1 -1
- package/build/intent/index.d.ts +0 -1
- package/build/intent/index.d.ts.map +1 -1
- package/build/intent/index.js +0 -1
- package/build/intent/index.js.map +1 -1
- package/build/intent/types.d.ts +13 -0
- package/build/intent/types.d.ts.map +1 -1
- package/build/metadata/consts.d.ts +33 -0
- package/build/metadata/consts.d.ts.map +1 -1
- package/build/metadata/consts.js +37 -0
- package/build/metadata/consts.js.map +1 -1
- package/build/metadata/types.d.ts +1 -33
- package/build/metadata/types.d.ts.map +1 -1
- package/build/metadata/types.js +1 -38
- package/build/metadata/types.js.map +1 -1
- package/build/moderation/index.d.ts +2 -0
- package/build/moderation/index.d.ts.map +1 -1
- package/build/moderation/index.js +1 -0
- package/build/moderation/index.js.map +1 -1
- package/build/moderation/utils.d.ts +3 -15
- package/build/moderation/utils.d.ts.map +1 -1
- package/build/moderation/utils.js +5 -30
- package/build/moderation/utils.js.map +1 -1
- package/build/moderation/verdict/types.d.ts +24 -0
- package/build/moderation/verdict/types.d.ts.map +1 -0
- package/build/moderation/verdict/types.js +2 -0
- package/build/moderation/verdict/types.js.map +1 -0
- package/build/moderation/verdict.d.ts +4 -0
- package/build/moderation/verdict.d.ts.map +1 -0
- package/build/moderation/verdict.js +21 -0
- package/build/moderation/verdict.js.map +1 -0
- package/build/planning/card/types.d.ts +42 -0
- package/build/planning/card/types.d.ts.map +1 -0
- package/build/planning/card/types.js +2 -0
- package/build/planning/card/types.js.map +1 -0
- package/build/planning/card.d.ts +4 -0
- package/build/planning/card.d.ts.map +1 -0
- package/build/planning/card.js +51 -0
- package/build/planning/card.js.map +1 -0
- package/build/planning/consts.d.ts +13 -1
- package/build/planning/consts.d.ts.map +1 -1
- package/build/planning/consts.js +13 -0
- package/build/planning/consts.js.map +1 -1
- package/build/planning/helpers.d.ts +11 -37
- package/build/planning/helpers.d.ts.map +1 -1
- package/build/planning/helpers.js +24 -103
- package/build/planning/helpers.js.map +1 -1
- package/build/planning/index.d.ts +5 -1
- package/build/planning/index.d.ts.map +1 -1
- package/build/planning/index.js +2 -1
- package/build/planning/index.js.map +1 -1
- package/build/planning/landing/types.d.ts +16 -0
- package/build/planning/landing/types.d.ts.map +1 -0
- package/build/planning/landing/types.js +2 -0
- package/build/planning/landing/types.js.map +1 -0
- package/build/planning/landing.d.ts +5 -22
- package/build/planning/landing.d.ts.map +1 -1
- package/build/planning/landing.js +21 -35
- package/build/planning/landing.js.map +1 -1
- package/build/planning/schemas.d.ts +33 -0
- package/build/planning/schemas.d.ts.map +1 -1
- package/build/planning/schemas.js +173 -4
- package/build/planning/schemas.js.map +1 -1
- package/build/planning/spec/types.d.ts +22 -0
- package/build/planning/spec/types.d.ts.map +1 -0
- package/build/planning/spec/types.js +2 -0
- package/build/planning/spec/types.js.map +1 -0
- package/build/planning/spec.d.ts +4 -0
- package/build/planning/spec.d.ts.map +1 -0
- package/build/planning/spec.js +30 -0
- package/build/planning/spec.js.map +1 -0
- package/build/planning/types.d.ts +6 -5
- package/build/planning/types.d.ts.map +1 -1
- package/build/preview/consts.d.ts +3 -1
- package/build/preview/consts.d.ts.map +1 -1
- package/build/preview/consts.js +2 -0
- package/build/preview/consts.js.map +1 -1
- package/build/preview/types.d.ts +17 -2
- package/build/preview/types.d.ts.map +1 -1
- package/build/scaffold/consts.d.ts +40 -1
- package/build/scaffold/consts.d.ts.map +1 -1
- package/build/scaffold/consts.js +52 -0
- package/build/scaffold/consts.js.map +1 -1
- package/build/scaffold/helpers.d.ts +5 -30
- package/build/scaffold/helpers.d.ts.map +1 -1
- package/build/scaffold/helpers.js +9 -53
- package/build/scaffold/helpers.js.map +1 -1
- package/build/scaffold/index.d.ts +4 -0
- package/build/scaffold/index.d.ts.map +1 -1
- package/build/scaffold/index.js +2 -0
- package/build/scaffold/index.js.map +1 -1
- package/build/scaffold/landing/types.d.ts +48 -0
- package/build/scaffold/landing/types.d.ts.map +1 -0
- package/build/scaffold/landing/types.js +2 -0
- package/build/scaffold/landing/types.js.map +1 -0
- package/build/scaffold/landing.d.ts +4 -0
- package/build/scaffold/landing.d.ts.map +1 -0
- package/build/scaffold/landing.js +95 -0
- package/build/scaffold/landing.js.map +1 -0
- package/build/scaffold/schemas.d.ts +3 -2
- package/build/scaffold/schemas.d.ts.map +1 -1
- package/build/scaffold/schemas.js +177 -7
- package/build/scaffold/schemas.js.map +1 -1
- package/build/scaffold/share/types.d.ts +35 -0
- package/build/scaffold/share/types.d.ts.map +1 -0
- package/build/scaffold/share/types.js +2 -0
- package/build/scaffold/share/types.js.map +1 -0
- package/build/scaffold/share.d.ts +4 -0
- package/build/scaffold/share.d.ts.map +1 -0
- package/build/scaffold/share.js +42 -0
- package/build/scaffold/share.js.map +1 -0
- package/build/scaffold/types.d.ts +114 -2
- package/build/scaffold/types.d.ts.map +1 -1
- package/build/skills/consts.d.ts +42 -0
- package/build/skills/consts.d.ts.map +1 -1
- package/build/skills/consts.js +43 -0
- package/build/skills/consts.js.map +1 -1
- package/build/skills/index.d.ts +0 -1
- package/build/skills/index.d.ts.map +1 -1
- package/build/skills/index.js +0 -1
- package/build/skills/index.js.map +1 -1
- package/build/slot/command/types.d.ts +21 -0
- package/build/slot/command/types.d.ts.map +1 -0
- package/build/slot/command/types.js +2 -0
- package/build/slot/command/types.js.map +1 -0
- package/build/slot/command.d.ts +4 -0
- package/build/slot/command.d.ts.map +1 -0
- package/build/slot/command.js +31 -0
- package/build/slot/command.js.map +1 -0
- package/build/slot/consts.d.ts +7 -13
- package/build/slot/consts.d.ts.map +1 -1
- package/build/slot/consts.js +10 -36
- package/build/slot/consts.js.map +1 -1
- package/build/slot/helpers.d.ts +3 -22
- package/build/slot/helpers.d.ts.map +1 -1
- package/build/slot/helpers.js +5 -26
- package/build/slot/helpers.js.map +1 -1
- package/build/slot/index.d.ts +6 -0
- package/build/slot/index.d.ts.map +1 -1
- package/build/slot/index.js +3 -0
- package/build/slot/index.js.map +1 -1
- package/build/slot/layout/types.d.ts +17 -0
- package/build/slot/layout/types.d.ts.map +1 -0
- package/build/slot/layout/types.js +2 -0
- package/build/slot/layout/types.js.map +1 -0
- package/build/slot/layout.d.ts +5 -66
- package/build/slot/layout.d.ts.map +1 -1
- package/build/slot/layout.js +13 -27
- package/build/slot/layout.js.map +1 -1
- package/build/slot/origin/types.d.ts +23 -0
- package/build/slot/origin/types.d.ts.map +1 -0
- package/build/slot/origin/types.js +2 -0
- package/build/slot/origin/types.js.map +1 -0
- package/build/slot/origin.d.ts +4 -0
- package/build/slot/origin.d.ts.map +1 -0
- package/build/slot/origin.js +15 -0
- package/build/slot/origin.js.map +1 -0
- package/build/slot/types.d.ts +55 -1
- package/build/slot/types.d.ts.map +1 -1
- package/build/slot/utils.d.ts +6 -0
- package/build/slot/utils.d.ts.map +1 -0
- package/build/slot/utils.js +6 -0
- package/build/slot/utils.js.map +1 -0
- package/build/topology/card/types.d.ts +21 -0
- package/build/topology/card/types.d.ts.map +1 -0
- package/build/topology/card/types.js +2 -0
- package/build/topology/card/types.js.map +1 -0
- package/build/topology/card.d.ts +7 -19
- package/build/topology/card.d.ts.map +1 -1
- package/build/topology/card.js +84 -89
- package/build/topology/card.js.map +1 -1
- package/build/topology/consts.local.d.ts +4 -0
- package/build/topology/consts.local.d.ts.map +1 -0
- package/build/topology/consts.local.js +4 -0
- package/build/topology/consts.local.js.map +1 -0
- package/build/topology/helpers.d.ts +7 -33
- package/build/topology/helpers.d.ts.map +1 -1
- package/build/topology/helpers.js +15 -111
- package/build/topology/helpers.js.map +1 -1
- package/build/topology/index.d.ts +3 -0
- package/build/topology/index.d.ts.map +1 -1
- package/build/topology/index.js +1 -0
- package/build/topology/index.js.map +1 -1
- package/build/topology/resolve/types.d.ts +47 -0
- package/build/topology/resolve/types.d.ts.map +1 -0
- package/build/topology/resolve/types.js +2 -0
- package/build/topology/resolve/types.js.map +1 -0
- package/build/topology/resolve.d.ts +4 -0
- package/build/topology/resolve.d.ts.map +1 -0
- package/build/topology/resolve.js +89 -0
- package/build/topology/resolve.js.map +1 -0
- package/build/topology/types.d.ts +5 -0
- package/build/topology/types.d.ts.map +1 -1
- package/package.json +13 -13
- package/src/agent/consts.local.ts +47 -0
- package/src/agent/consts.ts +61 -0
- package/src/agent/index.ts +2 -0
- package/src/agent/presentation/types.ts +21 -0
- package/src/agent/presentation.ts +200 -309
- package/src/agent/types.local.ts +3 -0
- package/src/agent/types.ts +40 -0
- package/src/areas/consts.ts +7 -0
- package/src/areas/index.ts +1 -0
- package/src/areas/tenancy/types.ts +23 -0
- package/src/areas/tenancy.ts +26 -61
- package/src/areas/types.ts +31 -0
- package/src/ba/connecting/types.ts +45 -0
- package/src/ba/connecting.ts +64 -0
- package/src/ba/helpers.ts +8 -92
- package/src/ba/index.ts +2 -0
- package/src/ba/types.ts +1 -1
- package/src/blueprint/consts.local.ts +3 -0
- package/src/blueprint/consts.ts +52 -0
- package/src/blueprint/index.ts +1 -0
- package/src/blueprint/types.ts +4 -74
- package/src/blueprint/utils.ts +20 -0
- package/src/branding.ts +0 -17
- package/src/connect/branding/types.ts +29 -0
- package/src/connect/consts.ts +3 -22
- package/src/connect/conversion/types.ts +96 -0
- package/src/connect/entrypoints/types.ts +25 -0
- package/src/connect/entrypoints.ts +18 -35
- package/src/connect/errors/types.ts +22 -0
- package/src/connect/errors.ts +75 -0
- package/src/connect/index.ts +13 -2
- package/src/connect/kit/types.ts +56 -0
- package/src/connect/model-tier/types.ts +16 -0
- package/src/connect/model-tier.ts +22 -0
- package/src/connect/{ops.ts → ops/types.ts} +13 -3
- package/src/connect/pipeline/types.ts +41 -0
- package/src/connect/project/types.ts +127 -0
- package/src/connect/references/types.local.ts +5 -0
- package/src/connect/references/types.ts +73 -0
- package/src/connect/references.ts +15 -75
- package/src/connect/schemas.ts +19 -12
- package/src/connect/session/types.ts +81 -0
- package/src/connect/settings/types.ts +52 -0
- package/src/consts.ts +17 -0
- package/src/convert/analysis/types.ts +89 -0
- package/src/convert/census/consts.local.ts +120 -0
- package/src/convert/census/types.ts +181 -0
- package/src/convert/census.ts +95 -0
- package/src/convert/consts.ts +5 -14
- package/src/convert/detection/types.ts +74 -0
- package/src/convert/docs/types.ts +151 -0
- package/src/convert/docs.ts +15 -0
- package/src/convert/estimate/types.ts +75 -0
- package/src/convert/estimate.ts +19 -0
- package/src/convert/helpers.ts +29 -328
- package/src/convert/index.ts +15 -0
- package/src/convert/origin/types.ts +43 -0
- package/src/convert/origin.ts +33 -0
- package/src/convert/record/types.ts +105 -0
- package/src/convert/schemas.ts +13 -12
- package/src/convert/stage/types.ts +27 -0
- package/src/convert/stage.ts +31 -0
- package/src/convert/taxonomy/types.ts +74 -0
- package/src/convert/types.ts +5 -703
- package/src/convert/utils.ts +7 -0
- package/src/design/consts.ts +48 -0
- package/src/design/helpers.ts +20 -245
- package/src/design/index.ts +3 -0
- package/src/design/runtime/types.ts +14 -0
- package/src/design/runtime.ts +18 -116
- package/src/design/schemas.ts +2 -10
- package/src/design/story/types.ts +67 -0
- package/src/design/story.ts +221 -0
- package/src/design/types.ts +81 -1
- package/src/dev/schemas.ts +1 -3
- package/src/dev/types.local.ts +4 -0
- package/src/integrity/consts.local.ts +5 -0
- package/src/integrity/consts.ts +0 -348
- package/src/integrity/index.ts +5 -0
- package/src/integrity/layout/consts.local.ts +188 -0
- package/src/integrity/layout/consts.ts +79 -0
- package/src/integrity/layout/types.ts +35 -0
- package/src/integrity/layout.ts +39 -0
- package/src/integrity/types.ts +37 -2
- package/src/integrity/utils.ts +21 -0
- package/src/integrity/verify/types.ts +26 -0
- package/src/integrity/verify.ts +178 -184
- package/src/intent/consts.ts +67 -0
- package/src/intent/entrypoints.ts +2 -3
- package/src/intent/index.ts +0 -1
- package/src/intent/types.ts +10 -0
- package/src/metadata/consts.ts +37 -0
- package/src/metadata/types.ts +1 -37
- package/src/moderation/index.ts +2 -0
- package/src/moderation/utils.ts +7 -30
- package/src/moderation/verdict/types.ts +22 -0
- package/src/moderation/verdict.ts +28 -0
- package/src/planning/card/types.ts +44 -0
- package/src/planning/card.ts +77 -0
- package/src/planning/consts.ts +15 -2
- package/src/planning/helpers.ts +28 -116
- package/src/planning/index.ts +5 -1
- package/src/planning/landing/types.ts +15 -0
- package/src/planning/landing.ts +28 -38
- package/src/planning/schemas.ts +191 -4
- package/src/planning/spec/types.ts +22 -0
- package/src/planning/spec.ts +41 -0
- package/src/planning/types.ts +6 -6
- package/src/preview/consts.ts +2 -0
- package/src/preview/types.ts +19 -0
- package/src/scaffold/consts.ts +65 -1
- package/src/scaffold/helpers.ts +14 -80
- package/src/scaffold/index.ts +4 -0
- package/src/scaffold/landing/types.ts +48 -0
- package/src/scaffold/landing.ts +120 -0
- package/src/scaffold/schemas.ts +183 -7
- package/src/scaffold/share/types.ts +35 -0
- package/src/scaffold/share.ts +60 -0
- package/src/scaffold/types.ts +123 -1
- package/src/skills/consts.ts +46 -0
- package/src/skills/index.ts +0 -1
- package/src/slot/command/types.ts +21 -0
- package/src/slot/command.ts +38 -0
- package/src/slot/consts.ts +11 -40
- package/src/slot/helpers.ts +6 -31
- package/src/slot/index.ts +6 -0
- package/src/slot/layout/types.ts +17 -0
- package/src/slot/layout.ts +19 -77
- package/src/slot/origin/types.ts +23 -0
- package/src/slot/origin.ts +20 -0
- package/src/slot/types.ts +58 -1
- package/src/slot/utils.ts +10 -0
- package/src/topology/card/types.ts +21 -0
- package/src/topology/card.ts +85 -90
- package/src/topology/consts.local.ts +6 -0
- package/src/topology/helpers.ts +20 -125
- package/src/topology/index.ts +3 -0
- package/src/topology/resolve/types.ts +47 -0
- package/src/topology/resolve.ts +118 -0
- package/src/topology/types.ts +6 -0
- package/tests/blueprint.spec.ts +1 -2
- package/tests/branding.spec.ts +2 -2
- package/tests/connect-convert.spec.ts +21 -1
- package/tests/connect-errors.spec.ts +34 -1
- package/tests/convert.spec.ts +51 -52
- package/tests/design.spec.ts +13 -16
- package/tests/error-status.spec.ts +7 -1
- package/tests/planning.spec.ts +58 -75
- package/tests/presentation.spec.ts +21 -23
- package/tests/scaffold.spec.ts +286 -6
- package/tests/tenancy.spec.ts +21 -21
- package/build/connect/ops.d.ts.map +0 -1
- package/build/connect/ops.js +0 -2
- package/build/connect/ops.js.map +0 -1
- package/build/connect/types.d.ts +0 -437
- package/build/connect/types.d.ts.map +0 -1
- package/build/intent/flow.d.ts +0 -17
- package/build/intent/flow.d.ts.map +0 -1
- package/build/intent/flow.js +0 -65
- package/build/intent/flow.js.map +0 -1
- package/build/planning/flows.d.ts +0 -34
- package/build/planning/flows.d.ts.map +0 -1
- package/build/planning/flows.js +0 -174
- package/build/planning/flows.js.map +0 -1
- package/build/skills/roles.d.ts +0 -43
- package/build/skills/roles.d.ts.map +0 -1
- package/build/skills/roles.js +0 -44
- package/build/skills/roles.js.map +0 -1
- package/src/connect/types.ts +0 -466
- package/src/intent/flow.ts +0 -67
- package/src/planning/flows.ts +0 -204
- package/src/skills/roles.ts +0 -46
- /package/build/{connect → agent/presentation}/types.js +0 -0
|
@@ -1,49 +1,47 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test'
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
AgentStructuredKind, classifyAgentMessage, isAgentMessageHidden,
|
|
5
|
-
} from '../src/agent/presentation.js'
|
|
2
|
+
import { agentPresentationHelper } from '../src/agent/presentation.js'
|
|
3
|
+
import { AgentCodeLanguage, AgentMarkdownKind, AgentMessageCategory, AgentMessageRole, AgentStructuredKind } from '../src/agent/consts.js'
|
|
6
4
|
|
|
7
5
|
describe('@owlmeans/viable-common — agent message presentation', () => {
|
|
8
6
|
test('classifies source and unified diffs with their display language', () => {
|
|
9
|
-
expect(classifyAgentMessage({ action: 'code', text: 'export const App = () => <main />' }))
|
|
7
|
+
expect(agentPresentationHelper.classifyAgentMessage({ action: 'code', text: 'export const App = () => <main />' }))
|
|
10
8
|
.toMatchObject({ category: AgentMessageCategory.Code, language: AgentCodeLanguage.ReactTsx })
|
|
11
|
-
expect(classifyAgentMessage({ action: 'update-code', text: '--- a/app.css\n+++ b/app.css\n@@ -1 +1 @@\n-.old {}\n+.new {}' }))
|
|
9
|
+
expect(agentPresentationHelper.classifyAgentMessage({ action: 'update-code', text: '--- a/app.css\n+++ b/app.css\n@@ -1 +1 @@\n-.old {}\n+.new {}' }))
|
|
12
10
|
.toMatchObject({ category: AgentMessageCategory.Diff, language: AgentCodeLanguage.Css })
|
|
13
|
-
expect(classifyAgentMessage({ text: '{"ready": true}' }))
|
|
11
|
+
expect(agentPresentationHelper.classifyAgentMessage({ text: '{"ready": true}' }))
|
|
14
12
|
.toMatchObject({ category: AgentMessageCategory.Code, language: AgentCodeLanguage.Json })
|
|
15
13
|
})
|
|
16
14
|
|
|
17
15
|
test('unwraps schema tool calls into semantic cards instead of a JSON fallback', () => {
|
|
18
|
-
expect(classifyAgentMessage({
|
|
16
|
+
expect(agentPresentationHelper.classifyAgentMessage({
|
|
19
17
|
outputType: 'tool_calls',
|
|
20
18
|
action: 'choose-files-for-fix',
|
|
21
19
|
value: [{ name: 'answer', args: { files: ['src/app.tsx'], why: 'screen entrypoint' } }],
|
|
22
20
|
})).toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.ArtifactSelection })
|
|
23
|
-
expect(classifyAgentMessage({ value: { actor: 'human', worker: false, jobs: [], agents: [], kv: false } }))
|
|
21
|
+
expect(agentPresentationHelper.classifyAgentMessage({ value: { actor: 'human', worker: false, jobs: [], agents: [], kv: false } }))
|
|
24
22
|
.toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.RuntimeDecision })
|
|
25
23
|
// The model's own runtime-decision call never carries `actor`/`worker` — those are added only
|
|
26
24
|
// once the decision is persisted onto a StoryDesign.
|
|
27
|
-
expect(classifyAgentMessage({ value: { kv: true, feedback: null, jobs: [], agents: [] } }))
|
|
25
|
+
expect(agentPresentationHelper.classifyAgentMessage({ value: { kv: true, feedback: null, jobs: [], agents: [] } }))
|
|
28
26
|
.toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.RuntimeDecision })
|
|
29
27
|
// A scaffold plan carries its own `stories` array — checked ahead of StoryPlan's bare check.
|
|
30
|
-
expect(classifyAgentMessage({
|
|
28
|
+
expect(agentPresentationHelper.classifyAgentMessage({
|
|
31
29
|
value: { identity: { name: 'App', description: '' }, guestHome: {}, areas: [], stories: [], motifs: '' },
|
|
32
30
|
})).toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.ScaffoldPlan })
|
|
33
|
-
expect(classifyAgentMessage({ value: { unknown: ['still', 'readable'] } }))
|
|
31
|
+
expect(agentPresentationHelper.classifyAgentMessage({ value: { unknown: ['still', 'readable'] } }))
|
|
34
32
|
.toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.GenericRecord })
|
|
35
33
|
})
|
|
36
34
|
|
|
37
35
|
test('routes unconstrained tool-calling loops to ToolCalls even when args shape-match a schema', () => {
|
|
38
36
|
// A single free-flight file read whose args happen to carry `files` — without the action
|
|
39
37
|
// check this reads as an ArtifactSelection card instead of a tool call.
|
|
40
|
-
expect(classifyAgentMessage({
|
|
38
|
+
expect(agentPresentationHelper.classifyAgentMessage({
|
|
41
39
|
outputType: 'tool_calls',
|
|
42
40
|
action: 'coding-agent-ask',
|
|
43
41
|
value: [{ name: 'read_sources', args: { files: ['src/app.tsx'] } }],
|
|
44
42
|
})).toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.ToolCalls })
|
|
45
43
|
// Several calls in the same turn are always ToolCalls, regardless of action.
|
|
46
|
-
expect(classifyAgentMessage({
|
|
44
|
+
expect(agentPresentationHelper.classifyAgentMessage({
|
|
47
45
|
outputType: 'tool_calls',
|
|
48
46
|
value: [
|
|
49
47
|
{ name: 'read_file', args: { path: 'a.ts' } },
|
|
@@ -52,34 +50,34 @@ describe('@owlmeans/viable-common — agent message presentation', () => {
|
|
|
52
50
|
})).toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.ToolCalls })
|
|
53
51
|
// A single call whose args shape-match nothing known stays ToolCalls rather than falling
|
|
54
52
|
// through to a generic JSON dump.
|
|
55
|
-
expect(classifyAgentMessage({
|
|
53
|
+
expect(agentPresentationHelper.classifyAgentMessage({
|
|
56
54
|
outputType: 'tool_calls',
|
|
57
55
|
value: [{ name: 'run_bun', args: { args: 'install' } }],
|
|
58
56
|
})).toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.ToolCalls })
|
|
59
57
|
})
|
|
60
58
|
|
|
61
59
|
test('uses producer metadata for roles and action metadata for documents and decisions', () => {
|
|
62
|
-
expect(classifyAgentMessage({ agent: 'ba-service', helper: 'ba-helper', action: 'write-specification', text: '# Brief' }))
|
|
60
|
+
expect(agentPresentationHelper.classifyAgentMessage({ agent: 'ba-service', helper: 'ba-helper', action: 'write-specification', text: '# Brief' }))
|
|
63
61
|
.toMatchObject({ category: AgentMessageCategory.Markdown, document: AgentMarkdownKind.Specification, role: AgentMessageRole.Analytical })
|
|
64
|
-
expect(classifyAgentMessage({ agent: 'ui-helper', action: 'describe-ui-screen', text: '## Layout' }))
|
|
62
|
+
expect(agentPresentationHelper.classifyAgentMessage({ agent: 'ui-helper', action: 'describe-ui-screen', text: '## Layout' }))
|
|
65
63
|
.toMatchObject({ role: AgentMessageRole.VisualDesign })
|
|
66
|
-
expect(classifyAgentMessage({ agent: 'api-helper', action: 'should-update-handler', text: 'true' }))
|
|
64
|
+
expect(agentPresentationHelper.classifyAgentMessage({ agent: 'api-helper', action: 'should-update-handler', text: 'true' }))
|
|
67
65
|
.toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.Decision, role: AgentMessageRole.Architect })
|
|
68
|
-
expect(classifyAgentMessage({ agent: 'runtime-architect', action: 'runtime-gate' }))
|
|
66
|
+
expect(agentPresentationHelper.classifyAgentMessage({ agent: 'runtime-architect', action: 'runtime-gate' }))
|
|
69
67
|
.toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.RuntimeDecision, role: AgentMessageRole.Architect })
|
|
70
|
-
expect(classifyAgentMessage({ helper: 'navigation-analyst', action: 'detect-story-with-home-screen' }))
|
|
68
|
+
expect(agentPresentationHelper.classifyAgentMessage({ helper: 'navigation-analyst', action: 'detect-story-with-home-screen' }))
|
|
71
69
|
.toMatchObject({ category: AgentMessageCategory.Structured, structure: AgentStructuredKind.CandidateRanking, role: AgentMessageRole.Analytical })
|
|
72
70
|
})
|
|
73
71
|
|
|
74
72
|
test('keeps ordinary conversation as plain text', () => {
|
|
75
|
-
expect(classifyAgentMessage({ agent: 'client', action: 'prompt', text: 'Please add a dashboard.' }))
|
|
73
|
+
expect(agentPresentationHelper.classifyAgentMessage({ agent: 'client', action: 'prompt', text: 'Please add a dashboard.' }))
|
|
76
74
|
.toEqual({ category: AgentMessageCategory.Plain, role: AgentMessageRole.Technical })
|
|
77
75
|
})
|
|
78
76
|
|
|
79
77
|
test('hides source-extractor range selections from the user-facing journal', () => {
|
|
80
|
-
expect(isAgentMessageHidden({ action: 'source-extract', value: [{
|
|
78
|
+
expect(agentPresentationHelper.isAgentMessageHidden({ action: 'source-extract', value: [{
|
|
81
79
|
name: 'select_ranges', args: { ranges: [{ start: 12, end: 18 }] },
|
|
82
80
|
}] })).toBe(true)
|
|
83
|
-
expect(isAgentMessageHidden({ action: 'declaration-lookup' })).toBe(false)
|
|
81
|
+
expect(agentPresentationHelper.isAgentMessageHidden({ action: 'declaration-lookup' })).toBe(false)
|
|
84
82
|
})
|
|
85
83
|
})
|
package/tests/scaffold.spec.ts
CHANGED
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test'
|
|
2
2
|
import Ajv from 'ajv'
|
|
3
|
-
import { validateSpecificationBody } from '@owlmeans/planning'
|
|
4
3
|
import { ProjectArea } from '../src/areas/consts.js'
|
|
5
4
|
import { ViableSpecCategory, VIABLE_PROJECT_SLOTS } from '../src/planning/index.js'
|
|
6
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
BENTO_FRAGMENT_KINDS, LANDING_ANCHOR_BAND, LANDING_ANCHORS, LANDING_BAND_ORDER, LANDING_GATE_FIELD_KINDS,
|
|
7
|
+
LANDING_GATE_SLOTS, LANDING_SLOTS, WidgetKind,
|
|
8
|
+
} from '../src/scaffold/consts.js'
|
|
9
|
+
import { landingPlanHelper } from '../src/scaffold/landing.js'
|
|
10
|
+
import * as barrel from '../src/index.js'
|
|
7
11
|
import { ScaffoldPlanAnswerSchema, ScaffoldPlanSchema } from '../src/scaffold/schemas.js'
|
|
8
|
-
import type { ScaffoldPlan } from '../src/scaffold/types.js'
|
|
12
|
+
import type { GuestHomePlan, ScaffoldPlan } from '../src/scaffold/types.js'
|
|
13
|
+
import { validateHelper } from '@owlmeans/planning'
|
|
9
14
|
|
|
10
15
|
/**
|
|
11
16
|
* The scaffold plan's schema is TWO things at once: the shape a model answers with, and the
|
|
@@ -104,12 +109,12 @@ describe('viable-common - the scaffold plan schema', () => {
|
|
|
104
109
|
|
|
105
110
|
test('a plan stored before the landing overhaul still validates', () => {
|
|
106
111
|
expect(validate(oldPlan()), JSON.stringify(validate.errors)).toBe(true)
|
|
107
|
-
expect(() => validateSpecificationBody(slot, JSON.stringify(oldPlan()))).not.toThrow()
|
|
112
|
+
expect(() => validateHelper.validateSpecificationBody(slot, JSON.stringify(oldPlan()))).not.toThrow()
|
|
108
113
|
})
|
|
109
114
|
|
|
110
115
|
test('a plan carrying every new field validates', () => {
|
|
111
116
|
expect(validate(newPlan()), JSON.stringify(validate.errors)).toBe(true)
|
|
112
|
-
expect(() => validateSpecificationBody(slot, JSON.stringify(newPlan()))).not.toThrow()
|
|
117
|
+
expect(() => validateHelper.validateSpecificationBody(slot, JSON.stringify(newPlan()))).not.toThrow()
|
|
113
118
|
})
|
|
114
119
|
|
|
115
120
|
test('a provider that spells an unset optional as null is accepted', () => {
|
|
@@ -144,7 +149,7 @@ describe('viable-common - the scaffold plan schema', () => {
|
|
|
144
149
|
stored.guestHome.gate = legacyGate()
|
|
145
150
|
|
|
146
151
|
expect(validate(stored), JSON.stringify(validate.errors)).toBe(true)
|
|
147
|
-
expect(() => validateSpecificationBody(slot, JSON.stringify(stored))).not.toThrow()
|
|
152
|
+
expect(() => validateHelper.validateSpecificationBody(slot, JSON.stringify(stored))).not.toThrow()
|
|
148
153
|
})
|
|
149
154
|
|
|
150
155
|
test('a field kind nothing can draw is refused', () => {
|
|
@@ -189,3 +194,278 @@ describe('viable-common - the scaffold plan the model answers', () => {
|
|
|
189
194
|
expect(text).not.toContain('maxItems')
|
|
190
195
|
})
|
|
191
196
|
})
|
|
197
|
+
|
|
198
|
+
const BASIS = 'bakers who want the full method'
|
|
199
|
+
|
|
200
|
+
/** A plan carrying every key the gated landing page added. */
|
|
201
|
+
const landingPlan = (): ScaffoldPlan => {
|
|
202
|
+
const plan = newPlan()
|
|
203
|
+
|
|
204
|
+
return {
|
|
205
|
+
...plan,
|
|
206
|
+
guestHome: {
|
|
207
|
+
...plan.guestHome,
|
|
208
|
+
testimonials: [
|
|
209
|
+
{ quote: 'I found a rye loaf.', name: 'Mara L.', role: 'Home baker' },
|
|
210
|
+
{ quote: 'The notes saved my bake.', name: 'Jon K.', role: 'Weekend baker' },
|
|
211
|
+
],
|
|
212
|
+
useCases: {
|
|
213
|
+
cases: [
|
|
214
|
+
{ audience: 'Home bakers', title: 'Bake from the pantry', text: 'Use what is at hand.' },
|
|
215
|
+
{ audience: 'Teachers', title: 'Run a class', text: 'Share one method.' },
|
|
216
|
+
{ audience: 'Clubs', title: 'Swap bakes', text: 'Trade notes.' },
|
|
217
|
+
],
|
|
218
|
+
basis: BASIS,
|
|
219
|
+
},
|
|
220
|
+
differentiator: {
|
|
221
|
+
title: 'The method, not the photo', text: 'Every bake carries its full method.',
|
|
222
|
+
contrast: [{ usual: 'A photo', ours: 'The full method' }, { usual: 'Guesswork', ours: 'Notes' }],
|
|
223
|
+
usualLabel: 'Usually', oursLabel: 'With us', basis: BASIS,
|
|
224
|
+
},
|
|
225
|
+
approach: {
|
|
226
|
+
title: 'Honest notes.',
|
|
227
|
+
principles: [
|
|
228
|
+
{ title: 'Real bakes', text: 'Made at home.' },
|
|
229
|
+
{ title: 'Full methods', text: 'Nothing skipped.' },
|
|
230
|
+
{ title: 'Credit bakers', text: 'Names stay on.' },
|
|
231
|
+
],
|
|
232
|
+
basis: BASIS,
|
|
233
|
+
},
|
|
234
|
+
about: { title: 'Who we are', text: 'Bakers sharing bakes.', basis: BASIS },
|
|
235
|
+
labels: {
|
|
236
|
+
...plan.guestHome.labels,
|
|
237
|
+
useCases: 'Who it is for', useCasesTitle: 'Made for bakers.', differentiator: 'Why us',
|
|
238
|
+
approach: 'How we work', approachTitle: 'Small batches.', about: 'About',
|
|
239
|
+
},
|
|
240
|
+
menu: [{ anchor: 'how', label: 'Steps' }, { anchor: 'why', label: 'Why' }, { anchor: 'about', label: 'Us' }],
|
|
241
|
+
links: [{ slot: 'hero.browse', story: 'US-ABC12' }, { slot: 'useCase.1', story: 'US-ABC12' }],
|
|
242
|
+
},
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
/** The new optional keys of the guest home and of its labels. */
|
|
247
|
+
const NEW_HOME_KEYS = ['testimonials', 'useCases', 'differentiator', 'approach', 'about', 'menu', 'links'] as const
|
|
248
|
+
const NEW_LABEL_KEYS = ['useCases', 'useCasesTitle', 'differentiator', 'approach', 'approachTitle', 'about'] as const
|
|
249
|
+
|
|
250
|
+
describe('viable-common - the gated landing page in the scaffold plan schema', () => {
|
|
251
|
+
const validate = new Ajv({ strict: false, allErrors: true }).compile(ScaffoldPlanSchema)
|
|
252
|
+
const answer = new Ajv({ strict: false, allErrors: true }).compile(ScaffoldPlanAnswerSchema)
|
|
253
|
+
const slot = VIABLE_PROJECT_SLOTS.find(entry => entry.category === ViableSpecCategory.Scaffold)!
|
|
254
|
+
|
|
255
|
+
test('an old stored plan and a plan with every new key both validate, stored and answered', () => {
|
|
256
|
+
expect(validate(oldPlan()), JSON.stringify(validate.errors)).toBe(true)
|
|
257
|
+
expect(validate(landingPlan()), JSON.stringify(validate.errors)).toBe(true)
|
|
258
|
+
expect(() => validateHelper.validateSpecificationBody(slot, JSON.stringify(landingPlan()))).not.toThrow()
|
|
259
|
+
expect(answer(landingPlan()), JSON.stringify(answer.errors)).toBe(true)
|
|
260
|
+
})
|
|
261
|
+
|
|
262
|
+
test('every new optional key accepts null', () => {
|
|
263
|
+
for (const key of NEW_HOME_KEYS) {
|
|
264
|
+
const plan = landingPlan() as unknown as { guestHome: Record<string, unknown> }
|
|
265
|
+
plan.guestHome[key] = null
|
|
266
|
+
expect(validate(plan), `${key}: ${JSON.stringify(validate.errors)}`).toBe(true)
|
|
267
|
+
expect(answer(plan), `${key}: ${JSON.stringify(answer.errors)}`).toBe(true)
|
|
268
|
+
}
|
|
269
|
+
for (const key of NEW_LABEL_KEYS) {
|
|
270
|
+
const plan = landingPlan() as unknown as { guestHome: { labels: Record<string, unknown> } }
|
|
271
|
+
plan.guestHome.labels[key] = null
|
|
272
|
+
expect(validate(plan), `labels.${key}: ${JSON.stringify(validate.errors)}`).toBe(true)
|
|
273
|
+
}
|
|
274
|
+
const labels = landingPlan()
|
|
275
|
+
labels.guestHome.differentiator!.usualLabel = null
|
|
276
|
+
labels.guestHome.differentiator!.oursLabel = null
|
|
277
|
+
labels.guestHome.approach!.title = null
|
|
278
|
+
expect(validate(labels), JSON.stringify(validate.errors)).toBe(true)
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
test('linksDecided is stored (a list, null or absent) and never offered to the model', () => {
|
|
282
|
+
for (const value of [['US-ABC12', 'US-LATE1'], [], null, undefined]) {
|
|
283
|
+
const plan = landingPlan() as unknown as { guestHome: Record<string, unknown> }
|
|
284
|
+
if (value === undefined) delete plan.guestHome.linksDecided
|
|
285
|
+
else plan.guestHome.linksDecided = value
|
|
286
|
+
expect(validate(plan), `${JSON.stringify(value)}: ${JSON.stringify(validate.errors)}`).toBe(true)
|
|
287
|
+
expect(() => validateHelper.validateSpecificationBody(slot, JSON.stringify(plan))).not.toThrow()
|
|
288
|
+
}
|
|
289
|
+
const old = oldPlan() as unknown as { guestHome: Record<string, unknown> }
|
|
290
|
+
old.guestHome.linksDecided = ['US-LATE1']
|
|
291
|
+
expect(validate(old), JSON.stringify(validate.errors)).toBe(true)
|
|
292
|
+
|
|
293
|
+
const wrong = landingPlan() as unknown as { guestHome: Record<string, unknown> }
|
|
294
|
+
wrong.guestHome.linksDecided = [3]
|
|
295
|
+
expect(validate(wrong)).toBe(false)
|
|
296
|
+
|
|
297
|
+
const answered = ScaffoldPlanAnswerSchema.properties.guestHome as unknown as { properties: Record<string, unknown> }
|
|
298
|
+
expect(answered.properties.linksDecided).toBeUndefined()
|
|
299
|
+
expect(answered.properties.links).toBeDefined()
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
test('a plan without testimonials validates', () => {
|
|
303
|
+
const plan = landingPlan()
|
|
304
|
+
delete plan.guestHome.testimonials
|
|
305
|
+
expect(validate(plan), JSON.stringify(validate.errors)).toBe(true)
|
|
306
|
+
expect(answer(plan), JSON.stringify(answer.errors)).toBe(true)
|
|
307
|
+
})
|
|
308
|
+
|
|
309
|
+
test('refuses a bad anchor, a bad slot and an extra key inside a band', () => {
|
|
310
|
+
const anchor = landingPlan()
|
|
311
|
+
anchor.guestHome.menu = [{ anchor: 'pricing' as never, label: 'Pricing' }]
|
|
312
|
+
expect(validate(anchor)).toBe(false)
|
|
313
|
+
|
|
314
|
+
const target = landingPlan()
|
|
315
|
+
target.guestHome.links = [{ slot: 'hero.logo' as never, story: 'US-ABC12' }]
|
|
316
|
+
expect(validate(target)).toBe(false)
|
|
317
|
+
|
|
318
|
+
for (const band of ['useCases', 'differentiator', 'approach', 'about'] as const) {
|
|
319
|
+
const plan = landingPlan() as unknown as { guestHome: Record<string, Record<string, unknown>> }
|
|
320
|
+
plan.guestHome[band].extra = 'x'
|
|
321
|
+
expect(validate(plan), band).toBe(false)
|
|
322
|
+
}
|
|
323
|
+
|
|
324
|
+
const missing = landingPlan() as unknown as { guestHome: { about: Record<string, unknown> } }
|
|
325
|
+
delete missing.guestHome.about.basis
|
|
326
|
+
expect(validate(missing)).toBe(false)
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
test('declares no count as minItems/maxItems, in either schema', () => {
|
|
330
|
+
for (const schema of [ScaffoldPlanSchema, ScaffoldPlanAnswerSchema]) {
|
|
331
|
+
const text = JSON.stringify(schema)
|
|
332
|
+
expect(text).not.toContain('minItems')
|
|
333
|
+
expect(text).not.toContain('maxItems')
|
|
334
|
+
}
|
|
335
|
+
expect(JSON.stringify(ScaffoldPlanAnswerSchema)).toContain('"differentiator"')
|
|
336
|
+
})
|
|
337
|
+
|
|
338
|
+
test('exports the landing vocabulary and helpers through the package barrel', () => {
|
|
339
|
+
expect(barrel.landingPlanHelper).toBe(landingPlanHelper)
|
|
340
|
+
expect(barrel.LANDING_GATE_SLOTS).toEqual(['hero.cta', 'hero.secondary', 'closing.primary'])
|
|
341
|
+
for (const anchor of LANDING_ANCHORS) {
|
|
342
|
+
expect(LANDING_BAND_ORDER).toContain(LANDING_ANCHOR_BAND[anchor])
|
|
343
|
+
}
|
|
344
|
+
for (const gated of LANDING_GATE_SLOTS) {
|
|
345
|
+
expect(LANDING_SLOTS).toContain(gated)
|
|
346
|
+
}
|
|
347
|
+
})
|
|
348
|
+
})
|
|
349
|
+
|
|
350
|
+
describe('viable-common - landingBandsOf', () => {
|
|
351
|
+
test('an old stored plan draws the always-on bands; one quote is no testimonials band', () => {
|
|
352
|
+
expect(landingPlanHelper.landingBandsOf(oldPlan().guestHome)).toEqual(['hero', 'features', 'problem'])
|
|
353
|
+
})
|
|
354
|
+
|
|
355
|
+
test('a full plan draws every band in the house order', () => {
|
|
356
|
+
expect(landingPlanHelper.landingBandsOf(landingPlan().guestHome)).toEqual(LANDING_BAND_ORDER)
|
|
357
|
+
})
|
|
358
|
+
|
|
359
|
+
test('each optional band follows its own presence rule', () => {
|
|
360
|
+
const home = landingPlan().guestHome
|
|
361
|
+
const without = (patch: Partial<GuestHomePlan>) => landingPlanHelper.landingBandsOf({ ...home, ...patch })
|
|
362
|
+
|
|
363
|
+
expect(without({ steps: [{ title: ' ', text: 'x' }] })).not.toContain('steps')
|
|
364
|
+
expect(without({ useCases: { cases: home.useCases!.cases.slice(0, 1), basis: BASIS } })).not.toContain('use-cases')
|
|
365
|
+
expect(without({ approach: { principles: home.approach!.principles.slice(0, 2), basis: BASIS } })).not.toContain('approach')
|
|
366
|
+
expect(without({ testimonials: null })).not.toContain('testimonials')
|
|
367
|
+
expect(without({ about: { title: 'Who', text: ' ', basis: BASIS } })).not.toContain('about')
|
|
368
|
+
expect(without({ closing: undefined })).not.toContain('closing')
|
|
369
|
+
|
|
370
|
+
// The differentiator: enough contrast rows, OR a title and a text.
|
|
371
|
+
const rowsOnly = { ...home.differentiator!, title: '', text: '' }
|
|
372
|
+
expect(without({ differentiator: rowsOnly })).toContain('differentiator')
|
|
373
|
+
const textOnly = { ...home.differentiator!, contrast: [] }
|
|
374
|
+
expect(without({ differentiator: textOnly })).toContain('differentiator')
|
|
375
|
+
expect(without({ differentiator: { ...rowsOnly, contrast: rowsOnly.contrast.slice(0, 1) } })).not.toContain('differentiator')
|
|
376
|
+
})
|
|
377
|
+
})
|
|
378
|
+
|
|
379
|
+
describe('viable-common - landingMenuOf', () => {
|
|
380
|
+
test('keeps the planned entries in page order with their own labels', () => {
|
|
381
|
+
const home = landingPlan().guestHome
|
|
382
|
+
home.menu = [{ anchor: 'about', label: 'Us' }, { anchor: 'how', label: 'Steps' }, { anchor: 'why', label: ' ' }]
|
|
383
|
+
|
|
384
|
+
expect(landingPlanHelper.landingMenuOf(home)).toEqual([
|
|
385
|
+
{ anchor: 'how', label: 'Steps' },
|
|
386
|
+
{ anchor: 'why', label: 'Why us' },
|
|
387
|
+
{ anchor: 'about', label: 'Us' },
|
|
388
|
+
])
|
|
389
|
+
})
|
|
390
|
+
|
|
391
|
+
test('drops entries whose band is absent, and duplicates', () => {
|
|
392
|
+
const home = landingPlan().guestHome
|
|
393
|
+
home.about = null
|
|
394
|
+
home.testimonials = null
|
|
395
|
+
home.menu = [
|
|
396
|
+
{ anchor: 'about', label: 'Us' }, { anchor: 'community', label: 'Reviews' },
|
|
397
|
+
{ anchor: 'features', label: 'Tools' }, { anchor: 'features', label: 'Again' },
|
|
398
|
+
{ anchor: 'approach', label: 'Ways' },
|
|
399
|
+
]
|
|
400
|
+
|
|
401
|
+
expect(landingPlanHelper.landingMenuOf(home)).toEqual([
|
|
402
|
+
{ anchor: 'features', label: 'Tools' },
|
|
403
|
+
{ anchor: 'approach', label: 'Ways' },
|
|
404
|
+
])
|
|
405
|
+
})
|
|
406
|
+
|
|
407
|
+
test('caps at max, never below the minimum', () => {
|
|
408
|
+
const home = landingPlan().guestHome
|
|
409
|
+
home.menu = [
|
|
410
|
+
{ anchor: 'how', label: 'Steps' }, { anchor: 'features', label: 'Tools' },
|
|
411
|
+
{ anchor: 'use-cases', label: 'Cases' }, { anchor: 'why', label: 'Why' },
|
|
412
|
+
{ anchor: 'approach', label: 'Ways' }, { anchor: 'about', label: 'Us' },
|
|
413
|
+
]
|
|
414
|
+
|
|
415
|
+
expect(landingPlanHelper.landingMenuOf(home).map(entry => entry.anchor)).toEqual(['how', 'features', 'use-cases', 'why'])
|
|
416
|
+
expect(landingPlanHelper.landingMenuOf(home, 3)).toHaveLength(3)
|
|
417
|
+
expect(landingPlanHelper.landingMenuOf(home, 0).map(entry => entry.anchor)).toEqual(['how', 'features'])
|
|
418
|
+
})
|
|
419
|
+
|
|
420
|
+
test('pads to two with how, features, then the first present optional band', () => {
|
|
421
|
+
const home = landingPlan().guestHome
|
|
422
|
+
home.menu = null
|
|
423
|
+
expect(landingPlanHelper.landingMenuOf(home)).toEqual([
|
|
424
|
+
{ anchor: 'how', label: 'How it works' },
|
|
425
|
+
{ anchor: 'features', label: 'Features' },
|
|
426
|
+
])
|
|
427
|
+
|
|
428
|
+
home.menu = [{ anchor: 'about', label: 'Us' }]
|
|
429
|
+
expect(landingPlanHelper.landingMenuOf(home).map(entry => entry.anchor)).toEqual(['how', 'about'])
|
|
430
|
+
|
|
431
|
+
const noSteps = landingPlan().guestHome
|
|
432
|
+
noSteps.steps = []
|
|
433
|
+
noSteps.menu = []
|
|
434
|
+
noSteps.labels = { features: 'What you get' }
|
|
435
|
+
expect(landingPlanHelper.landingMenuOf(noSteps)).toEqual([
|
|
436
|
+
{ anchor: 'features', label: 'What you get' },
|
|
437
|
+
{ anchor: 'use-cases', label: 'Use cases' },
|
|
438
|
+
])
|
|
439
|
+
})
|
|
440
|
+
})
|
|
441
|
+
|
|
442
|
+
describe('viable-common - homeSlotsOf', () => {
|
|
443
|
+
test('without a gate: the hero and closing pills exist, plus every labelled link and drawn case', () => {
|
|
444
|
+
const home = landingPlan().guestHome
|
|
445
|
+
delete home.gate
|
|
446
|
+
|
|
447
|
+
expect(landingPlanHelper.homeSlotsOf(home)).toEqual([
|
|
448
|
+
'hero.cta', 'hero.secondary', 'hero.browse', 'useCase.1', 'useCase.2', 'useCase.3',
|
|
449
|
+
'closing.primary', 'closing.secondary', 'closing.link.1', 'closing.link.2',
|
|
450
|
+
])
|
|
451
|
+
})
|
|
452
|
+
|
|
453
|
+
test('with a usable gate the gated slots are gone; a gate without fields is no gate', () => {
|
|
454
|
+
const home = landingPlan().guestHome
|
|
455
|
+
const slots = landingPlanHelper.homeSlotsOf(home)
|
|
456
|
+
for (const gated of LANDING_GATE_SLOTS) expect(slots).not.toContain(gated)
|
|
457
|
+
expect(slots).toContain('hero.browse')
|
|
458
|
+
expect(slots).toContain('closing.link.1')
|
|
459
|
+
|
|
460
|
+
home.gate = { ...home.gate!, fields: [] }
|
|
461
|
+
expect(landingPlanHelper.homeSlotsOf(home)).toContain('hero.cta')
|
|
462
|
+
})
|
|
463
|
+
|
|
464
|
+
test('an old stored plan has the primary pill alone; too few cases draw no case slots', () => {
|
|
465
|
+
expect(landingPlanHelper.homeSlotsOf(oldPlan().guestHome)).toEqual(['hero.cta'])
|
|
466
|
+
|
|
467
|
+
const home = landingPlan().guestHome
|
|
468
|
+
home.useCases = { cases: home.useCases!.cases.slice(0, 1), basis: BASIS }
|
|
469
|
+
expect(landingPlanHelper.homeSlotsOf(home).some(entry => entry.startsWith('useCase.'))).toBe(false)
|
|
470
|
+
})
|
|
471
|
+
})
|
package/tests/tenancy.spec.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test'
|
|
2
|
-
import { NO_TENANCY, ProjectArea,
|
|
2
|
+
import { NO_TENANCY, ProjectArea, tenancyHelper } from '../src/index.js'
|
|
3
3
|
import { LandingGatePreference } from '../src/blueprint/index.js'
|
|
4
4
|
|
|
5
5
|
const experience = (tenancy: unknown) =>
|
|
@@ -12,37 +12,37 @@ describe('viable-common - the project tenancy', () => {
|
|
|
12
12
|
})
|
|
13
13
|
|
|
14
14
|
test('tenancyOf answers NO_TENANCY for no blueprint, no layer, no key and an unreadable value', () => {
|
|
15
|
-
expect(tenancyOf()).toBe(NO_TENANCY)
|
|
16
|
-
expect(tenancyOf(null)).toBe(NO_TENANCY)
|
|
17
|
-
expect(tenancyOf({})).toBe(NO_TENANCY)
|
|
18
|
-
expect(tenancyOf({ experience: { landingGate: LandingGatePreference.Allow } })).toBe(NO_TENANCY)
|
|
19
|
-
expect(tenancyOf(experience(null))).toBe(NO_TENANCY)
|
|
20
|
-
expect(tenancyOf(experience('both'))).toBe(NO_TENANCY)
|
|
21
|
-
expect(tenancyOf(experience({ operators: 'yes', users: 1 }))).toBe(NO_TENANCY)
|
|
22
|
-
expect(tenancyOf(experience({ operators: false, users: false }))).toBe(NO_TENANCY)
|
|
23
|
-
expect(tenancyOf({ experience: 'flat' as never })).toBe(NO_TENANCY)
|
|
15
|
+
expect(tenancyHelper.tenancyOf()).toBe(NO_TENANCY)
|
|
16
|
+
expect(tenancyHelper.tenancyOf(null)).toBe(NO_TENANCY)
|
|
17
|
+
expect(tenancyHelper.tenancyOf({})).toBe(NO_TENANCY)
|
|
18
|
+
expect(tenancyHelper.tenancyOf({ experience: { landingGate: LandingGatePreference.Allow } })).toBe(NO_TENANCY)
|
|
19
|
+
expect(tenancyHelper.tenancyOf(experience(null))).toBe(NO_TENANCY)
|
|
20
|
+
expect(tenancyHelper.tenancyOf(experience('both'))).toBe(NO_TENANCY)
|
|
21
|
+
expect(tenancyHelper.tenancyOf(experience({ operators: 'yes', users: 1 }))).toBe(NO_TENANCY)
|
|
22
|
+
expect(tenancyHelper.tenancyOf(experience({ operators: false, users: false }))).toBe(NO_TENANCY)
|
|
23
|
+
expect(tenancyHelper.tenancyOf({ experience: 'flat' as never })).toBe(NO_TENANCY)
|
|
24
24
|
})
|
|
25
25
|
|
|
26
26
|
test('tenancyOf reads a literal true per flag, and an absent flag as off', () => {
|
|
27
|
-
expect(tenancyOf(experience({ operators: true, users: false }))).toEqual({ operators: true, users: false })
|
|
28
|
-
expect(tenancyOf(experience({ users: true }))).toEqual({ operators: false, users: true })
|
|
29
|
-
const both = tenancyOf(experience({ operators: true, users: true }))
|
|
27
|
+
expect(tenancyHelper.tenancyOf(experience({ operators: true, users: false }))).toEqual({ operators: true, users: false })
|
|
28
|
+
expect(tenancyHelper.tenancyOf(experience({ users: true }))).toEqual({ operators: false, users: true })
|
|
29
|
+
const both = tenancyHelper.tenancyOf(experience({ operators: true, users: true }))
|
|
30
30
|
expect(both).toEqual({ operators: true, users: true })
|
|
31
31
|
expect(Object.isFrozen(both)).toBe(true)
|
|
32
32
|
})
|
|
33
33
|
|
|
34
34
|
test('tenantedArea: user follows users, operator follows operators, guest and admin never', () => {
|
|
35
35
|
const all = { operators: true, users: true }
|
|
36
|
-
expect(tenantedArea(ProjectArea.User, all)).toBe(true)
|
|
37
|
-
expect(tenantedArea(ProjectArea.Operator, all)).toBe(true)
|
|
38
|
-
expect(tenantedArea(ProjectArea.Guest, all)).toBe(false)
|
|
39
|
-
expect(tenantedArea(ProjectArea.Admin, all)).toBe(false)
|
|
36
|
+
expect(tenancyHelper.tenantedArea(ProjectArea.User, all)).toBe(true)
|
|
37
|
+
expect(tenancyHelper.tenantedArea(ProjectArea.Operator, all)).toBe(true)
|
|
38
|
+
expect(tenancyHelper.tenantedArea(ProjectArea.Guest, all)).toBe(false)
|
|
39
|
+
expect(tenancyHelper.tenantedArea(ProjectArea.Admin, all)).toBe(false)
|
|
40
40
|
|
|
41
|
-
expect(tenantedArea(ProjectArea.User, { operators: true, users: false })).toBe(false)
|
|
42
|
-
expect(tenantedArea(ProjectArea.Operator, { operators: false, users: true })).toBe(false)
|
|
41
|
+
expect(tenancyHelper.tenantedArea(ProjectArea.User, { operators: true, users: false })).toBe(false)
|
|
42
|
+
expect(tenancyHelper.tenantedArea(ProjectArea.Operator, { operators: false, users: true })).toBe(false)
|
|
43
43
|
for (const area of Object.values(ProjectArea)) {
|
|
44
|
-
expect(tenantedArea(area, NO_TENANCY)).toBe(false)
|
|
44
|
+
expect(tenancyHelper.tenantedArea(area, NO_TENANCY)).toBe(false)
|
|
45
45
|
}
|
|
46
|
-
expect(tenantedArea('partner' as ProjectArea, all)).toBe(false)
|
|
46
|
+
expect(tenancyHelper.tenantedArea('partner' as ProjectArea, all)).toBe(false)
|
|
47
47
|
})
|
|
48
48
|
})
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops.d.ts","sourceRoot":"","sources":["../../src/connect/ops.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AAC1D,OAAO,KAAK,EACV,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,aAAa,EAAE,mBAAmB,EACzF,aAAa,EAAE,SAAS,EACzB,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,kBAAkB,GAAG,SAAS,GAAG,gBAAgB,GAAG,cAAc,CAAA;IAC3E,SAAS,EAAE,MAAM,CAAA;IACjB,wFAAwF;IACxF,UAAU,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,EAAE,EAAE,OAAO,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,cAAc,CAAA;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,aAAa,EAAE,CAAA;IACtB,KAAK,EAAE,KAAK,CAAC,MAAM,eAAe,CAAC,CAAA;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAA;IACZ,gFAAgF;IAChF,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB;;;;;OAKG;IACH,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,EAAE,eAAe,CAAA;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,uFAAuF;IACvF,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,CAAA;IACf,2FAA2F;IAC3F,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,aAAa,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,gBAAgB,EAAE,CAAA;IAC5B,sEAAsE;IACtE,KAAK,CAAC,EAAE,aAAa,EAAE,CAAA;IACvB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,mBAAmB,CAAA;IAChC,uEAAuE;IACvE,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACtC,4DAA4D;IAC5D,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,4CAA4C;IAC5C,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4CAA4C;IAC5C,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpE,MAAM,WAAW,iBAAiB;IAChC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC9B;AAED,2CAA2C;AAC3C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,EAAE,mBAAmB,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,CAAC,EAAE,OAAO,CAAA;IACd,SAAS,CAAC,EAAE,iBAAiB,EAAE,CAAA;IAC/B,kFAAkF;IAClF,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,oFAAoF;IACpF,KAAK,CAAC,EAAE,cAAc,CAAA;IACtB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,sEAAsE;AACtE,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAA;IACV,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,mGAAmG;IACnG,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,kBAAkB,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,oBAAoB,EAAE,CAAA;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,+FAA+F;IAC/F,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAC3B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB"}
|
package/build/connect/ops.js
DELETED
package/build/connect/ops.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ops.js","sourceRoot":"","sources":["../../src/connect/ops.ts"],"names":[],"mappings":""}
|