@coze-arch/cli 0.0.15-alpha.dfd4c4 → 0.0.16-alpha.a1c0bb

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.
Files changed (2) hide show
  1. package/lib/cli.js +259 -198
  2. package/package.json +1 -1
package/lib/cli.js CHANGED
@@ -2107,7 +2107,7 @@ const EventBuilder = {
2107
2107
  };
2108
2108
 
2109
2109
  var name = "@coze-arch/cli";
2110
- var version = "0.0.15-alpha.dfd4c4";
2110
+ var version = "0.0.16-alpha.a1c0bb";
2111
2111
  var description = "coze coding devtools cli";
2112
2112
  var license = "MIT";
2113
2113
  var author = "fanwenjie.fe@bytedance.com";
@@ -6148,201 +6148,8 @@ const byFlag = (flag) => {
6148
6148
  };
6149
6149
 
6150
6150
  function _optionalChain$4(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
6151
- const PATCH_ID$3 = 'vite/add-validate@0.0.14';
6152
- const COZE_FILE = '.coze';
6153
- const VALIDATE_SCRIPT_FILE = 'scripts/validate.sh';
6154
- const PACKAGE_JSON_FILE$1 = 'package.json';
6155
-
6156
- const VALIDATE_LINE = 'validate = ["bash", "./scripts/validate.sh"]';
6157
-
6158
- const REQUIRED_SCRIPTS = {
6159
- 'ts-check': 'tsc -p tsconfig.json',
6160
- 'lint:build': 'eslint . --quiet',
6161
- validate: "pnpm run --parallel '/^(ts-check|lint:build)$/'",
6162
- };
6163
-
6164
-
6165
-
6166
-
6167
-
6168
- const getTemplateValidateScriptPath = () =>
6169
- path.join(getTemplatesDir(), 'vite', 'scripts', 'validate.sh');
6170
-
6171
- const getProjectValidateScriptPath = (projectFolder) =>
6172
- path.join(projectFolder, VALIDATE_SCRIPT_FILE);
6173
-
6174
- const readTemplateValidateScriptContent = async () =>
6175
- fs$1.readFile(getTemplateValidateScriptPath(), 'utf-8');
6176
-
6177
- const hasValidateInCoze = (context) =>
6178
- _optionalChain$4([context, 'access', _ => _.cozeConfig, 'optionalAccess', _2 => _2.dev, 'optionalAccess', _3 => _3.validate]) !== undefined;
6179
-
6180
- const getMissingScripts = (
6181
- scripts,
6182
- ) => {
6183
- const missing = {};
6184
- for (const [key, value] of Object.entries(REQUIRED_SCRIPTS)) {
6185
- if (!scripts || scripts[key] === undefined) {
6186
- missing[key] = value;
6187
- }
6188
- }
6189
- return missing;
6190
- };
6191
-
6192
- const addValidateToCoze = async (projectFolder) => {
6193
- const cozePath = path.join(projectFolder, COZE_FILE);
6194
- const content = await fs$1.readFile(cozePath, 'utf-8');
6195
-
6196
- const lines = content.split('\n');
6197
- let devStart = -1;
6198
- let devEnd = -1;
6199
-
6200
- for (let i = 0; i < lines.length; i++) {
6201
- if (lines[i].trim() === '[dev]') {
6202
- devStart = i;
6203
- } else if (devStart !== -1 && lines[i].startsWith('[')) {
6204
- devEnd = i;
6205
- break;
6206
- }
6207
- }
6208
-
6209
- if (devStart === -1) {
6210
- return false;
6211
- }
6212
-
6213
- if (devEnd === -1) {
6214
- devEnd = lines.length;
6215
- }
6216
-
6217
- lines.splice(devEnd, 0, VALIDATE_LINE);
6218
- await fs$1.writeFile(cozePath, lines.join('\n'), 'utf-8');
6219
- return true;
6220
- };
6221
-
6222
- const createValidateScript = async (
6223
- projectFolder,
6224
- ) => {
6225
- const targetPath = getProjectValidateScriptPath(projectFolder);
6226
- if (await isFileExists(targetPath)) {
6227
- return false;
6228
- }
6229
-
6230
- const scriptsDir = path.join(projectFolder, 'scripts');
6231
- if (!(await isFileExists(scriptsDir))) {
6232
- await fs$1.mkdir(scriptsDir, { recursive: true });
6233
- }
6234
-
6235
- const templateContent = await readTemplateValidateScriptContent();
6236
- await fs$1.writeFile(targetPath, templateContent, 'utf-8');
6237
- return true;
6238
- };
6239
-
6240
- const addMissingScriptsToPackageJson = async (
6241
- projectFolder,
6242
- ) => {
6243
- const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE$1);
6244
- if (!(await isFileExists(packageJsonPath))) {
6245
- return false;
6246
- }
6247
-
6248
- const content = await fs$1.readFile(packageJsonPath, 'utf-8');
6249
- const packageJson = safeJsonParse(content, null);
6250
- if (!packageJson) {
6251
- return false;
6252
- }
6253
-
6254
- const missingScripts = getMissingScripts(packageJson.scripts);
6255
- if (Object.keys(missingScripts).length === 0) {
6256
- return false;
6257
- }
6258
-
6259
- packageJson.scripts = { ...packageJson.scripts, ...missingScripts };
6260
- await fs$1.writeFile(
6261
- packageJsonPath,
6262
- JSON.stringify(packageJson, null, 2),
6263
- 'utf-8',
6264
- );
6265
- return true;
6266
- };
6267
-
6268
- const patchViteAddValidate = {
6269
- id: PATCH_ID$3,
6270
- template: 'vite',
6271
- disabled: byFlag('coding.arch.patch_vite_validate'),
6272
- operations: [
6273
- {
6274
- kind: 'file-patch',
6275
- file: COZE_FILE,
6276
- description: '在 [dev] 下添加 validate 命令',
6277
- },
6278
- {
6279
- kind: 'create-file',
6280
- file: VALIDATE_SCRIPT_FILE,
6281
- description: '创建 validate 脚本',
6282
- },
6283
- {
6284
- kind: 'file-patch',
6285
- file: PACKAGE_JSON_FILE$1,
6286
- description: '补齐 validate/ts-check/lint:build 脚本',
6287
- },
6288
- ],
6289
- shouldApply: context =>
6290
- context.template === 'vite' && !hasValidateInCoze(context),
6291
- apply: async (context) => {
6292
- if (context.template !== 'vite') {
6293
- return {
6294
- applied: false,
6295
- patchId: PATCH_ID$3,
6296
- message: 'Only applies to vite projects, skipping',
6297
- };
6298
- }
6299
-
6300
- if (hasValidateInCoze(context)) {
6301
- return {
6302
- applied: false,
6303
- patchId: PATCH_ID$3,
6304
- message: '.coze already has validate config, skipping',
6305
- };
6306
- }
6307
-
6308
- const cozeUpdated = await addValidateToCoze(context.projectFolder);
6309
- if (!cozeUpdated) {
6310
- return {
6311
- applied: false,
6312
- patchId: PATCH_ID$3,
6313
- message:
6314
- 'Failed to add validate to .coze ([dev] section not found), skipping',
6315
- };
6316
- }
6317
- logger.info('Patched .coze: added validate command');
6318
-
6319
- const scriptCreated = await createValidateScript(context.projectFolder);
6320
- if (scriptCreated) {
6321
- logger.info('Created scripts/validate.sh');
6322
- } else {
6323
- logger.info('scripts/validate.sh already exists, skipping');
6324
- }
6325
-
6326
- const scriptsUpdated = await addMissingScriptsToPackageJson(
6327
- context.projectFolder,
6328
- );
6329
- if (scriptsUpdated) {
6330
- logger.info('Patched package.json: added missing scripts');
6331
- } else {
6332
- logger.info('package.json scripts already complete, skipping');
6333
- }
6334
-
6335
- return {
6336
- applied: true,
6337
- patchId: PATCH_ID$3,
6338
- message: 'Added validate support to vite project',
6339
- };
6340
- },
6341
- };
6342
-
6343
- function _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
6344
6151
  const PATCH_ID$2 = 'taro/update-pack-script-for-tt-build@0.0.13';
6345
- const PACKAGE_JSON_FILE = 'package.json';
6152
+ const PACKAGE_JSON_FILE$1 = 'package.json';
6346
6153
  const PACK_SCRIPT_FILE = '.cozeproj/scripts/pack.sh';
6347
6154
  const LEGACY_PACK_SCRIPT_HASHES = new Set([
6348
6155
  '987575c08e1c32ce7bc553e1668b3ad8faad5623343fd0d21fea34d39f25a56d',
@@ -6411,7 +6218,7 @@ const hashContent = (content) =>
6411
6218
  const readPackageScripts = async (
6412
6219
  projectFolder,
6413
6220
  ) => {
6414
- const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE);
6221
+ const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE$1);
6415
6222
  if (!(await isFileExists(packageJsonPath))) {
6416
6223
  return null;
6417
6224
  }
@@ -6419,12 +6226,12 @@ const readPackageScripts = async (
6419
6226
  const packageJsonContent = await fs$1.readFile(packageJsonPath, 'utf-8');
6420
6227
  const packageJson = safeJsonParse(packageJsonContent, null);
6421
6228
 
6422
- return _optionalChain$3([packageJson, 'optionalAccess', _ => _.scripts]) || null;
6229
+ return _optionalChain$4([packageJson, 'optionalAccess', _ => _.scripts]) || null;
6423
6230
  };
6424
6231
 
6425
6232
  const hasBuildTtScript = async (projectFolder) => {
6426
6233
  const scripts = await readPackageScripts(projectFolder);
6427
- return typeof _optionalChain$3([scripts, 'optionalAccess', _2 => _2['build:tt']]) === 'string';
6234
+ return typeof _optionalChain$4([scripts, 'optionalAccess', _2 => _2['build:tt']]) === 'string';
6428
6235
  };
6429
6236
 
6430
6237
  const hasLegacyPackScript = async (projectFolder) => {
@@ -6759,6 +6566,256 @@ const patchNextOutputTracingRoot = {
6759
6566
  },
6760
6567
  };
6761
6568
 
6569
+ function _optionalChain$3(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
6570
+
6571
+
6572
+ const COZE_FILE = '.coze';
6573
+ const PACKAGE_JSON_FILE = 'package.json';
6574
+
6575
+ const VALIDATE_RELATED_SCRIPTS = {
6576
+ nextjs: ['validate', 'ts-check', 'lint:build'],
6577
+ vite: ['validate', 'ts-check', 'lint:build'],
6578
+ 'nuxt-vue': ['validate', 'ts-check', 'lint:build'],
6579
+ taro: ['validate', 'lint:build', 'tsc'],
6580
+ expo: ['validate', 'lint:client', 'lint:server'],
6581
+ };
6582
+
6583
+
6584
+
6585
+
6586
+
6587
+ const FG_KEY_MAP = {
6588
+ nextjs: 'coding.arch.patch_nextjs_validate',
6589
+ vite: 'coding.arch.patch_vite_validate',
6590
+ 'nuxt-vue': 'coding.arch.patch_nuxt_vue_validate',
6591
+ taro: 'coding.arch.patch_taro_validate',
6592
+ expo: 'coding.arch.patch_expo_validate',
6593
+ };
6594
+
6595
+ const VALIDATE_SCRIPT_MAP = {
6596
+ nextjs: 'scripts/validate.sh',
6597
+ vite: 'scripts/validate.sh',
6598
+ 'nuxt-vue': 'scripts/validate.sh',
6599
+ taro: '.cozeproj/scripts/validate.sh',
6600
+ expo: '.cozeproj/scripts/validate.sh',
6601
+ };
6602
+
6603
+ const hasValidateInCoze = (context) =>
6604
+ _optionalChain$3([context, 'access', _ => _.cozeConfig, 'optionalAccess', _2 => _2.dev, 'optionalAccess', _3 => _3.validate]) !== undefined;
6605
+
6606
+ const getTemplateScripts = async (
6607
+ template,
6608
+ ) => {
6609
+ const templatePackageJsonPath = path.join(
6610
+ getTemplatesDir(),
6611
+ template,
6612
+ PACKAGE_JSON_FILE,
6613
+ );
6614
+ const content = await fs$1.readFile(templatePackageJsonPath, 'utf-8');
6615
+ const templatePackageJson = safeJsonParse(content, null);
6616
+ if (!_optionalChain$3([templatePackageJson, 'optionalAccess', _4 => _4.scripts])) {
6617
+ return {};
6618
+ }
6619
+
6620
+ const relatedKeys = VALIDATE_RELATED_SCRIPTS[template];
6621
+ const result = {};
6622
+ for (const key of relatedKeys) {
6623
+ if (templatePackageJson.scripts[key] !== undefined) {
6624
+ result[key] = templatePackageJson.scripts[key];
6625
+ }
6626
+ }
6627
+ return result;
6628
+ };
6629
+
6630
+ const getMissingScripts = (
6631
+ scripts,
6632
+ templateScripts,
6633
+ ) => {
6634
+ const missing = {};
6635
+ for (const [key, value] of Object.entries(templateScripts)) {
6636
+ if (!scripts || scripts[key] === undefined) {
6637
+ missing[key] = value;
6638
+ }
6639
+ }
6640
+ return missing;
6641
+ };
6642
+
6643
+ const addValidateToCoze = async (
6644
+ projectFolder,
6645
+ validateScriptPath,
6646
+ ) => {
6647
+ const cozePath = path.join(projectFolder, COZE_FILE);
6648
+ const content = await fs$1.readFile(cozePath, 'utf-8');
6649
+
6650
+ const validateLine = `validate = ["bash", "${validateScriptPath}"]`;
6651
+
6652
+ const lines = content.split('\n');
6653
+ let devStart = -1;
6654
+ let devEnd = -1;
6655
+
6656
+ for (let i = 0; i < lines.length; i++) {
6657
+ if (lines[i].trim() === '[dev]') {
6658
+ devStart = i;
6659
+ } else if (devStart !== -1 && lines[i].startsWith('[')) {
6660
+ devEnd = i;
6661
+ break;
6662
+ }
6663
+ }
6664
+
6665
+ if (devStart === -1) {
6666
+ return false;
6667
+ }
6668
+
6669
+ if (devEnd === -1) {
6670
+ devEnd = lines.length;
6671
+ }
6672
+
6673
+ lines.splice(devEnd, 0, validateLine);
6674
+ await fs$1.writeFile(cozePath, lines.join('\n'), 'utf-8');
6675
+ return true;
6676
+ };
6677
+
6678
+ const createValidateScript = async (
6679
+ projectFolder,
6680
+ template,
6681
+ validateScriptFile,
6682
+ ) => {
6683
+ const targetPath = path.join(projectFolder, validateScriptFile);
6684
+ if (await isFileExists(targetPath)) {
6685
+ return false;
6686
+ }
6687
+
6688
+ const scriptsDir = path.join(projectFolder, validateScriptFile.split('/').slice(0, -1).join('/'));
6689
+ if (!(await isFileExists(scriptsDir))) {
6690
+ await fs$1.mkdir(scriptsDir, { recursive: true });
6691
+ }
6692
+
6693
+ const templateScriptPath = path.join(
6694
+ getTemplatesDir(),
6695
+ template,
6696
+ validateScriptFile,
6697
+ );
6698
+ const templateContent = await fs$1.readFile(templateScriptPath, 'utf-8');
6699
+ await fs$1.writeFile(targetPath, templateContent, 'utf-8');
6700
+ return true;
6701
+ };
6702
+
6703
+ const addMissingScriptsToPackageJson = async (
6704
+ projectFolder,
6705
+ template,
6706
+ ) => {
6707
+ const packageJsonPath = path.join(projectFolder, PACKAGE_JSON_FILE);
6708
+ if (!(await isFileExists(packageJsonPath))) {
6709
+ return false;
6710
+ }
6711
+
6712
+ const content = await fs$1.readFile(packageJsonPath, 'utf-8');
6713
+ const packageJson = safeJsonParse(content, null);
6714
+ if (!packageJson) {
6715
+ return false;
6716
+ }
6717
+
6718
+ const templateScripts = await getTemplateScripts(template);
6719
+ const missingScripts = getMissingScripts(packageJson.scripts, templateScripts);
6720
+ if (Object.keys(missingScripts).length === 0) {
6721
+ return false;
6722
+ }
6723
+
6724
+ packageJson.scripts = { ...packageJson.scripts, ...missingScripts };
6725
+ await fs$1.writeFile(
6726
+ packageJsonPath,
6727
+ JSON.stringify(packageJson, null, 2),
6728
+ 'utf-8',
6729
+ );
6730
+ return true;
6731
+ };
6732
+
6733
+ const createAddValidatePatch = (template) => {
6734
+ const patchId = `${template}/add-validate@0.0.1`;
6735
+ const validateScriptFile = VALIDATE_SCRIPT_MAP[template];
6736
+ const validateScriptPath = template === 'taro' || template === 'expo'
6737
+ ? validateScriptFile
6738
+ : `./${validateScriptFile}`;
6739
+
6740
+ return {
6741
+ id: patchId,
6742
+ template,
6743
+ disabled: byFlag(FG_KEY_MAP[template]),
6744
+ operations: [
6745
+ {
6746
+ kind: 'file-patch',
6747
+ file: COZE_FILE,
6748
+ description: '在 [dev] 下添加 validate 命令',
6749
+ },
6750
+ {
6751
+ kind: 'create-file',
6752
+ file: validateScriptFile,
6753
+ description: '创建 validate 脚本',
6754
+ },
6755
+ {
6756
+ kind: 'file-patch',
6757
+ file: PACKAGE_JSON_FILE,
6758
+ description: '补齐 validate/ts-check/lint:build 脚本',
6759
+ },
6760
+ ],
6761
+ shouldApply: context => !hasValidateInCoze(context),
6762
+ apply: async (context) => {
6763
+ const cozeUpdated = await addValidateToCoze(
6764
+ context.projectFolder,
6765
+ validateScriptPath,
6766
+ );
6767
+ if (!cozeUpdated) {
6768
+ return {
6769
+ applied: false,
6770
+ patchId,
6771
+ message:
6772
+ 'Failed to add validate to .coze ([dev] section not found), skipping',
6773
+ };
6774
+ }
6775
+ if (context.cozeConfig) {
6776
+ context.cozeConfig.dev = {
6777
+ ...context.cozeConfig.dev,
6778
+ validate: ['bash', validateScriptPath],
6779
+ };
6780
+ }
6781
+ logger.info('Patched .coze: added validate command');
6782
+
6783
+ const scriptCreated = await createValidateScript(
6784
+ context.projectFolder,
6785
+ template,
6786
+ validateScriptFile,
6787
+ );
6788
+ if (scriptCreated) {
6789
+ logger.info(`Created ${validateScriptFile}`);
6790
+ } else {
6791
+ logger.info(`${validateScriptFile} already exists, skipping`);
6792
+ }
6793
+
6794
+ const scriptsUpdated = await addMissingScriptsToPackageJson(
6795
+ context.projectFolder,
6796
+ template,
6797
+ );
6798
+ if (scriptsUpdated) {
6799
+ logger.info('Patched package.json: added missing scripts');
6800
+ } else {
6801
+ logger.info('package.json scripts already complete, skipping');
6802
+ }
6803
+
6804
+ return {
6805
+ applied: true,
6806
+ patchId,
6807
+ message: `Added validate support to ${template} project`,
6808
+ };
6809
+ },
6810
+ };
6811
+ };
6812
+
6813
+ const patchNextjsAddValidate = createAddValidatePatch('nextjs');
6814
+ const patchViteAddValidate = createAddValidatePatch('vite');
6815
+ const patchNuxtVueAddValidate = createAddValidatePatch('nuxt-vue');
6816
+ const patchTaroAddValidate = createAddValidatePatch('taro');
6817
+ const patchExpoAddValidate = createAddValidatePatch('expo');
6818
+
6762
6819
  const patches = [
6763
6820
  replaceNpxWithPnpmPatchNextjs,
6764
6821
  replaceNpxWithPnpmPatchVite,
@@ -6766,7 +6823,11 @@ const patches = [
6766
6823
  patchNextOutputTracingRoot,
6767
6824
  patchTaroAgentsMd,
6768
6825
  patchTaroPackScript,
6826
+ patchNextjsAddValidate,
6769
6827
  patchViteAddValidate,
6828
+ patchNuxtVueAddValidate,
6829
+ patchTaroAddValidate,
6830
+ patchExpoAddValidate,
6770
6831
  ] ;
6771
6832
 
6772
6833
  const getTemplatePatches = (
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coze-arch/cli",
3
- "version": "0.0.15-alpha.dfd4c4",
3
+ "version": "0.0.16-alpha.a1c0bb",
4
4
  "private": false,
5
5
  "description": "coze coding devtools cli",
6
6
  "license": "MIT",