@bleedingdev/modern-js-create 3.5.0-ultramodern.36 → 3.5.0-ultramodern.38
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 +11 -14
- package/dist/cjs/cli/flags.cjs +0 -31
- package/dist/cjs/cli/help.cjs +0 -1
- package/dist/cjs/cli/package-source.cjs +0 -3
- package/dist/cjs/cli/prompts.cjs +2 -20
- package/dist/cjs/index.cjs +0 -5
- package/dist/cjs/locale/en.cjs +2 -6
- package/dist/cjs/locale/zh.cjs +2 -6
- package/dist/cjs/ultramodern-package-source.cjs +0 -32
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.cjs +1 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.cjs +1 -1
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.cjs +1 -1
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.cjs +5 -3
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.cjs +8 -0
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.cjs +2 -8
- package/dist/cjs/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.cjs +14 -0
- package/dist/cjs/ultramodern-workspace/add-vertical/plan.cjs +0 -12
- package/dist/cjs/ultramodern-workspace/add-vertical/preflight.cjs +2 -26
- package/dist/cjs/ultramodern-workspace/add-vertical/shell-files.cjs +1 -1
- package/dist/cjs/ultramodern-workspace/add-vertical/topology.cjs +6 -4
- package/dist/cjs/ultramodern-workspace/app-files.cjs +2 -23
- package/dist/cjs/ultramodern-workspace/contracts.cjs +25 -16
- package/dist/cjs/ultramodern-workspace/delivery-unit-sync.cjs +1 -1
- package/dist/cjs/ultramodern-workspace/demo-components.cjs +0 -3
- package/dist/cjs/ultramodern-workspace/fs-io.cjs +0 -33
- package/dist/cjs/ultramodern-workspace/locales.cjs +1 -14
- package/dist/cjs/ultramodern-workspace/mf-validation/inspect.cjs +2 -10
- package/dist/cjs/ultramodern-workspace/mf-validation/object-literal.cjs +2 -17
- package/dist/cjs/ultramodern-workspace/mf-validation/path-utils.cjs +0 -6
- package/dist/cjs/ultramodern-workspace/mf-validation/syntax.cjs +2 -29
- package/dist/cjs/ultramodern-workspace/mf-validation/validate.cjs +1 -1
- package/dist/cjs/ultramodern-workspace/module-federation/config.cjs +19 -8
- package/dist/cjs/ultramodern-workspace/module-federation/reexport-module.cjs +3 -2
- package/dist/cjs/ultramodern-workspace/naming.cjs +0 -6
- package/dist/cjs/ultramodern-workspace/package-json.cjs +5 -14
- package/dist/cjs/ultramodern-workspace/policy.cjs +0 -21
- package/dist/cjs/ultramodern-workspace/public-surface.cjs +0 -21
- package/dist/cjs/ultramodern-workspace/routes.cjs +0 -15
- package/dist/cjs/ultramodern-workspace/shared-patches.cjs +4 -3
- package/dist/cjs/ultramodern-workspace/tooling-command-catalog.cjs +2 -8
- package/dist/cjs/ultramodern-workspace/versions.cjs +25 -37
- package/dist/cjs/ultramodern-workspace/workspace-script-plan.cjs +2 -20
- package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +0 -21
- package/dist/cjs/ultramodern-workspace/write-app.cjs +3 -6
- package/dist/cjs/ultramodern-workspace/write-workspace.cjs +3 -5
- package/dist/esm/cli/flags.js +1 -11
- package/dist/esm/cli/help.js +0 -1
- package/dist/esm/cli/package-source.js +1 -1
- package/dist/esm/cli/prompts.js +2 -14
- package/dist/esm/index.js +2 -7
- package/dist/esm/locale/en.js +2 -6
- package/dist/esm/locale/zh.js +2 -6
- package/dist/esm/ultramodern-package-source.js +1 -24
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +2 -1
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +1 -1
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +1 -1
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +6 -4
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +9 -1
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +1 -1
- package/dist/esm/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +6 -1
- package/dist/esm/ultramodern-workspace/add-vertical/plan.js +1 -1
- package/dist/esm/ultramodern-workspace/add-vertical/preflight.js +1 -1
- package/dist/esm/ultramodern-workspace/add-vertical/shell-files.js +1 -1
- package/dist/esm/ultramodern-workspace/add-vertical/topology.js +6 -4
- package/dist/esm/ultramodern-workspace/app-files.js +1 -4
- package/dist/esm/ultramodern-workspace/contracts.js +25 -16
- package/dist/esm/ultramodern-workspace/delivery-unit-sync.js +1 -1
- package/dist/esm/ultramodern-workspace/demo-components.js +1 -1
- package/dist/esm/ultramodern-workspace/fs-io.js +1 -15
- package/dist/esm/ultramodern-workspace/locales.js +1 -1
- package/dist/esm/ultramodern-workspace/mf-validation/inspect.js +3 -2
- package/dist/esm/ultramodern-workspace/mf-validation/object-literal.js +1 -1
- package/dist/esm/ultramodern-workspace/mf-validation/path-utils.js +1 -1
- package/dist/esm/ultramodern-workspace/mf-validation/syntax.js +1 -1
- package/dist/esm/ultramodern-workspace/mf-validation/validate.js +1 -1
- package/dist/esm/ultramodern-workspace/module-federation/config.js +19 -8
- package/dist/esm/ultramodern-workspace/module-federation/reexport-module.js +4 -3
- package/dist/esm/ultramodern-workspace/naming.js +1 -1
- package/dist/esm/ultramodern-workspace/package-json.js +5 -8
- package/dist/esm/ultramodern-workspace/policy.js +1 -7
- package/dist/esm/ultramodern-workspace/public-surface.js +1 -1
- package/dist/esm/ultramodern-workspace/routes.js +1 -1
- package/dist/esm/ultramodern-workspace/shared-patches.js +4 -3
- package/dist/esm/ultramodern-workspace/tooling-command-catalog.js +1 -1
- package/dist/esm/ultramodern-workspace/versions.js +20 -23
- package/dist/esm/ultramodern-workspace/workspace-script-plan.js +1 -1
- package/dist/esm/ultramodern-workspace/workspace-scripts.js +6 -9
- package/dist/esm/ultramodern-workspace/write-app.js +4 -7
- package/dist/esm/ultramodern-workspace/write-workspace.js +3 -2
- package/dist/esm-node/cli/flags.js +1 -11
- package/dist/esm-node/cli/help.js +0 -1
- package/dist/esm-node/cli/package-source.js +1 -1
- package/dist/esm-node/cli/prompts.js +2 -14
- package/dist/esm-node/index.js +2 -7
- package/dist/esm-node/locale/en.js +2 -6
- package/dist/esm-node/locale/zh.js +2 -6
- package/dist/esm-node/ultramodern-package-source.js +1 -24
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js +2 -1
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-build-identity.js +1 -1
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/generated-artifacts-modern-configs.js +1 -1
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/package-cohort.js +6 -4
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-policy.js +9 -1
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.js +1 -1
- package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.js +6 -1
- package/dist/esm-node/ultramodern-workspace/add-vertical/plan.js +1 -1
- package/dist/esm-node/ultramodern-workspace/add-vertical/preflight.js +1 -1
- package/dist/esm-node/ultramodern-workspace/add-vertical/shell-files.js +1 -1
- package/dist/esm-node/ultramodern-workspace/add-vertical/topology.js +6 -4
- package/dist/esm-node/ultramodern-workspace/app-files.js +1 -4
- package/dist/esm-node/ultramodern-workspace/contracts.js +25 -16
- package/dist/esm-node/ultramodern-workspace/delivery-unit-sync.js +1 -1
- package/dist/esm-node/ultramodern-workspace/demo-components.js +1 -1
- package/dist/esm-node/ultramodern-workspace/fs-io.js +1 -15
- package/dist/esm-node/ultramodern-workspace/locales.js +1 -1
- package/dist/esm-node/ultramodern-workspace/mf-validation/inspect.js +3 -2
- package/dist/esm-node/ultramodern-workspace/mf-validation/object-literal.js +1 -1
- package/dist/esm-node/ultramodern-workspace/mf-validation/path-utils.js +1 -1
- package/dist/esm-node/ultramodern-workspace/mf-validation/syntax.js +1 -1
- package/dist/esm-node/ultramodern-workspace/mf-validation/validate.js +1 -1
- package/dist/esm-node/ultramodern-workspace/module-federation/config.js +19 -8
- package/dist/esm-node/ultramodern-workspace/module-federation/reexport-module.js +4 -3
- package/dist/esm-node/ultramodern-workspace/naming.js +1 -1
- package/dist/esm-node/ultramodern-workspace/package-json.js +5 -8
- package/dist/esm-node/ultramodern-workspace/policy.js +1 -7
- package/dist/esm-node/ultramodern-workspace/public-surface.js +1 -1
- package/dist/esm-node/ultramodern-workspace/routes.js +1 -1
- package/dist/esm-node/ultramodern-workspace/shared-patches.js +4 -3
- package/dist/esm-node/ultramodern-workspace/tooling-command-catalog.js +1 -1
- package/dist/esm-node/ultramodern-workspace/versions.js +20 -23
- package/dist/esm-node/ultramodern-workspace/workspace-script-plan.js +1 -1
- package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +6 -9
- package/dist/esm-node/ultramodern-workspace/write-app.js +4 -7
- package/dist/esm-node/ultramodern-workspace/write-workspace.js +3 -2
- package/dist/types/cli/flags.d.ts +4 -9
- package/dist/types/cli/package-source.d.ts +3 -3
- package/dist/types/cli/project-setup.d.ts +1 -1
- package/dist/types/cli/prompts.d.ts +0 -2
- package/dist/types/locale/en.d.ts +0 -4
- package/dist/types/locale/index.d.ts +0 -8
- package/dist/types/locale/zh.d.ts +0 -4
- package/dist/types/ultramodern-package-source.d.ts +0 -11
- package/dist/types/ultramodern-tooling/commands/cloudflare-output-verify.d.ts +1 -1
- package/dist/types/ultramodern-tooling/commands/context.d.ts +3 -3
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/install.d.ts +1 -1
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/pnpm-yaml.d.ts +0 -5
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect/policy-constants.d.ts +9 -6
- package/dist/types/ultramodern-tooling/commands/migrate-strict-effect.d.ts +1 -1
- package/dist/types/ultramodern-tooling/commands/routes-generate.d.ts +1 -1
- package/dist/types/ultramodern-tooling/commands/skills.d.ts +1 -1
- package/dist/types/ultramodern-tooling/commands/validate.d.ts +1 -1
- package/dist/types/ultramodern-tooling/commands.d.ts +1 -1
- package/dist/types/ultramodern-tooling/config/load.d.ts +1 -1
- package/dist/types/ultramodern-workspace/add-vertical/plan.d.ts +1 -6
- package/dist/types/ultramodern-workspace/add-vertical/preflight.d.ts +1 -9
- package/dist/types/ultramodern-workspace/app-files.d.ts +1 -7
- package/dist/types/ultramodern-workspace/codesmith.d.ts +5 -5
- package/dist/types/ultramodern-workspace/delivery-unit.d.ts +1 -1
- package/dist/types/ultramodern-workspace/demo-components.d.ts +0 -1
- package/dist/types/ultramodern-workspace/fs-io.d.ts +1 -7
- package/dist/types/ultramodern-workspace/generation-result.d.ts +2 -1
- package/dist/types/ultramodern-workspace/locales.d.ts +0 -181
- package/dist/types/ultramodern-workspace/mf-validation/inspect.d.ts +0 -3
- package/dist/types/ultramodern-workspace/mf-validation/object-literal.d.ts +0 -5
- package/dist/types/ultramodern-workspace/mf-validation/path-utils.d.ts +0 -2
- package/dist/types/ultramodern-workspace/mf-validation/syntax.d.ts +0 -9
- package/dist/types/ultramodern-workspace/module-federation/config.d.ts +1 -1
- package/dist/types/ultramodern-workspace/module-federation/reexport-module.d.ts +1 -1
- package/dist/types/ultramodern-workspace/naming.d.ts +0 -2
- package/dist/types/ultramodern-workspace/package-json.d.ts +0 -2
- package/dist/types/ultramodern-workspace/policy.d.ts +0 -47
- package/dist/types/ultramodern-workspace/public-surface.d.ts +5 -15
- package/dist/types/ultramodern-workspace/routes.d.ts +0 -9
- package/dist/types/ultramodern-workspace/shared-patches.d.ts +1 -2
- package/dist/types/ultramodern-workspace/tooling-command-catalog.d.ts +4 -4
- package/dist/types/ultramodern-workspace/types.d.ts +3 -2
- package/dist/types/ultramodern-workspace/versions.d.ts +20 -23
- package/dist/types/ultramodern-workspace/workspace-script-plan.d.ts +7 -21
- package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +2 -9
- package/dist/types/ultramodern-workspace/workspace-validation-contract.d.ts +0 -1
- package/dist/types/ultramodern-workspace/write-workspace.d.ts +0 -1
- package/package.json +14 -12
- package/template-workspace/AGENTS.md.handlebars +2 -2
- package/template-workspace/README.md.handlebars +3 -4
- package/template-workspace/patches/{@module-federation__bridge-react@2.6.0.patch → @module-federation__bridge-react@2.7.0.patch} +22 -22
- package/template-workspace/patches/@module-federation__dts-plugin@2.7.0.patch +37 -0
- package/template-workspace/patches/{@module-federation__modern-js-v3@2.6.0.patch → @module-federation__modern-js-v3@2.7.0.patch} +22 -22
- package/template-workspace/patches/@tanstack__router-core@1.171.14.patch +123 -0
- package/template-workspace/pnpm-workspace.yaml.handlebars +25 -2
- package/templates/workspace/apps/modern.config.ts.handlebars +1 -1
- package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +4 -4
- package/templates/workspace-scripts/ultramodern-typecheck.mjs +1 -1
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +3 -5
- package/dist/cjs/ultramodern-workspace/pnpm-workspace-policy-plan.cjs +0 -166
- package/dist/esm/ultramodern-workspace/pnpm-workspace-policy-plan.js +0 -113
- package/dist/esm-node/ultramodern-workspace/pnpm-workspace-policy-plan.js +0 -114
- package/dist/types/ultramodern-workspace/pnpm-workspace-policy-plan.d.ts +0 -39
- package/template-workspace/patches/@tanstack__router-core@1.171.13.patch +0 -51
- package/templates/workspace/postcss.config.mjs.handlebars +0 -5
|
@@ -7,8 +7,9 @@ import { sortJsonValue } from "../types.js";
|
|
|
7
7
|
import { CLOUDFLARE_COMPATIBILITY_DATE } from "../versions.js";
|
|
8
8
|
import { createModuleFederationRemoteUrlHelpers, createModuleFederationRemotesConfig } from "./remote-refs.js";
|
|
9
9
|
import { createSharedModuleFederationConfig, formatTsObjectLiteral } from "./shared-config.js";
|
|
10
|
-
function createAppModernConfig(scope, app, remotes = []) {
|
|
10
|
+
function createAppModernConfig(scope, app, remotes = [], enableTailwind = true) {
|
|
11
11
|
const bffImport = appHasApi(app) ? "import { bffPlugin } from '@modern-js/plugin-bff';\n" : '';
|
|
12
|
+
const tailwindImport = enableTailwind ? "import { pluginTailwindcss } from '@rsbuild/plugin-tailwindcss';\n" : '';
|
|
12
13
|
const bffConfig = appHasApi(app) ? ` bff: {
|
|
13
14
|
effect: {
|
|
14
15
|
entry: './api/index',
|
|
@@ -21,6 +22,7 @@ function createAppModernConfig(scope, app, remotes = []) {
|
|
|
21
22
|
runtimeFramework: 'effect',
|
|
22
23
|
},
|
|
23
24
|
` : '';
|
|
25
|
+
const tailwindBuilderPluginsConfig = enableTailwind ? ' builderPlugins: [pluginTailwindcss()],\n' : '';
|
|
24
26
|
const bffPluginEntry = appHasApi(app) ? ' bffPlugin(),\n' : '';
|
|
25
27
|
const serviceBindings = 'shell' === app.kind ? remotes.filter(appHasApi) : [];
|
|
26
28
|
const serviceBindingsConfig = serviceBindings.length > 0 ? ` services: [
|
|
@@ -47,13 +49,13 @@ const defaultAssetPrefix = defaultRemoteAssetPrefix;`;
|
|
|
47
49
|
// shells load remoteEntry.js and exposed chunks from this dev server.
|
|
48
50
|
assetPrefix,`;
|
|
49
51
|
return renderFileTemplate('workspace/apps/modern.config.ts', {
|
|
50
|
-
value0: bffImport
|
|
52
|
+
value0: `${bffImport}${tailwindImport}`,
|
|
51
53
|
value1: app.id,
|
|
52
54
|
value2: createCloudflareWorkerName(scope, app),
|
|
53
55
|
value3: app.portEnv,
|
|
54
|
-
value4: app.port,
|
|
56
|
+
value4: String(app.port),
|
|
55
57
|
value5: createCloudflarePublicUrlEnv(app),
|
|
56
|
-
value6: shellApp.port,
|
|
58
|
+
value6: String(shellApp.port),
|
|
57
59
|
value7: defaultAssetPrefixSource,
|
|
58
60
|
value8: createCloudflarePublicUrlEnv(app),
|
|
59
61
|
value9: bffConfig,
|
|
@@ -64,14 +66,15 @@ const defaultAssetPrefix = defaultRemoteAssetPrefix;`;
|
|
|
64
66
|
value14: resolveApiPrefix(app),
|
|
65
67
|
value15: bffPluginEntry,
|
|
66
68
|
value16: createRspackUniqueName(app),
|
|
67
|
-
value17: createRspackChunkLoadingGlobal(app)
|
|
69
|
+
value17: createRspackChunkLoadingGlobal(app),
|
|
70
|
+
value18: tailwindBuilderPluginsConfig
|
|
68
71
|
});
|
|
69
72
|
}
|
|
70
73
|
function createModuleFederationDtsConfig(hasExposes) {
|
|
71
74
|
return hasExposes ? ` dts: {
|
|
72
75
|
displayErrorInTerminal: true,
|
|
73
76
|
generateTypes: {
|
|
74
|
-
compilerInstance:
|
|
77
|
+
compilerInstance: tsgoCompilerInstance,
|
|
75
78
|
},
|
|
76
79
|
tsConfigPath: './tsconfig.mf-types.json',
|
|
77
80
|
},` : ` dts: {
|
|
@@ -168,8 +171,16 @@ function createRemoteModuleFederationConfig(scope, app, remotes = []) {
|
|
|
168
171
|
const exposes = formatTsObjectLiteral(app.exposes ?? {});
|
|
169
172
|
const hasExposes = Object.keys(app.exposes ?? {}).length > 0;
|
|
170
173
|
const hostOnlyMarker = hasExposes ? '' : '\n// ultramodern-mf: no-exposes';
|
|
174
|
+
const tsgoCompilerImport = hasExposes ? "import { execFileSync } from 'node:child_process';\n" : '';
|
|
175
|
+
const tsgoCompilerInstance = hasExposes ? `
|
|
176
|
+
const tsgoCompilerInstance =
|
|
177
|
+
process.env.EFFECT_TSGO_BIN?.trim() ||
|
|
178
|
+
execFileSync('npx', ['effect-tsgo', 'get-exe-path'], {
|
|
179
|
+
encoding: 'utf8',
|
|
180
|
+
}).trim();
|
|
181
|
+
` : '';
|
|
171
182
|
return `// @effect-diagnostics nodeBuiltinImport:off${hostOnlyMarker}
|
|
172
|
-
import { createRequire } from 'node:module';
|
|
183
|
+
${tsgoCompilerImport}import { createRequire } from 'node:module';
|
|
173
184
|
import { createModuleFederationConfig } from '@module-federation/modern-js-v3';
|
|
174
185
|
import { dependencies } from './package.json';
|
|
175
186
|
|
|
@@ -179,7 +190,7 @@ const pluginTanstackVersion = (require('@modern-js/plugin-tanstack/package.json'
|
|
|
179
190
|
const runtimeVersion = (require('@modern-js/runtime/package.json') as { version: string }).version;
|
|
180
191
|
const reactVersion = (require('react/package.json') as { version: string }).version;
|
|
181
192
|
const reactDomVersion = (require('react-dom/package.json') as { version: string }).version;
|
|
182
|
-
|
|
193
|
+
${tsgoCompilerInstance}
|
|
183
194
|
${createModuleFederationRemoteUrlHelpers(app, remotes)}
|
|
184
195
|
const moduleFederationConfig: Parameters<
|
|
185
196
|
typeof createModuleFederationConfig
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createUltramodernBuildArtifact } from "@modern-js/utils/universal";
|
|
2
2
|
import { createDeliveryUnitRecord } from "../delivery-unit.js";
|
|
3
3
|
function createUltramodernBuildArtifactJson(scope, app) {
|
|
4
4
|
const record = createDeliveryUnitRecord(scope, app);
|
|
5
5
|
return `${JSON.stringify(createUltramodernBuildArtifact(record), null, 2)}\n`;
|
|
6
6
|
}
|
|
7
|
-
function createUltramodernBuildModule() {
|
|
8
|
-
|
|
7
|
+
function createUltramodernBuildModule(scope, app) {
|
|
8
|
+
const record = createDeliveryUnitRecord(scope, app);
|
|
9
|
+
return `const ultramodernBuildArtifact = ${JSON.stringify(createUltramodernBuildArtifact(record), null, 2)} as const;
|
|
9
10
|
|
|
10
11
|
export { ultramodernBuildArtifact };
|
|
11
12
|
|
|
@@ -68,4 +68,4 @@ function createTw(prefix) {
|
|
|
68
68
|
function toPascalCase(value) {
|
|
69
69
|
return value.split(/[-_]+/).filter(Boolean).map((part)=>`${part.charAt(0).toUpperCase()}${part.slice(1)}`).join('');
|
|
70
70
|
}
|
|
71
|
-
export {
|
|
71
|
+
export { assertUniqueTailwindPrefixes, createRspackChunkLoadingGlobal, createRspackUniqueName, createTw, naming_packageName as packageName, normalizePath, relativeRootFor, tailwindPrefixForApp, toCamelCase, toEnvSegment, toKebabCase, toPackageScope, toPascalCase };
|
|
@@ -2,7 +2,7 @@ import { WORKSPACE_PACKAGE_VERSION, modernPackageSpecifier } from "../ultramoder
|
|
|
2
2
|
import { appHasApi, remoteDependencyAlias, resolveRemoteRefs, shellApp, verticalApiApps, zephyrRemoteDependency } from "./descriptors.js";
|
|
3
3
|
import { readFileTemplate } from "./fs-io.js";
|
|
4
4
|
import { packageName, relativeRootFor } from "./naming.js";
|
|
5
|
-
import { EFFECT_TSGO_VERSION, I18NEXT_VERSION, LEFTHOOK_VERSION, MODULE_FEDERATION_VERSION, NODE_FETCH_VERSION, OXFMT_VERSION, OXLINT_VERSION, PNPM_VERSION,
|
|
5
|
+
import { EFFECT_TSGO_VERSION, I18NEXT_VERSION, LEFTHOOK_VERSION, MODULE_FEDERATION_VERSION, NODE_FETCH_VERSION, OXFMT_VERSION, OXLINT_VERSION, PNPM_VERSION, REACT_DOM_VERSION, REACT_ROUTER_VERSION, REACT_VERSION, RSBUILD_PLUGIN_TAILWINDCSS_VERSION, TAILWIND_VERSION, TANSTACK_ROUTER_VERSION, TYPESCRIPT_COMPILER_API_VERSION, TYPESCRIPT_VERSION, TYPES_REACT_DOM_VERSION, TYPES_REACT_VERSION, ULTRACITE_VERSION, WRANGLER_VERSION, ZEPHYR_AGENT_VERSION, ZEPHYR_RSPACK_PLUGIN_VERSION } from "./versions.js";
|
|
6
6
|
import { createStrictTsgoTypecheckCommand, createWorkspaceAppPackageScripts, createWorkspaceRootPackageScripts } from "./workspace-script-plan.js";
|
|
7
7
|
function appDependencies(scope, packageSource, app, remotes = [], bridge) {
|
|
8
8
|
const dependencies = {
|
|
@@ -38,11 +38,9 @@ function appDevDependencies(packageSource, enableTailwind) {
|
|
|
38
38
|
'@modern-js/app-tools': modernPackageSpecifier('@modern-js/app-tools', packageSource),
|
|
39
39
|
'@effect/tsgo': EFFECT_TSGO_VERSION,
|
|
40
40
|
...enableTailwind ? {
|
|
41
|
-
'@tailwindcss
|
|
42
|
-
postcss: `^${POSTCSS_VERSION}`,
|
|
41
|
+
'@rsbuild/plugin-tailwindcss': `^${RSBUILD_PLUGIN_TAILWINDCSS_VERSION}`,
|
|
43
42
|
tailwindcss: `^${TAILWIND_VERSION}`
|
|
44
43
|
} : {},
|
|
45
|
-
"@typescript/native-preview": TYPESCRIPT_NATIVE_PREVIEW_VERSION,
|
|
46
44
|
'@types/node': '^20',
|
|
47
45
|
'@types/react': TYPES_REACT_VERSION,
|
|
48
46
|
'@types/react-dom': TYPES_REACT_DOM_VERSION,
|
|
@@ -123,7 +121,7 @@ function createRootPackageJson(scope, packageSource, remotes = [], bridge) {
|
|
|
123
121
|
'@modern-js/code-tools': modernPackageSpecifier('@modern-js/code-tools', packageSource),
|
|
124
122
|
'@modern-js/create': modernPackageSpecifier('@modern-js/create', packageSource),
|
|
125
123
|
'@modern-js/plugin-bff': modernPackageSpecifier('@modern-js/plugin-bff', packageSource),
|
|
126
|
-
"@typescript/
|
|
124
|
+
"@typescript/typescript6": TYPESCRIPT_COMPILER_API_VERSION,
|
|
127
125
|
lefthook: LEFTHOOK_VERSION,
|
|
128
126
|
oxlint: OXLINT_VERSION,
|
|
129
127
|
oxfmt: OXFMT_VERSION,
|
|
@@ -187,8 +185,7 @@ function createSharedPackage(scope, id, description) {
|
|
|
187
185
|
typecheck: createStrictTsgoTypecheckCommand(`packages/${id}`)
|
|
188
186
|
},
|
|
189
187
|
devDependencies: {
|
|
190
|
-
'@effect/tsgo': EFFECT_TSGO_VERSION
|
|
191
|
-
"@typescript/native-preview": TYPESCRIPT_NATIVE_PREVIEW_VERSION
|
|
188
|
+
'@effect/tsgo': EFFECT_TSGO_VERSION
|
|
192
189
|
}
|
|
193
190
|
};
|
|
194
191
|
if ('shared-design-tokens' === id) packageJson.exports = {
|
|
@@ -201,4 +198,4 @@ function createSharedContractsIndex() {
|
|
|
201
198
|
return readFileTemplate('packages/shared-contracts-index.ts');
|
|
202
199
|
}
|
|
203
200
|
export { createAppMfTypesTsConfig, createAppTsConfig, createPackageTsConfig, createRootTsConfig, createSharedPackageTsConfig, createTsConfigBase } from "./tsconfigs.js";
|
|
204
|
-
export { appDependencies,
|
|
201
|
+
export { appDependencies, createAppPackage, createRootPackageJson, createSharedContractsIndex, createSharedPackage };
|
|
@@ -145,15 +145,9 @@ const PUBLIC_WEBSITE_POLICY = {
|
|
|
145
145
|
function formatTsJsonValue(value, indent) {
|
|
146
146
|
return JSON.stringify(value, null, 2).replaceAll('\n', `\n${' '.repeat(indent)}`);
|
|
147
147
|
}
|
|
148
|
-
function formatIntegerCodeLiteral(value) {
|
|
149
|
-
return String(value).replace(/\B(?=(\d{3})+(?!\d))/gu, '_');
|
|
150
|
-
}
|
|
151
148
|
function createPublicWebsiteQualityGateContract() {
|
|
152
149
|
return PUBLIC_WEBSITE_POLICY.qualityGates;
|
|
153
150
|
}
|
|
154
|
-
function createPublicWebsiteBudgetFallback(budgetName) {
|
|
155
|
-
return formatIntegerCodeLiteral(PUBLIC_WEBSITE_POLICY.qualityGates.budgets[budgetName]);
|
|
156
|
-
}
|
|
157
151
|
function createPublicHeadRobotsPolicy() {
|
|
158
152
|
return PUBLIC_WEBSITE_POLICY.publicHead;
|
|
159
153
|
}
|
|
@@ -180,4 +174,4 @@ function createCloudflareDeployContract(scope, app) {
|
|
|
180
174
|
}
|
|
181
175
|
};
|
|
182
176
|
}
|
|
183
|
-
export {
|
|
177
|
+
export { createCloudflareDeployContract, createCloudflareSecurityContract, createPublicHeadRobotsPolicy, createPublicSurfaceContentExpansionPolicy, formatTsJsonValue };
|
|
@@ -180,4 +180,4 @@ function createPublicWebAppArtifacts(app) {
|
|
|
180
180
|
publicSurface: createPublicSurfaceContract(app)
|
|
181
181
|
};
|
|
182
182
|
}
|
|
183
|
-
export { createLocalisedPublicPath,
|
|
183
|
+
export { createLocalisedPublicPath, createPublicSurfaceGenerationCommand, createPublicWebAppArtifacts, publicSurfaceManagedSourceAssetPaths, rewriteWorkspaceAssetsForApp, uniqueSorted };
|
|
@@ -143,4 +143,4 @@ function createRouteAliasPage(canonicalPath) {
|
|
|
143
143
|
return `export { default } from '${rootPageImport}';
|
|
144
144
|
`;
|
|
145
145
|
}
|
|
146
|
-
export { createJsonLdHelperModule, createLocalisedUrlsMap,
|
|
146
|
+
export { createJsonLdHelperModule, createLocalisedUrlsMap, createPublicRouteMetadata, createPublicRouteMetadataFromRoutes, createRouteAliasPage, createRouteMetaFilePath, createRouteMetaModule, createRouteMetadataModule, createRouteOwnedI18nPaths, createRoutePageFilePath, isConcretePublicPath, normalisePublicPath, routePathParamName, routeSegmentToDirectory, splitPublicPathSegments };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
const SHARED_ULTRAMODERN_WORKSPACE_PATCH_FILES = [
|
|
2
|
-
'@module-federation__bridge-react@2.
|
|
3
|
-
'@module-
|
|
4
|
-
'@
|
|
2
|
+
'@module-federation__bridge-react@2.7.0.patch',
|
|
3
|
+
'@module-federation__dts-plugin@2.7.0.patch',
|
|
4
|
+
'@module-federation__modern-js-v3@2.7.0.patch',
|
|
5
|
+
'@tanstack__router-core@1.171.14.patch'
|
|
5
6
|
];
|
|
6
7
|
export { SHARED_ULTRAMODERN_WORKSPACE_PATCH_FILES };
|
|
@@ -97,4 +97,4 @@ const createToolingWrapperContract = ()=>Object.fromEntries(generatedToolingComm
|
|
|
97
97
|
command.wrapperPath
|
|
98
98
|
]));
|
|
99
99
|
const createGeneratedToolingWrapperMap = createToolingWrapperContract;
|
|
100
|
-
export { GENERATED_TOOLING_COMMANDS, createGeneratedToolingWrapperMap,
|
|
100
|
+
export { GENERATED_TOOLING_COMMANDS, createGeneratedToolingWrapperMap, generatedToolingCommandList, generatedToolingCommands };
|
|
@@ -1,35 +1,32 @@
|
|
|
1
|
-
const TANSTACK_ROUTER_VERSION = '1.170.
|
|
2
|
-
const TANSTACK_ROUTER_CORE_VERSION = '1.171.
|
|
3
|
-
const MODULE_FEDERATION_VERSION = '2.
|
|
1
|
+
const TANSTACK_ROUTER_VERSION = '1.170.17';
|
|
2
|
+
const TANSTACK_ROUTER_CORE_VERSION = '1.171.14';
|
|
3
|
+
const MODULE_FEDERATION_VERSION = '2.7.0';
|
|
4
4
|
const ZEPHYR_RSPACK_PLUGIN_VERSION = '1.1.1';
|
|
5
5
|
const ZEPHYR_AGENT_VERSION = '1.1.1';
|
|
6
|
-
const WRANGLER_VERSION = '4.
|
|
6
|
+
const WRANGLER_VERSION = '4.109.0';
|
|
7
7
|
const CLOUDFLARE_COMPATIBILITY_DATE = '2026-06-02';
|
|
8
|
-
const TAILWIND_VERSION = '4.3.
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const EFFECT_TSGO_VERSION = '0.14.6';
|
|
8
|
+
const TAILWIND_VERSION = '4.3.2';
|
|
9
|
+
const RSBUILD_PLUGIN_TAILWINDCSS_VERSION = '2.0.3';
|
|
10
|
+
const EFFECT_VERSION = '4.0.0-beta.94';
|
|
11
|
+
const EFFECT_VITEST_VERSION = '4.0.0-beta.94';
|
|
12
|
+
const EFFECT_TSGO_VERSION = '0.16.3';
|
|
14
13
|
const DRIZZLE_ORM_VERSION = '1.0.0-rc.4';
|
|
15
|
-
const TYPESCRIPT_STABLE_VERSION = '
|
|
16
|
-
const TYPESCRIPT_NATIVE_PREVIEW_VERSION = '7.0.0-dev.20260628.1';
|
|
14
|
+
const TYPESCRIPT_STABLE_VERSION = '7.0.2';
|
|
17
15
|
const TYPESCRIPT_VERSION = TYPESCRIPT_STABLE_VERSION;
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
16
|
+
const TYPESCRIPT_COMPILER_API_VERSION = '6.0.2';
|
|
17
|
+
const OXLINT_VERSION = '1.73.0';
|
|
18
|
+
const OXFMT_VERSION = '0.58.0';
|
|
19
|
+
const ULTRACITE_VERSION = '7.9.3';
|
|
20
|
+
const LEFTHOOK_VERSION = '^2.1.10';
|
|
21
|
+
const I18NEXT_VERSION = '26.3.6';
|
|
23
22
|
const NODE_FETCH_VERSION = '^3.3.2';
|
|
24
23
|
const REACT_VERSION = '^19.2.7';
|
|
25
24
|
const REACT_DOM_VERSION = '^19.2.7';
|
|
26
25
|
const REACT_ROUTER_VERSION = '7.18.1';
|
|
27
26
|
const TYPES_REACT_VERSION = '^19.2.17';
|
|
28
27
|
const TYPES_REACT_DOM_VERSION = '^19.2.3';
|
|
29
|
-
const NODE_VERSION = '26.
|
|
30
|
-
const PNPM_VERSION = '11.
|
|
31
|
-
const RSTACK_AGENT_SKILLS_COMMIT = '61c948b42512e223bad44b83af4080eba48b2677';
|
|
32
|
-
const MODULE_FEDERATION_AGENT_SKILLS_COMMIT = '07bb5b6c43ad457609e00c081b72d4c42508ec76';
|
|
28
|
+
const NODE_VERSION = '26.5.0';
|
|
29
|
+
const PNPM_VERSION = '11.10.0';
|
|
33
30
|
const ultramodernWorkspaceVersions = {
|
|
34
31
|
tanstackRouter: TANSTACK_ROUTER_VERSION,
|
|
35
32
|
tanstackRouterCore: TANSTACK_ROUTER_CORE_VERSION,
|
|
@@ -38,6 +35,6 @@ const ultramodernWorkspaceVersions = {
|
|
|
38
35
|
effectVitest: EFFECT_VITEST_VERSION,
|
|
39
36
|
drizzleOrm: DRIZZLE_ORM_VERSION,
|
|
40
37
|
tailwind: TAILWIND_VERSION,
|
|
41
|
-
|
|
38
|
+
rsbuildPluginTailwindcss: RSBUILD_PLUGIN_TAILWINDCSS_VERSION
|
|
42
39
|
};
|
|
43
|
-
export { CLOUDFLARE_COMPATIBILITY_DATE, DRIZZLE_ORM_VERSION, EFFECT_TSGO_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, I18NEXT_VERSION, LEFTHOOK_VERSION,
|
|
40
|
+
export { CLOUDFLARE_COMPATIBILITY_DATE, DRIZZLE_ORM_VERSION, EFFECT_TSGO_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, I18NEXT_VERSION, LEFTHOOK_VERSION, MODULE_FEDERATION_VERSION, NODE_FETCH_VERSION, NODE_VERSION, OXFMT_VERSION, OXLINT_VERSION, PNPM_VERSION, REACT_DOM_VERSION, REACT_ROUTER_VERSION, REACT_VERSION, RSBUILD_PLUGIN_TAILWINDCSS_VERSION, TAILWIND_VERSION, TANSTACK_ROUTER_CORE_VERSION, TANSTACK_ROUTER_VERSION, TYPESCRIPT_COMPILER_API_VERSION, TYPESCRIPT_STABLE_VERSION, TYPESCRIPT_VERSION, TYPES_REACT_DOM_VERSION, TYPES_REACT_VERSION, ULTRACITE_VERSION, WRANGLER_VERSION, ZEPHYR_AGENT_VERSION, ZEPHYR_RSPACK_PLUGIN_VERSION, ultramodernWorkspaceVersions };
|
|
@@ -113,4 +113,4 @@ function createWorkspaceRootPackageScripts(remotes = [], options = {}) {
|
|
|
113
113
|
plan[planKey]
|
|
114
114
|
]));
|
|
115
115
|
}
|
|
116
|
-
export { createStrictTsgoTypecheckCommand, createWorkspaceAppPackageScripts,
|
|
116
|
+
export { createStrictTsgoTypecheckCommand, createWorkspaceAppPackageScripts, createWorkspaceRootPackageScripts, createWorkspaceRootScriptPlan };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import node_fs from "node:fs";
|
|
2
2
|
import node_path from "node:path";
|
|
3
|
-
import { readFileTemplate, renderFileTemplate, workspaceTemplateDir, writeFileReplacing } from "./fs-io.js";
|
|
3
|
+
import { readFileTemplate as external_fs_io_js_readFileTemplate, renderFileTemplate, workspaceTemplateDir, writeFileReplacing } from "./fs-io.js";
|
|
4
4
|
import { GENERATED_TOOLING_COMMANDS, generatedToolingCommands } from "./tooling-command-catalog.js";
|
|
5
5
|
import { createWorkspaceValidationContract } from "./workspace-validation-contract.js";
|
|
6
6
|
const singleQuoted = (value)=>`'${value.replace(/'/gu, "\\'")}'`;
|
|
@@ -119,19 +119,16 @@ function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
|
|
|
119
119
|
});
|
|
120
120
|
}
|
|
121
121
|
function createWorkspaceI18nBoundaryValidationScript() {
|
|
122
|
-
return
|
|
122
|
+
return external_fs_io_js_readFileTemplate("workspace-scripts/check-ultramodern-i18n-boundaries.mts");
|
|
123
123
|
}
|
|
124
124
|
function createWorkspaceApiBoundaryValidationScript() {
|
|
125
|
-
return
|
|
125
|
+
return external_fs_io_js_readFileTemplate("workspace-scripts/check-ultramodern-api-boundaries.mts");
|
|
126
126
|
}
|
|
127
127
|
function createPerformanceReadinessConfigScript() {
|
|
128
|
-
return
|
|
129
|
-
}
|
|
130
|
-
function createNodeBackendFederationProofScript() {
|
|
131
|
-
return readFileTemplate("workspace-scripts/proof-node-backend-federation.mjs");
|
|
128
|
+
return external_fs_io_js_readFileTemplate("workspace-scripts/ultramodern-performance-readiness.config.mjs");
|
|
132
129
|
}
|
|
133
130
|
function createZeropsRuntimeMaterializationScript() {
|
|
134
|
-
return
|
|
131
|
+
return external_fs_io_js_readFileTemplate("workspace-scripts/materialize-zerops-runtime.mjs");
|
|
135
132
|
}
|
|
136
133
|
function writeGeneratedWorkspaceScripts(targetDir, _scope, _enableTailwind, remotes = []) {
|
|
137
134
|
const shellOnly = 0 === remotes.length;
|
|
@@ -193,4 +190,4 @@ const migratedWorkspaceScriptBasenames = [
|
|
|
193
190
|
'setup-agent-reference-repos',
|
|
194
191
|
...generatedToolingCommands.map((command)=>command.wrapperName)
|
|
195
192
|
];
|
|
196
|
-
export {
|
|
193
|
+
export { createWorkspaceValidationScript, createZeropsRuntimeMaterializationScript, migratedWorkspaceScriptArtifacts, migratedWorkspaceScriptBasenames, writeGeneratedWorkspaceScripts };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createApiClient, createApiServiceEntry, createBackendEffectApiExpose, createSharedApi, createShellApiClient } from "./api.js";
|
|
2
|
-
import { createAppEnvDts, createAppRuntimeConfig, createAppStyles,
|
|
2
|
+
import { createAppEnvDts, createAppRuntimeConfig, createAppStyles, createShellFrameComponent, createTailwindConfig } from "./app-files.js";
|
|
3
3
|
import { createBackendFederationContractFile } from "./backend-federation.js";
|
|
4
4
|
import { createLayout, createRemoteEntry, createRemoteExposeComponent, createRemotePage, createShellPage, createShellRemoteComponents, remoteComponentOutputPath } from "./demo-components.js";
|
|
5
5
|
import { appHasApi, appI18nNamespace, createShellHost } from "./descriptors.js";
|
|
@@ -37,12 +37,12 @@ function writeAppConfigFiles({ targetDir, scope, resolvedApp, packageSource, ena
|
|
|
37
37
|
writeJson(targetDir, `${resolvedApp.directory}/tsconfig.mf-types.json`, createAppMfTypesTsConfig(resolvedApp));
|
|
38
38
|
writeFile(targetDir, `${resolvedApp.directory}/src/modern-app-env.d.ts`, createAppEnvDts(resolvedApp, remotes));
|
|
39
39
|
writeFile(targetDir, `${resolvedApp.directory}/src/ultramodern-build.ts`, createUltramodernBuildReexportModule());
|
|
40
|
-
writeFile(targetDir, `${resolvedApp.directory}/shared/ultramodern-build.ts`, createUltramodernBuildModule());
|
|
40
|
+
writeFile(targetDir, `${resolvedApp.directory}/shared/ultramodern-build.ts`, createUltramodernBuildModule(scope, resolvedApp));
|
|
41
41
|
writeFile(targetDir, `${resolvedApp.directory}/shared/ultramodern-build.json`, createUltramodernBuildArtifactJson(scope, resolvedApp));
|
|
42
42
|
writeFile(targetDir, publicWeb.jsonLdHelperFile.path, publicWeb.jsonLdHelperFile.content);
|
|
43
43
|
writeFile(targetDir, publicWeb.routeMetadataFile.path, publicWeb.routeMetadataFile.content);
|
|
44
44
|
writeFile(targetDir, publicWeb.routeHeadFile.path, publicWeb.routeHeadFile.content);
|
|
45
|
-
writeFile(targetDir, `${resolvedApp.directory}/modern.config.ts`, createAppModernConfig(scope, resolvedApp, remotes));
|
|
45
|
+
writeFile(targetDir, `${resolvedApp.directory}/modern.config.ts`, createAppModernConfig(scope, resolvedApp, remotes, enableTailwind));
|
|
46
46
|
writeFile(targetDir, `${resolvedApp.directory}/src/modern.runtime.ts`, createAppRuntimeConfig(resolvedApp, scope, remotes));
|
|
47
47
|
}
|
|
48
48
|
function writeAppLocaleAndStyleFiles({ targetDir, scope, resolvedApp, enableTailwind, remotes }) {
|
|
@@ -51,10 +51,7 @@ function writeAppLocaleAndStyleFiles({ targetDir, scope, resolvedApp, enableTail
|
|
|
51
51
|
writeJson(targetDir, `${resolvedApp.directory}/locales/cs/translation.json`, createAppPublicLocaleMessages(resolvedApp, 'cs', remotes));
|
|
52
52
|
writeJson(targetDir, `${resolvedApp.directory}/locales/cs/${appI18nNamespace(resolvedApp)}.json`, createAppPublicLocaleMessages(resolvedApp, 'cs', remotes));
|
|
53
53
|
writeFile(targetDir, `${resolvedApp.directory}/src/routes/index.css`, createAppStyles(enableTailwind, scope, resolvedApp));
|
|
54
|
-
if (enableTailwind) {
|
|
55
|
-
writeFile(targetDir, `${resolvedApp.directory}/postcss.config.mjs`, createPostcssConfig());
|
|
56
|
-
writeFile(targetDir, `${resolvedApp.directory}/tailwind.config.ts`, createTailwindConfig());
|
|
57
|
-
}
|
|
54
|
+
if (enableTailwind) writeFile(targetDir, `${resolvedApp.directory}/tailwind.config.ts`, createTailwindConfig());
|
|
58
55
|
}
|
|
59
56
|
function writeAppFederationConfigFiles({ targetDir, scope, resolvedApp, remotes }) {
|
|
60
57
|
writeFile(targetDir, `${resolvedApp.directory}/module-federation.config.ts`, 'shell' === resolvedApp.kind ? createShellModuleFederationConfig(scope, remotes) : createRemoteModuleFederationConfig(scope, resolvedApp, remotes));
|
|
@@ -9,7 +9,7 @@ import { assertUniqueTailwindPrefixes, toPackageScope } from "./naming.js";
|
|
|
9
9
|
import { runCodeSmithOverlays } from "./overlays.js";
|
|
10
10
|
import { createRootPackageJson, createRootTsConfig, createSharedContractsIndex, createSharedPackage, createSharedPackageTsConfig, createTsConfigBase } from "./package-json.js";
|
|
11
11
|
import { resolvePackageSource } from "./package-source.js";
|
|
12
|
-
import { DRIZZLE_ORM_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, MODULE_FEDERATION_VERSION, NODE_FETCH_VERSION, NODE_VERSION, PNPM_VERSION, TANSTACK_ROUTER_CORE_VERSION, TANSTACK_ROUTER_VERSION, TYPESCRIPT_VERSION } from "./versions.js";
|
|
12
|
+
import { DRIZZLE_ORM_VERSION, EFFECT_VERSION, EFFECT_VITEST_VERSION, MODULE_FEDERATION_VERSION, NODE_FETCH_VERSION, NODE_VERSION, PNPM_VERSION, TANSTACK_ROUTER_CORE_VERSION, TANSTACK_ROUTER_VERSION, TYPESCRIPT_COMPILER_API_VERSION, TYPESCRIPT_VERSION } from "./versions.js";
|
|
13
13
|
import { writeGeneratedWorkspaceScripts } from "./workspace-scripts.js";
|
|
14
14
|
import { writeApp } from "./write-app.js";
|
|
15
15
|
import { createZeropsYaml } from "./zerops.js";
|
|
@@ -84,6 +84,7 @@ function generateUltramodernWorkspace(options) {
|
|
|
84
84
|
moduleFederationVersion: MODULE_FEDERATION_VERSION,
|
|
85
85
|
tanstackRouterCoreVersion: TANSTACK_ROUTER_CORE_VERSION,
|
|
86
86
|
tanstackRouterVersion: TANSTACK_ROUTER_VERSION,
|
|
87
|
+
typescriptCompilerApiVersion: TYPESCRIPT_COMPILER_API_VERSION,
|
|
87
88
|
typescriptVersion: TYPESCRIPT_VERSION,
|
|
88
89
|
tailwindEnabled: String(enableTailwind)
|
|
89
90
|
});
|
|
@@ -129,4 +130,4 @@ function generateUltramodernWorkspace(options) {
|
|
|
129
130
|
rewrittenPaths
|
|
130
131
|
});
|
|
131
132
|
}
|
|
132
|
-
export { createCompactUltramodernConfig, generateUltramodernWorkspace, writeApp
|
|
133
|
+
export { createCompactUltramodernConfig, generateUltramodernWorkspace, writeApp };
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
import { i18n, localeKeys } from "../locale/index.js";
|
|
3
3
|
import { parseUltramodernBridgeCliOptions, ultramodernBridgeCliBooleanFlags, ultramodernBridgeCliValueFlags } from "../ultramodern-workspace/bridge-config.js";
|
|
4
|
-
const LEGACY_MODERN_JS_FLAG = '--legacy-modern-js';
|
|
5
|
-
const LEGACY_MODERN_JS_CONFIRMATION = 'USE LEGACY MODERN.JS';
|
|
6
4
|
const WORKSPACE_PROTOCOL_FLAG = '--workspace';
|
|
7
5
|
const DRY_RUN_FLAG = '--dry-run';
|
|
8
6
|
const VERTICAL_FLAG = '--vertical';
|
|
@@ -30,13 +28,6 @@ const detectLanguage = ()=>{
|
|
|
30
28
|
if ('zh' === lang) return 'zh';
|
|
31
29
|
return 'en';
|
|
32
30
|
};
|
|
33
|
-
function detectLegacyModernJsFlag(args) {
|
|
34
|
-
if (args.some((arg)=>arg.startsWith(`${LEGACY_MODERN_JS_FLAG}=`))) {
|
|
35
|
-
console.error(`${LEGACY_MODERN_JS_FLAG} does not accept a value.`);
|
|
36
|
-
process.exit(1);
|
|
37
|
-
}
|
|
38
|
-
return args.includes(LEGACY_MODERN_JS_FLAG);
|
|
39
|
-
}
|
|
40
31
|
function detectBffRuntime(args) {
|
|
41
32
|
if (args.some((arg)=>arg.startsWith(`${BFF_FLAG}=`))) {
|
|
42
33
|
console.error(`${BFF_FLAG} does not accept a value. Use: ${BFF_RUNTIME_OPTION} <runtime>`);
|
|
@@ -91,7 +82,6 @@ function collectPositionalArgs(args) {
|
|
|
91
82
|
WORKSPACE_PROTOCOL_FLAG,
|
|
92
83
|
DRY_RUN_FLAG,
|
|
93
84
|
VERTICAL_FLAG,
|
|
94
|
-
LEGACY_MODERN_JS_FLAG,
|
|
95
85
|
...ultramodernBridgeCliBooleanFlags
|
|
96
86
|
]);
|
|
97
87
|
const positionalArgs = [];
|
|
@@ -226,4 +216,4 @@ function readBridgeCliOptions(args) {
|
|
|
226
216
|
process.exit(1);
|
|
227
217
|
}
|
|
228
218
|
}
|
|
229
|
-
export {
|
|
219
|
+
export { CODESMITH_OVERLAY_FLAG, DRY_RUN_FLAG, VERTICAL_FLAG, WORKSPACE_PROTOCOL_FLAG, collectPositionalArgs, detectBffRuntime, detectCodeSmithOverlays, detectDryRunFlag, detectExplicitTailwindFlag, detectLanguage, detectTailwindFlag, getOptionValue, readBridgeCliOptions, resolveVerticalCliInput };
|
|
@@ -45,7 +45,6 @@ function showHelp() {
|
|
|
45
45
|
console.log(i18n.t(localeKeys.help.optionVerticalName));
|
|
46
46
|
console.log(i18n.t(localeKeys.help.optionDryRun));
|
|
47
47
|
console.log(i18n.t(localeKeys.help.optionCodeSmithOverlay));
|
|
48
|
-
console.log(i18n.t(localeKeys.help.optionLegacyModernJs));
|
|
49
48
|
console.log('');
|
|
50
49
|
console.log(i18n.t(localeKeys.help.examples));
|
|
51
50
|
console.log(i18n.t(localeKeys.help.example1));
|
|
@@ -117,4 +117,4 @@ function resolveWorkspacePackageSource(args, createPackage, packageSource) {
|
|
|
117
117
|
};
|
|
118
118
|
return resolveInstallBackedPackageSource(args, createPackage, packageSource);
|
|
119
119
|
}
|
|
120
|
-
export { detectUltramodernPackageSource, getBleedingDevFrameworkVersion, isBleedingDevCreatePackage, readCreatePackageJson,
|
|
120
|
+
export { detectUltramodernPackageSource, getBleedingDevFrameworkVersion, isBleedingDevCreatePackage, readCreatePackageJson, resolveWorkspacePackageSource };
|
|
@@ -2,7 +2,7 @@ import "node:module";
|
|
|
2
2
|
import node_path from "node:path";
|
|
3
3
|
import node_readline from "node:readline";
|
|
4
4
|
import { i18n, localeKeys } from "../locale/index.js";
|
|
5
|
-
import {
|
|
5
|
+
import { collectPositionalArgs } from "./flags.js";
|
|
6
6
|
import { isDirectoryEmpty } from "./project-setup.js";
|
|
7
7
|
function promptInput(question) {
|
|
8
8
|
const rl = node_readline.createInterface({
|
|
@@ -16,18 +16,6 @@ function promptInput(question) {
|
|
|
16
16
|
});
|
|
17
17
|
});
|
|
18
18
|
}
|
|
19
|
-
async function confirmLegacyModernJsSetup() {
|
|
20
|
-
console.error('');
|
|
21
|
-
console.error(i18n.t(localeKeys.message.legacyModernJsWarning));
|
|
22
|
-
console.error('');
|
|
23
|
-
const answer = await promptInput(i18n.t(localeKeys.prompt.legacyModernJsConfirmation, {
|
|
24
|
-
confirmation: LEGACY_MODERN_JS_CONFIRMATION
|
|
25
|
-
}));
|
|
26
|
-
if (answer !== LEGACY_MODERN_JS_CONFIRMATION) {
|
|
27
|
-
console.error(i18n.t(localeKeys.error.legacyModernJsNotConfirmed));
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
19
|
async function getProjectName() {
|
|
32
20
|
const args = process.argv.slice(2);
|
|
33
21
|
const positionalArgs = collectPositionalArgs(args);
|
|
@@ -61,4 +49,4 @@ async function getProjectName() {
|
|
|
61
49
|
useCurrentDir: false
|
|
62
50
|
};
|
|
63
51
|
}
|
|
64
|
-
export {
|
|
52
|
+
export { getProjectName };
|
package/dist/esm-node/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
import node_fs from "node:fs";
|
|
3
3
|
import node_path from "node:path";
|
|
4
|
-
import { DRY_RUN_FLAG, VERTICAL_FLAG, detectBffRuntime, detectCodeSmithOverlays, detectDryRunFlag, detectExplicitTailwindFlag, detectLanguage,
|
|
4
|
+
import { DRY_RUN_FLAG, VERTICAL_FLAG, detectBffRuntime, detectCodeSmithOverlays, detectDryRunFlag, detectExplicitTailwindFlag, detectLanguage, detectTailwindFlag, readBridgeCliOptions, resolveVerticalCliInput } from "./cli/flags.js";
|
|
5
5
|
import { showHelp, showVersion } from "./cli/help.js";
|
|
6
6
|
import { detectUltramodernPackageSource, getBleedingDevFrameworkVersion, isBleedingDevCreatePackage, readCreatePackageJson, resolveWorkspacePackageSource } from "./cli/package-source.js";
|
|
7
7
|
import { initializeGeneratedGitRepository } from "./cli/project-setup.js";
|
|
8
|
-
import {
|
|
8
|
+
import { getProjectName } from "./cli/prompts.js";
|
|
9
9
|
import { i18n, localeKeys } from "./locale/index.js";
|
|
10
10
|
import { runUltramodernToolingCli } from "./ultramodern-tooling/commands.js";
|
|
11
11
|
import { addUltramodernVertical, generateUltramodernWorkspace, planUltramodernVertical } from "./ultramodern-workspace/index.js";
|
|
@@ -21,11 +21,6 @@ async function main() {
|
|
|
21
21
|
}
|
|
22
22
|
if (args.includes('--help') || args.includes('-h')) return void showHelp();
|
|
23
23
|
if (args.includes('--version') || args.includes('-v')) return void showVersion();
|
|
24
|
-
if (detectLegacyModernJsFlag(args)) {
|
|
25
|
-
await confirmLegacyModernJsSetup();
|
|
26
|
-
delegateLegacyModernJsSetup(args);
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
24
|
detectBffRuntime(args);
|
|
30
25
|
const dryRun = detectDryRunFlag(args);
|
|
31
26
|
const verticalInput = resolveVerticalCliInput(args);
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
const EN_LOCALE = {
|
|
3
3
|
prompt: {
|
|
4
|
-
projectName: 'Please enter project name: '
|
|
5
|
-
legacyModernJsConfirmation: 'Type "{confirmation}" to continue with the original Modern.js setup: '
|
|
4
|
+
projectName: 'Please enter project name: '
|
|
6
5
|
},
|
|
7
6
|
error: {
|
|
8
7
|
projectNameEmpty: 'Error: Project name cannot be empty',
|
|
9
8
|
directoryExists: 'Error: Directory "{projectName}" already exists and is not empty',
|
|
10
9
|
verticalNameMissing: 'Error: Missing MicroVertical name. Use <name> --vertical, --vertical=<name>, or --vertical-name <name>.',
|
|
11
10
|
verticalNameAmbiguous: 'Error: Ambiguous MicroVertical name: "{firstName}" from {firstSource} does not match "{secondName}" from {secondSource}.',
|
|
12
|
-
legacyModernJsNotConfirmed: 'Aborted. UltraModern.js remains the default unattended setup.',
|
|
13
11
|
createFailed: 'Error creating project:'
|
|
14
12
|
},
|
|
15
13
|
message: {
|
|
@@ -18,8 +16,7 @@ const EN_LOCALE = {
|
|
|
18
16
|
nextSteps: '📋 Next steps:',
|
|
19
17
|
step1: 'cd {projectName}',
|
|
20
18
|
step2: 'pnpm install',
|
|
21
|
-
step3: 'pnpm dev'
|
|
22
|
-
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,\na strict Effect API runtime, Tailwind CSS v4, and the BleedingDev package cohort.\nThe original Modern.js setup is a dangerous opt-in path.\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
19
|
+
step3: 'pnpm dev'
|
|
23
20
|
},
|
|
24
21
|
help: {
|
|
25
22
|
title: '🚀 UltraModern.js Project Creator',
|
|
@@ -53,7 +50,6 @@ const EN_LOCALE = {
|
|
|
53
50
|
optionVerticalName: ' --vertical-name <name> Explicit MicroVertical name for automation-friendly workspace mutation',
|
|
54
51
|
optionDryRun: ' --dry-run Preview a MicroVertical mutation plan without writing files (supported with --vertical)',
|
|
55
52
|
optionCodeSmithOverlay: ' --codesmith-overlay <package-or-path> Run an explicit CodeSmith overlay after generation',
|
|
56
|
-
optionLegacyModernJs: ' --legacy-modern-js Opt into the original Modern.js setup after a large warning and typed confirmation',
|
|
57
53
|
examples: '💡 Examples:',
|
|
58
54
|
example1: ' pnpm dlx @bleedingdev/modern-js-create my-workspace',
|
|
59
55
|
example2: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --lang zh',
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
const ZH_LOCALE = {
|
|
3
3
|
prompt: {
|
|
4
|
-
projectName: '请输入项目名称: '
|
|
5
|
-
legacyModernJsConfirmation: '输入 "{confirmation}" 以继续使用原始 Modern.js 初始化: '
|
|
4
|
+
projectName: '请输入项目名称: '
|
|
6
5
|
},
|
|
7
6
|
error: {
|
|
8
7
|
projectNameEmpty: '错误: 项目名称不能为空',
|
|
9
8
|
directoryExists: '错误: 目录 "{projectName}" 已存在且不为空',
|
|
10
9
|
verticalNameMissing: '错误: 缺少 MicroVertical 名称。请使用 <名称> --vertical、--vertical=<名称> 或 --vertical-name <名称>。',
|
|
11
10
|
verticalNameAmbiguous: '错误: MicroVertical 名称不明确:{firstSource} 的 "{firstName}" 与 {secondSource} 的 "{secondName}" 不一致。',
|
|
12
|
-
legacyModernJsNotConfirmed: '已中止。UltraModern.js 仍是默认的免交互初始化方案。',
|
|
13
11
|
createFailed: '创建项目时出错:'
|
|
14
12
|
},
|
|
15
13
|
message: {
|
|
@@ -18,8 +16,7 @@ const ZH_LOCALE = {
|
|
|
18
16
|
nextSteps: '📋 下一步:',
|
|
19
17
|
step1: 'cd {projectName}',
|
|
20
18
|
step2: 'pnpm install',
|
|
21
|
-
step3: 'pnpm dev'
|
|
22
|
-
legacyModernJsWarning: "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n严重警告:你正在退出 ULTRAMODERN.JS 默认配置。\n免交互默认值是最佳 UltraModern.js 配置:\n结构化 SuperApp 工作区、presetUltramodern、TanStack Router、\n严格 Effect API 运行时、Tailwind CSS v4,以及 BleedingDev 包版本队列。\n原始 Modern.js 初始化是危险的显式选择路径。\n!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
|
|
19
|
+
step3: 'pnpm dev'
|
|
23
20
|
},
|
|
24
21
|
help: {
|
|
25
22
|
title: '🚀 UltraModern.js 项目创建工具',
|
|
@@ -53,7 +50,6 @@ const ZH_LOCALE = {
|
|
|
53
50
|
optionVerticalName: ' --vertical-name <名称> 为自动化工作流显式指定 MicroVertical 名称',
|
|
54
51
|
optionDryRun: ' --dry-run 预览 MicroVertical 修改计划但不写入文件(与 --vertical 一起使用)',
|
|
55
52
|
optionCodeSmithOverlay: ' --codesmith-overlay <包或路径> 生成完成后运行显式配置的 CodeSmith overlay',
|
|
56
|
-
optionLegacyModernJs: ' --legacy-modern-js 在大型警告和输入确认后,选择原始 Modern.js 初始化',
|
|
57
53
|
examples: '💡 示例:',
|
|
58
54
|
example1: ' pnpm dlx @bleedingdev/modern-js-create my-workspace',
|
|
59
55
|
example2: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --lang zh',
|
|
@@ -38,27 +38,4 @@ function modernPackageSpecifier(packageName, packageSource) {
|
|
|
38
38
|
if (!packageSource.aliasScope) return packageSource.modernPackageVersion;
|
|
39
39
|
return `npm:${modernAliasPackageName(packageName, packageSource)}@${packageSource.modernPackageVersion}`;
|
|
40
40
|
}
|
|
41
|
-
|
|
42
|
-
if (!packageSource.aliasScope) return;
|
|
43
|
-
return Object.fromEntries(packageNames.map((packageName)=>[
|
|
44
|
-
packageName,
|
|
45
|
-
modernAliasPackageName(packageName, packageSource)
|
|
46
|
-
]));
|
|
47
|
-
}
|
|
48
|
-
function createModernPackagesMetadata(packageNames, packageSource, options = {}) {
|
|
49
|
-
const includeAliases = options.includeAliases ?? Boolean(packageSource.aliasScope);
|
|
50
|
-
const aliases = includeAliases ? modernPackageAliases(packageNames, packageSource) : void 0;
|
|
51
|
-
return {
|
|
52
|
-
packages: [
|
|
53
|
-
...packageNames
|
|
54
|
-
],
|
|
55
|
-
specifier: modernPackageVersion(packageSource),
|
|
56
|
-
...packageSource.registry ? {
|
|
57
|
-
registry: packageSource.registry
|
|
58
|
-
} : {},
|
|
59
|
-
...aliases ? {
|
|
60
|
-
aliases
|
|
61
|
-
} : {}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
export { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_FRAMEWORK_VERSION_ENV, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, createModernPackagesMetadata, modernAliasPackageName, modernPackageAliases, modernPackageSpecifier, modernPackageVersion };
|
|
41
|
+
export { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_FRAMEWORK_VERSION_ENV, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, ULTRAMODERN_SINGLE_APP_MODERN_PACKAGES, ULTRAMODERN_WORKSPACE_MODERN_PACKAGES, WORKSPACE_PACKAGE_VERSION, modernPackageSpecifier, modernPackageVersion };
|
package/dist/esm-node/ultramodern-tooling/commands/migrate-strict-effect/declaration-patches.js
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import "node:module";
|
|
2
2
|
import { ensureGeneratedPatchFile, removeGeneratedPatchFileIfUnchanged } from "./generated-patches.js";
|
|
3
|
-
import { drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath, effectDeclarationPatchPath, effectDeclarationPatchSourcePath, moduleFederationBridgeReactPatchPath, moduleFederationBridgeReactPatchSourcePath, moduleFederationModernJsPatchPath, moduleFederationModernJsPatchSourcePath } from "./policy-constants.js";
|
|
3
|
+
import { drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath, effectDeclarationPatchPath, effectDeclarationPatchSourcePath, moduleFederationBridgeReactPatchPath, moduleFederationBridgeReactPatchSourcePath, moduleFederationDtsPluginPatchPath, moduleFederationDtsPluginPatchSourcePath, moduleFederationModernJsPatchPath, moduleFederationModernJsPatchSourcePath } from "./policy-constants.js";
|
|
4
4
|
function ensureGeneratedDeclarationPatches(io, options) {
|
|
5
5
|
let changed = false;
|
|
6
6
|
changed = ensureGeneratedPatchFile(io, moduleFederationModernJsPatchPath, moduleFederationModernJsPatchSourcePath) || changed;
|
|
7
|
+
changed = ensureGeneratedPatchFile(io, moduleFederationDtsPluginPatchPath, moduleFederationDtsPluginPatchSourcePath) || changed;
|
|
7
8
|
changed = ensureGeneratedPatchFile(io, moduleFederationBridgeReactPatchPath, moduleFederationBridgeReactPatchSourcePath) || changed;
|
|
8
9
|
changed = ensureGeneratedPatchFile(io, effectDeclarationPatchPath, effectDeclarationPatchSourcePath) || changed;
|
|
9
10
|
changed = options.includeDrizzleOrmPatch ? ensureGeneratedPatchFile(io, drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath) || changed : removeGeneratedPatchFileIfUnchanged(io, drizzleOrmDeclarationPatchPath, drizzleOrmDeclarationPatchSourcePath) || changed;
|