@bleedingdev/modern-js-create 3.2.0-ultramodern.117 → 3.2.0-ultramodern.119
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -125
- package/dist/cjs/create-package-root.cjs +1 -1
- package/dist/cjs/index.cjs +11 -602
- package/dist/cjs/locale/en.cjs +12 -19
- package/dist/cjs/locale/zh.cjs +12 -19
- package/dist/cjs/ultramodern-workspace.cjs +18 -21
- package/dist/esm/create-package-root.js +1 -1
- package/dist/esm/index.js +13 -603
- package/dist/esm/locale/en.js +12 -19
- package/dist/esm/locale/zh.js +12 -19
- package/dist/esm/ultramodern-workspace.js +19 -19
- package/dist/esm-node/create-package-root.js +1 -1
- package/dist/esm-node/index.js +13 -603
- package/dist/esm-node/locale/en.js +12 -19
- package/dist/esm-node/locale/zh.js +12 -19
- package/dist/esm-node/ultramodern-workspace.js +19 -19
- package/dist/types/locale/en.d.ts +0 -7
- package/dist/types/locale/index.d.ts +0 -14
- package/dist/types/locale/zh.d.ts +0 -7
- package/dist/types/ultramodern-workspace.d.ts +0 -1
- package/package.json +4 -5
- package/template-workspace/.github/workflows/ultramodern-workspace-gates.yml.handlebars +22 -6
- package/template-workspace/AGENTS.md +8 -4
- package/template-workspace/README.md.handlebars +11 -1
- package/template-workspace/lefthook.yml +18 -4
- package/template-workspace/scripts/bootstrap-agent-skills.mjs +38 -24
- package/template/.agents/skills-lock.json +0 -34
- package/template/.browserslistrc +0 -4
- package/template/.codex/hooks.json +0 -16
- package/template/.github/renovate.json +0 -53
- package/template/.github/workflows/ultramodern-gates.yml.handlebars +0 -54
- package/template/.gitignore.handlebars +0 -30
- package/template/.mise.toml.handlebars +0 -2
- package/template/.nvmrc +0 -2
- package/template/AGENTS.md +0 -23
- package/template/README.md +0 -111
- package/template/api/effect/index.ts.handlebars +0 -34
- package/template/api/lambda/hello.ts.handlebars +0 -6
- package/template/config/favicon.svg +0 -5
- package/template/config/public/assets/ultramodern-logo.svg +0 -6
- package/template/config/public/locales/cs/translation.json +0 -44
- package/template/config/public/locales/en/translation.json +0 -44
- package/template/lefthook.yml +0 -10
- package/template/modern.config.ts.handlebars +0 -78
- package/template/oxfmt.config.ts +0 -15
- package/template/oxlint.config.ts +0 -19
- package/template/package.json.handlebars +0 -69
- package/template/pnpm-workspace.yaml +0 -34
- package/template/postcss.config.mjs.handlebars +0 -6
- package/template/rstest.config.mts +0 -5
- package/template/scripts/bootstrap-agent-skills.mjs +0 -228
- package/template/scripts/check-i18n-strings.mjs +0 -3
- package/template/scripts/validate-ultramodern.mjs.handlebars +0 -658
- package/template/shared/effect/api.ts.handlebars +0 -17
- package/template/src/modern-app-env.d.ts +0 -3
- package/template/src/modern.runtime.ts.handlebars +0 -23
- package/template/src/routes/[lang]/page.tsx.handlebars +0 -209
- package/template/src/routes/index.css.handlebars +0 -266
- package/template/src/routes/layout.tsx.handlebars +0 -10
- package/template/tailwind.config.ts.handlebars +0 -10
- package/template/tests/tsconfig.json +0 -7
- package/template/tests/ultramodern.contract.test.ts.handlebars +0 -163
- package/template/tsconfig.json +0 -121
package/dist/esm/locale/en.js
CHANGED
|
@@ -6,8 +6,6 @@ const EN_LOCALE = {
|
|
|
6
6
|
error: {
|
|
7
7
|
projectNameEmpty: 'Error: Project name cannot be empty',
|
|
8
8
|
directoryExists: 'Error: Directory "{projectName}" already exists and is not empty',
|
|
9
|
-
invalidRouter: 'Error: Unsupported router "{router}". Use "react-router" or "tanstack".',
|
|
10
|
-
invalidBffRuntime: 'Error: Unsupported BFF runtime "{runtime}". Use "hono" or "effect".',
|
|
11
9
|
legacyModernJsNotConfirmed: 'Aborted. UltraModern.js remains the default unattended setup.',
|
|
12
10
|
createFailed: 'Error creating project:'
|
|
13
11
|
},
|
|
@@ -18,41 +16,36 @@ const EN_LOCALE = {
|
|
|
18
16
|
step1: 'cd {projectName}',
|
|
19
17
|
step2: 'pnpm install',
|
|
20
18
|
step3: 'pnpm dev',
|
|
21
|
-
legacyModernJsWarning: "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nBRUTAL WARNING: YOU ARE OPTING OUT OF ULTRAMODERN.JS DEFAULTS.\nThe unattended default is the best UltraModern.js configuration:\
|
|
19
|
+
legacyModernJsWarning: "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\nBRUTAL WARNING: YOU ARE OPTING OUT OF ULTRAMODERN.JS DEFAULTS.\nThe unattended default is the best UltraModern.js configuration:\na structured SuperApp workspace, presetUltramodern, TanStack Router,\nEffect BFF, Tailwind CSS v4, and the BleedingDev package cohort.\nThe original Modern.js setup is a dangerous opt-in path.\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
22
20
|
},
|
|
23
21
|
help: {
|
|
24
22
|
title: '🚀 UltraModern.js Project Creator',
|
|
25
|
-
description: 'Create a new UltraModern.js
|
|
23
|
+
description: 'Create a new UltraModern.js SuperApp workspace with the full quality baseline by default',
|
|
26
24
|
usage: '📖 Usage:',
|
|
27
25
|
usageExample: ' pnpm dlx @bleedingdev/modern-js-create [project-name] [options]',
|
|
28
26
|
options: '⚙️ Options:',
|
|
29
27
|
optionHelp: ' -h, --help Display this help message',
|
|
30
28
|
optionVersion: ' -v, --version Display version information',
|
|
31
29
|
optionLang: ' -l, --lang Set the language (en default; zh opt-in)',
|
|
32
|
-
|
|
33
|
-
optionBff: ' --bff Keep Effect BFF enabled (default for UltraModern apps)',
|
|
34
|
-
optionBffRuntime: ' --bff-runtime Select BFF runtime (hono or effect)',
|
|
35
|
-
optionTailwind: ' --no-tailwind Disable default Tailwind CSS v4 scaffold',
|
|
30
|
+
optionTailwind: ' --no-tailwind Disable default Tailwind CSS v4 workspace styling',
|
|
36
31
|
optionWorkspace: ' --workspace Use workspace protocol for @modern-js dependencies (for local monorepo testing)',
|
|
37
|
-
optionUltramodernWorkspace: ' --ultramodern-workspace Generate an UltraModern SuperApp workspace (default is a full UltraModern single app)',
|
|
38
32
|
optionUltramodernPackageSource: ' --ultramodern-package-source Select UltraModern package source (workspace or install; BleedingDev defaults to install aliases)',
|
|
39
33
|
optionUltramodernPackageScope: ' --ultramodern-package-scope Publish scope for npm alias installs (for example bleedingdev)',
|
|
40
34
|
optionUltramodernPackageNamePrefix: ' --ultramodern-package-name-prefix Prefix for npm alias package names (default: modern-js-)',
|
|
41
35
|
optionVertical: ' --vertical Mutate the current existing UltraModern workspace and wire a MicroVertical named <project-name>',
|
|
42
36
|
optionLegacyModernJs: ' --legacy-modern-js Opt into the original Modern.js setup after a large warning and typed confirmation',
|
|
43
|
-
optionSub: ' -s, --sub Mark as a subproject (package in monorepo)',
|
|
44
37
|
examples: '💡 Examples:',
|
|
45
|
-
example1: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
46
|
-
example2: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
47
|
-
example3: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
38
|
+
example1: ' pnpm dlx @bleedingdev/modern-js-create my-workspace',
|
|
39
|
+
example2: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --lang zh',
|
|
40
|
+
example3: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --no-tailwind',
|
|
48
41
|
example4: ' pnpm dlx @bleedingdev/modern-js-create --help',
|
|
49
42
|
example5: ' pnpm dlx @bleedingdev/modern-js-create .',
|
|
50
|
-
example6: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
51
|
-
example7: '
|
|
52
|
-
example8: '
|
|
53
|
-
example9: '
|
|
54
|
-
example10: '
|
|
55
|
-
example11: '
|
|
43
|
+
example6: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --workspace',
|
|
44
|
+
example7: '',
|
|
45
|
+
example8: '',
|
|
46
|
+
example9: '',
|
|
47
|
+
example10: '',
|
|
48
|
+
example11: '',
|
|
56
49
|
example12: ' pnpm dlx @bleedingdev/modern-js-create catalog --vertical',
|
|
57
50
|
moreInfo: '📚 Learn more: https://modernjs.dev'
|
|
58
51
|
},
|
package/dist/esm/locale/zh.js
CHANGED
|
@@ -6,8 +6,6 @@ const ZH_LOCALE = {
|
|
|
6
6
|
error: {
|
|
7
7
|
projectNameEmpty: '错误: 项目名称不能为空',
|
|
8
8
|
directoryExists: '错误: 目录 "{projectName}" 已存在且不为空',
|
|
9
|
-
invalidRouter: '错误: 不支持的路由器 "{router}",请使用 "react-router" 或 "tanstack"',
|
|
10
|
-
invalidBffRuntime: '错误: 不支持的 BFF 运行时 "{runtime}",请使用 "hono" 或 "effect"',
|
|
11
9
|
legacyModernJsNotConfirmed: '已中止。UltraModern.js 仍是默认的免交互初始化方案。',
|
|
12
10
|
createFailed: '创建项目时出错:'
|
|
13
11
|
},
|
|
@@ -18,41 +16,36 @@ const ZH_LOCALE = {
|
|
|
18
16
|
step1: 'cd {projectName}',
|
|
19
17
|
step2: 'pnpm install',
|
|
20
18
|
step3: 'pnpm dev',
|
|
21
|
-
legacyModernJsWarning: "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n严重警告:你正在退出 ULTRAMODERN.JS 默认配置。\n免交互默认值是最佳 UltraModern.js 配置:\
|
|
19
|
+
legacyModernJsWarning: "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n严重警告:你正在退出 ULTRAMODERN.JS 默认配置。\n免交互默认值是最佳 UltraModern.js 配置:\n结构化 SuperApp 工作区、presetUltramodern、TanStack Router、\nEffect BFF、Tailwind CSS v4,以及 BleedingDev 包版本队列。\n原始 Modern.js 初始化是危险的显式选择路径。\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
22
20
|
},
|
|
23
21
|
help: {
|
|
24
22
|
title: '🚀 UltraModern.js 项目创建工具',
|
|
25
|
-
description: '
|
|
23
|
+
description: '默认创建带完整质量基线的 UltraModern.js SuperApp 工作区',
|
|
26
24
|
usage: '📖 用法:',
|
|
27
25
|
usageExample: ' pnpm dlx @bleedingdev/modern-js-create [项目名称] [选项]',
|
|
28
26
|
options: '⚙️ 选项:',
|
|
29
27
|
optionHelp: ' -h, --help 显示帮助信息',
|
|
30
28
|
optionVersion: ' -v, --version 显示版本信息',
|
|
31
29
|
optionLang: ' -l, --lang 设置语言 (默认 en;zh 需显式选择)',
|
|
32
|
-
|
|
33
|
-
optionBff: ' --bff 保持启用 Effect BFF(UltraModern 应用默认值)',
|
|
34
|
-
optionBffRuntime: ' --bff-runtime 选择 BFF 运行时(hono 或 effect)',
|
|
35
|
-
optionTailwind: ' --no-tailwind 禁用默认 Tailwind CSS v4 模板',
|
|
30
|
+
optionTailwind: ' --no-tailwind 禁用默认 Tailwind CSS v4 工作区样式',
|
|
36
31
|
optionWorkspace: ' --workspace 对 @modern-js 依赖使用 workspace 协议(用于本地 monorepo 联调)',
|
|
37
|
-
optionUltramodernWorkspace: ' --ultramodern-workspace 生成 UltraModern SuperApp 工作区(默认创建完整 UltraModern 单应用)',
|
|
38
32
|
optionUltramodernPackageSource: ' --ultramodern-package-source 选择 UltraModern 依赖来源(workspace 或 install;BleedingDev 默认使用 install alias)',
|
|
39
33
|
optionUltramodernPackageScope: ' --ultramodern-package-scope npm alias 安装使用的发布 scope(例如 bleedingdev)',
|
|
40
34
|
optionUltramodernPackageNamePrefix: ' --ultramodern-package-name-prefix npm alias 包名前缀(默认:modern-js-)',
|
|
41
35
|
optionVertical: ' --vertical 修改当前已有的 UltraModern 工作区,并接入名为 <项目名称> 的 MicroVertical',
|
|
42
36
|
optionLegacyModernJs: ' --legacy-modern-js 在大型警告和输入确认后,选择原始 Modern.js 初始化',
|
|
43
|
-
optionSub: ' -s, --sub 标记为子项目(monorepo 中的子包)',
|
|
44
37
|
examples: '💡 示例:',
|
|
45
|
-
example1: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
46
|
-
example2: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
47
|
-
example3: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
38
|
+
example1: ' pnpm dlx @bleedingdev/modern-js-create my-workspace',
|
|
39
|
+
example2: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --lang zh',
|
|
40
|
+
example3: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --no-tailwind',
|
|
48
41
|
example4: ' pnpm dlx @bleedingdev/modern-js-create --help',
|
|
49
42
|
example5: ' pnpm dlx @bleedingdev/modern-js-create .',
|
|
50
|
-
example6: ' pnpm dlx @bleedingdev/modern-js-create my-
|
|
51
|
-
example7: '
|
|
52
|
-
example8: '
|
|
53
|
-
example9: '
|
|
54
|
-
example10: '
|
|
55
|
-
example11: '
|
|
43
|
+
example6: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --workspace',
|
|
44
|
+
example7: '',
|
|
45
|
+
example8: '',
|
|
46
|
+
example9: '',
|
|
47
|
+
example10: '',
|
|
48
|
+
example11: '',
|
|
56
49
|
example12: ' pnpm dlx @bleedingdev/modern-js-create catalog --vertical',
|
|
57
50
|
moreInfo: '📚 更多信息: https://modernjs.dev'
|
|
58
51
|
},
|
|
@@ -63,7 +63,6 @@ const supportedWorkspaceLanguages = [
|
|
|
63
63
|
'en',
|
|
64
64
|
'cs'
|
|
65
65
|
];
|
|
66
|
-
const ULTRAMODERN_WORKSPACE_FLAG = '--ultramodern-workspace';
|
|
67
66
|
const FIRST_VERTICAL_PORT = 4101;
|
|
68
67
|
const TAILWIND_PREFIX_DIGIT_WORDS = [
|
|
69
68
|
'zero',
|
|
@@ -440,24 +439,24 @@ function createRootPackageJson(scope, packageSource, remotes = []) {
|
|
|
440
439
|
`dev:${remote.packageSuffix}`,
|
|
441
440
|
`pnpm --filter ${ultramodern_workspace_packageName(scope, remote.packageSuffix)} dev`
|
|
442
441
|
])),
|
|
443
|
-
build: `${remoteBuildPrefix}ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm
|
|
442
|
+
build: `${remoteBuildPrefix}ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm mf:types`,
|
|
444
443
|
format: "oxfmt . '!repos/**'",
|
|
445
444
|
'format:check': "oxfmt --check . '!repos/**'",
|
|
446
445
|
lint: 'oxlint apps verticals packages',
|
|
447
446
|
'lint:fix': 'oxlint apps verticals packages --fix',
|
|
448
447
|
typecheck: `pnpm -r --filter "@${scope}/*" typecheck`,
|
|
449
|
-
'cloudflare:build': `${remoteCloudflareBuildPrefix}pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm
|
|
448
|
+
'cloudflare:build': `${remoteCloudflareBuildPrefix}pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm mf:types`,
|
|
450
449
|
'cloudflare:deploy': `${remoteCloudflareDeployPrefix}pnpm --filter "./apps/shell-super-app" run cloudflare:deploy`,
|
|
451
450
|
'cloudflare:proof': "node ./scripts/proof-cloudflare-version.mjs --out .codex/reports/cloudflare-version-proof/public-url-proof.json",
|
|
452
451
|
'skills:install': "node ./scripts/bootstrap-agent-skills.mjs",
|
|
453
452
|
'skills:check': "node ./scripts/bootstrap-agent-skills.mjs --check",
|
|
454
453
|
'agents:refs:install': "node ./scripts/setup-agent-reference-repos.mjs",
|
|
455
454
|
'agents:refs:check': "node ./scripts/setup-agent-reference-repos.mjs --check",
|
|
456
|
-
'
|
|
457
|
-
'
|
|
458
|
-
'
|
|
459
|
-
postinstall: "oxfmt . '!repos/**' && node ./scripts/bootstrap-agent-skills.mjs && node ./scripts/setup-agent-reference-repos.mjs",
|
|
460
|
-
check: 'pnpm format:check && pnpm lint && pnpm typecheck && pnpm skills:check && pnpm
|
|
455
|
+
'mf:types': "node ./scripts/assert-mf-types.mjs",
|
|
456
|
+
'contract:check': "node ./scripts/validate-ultramodern-workspace.mjs",
|
|
457
|
+
'i18n:boundaries': "node ./scripts/check-ultramodern-i18n-boundaries.mjs",
|
|
458
|
+
postinstall: "oxfmt . '!repos/**' && node ./scripts/bootstrap-agent-skills.mjs --postinstall && node ./scripts/setup-agent-reference-repos.mjs",
|
|
459
|
+
check: 'pnpm format:check && pnpm lint && pnpm typecheck && pnpm skills:check && pnpm i18n:boundaries && pnpm contract:check'
|
|
461
460
|
},
|
|
462
461
|
engines: {
|
|
463
462
|
node: '>=20',
|
|
@@ -3578,8 +3577,8 @@ function createTopology(scope, remotes = []) {
|
|
|
3578
3577
|
validation: {
|
|
3579
3578
|
script: "scripts/validate-ultramodern-workspace.mjs",
|
|
3580
3579
|
commands: [
|
|
3581
|
-
'pnpm
|
|
3582
|
-
'pnpm
|
|
3580
|
+
'pnpm i18n:boundaries',
|
|
3581
|
+
'pnpm contract:check'
|
|
3583
3582
|
]
|
|
3584
3583
|
}
|
|
3585
3584
|
};
|
|
@@ -4164,8 +4163,8 @@ function createTemplateManifest(modernVersion, packageSource) {
|
|
|
4164
4163
|
expectedCommands: [
|
|
4165
4164
|
'mise install',
|
|
4166
4165
|
'pnpm install',
|
|
4167
|
-
'pnpm run
|
|
4168
|
-
'pnpm run
|
|
4166
|
+
'pnpm run i18n:boundaries',
|
|
4167
|
+
'pnpm run contract:check'
|
|
4169
4168
|
]
|
|
4170
4169
|
}
|
|
4171
4170
|
};
|
|
@@ -4277,8 +4276,8 @@ function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
|
|
|
4277
4276
|
const oldRemotePaths = [
|
|
4278
4277
|
'apps/remotes'
|
|
4279
4278
|
];
|
|
4280
|
-
const expectedBuildScript = remotes.length > 0 ? 'ULTRAMODERN_ZEPHYR=false pnpm -r --filter "./verticals/*" run build && ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm
|
|
4281
|
-
const expectedCloudflareBuildScript = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:build && pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm
|
|
4279
|
+
const expectedBuildScript = remotes.length > 0 ? 'ULTRAMODERN_ZEPHYR=false pnpm -r --filter "./verticals/*" run build && ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm mf:types' : 'ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm mf:types';
|
|
4280
|
+
const expectedCloudflareBuildScript = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:build && pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm mf:types' : 'pnpm --filter "./apps/shell-super-app" run cloudflare:build && pnpm mf:types';
|
|
4282
4281
|
const expectedCloudflareDeployScript = remotes.length > 0 ? 'pnpm -r --filter "./verticals/*" run cloudflare:deploy && pnpm --filter "./apps/shell-super-app" run cloudflare:deploy' : 'pnpm --filter "./apps/shell-super-app" run cloudflare:deploy';
|
|
4283
4282
|
const expectedCloudflareSecurity = createCloudflareSecurityContract();
|
|
4284
4283
|
return `import { execFileSync } from 'node:child_process';
|
|
@@ -4530,20 +4529,21 @@ assert(
|
|
|
4530
4529
|
'Root build script must build verticals before shell',
|
|
4531
4530
|
);
|
|
4532
4531
|
assert(rootPackage.scripts?.['cloudflare:build'] === expectedCloudflareBuildScript, 'Root cloudflare:build script is incorrect');
|
|
4533
|
-
assert(
|
|
4534
|
-
assert(rootPackage.scripts?.['
|
|
4532
|
+
assert(!('ultramodern:check' in (rootPackage.scripts ?? {})), 'Root must not expose ultramodern:check');
|
|
4533
|
+
assert(rootPackage.scripts?.['contract:check'] === 'node ./scripts/validate-ultramodern-workspace.mjs', 'Root must expose contract:check');
|
|
4534
|
+
assert(rootPackage.scripts?.['i18n:boundaries'] === 'node ./scripts/check-ultramodern-i18n-boundaries.mjs', 'Root must expose i18n:boundaries');
|
|
4535
4535
|
const i18nBoundaryScript = readText('scripts/check-ultramodern-i18n-boundaries.mjs');
|
|
4536
4536
|
assert(
|
|
4537
4537
|
i18nBoundaryScript.includes("from '@modern-js/code-tools'") &&
|
|
4538
4538
|
i18nBoundaryScript.includes('runWorkspaceSourceCheck'),
|
|
4539
4539
|
'Root i18n boundary script must call @modern-js/code-tools',
|
|
4540
4540
|
);
|
|
4541
|
-
assert(rootPackage.scripts?.['
|
|
4541
|
+
assert(rootPackage.scripts?.['mf:types'] === 'node ./scripts/assert-mf-types.mjs', 'Root must expose mf:types');
|
|
4542
4542
|
assert(rootPackage.scripts?.['cloudflare:deploy'] === expectedCloudflareDeployScript, 'Root must expose cloudflare:deploy');
|
|
4543
4543
|
assert(rootPackage.scripts?.['cloudflare:proof'] === 'node ./scripts/proof-cloudflare-version.mjs --out .codex/reports/cloudflare-version-proof/public-url-proof.json', 'Root must expose cloudflare:proof');
|
|
4544
4544
|
assert(rootPackage.scripts?.['skills:install'] === 'node ./scripts/bootstrap-agent-skills.mjs', 'Root must expose skills:install');
|
|
4545
4545
|
assert(rootPackage.scripts?.['skills:check'] === 'node ./scripts/bootstrap-agent-skills.mjs --check', 'Root must expose skills:check');
|
|
4546
|
-
assert(rootPackage.scripts?.postinstall === "oxfmt . '!repos/**' && node ./scripts/bootstrap-agent-skills.mjs && node ./scripts/setup-agent-reference-repos.mjs", 'Root postinstall must format, bootstrap agent skills, initialize git/hooks, and install reference repositories');
|
|
4546
|
+
assert(rootPackage.scripts?.postinstall === "oxfmt . '!repos/**' && node ./scripts/bootstrap-agent-skills.mjs --postinstall && node ./scripts/setup-agent-reference-repos.mjs", 'Root postinstall must format, bootstrap agent skills, initialize git/hooks, and install reference repositories');
|
|
4547
4547
|
const agentReferenceRepoSetup = readText('scripts/setup-agent-reference-repos.mjs');
|
|
4548
4548
|
assert(agentReferenceRepoSetup.includes("['commit', '--no-verify', '-m', message]"), 'Agent reference repo installer commits must skip hooks during postinstall');
|
|
4549
4549
|
assert(agentReferenceRepoSetup.includes("commitInstallerChanges('Initialize UltraModern workspace')"), 'Initial agent reference repo commit must use the installer commit helper');
|
|
@@ -5560,4 +5560,4 @@ const ultramodernWorkspaceVersions = {
|
|
|
5560
5560
|
tailwind: TAILWIND_VERSION,
|
|
5561
5561
|
tailwindPostcss: TAILWIND_POSTCSS_VERSION
|
|
5562
5562
|
};
|
|
5563
|
-
export {
|
|
5563
|
+
export { addUltramodernVertical, generateUltramodernWorkspace, ultramodernWorkspaceVersions };
|
|
@@ -10,7 +10,7 @@ function resolveCreatePackageRoot(fromDir) {
|
|
|
10
10
|
const seen = new Set();
|
|
11
11
|
for (const candidate of candidates)if (!seen.has(candidate)) {
|
|
12
12
|
seen.add(candidate);
|
|
13
|
-
if (node_fs.existsSync(node_path.join(candidate, 'package.json')) && node_fs.existsSync(node_path.join(candidate, 'template'))) return candidate;
|
|
13
|
+
if (node_fs.existsSync(node_path.join(candidate, 'package.json')) && node_fs.existsSync(node_path.join(candidate, 'template-workspace'))) return candidate;
|
|
14
14
|
}
|
|
15
15
|
throw new Error('Unable to resolve create package root');
|
|
16
16
|
}
|