@farris/cli 2.3.7 → 2.3.9

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 (171) hide show
  1. package/lib/commands/add-app.js +5 -5
  2. package/lib/commands/add-app.js.map +1 -1
  3. package/lib/commands/add-lib.js +5 -5
  4. package/lib/commands/add-lib.js.map +1 -1
  5. package/lib/commands/add-micro.js +12 -0
  6. package/lib/commands/add-micro.js.map +1 -0
  7. package/lib/commands/add-project.js +196 -194
  8. package/lib/commands/add-project.js.map +1 -1
  9. package/lib/commands/build-components.js +60 -60
  10. package/lib/commands/build-components.js.map +1 -1
  11. package/lib/commands/build-css.js +38 -38
  12. package/lib/commands/build-css.js.map +1 -1
  13. package/lib/commands/build-lib.js +30 -30
  14. package/lib/commands/build-lib.js.map +1 -1
  15. package/lib/commands/build.js +19 -19
  16. package/lib/commands/build.js.map +1 -1
  17. package/lib/commands/create-app-options.js +85 -74
  18. package/lib/commands/create-app-options.js.map +1 -1
  19. package/lib/commands/create-app.js +131 -131
  20. package/lib/commands/create-app.js.map +1 -1
  21. package/lib/commands/create-options.js +58 -32
  22. package/lib/commands/create-options.js.map +1 -1
  23. package/lib/commands/create.js +341 -331
  24. package/lib/commands/create.js.map +1 -1
  25. package/lib/commands/dev-serve.js +18 -18
  26. package/lib/commands/extract-i18n.js +74 -74
  27. package/lib/commands/extract-i18n.js.map +1 -1
  28. package/lib/commands/generate/api.js +124 -124
  29. package/lib/commands/generate/api.js.map +1 -1
  30. package/lib/commands/generate/common.js +101 -101
  31. package/lib/commands/generate/common.js.map +1 -1
  32. package/lib/commands/generate/component.js +156 -156
  33. package/lib/commands/generate/component.js.map +1 -1
  34. package/lib/commands/generate/view.js +168 -168
  35. package/lib/commands/generate/view.js.map +1 -1
  36. package/lib/commands/preview-serve.js +16 -16
  37. package/lib/commands/workspace/add-app.js +15 -15
  38. package/lib/commands/workspace/add-app.js.map +1 -1
  39. package/lib/commands/workspace/create.js +62 -62
  40. package/lib/commands/workspace/create.js.map +1 -1
  41. package/lib/commands/workspace/inspect.js +30 -30
  42. package/lib/commands/workspace/inspect.js.map +1 -1
  43. package/lib/commands/workspace/verify.js +38 -38
  44. package/lib/commands/workspace/verify.js.map +1 -1
  45. package/lib/common/agents-doc.js +33 -33
  46. package/lib/common/agents-doc.js.map +1 -1
  47. package/lib/common/apply-catalog-deps.js +15 -15
  48. package/lib/common/apply-catalog-deps.js.map +1 -1
  49. package/lib/common/component-file-name.js +3 -3
  50. package/lib/common/constant.js +85 -84
  51. package/lib/common/constant.js.map +1 -1
  52. package/lib/common/create-app-target.js +46 -46
  53. package/lib/common/create-app-target.js.map +1 -1
  54. package/lib/common/generate-app.js +106 -109
  55. package/lib/common/generate-app.js.map +1 -1
  56. package/lib/common/get-dependencies.js +9 -9
  57. package/lib/common/get-farris-config.js +25 -25
  58. package/lib/common/get-farris-config.js.map +1 -1
  59. package/lib/common/get-version.js +6 -6
  60. package/lib/common/get-vite-config.js +192 -192
  61. package/lib/common/get-vite-config.js.map +1 -1
  62. package/lib/common/lib-package-exports.js +24 -24
  63. package/lib/common/lib-package-exports.js.map +1 -1
  64. package/lib/common/list-lib-components.js +23 -23
  65. package/lib/common/list-lib-components.js.map +1 -1
  66. package/lib/common/output.js +164 -164
  67. package/lib/common/output.js.map +1 -1
  68. package/lib/common/project-layout.js +155 -183
  69. package/lib/common/project-layout.js.map +1 -1
  70. package/lib/common/safety.js +172 -173
  71. package/lib/common/safety.js.map +1 -1
  72. package/lib/common/template-manifest.js +18 -14
  73. package/lib/common/template-manifest.js.map +1 -1
  74. package/lib/common/template-renderer.js +114 -114
  75. package/lib/common/template-renderer.js.map +1 -1
  76. package/lib/common/transaction.js +83 -83
  77. package/lib/common/transaction.js.map +1 -1
  78. package/lib/common/verifier.js +187 -201
  79. package/lib/common/verifier.js.map +1 -1
  80. package/lib/common/workspace-contract.js +191 -157
  81. package/lib/common/workspace-contract.js.map +1 -1
  82. package/lib/config/vite-app.js +13 -13
  83. package/lib/config/vite-common.js +20 -20
  84. package/lib/config/vite-common.js.map +1 -1
  85. package/lib/config/vite-component.js +32 -32
  86. package/lib/config/vite-component.js.map +1 -1
  87. package/lib/config/vite-lib.js +26 -26
  88. package/lib/config/vite-lib.js.map +1 -1
  89. package/lib/index.js +261 -238
  90. package/lib/index.js.map +1 -1
  91. package/lib/plugins/create-app-package-json.js +23 -23
  92. package/lib/plugins/create-component-style.js +44 -44
  93. package/lib/plugins/create-package-json.js +48 -48
  94. package/lib/plugins/create-package-json.js.map +1 -1
  95. package/lib/plugins/dts.js +8 -8
  96. package/lib/plugins/html-system.js +9 -9
  97. package/lib/plugins/mock.js +240 -292
  98. package/lib/plugins/mock.js.map +1 -1
  99. package/lib/plugins/msw-adapter.js +141 -0
  100. package/lib/plugins/msw-adapter.js.map +1 -0
  101. package/lib/plugins/replace.js +17 -17
  102. package/lib/plugins/systemjs-bundle.js +15 -15
  103. package/lib/plugins/systemjs-bundle.js.map +1 -1
  104. package/package.json +6 -1
  105. package/templates/create/.gitignore.tpl +28 -8
  106. package/templates/create/AGENTS.md +76 -45
  107. package/templates/create/README.md +44 -11
  108. package/templates/create/package.json +2 -1
  109. package/templates/lib/.gitignore.tpl +31 -1
  110. package/templates/lib/.gitlab-ci.yml +2 -2
  111. package/templates/lib/README.md +24 -1
  112. package/templates/lib/{test → components/__tests__}/index.spec.ts +1 -1
  113. package/templates/lib/{test → components/__tests__}/index.spec.tsx +2 -2
  114. package/templates/lib/farris.config.mjs +2 -2
  115. package/templates/lib/package.json +1 -1
  116. package/templates/lib/tsconfig.json +1 -2
  117. package/templates/lib/vitest.config.ts +4 -2
  118. package/templates/micro/.eslintrc.cjs +15 -0
  119. package/templates/micro/.gitignore.tpl +33 -0
  120. package/templates/micro/.gitlab-ci.yml +59 -0
  121. package/templates/micro/.prettierrc.json +8 -0
  122. package/templates/micro/farris.config.mjs +34 -0
  123. package/templates/micro/index.html +12 -0
  124. package/templates/micro/mock/README.md +53 -0
  125. package/templates/micro/mock/tsconfig.json +10 -0
  126. package/templates/micro/package.json +47 -0
  127. package/templates/micro/src/App.tsx +25 -0
  128. package/templates/micro/src/locales/index.ts +5 -0
  129. package/templates/micro/src/locales/zh-CHS.json +1 -0
  130. package/templates/micro/src/main.ts +47 -0
  131. package/templates/micro/src/router/index.ts +24 -0
  132. package/templates/micro/src/views/AboutView.tsx +12 -0
  133. package/templates/micro/src/views/HomeView.tsx +13 -0
  134. package/templates/micro/src/views/__tests__/AboutView.spec.tsx +11 -0
  135. package/templates/micro/src/views/__tests__/HomeView.spec.tsx +11 -0
  136. package/templates/micro/tsconfig.json +18 -0
  137. package/templates/micro/vitest.config.ts +12 -0
  138. package/templates/mobile/.gitignore.tpl +25 -24
  139. package/templates/mobile/farris.config.mjs +2 -2
  140. package/templates/mobile/mock/README.md +39 -20
  141. package/templates/mobile/mock/tsconfig.json +10 -0
  142. package/templates/mobile/package.json +5 -2
  143. package/templates/mobile/src/main.ts +5 -40
  144. package/templates/mobile/src/views/HomeView.tsx +2 -2
  145. package/templates/mobile/src/views/__tests__/AboutView.spec.tsx +11 -0
  146. package/templates/mobile/src/views/__tests__/HomeView.spec.tsx +11 -0
  147. package/templates/mobile/tsconfig.json +1 -2
  148. package/templates/mobile/vitest.config.ts +4 -2
  149. package/templates/web/.gitignore.tpl +25 -24
  150. package/templates/web/farris.config.mjs +2 -2
  151. package/templates/web/mock/README.md +39 -20
  152. package/templates/web/mock/tsconfig.json +10 -0
  153. package/templates/web/package.json +5 -2
  154. package/templates/web/src/App.tsx +0 -4
  155. package/templates/web/src/main.ts +5 -40
  156. package/templates/web/src/views/HomeView.tsx +2 -2
  157. package/templates/web/src/views/__tests__/AboutView.spec.tsx +11 -0
  158. package/templates/web/src/views/__tests__/HomeView.spec.tsx +11 -0
  159. package/templates/web/tsconfig.json +1 -2
  160. package/templates/web/vitest.config.ts +4 -2
  161. package/templates/mobile/src/components/TheButton.tsx +0 -9
  162. package/templates/mobile/test/src/components/TheButton.spec.ts +0 -15
  163. package/templates/mobile/test/src/components/TheButton.spec.tsx +0 -15
  164. package/templates/web/src/components/TheButton.tsx +0 -9
  165. package/templates/web/src/micro-app.d.ts +0 -20
  166. package/templates/web/src/styles/index.css +0 -0
  167. package/templates/web/test/src/components/TheButton.spec.ts +0 -15
  168. package/templates/web/test/src/components/TheButton.spec.tsx +0 -15
  169. /package/templates/{web → micro}/src/micro/context.ts +0 -0
  170. /package/templates/{mobile → micro}/src/micro-app.d.ts +0 -0
  171. /package/templates/{mobile/src/styles/index.css → micro/src/styles/index.scss} +0 -0
@@ -1,184 +1,156 @@
1
- import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
- import { dirname, join, resolve } from 'node:path';
3
- /** 新结构容器:app → application,lib → library。全仓库唯一来源(写入只用它)。 */
4
- export const PROJECT_CONTAINERS = { app: 'application', lib: 'library' };
5
- /**
6
- * 分层容器的历史别名:`@farris/cli@2.3.2` 曾发布过复数命名 `applications` / `libraries`,
7
- * 已按该命名生成的 workspace 必须继续可读可校验,因此保留为只读别名(不再写入)。
8
- */
9
- export const LAYERED_CONTAINER_ALIASES = {
10
- app: ['applications'],
11
- lib: ['libraries']
12
- };
13
- /** 旧平铺结构容器:只读兼容识别,不再写入。 */
14
- export const LEGACY_CONTAINERS = ['packages'];
15
- /** 读取与校验可接受的容器命名:当前规范在前,历史别名在后。 */
16
- export function containerAliases(type) {
17
- return [PROJECT_CONTAINERS[type], ...LAYERED_CONTAINER_ALIASES[type]];
18
- }
19
- /** 分层布局的全部可识别容器命名(当前规范 + 历史别名)。 */
20
- export const LAYERED_CONTAINERS = [
21
- ...Object.values(PROJECT_CONTAINERS),
22
- ...LAYERED_CONTAINER_ALIASES.app,
23
- ...LAYERED_CONTAINER_ALIASES.lib
24
- ];
25
- /** 容器命名 → 工程类型;非分层容器(如 `packages`)返回 null,由调用方按工程证据推断。 */
26
- export function containerType(container) {
27
- if (containerAliases('app').includes(container)) {
28
- return 'app';
29
- }
30
- if (containerAliases('lib').includes(container)) {
31
- return 'lib';
32
- }
33
- return null;
34
- }
35
- export function containerFor(type) {
36
- return PROJECT_CONTAINERS[type];
37
- }
38
- export function resolveProjectPath(wsRoot, type, dir) {
39
- return join(wsRoot, containerFor(type), dir);
40
- }
41
- /**
42
- * 解析 pnpm-workspace.yaml 的 packages 列表。
43
- * 只识别 `- "dir/*"` 形式,不引入 yaml 依赖;结构超出该形式时返回空数组,由调用方回退。
44
- */
45
- export function parsePackagesBlock(content) {
46
- const globs = [];
47
- let inPackages = false;
48
- for (const rawLine of content.split(/\r?\n/)) {
49
- const line = rawLine.replace(/#.*$/, '');
50
- if (/^packages\s*:\s*$/.test(line)) {
51
- inPackages = true;
52
- continue;
53
- }
54
- if (!inPackages || line.trim() === '') {
55
- continue;
56
- }
57
- if (/^\S/.test(line)) {
58
- // 回到顶层键,packages 块结束
59
- inPackages = false;
60
- continue;
61
- }
62
- const match = line.match(/^\s*-\s*["']?([^"'\s]+)["']?\s*$/);
63
- if (match) {
64
- globs.push(match[1]);
65
- }
66
- }
67
- return globs;
68
- }
69
- /**
70
- * 读出 workspace 的待扫描 glob。解析不到时回退到三个约定容器目录,并置 fallback=true。
71
- */
72
- export function readWorkspaceGlobs(wsRoot) {
73
- const convention = [...LEGACY_CONTAINERS, ...LAYERED_CONTAINERS].map((container) => `${container}/*`);
74
- const yamlPath = join(wsRoot, 'pnpm-workspace.yaml');
75
- if (!existsSync(yamlPath)) {
76
- return { globs: convention, fallback: true };
77
- }
78
- const parsed = parsePackagesBlock(readFileSync(yamlPath, 'utf-8'));
79
- if (parsed.length === 0) {
80
- return { globs: convention, fallback: true };
81
- }
82
- return { globs: parsed, fallback: false };
83
- }
84
- /**
85
- * `add-app` / `add-lib` 的写入容器:workspace 已声明同类型容器 glob 时沿用它(含历史复数别名),
86
- * 否则用当前规范命名。否则在旧命名的 workspace 内会写出**不在 pnpm glob 范围内**的工程。
87
- */
88
- export function writableContainerFor(wsRoot, type) {
89
- const { globs, fallback } = readWorkspaceGlobs(wsRoot);
90
- if (!fallback) {
91
- const declared = containerAliases(type).find((container) => globs.some((glob) => glob === `${container}/*`));
92
- if (declared) {
93
- return declared;
94
- }
95
- }
96
- return PROJECT_CONTAINERS[type];
97
- }
98
- function detectLegacyType(projectDir) {
99
- return existsSync(join(projectDir, 'components', 'index.ts')) ? 'lib' : 'app';
100
- }
101
- /**
102
- * 扫描 workspace 内的工程:同时支持分层结构(`application` / `library`,含历史复数别名)
103
- * 与旧平铺结构(`packages`)。
104
- */
105
- export function listProjects(wsRoot) {
106
- const { globs } = readWorkspaceGlobs(wsRoot);
107
- const entries = [];
108
- const seen = new Set();
109
- for (const glob of globs) {
110
- const match = glob.match(/^([^/]+)\/\*$/);
111
- if (!match) {
112
- continue;
113
- }
114
- const container = match[1];
115
- const containerDir = join(wsRoot, container);
116
- if (!existsSync(containerDir) || !statSync(containerDir).isDirectory()) {
117
- continue;
118
- }
119
- for (const name of readdirSync(containerDir).sort()) {
120
- const projectDir = join(containerDir, name);
121
- if (!statSync(projectDir).isDirectory()) {
122
- continue;
123
- }
124
- const dir = `${container}/${name}`;
125
- if (seen.has(dir)) {
126
- continue;
127
- }
128
- seen.add(dir);
129
- // 分层容器按容器名定类型(含历史别名);旧平铺结构按工程证据推断。
130
- const type = containerType(container) ?? detectLegacyType(projectDir);
131
- entries.push({ type, dir, name });
132
- }
133
- }
134
- return entries;
135
- }
136
- /**
137
- * workspace 是否已采用分层容器结构(当前规范命名或历史复数别名)。
138
- * verifier 用它区分「新工作空间强校验」与「旧平铺工作空间只读兼容」。
139
- */
140
- export function usesNewContainers(wsRoot) {
141
- const { globs, fallback } = readWorkspaceGlobs(wsRoot);
142
- if (fallback) {
143
- return false;
144
- }
145
- return globs.some((glob) => LAYERED_CONTAINERS.some((container) => glob.startsWith(`${container}/`)));
146
- }
147
- /**
148
- * 从包名推导目录名(去掉 scope 并转为合法 kebab-case)
149
- */
150
- export function deriveAppDir(name) {
151
- const withoutScope = name.replace(/^@[^/]+\//, '');
152
- return withoutScope
153
- .toLowerCase()
154
- .replace(/[^a-z0-9-_]/g, '-')
155
- .replace(/^-+|-+$/g, '');
156
- }
157
- /**
158
- * 校验 npm 包名有效性
159
- */
160
- export function validatePackageName(name) {
161
- if (!name || typeof name !== 'string') {
162
- return false;
163
- }
164
- return /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
165
- }
166
- /**
167
- * 向上查找 Workspace 根目录(同时含 pnpm-workspace.yaml 与 package.json)。
168
- */
169
- export function findWorkspaceRoot(startDir = process.cwd()) {
170
- let current = resolve(startDir);
171
- while (true) {
172
- if (existsSync(join(current, 'pnpm-workspace.yaml')) &&
173
- existsSync(join(current, 'package.json'))) {
174
- return current;
175
- }
176
- const parent = dirname(current);
177
- if (parent === current) {
178
- break;
179
- }
180
- current = parent;
181
- }
182
- return null;
183
- }
1
+ import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ /** 分层容器:工程类型 → 容器目录名。全仓库唯一来源(写入只用它)。 */
4
+ export const PROJECT_CONTAINERS = { app: 'app', lib: 'lib' };
5
+ /** 全部容器名,供安全校验识别 workspace 元数据目录。 */
6
+ export const CONTAINERS = Object.values(PROJECT_CONTAINERS);
7
+ /** 容器命名 → 工程类型;非 app/lib 返回 null(旧容器名一律不再识别)。 */
8
+ export function containerType(container) {
9
+ if (container === PROJECT_CONTAINERS.app) {
10
+ return 'app';
11
+ }
12
+ if (container === PROJECT_CONTAINERS.lib) {
13
+ return 'lib';
14
+ }
15
+ return null;
16
+ }
17
+ export function containerFor(type) {
18
+ // 微应用也是「可部署的应用」:与 app 同在 app/ 容器
19
+ return type === 'micro' ? PROJECT_CONTAINERS.app : PROJECT_CONTAINERS[type];
20
+ }
21
+ export function resolveProjectPath(wsRoot, type, dir) {
22
+ return join(wsRoot, containerFor(type), dir);
23
+ }
24
+ /** 读工程 package.json 的 farris.type(当前只有 micro 会写,用于与普通应用区分)。 */
25
+ function readDeclaredType(projectDir) {
26
+ const pkgPath = join(projectDir, 'package.json');
27
+ if (!existsSync(pkgPath)) {
28
+ return undefined;
29
+ }
30
+ try {
31
+ const declared = JSON.parse(readFileSync(pkgPath, 'utf-8'))?.farris?.type;
32
+ return declared === 'app' || declared === 'lib' || declared === 'micro' ? declared : undefined;
33
+ }
34
+ catch {
35
+ return undefined;
36
+ }
37
+ }
38
+ /**
39
+ * 解析 pnpm-workspace.yaml 的 packages 列表。
40
+ * 只识别 `- "dir/*"` 形式,不引入 yaml 依赖;结构超出该形式时返回空数组,由调用方回退。
41
+ */
42
+ export function parsePackagesBlock(content) {
43
+ const globs = [];
44
+ let inPackages = false;
45
+ for (const rawLine of content.split(/\r?\n/)) {
46
+ const line = rawLine.replace(/#.*$/, '');
47
+ if (/^packages\s*:\s*$/.test(line)) {
48
+ inPackages = true;
49
+ continue;
50
+ }
51
+ if (!inPackages || line.trim() === '') {
52
+ continue;
53
+ }
54
+ if (/^\S/.test(line)) {
55
+ // 回到顶层键,packages 块结束
56
+ inPackages = false;
57
+ continue;
58
+ }
59
+ const match = line.match(/^\s*-\s*["']?([^"'\s]+)["']?\s*$/);
60
+ if (match) {
61
+ globs.push(match[1]);
62
+ }
63
+ }
64
+ return globs;
65
+ }
66
+ /**
67
+ * 读出 workspace 的待扫描 glob。解析不到时回退到两个约定容器目录,并置 fallback=true。
68
+ */
69
+ export function readWorkspaceGlobs(wsRoot) {
70
+ const convention = CONTAINERS.map((container) => `${container}/*`);
71
+ const yamlPath = join(wsRoot, 'pnpm-workspace.yaml');
72
+ if (!existsSync(yamlPath)) {
73
+ return { globs: convention, fallback: true };
74
+ }
75
+ const parsed = parsePackagesBlock(readFileSync(yamlPath, 'utf-8'));
76
+ if (parsed.length === 0) {
77
+ return { globs: convention, fallback: true };
78
+ }
79
+ return { globs: parsed, fallback: false };
80
+ }
81
+ /**
82
+ * 扫描 workspace 内的工程:只识别 app/ 与 lib/ 两个容器。
83
+ * 其它容器(如历史的 packages/)一律跳过,不再按工程证据推断类型。
84
+ */
85
+ export function listProjects(wsRoot) {
86
+ const { globs } = readWorkspaceGlobs(wsRoot);
87
+ const entries = [];
88
+ const seen = new Set();
89
+ for (const glob of globs) {
90
+ const match = glob.match(/^([^/]+)\/\*$/);
91
+ if (!match) {
92
+ continue;
93
+ }
94
+ const container = match[1];
95
+ const type = containerType(container);
96
+ if (!type) {
97
+ continue;
98
+ }
99
+ const containerDir = join(wsRoot, container);
100
+ if (!existsSync(containerDir) || !statSync(containerDir).isDirectory()) {
101
+ continue;
102
+ }
103
+ for (const name of readdirSync(containerDir).sort()) {
104
+ const projectDir = join(containerDir, name);
105
+ if (!statSync(projectDir).isDirectory()) {
106
+ continue;
107
+ }
108
+ const dir = `${container}/${name}`;
109
+ if (seen.has(dir)) {
110
+ continue;
111
+ }
112
+ seen.add(dir);
113
+ // 容器给默认类型;工程 package.json 的 farris.type 可覆盖(micro 与 app 同容器)
114
+ entries.push({ type: readDeclaredType(projectDir) ?? type, dir, name });
115
+ }
116
+ }
117
+ return entries;
118
+ }
119
+ /**
120
+ * 从包名推导目录名(去掉 scope 并转为合法 kebab-case)
121
+ */
122
+ export function deriveAppDir(name) {
123
+ const withoutScope = name.replace(/^@[^/]+\//, '');
124
+ return withoutScope
125
+ .toLowerCase()
126
+ .replace(/[^a-z0-9-_]/g, '-')
127
+ .replace(/^-+|-+$/g, '');
128
+ }
129
+ /**
130
+ * 校验 npm 包名有效性
131
+ */
132
+ export function validatePackageName(name) {
133
+ if (!name || typeof name !== 'string') {
134
+ return false;
135
+ }
136
+ return /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name);
137
+ }
138
+ /**
139
+ * 向上查找 Workspace 根目录(同时含 pnpm-workspace.yaml 与 package.json)。
140
+ */
141
+ export function findWorkspaceRoot(startDir = process.cwd()) {
142
+ let current = resolve(startDir);
143
+ while (true) {
144
+ if (existsSync(join(current, 'pnpm-workspace.yaml')) &&
145
+ existsSync(join(current, 'package.json'))) {
146
+ return current;
147
+ }
148
+ const parent = dirname(current);
149
+ if (parent === current) {
150
+ break;
151
+ }
152
+ current = parent;
153
+ }
154
+ return null;
155
+ }
184
156
  //# sourceMappingURL=project-layout.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"project-layout.js","sourceRoot":"","sources":["../../src/common/project-layout.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-layout.js","sourceRoot":"","sources":["../../src/common/project-layout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEnD,wCAAwC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAW,CAAC;AAEtE,qCAAqC;AACrC,MAAM,CAAC,MAAM,UAAU,GAAsB,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;AAE/E,iDAAiD;AACjD,MAAM,UAAU,aAAa,CAAC,SAAiB;IAC7C,IAAI,SAAS,KAAK,kBAAkB,CAAC,GAAG,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,SAAS,KAAK,kBAAkB,CAAC,GAAG,EAAE,CAAC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAaD,MAAM,UAAU,YAAY,CAAC,IAAiB;IAC5C,iCAAiC;IACjC,OAAO,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,MAAc,EAAE,IAAiB,EAAE,GAAW;IAC/E,OAAO,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED,+DAA+D;AAC/D,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC;QAC1E,OAAO,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,UAAU,GAAG,KAAK,CAAC;IAEvB,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzC,IAAI,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,UAAU,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrB,qBAAqB;YACrB,UAAU,GAAG,KAAK,CAAC;YACnB,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;QAC7D,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AAC5C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc;IACzC,MAAM,EAAE,KAAK,EAAE,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QACD,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YACvE,SAAS;QACX,CAAC;QAED,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YACpD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC5C,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxC,SAAS;YACX,CAAC;YACD,MAAM,GAAG,GAAG,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,6DAA6D;YAC7D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,CAAC,UAAU,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO,YAAY;SAChB,WAAW,EAAE;SACb,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;SAC5B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,wDAAwD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7E,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB,OAAO,CAAC,GAAG,EAAE;IAChE,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,OAAO,IAAI,EAAE,CAAC;QACZ,IACE,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;YAChD,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EACzC,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,MAAM;QACR,CAAC;QACD,OAAO,GAAG,MAAM,CAAC;IACnB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}