@l4yercak3/cli 1.3.2 → 2.0.0-alpha.1
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 +10 -220
- package/dist/api/client.d.ts +12 -0
- package/dist/api/client.d.ts.map +1 -0
- package/dist/api/client.js +37 -0
- package/dist/api/client.js.map +1 -0
- package/dist/api/platform.d.ts +161 -0
- package/dist/api/platform.d.ts.map +1 -0
- package/dist/api/platform.js +70 -0
- package/dist/api/platform.js.map +1 -0
- package/dist/bin/sevenlayers.d.ts +3 -0
- package/dist/bin/sevenlayers.d.ts.map +1 -0
- package/dist/bin/sevenlayers.js +198 -0
- package/dist/bin/sevenlayers.js.map +1 -0
- package/dist/commands/agent/catalog.d.ts +5 -0
- package/dist/commands/agent/catalog.d.ts.map +1 -0
- package/dist/commands/agent/catalog.js +142 -0
- package/dist/commands/agent/catalog.js.map +1 -0
- package/dist/commands/agent/drift.d.ts +5 -0
- package/dist/commands/agent/drift.d.ts.map +1 -0
- package/dist/commands/agent/drift.js +113 -0
- package/dist/commands/agent/drift.js.map +1 -0
- package/dist/commands/agent/init.d.ts +5 -0
- package/dist/commands/agent/init.d.ts.map +1 -0
- package/dist/commands/agent/init.js +75 -0
- package/dist/commands/agent/init.js.map +1 -0
- package/dist/commands/agent/permissions.d.ts +5 -0
- package/dist/commands/agent/permissions.d.ts.map +1 -0
- package/dist/commands/agent/permissions.js +88 -0
- package/dist/commands/agent/permissions.js.map +1 -0
- package/dist/commands/agent/runner.d.ts +14 -0
- package/dist/commands/agent/runner.d.ts.map +1 -0
- package/dist/commands/agent/runner.js +59 -0
- package/dist/commands/agent/runner.js.map +1 -0
- package/dist/commands/agent/shared.d.ts +13 -0
- package/dist/commands/agent/shared.d.ts.map +1 -0
- package/dist/commands/agent/shared.js +31 -0
- package/dist/commands/agent/shared.js.map +1 -0
- package/dist/commands/agent/template.d.ts +5 -0
- package/dist/commands/agent/template.d.ts.map +1 -0
- package/dist/commands/agent/template.js +104 -0
- package/dist/commands/agent/template.js.map +1 -0
- package/dist/commands/app/connect.d.ts +7 -0
- package/dist/commands/app/connect.d.ts.map +1 -0
- package/dist/commands/app/connect.js +12 -0
- package/dist/commands/app/connect.js.map +1 -0
- package/dist/commands/app/init.d.ts +7 -0
- package/dist/commands/app/init.d.ts.map +1 -0
- package/dist/commands/app/init.js +12 -0
- package/dist/commands/app/init.js.map +1 -0
- package/dist/commands/app/link.d.ts +3 -0
- package/dist/commands/app/link.d.ts.map +1 -0
- package/dist/commands/app/link.js +92 -0
- package/dist/commands/app/link.js.map +1 -0
- package/dist/commands/app/pages.d.ts +15 -0
- package/dist/commands/app/pages.d.ts.map +1 -0
- package/dist/commands/app/pages.js +180 -0
- package/dist/commands/app/pages.js.map +1 -0
- package/dist/commands/app/register.d.ts +3 -0
- package/dist/commands/app/register.d.ts.map +1 -0
- package/dist/commands/app/register.js +120 -0
- package/dist/commands/app/register.js.map +1 -0
- package/dist/commands/app/remote.d.ts +14 -0
- package/dist/commands/app/remote.d.ts.map +1 -0
- package/dist/commands/app/remote.js +44 -0
- package/dist/commands/app/remote.js.map +1 -0
- package/dist/commands/app/setup.d.ts +3 -0
- package/dist/commands/app/setup.d.ts.map +1 -0
- package/dist/commands/app/setup.js +299 -0
- package/dist/commands/app/setup.js.map +1 -0
- package/dist/commands/app/shared.d.ts +9 -0
- package/dist/commands/app/shared.d.ts.map +1 -0
- package/dist/commands/app/shared.js +122 -0
- package/dist/commands/app/shared.js.map +1 -0
- package/dist/commands/app/sync.d.ts +7 -0
- package/dist/commands/app/sync.d.ts.map +1 -0
- package/dist/commands/app/sync.js +107 -0
- package/dist/commands/app/sync.js.map +1 -0
- package/dist/commands/booking/check.d.ts +3 -0
- package/dist/commands/booking/check.d.ts.map +1 -0
- package/dist/commands/booking/check.js +68 -0
- package/dist/commands/booking/check.js.map +1 -0
- package/dist/commands/booking/setup.d.ts +3 -0
- package/dist/commands/booking/setup.d.ts.map +1 -0
- package/dist/commands/booking/setup.js +95 -0
- package/dist/commands/booking/setup.js.map +1 -0
- package/dist/commands/booking/shared.d.ts +31 -0
- package/dist/commands/booking/shared.d.ts.map +1 -0
- package/dist/commands/booking/shared.js +112 -0
- package/dist/commands/booking/shared.js.map +1 -0
- package/dist/commands/booking/smoke.d.ts +3 -0
- package/dist/commands/booking/smoke.d.ts.map +1 -0
- package/dist/commands/booking/smoke.js +101 -0
- package/dist/commands/booking/smoke.js.map +1 -0
- package/dist/commands/cms/bind.d.ts +3 -0
- package/dist/commands/cms/bind.d.ts.map +1 -0
- package/dist/commands/cms/bind.js +212 -0
- package/dist/commands/cms/bind.js.map +1 -0
- package/dist/commands/cms/content.d.ts +40 -0
- package/dist/commands/cms/content.d.ts.map +1 -0
- package/dist/commands/cms/content.js +169 -0
- package/dist/commands/cms/content.js.map +1 -0
- package/dist/commands/cms/doctor.d.ts +3 -0
- package/dist/commands/cms/doctor.d.ts.map +1 -0
- package/dist/commands/cms/doctor.js +69 -0
- package/dist/commands/cms/doctor.js.map +1 -0
- package/dist/commands/cms/migrate.d.ts +3 -0
- package/dist/commands/cms/migrate.d.ts.map +1 -0
- package/dist/commands/cms/migrate.js +78 -0
- package/dist/commands/cms/migrate.js.map +1 -0
- package/dist/commands/cms/registry.d.ts +3 -0
- package/dist/commands/cms/registry.d.ts.map +1 -0
- package/dist/commands/cms/registry.js +161 -0
- package/dist/commands/cms/registry.js.map +1 -0
- package/dist/commands/cms/seed.d.ts +3 -0
- package/dist/commands/cms/seed.d.ts.map +1 -0
- package/dist/commands/cms/seed.js +102 -0
- package/dist/commands/cms/seed.js.map +1 -0
- package/dist/commands/cms/shared.d.ts +22 -0
- package/dist/commands/cms/shared.d.ts.map +1 -0
- package/dist/commands/cms/shared.js +82 -0
- package/dist/commands/cms/shared.js.map +1 -0
- package/dist/commands/doctor/target.d.ts +3 -0
- package/dist/commands/doctor/target.d.ts.map +1 -0
- package/dist/commands/doctor/target.js +46 -0
- package/dist/commands/doctor/target.js.map +1 -0
- package/dist/commands/env/list.d.ts +3 -0
- package/dist/commands/env/list.d.ts.map +1 -0
- package/dist/commands/env/list.js +28 -0
- package/dist/commands/env/list.js.map +1 -0
- package/dist/commands/env/set.d.ts +3 -0
- package/dist/commands/env/set.d.ts.map +1 -0
- package/dist/commands/env/set.js +36 -0
- package/dist/commands/env/set.js.map +1 -0
- package/dist/commands/env/use.d.ts +3 -0
- package/dist/commands/env/use.d.ts.map +1 -0
- package/dist/commands/env/use.js +15 -0
- package/dist/commands/env/use.js.map +1 -0
- package/dist/commands/legacy/connect.d.ts +3 -0
- package/dist/commands/legacy/connect.d.ts.map +1 -0
- package/dist/commands/legacy/connect.js +8 -0
- package/dist/commands/legacy/connect.js.map +1 -0
- package/dist/commands/legacy/pages.d.ts +3 -0
- package/dist/commands/legacy/pages.d.ts.map +1 -0
- package/dist/commands/legacy/pages.js +16 -0
- package/dist/commands/legacy/pages.js.map +1 -0
- package/dist/commands/legacy/spread.d.ts +3 -0
- package/dist/commands/legacy/spread.d.ts.map +1 -0
- package/dist/commands/legacy/spread.js +8 -0
- package/dist/commands/legacy/spread.js.map +1 -0
- package/dist/commands/legacy/sync.d.ts +3 -0
- package/dist/commands/legacy/sync.d.ts.map +1 -0
- package/dist/commands/legacy/sync.js +8 -0
- package/dist/commands/legacy/sync.js.map +1 -0
- package/dist/config/env-diff.d.ts +10 -0
- package/dist/config/env-diff.d.ts.map +1 -0
- package/dist/config/env-diff.js +24 -0
- package/dist/config/env-diff.js.map +1 -0
- package/dist/config/env-parser.d.ts +20 -0
- package/dist/config/env-parser.d.ts.map +1 -0
- package/dist/config/env-parser.js +70 -0
- package/dist/config/env-parser.js.map +1 -0
- package/dist/config/env-writer.d.ts +22 -0
- package/dist/config/env-writer.d.ts.map +1 -0
- package/dist/config/env-writer.js +172 -0
- package/dist/config/env-writer.js.map +1 -0
- package/dist/config/profile-store.d.ts +29 -0
- package/dist/config/profile-store.d.ts.map +1 -0
- package/dist/config/profile-store.js +257 -0
- package/dist/config/profile-store.js.map +1 -0
- package/dist/core/args.d.ts +11 -0
- package/dist/core/args.d.ts.map +1 -0
- package/dist/core/args.js +106 -0
- package/dist/core/args.js.map +1 -0
- package/dist/core/colors.d.ts +6 -0
- package/dist/core/colors.d.ts.map +1 -0
- package/dist/core/colors.js +29 -0
- package/dist/core/colors.js.map +1 -0
- package/dist/safety/target-guard.d.ts +16 -0
- package/dist/safety/target-guard.d.ts.map +1 -0
- package/dist/safety/target-guard.js +55 -0
- package/dist/safety/target-guard.js.map +1 -0
- package/dist/testing/booking-smoke.d.ts +17 -0
- package/dist/testing/booking-smoke.d.ts.map +1 -0
- package/dist/testing/booking-smoke.js +43 -0
- package/dist/testing/booking-smoke.js.map +1 -0
- package/dist/tests/agent-commands.test.d.ts +2 -0
- package/dist/tests/agent-commands.test.d.ts.map +1 -0
- package/dist/tests/agent-commands.test.js +180 -0
- package/dist/tests/agent-commands.test.js.map +1 -0
- package/dist/tests/agent-governance.test.d.ts +2 -0
- package/dist/tests/agent-governance.test.d.ts.map +1 -0
- package/dist/tests/agent-governance.test.js +233 -0
- package/dist/tests/agent-governance.test.js.map +1 -0
- package/dist/tests/app-commands.test.d.ts +2 -0
- package/dist/tests/app-commands.test.d.ts.map +1 -0
- package/dist/tests/app-commands.test.js +462 -0
- package/dist/tests/app-commands.test.js.map +1 -0
- package/dist/tests/booking-commands.test.d.ts +2 -0
- package/dist/tests/booking-commands.test.d.ts.map +1 -0
- package/dist/tests/booking-commands.test.js +204 -0
- package/dist/tests/booking-commands.test.js.map +1 -0
- package/dist/tests/booking-smoke.test.d.ts +2 -0
- package/dist/tests/booking-smoke.test.d.ts.map +1 -0
- package/dist/tests/booking-smoke.test.js +183 -0
- package/dist/tests/booking-smoke.test.js.map +1 -0
- package/dist/tests/cms-commands.test.d.ts +2 -0
- package/dist/tests/cms-commands.test.d.ts.map +1 -0
- package/dist/tests/cms-commands.test.js +254 -0
- package/dist/tests/cms-commands.test.js.map +1 -0
- package/dist/tests/cms-ops.test.d.ts +2 -0
- package/dist/tests/cms-ops.test.d.ts.map +1 -0
- package/dist/tests/cms-ops.test.js +125 -0
- package/dist/tests/cms-ops.test.js.map +1 -0
- package/dist/tests/env-writer.test.d.ts +2 -0
- package/dist/tests/env-writer.test.d.ts.map +1 -0
- package/dist/tests/env-writer.test.js +90 -0
- package/dist/tests/env-writer.test.js.map +1 -0
- package/dist/tests/profile-store.test.d.ts +2 -0
- package/dist/tests/profile-store.test.d.ts.map +1 -0
- package/dist/tests/profile-store.test.js +88 -0
- package/dist/tests/profile-store.test.js.map +1 -0
- package/dist/tests/target-guard.test.d.ts +2 -0
- package/dist/tests/target-guard.test.d.ts.map +1 -0
- package/dist/tests/target-guard.test.js +132 -0
- package/dist/tests/target-guard.test.js.map +1 -0
- package/dist/ui/logo.d.ts +2 -0
- package/dist/ui/logo.d.ts.map +1 -0
- package/dist/ui/logo.js +22 -0
- package/dist/ui/logo.js.map +1 -0
- package/package.json +17 -53
- package/.claude/settings.local.json +0 -36
- package/.cursor/rules.md +0 -203
- package/.eslintrc.js +0 -31
- package/CLAUDE.md +0 -100
- package/bin/cli.js +0 -116
- package/docs/ADDING_FRAMEWORK_DETECTORS.md +0 -391
- package/docs/ADDING_NEW_PROJECT_TYPE.md +0 -156
- package/docs/ARCHITECTURE_RELATIONSHIPS.md +0 -411
- package/docs/CLI_AUTHENTICATION.md +0 -214
- package/docs/CLI_PAGE_DETECTION_REQUIREMENTS.md +0 -519
- package/docs/CRM-PIPELINES-SEQUENCES-SPEC.md +0 -429
- package/docs/DETECTOR_ARCHITECTURE.md +0 -326
- package/docs/DEVELOPMENT.md +0 -194
- package/docs/IMPLEMENTATION_PHASES.md +0 -468
- package/docs/INTEGRATION_PATHS_ARCHITECTURE.md +0 -1543
- package/docs/OAUTH_CLARIFICATION.md +0 -258
- package/docs/OAUTH_SETUP_GUIDE_TEMPLATE.md +0 -211
- package/docs/PHASE_0_PROGRESS.md +0 -120
- package/docs/PHASE_1_COMPLETE.md +0 -366
- package/docs/PHASE_SUMMARY.md +0 -149
- package/docs/PLAN.md +0 -511
- package/docs/README.md +0 -56
- package/docs/STRIPE_INTEGRATION.md +0 -447
- package/docs/SUMMARY.md +0 -230
- package/docs/UPDATED_PLAN.md +0 -447
- package/docs/mcp_server/MCP_EXTENSION_GUIDE.md +0 -1313
- package/docs/mcp_server/MCP_SERVER_ARCHITECTURE.md +0 -1481
- package/docs/mcp_server/applicationOntology.ts +0 -817
- package/docs/mcp_server/cliApplications.ts +0 -639
- package/docs/mcp_server/crmOntology.ts +0 -1063
- package/docs/mcp_server/eventOntology.ts +0 -1183
- package/docs/mcp_server/formsOntology.ts +0 -1401
- package/docs/mcp_server/ontologySchemas.ts +0 -185
- package/docs/mcp_server/schema.ts +0 -250
- package/docs/microsass_production_machine/CLI_API_REFERENCE.md +0 -1197
- package/docs/microsass_production_machine/CLI_PRODUCT_VISION.md +0 -676
- package/docs/microsass_production_machine/CLI_REQUIREMENTS.md +0 -606
- package/docs/microsass_production_machine/CONNECTED_APPLICATIONS_SPEC.md +0 -390
- package/docs/microsass_production_machine/IMPLEMENTATION_ROADMAP.md +0 -725
- package/docs/microsass_production_machine/OBJECT_MAPPINGS.md +0 -808
- package/docs/microsass_production_machine/REFERENCE_IMPLEMENTATION.md +0 -532
- package/src/api/backend-client.js +0 -449
- package/src/commands/api-keys.js +0 -119
- package/src/commands/connect.js +0 -253
- package/src/commands/login.js +0 -332
- package/src/commands/logout.js +0 -30
- package/src/commands/mcp-server.js +0 -85
- package/src/commands/mcp-setup.js +0 -686
- package/src/commands/pages.js +0 -317
- package/src/commands/scaffold.js +0 -409
- package/src/commands/spread.js +0 -861
- package/src/commands/status.js +0 -62
- package/src/commands/sync.js +0 -169
- package/src/commands/upgrade.js +0 -48
- package/src/config/config-manager.js +0 -206
- package/src/detectors/api-client-detector.js +0 -85
- package/src/detectors/base-detector.js +0 -77
- package/src/detectors/database-detector.js +0 -245
- package/src/detectors/expo-detector.js +0 -166
- package/src/detectors/github-detector.js +0 -74
- package/src/detectors/index.js +0 -106
- package/src/detectors/mapping-suggestor.js +0 -119
- package/src/detectors/model-detector.js +0 -318
- package/src/detectors/nextjs-detector.js +0 -139
- package/src/detectors/oauth-detector.js +0 -122
- package/src/detectors/page-detector.js +0 -480
- package/src/detectors/registry.js +0 -121
- package/src/generators/api-client-generator.js +0 -223
- package/src/generators/api-only/client.js +0 -683
- package/src/generators/api-only/index.js +0 -96
- package/src/generators/api-only/types.js +0 -618
- package/src/generators/api-only/webhooks.js +0 -377
- package/src/generators/env-generator.js +0 -191
- package/src/generators/expo-auth-generator.js +0 -1009
- package/src/generators/gitignore-generator.js +0 -92
- package/src/generators/index.js +0 -166
- package/src/generators/manifest-generator.js +0 -154
- package/src/generators/mcp-guide-generator.js +0 -256
- package/src/generators/nextauth-generator.js +0 -247
- package/src/generators/oauth-guide-generator.js +0 -277
- package/src/generators/quickstart/components/index.js +0 -1699
- package/src/generators/quickstart/components-mobile/index.js +0 -1440
- package/src/generators/quickstart/database/convex.js +0 -1257
- package/src/generators/quickstart/database/index.js +0 -34
- package/src/generators/quickstart/database/supabase.js +0 -1132
- package/src/generators/quickstart/hooks/index.js +0 -1065
- package/src/generators/quickstart/index.js +0 -191
- package/src/generators/quickstart/pages/index.js +0 -1466
- package/src/generators/quickstart/screens/index.js +0 -1498
- package/src/logo.js +0 -116
- package/src/mcp/auth.js +0 -127
- package/src/mcp/registry/domains/applications.js +0 -516
- package/src/mcp/registry/domains/benefits.js +0 -798
- package/src/mcp/registry/domains/codegen.js +0 -894
- package/src/mcp/registry/domains/core.js +0 -324
- package/src/mcp/registry/domains/crm.js +0 -591
- package/src/mcp/registry/domains/events.js +0 -649
- package/src/mcp/registry/domains/forms.js +0 -696
- package/src/mcp/registry/index.js +0 -164
- package/src/mcp/server.js +0 -116
- package/src/utils/file-utils.js +0 -117
- package/src/utils/init-helpers.js +0 -243
- package/src/utils/prompt-utils.js +0 -195
- package/templates/CLAUDE.md +0 -86
- package/tests/api-client-detector.test.js +0 -214
- package/tests/api-client-generator.test.js +0 -176
- package/tests/backend-client.test.js +0 -640
- package/tests/base-detector.test.js +0 -101
- package/tests/commands/login.test.js +0 -143
- package/tests/commands/logout.test.js +0 -84
- package/tests/commands/status.test.js +0 -167
- package/tests/config-manager.test.js +0 -321
- package/tests/database-detector.test.js +0 -221
- package/tests/detector-index.test.js +0 -209
- package/tests/detector-registry.test.js +0 -93
- package/tests/env-generator.test.js +0 -278
- package/tests/expo-detector.test.js +0 -263
- package/tests/file-utils.test.js +0 -194
- package/tests/generators-index.test.js +0 -454
- package/tests/github-detector.test.js +0 -145
- package/tests/gitignore-generator.test.js +0 -109
- package/tests/logo.test.js +0 -96
- package/tests/nextauth-generator.test.js +0 -255
- package/tests/nextjs-detector.test.js +0 -235
- package/tests/oauth-detector.test.js +0 -264
- package/tests/oauth-guide-generator.test.js +0 -273
- package/tests/page-detector.test.js +0 -371
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleCmsBind = handleCmsBind;
|
|
7
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const args_1 = require("../../core/args");
|
|
10
|
+
const colors_1 = require("../../core/colors");
|
|
11
|
+
const shared_1 = require("./shared");
|
|
12
|
+
function printUsage() {
|
|
13
|
+
console.log((0, colors_1.colorOrange)("Usage: sevenlayers cms bind [options]"));
|
|
14
|
+
console.log("");
|
|
15
|
+
console.log("Required options:");
|
|
16
|
+
console.log(" --page-id <id> Target page id OR");
|
|
17
|
+
console.log(" --page-path <path> Target page path lookup within app");
|
|
18
|
+
console.log(" --binding <spec> Binding spec (repeatable)");
|
|
19
|
+
console.log(" --bindings-file <path> JSON file of binding objects");
|
|
20
|
+
console.log("");
|
|
21
|
+
console.log("Binding spec format:");
|
|
22
|
+
console.log(" <objectType>:<accessMode>[:<syncDirection>[:<id1,id2,...>]]");
|
|
23
|
+
console.log(" accessMode: read|write|read_write");
|
|
24
|
+
console.log(" syncDirection: push|pull|bidirectional");
|
|
25
|
+
console.log("");
|
|
26
|
+
console.log("Shared options:");
|
|
27
|
+
console.log(" --env <profile> Target profile (local|staging|prod)");
|
|
28
|
+
console.log(" --org-id <id> Target organization id");
|
|
29
|
+
console.log(" --app-id <id> Target application id");
|
|
30
|
+
console.log(" --token <value> API token (or use env vars)");
|
|
31
|
+
console.log(" --replace-existing Replace all existing bindings");
|
|
32
|
+
console.log(" --dry-run Preview bind result");
|
|
33
|
+
console.log(" --yes --confirm-prod PROD Required on confirm-gated targets");
|
|
34
|
+
console.log(" --json Output deterministic JSON");
|
|
35
|
+
console.log(" --help Show this help");
|
|
36
|
+
}
|
|
37
|
+
function parseBindingSpec(spec) {
|
|
38
|
+
const [objectTypeRaw, accessModeRaw, syncDirectionRaw, idsRaw] = spec.split(":");
|
|
39
|
+
const objectType = objectTypeRaw?.trim();
|
|
40
|
+
const accessMode = accessModeRaw?.trim();
|
|
41
|
+
if (!objectType || !accessMode) {
|
|
42
|
+
throw new Error(`Invalid --binding '${spec}'. Expected <objectType>:<accessMode>[:<syncDirection>[:<id1,id2>]]`);
|
|
43
|
+
}
|
|
44
|
+
if (accessMode !== "read" && accessMode !== "write" && accessMode !== "read_write") {
|
|
45
|
+
throw new Error(`Invalid accessMode '${accessMode}' in --binding '${spec}'.`);
|
|
46
|
+
}
|
|
47
|
+
const syncToken = syncDirectionRaw && syncDirectionRaw.trim().length > 0 ? syncDirectionRaw.trim() : undefined;
|
|
48
|
+
let syncDirection;
|
|
49
|
+
if (syncToken === undefined) {
|
|
50
|
+
syncDirection = undefined;
|
|
51
|
+
}
|
|
52
|
+
else if (syncToken === "push" || syncToken === "pull" || syncToken === "bidirectional") {
|
|
53
|
+
syncDirection = syncToken;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
throw new Error(`Invalid syncDirection '${syncToken}' in --binding '${spec}'.`);
|
|
57
|
+
}
|
|
58
|
+
const boundObjectIds = idsRaw && idsRaw.trim().length > 0
|
|
59
|
+
? idsRaw
|
|
60
|
+
.split(",")
|
|
61
|
+
.map((value) => value.trim())
|
|
62
|
+
.filter((value) => value.length > 0)
|
|
63
|
+
: undefined;
|
|
64
|
+
return {
|
|
65
|
+
objectType,
|
|
66
|
+
accessMode,
|
|
67
|
+
syncEnabled: Boolean(syncDirection),
|
|
68
|
+
syncDirection,
|
|
69
|
+
boundObjectIds
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
async function loadBindingsFile(filePath) {
|
|
73
|
+
const absolutePath = node_path_1.default.resolve(process.cwd(), filePath);
|
|
74
|
+
const raw = await promises_1.default.readFile(absolutePath, "utf8");
|
|
75
|
+
const parsed = JSON.parse(raw);
|
|
76
|
+
if (!Array.isArray(parsed)) {
|
|
77
|
+
throw new Error(`Bindings file '${filePath}' must contain an array.`);
|
|
78
|
+
}
|
|
79
|
+
return parsed.map((entry) => {
|
|
80
|
+
if (!entry || typeof entry !== "object") {
|
|
81
|
+
throw new Error(`Bindings file '${filePath}' contains invalid entries.`);
|
|
82
|
+
}
|
|
83
|
+
const record = entry;
|
|
84
|
+
const objectType = typeof record.objectType === "string" ? record.objectType.trim() : "";
|
|
85
|
+
const accessMode = typeof record.accessMode === "string" ? record.accessMode.trim() : "";
|
|
86
|
+
if (!objectType || !accessMode) {
|
|
87
|
+
throw new Error(`Bindings file '${filePath}' entries require objectType + accessMode.`);
|
|
88
|
+
}
|
|
89
|
+
if (accessMode !== "read" && accessMode !== "write" && accessMode !== "read_write") {
|
|
90
|
+
throw new Error(`Bindings file '${filePath}' has invalid accessMode '${accessMode}'.`);
|
|
91
|
+
}
|
|
92
|
+
const syncToken = typeof record.syncDirection === "string" && record.syncDirection.trim().length > 0
|
|
93
|
+
? record.syncDirection.trim()
|
|
94
|
+
: undefined;
|
|
95
|
+
let syncDirection;
|
|
96
|
+
if (syncToken === undefined) {
|
|
97
|
+
syncDirection = undefined;
|
|
98
|
+
}
|
|
99
|
+
else if (syncToken === "push" || syncToken === "pull" || syncToken === "bidirectional") {
|
|
100
|
+
syncDirection = syncToken;
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
throw new Error(`Bindings file '${filePath}' has invalid syncDirection '${syncToken}'.`);
|
|
104
|
+
}
|
|
105
|
+
const boundObjectIds = Array.isArray(record.boundObjectIds)
|
|
106
|
+
? record.boundObjectIds.filter((value) => typeof value === "string")
|
|
107
|
+
: undefined;
|
|
108
|
+
return {
|
|
109
|
+
objectType,
|
|
110
|
+
accessMode,
|
|
111
|
+
syncEnabled: typeof record.syncEnabled === "boolean" ? record.syncEnabled : Boolean(syncDirection),
|
|
112
|
+
syncDirection,
|
|
113
|
+
boundObjectIds
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
async function resolveRequestedBindings(parsed) {
|
|
118
|
+
const inline = readRawStringOptions(parsed.options["binding"]).map(parseBindingSpec);
|
|
119
|
+
const filePath = (0, args_1.getOptionString)(parsed, "bindings-file");
|
|
120
|
+
if (!filePath) {
|
|
121
|
+
return inline;
|
|
122
|
+
}
|
|
123
|
+
const fromFile = await loadBindingsFile(filePath);
|
|
124
|
+
return [...fromFile, ...inline];
|
|
125
|
+
}
|
|
126
|
+
function readRawStringOptions(value) {
|
|
127
|
+
if (value === undefined) {
|
|
128
|
+
return [];
|
|
129
|
+
}
|
|
130
|
+
if (Array.isArray(value)) {
|
|
131
|
+
return value.filter((entry) => typeof entry === "string");
|
|
132
|
+
}
|
|
133
|
+
if (typeof value === "string") {
|
|
134
|
+
return [value];
|
|
135
|
+
}
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
function mergeBindings(existingBindings, requestedBindings, replaceExisting) {
|
|
139
|
+
if (replaceExisting) {
|
|
140
|
+
return requestedBindings;
|
|
141
|
+
}
|
|
142
|
+
const byObjectType = new Map();
|
|
143
|
+
for (const binding of existingBindings) {
|
|
144
|
+
byObjectType.set(binding.objectType, binding);
|
|
145
|
+
}
|
|
146
|
+
for (const binding of requestedBindings) {
|
|
147
|
+
byObjectType.set(binding.objectType, binding);
|
|
148
|
+
}
|
|
149
|
+
return Array.from(byObjectType.values());
|
|
150
|
+
}
|
|
151
|
+
async function handleCmsBind(parsed) {
|
|
152
|
+
if ((0, args_1.getOptionBoolean)(parsed, "help")) {
|
|
153
|
+
printUsage();
|
|
154
|
+
return 0;
|
|
155
|
+
}
|
|
156
|
+
const command = await (0, shared_1.resolveCmsCommandContext)(parsed, { mutating: true });
|
|
157
|
+
const requestedBindings = await resolveRequestedBindings(parsed);
|
|
158
|
+
if (requestedBindings.length === 0) {
|
|
159
|
+
throw new Error("No bindings provided. Use --binding or --bindings-file.");
|
|
160
|
+
}
|
|
161
|
+
const pagesResult = await command.api.getApplicationPages(command.applicationId);
|
|
162
|
+
const pageIdFlag = (0, args_1.getOptionString)(parsed, "page-id");
|
|
163
|
+
const pagePathFlag = (0, args_1.getOptionString)(parsed, "page-path");
|
|
164
|
+
let pageId = pageIdFlag ?? "";
|
|
165
|
+
if (!pageId) {
|
|
166
|
+
if (!pagePathFlag) {
|
|
167
|
+
throw new Error("Provide --page-id or --page-path.");
|
|
168
|
+
}
|
|
169
|
+
const match = pagesResult.pages.find((page) => page.path === pagePathFlag);
|
|
170
|
+
if (!match) {
|
|
171
|
+
throw new Error(`No application page found for path '${pagePathFlag}'.`);
|
|
172
|
+
}
|
|
173
|
+
pageId = match.id;
|
|
174
|
+
}
|
|
175
|
+
const existingPage = pagesResult.pages.find((page) => page.id === pageId);
|
|
176
|
+
const existingBindings = Array.isArray(existingPage?.objectBindings)
|
|
177
|
+
? existingPage?.objectBindings
|
|
178
|
+
: [];
|
|
179
|
+
const replaceExisting = (0, args_1.getOptionBoolean)(parsed, "replace-existing");
|
|
180
|
+
const finalBindings = mergeBindings(existingBindings, requestedBindings, replaceExisting);
|
|
181
|
+
const dryRun = (0, args_1.getOptionBoolean)(parsed, "dry-run");
|
|
182
|
+
if (!dryRun) {
|
|
183
|
+
await command.api.updatePageBindings(pageId, finalBindings);
|
|
184
|
+
}
|
|
185
|
+
if (command.json) {
|
|
186
|
+
console.log(JSON.stringify({
|
|
187
|
+
success: true,
|
|
188
|
+
dryRun,
|
|
189
|
+
profile: command.profile,
|
|
190
|
+
organizationId: command.organizationId,
|
|
191
|
+
applicationId: command.applicationId,
|
|
192
|
+
pageId,
|
|
193
|
+
replaceExisting,
|
|
194
|
+
bindings: finalBindings
|
|
195
|
+
}, null, 2));
|
|
196
|
+
return 0;
|
|
197
|
+
}
|
|
198
|
+
console.log((0, colors_1.colorGreen)("CMS page bindings updated."));
|
|
199
|
+
console.log((0, colors_1.colorGray)(`Application: ${command.applicationId}`));
|
|
200
|
+
console.log((0, colors_1.colorGray)(`Page: ${pageId}`));
|
|
201
|
+
if (dryRun) {
|
|
202
|
+
console.log((0, colors_1.colorGray)("Dry-run: no backend update applied."));
|
|
203
|
+
}
|
|
204
|
+
if ((0, shared_1.toComparableBindings)(existingBindings) !== (0, shared_1.toComparableBindings)(finalBindings)) {
|
|
205
|
+
console.log((0, colors_1.colorGray)(`Bindings count: ${finalBindings.length}`));
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
console.log((0, colors_1.colorGray)("Bindings unchanged."));
|
|
209
|
+
}
|
|
210
|
+
return 0;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=bind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bind.js","sourceRoot":"","sources":["../../../src/commands/cms/bind.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface CmsContentEntry {
|
|
2
|
+
locale: string;
|
|
3
|
+
lookupKey: string;
|
|
4
|
+
value: string;
|
|
5
|
+
}
|
|
6
|
+
export interface CmsContentDocument {
|
|
7
|
+
schemaVersion: "sevenlayers.cms.content.v1";
|
|
8
|
+
generatedAt: string;
|
|
9
|
+
source: string;
|
|
10
|
+
entries: CmsContentEntry[];
|
|
11
|
+
}
|
|
12
|
+
export interface CmsParityIssue {
|
|
13
|
+
type: "missing_field" | "missing_locale" | "missing_required_field" | "empty_value";
|
|
14
|
+
locale?: string;
|
|
15
|
+
lookupKey?: string;
|
|
16
|
+
message: string;
|
|
17
|
+
}
|
|
18
|
+
export interface CmsParityReport {
|
|
19
|
+
locales: string[];
|
|
20
|
+
lookupKeys: string[];
|
|
21
|
+
issues: CmsParityIssue[];
|
|
22
|
+
complete: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function normalizeCmsEntry(input: {
|
|
25
|
+
locale: string;
|
|
26
|
+
lookupKey: string;
|
|
27
|
+
value?: string;
|
|
28
|
+
}): CmsContentEntry;
|
|
29
|
+
export declare function readJsonFile(filePath: string): Promise<unknown>;
|
|
30
|
+
export declare function writeJsonFile(filePath: string, payload: unknown): Promise<void>;
|
|
31
|
+
export declare function parseLegacyCmsInput(input: unknown): CmsContentEntry[];
|
|
32
|
+
export declare function buildContentDocument(entries: CmsContentEntry[], source: string): CmsContentDocument;
|
|
33
|
+
export declare function parseContentDocument(input: unknown): CmsContentDocument;
|
|
34
|
+
export declare function buildParityReport(args: {
|
|
35
|
+
entries: CmsContentEntry[];
|
|
36
|
+
requiredLocales?: string[];
|
|
37
|
+
requiredLookupKeys?: string[];
|
|
38
|
+
allowEmptyValues?: boolean;
|
|
39
|
+
}): CmsParityReport;
|
|
40
|
+
//# sourceMappingURL=content.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../src/commands/cms/content.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,4BAA4B,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,eAAe,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,eAAe,GAAG,gBAAgB,GAAG,wBAAwB,GAAG,aAAa,CAAC;IACpF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAUD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,eAAe,CAMlB;AAED,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAIrE;AAED,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAIrF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,EAAE,CA+BrE;AAiBD,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,CAOnG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,kBAAkB,CAkBvE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE;IACtC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,eAAe,CAsElB"}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.normalizeCmsEntry = normalizeCmsEntry;
|
|
7
|
+
exports.readJsonFile = readJsonFile;
|
|
8
|
+
exports.writeJsonFile = writeJsonFile;
|
|
9
|
+
exports.parseLegacyCmsInput = parseLegacyCmsInput;
|
|
10
|
+
exports.buildContentDocument = buildContentDocument;
|
|
11
|
+
exports.parseContentDocument = parseContentDocument;
|
|
12
|
+
exports.buildParityReport = buildParityReport;
|
|
13
|
+
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
14
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
15
|
+
function normalizeToken(value, label) {
|
|
16
|
+
const normalized = value.trim();
|
|
17
|
+
if (normalized.length === 0) {
|
|
18
|
+
throw new Error(`${label} cannot be empty.`);
|
|
19
|
+
}
|
|
20
|
+
return normalized;
|
|
21
|
+
}
|
|
22
|
+
function normalizeCmsEntry(input) {
|
|
23
|
+
return {
|
|
24
|
+
locale: normalizeToken(input.locale, "locale"),
|
|
25
|
+
lookupKey: normalizeToken(input.lookupKey, "lookupKey"),
|
|
26
|
+
value: input.value ?? ""
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
async function readJsonFile(filePath) {
|
|
30
|
+
const absolutePath = node_path_1.default.resolve(process.cwd(), filePath);
|
|
31
|
+
const raw = await promises_1.default.readFile(absolutePath, "utf8");
|
|
32
|
+
return JSON.parse(raw);
|
|
33
|
+
}
|
|
34
|
+
async function writeJsonFile(filePath, payload) {
|
|
35
|
+
const absolutePath = node_path_1.default.resolve(process.cwd(), filePath);
|
|
36
|
+
await promises_1.default.mkdir(node_path_1.default.dirname(absolutePath), { recursive: true });
|
|
37
|
+
await promises_1.default.writeFile(absolutePath, `${JSON.stringify(payload, null, 2)}\n`, "utf8");
|
|
38
|
+
}
|
|
39
|
+
function parseLegacyCmsInput(input) {
|
|
40
|
+
if (Array.isArray(input)) {
|
|
41
|
+
return input.map((entry) => parseLegacyEntry(entry));
|
|
42
|
+
}
|
|
43
|
+
if (!input || typeof input !== "object") {
|
|
44
|
+
throw new Error("Legacy CMS input must be an object or array.");
|
|
45
|
+
}
|
|
46
|
+
const record = input;
|
|
47
|
+
if (Array.isArray(record.entries)) {
|
|
48
|
+
return record.entries.map((entry) => parseLegacyEntry(entry));
|
|
49
|
+
}
|
|
50
|
+
const entries = [];
|
|
51
|
+
for (const [locale, maybeFieldMap] of Object.entries(record)) {
|
|
52
|
+
if (!maybeFieldMap || typeof maybeFieldMap !== "object" || Array.isArray(maybeFieldMap)) {
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
for (const [lookupKey, value] of Object.entries(maybeFieldMap)) {
|
|
56
|
+
entries.push(normalizeCmsEntry({
|
|
57
|
+
locale,
|
|
58
|
+
lookupKey,
|
|
59
|
+
value: typeof value === "string" ? value : String(value ?? "")
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return entries;
|
|
64
|
+
}
|
|
65
|
+
function parseLegacyEntry(entry) {
|
|
66
|
+
if (!entry || typeof entry !== "object") {
|
|
67
|
+
throw new Error("Legacy CMS entries must be objects.");
|
|
68
|
+
}
|
|
69
|
+
const record = entry;
|
|
70
|
+
const locale = typeof record.locale === "string" ? record.locale : "";
|
|
71
|
+
const lookupKey = typeof record.lookupKey === "string"
|
|
72
|
+
? record.lookupKey
|
|
73
|
+
: typeof record.key === "string"
|
|
74
|
+
? record.key
|
|
75
|
+
: "";
|
|
76
|
+
const value = typeof record.value === "string" ? record.value : String(record.value ?? "");
|
|
77
|
+
return normalizeCmsEntry({ locale, lookupKey, value });
|
|
78
|
+
}
|
|
79
|
+
function buildContentDocument(entries, source) {
|
|
80
|
+
return {
|
|
81
|
+
schemaVersion: "sevenlayers.cms.content.v1",
|
|
82
|
+
generatedAt: new Date().toISOString(),
|
|
83
|
+
source,
|
|
84
|
+
entries: entries.map((entry) => normalizeCmsEntry(entry))
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
function parseContentDocument(input) {
|
|
88
|
+
if (!input || typeof input !== "object") {
|
|
89
|
+
throw new Error("CMS content document must be an object.");
|
|
90
|
+
}
|
|
91
|
+
const record = input;
|
|
92
|
+
if (record.schemaVersion !== "sevenlayers.cms.content.v1") {
|
|
93
|
+
throw new Error("Unsupported CMS content schema.");
|
|
94
|
+
}
|
|
95
|
+
if (!Array.isArray(record.entries)) {
|
|
96
|
+
throw new Error("CMS content document requires entries array.");
|
|
97
|
+
}
|
|
98
|
+
return {
|
|
99
|
+
schemaVersion: "sevenlayers.cms.content.v1",
|
|
100
|
+
generatedAt: typeof record.generatedAt === "string" ? record.generatedAt : new Date().toISOString(),
|
|
101
|
+
source: typeof record.source === "string" ? record.source : "unknown",
|
|
102
|
+
entries: record.entries.map((entry) => parseLegacyEntry(entry))
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function buildParityReport(args) {
|
|
106
|
+
const localeSet = new Set();
|
|
107
|
+
const keySet = new Set();
|
|
108
|
+
const valuesByLocale = new Map();
|
|
109
|
+
for (const entry of args.entries) {
|
|
110
|
+
localeSet.add(entry.locale);
|
|
111
|
+
keySet.add(entry.lookupKey);
|
|
112
|
+
const bucket = valuesByLocale.get(entry.locale) ?? new Map();
|
|
113
|
+
bucket.set(entry.lookupKey, entry.value);
|
|
114
|
+
valuesByLocale.set(entry.locale, bucket);
|
|
115
|
+
}
|
|
116
|
+
const locales = Array.from(localeSet).sort((left, right) => left.localeCompare(right));
|
|
117
|
+
const lookupKeys = Array.from(keySet).sort((left, right) => left.localeCompare(right));
|
|
118
|
+
const issues = [];
|
|
119
|
+
for (const locale of locales) {
|
|
120
|
+
const values = valuesByLocale.get(locale) ?? new Map();
|
|
121
|
+
for (const lookupKey of lookupKeys) {
|
|
122
|
+
if (!values.has(lookupKey)) {
|
|
123
|
+
issues.push({
|
|
124
|
+
type: "missing_field",
|
|
125
|
+
locale,
|
|
126
|
+
lookupKey,
|
|
127
|
+
message: `Locale '${locale}' is missing lookupKey '${lookupKey}'.`
|
|
128
|
+
});
|
|
129
|
+
continue;
|
|
130
|
+
}
|
|
131
|
+
if (!args.allowEmptyValues) {
|
|
132
|
+
const value = values.get(lookupKey) ?? "";
|
|
133
|
+
if (value.trim().length === 0) {
|
|
134
|
+
issues.push({
|
|
135
|
+
type: "empty_value",
|
|
136
|
+
locale,
|
|
137
|
+
lookupKey,
|
|
138
|
+
message: `Locale '${locale}' has empty value for '${lookupKey}'.`
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
for (const requiredLocale of args.requiredLocales ?? []) {
|
|
145
|
+
if (!localeSet.has(requiredLocale)) {
|
|
146
|
+
issues.push({
|
|
147
|
+
type: "missing_locale",
|
|
148
|
+
locale: requiredLocale,
|
|
149
|
+
message: `Required locale '${requiredLocale}' is missing.`
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
for (const requiredLookupKey of args.requiredLookupKeys ?? []) {
|
|
154
|
+
if (!keySet.has(requiredLookupKey)) {
|
|
155
|
+
issues.push({
|
|
156
|
+
type: "missing_required_field",
|
|
157
|
+
lookupKey: requiredLookupKey,
|
|
158
|
+
message: `Required lookupKey '${requiredLookupKey}' is missing from all locales.`
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
locales,
|
|
164
|
+
lookupKeys,
|
|
165
|
+
issues,
|
|
166
|
+
complete: issues.length === 0
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
//# sourceMappingURL=content.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content.js","sourceRoot":"","sources":["../../../src/commands/cms/content.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/commands/cms/doctor.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,UAAU,EAIhB,MAAM,iBAAiB,CAAC;AAwBzB,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAuDzE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleCmsDoctor = handleCmsDoctor;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const args_1 = require("../../core/args");
|
|
9
|
+
const colors_1 = require("../../core/colors");
|
|
10
|
+
const content_1 = require("./content");
|
|
11
|
+
function printUsage() {
|
|
12
|
+
console.log((0, colors_1.colorOrange)("Usage: sevenlayers cms doctor [options]"));
|
|
13
|
+
console.log("");
|
|
14
|
+
console.log("Options:");
|
|
15
|
+
console.log(" --in <path> Content file (default: .sevenlayers/cms-content.json)");
|
|
16
|
+
console.log(" --require-locale <code> Required locale (repeatable)");
|
|
17
|
+
console.log(" --require-field <lookupKey> Required lookup key (repeatable)");
|
|
18
|
+
console.log(" --allow-empty-values Do not flag empty values as issues");
|
|
19
|
+
console.log(" --json Output deterministic JSON");
|
|
20
|
+
console.log(" --help Show this help");
|
|
21
|
+
}
|
|
22
|
+
function defaultInputPath() {
|
|
23
|
+
return ".sevenlayers/cms-content.json";
|
|
24
|
+
}
|
|
25
|
+
async function handleCmsDoctor(parsed) {
|
|
26
|
+
if ((0, args_1.getOptionBoolean)(parsed, "help")) {
|
|
27
|
+
printUsage();
|
|
28
|
+
return 0;
|
|
29
|
+
}
|
|
30
|
+
const inputPath = (0, args_1.getOptionString)(parsed, "in") ?? defaultInputPath();
|
|
31
|
+
const json = (0, args_1.getOptionBoolean)(parsed, "json");
|
|
32
|
+
const requiredLocales = (0, args_1.getOptionStringArray)(parsed, "require-locale");
|
|
33
|
+
const requiredLookupKeys = (0, args_1.getOptionStringArray)(parsed, "require-field");
|
|
34
|
+
const input = await (0, content_1.readJsonFile)(inputPath);
|
|
35
|
+
const document = (0, content_1.parseContentDocument)(input);
|
|
36
|
+
const report = (0, content_1.buildParityReport)({
|
|
37
|
+
entries: document.entries,
|
|
38
|
+
requiredLocales,
|
|
39
|
+
requiredLookupKeys,
|
|
40
|
+
allowEmptyValues: (0, args_1.getOptionBoolean)(parsed, "allow-empty-values")
|
|
41
|
+
});
|
|
42
|
+
if (json) {
|
|
43
|
+
console.log(JSON.stringify({
|
|
44
|
+
success: report.complete,
|
|
45
|
+
input: node_path_1.default.resolve(process.cwd(), inputPath),
|
|
46
|
+
summary: {
|
|
47
|
+
locales: report.locales.length,
|
|
48
|
+
lookupKeys: report.lookupKeys.length,
|
|
49
|
+
issues: report.issues.length
|
|
50
|
+
},
|
|
51
|
+
issues: report.issues
|
|
52
|
+
}, null, 2));
|
|
53
|
+
return report.complete ? 0 : 1;
|
|
54
|
+
}
|
|
55
|
+
console.log((0, colors_1.colorOrange)("CMS doctor report"));
|
|
56
|
+
console.log((0, colors_1.colorGray)(`Input: ${node_path_1.default.resolve(process.cwd(), inputPath)}`));
|
|
57
|
+
console.log((0, colors_1.colorGray)(`Locales: ${report.locales.join(", ") || "<none>"}`));
|
|
58
|
+
console.log((0, colors_1.colorGray)(`Lookup keys: ${report.lookupKeys.join(", ") || "<none>"}`));
|
|
59
|
+
console.log((0, colors_1.colorGray)(`Issues: ${report.issues.length}`));
|
|
60
|
+
if (report.complete) {
|
|
61
|
+
console.log((0, colors_1.colorGreen)("Locale/field parity checks passed."));
|
|
62
|
+
return 0;
|
|
63
|
+
}
|
|
64
|
+
for (const issue of report.issues) {
|
|
65
|
+
console.log((0, colors_1.colorRed)(`- ${issue.message}`));
|
|
66
|
+
}
|
|
67
|
+
return 1;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/commands/cms/doctor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../../src/commands/cms/migrate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAqC,MAAM,iBAAiB,CAAC;AA8BrF,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CA4D1E"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.handleCmsMigrate = handleCmsMigrate;
|
|
7
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
+
const args_1 = require("../../core/args");
|
|
9
|
+
const colors_1 = require("../../core/colors");
|
|
10
|
+
const content_1 = require("./content");
|
|
11
|
+
function printUsage() {
|
|
12
|
+
console.log((0, colors_1.colorOrange)("Usage: sevenlayers cms migrate legacy [options]"));
|
|
13
|
+
console.log("");
|
|
14
|
+
console.log("Options:");
|
|
15
|
+
console.log(" --in <path> Legacy input file (default: .sevenlayers/cms-legacy.json)");
|
|
16
|
+
console.log(" --out <path> Migrated output file (default: .sevenlayers/cms-content.json)");
|
|
17
|
+
console.log(" --dry-run Preview migration summary without writing");
|
|
18
|
+
console.log(" --apply Write migrated file (overrides dry-run)");
|
|
19
|
+
console.log(" --json Output deterministic JSON");
|
|
20
|
+
console.log(" --help Show this help");
|
|
21
|
+
}
|
|
22
|
+
function defaultLegacyPath() {
|
|
23
|
+
return ".sevenlayers/cms-legacy.json";
|
|
24
|
+
}
|
|
25
|
+
function defaultOutputPath() {
|
|
26
|
+
return ".sevenlayers/cms-content.json";
|
|
27
|
+
}
|
|
28
|
+
async function handleCmsMigrate(parsed) {
|
|
29
|
+
if ((0, args_1.getOptionBoolean)(parsed, "help")) {
|
|
30
|
+
printUsage();
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
const mode = parsed.positionals[2];
|
|
34
|
+
if (mode !== "legacy") {
|
|
35
|
+
throw new Error("Usage: sevenlayers cms migrate legacy [options]");
|
|
36
|
+
}
|
|
37
|
+
const inputPath = (0, args_1.getOptionString)(parsed, "in") ?? defaultLegacyPath();
|
|
38
|
+
const outputPath = (0, args_1.getOptionString)(parsed, "out") ?? defaultOutputPath();
|
|
39
|
+
const dryRun = (0, args_1.getOptionBoolean)(parsed, "dry-run") || !(0, args_1.getOptionBoolean)(parsed, "apply");
|
|
40
|
+
const json = (0, args_1.getOptionBoolean)(parsed, "json");
|
|
41
|
+
const legacyInput = await (0, content_1.readJsonFile)(inputPath);
|
|
42
|
+
const entries = (0, content_1.parseLegacyCmsInput)(legacyInput);
|
|
43
|
+
const document = (0, content_1.buildContentDocument)(entries, "cms migrate legacy");
|
|
44
|
+
const parity = (0, content_1.buildParityReport)({ entries: document.entries, allowEmptyValues: true });
|
|
45
|
+
if (!dryRun) {
|
|
46
|
+
await (0, content_1.writeJsonFile)(outputPath, document);
|
|
47
|
+
}
|
|
48
|
+
if (json) {
|
|
49
|
+
console.log(JSON.stringify({
|
|
50
|
+
success: true,
|
|
51
|
+
action: "migrate-legacy",
|
|
52
|
+
dryRun,
|
|
53
|
+
input: node_path_1.default.resolve(process.cwd(), inputPath),
|
|
54
|
+
output: node_path_1.default.resolve(process.cwd(), outputPath),
|
|
55
|
+
summary: {
|
|
56
|
+
entries: document.entries.length,
|
|
57
|
+
locales: parity.locales.length,
|
|
58
|
+
lookupKeys: parity.lookupKeys.length,
|
|
59
|
+
parityComplete: parity.complete,
|
|
60
|
+
issues: parity.issues.length
|
|
61
|
+
}
|
|
62
|
+
}, null, 2));
|
|
63
|
+
return 0;
|
|
64
|
+
}
|
|
65
|
+
console.log((0, colors_1.colorGreen)("CMS legacy migration completed."));
|
|
66
|
+
console.log((0, colors_1.colorGray)(`Input: ${node_path_1.default.resolve(process.cwd(), inputPath)}`));
|
|
67
|
+
console.log((0, colors_1.colorGray)(`Entries: ${document.entries.length}`));
|
|
68
|
+
console.log((0, colors_1.colorGray)(`Locales: ${parity.locales.length}`));
|
|
69
|
+
console.log((0, colors_1.colorGray)(`Lookup keys: ${parity.lookupKeys.length}`));
|
|
70
|
+
if (dryRun) {
|
|
71
|
+
console.log((0, colors_1.colorGray)("Dry-run: migrated file not written."));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
console.log((0, colors_1.colorGray)(`Wrote: ${node_path_1.default.resolve(process.cwd(), outputPath)}`));
|
|
75
|
+
}
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=migrate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/commands/cms/migrate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/commands/cms/registry.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,UAAU,EAGhB,MAAM,iBAAiB,CAAC;AAwLzB,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAe3E"}
|