@codeyam/codeyam-cli 0.1.0-staging.b6c4c78 → 0.1.0-staging.b8b17a5
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/analyzer-template/.build-info.json +8 -8
- package/analyzer-template/log.txt +3 -3
- package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +26 -16
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +0 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -1
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +28 -16
- package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
- package/codeyam-cli/src/cli.js +9 -0
- package/codeyam-cli/src/cli.js.map +1 -1
- package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
- package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
- package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +11 -0
- package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -1
- package/codeyam-cli/src/commands/editor.js +460 -65
- package/codeyam-cli/src/commands/editor.js.map +1 -1
- package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
- package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
- package/codeyam-cli/src/commands/telemetry.js +37 -0
- package/codeyam-cli/src/commands/telemetry.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +994 -1
- package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
- package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +70 -0
- package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +97 -5
- package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +40 -1
- package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +5 -0
- package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +354 -22
- package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
- package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +28 -0
- package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +40 -1
- package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
- package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
- package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
- package/codeyam-cli/src/utils/editorAudit.js +179 -1
- package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
- package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
- package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
- package/codeyam-cli/src/utils/editorEntityChangeStatus.js +13 -7
- package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -1
- package/codeyam-cli/src/utils/editorEntityHelpers.js +18 -3
- package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -1
- package/codeyam-cli/src/utils/editorLoaderHelpers.js +14 -2
- package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -1
- package/codeyam-cli/src/utils/editorMigration.js +1 -1
- package/codeyam-cli/src/utils/editorMigration.js.map +1 -1
- package/codeyam-cli/src/utils/editorScenarios.js +150 -2
- package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
- package/codeyam-cli/src/utils/editorSeedAdapter.js +70 -0
- package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
- package/codeyam-cli/src/utils/entityChangeStatus.js +8 -2
- package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
- package/codeyam-cli/src/utils/fileWatcher.js +38 -0
- package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
- package/codeyam-cli/src/utils/scenariosManifest.js +15 -10
- package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
- package/codeyam-cli/src/utils/telemetry.js +106 -0
- package/codeyam-cli/src/utils/telemetry.js.map +1 -0
- package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
- package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
- package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
- package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +61 -0
- package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DYqG1D_d.js +58 -0
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DggyRwOr.js +41 -0
- package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-BOi8kpwd.js → entity._sha.scenarios._scenarioId.dev-D1eikpe1.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/globals-DRvOjyO3.css +1 -0
- package/codeyam-cli/src/webserver/build/client/assets/{manifest-5f1c29f5.js → manifest-f4212c17.js} +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/{root-BBCQJ_ZM.js → root-F-k2uYj5.js} +15 -15
- package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-if8kM_1Q.js +13 -0
- package/codeyam-cli/src/webserver/build/server/assets/{index-BLKsJR3o.js → index-CHymws6l.js} +1 -1
- package/codeyam-cli/src/webserver/build/server/assets/init-D3HkMDbI.js +10 -0
- package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DTCzJQiH.js +551 -0
- package/codeyam-cli/src/webserver/build/server/index.js +1 -1
- package/codeyam-cli/src/webserver/build-info.json +5 -5
- package/codeyam-cli/src/webserver/editorProxy.js +78 -3
- package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
- package/codeyam-cli/src/webserver/server.js +32 -0
- package/codeyam-cli/src/webserver/server.js.map +1 -1
- package/codeyam-cli/src/webserver/terminalServer.js +7 -2
- package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
- package/codeyam-cli/templates/editor-step-hook.py +7 -0
- package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +1 -1
- package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +1 -1
- package/package.json +2 -1
- package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +28 -16
- package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
- package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-y_5LB2iU.js +0 -58
- package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DBa7T2FK.js +0 -41
- package/codeyam-cli/src/webserver/build/client/assets/globals-BCTpZEY8.css +0 -1
- package/codeyam-cli/src/webserver/build/server/assets/init-C2iMAqYu.js +0 -10
- package/codeyam-cli/src/webserver/build/server/assets/server-build-DR42Xd5a.js +0 -489
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
|
-
"buildTimestamp": "2026-03-
|
|
3
|
-
"buildTime":
|
|
4
|
-
"gitCommit": "
|
|
5
|
-
"nodeVersion": "v20.20.
|
|
6
|
-
"contentHash": "
|
|
7
|
-
"buildNumber":
|
|
8
|
-
"semanticVersion": "0.1.
|
|
9
|
-
"version": "0.1.
|
|
2
|
+
"buildTimestamp": "2026-03-18T14:55:13.042Z",
|
|
3
|
+
"buildTime": 1773845713042,
|
|
4
|
+
"gitCommit": "b8b17a51d446c0cde7f44fe8317c44fb17047660",
|
|
5
|
+
"nodeVersion": "v20.20.1",
|
|
6
|
+
"contentHash": "b046e014847d5b02d10d6795839ccd0d5117627cbd0be413260824610596a63d",
|
|
7
|
+
"buildNumber": 1092,
|
|
8
|
+
"semanticVersion": "0.1.1092",
|
|
9
|
+
"version": "0.1.1092 (2026-03-18T14:55+b046e01)"
|
|
10
10
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
|
|
2
|
-
[3/
|
|
3
|
-
[3/
|
|
2
|
+
[3/18/2026, 2:55:12 PM] > codeyam-combo@1.0.0 mergeDependencies
|
|
3
|
+
[3/18/2026, 2:55:12 PM] > node ./scripts/mergePackageJsonFiles.cjs
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
[3/
|
|
6
|
+
[3/18/2026, 2:55:13 PM] Merged dependencies into root package.json
|
|
7
7
|
|
|
@@ -15,7 +15,6 @@ const editorScenariosSchema = {
|
|
|
15
15
|
screenshot_path: schemaField<string | null>(),
|
|
16
16
|
viewport_width: schemaField<number | null>(),
|
|
17
17
|
viewport_height: schemaField<number | null>(),
|
|
18
|
-
dimension: schemaField<string | null>(),
|
|
19
18
|
dimensions: schemaField<string | null>(),
|
|
20
19
|
screenshot_paths: schemaField<string | null>(),
|
|
21
20
|
page_file_path: schemaField<string | null>(),
|
|
@@ -86,16 +85,6 @@ export async function createEditorScenariosTable(
|
|
|
86
85
|
}
|
|
87
86
|
}
|
|
88
87
|
|
|
89
|
-
// Named dimension column (e.g. "Mobile", "Desktop")
|
|
90
|
-
try {
|
|
91
|
-
await db.schema
|
|
92
|
-
.alterTable('editor_scenarios')
|
|
93
|
-
.addColumn('dimension', 'varchar')
|
|
94
|
-
.execute();
|
|
95
|
-
} catch {
|
|
96
|
-
// Column already exists — expected for fresh databases
|
|
97
|
-
}
|
|
98
|
-
|
|
99
88
|
// Multi-dimension support: JSON array of dimension names and map of screenshot paths
|
|
100
89
|
for (const col of ['dimensions', 'screenshot_paths'] as const) {
|
|
101
90
|
try {
|
|
@@ -121,12 +110,14 @@ export async function createEditorScenariosTable(
|
|
|
121
110
|
}
|
|
122
111
|
}
|
|
123
112
|
|
|
124
|
-
//
|
|
125
|
-
//
|
|
113
|
+
// Legacy backfill: migrate old `dimension` column (single string) into `dimensions`
|
|
114
|
+
// JSON array. Only runs on databases that have the legacy column — new databases
|
|
115
|
+
// won't have it. Separated from the screenshot_paths backfill below so that
|
|
116
|
+
// a missing column doesn't skip both migrations.
|
|
126
117
|
try {
|
|
127
118
|
const rows = await db
|
|
128
119
|
.selectFrom('editor_scenarios')
|
|
129
|
-
.select(['id', 'dimension', '
|
|
120
|
+
.select(['id', 'dimension', 'dimensions'] as any)
|
|
130
121
|
.execute();
|
|
131
122
|
for (const row of rows) {
|
|
132
123
|
const r = row as any;
|
|
@@ -137,8 +128,27 @@ export async function createEditorScenariosTable(
|
|
|
137
128
|
.where('id', '=', r.id)
|
|
138
129
|
.execute();
|
|
139
130
|
}
|
|
131
|
+
}
|
|
132
|
+
} catch {
|
|
133
|
+
// Column doesn't exist (new DB) or other error — skip
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// Backfill: wrap existing single screenshot_path into screenshot_paths object
|
|
137
|
+
try {
|
|
138
|
+
const rows = await db
|
|
139
|
+
.selectFrom('editor_scenarios')
|
|
140
|
+
.select(['id', 'screenshot_path', 'screenshot_paths', 'dimensions'])
|
|
141
|
+
.execute();
|
|
142
|
+
for (const row of rows) {
|
|
143
|
+
const r = row as any;
|
|
140
144
|
if (r.screenshot_path && !r.screenshot_paths) {
|
|
141
|
-
|
|
145
|
+
let dimName = 'Default';
|
|
146
|
+
try {
|
|
147
|
+
const dims = r.dimensions ? JSON.parse(r.dimensions) : null;
|
|
148
|
+
if (Array.isArray(dims) && dims.length > 0) dimName = dims[0];
|
|
149
|
+
} catch {
|
|
150
|
+
/* ignore */
|
|
151
|
+
}
|
|
142
152
|
await db
|
|
143
153
|
.updateTable('editor_scenarios')
|
|
144
154
|
.set({
|
|
@@ -149,6 +159,6 @@ export async function createEditorScenariosTable(
|
|
|
149
159
|
}
|
|
150
160
|
}
|
|
151
161
|
} catch {
|
|
152
|
-
// Backfill is best-effort
|
|
162
|
+
// Backfill is best-effort
|
|
153
163
|
}
|
|
154
164
|
}
|
|
@@ -12,7 +12,6 @@ declare const editorScenariosSchema: {
|
|
|
12
12
|
readonly screenshot_path: string;
|
|
13
13
|
readonly viewport_width: number;
|
|
14
14
|
readonly viewport_height: number;
|
|
15
|
-
readonly dimension: string;
|
|
16
15
|
readonly dimensions: string;
|
|
17
16
|
readonly screenshot_paths: string;
|
|
18
17
|
readonly page_file_path: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editorScenariosTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/editorScenariosTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIxC,QAAA,MAAM,qBAAqB
|
|
1
|
+
{"version":3,"file":"editorScenariosTable.d.ts","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/editorScenariosTable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA2B,MAAM,QAAQ,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAIxC,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;CAmBjB,CAAC;AAEX,MAAM,MAAM,oBAAoB,GAAG;KAChC,CAAC,IAAI,MAAM,OAAO,qBAAqB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,CAAC,CAAC;CAC7E,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAEnC,CAAC,MAAM,oBAAoB,CAAC,EAAE,CAAC;AAEpC,wBAAsB,0BAA0B,CAC9C,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GACd,OAAO,CAAC,IAAI,CAAC,CA+Hf"}
|
|
@@ -11,7 +11,6 @@ const editorScenariosSchema = {
|
|
|
11
11
|
screenshot_path: schemaField(),
|
|
12
12
|
viewport_width: schemaField(),
|
|
13
13
|
viewport_height: schemaField(),
|
|
14
|
-
dimension: schemaField(),
|
|
15
14
|
dimensions: schemaField(),
|
|
16
15
|
screenshot_paths: schemaField(),
|
|
17
16
|
page_file_path: schemaField(),
|
|
@@ -67,16 +66,6 @@ export async function createEditorScenariosTable(db) {
|
|
|
67
66
|
// Column already exists — expected for fresh databases
|
|
68
67
|
}
|
|
69
68
|
}
|
|
70
|
-
// Named dimension column (e.g. "Mobile", "Desktop")
|
|
71
|
-
try {
|
|
72
|
-
await db.schema
|
|
73
|
-
.alterTable('editor_scenarios')
|
|
74
|
-
.addColumn('dimension', 'varchar')
|
|
75
|
-
.execute();
|
|
76
|
-
}
|
|
77
|
-
catch {
|
|
78
|
-
// Column already exists — expected for fresh databases
|
|
79
|
-
}
|
|
80
69
|
// Multi-dimension support: JSON array of dimension names and map of screenshot paths
|
|
81
70
|
for (const col of ['dimensions', 'screenshot_paths']) {
|
|
82
71
|
try {
|
|
@@ -102,12 +91,14 @@ export async function createEditorScenariosTable(db) {
|
|
|
102
91
|
// Column already exists — expected for fresh databases
|
|
103
92
|
}
|
|
104
93
|
}
|
|
105
|
-
//
|
|
106
|
-
//
|
|
94
|
+
// Legacy backfill: migrate old `dimension` column (single string) into `dimensions`
|
|
95
|
+
// JSON array. Only runs on databases that have the legacy column — new databases
|
|
96
|
+
// won't have it. Separated from the screenshot_paths backfill below so that
|
|
97
|
+
// a missing column doesn't skip both migrations.
|
|
107
98
|
try {
|
|
108
99
|
const rows = await db
|
|
109
100
|
.selectFrom('editor_scenarios')
|
|
110
|
-
.select(['id', 'dimension', '
|
|
101
|
+
.select(['id', 'dimension', 'dimensions'])
|
|
111
102
|
.execute();
|
|
112
103
|
for (const row of rows) {
|
|
113
104
|
const r = row;
|
|
@@ -118,8 +109,29 @@ export async function createEditorScenariosTable(db) {
|
|
|
118
109
|
.where('id', '=', r.id)
|
|
119
110
|
.execute();
|
|
120
111
|
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// Column doesn't exist (new DB) or other error — skip
|
|
116
|
+
}
|
|
117
|
+
// Backfill: wrap existing single screenshot_path into screenshot_paths object
|
|
118
|
+
try {
|
|
119
|
+
const rows = await db
|
|
120
|
+
.selectFrom('editor_scenarios')
|
|
121
|
+
.select(['id', 'screenshot_path', 'screenshot_paths', 'dimensions'])
|
|
122
|
+
.execute();
|
|
123
|
+
for (const row of rows) {
|
|
124
|
+
const r = row;
|
|
121
125
|
if (r.screenshot_path && !r.screenshot_paths) {
|
|
122
|
-
|
|
126
|
+
let dimName = 'Default';
|
|
127
|
+
try {
|
|
128
|
+
const dims = r.dimensions ? JSON.parse(r.dimensions) : null;
|
|
129
|
+
if (Array.isArray(dims) && dims.length > 0)
|
|
130
|
+
dimName = dims[0];
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
/* ignore */
|
|
134
|
+
}
|
|
123
135
|
await db
|
|
124
136
|
.updateTable('editor_scenarios')
|
|
125
137
|
.set({
|
|
@@ -131,7 +143,7 @@ export async function createEditorScenariosTable(db) {
|
|
|
131
143
|
}
|
|
132
144
|
}
|
|
133
145
|
catch {
|
|
134
|
-
// Backfill is best-effort
|
|
146
|
+
// Backfill is best-effort
|
|
135
147
|
}
|
|
136
148
|
}
|
|
137
149
|
//# sourceMappingURL=editorScenariosTable.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editorScenariosTable.js","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/editorScenariosTable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,qBAAqB,GAAG;IAC5B,EAAE,EAAE,WAAW,EAAqB;IACpC,UAAU,EAAE,WAAW,EAAU;IACjC,IAAI,EAAE,WAAW,EAAU;IAC3B,WAAW,EAAE,WAAW,EAAiB;IACzC,cAAc,EAAE,WAAW,EAAiB;IAC5C,cAAc,EAAE,WAAW,EAAiB;IAC5C,GAAG,EAAE,WAAW,EAAiB;IACjC,IAAI,EAAE,WAAW,EAAiB;IAClC,eAAe,EAAE,WAAW,EAAiB;IAC7C,cAAc,EAAE,WAAW,EAAiB;IAC5C,eAAe,EAAE,WAAW,EAAiB;IAC7C,
|
|
1
|
+
{"version":3,"file":"editorScenariosTable.js","sourceRoot":"","sources":["../../../../../../../database/src/lib/kysely/tables/editorScenariosTable.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE3D,MAAM,qBAAqB,GAAG;IAC5B,EAAE,EAAE,WAAW,EAAqB;IACpC,UAAU,EAAE,WAAW,EAAU;IACjC,IAAI,EAAE,WAAW,EAAU;IAC3B,WAAW,EAAE,WAAW,EAAiB;IACzC,cAAc,EAAE,WAAW,EAAiB;IAC5C,cAAc,EAAE,WAAW,EAAiB;IAC5C,GAAG,EAAE,WAAW,EAAiB;IACjC,IAAI,EAAE,WAAW,EAAiB;IAClC,eAAe,EAAE,WAAW,EAAiB;IAC7C,cAAc,EAAE,WAAW,EAAiB;IAC5C,eAAe,EAAE,WAAW,EAAiB;IAC7C,UAAU,EAAE,WAAW,EAAiB;IACxC,gBAAgB,EAAE,WAAW,EAAiB;IAC9C,cAAc,EAAE,WAAW,EAAiB;IAC5C,UAAU,EAAE,WAAW,EAAiB;IACxC,YAAY,EAAE,WAAW,EAAiB;IAC1C,UAAU,EAAE,WAAW,EAAqB;IAC5C,UAAU,EAAE,WAAW,EAAqB;CACpC,CAAC;AAMX,MAAM,CAAC,MAAM,2BAA2B,GAAG,MAAM,CAAC,IAAI,CACpD,qBAAqB,CACY,CAAC;AAEpC,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,EAAe;IAEf,MAAM,EAAE,CAAC,MAAM;SACZ,WAAW,CAAC,kBAAkB,CAAC;SAC/B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,GAA4B,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SAC3E,SAAS,CAAC,YAAY,EAAE,MAAM,EAAE,CAAC,GAA4B,EAAE,EAAE,CAChE,GAAG,CAAC,OAAO,EAAE,CACd;SACA,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAA4B,EAAE,EAAE,CAC7D,GAAG,CAAC,OAAO,EAAE,CACd;SACA,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;SAChC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC;SACtC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC;SACtC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC;SAC3B,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC;SAC5B,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC;SACvC,SAAS,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;SACrD,SAAS,CAAC,YAAY,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;SACrD,WAAW,EAAE;SACb,OAAO,EAAE,CAAC;IAEb,8EAA8E;IAC9E,KAAK,MAAM,GAAG,IAAI;QAChB,gBAAgB;QAChB,gBAAgB;QAChB,KAAK;QACL,MAAM;QACN,iBAAiB;KACT,EAAE,CAAC;QACX,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM;iBACZ,UAAU,CAAC,kBAAkB,CAAC;iBAC9B,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC;iBACzB,OAAO,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,iBAAiB,CAAU,EAAE,CAAC;QACjE,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM;iBACZ,UAAU,CAAC,kBAAkB,CAAC;iBAC9B,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC;iBACzB,OAAO,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,qFAAqF;IACrF,KAAK,MAAM,GAAG,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAU,EAAE,CAAC;QAC9D,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM;iBACZ,UAAU,CAAC,kBAAkB,CAAC;iBAC9B,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC;iBACtB,OAAO,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,oFAAoF;IACpF,KAAK,MAAM,GAAG,IAAI,CAAC,gBAAgB,EAAE,YAAY,EAAE,cAAc,CAAU,EAAE,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM;iBACZ,UAAU,CAAC,kBAAkB,CAAC;iBAC9B,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC;iBACzB,OAAO,EAAE,CAAC;QACf,CAAC;QAAC,MAAM,CAAC;YACP,uDAAuD;QACzD,CAAC;IACH,CAAC;IAED,oFAAoF;IACpF,iFAAiF;IACjF,4EAA4E;IAC5E,iDAAiD;IACjD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE;aAClB,UAAU,CAAC,kBAAkB,CAAC;aAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAQ,CAAC;aAChD,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,GAAU,CAAC;YACrB,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC;gBACjC,MAAM,EAAE;qBACL,WAAW,CAAC,kBAAkB,CAAC;qBAC/B,GAAG,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;qBAClD,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;qBACtB,OAAO,EAAE,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,sDAAsD;IACxD,CAAC;IAED,8EAA8E;IAC9E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,EAAE;aAClB,UAAU,CAAC,kBAAkB,CAAC;aAC9B,MAAM,CAAC,CAAC,IAAI,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;aACnE,OAAO,EAAE,CAAC;QACb,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,GAAU,CAAC;YACrB,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;gBAC7C,IAAI,OAAO,GAAG,SAAS,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;wBAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAChE,CAAC;gBAAC,MAAM,CAAC;oBACP,YAAY;gBACd,CAAC;gBACD,MAAM,EAAE;qBACL,WAAW,CAAC,kBAAkB,CAAC;qBAC/B,GAAG,CAAC;oBACH,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,eAAe,EAAE,CAAC;iBACnE,CAAC;qBACD,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;qBACtB,OAAO,EAAE,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,0BAA0B;IAC5B,CAAC;AACH,CAAC"}
|
package/codeyam-cli/src/cli.js
CHANGED
|
@@ -27,8 +27,11 @@ import memoryCommand from "./commands/memory.js";
|
|
|
27
27
|
import editorCommand from "./commands/editor.js";
|
|
28
28
|
import setupSimulationsCommand from "./commands/setup-simulations.js";
|
|
29
29
|
import { syncMocksMiddleware } from "./utils/syncMocksMiddleware.js";
|
|
30
|
+
import { telemetryMiddleware } from "./utils/telemetryMiddleware.js";
|
|
31
|
+
import { captureEvent } from "./utils/telemetry.js";
|
|
30
32
|
import { getDisplayVersion } from "./utils/versionInfo.js";
|
|
31
33
|
import { simulationGateMiddleware, buildSimulationEpilogue, } from "./utils/simulationGateMiddleware.js";
|
|
34
|
+
import telemetryCommand from "./commands/telemetry.js";
|
|
32
35
|
// Install global signal handlers for automatic process cleanup
|
|
33
36
|
// This ensures all child processes (analyzer, capture, etc.) are cleaned up on:
|
|
34
37
|
// - Ctrl+C (SIGINT)
|
|
@@ -49,11 +52,13 @@ yargs(hideBin(process.argv))
|
|
|
49
52
|
.usage('CodeYam local development CLI')
|
|
50
53
|
.middleware(simulationGateMiddleware)
|
|
51
54
|
.middleware(syncMocksMiddleware)
|
|
55
|
+
.middleware(telemetryMiddleware)
|
|
52
56
|
// Core commands (always visible in help)
|
|
53
57
|
.command(defaultCommand)
|
|
54
58
|
.command(startCommand)
|
|
55
59
|
.command(stopCommand)
|
|
56
60
|
.command(memoryCommand)
|
|
61
|
+
.command(telemetryCommand)
|
|
57
62
|
// Hidden commands (shown in epilogue when simulations are enabled)
|
|
58
63
|
.command(withoutDescribe(initCommand))
|
|
59
64
|
.command(withoutDescribe(updateConfigCommand))
|
|
@@ -81,6 +86,10 @@ yargs(hideBin(process.argv))
|
|
|
81
86
|
.strict()
|
|
82
87
|
.parseAsync()
|
|
83
88
|
.catch((error) => {
|
|
89
|
+
captureEvent('cli_error', {
|
|
90
|
+
command: process.argv[2] ?? 'unknown',
|
|
91
|
+
error_type: error?.constructor?.name ?? 'Error',
|
|
92
|
+
});
|
|
84
93
|
console.error('CLI Error:', error.message);
|
|
85
94
|
process.exit(1);
|
|
86
95
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,0BAA0B;AAC1B,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,kBAAkB,MAAM,yBAAyB,CAAC;AACzD,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,cAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,oBAAoB,MAAM,oCAAoC,CAAC;AACtE,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,YAAY,MAAM,kBAAkB,CAAC;AAC5C,OAAO,gBAAgB,MAAM,sBAAsB,CAAC;AACpD,OAAO,mBAAmB,MAAM,0BAA0B,CAAC;AAC3D,OAAO,WAAW,MAAM,iBAAiB,CAAC;AAC1C,OAAO,eAAe,MAAM,qBAAqB,CAAC;AAClD,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,aAAa,MAAM,mBAAmB,CAAC;AAC9C,OAAO,uBAAuB,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests that `codeyam editor isolate` correctly parses multiple component
|
|
3
|
+
* names whether passed as separate args or a single quoted string.
|
|
4
|
+
*
|
|
5
|
+
* Bug: `codeyam editor isolate A B C` failed because yargs .strict()
|
|
6
|
+
* rejected extra positionals beyond the two declared (step, json).
|
|
7
|
+
* Claude would then try one at a time, wasting time and tokens.
|
|
8
|
+
*/
|
|
9
|
+
import { parseIsolateArgs } from "../editorIsolateArgs.js";
|
|
10
|
+
describe('parseIsolateArgs', () => {
|
|
11
|
+
it('should parse a single component name from json arg', () => {
|
|
12
|
+
expect(parseIsolateArgs('LogoMark', [])).toEqual(['LogoMark']);
|
|
13
|
+
});
|
|
14
|
+
it('should parse space-separated names from a single quoted json arg', () => {
|
|
15
|
+
// codeyam editor isolate "LogoMark AppHeader Button"
|
|
16
|
+
expect(parseIsolateArgs('LogoMark AppHeader Button', [])).toEqual([
|
|
17
|
+
'LogoMark',
|
|
18
|
+
'AppHeader',
|
|
19
|
+
'Button',
|
|
20
|
+
]);
|
|
21
|
+
});
|
|
22
|
+
it('should parse comma-separated names from json arg', () => {
|
|
23
|
+
expect(parseIsolateArgs('LogoMark,AppHeader,Button', [])).toEqual([
|
|
24
|
+
'LogoMark',
|
|
25
|
+
'AppHeader',
|
|
26
|
+
'Button',
|
|
27
|
+
]);
|
|
28
|
+
});
|
|
29
|
+
it('should collect extra positional args from argv._', () => {
|
|
30
|
+
// codeyam editor isolate LogoMark AppHeader Button
|
|
31
|
+
// yargs: json="LogoMark", argv._=["editor", "AppHeader", "Button"]
|
|
32
|
+
expect(parseIsolateArgs('LogoMark', ['editor', 'AppHeader', 'Button'])).toEqual(['LogoMark', 'AppHeader', 'Button']);
|
|
33
|
+
});
|
|
34
|
+
it('should deduplicate names from json and extras', () => {
|
|
35
|
+
expect(parseIsolateArgs('LogoMark', ['editor', 'LogoMark', 'AppHeader'])).toEqual(['LogoMark', 'AppHeader']);
|
|
36
|
+
});
|
|
37
|
+
it('should filter out empty strings', () => {
|
|
38
|
+
expect(parseIsolateArgs('LogoMark AppHeader', [])).toEqual([
|
|
39
|
+
'LogoMark',
|
|
40
|
+
'AppHeader',
|
|
41
|
+
]);
|
|
42
|
+
});
|
|
43
|
+
it('should return empty array when no names provided', () => {
|
|
44
|
+
expect(parseIsolateArgs(undefined, [])).toEqual([]);
|
|
45
|
+
expect(parseIsolateArgs('', [])).toEqual([]);
|
|
46
|
+
});
|
|
47
|
+
it('should filter out "editor" from argv._', () => {
|
|
48
|
+
expect(parseIsolateArgs(undefined, ['editor', 'LogoMark', 'AppHeader'])).toEqual(['LogoMark', 'AppHeader']);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=editor.isolateArgs.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"editor.isolateArgs.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.isolateArgs.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,qDAAqD;QACrD,MAAM,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAChE,UAAU;YACV,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAChE,UAAU;YACV,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,mDAAmD;QACnD,mEAAmE;QACnE,MAAM,CACJ,gBAAgB,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAChE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CACJ,gBAAgB,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAClE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1D,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CACjE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -41,5 +41,16 @@ describe('editor CLI step dispatch', () => {
|
|
|
41
41
|
expect(editorSource).toMatch(fnPattern);
|
|
42
42
|
}
|
|
43
43
|
});
|
|
44
|
+
it('should include dimension in all preview commands that contain scenarioId', () => {
|
|
45
|
+
// Find all lines that contain a preview command with scenarioId.
|
|
46
|
+
// Every such line must also include "dimension" to avoid Claude getting
|
|
47
|
+
// an error when copying the example command verbatim.
|
|
48
|
+
const lines = editorSource.split('\n');
|
|
49
|
+
const previewWithScenarioId = lines.filter((line) => line.includes('scenarioId') && line.includes('preview'));
|
|
50
|
+
expect(previewWithScenarioId.length).toBeGreaterThan(0);
|
|
51
|
+
for (const line of previewWithScenarioId) {
|
|
52
|
+
expect(line).toContain('dimension');
|
|
53
|
+
}
|
|
54
|
+
});
|
|
44
55
|
});
|
|
45
56
|
//# sourceMappingURL=editor.stepDispatch.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"editor.stepDispatch.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.stepDispatch.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;GASG;AACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EACvC,MAAM,CACP,CAAC;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,2DAA2D;QAC3D,kDAAkD;QAClD,kFAAkF;QAClF,qEAAqE;QACrE,EAAE;QACF,8EAA8E;QAE9E,wEAAwE;QACxE,kDAAkD;QAClD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CACpC,2CAA2C,CAC5C,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,WAAY,CAAC,CAAC,CAAC,CAAC;QAEnC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC;YAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;YACvD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,wBAAwB,IAAI,SAAS,CAAC,CAAC;YACpE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"editor.stepDispatch.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.stepDispatch.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;GASG;AACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EACvC,MAAM,CACP,CAAC;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,2DAA2D;QAC3D,kDAAkD;QAClD,kFAAkF;QAClF,qEAAqE;QACrE,EAAE;QACF,8EAA8E;QAE9E,wEAAwE;QACxE,kDAAkD;QAClD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CACpC,2CAA2C,CAC5C,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,WAAY,CAAC,CAAC,CAAC,CAAC;QAEnC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC;YAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;YACvD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,wBAAwB,IAAI,SAAS,CAAC,CAAC;YACpE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,iEAAiE;QACjE,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAClE,CAAC;QAEF,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|