@farris/cli 2.3.8 → 2.3.11

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 (113) hide show
  1. package/lib/commands/add-app.js +5 -5
  2. package/lib/commands/add-lib.js +5 -5
  3. package/lib/commands/add-micro.js +11 -11
  4. package/lib/commands/add-project.js +196 -196
  5. package/lib/commands/add-project.js.map +1 -1
  6. package/lib/commands/build-components.js +60 -60
  7. package/lib/commands/build-components.js.map +1 -1
  8. package/lib/commands/build-css.js +38 -38
  9. package/lib/commands/build-css.js.map +1 -1
  10. package/lib/commands/build-lib.js +30 -30
  11. package/lib/commands/build.js +19 -19
  12. package/lib/commands/build.js.map +1 -1
  13. package/lib/commands/create-app-options.js +85 -85
  14. package/lib/commands/create-app-options.js.map +1 -1
  15. package/lib/commands/create-app.js +131 -131
  16. package/lib/commands/create-app.js.map +1 -1
  17. package/lib/commands/create-options.js +69 -58
  18. package/lib/commands/create-options.js.map +1 -1
  19. package/lib/commands/create.js +345 -341
  20. package/lib/commands/create.js.map +1 -1
  21. package/lib/commands/dev-serve.js +18 -18
  22. package/lib/commands/extract-i18n.js +74 -74
  23. package/lib/commands/extract-i18n.js.map +1 -1
  24. package/lib/commands/generate/api.js +124 -124
  25. package/lib/commands/generate/api.js.map +1 -1
  26. package/lib/commands/generate/common.js +101 -101
  27. package/lib/commands/generate/common.js.map +1 -1
  28. package/lib/commands/generate/component.js +156 -156
  29. package/lib/commands/generate/component.js.map +1 -1
  30. package/lib/commands/generate/view.js +168 -168
  31. package/lib/commands/generate/view.js.map +1 -1
  32. package/lib/commands/preview-serve.js +16 -16
  33. package/lib/commands/workspace/add-app.js +15 -15
  34. package/lib/commands/workspace/add-app.js.map +1 -1
  35. package/lib/commands/workspace/create.js +62 -62
  36. package/lib/commands/workspace/create.js.map +1 -1
  37. package/lib/commands/workspace/inspect.js +30 -30
  38. package/lib/commands/workspace/inspect.js.map +1 -1
  39. package/lib/commands/workspace/verify.js +38 -38
  40. package/lib/commands/workspace/verify.js.map +1 -1
  41. package/lib/common/agents-doc.js +33 -33
  42. package/lib/common/agents-doc.js.map +1 -1
  43. package/lib/common/apply-catalog-deps.js +15 -15
  44. package/lib/common/apply-catalog-deps.js.map +1 -1
  45. package/lib/common/component-file-name.js +3 -3
  46. package/lib/common/constant.js +85 -84
  47. package/lib/common/constant.js.map +1 -1
  48. package/lib/common/create-app-target.js +46 -46
  49. package/lib/common/create-app-target.js.map +1 -1
  50. package/lib/common/generate-app.js +106 -106
  51. package/lib/common/generate-app.js.map +1 -1
  52. package/lib/common/get-dependencies.js +9 -9
  53. package/lib/common/get-farris-config.js +25 -25
  54. package/lib/common/get-farris-config.js.map +1 -1
  55. package/lib/common/get-version.js +6 -6
  56. package/lib/common/get-vite-config.js +192 -192
  57. package/lib/common/get-vite-config.js.map +1 -1
  58. package/lib/common/lib-package-exports.js +24 -24
  59. package/lib/common/lib-package-exports.js.map +1 -1
  60. package/lib/common/list-lib-components.js +23 -23
  61. package/lib/common/list-lib-components.js.map +1 -1
  62. package/lib/common/output.js +164 -164
  63. package/lib/common/output.js.map +1 -1
  64. package/lib/common/project-layout.js +155 -155
  65. package/lib/common/project-layout.js.map +1 -1
  66. package/lib/common/safety.js +172 -172
  67. package/lib/common/safety.js.map +1 -1
  68. package/lib/common/template-manifest.js +18 -18
  69. package/lib/common/template-manifest.js.map +1 -1
  70. package/lib/common/template-renderer.js +114 -114
  71. package/lib/common/template-renderer.js.map +1 -1
  72. package/lib/common/transaction.js +83 -83
  73. package/lib/common/transaction.js.map +1 -1
  74. package/lib/common/verifier.js +187 -187
  75. package/lib/common/verifier.js.map +1 -1
  76. package/lib/common/workspace-contract.js +195 -191
  77. package/lib/common/workspace-contract.js.map +1 -1
  78. package/lib/config/vite-app.js +13 -13
  79. package/lib/config/vite-common.js +20 -20
  80. package/lib/config/vite-common.js.map +1 -1
  81. package/lib/config/vite-component.js +32 -32
  82. package/lib/config/vite-component.js.map +1 -1
  83. package/lib/config/vite-lib.js +26 -26
  84. package/lib/index.js +280 -261
  85. package/lib/index.js.map +1 -1
  86. package/lib/plugins/create-app-package-json.js +23 -23
  87. package/lib/plugins/create-component-style.js +44 -44
  88. package/lib/plugins/create-package-json.js +48 -48
  89. package/lib/plugins/create-package-json.js.map +1 -1
  90. package/lib/plugins/dts.js +8 -8
  91. package/lib/plugins/html-system.js +9 -9
  92. package/lib/plugins/mock.js +240 -292
  93. package/lib/plugins/mock.js.map +1 -1
  94. package/lib/plugins/msw-adapter.js +141 -0
  95. package/lib/plugins/msw-adapter.js.map +1 -0
  96. package/lib/plugins/replace.js +17 -17
  97. package/lib/plugins/systemjs-bundle.js +15 -15
  98. package/lib/plugins/systemjs-bundle.js.map +1 -1
  99. package/package.json +93 -87
  100. package/templates/create/AGENTS.md +4 -3
  101. package/templates/lib/.gitignore.tpl +1 -0
  102. package/templates/micro/.gitignore.tpl +1 -0
  103. package/templates/micro/mock/README.md +39 -26
  104. package/templates/micro/mock/tsconfig.json +10 -0
  105. package/templates/micro/package.json +1 -0
  106. package/templates/mobile/.gitignore.tpl +1 -0
  107. package/templates/mobile/mock/README.md +39 -26
  108. package/templates/mobile/mock/tsconfig.json +10 -0
  109. package/templates/mobile/package.json +1 -0
  110. package/templates/web/.gitignore.tpl +1 -0
  111. package/templates/web/mock/README.md +39 -26
  112. package/templates/web/mock/tsconfig.json +10 -0
  113. package/templates/web/package.json +1 -0
@@ -1,31 +1,31 @@
1
- import { inspectTarget } from '../../common/safety.js';
2
- import { sendJson, logInfo, logWarn, setJsonMode } from '../../common/output.js';
3
- export async function inspectWorkspace(target = '.', options = {}) {
4
- const isJson = !!options.json;
5
- setJsonMode(isJson);
6
- const result = inspectTarget(target);
7
- if (isJson) {
8
- sendJson({
9
- command: 'workspace.inspect',
10
- ok: true,
11
- status: result.status,
12
- target: result.target,
13
- canCreate: result.canCreate,
14
- conflicts: result.conflicts,
15
- preservedInputEntries: result.preservedInputEntries,
16
- message: result.message
17
- });
18
- return result;
19
- }
20
- logInfo(`\n🔍 目标检查: ${result.target}`);
21
- logInfo(`- 状态: ${result.status}`);
22
- logInfo(`- 允许创建: ${result.canCreate ? '是' : '否'}`);
23
- if (result.preservedInputEntries.length > 0) {
24
- logInfo(`- 发现受保护输入 (${result.preservedInputEntries.length} 项): ${result.preservedInputEntries.join(', ')}`);
25
- }
26
- if (result.conflicts.length > 0) {
27
- logWarn(`- 冲突文件/目录: ${result.conflicts.join(', ')}`);
28
- }
29
- return result;
30
- }
1
+ import { inspectTarget } from '../../common/safety.js';
2
+ import { sendJson, logInfo, logWarn, setJsonMode } from '../../common/output.js';
3
+ export async function inspectWorkspace(target = '.', options = {}) {
4
+ const isJson = !!options.json;
5
+ setJsonMode(isJson);
6
+ const result = inspectTarget(target);
7
+ if (isJson) {
8
+ sendJson({
9
+ command: 'workspace.inspect',
10
+ ok: true,
11
+ status: result.status,
12
+ target: result.target,
13
+ canCreate: result.canCreate,
14
+ conflicts: result.conflicts,
15
+ preservedInputEntries: result.preservedInputEntries,
16
+ message: result.message
17
+ });
18
+ return result;
19
+ }
20
+ logInfo(`\n🔍 目标检查: ${result.target}`);
21
+ logInfo(`- 状态: ${result.status}`);
22
+ logInfo(`- 允许创建: ${result.canCreate ? '是' : '否'}`);
23
+ if (result.preservedInputEntries.length > 0) {
24
+ logInfo(`- 发现受保护输入 (${result.preservedInputEntries.length} 项): ${result.preservedInputEntries.join(', ')}`);
25
+ }
26
+ if (result.conflicts.length > 0) {
27
+ logWarn(`- 冲突文件/目录: ${result.conflicts.join(', ')}`);
28
+ }
29
+ return result;
30
+ }
31
31
  //# sourceMappingURL=inspect.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/workspace/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAY,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAO3F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB,GAAG,EAAE,UAA0B,EAAE;IACvF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,MAAM,EAAE;QACV,QAAQ,CAAC;YACP,OAAO,EAAE,mBAAmB;YAC5B,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;YACnD,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;KACf;IAED,OAAO,CAAC,cAAc,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,WAAW,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE;QAC3C,OAAO,CAAC,cAAc,MAAM,CAAC,qBAAqB,CAAC,MAAM,QAAQ,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7G;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;QAC/B,OAAO,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACtD;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/workspace/inspect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAY,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAO3F,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAiB,GAAG,EAAE,UAA0B,EAAE;IACvF,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAErC,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CAAC;YACP,OAAO,EAAE,mBAAmB;YAC5B,EAAE,EAAE,IAAI;YACR,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;YACnD,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,cAAc,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,WAAW,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnD,IAAI,MAAM,CAAC,qBAAqB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,cAAc,MAAM,CAAC,qBAAqB,CAAC,MAAM,QAAQ,MAAM,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9G,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,cAAc,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,39 +1,39 @@
1
- import { verifyWorkspace } from '../../common/verifier.js';
2
- import { sendJson, logInfo, logError, setJsonMode, fail } from '../../common/output.js';
3
- import { ExitCode } from '../../common/constant.js';
4
- export async function verifyWorkspaceCommand(target = '.', options = {}) {
5
- const isJson = !!options.json;
6
- setJsonMode(isJson);
7
- const result = verifyWorkspace(target);
8
- if (isJson) {
9
- sendJson({
10
- command: 'workspace.verify',
11
- ok: result.ok,
12
- target: result.target,
13
- checks: result.checks,
14
- errors: result.errors
15
- }, result.ok ? ExitCode.SUCCESS : ExitCode.VERIFY_FAILED);
16
- return result;
17
- }
18
- logInfo(`\n📋 Workspace 验证报告: ${result.target}`);
19
- result.checks.forEach((chk) => {
20
- if (chk.passed) {
21
- logInfo(` ✔ [PASS] ${chk.name}`);
22
- }
23
- else {
24
- logError(` ✖ [FAIL] ${chk.name}: ${chk.message}`);
25
- }
26
- });
27
- if (!result.ok) {
28
- fail({
29
- command: 'workspace.verify',
30
- error: `Workspace 验证未通过,共发现 ${result.errors.length} 处问题`,
31
- exitCode: ExitCode.VERIFY_FAILED
32
- });
33
- }
34
- else {
35
- logInfo('\n🎉 验证全部通过!\n');
36
- }
37
- return result;
38
- }
1
+ import { verifyWorkspace } from '../../common/verifier.js';
2
+ import { sendJson, logInfo, logError, setJsonMode, fail } from '../../common/output.js';
3
+ import { ExitCode } from '../../common/constant.js';
4
+ export async function verifyWorkspaceCommand(target = '.', options = {}) {
5
+ const isJson = !!options.json;
6
+ setJsonMode(isJson);
7
+ const result = verifyWorkspace(target);
8
+ if (isJson) {
9
+ sendJson({
10
+ command: 'workspace.verify',
11
+ ok: result.ok,
12
+ target: result.target,
13
+ checks: result.checks,
14
+ errors: result.errors
15
+ }, result.ok ? ExitCode.SUCCESS : ExitCode.VERIFY_FAILED);
16
+ return result;
17
+ }
18
+ logInfo(`\n📋 Workspace 验证报告: ${result.target}`);
19
+ result.checks.forEach((chk) => {
20
+ if (chk.passed) {
21
+ logInfo(` ✔ [PASS] ${chk.name}`);
22
+ }
23
+ else {
24
+ logError(` ✖ [FAIL] ${chk.name}: ${chk.message}`);
25
+ }
26
+ });
27
+ if (!result.ok) {
28
+ fail({
29
+ command: 'workspace.verify',
30
+ error: `Workspace 验证未通过,共发现 ${result.errors.length} 处问题`,
31
+ exitCode: ExitCode.VERIFY_FAILED
32
+ });
33
+ }
34
+ else {
35
+ logInfo('\n🎉 验证全部通过!\n');
36
+ }
37
+ return result;
38
+ }
39
39
  //# sourceMappingURL=verify.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/workspace/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAW,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAMpD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAiB,GAAG,EAAE,UAAkC,EAAE;IACrG,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,MAAM,EAAE;QACV,QAAQ,CACN;YACE,OAAO,EAAE,kBAAkB;YAC3B,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,EACD,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CACtD,CAAC;QACF,OAAO,MAAM,CAAC;KACf;IAED,OAAO,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,MAAM,EAAE;YACd,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;SACnC;aAAM;YACL,QAAQ,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;SACpD;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE;QACd,IAAI,CAAC;YACH,OAAO,EAAE,kBAAkB;YAC3B,KAAK,EAAE,uBAAuB,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM;YACxD,QAAQ,EAAE,QAAQ,CAAC,aAAa;SACjC,CAAC,CAAC;KACJ;SAAM;QACL,OAAO,CAAC,gBAAgB,CAAC,CAAC;KAC3B;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/workspace/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAW,QAAQ,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AACjG,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAMpD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAiB,GAAG,EAAE,UAAkC,EAAE;IACrG,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9B,WAAW,CAAC,MAAM,CAAC,CAAC;IAEpB,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEvC,IAAI,MAAM,EAAE,CAAC;QACX,QAAQ,CACN;YACE,OAAO,EAAE,kBAAkB;YAC3B,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,MAAM,EAAE,MAAM,CAAC,MAAM;SACtB,EACD,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CACtD,CAAC;QACF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,wBAAwB,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;QAC5B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,IAAI,CAAC;YACH,OAAO,EAAE,kBAAkB;YAC3B,KAAK,EAAE,uBAAuB,MAAM,CAAC,MAAM,CAAC,MAAM,MAAM;YACxD,QAAQ,EAAE,QAAQ,CAAC,aAAa;SACjC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,34 +1,34 @@
1
- import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
- import { join } from 'node:path';
3
- import { listProjects } from './project-layout.js';
4
- import { renderProjectList } from './workspace-contract.js';
5
- export const AGENTS_DOC_NAME = 'AGENTS.md';
6
- export const AGENTS_PROJECTS_START = '<!-- projects:start -->';
7
- export const AGENTS_PROJECTS_END = '<!-- projects:end -->';
8
- /**
9
- * 用真实工程列表刷新 AGENTS.md 的子工程清单区块。
10
- * 文件或标记缺失时返回 false,由调用方决定是否告警(不作为失败原因,见设计文档 §8.1 第 3 条)。
11
- */
12
- export function refreshAgentsProjectList(wsRoot) {
13
- const agentsPath = join(wsRoot, AGENTS_DOC_NAME);
14
- if (!existsSync(agentsPath)) {
15
- return false;
16
- }
17
- const content = readFileSync(agentsPath, 'utf-8');
18
- const start = content.indexOf(AGENTS_PROJECTS_START);
19
- const end = content.indexOf(AGENTS_PROJECTS_END);
20
- if (start === -1 || end === -1 || end < start) {
21
- return false;
22
- }
23
- const block = [
24
- AGENTS_PROJECTS_START,
25
- renderProjectList(listProjects(wsRoot)),
26
- AGENTS_PROJECTS_END
27
- ].join('\n');
28
- const next = content.slice(0, start) + block + content.slice(end + AGENTS_PROJECTS_END.length);
29
- if (next !== content) {
30
- writeFileSync(agentsPath, next, 'utf-8');
31
- }
32
- return true;
33
- }
1
+ import { existsSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { listProjects } from './project-layout.js';
4
+ import { renderProjectList } from './workspace-contract.js';
5
+ export const AGENTS_DOC_NAME = 'AGENTS.md';
6
+ export const AGENTS_PROJECTS_START = '<!-- projects:start -->';
7
+ export const AGENTS_PROJECTS_END = '<!-- projects:end -->';
8
+ /**
9
+ * 用真实工程列表刷新 AGENTS.md 的子工程清单区块。
10
+ * 文件或标记缺失时返回 false,由调用方决定是否告警(不作为失败原因,见设计文档 §8.1 第 3 条)。
11
+ */
12
+ export function refreshAgentsProjectList(wsRoot) {
13
+ const agentsPath = join(wsRoot, AGENTS_DOC_NAME);
14
+ if (!existsSync(agentsPath)) {
15
+ return false;
16
+ }
17
+ const content = readFileSync(agentsPath, 'utf-8');
18
+ const start = content.indexOf(AGENTS_PROJECTS_START);
19
+ const end = content.indexOf(AGENTS_PROJECTS_END);
20
+ if (start === -1 || end === -1 || end < start) {
21
+ return false;
22
+ }
23
+ const block = [
24
+ AGENTS_PROJECTS_START,
25
+ renderProjectList(listProjects(wsRoot)),
26
+ AGENTS_PROJECTS_END
27
+ ].join('\n');
28
+ const next = content.slice(0, start) + block + content.slice(end + AGENTS_PROJECTS_END.length);
29
+ if (next !== content) {
30
+ writeFileSync(agentsPath, next, 'utf-8');
31
+ }
32
+ return true;
33
+ }
34
34
  //# sourceMappingURL=agents-doc.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agents-doc.js","sourceRoot":"","sources":["../../src/common/agents-doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAE3D;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;QAC3B,OAAO,KAAK,CAAC;KACd;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE;QAC7C,OAAO,KAAK,CAAC;KACd;IAED,MAAM,KAAK,GAAG;QACZ,qBAAqB;QACrB,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,mBAAmB;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/F,IAAI,IAAI,KAAK,OAAO,EAAE;QACpB,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;KAC1C;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"agents-doc.js","sourceRoot":"","sources":["../../src/common/agents-doc.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC;AAC3C,MAAM,CAAC,MAAM,qBAAqB,GAAG,yBAAyB,CAAC;AAC/D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;AAE3D;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,MAAc;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjD,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,qBAAqB;QACrB,iBAAiB,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvC,mBAAmB;KACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC/F,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,16 +1,16 @@
1
- import { DEFAULT_CATALOG_VERSIONS } from './constant.js';
2
- export function applyCatalogDeps(pkg) {
3
- const keys = Object.keys(DEFAULT_CATALOG_VERSIONS).filter((key) => key !== 'pnpm');
4
- for (const section of ['dependencies', 'devDependencies']) {
5
- const block = pkg[section];
6
- if (!block || typeof block !== 'object') {
7
- continue;
8
- }
9
- for (const key of keys) {
10
- if (block[key] !== undefined) {
11
- block[key] = 'catalog:';
12
- }
13
- }
14
- }
15
- }
1
+ import { DEFAULT_CATALOG_VERSIONS } from './constant.js';
2
+ export function applyCatalogDeps(pkg) {
3
+ const keys = Object.keys(DEFAULT_CATALOG_VERSIONS).filter((key) => key !== 'pnpm');
4
+ for (const section of ['dependencies', 'devDependencies']) {
5
+ const block = pkg[section];
6
+ if (!block || typeof block !== 'object') {
7
+ continue;
8
+ }
9
+ for (const key of keys) {
10
+ if (block[key] !== undefined) {
11
+ block[key] = 'catalog:';
12
+ }
13
+ }
14
+ }
15
+ }
16
16
  //# sourceMappingURL=apply-catalog-deps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"apply-catalog-deps.js","sourceRoot":"","sources":["../../src/common/apply-catalog-deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,UAAU,gBAAgB,CAAC,GAAwB;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IACnF,KAAK,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAU,EAAE;QAClE,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YACvC,SAAS;SACV;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;YACtB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE;gBAC5B,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;aACzB;SACF;KACF;AACH,CAAC"}
1
+ {"version":3,"file":"apply-catalog-deps.js","sourceRoot":"","sources":["../../src/common/apply-catalog-deps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEzD,MAAM,UAAU,gBAAgB,CAAC,GAAwB;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;IACnF,KAAK,MAAM,OAAO,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAU,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACxC,SAAS;QACX,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC7B,KAAK,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC;YAC1B,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- export function componentFileName(_format, entryName) {
2
- return `${entryName}/index.esm.js`;
3
- }
1
+ export function componentFileName(_format, entryName) {
2
+ return `${entryName}/index.esm.js`;
3
+ }
4
4
  //# sourceMappingURL=component-file-name.js.map
@@ -1,85 +1,86 @@
1
- import { existsSync } from 'node:fs';
2
- import { fileURLToPath } from 'node:url';
3
- import { join, dirname } from 'node:path';
4
- import { getVersion } from './get-version.js';
5
- function findRootDir(dir) {
6
- if (existsSync(join(dir, 'farris.config.js')) || existsSync(join(dir, 'farris.config.mjs'))) {
7
- return dir;
8
- }
9
- const parentDir = dirname(dir);
10
- if (dir === parentDir) {
11
- return dir;
12
- }
13
- return findRootDir(parentDir);
14
- }
15
- export const getDirname = (url) => fileURLToPath(new URL('.', url));
16
- // Root paths
17
- export const CWD = process.cwd();
18
- export const ROOT = findRootDir(CWD);
19
- export const FAARIS_CONFIG_FILE = join(CWD, 'farris.config.mjs');
20
- export const getPackageName = () => {
21
- const { PackageName = '@components' } = process.env;
22
- return PackageName;
23
- };
24
- // Schema & Version Baseline
25
- export const SCHEMA_VERSION = 1;
26
- export const CLI_VERSION = getVersion();
27
- // Catalog Dependency Versions Baseline
28
- export const DEFAULT_CATALOG_VERSIONS = {
29
- '@farris/ui-vue': 'beta',
30
- '@farris/cli': CLI_VERSION,
31
- '@vitejs/plugin-vue': '5.2.4',
32
- '@vitejs/plugin-vue-jsx': '3.0.0',
33
- 'typescript': '5.7.3',
34
- 'vite': '5.4.19',
35
- 'vite-plugin-css-injected-by-js': '3.5.2',
36
- 'vite-plugin-dts': '3.9.1',
37
- 'vue': '3.5.13',
38
- 'vue-router': '4.5.0',
39
- 'vue-tsc': '2.2.0',
40
- 'sass': '1.90.0',
41
- 'pnpm': '9.15.4'
42
- };
43
- /**
44
- * 渲染生成的 workspace 的 catalog 区块(YAML 缩进片段)。
45
- *
46
- * 单一来源:catalog 内容与 applyCatalogDeps 的改写范围必须完全一致,
47
- * 任何出现在这里但模板 devDependencies 里没有的依赖都只是多一行,不会出错;
48
- * 反之若有模板依赖被改写为 `catalog:` 却不在这里,生成的 workspace 将无法安装。
49
- */
50
- export function renderCatalogEntries() {
51
- return Object.entries(DEFAULT_CATALOG_VERSIONS)
52
- // pnpm 只用于根 package.json 的 packageManager 字段,不作为子工程依赖
53
- .filter(([name]) => name !== 'pnpm')
54
- .map(([name, version]) => ` "${name}": "${version}"`)
55
- .join('\n');
56
- }
57
- // Standard Engines
58
- export const DEFAULT_ENGINES = {
59
- node: '^18.0.0 || >=20.0.0',
60
- pnpm: '>=9.0.0 <10.0.0'
61
- };
62
- // App 产物交付格式;iife 为 IBP 微前端单文件产物(单文件、无代码分割)
63
- export const ALLOWED_APP_FORMATS = ['es', 'umd', 'systemjs', 'iife'];
64
- // Exit Codes
65
- export var ExitCode;
66
- (function (ExitCode) {
67
- ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS";
68
- ExitCode[ExitCode["GENERAL_ERROR"] = 1] = "GENERAL_ERROR";
69
- ExitCode[ExitCode["TARGET_CONFLICT"] = 2] = "TARGET_CONFLICT";
70
- ExitCode[ExitCode["VERIFY_FAILED"] = 3] = "VERIFY_FAILED";
71
- ExitCode[ExitCode["FS_ERROR"] = 4] = "FS_ERROR";
72
- })(ExitCode || (ExitCode = {}));
73
- // Workspace Safety Status
74
- export var WorkspaceStatus;
75
- (function (WorkspaceStatus) {
76
- WorkspaceStatus["MISSING"] = "missing";
77
- WorkspaceStatus["EMPTY"] = "empty";
78
- WorkspaceStatus["AI_CONFIG_ONLY"] = "ai-config-only";
79
- WorkspaceStatus["PRESERVED_INPUT_ONLY"] = "preserved-input-only";
80
- WorkspaceStatus["EXISTING_WORKSPACE"] = "existing-workspace";
81
- WorkspaceStatus["EXISTING_OR_UNKNOWN_PROJECT"] = "existing-or-unknown-project";
82
- WorkspaceStatus["NON_EMPTY_PROJECT"] = "non-empty-project";
83
- WorkspaceStatus["INVALID_TARGET"] = "invalid-target";
84
- })(WorkspaceStatus || (WorkspaceStatus = {}));
1
+ import { existsSync } from 'node:fs';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { join, dirname } from 'node:path';
4
+ import { getVersion } from './get-version.js';
5
+ function findRootDir(dir) {
6
+ if (existsSync(join(dir, 'farris.config.js')) || existsSync(join(dir, 'farris.config.mjs'))) {
7
+ return dir;
8
+ }
9
+ const parentDir = dirname(dir);
10
+ if (dir === parentDir) {
11
+ return dir;
12
+ }
13
+ return findRootDir(parentDir);
14
+ }
15
+ export const getDirname = (url) => fileURLToPath(new URL('.', url));
16
+ // Root paths
17
+ export const CWD = process.cwd();
18
+ export const ROOT = findRootDir(CWD);
19
+ export const FAARIS_CONFIG_FILE = join(CWD, 'farris.config.mjs');
20
+ export const getPackageName = () => {
21
+ const { PackageName = '@components' } = process.env;
22
+ return PackageName;
23
+ };
24
+ // Schema & Version Baseline
25
+ export const SCHEMA_VERSION = 1;
26
+ export const CLI_VERSION = getVersion();
27
+ // Catalog Dependency Versions Baseline
28
+ export const DEFAULT_CATALOG_VERSIONS = {
29
+ '@farris/ui-vue': '1.8.5-beta.14',
30
+ '@farris/cli': CLI_VERSION,
31
+ '@vitejs/plugin-vue': '5.2.4',
32
+ '@vitejs/plugin-vue-jsx': '3.0.0',
33
+ 'msw': '2.15.0',
34
+ 'typescript': '5.7.3',
35
+ 'vite': '5.4.19',
36
+ 'vite-plugin-css-injected-by-js': '3.5.2',
37
+ 'vite-plugin-dts': '3.9.1',
38
+ 'vue': '3.5.13',
39
+ 'vue-router': '4.5.0',
40
+ 'vue-tsc': '2.2.0',
41
+ 'sass': '1.90.0',
42
+ 'pnpm': '9.15.4'
43
+ };
44
+ /**
45
+ * 渲染生成的 workspace 的 catalog 区块(YAML 缩进片段)。
46
+ *
47
+ * 单一来源:catalog 内容与 applyCatalogDeps 的改写范围必须完全一致,
48
+ * 任何出现在这里但模板 devDependencies 里没有的依赖都只是多一行,不会出错;
49
+ * 反之若有模板依赖被改写为 `catalog:` 却不在这里,生成的 workspace 将无法安装。
50
+ */
51
+ export function renderCatalogEntries() {
52
+ return Object.entries(DEFAULT_CATALOG_VERSIONS)
53
+ // pnpm 只用于根 package.json 的 packageManager 字段,不作为子工程依赖
54
+ .filter(([name]) => name !== 'pnpm')
55
+ .map(([name, version]) => ` "${name}": "${version}"`)
56
+ .join('\n');
57
+ }
58
+ // Standard Engines
59
+ export const DEFAULT_ENGINES = {
60
+ node: '^18.0.0 || >=20.0.0',
61
+ pnpm: '>=9.0.0 <10.0.0'
62
+ };
63
+ // App 产物交付格式;iife 为 IBP 微前端单文件产物(单文件、无代码分割)
64
+ export const ALLOWED_APP_FORMATS = ['es', 'umd', 'systemjs', 'iife'];
65
+ // Exit Codes
66
+ export var ExitCode;
67
+ (function (ExitCode) {
68
+ ExitCode[ExitCode["SUCCESS"] = 0] = "SUCCESS";
69
+ ExitCode[ExitCode["GENERAL_ERROR"] = 1] = "GENERAL_ERROR";
70
+ ExitCode[ExitCode["TARGET_CONFLICT"] = 2] = "TARGET_CONFLICT";
71
+ ExitCode[ExitCode["VERIFY_FAILED"] = 3] = "VERIFY_FAILED";
72
+ ExitCode[ExitCode["FS_ERROR"] = 4] = "FS_ERROR";
73
+ })(ExitCode || (ExitCode = {}));
74
+ // Workspace Safety Status
75
+ export var WorkspaceStatus;
76
+ (function (WorkspaceStatus) {
77
+ WorkspaceStatus["MISSING"] = "missing";
78
+ WorkspaceStatus["EMPTY"] = "empty";
79
+ WorkspaceStatus["AI_CONFIG_ONLY"] = "ai-config-only";
80
+ WorkspaceStatus["PRESERVED_INPUT_ONLY"] = "preserved-input-only";
81
+ WorkspaceStatus["EXISTING_WORKSPACE"] = "existing-workspace";
82
+ WorkspaceStatus["EXISTING_OR_UNKNOWN_PROJECT"] = "existing-or-unknown-project";
83
+ WorkspaceStatus["NON_EMPTY_PROJECT"] = "non-empty-project";
84
+ WorkspaceStatus["INVALID_TARGET"] = "invalid-target";
85
+ })(WorkspaceStatus || (WorkspaceStatus = {}));
85
86
  //# sourceMappingURL=constant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/common/constant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../../src/common/constant.ts"],"names":[],"mappings":"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"}
@@ -1,47 +1,47 @@
1
- import { isAbsolute, relative, resolve } from 'node:path';
2
- import { ExitCode } from './constant.js';
3
- export class CreateAppError extends Error {
4
- constructor(message, exitCode = ExitCode.GENERAL_ERROR) {
5
- super(message);
6
- this.name = 'CreateAppError';
7
- this.exitCode = exitCode;
8
- }
9
- }
10
- export function isValidPackageName(name) {
11
- return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
12
- }
13
- export function toValidPackageName(name) {
14
- return name
15
- .trim()
16
- .toLowerCase()
17
- .replace(/\s+/g, '-')
18
- .replace(/^[._]/, '')
19
- .replace(/[^a-z0-9-~]+/g, '-')
20
- .replace(/^-+|-+$/g, '');
21
- }
22
- export function resolvePackageName(name) {
23
- const trimmed = name.trim();
24
- if (isValidPackageName(trimmed)) {
25
- return trimmed;
26
- }
27
- const derived = toValidPackageName(trimmed);
28
- if (!derived || !isValidPackageName(derived)) {
29
- throw new CreateAppError(`无法从目标名推导合法包名: ${name}`);
30
- }
31
- return derived;
32
- }
33
- export function assertTargetInsideCwd(name, cwd = process.cwd()) {
34
- const trimmed = name.trim();
35
- if (!trimmed || trimmed === '.' || trimmed === './') {
36
- throw new CreateAppError('目标目录不能是当前目录');
37
- }
38
- if (trimmed.includes('\0')) {
39
- throw new CreateAppError('目标路径包含非法字符');
40
- }
41
- const resolved = resolve(cwd, trimmed);
42
- const rel = relative(cwd, resolved);
43
- if (rel === '' || rel.startsWith('..') || isAbsolute(rel)) {
44
- throw new CreateAppError(`目标目录必须位于当前工作目录内: ${name}`);
45
- }
46
- }
1
+ import { isAbsolute, relative, resolve } from 'node:path';
2
+ import { ExitCode } from './constant.js';
3
+ export class CreateAppError extends Error {
4
+ constructor(message, exitCode = ExitCode.GENERAL_ERROR) {
5
+ super(message);
6
+ this.name = 'CreateAppError';
7
+ this.exitCode = exitCode;
8
+ }
9
+ }
10
+ export function isValidPackageName(name) {
11
+ return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
12
+ }
13
+ export function toValidPackageName(name) {
14
+ return name
15
+ .trim()
16
+ .toLowerCase()
17
+ .replace(/\s+/g, '-')
18
+ .replace(/^[._]/, '')
19
+ .replace(/[^a-z0-9-~]+/g, '-')
20
+ .replace(/^-+|-+$/g, '');
21
+ }
22
+ export function resolvePackageName(name) {
23
+ const trimmed = name.trim();
24
+ if (isValidPackageName(trimmed)) {
25
+ return trimmed;
26
+ }
27
+ const derived = toValidPackageName(trimmed);
28
+ if (!derived || !isValidPackageName(derived)) {
29
+ throw new CreateAppError(`无法从目标名推导合法包名: ${name}`);
30
+ }
31
+ return derived;
32
+ }
33
+ export function assertTargetInsideCwd(name, cwd = process.cwd()) {
34
+ const trimmed = name.trim();
35
+ if (!trimmed || trimmed === '.' || trimmed === './') {
36
+ throw new CreateAppError('目标目录不能是当前目录');
37
+ }
38
+ if (trimmed.includes('\0')) {
39
+ throw new CreateAppError('目标路径包含非法字符');
40
+ }
41
+ const resolved = resolve(cwd, trimmed);
42
+ const rel = relative(cwd, resolved);
43
+ if (rel === '' || rel.startsWith('..') || isAbsolute(rel)) {
44
+ throw new CreateAppError(`目标目录必须位于当前工作目录内: ${name}`);
45
+ }
46
+ }
47
47
  //# sourceMappingURL=create-app-target.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-app-target.js","sourceRoot":"","sources":["../../src/common/create-app-target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGvC,YAAY,OAAe,EAAE,WAAqB,QAAQ,CAAC,aAAa;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI;SACR,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC/B,OAAO,OAAO,CAAC;KAChB;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE;QAC5C,MAAM,IAAI,cAAc,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;KACnD;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE;QACnD,MAAM,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;KACzC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAC1B,MAAM,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;KACxC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE;QACzD,MAAM,IAAI,cAAc,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;KACtD;AACH,CAAC"}
1
+ {"version":3,"file":"create-app-target.js","sourceRoot":"","sources":["../../src/common/create-app-target.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAO,cAAe,SAAQ,KAAK;IAGvC,YAAY,OAAe,EAAE,WAAqB,QAAQ,CAAC,aAAa;QACtE,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,4DAA4D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO,IAAI;SACR,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,cAAc,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,MAAc,OAAO,CAAC,GAAG,EAAE;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACpD,MAAM,IAAI,cAAc,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,cAAc,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,EAAE,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,cAAc,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}