@bleedingdev/modern-js-create 3.2.0-ultramodern.120 → 3.2.0-ultramodern.122
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 -12
- package/dist/cjs/create-package-root.cjs +7 -9
- package/dist/cjs/index.cjs +74 -44
- package/dist/cjs/locale/en.cjs +6 -7
- package/dist/cjs/locale/zh.cjs +6 -7
- package/dist/cjs/ultramodern-workspace/add-vertical.cjs +337 -0
- package/dist/cjs/ultramodern-workspace/app-files.cjs +223 -0
- package/dist/cjs/ultramodern-workspace/contracts.cjs +836 -0
- package/dist/cjs/ultramodern-workspace/demo-components.cjs +422 -0
- package/dist/cjs/ultramodern-workspace/descriptors.cjs +222 -0
- package/dist/cjs/ultramodern-workspace/effect-api.cjs +952 -0
- package/dist/cjs/ultramodern-workspace/fs-io.cjs +191 -0
- package/dist/cjs/ultramodern-workspace/index.cjs +48 -0
- package/dist/cjs/ultramodern-workspace/locales.cjs +173 -0
- package/dist/cjs/ultramodern-workspace/module-federation.cjs +487 -0
- package/dist/cjs/ultramodern-workspace/naming.cjs +161 -0
- package/dist/cjs/ultramodern-workspace/package-json.cjs +406 -0
- package/dist/cjs/ultramodern-workspace/package-source.cjs +59 -0
- package/dist/cjs/ultramodern-workspace/policy.cjs +248 -0
- package/dist/cjs/ultramodern-workspace/public-surface.cjs +268 -0
- package/dist/cjs/ultramodern-workspace/routes.cjs +375 -0
- package/dist/cjs/ultramodern-workspace/types.cjs +61 -0
- package/dist/cjs/ultramodern-workspace/versions.cjs +153 -0
- package/dist/cjs/ultramodern-workspace/workspace-scripts.cjs +153 -0
- package/dist/cjs/ultramodern-workspace/write-workspace.cjs +175 -0
- package/dist/esm/create-package-root.js +7 -9
- package/dist/esm/index.js +72 -42
- package/dist/esm/locale/en.js +6 -7
- package/dist/esm/locale/zh.js +6 -7
- package/dist/esm/ultramodern-workspace/add-vertical.js +252 -0
- package/dist/esm/ultramodern-workspace/app-files.js +149 -0
- package/dist/esm/ultramodern-workspace/contracts.js +741 -0
- package/dist/esm/ultramodern-workspace/demo-components.js +363 -0
- package/dist/esm/ultramodern-workspace/descriptors.js +133 -0
- package/dist/esm/ultramodern-workspace/effect-api.js +854 -0
- package/dist/esm/ultramodern-workspace/fs-io.js +90 -0
- package/dist/esm/ultramodern-workspace/index.js +3 -0
- package/dist/esm/ultramodern-workspace/locales.js +122 -0
- package/dist/esm/ultramodern-workspace/module-federation.js +415 -0
- package/dist/esm/ultramodern-workspace/naming.js +71 -0
- package/dist/esm/ultramodern-workspace/package-json.js +338 -0
- package/dist/esm/ultramodern-workspace/package-source.js +21 -0
- package/dist/esm/ultramodern-workspace/policy.js +183 -0
- package/dist/esm/ultramodern-workspace/public-surface.js +183 -0
- package/dist/esm/ultramodern-workspace/routes.js +280 -0
- package/dist/esm/ultramodern-workspace/types.js +16 -0
- package/dist/esm/ultramodern-workspace/versions.js +34 -0
- package/dist/esm/ultramodern-workspace/workspace-scripts.js +91 -0
- package/dist/esm/ultramodern-workspace/write-workspace.js +121 -0
- package/dist/esm-node/create-package-root.js +7 -9
- package/dist/esm-node/index.js +72 -42
- package/dist/esm-node/locale/en.js +6 -7
- package/dist/esm-node/locale/zh.js +6 -7
- package/dist/esm-node/ultramodern-workspace/add-vertical.js +253 -0
- package/dist/esm-node/ultramodern-workspace/app-files.js +150 -0
- package/dist/esm-node/ultramodern-workspace/contracts.js +742 -0
- package/dist/esm-node/ultramodern-workspace/demo-components.js +364 -0
- package/dist/esm-node/ultramodern-workspace/descriptors.js +134 -0
- package/dist/esm-node/ultramodern-workspace/effect-api.js +855 -0
- package/dist/esm-node/ultramodern-workspace/fs-io.js +91 -0
- package/dist/esm-node/ultramodern-workspace/index.js +4 -0
- package/dist/esm-node/ultramodern-workspace/locales.js +123 -0
- package/dist/esm-node/ultramodern-workspace/module-federation.js +416 -0
- package/dist/esm-node/ultramodern-workspace/naming.js +72 -0
- package/dist/esm-node/ultramodern-workspace/package-json.js +339 -0
- package/dist/esm-node/ultramodern-workspace/package-source.js +22 -0
- package/dist/esm-node/ultramodern-workspace/policy.js +184 -0
- package/dist/esm-node/ultramodern-workspace/public-surface.js +184 -0
- package/dist/esm-node/ultramodern-workspace/routes.js +281 -0
- package/dist/esm-node/ultramodern-workspace/types.js +17 -0
- package/dist/esm-node/ultramodern-workspace/versions.js +35 -0
- package/dist/esm-node/ultramodern-workspace/workspace-scripts.js +92 -0
- package/dist/esm-node/ultramodern-workspace/write-workspace.js +122 -0
- package/dist/types/locale/en.d.ts +4 -5
- package/dist/types/locale/index.d.ts +8 -10
- package/dist/types/locale/zh.d.ts +4 -5
- package/dist/types/ultramodern-workspace/add-vertical.d.ts +19 -0
- package/dist/types/ultramodern-workspace/app-files.d.ts +14 -0
- package/dist/types/ultramodern-workspace/contracts.d.ts +21 -0
- package/dist/types/ultramodern-workspace/demo-components.d.ts +9 -0
- package/dist/types/ultramodern-workspace/descriptors.d.ts +39 -0
- package/dist/types/ultramodern-workspace/effect-api.d.ts +73 -0
- package/dist/types/ultramodern-workspace/fs-io.d.ts +18 -0
- package/dist/types/ultramodern-workspace/index.d.ts +4 -0
- package/dist/types/ultramodern-workspace/locales.d.ts +183 -0
- package/dist/types/ultramodern-workspace/module-federation.d.ts +16 -0
- package/dist/types/ultramodern-workspace/naming.d.ts +16 -0
- package/dist/types/ultramodern-workspace/package-json.d.ts +12 -0
- package/dist/types/ultramodern-workspace/package-source.d.ts +2 -0
- package/dist/types/ultramodern-workspace/policy.d.ts +60 -0
- package/dist/types/ultramodern-workspace/public-surface.d.ts +37 -0
- package/dist/types/ultramodern-workspace/routes.d.ts +25 -0
- package/dist/types/ultramodern-workspace/types.d.ts +95 -0
- package/dist/types/ultramodern-workspace/versions.d.ts +38 -0
- package/dist/types/ultramodern-workspace/workspace-scripts.d.ts +10 -0
- package/dist/types/ultramodern-workspace/write-workspace.d.ts +4 -0
- package/package.json +4 -3
- package/template-workspace/.github/workflows/ultramodern-workspace-gates.yml.handlebars +1 -4
- package/template-workspace/.mise.toml.handlebars +1 -0
- package/template-workspace/{AGENTS.md → AGENTS.md.handlebars} +12 -7
- package/template-workspace/README.md.handlebars +40 -24
- package/template-workspace/{pnpm-workspace.yaml → pnpm-workspace.yaml.handlebars} +2 -2
- package/template-workspace/scripts/bootstrap-agent-skills.mjs +31 -51
- package/templates/app/shell-frame.tsx +49 -0
- package/templates/app/ultramodern-route-head.tsx.handlebars +142 -0
- package/templates/packages/shared-contracts-index.ts +466 -0
- package/templates/workspace-scripts/assert-mf-types.mjs.handlebars +69 -0
- package/templates/workspace-scripts/check-ultramodern-i18n-boundaries.mjs +9 -0
- package/templates/workspace-scripts/generate-public-surface-assets.mjs +529 -0
- package/templates/workspace-scripts/proof-cloudflare-version.mjs +125 -0
- package/templates/workspace-scripts/ultramodern-cloudflare-proof.mjs +851 -0
- package/templates/workspace-scripts/ultramodern-performance-readiness.config.mjs +7 -0
- package/templates/workspace-scripts/ultramodern-performance-readiness.mjs +223 -0
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +656 -0
- package/dist/cjs/ultramodern-workspace.cjs +0 -6797
- package/dist/esm/ultramodern-workspace.js +0 -6738
- package/dist/esm-node/ultramodern-workspace.js +0 -6739
- package/dist/types/ultramodern-workspace.d.ts +0 -29
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
5
|
+
var define = (defs, kind)=>{
|
|
6
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
[kind]: defs[key]
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
define(getters, "get");
|
|
12
|
+
define(values, "value");
|
|
13
|
+
};
|
|
14
|
+
})();
|
|
15
|
+
(()=>{
|
|
16
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
17
|
+
})();
|
|
18
|
+
(()=>{
|
|
19
|
+
__webpack_require__.r = (exports1)=>{
|
|
20
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
21
|
+
value: 'Module'
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
};
|
|
27
|
+
})();
|
|
28
|
+
var __webpack_exports__ = {};
|
|
29
|
+
__webpack_require__.r(__webpack_exports__);
|
|
30
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
31
|
+
createAssertMfTypesScript: ()=>createAssertMfTypesScript,
|
|
32
|
+
createCloudflareProofHelperScript: ()=>createCloudflareProofHelperScript,
|
|
33
|
+
createCloudflareVersionProofScript: ()=>createCloudflareVersionProofScript,
|
|
34
|
+
createPerformanceReadinessConfigScript: ()=>createPerformanceReadinessConfigScript,
|
|
35
|
+
createPerformanceReadinessScript: ()=>createPerformanceReadinessScript,
|
|
36
|
+
createPublicSurfaceAssetsScript: ()=>createPublicSurfaceAssetsScript,
|
|
37
|
+
createWorkspaceI18nBoundaryValidationScript: ()=>createWorkspaceI18nBoundaryValidationScript,
|
|
38
|
+
createWorkspaceValidationScript: ()=>createWorkspaceValidationScript,
|
|
39
|
+
writeGeneratedWorkspaceScripts: ()=>writeGeneratedWorkspaceScripts
|
|
40
|
+
});
|
|
41
|
+
const external_demo_components_cjs_namespaceObject = require("./demo-components.cjs");
|
|
42
|
+
const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
|
|
43
|
+
const external_effect_api_cjs_namespaceObject = require("./effect-api.cjs");
|
|
44
|
+
const external_fs_io_cjs_namespaceObject = require("./fs-io.cjs");
|
|
45
|
+
const external_naming_cjs_namespaceObject = require("./naming.cjs");
|
|
46
|
+
const external_policy_cjs_namespaceObject = require("./policy.cjs");
|
|
47
|
+
const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
|
|
48
|
+
const external_routes_cjs_namespaceObject = require("./routes.cjs");
|
|
49
|
+
const external_versions_cjs_namespaceObject = require("./versions.cjs");
|
|
50
|
+
function createAssertMfTypesScript(remotes = []) {
|
|
51
|
+
return (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)("workspace-scripts/assert-mf-types.mjs", {
|
|
52
|
+
defaultAppDirsJson: JSON.stringify(remotes.map((remote)=>remote.directory), null, 2)
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function createWorkspaceValidationScript(scope, enableTailwind, remotes = []) {
|
|
56
|
+
const verticals = remotes.filter(external_descriptors_cjs_namespaceObject.appHasEffectApi).map((remote)=>({
|
|
57
|
+
id: remote.id,
|
|
58
|
+
domain: remote.domain,
|
|
59
|
+
stem: remote.effectApi.stem,
|
|
60
|
+
group: (0, external_effect_api_cjs_namespaceObject.verticalEffectGroupName)(remote),
|
|
61
|
+
path: remote.directory,
|
|
62
|
+
mfName: remote.mfName,
|
|
63
|
+
apiPrefix: remote.effectApi.prefix,
|
|
64
|
+
tailwindPrefix: (0, external_naming_cjs_namespaceObject.tailwindPrefixForApp)(remote),
|
|
65
|
+
zephyrAlias: (0, external_descriptors_cjs_namespaceObject.remoteDependencyAlias)(remote),
|
|
66
|
+
packageName: (0, external_naming_cjs_namespaceObject.packageName)(scope, remote.packageSuffix),
|
|
67
|
+
exposes: Object.keys(remote.exposes ?? {}),
|
|
68
|
+
componentPaths: Object.keys(remote.exposes ?? {}).map((expose)=>(0, external_demo_components_cjs_namespaceObject.remoteComponentOutputPath)(remote, expose)).filter((componentPath)=>Boolean(componentPath)),
|
|
69
|
+
namespace: (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(remote),
|
|
70
|
+
routePagePaths: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(remote).filter((route)=>'/' !== route.canonicalPath).map((route)=>(0, external_routes_cjs_namespaceObject.createRoutePageFilePath)(remote, route.canonicalPath)),
|
|
71
|
+
routeMetaPaths: (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(remote).map((route)=>(0, external_routes_cjs_namespaceObject.createRouteMetaFilePath)(remote, route.canonicalPath)),
|
|
72
|
+
localisedUrls: (0, external_routes_cjs_namespaceObject.createLocalisedUrlsMap)(remote),
|
|
73
|
+
verticalRefs: remote.verticalRefs ?? []
|
|
74
|
+
}));
|
|
75
|
+
const shellRouteMetaPaths = (0, external_routes_cjs_namespaceObject.createRouteOwnedI18nPaths)(external_descriptors_cjs_namespaceObject.shellApp).map((route)=>(0, external_routes_cjs_namespaceObject.createRouteMetaFilePath)(external_descriptors_cjs_namespaceObject.shellApp, route.canonicalPath));
|
|
76
|
+
const shellNamespace = (0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(external_descriptors_cjs_namespaceObject.shellApp);
|
|
77
|
+
const oldRemotePaths = [
|
|
78
|
+
'apps/remotes'
|
|
79
|
+
];
|
|
80
|
+
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 && pnpm performance:readiness' : 'ULTRAMODERN_ZEPHYR=false pnpm --filter "./apps/shell-super-app" run build && pnpm mf:types && pnpm performance:readiness';
|
|
81
|
+
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';
|
|
82
|
+
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';
|
|
83
|
+
const expectedCloudflareSecurity = (0, external_policy_cjs_namespaceObject.createCloudflareSecurityContract)();
|
|
84
|
+
return (0, external_fs_io_cjs_namespaceObject.renderFileTemplate)("workspace-scripts/validate-ultramodern-workspace.mjs", {
|
|
85
|
+
packageScope: scope,
|
|
86
|
+
nodeVersion: external_versions_cjs_namespaceObject.NODE_VERSION,
|
|
87
|
+
pnpmVersion: external_versions_cjs_namespaceObject.PNPM_VERSION,
|
|
88
|
+
tailwindEnabledJson: JSON.stringify(enableTailwind),
|
|
89
|
+
fullStackVerticalsJson: JSON.stringify(verticals, null, 2),
|
|
90
|
+
shellNamespaceJson: JSON.stringify(shellNamespace),
|
|
91
|
+
oldRemotePathsJson: JSON.stringify(oldRemotePaths, null, 2),
|
|
92
|
+
expectedBuildScriptJson: JSON.stringify(expectedBuildScript),
|
|
93
|
+
expectedCloudflareBuildScriptJson: JSON.stringify(expectedCloudflareBuildScript),
|
|
94
|
+
expectedCloudflareDeployScriptJson: JSON.stringify(expectedCloudflareDeployScript),
|
|
95
|
+
expectedCloudflareSecurityJson: JSON.stringify(expectedCloudflareSecurity, null, 2),
|
|
96
|
+
publicSurfaceManagedSourceAssetPathsJson: JSON.stringify([
|
|
97
|
+
...external_public_surface_cjs_namespaceObject.publicSurfaceManagedSourceAssetPaths
|
|
98
|
+
], null, 2),
|
|
99
|
+
shellRouteMetaPathsJson: JSON.stringify(shellRouteMetaPaths, null, 2),
|
|
100
|
+
cloudflareCompatibilityDate: external_versions_cjs_namespaceObject.CLOUDFLARE_COMPATIBILITY_DATE
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
function createWorkspaceI18nBoundaryValidationScript() {
|
|
104
|
+
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/check-ultramodern-i18n-boundaries.mjs");
|
|
105
|
+
}
|
|
106
|
+
function createPublicSurfaceAssetsScript() {
|
|
107
|
+
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/generate-public-surface-assets.mjs");
|
|
108
|
+
}
|
|
109
|
+
function createCloudflareProofHelperScript() {
|
|
110
|
+
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-cloudflare-proof.mjs");
|
|
111
|
+
}
|
|
112
|
+
function createCloudflareVersionProofScript() {
|
|
113
|
+
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/proof-cloudflare-version.mjs");
|
|
114
|
+
}
|
|
115
|
+
function createPerformanceReadinessConfigScript() {
|
|
116
|
+
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-performance-readiness.config.mjs");
|
|
117
|
+
}
|
|
118
|
+
function createPerformanceReadinessScript() {
|
|
119
|
+
return (0, external_fs_io_cjs_namespaceObject.readFileTemplate)("workspace-scripts/ultramodern-performance-readiness.mjs");
|
|
120
|
+
}
|
|
121
|
+
function writeGeneratedWorkspaceScripts(targetDir, scope, enableTailwind, remotes = []) {
|
|
122
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/assert-mf-types.mjs", createAssertMfTypesScript(remotes));
|
|
123
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/validate-ultramodern-workspace.mjs", createWorkspaceValidationScript(scope, enableTailwind, remotes));
|
|
124
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/check-ultramodern-i18n-boundaries.mjs", createWorkspaceI18nBoundaryValidationScript());
|
|
125
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/generate-public-surface-assets.mjs", createPublicSurfaceAssetsScript());
|
|
126
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-cloudflare-proof.mjs", createCloudflareProofHelperScript());
|
|
127
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/proof-cloudflare-version.mjs", createCloudflareVersionProofScript());
|
|
128
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.config.mjs", createPerformanceReadinessConfigScript());
|
|
129
|
+
(0, external_fs_io_cjs_namespaceObject.writeFileReplacing)(targetDir, "scripts/ultramodern-performance-readiness.mjs", createPerformanceReadinessScript());
|
|
130
|
+
}
|
|
131
|
+
exports.createAssertMfTypesScript = __webpack_exports__.createAssertMfTypesScript;
|
|
132
|
+
exports.createCloudflareProofHelperScript = __webpack_exports__.createCloudflareProofHelperScript;
|
|
133
|
+
exports.createCloudflareVersionProofScript = __webpack_exports__.createCloudflareVersionProofScript;
|
|
134
|
+
exports.createPerformanceReadinessConfigScript = __webpack_exports__.createPerformanceReadinessConfigScript;
|
|
135
|
+
exports.createPerformanceReadinessScript = __webpack_exports__.createPerformanceReadinessScript;
|
|
136
|
+
exports.createPublicSurfaceAssetsScript = __webpack_exports__.createPublicSurfaceAssetsScript;
|
|
137
|
+
exports.createWorkspaceI18nBoundaryValidationScript = __webpack_exports__.createWorkspaceI18nBoundaryValidationScript;
|
|
138
|
+
exports.createWorkspaceValidationScript = __webpack_exports__.createWorkspaceValidationScript;
|
|
139
|
+
exports.writeGeneratedWorkspaceScripts = __webpack_exports__.writeGeneratedWorkspaceScripts;
|
|
140
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
141
|
+
"createAssertMfTypesScript",
|
|
142
|
+
"createCloudflareProofHelperScript",
|
|
143
|
+
"createCloudflareVersionProofScript",
|
|
144
|
+
"createPerformanceReadinessConfigScript",
|
|
145
|
+
"createPerformanceReadinessScript",
|
|
146
|
+
"createPublicSurfaceAssetsScript",
|
|
147
|
+
"createWorkspaceI18nBoundaryValidationScript",
|
|
148
|
+
"createWorkspaceValidationScript",
|
|
149
|
+
"writeGeneratedWorkspaceScripts"
|
|
150
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
151
|
+
Object.defineProperty(exports, '__esModule', {
|
|
152
|
+
value: true
|
|
153
|
+
});
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __webpack_require__ = {};
|
|
3
|
+
(()=>{
|
|
4
|
+
__webpack_require__.n = (module)=>{
|
|
5
|
+
var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
|
|
6
|
+
__webpack_require__.d(getter, {
|
|
7
|
+
a: getter
|
|
8
|
+
});
|
|
9
|
+
return getter;
|
|
10
|
+
};
|
|
11
|
+
})();
|
|
12
|
+
(()=>{
|
|
13
|
+
__webpack_require__.d = (exports1, getters, values)=>{
|
|
14
|
+
var define = (defs, kind)=>{
|
|
15
|
+
for(var key in defs)if (__webpack_require__.o(defs, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
[kind]: defs[key]
|
|
18
|
+
});
|
|
19
|
+
};
|
|
20
|
+
define(getters, "get");
|
|
21
|
+
define(values, "value");
|
|
22
|
+
};
|
|
23
|
+
})();
|
|
24
|
+
(()=>{
|
|
25
|
+
__webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
|
|
26
|
+
})();
|
|
27
|
+
(()=>{
|
|
28
|
+
__webpack_require__.r = (exports1)=>{
|
|
29
|
+
if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
|
|
30
|
+
value: 'Module'
|
|
31
|
+
});
|
|
32
|
+
Object.defineProperty(exports1, '__esModule', {
|
|
33
|
+
value: true
|
|
34
|
+
});
|
|
35
|
+
};
|
|
36
|
+
})();
|
|
37
|
+
var __webpack_exports__ = {};
|
|
38
|
+
__webpack_require__.r(__webpack_exports__);
|
|
39
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
40
|
+
generateUltramodernWorkspace: ()=>generateUltramodernWorkspace,
|
|
41
|
+
writeApp: ()=>writeApp,
|
|
42
|
+
writeSharedPackages: ()=>writeSharedPackages
|
|
43
|
+
});
|
|
44
|
+
const external_node_fs_namespaceObject = require("node:fs");
|
|
45
|
+
var external_node_fs_default = /*#__PURE__*/ __webpack_require__.n(external_node_fs_namespaceObject);
|
|
46
|
+
const external_app_files_cjs_namespaceObject = require("./app-files.cjs");
|
|
47
|
+
const external_contracts_cjs_namespaceObject = require("./contracts.cjs");
|
|
48
|
+
const external_demo_components_cjs_namespaceObject = require("./demo-components.cjs");
|
|
49
|
+
const external_descriptors_cjs_namespaceObject = require("./descriptors.cjs");
|
|
50
|
+
const external_effect_api_cjs_namespaceObject = require("./effect-api.cjs");
|
|
51
|
+
const external_fs_io_cjs_namespaceObject = require("./fs-io.cjs");
|
|
52
|
+
const external_locales_cjs_namespaceObject = require("./locales.cjs");
|
|
53
|
+
const external_module_federation_cjs_namespaceObject = require("./module-federation.cjs");
|
|
54
|
+
const external_naming_cjs_namespaceObject = require("./naming.cjs");
|
|
55
|
+
const external_package_json_cjs_namespaceObject = require("./package-json.cjs");
|
|
56
|
+
const external_package_source_cjs_namespaceObject = require("./package-source.cjs");
|
|
57
|
+
const external_public_surface_cjs_namespaceObject = require("./public-surface.cjs");
|
|
58
|
+
const external_versions_cjs_namespaceObject = require("./versions.cjs");
|
|
59
|
+
const external_workspace_scripts_cjs_namespaceObject = require("./workspace-scripts.cjs");
|
|
60
|
+
function writeApp(targetDir, scope, app, packageSource, enableTailwind, remotes = []) {
|
|
61
|
+
const resolvedApp = 'shell' === app.kind ? (0, external_descriptors_cjs_namespaceObject.createShellHost)(remotes) : app;
|
|
62
|
+
const publicWeb = (0, external_public_surface_cjs_namespaceObject.createPublicWebAppArtifacts)(resolvedApp);
|
|
63
|
+
const writeAppFile = (relativePath, content)=>{
|
|
64
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/${relativePath}`, content);
|
|
65
|
+
};
|
|
66
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/package.json`, (0, external_package_json_cjs_namespaceObject.createAppPackage)(scope, resolvedApp, packageSource, enableTailwind, remotes));
|
|
67
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/tsconfig.json`, (0, external_package_json_cjs_namespaceObject.createPackageTsConfig)(resolvedApp.directory, (0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(resolvedApp)));
|
|
68
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/modern-app-env.d.ts`, (0, external_app_files_cjs_namespaceObject.createAppEnvDts)(resolvedApp, remotes));
|
|
69
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/ultramodern-build.ts`, (0, external_module_federation_cjs_namespaceObject.createUltramodernBuildModule)(scope, resolvedApp));
|
|
70
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, publicWeb.jsonLdHelperFile.path, publicWeb.jsonLdHelperFile.content);
|
|
71
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, publicWeb.routeMetadataFile.path, publicWeb.routeMetadataFile.content);
|
|
72
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, publicWeb.routeHeadFile.path, publicWeb.routeHeadFile.content);
|
|
73
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/modern.config.ts`, (0, external_module_federation_cjs_namespaceObject.createAppModernConfig)(scope, resolvedApp));
|
|
74
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/modern.runtime.ts`, (0, external_app_files_cjs_namespaceObject.createAppRuntimeConfig)(resolvedApp, scope, remotes));
|
|
75
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/locales/en/translation.json`, (0, external_locales_cjs_namespaceObject.createAppPublicLocaleMessages)(resolvedApp, 'en', remotes));
|
|
76
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/locales/en/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(resolvedApp)}.json`, (0, external_locales_cjs_namespaceObject.createAppPublicLocaleMessages)(resolvedApp, 'en', remotes));
|
|
77
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/locales/cs/translation.json`, (0, external_locales_cjs_namespaceObject.createAppPublicLocaleMessages)(resolvedApp, 'cs', remotes));
|
|
78
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${resolvedApp.directory}/locales/cs/${(0, external_descriptors_cjs_namespaceObject.appI18nNamespace)(resolvedApp)}.json`, (0, external_locales_cjs_namespaceObject.createAppPublicLocaleMessages)(resolvedApp, 'cs', remotes));
|
|
79
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/routes/index.css`, (0, external_app_files_cjs_namespaceObject.createAppStyles)(enableTailwind, scope, resolvedApp));
|
|
80
|
+
if (enableTailwind) {
|
|
81
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/postcss.config.mjs`, (0, external_app_files_cjs_namespaceObject.createPostcssConfig)());
|
|
82
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/tailwind.config.ts`, (0, external_app_files_cjs_namespaceObject.createTailwindConfig)());
|
|
83
|
+
}
|
|
84
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/module-federation.config.ts`, 'shell' === resolvedApp.kind ? (0, external_module_federation_cjs_namespaceObject.createShellModuleFederationConfig)(scope, remotes) : (0, external_module_federation_cjs_namespaceObject.createRemoteModuleFederationConfig)(scope, resolvedApp, remotes));
|
|
85
|
+
writeAppFile('src/routes/layout.tsx', (0, external_demo_components_cjs_namespaceObject.createLayout)(resolvedApp.id));
|
|
86
|
+
writeAppFile('src/routes/[lang]/page.tsx', 'shell' === resolvedApp.kind ? (0, external_demo_components_cjs_namespaceObject.createShellPage)(remotes) : (0, external_demo_components_cjs_namespaceObject.createRemotePage)(resolvedApp));
|
|
87
|
+
for (const generatedFile of publicWeb.routeMetaFiles)(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, generatedFile.path, generatedFile.content);
|
|
88
|
+
for (const generatedFile of publicWeb.routeAliasFiles)(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, generatedFile.path, generatedFile.content);
|
|
89
|
+
if ('shell' === resolvedApp.kind) {
|
|
90
|
+
writeAppFile('src/routes/vertical-components.tsx', (0, external_demo_components_cjs_namespaceObject.createShellRemoteComponents)(scope, remotes));
|
|
91
|
+
writeAppFile('src/routes/shell-frame.tsx', (0, external_app_files_cjs_namespaceObject.createShellFrameComponent)());
|
|
92
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/effect/vertical-clients.ts`, (0, external_effect_api_cjs_namespaceObject.createShellEffectClient)(scope, remotes));
|
|
93
|
+
}
|
|
94
|
+
if ((0, external_descriptors_cjs_namespaceObject.appHasEffectApi)(resolvedApp)) {
|
|
95
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/shared/effect/api.ts`, (0, external_effect_api_cjs_namespaceObject.createEffectSharedApi)(resolvedApp));
|
|
96
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/api/effect/index.ts`, (0, external_effect_api_cjs_namespaceObject.createEffectServiceEntry)(resolvedApp, '../../shared/effect/api.ts'));
|
|
97
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, `${resolvedApp.directory}/src/effect/${resolvedApp.effectApi.stem}-client.ts`, (0, external_effect_api_cjs_namespaceObject.createEffectClient)(resolvedApp, '../../shared/effect/api'));
|
|
98
|
+
}
|
|
99
|
+
if ('vertical' === resolvedApp.kind) {
|
|
100
|
+
writeAppFile('src/federation-entry.tsx', (0, external_demo_components_cjs_namespaceObject.createRemoteEntry)(resolvedApp));
|
|
101
|
+
for (const expose of Object.keys(resolvedApp.exposes ?? {})){
|
|
102
|
+
const outputPath = (0, external_demo_components_cjs_namespaceObject.remoteComponentOutputPath)(resolvedApp, expose);
|
|
103
|
+
if (outputPath) writeAppFile(outputPath.slice(resolvedApp.directory.length + 1), (0, external_demo_components_cjs_namespaceObject.createRemoteExposeComponent)(resolvedApp, expose));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function writeSharedPackages(targetDir, scope) {
|
|
108
|
+
for (const sharedPackage of external_descriptors_cjs_namespaceObject.sharedPackages){
|
|
109
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${sharedPackage.directory}/package.json`, (0, external_package_json_cjs_namespaceObject.createSharedPackage)(scope, sharedPackage.id, sharedPackage.description));
|
|
110
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(targetDir, `${sharedPackage.directory}/tsconfig.json`, {
|
|
111
|
+
extends: `${(0, external_naming_cjs_namespaceObject.relativeRootFor)(sharedPackage.directory)}/tsconfig.base.json`,
|
|
112
|
+
include: [
|
|
113
|
+
'src'
|
|
114
|
+
]
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, 'packages/shared-contracts/src/index.ts', (0, external_package_json_cjs_namespaceObject.createSharedContractsIndex)());
|
|
118
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, 'packages/shared-design-tokens/src/index.ts', `export const sharedDesignTokens = {
|
|
119
|
+
color: {
|
|
120
|
+
accent: '#2f8f68',
|
|
121
|
+
foreground: '#133225',
|
|
122
|
+
surface: '#f6fbf7',
|
|
123
|
+
},
|
|
124
|
+
} as const;
|
|
125
|
+
`);
|
|
126
|
+
(0, external_fs_io_cjs_namespaceObject.writeFile)(targetDir, 'packages/shared-design-tokens/src/tokens.css', (0, external_app_files_cjs_namespaceObject.createSharedDesignTokensCss)());
|
|
127
|
+
}
|
|
128
|
+
function generateUltramodernWorkspace(options) {
|
|
129
|
+
const scope = (0, external_naming_cjs_namespaceObject.toPackageScope)(options.packageName);
|
|
130
|
+
const packageSource = (0, external_package_source_cjs_namespaceObject.resolvePackageSource)(options);
|
|
131
|
+
const enableTailwind = false !== options.enableTailwind;
|
|
132
|
+
const initialVerticals = [];
|
|
133
|
+
(0, external_naming_cjs_namespaceObject.assertUniqueTailwindPrefixes)([
|
|
134
|
+
external_descriptors_cjs_namespaceObject.shellApp,
|
|
135
|
+
...initialVerticals
|
|
136
|
+
]);
|
|
137
|
+
external_node_fs_default().mkdirSync(options.targetDir, {
|
|
138
|
+
recursive: true
|
|
139
|
+
});
|
|
140
|
+
(0, external_fs_io_cjs_namespaceObject.copyRootTemplate)(options.targetDir, {
|
|
141
|
+
packageName: options.packageName,
|
|
142
|
+
packageScope: scope,
|
|
143
|
+
nodeVersion: external_versions_cjs_namespaceObject.NODE_VERSION,
|
|
144
|
+
pnpmVersion: external_versions_cjs_namespaceObject.PNPM_VERSION,
|
|
145
|
+
nodeFetchVersion: external_versions_cjs_namespaceObject.NODE_FETCH_VERSION,
|
|
146
|
+
tanstackRouterVersion: external_versions_cjs_namespaceObject.TANSTACK_ROUTER_VERSION,
|
|
147
|
+
tailwindEnabled: String(enableTailwind)
|
|
148
|
+
});
|
|
149
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'package.json', (0, external_package_json_cjs_namespaceObject.createRootPackageJson)(scope, packageSource, initialVerticals));
|
|
150
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'tsconfig.base.json', (0, external_package_json_cjs_namespaceObject.createTsConfigBase)());
|
|
151
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/reference-topology.json', (0, external_contracts_cjs_namespaceObject.createTopology)(scope, initialVerticals));
|
|
152
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/ownership.json', (0, external_contracts_cjs_namespaceObject.createOwnership)(scope, initialVerticals));
|
|
153
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, 'topology/local-overlays/development.json', (0, external_contracts_cjs_namespaceObject.createDevelopmentOverlay)(initialVerticals));
|
|
154
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, '.modernjs/ultramodern-workspace-template-manifest.json', (0, external_contracts_cjs_namespaceObject.createTemplateManifest)(options.modernVersion, packageSource));
|
|
155
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, '.modernjs/ultramodern-package-source.json', (0, external_contracts_cjs_namespaceObject.createPackageSourceMetadata)(scope, packageSource));
|
|
156
|
+
(0, external_fs_io_cjs_namespaceObject.writeJson)(options.targetDir, external_descriptors_cjs_namespaceObject.GENERATED_CONTRACT_PATH, (0, external_contracts_cjs_namespaceObject.createGeneratedContract)(scope, [
|
|
157
|
+
(0, external_descriptors_cjs_namespaceObject.createShellHost)(initialVerticals),
|
|
158
|
+
...initialVerticals
|
|
159
|
+
], enableTailwind));
|
|
160
|
+
writeApp(options.targetDir, scope, external_descriptors_cjs_namespaceObject.shellApp, packageSource, enableTailwind, initialVerticals);
|
|
161
|
+
for (const remote of initialVerticals)writeApp(options.targetDir, scope, remote, packageSource, enableTailwind, initialVerticals);
|
|
162
|
+
writeSharedPackages(options.targetDir, scope);
|
|
163
|
+
(0, external_workspace_scripts_cjs_namespaceObject.writeGeneratedWorkspaceScripts)(options.targetDir, scope, enableTailwind, initialVerticals);
|
|
164
|
+
}
|
|
165
|
+
exports.generateUltramodernWorkspace = __webpack_exports__.generateUltramodernWorkspace;
|
|
166
|
+
exports.writeApp = __webpack_exports__.writeApp;
|
|
167
|
+
exports.writeSharedPackages = __webpack_exports__.writeSharedPackages;
|
|
168
|
+
for(var __rspack_i in __webpack_exports__)if (-1 === [
|
|
169
|
+
"generateUltramodernWorkspace",
|
|
170
|
+
"writeApp",
|
|
171
|
+
"writeSharedPackages"
|
|
172
|
+
].indexOf(__rspack_i)) exports[__rspack_i] = __webpack_exports__[__rspack_i];
|
|
173
|
+
Object.defineProperty(exports, '__esModule', {
|
|
174
|
+
value: true
|
|
175
|
+
});
|
|
@@ -1,16 +1,14 @@
|
|
|
1
1
|
import node_fs from "node:fs";
|
|
2
2
|
import node_path from "node:path";
|
|
3
|
+
const MAX_WALK_UP_LEVELS = 5;
|
|
3
4
|
function resolveCreatePackageRoot(fromDir) {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
node_path.resolve(fromDir, '..'),
|
|
7
|
-
node_path.resolve(fromDir, '..', '..')
|
|
8
|
-
];
|
|
9
|
-
const seen = new Set();
|
|
10
|
-
for (const candidate of candidates)if (!seen.has(candidate)) {
|
|
11
|
-
seen.add(candidate);
|
|
5
|
+
let candidate = fromDir;
|
|
6
|
+
for(let level = 0; level <= MAX_WALK_UP_LEVELS; level++){
|
|
12
7
|
if (node_fs.existsSync(node_path.join(candidate, 'package.json')) && node_fs.existsSync(node_path.join(candidate, 'template-workspace'))) return candidate;
|
|
8
|
+
const parent = node_path.dirname(candidate);
|
|
9
|
+
if (parent === candidate) break;
|
|
10
|
+
candidate = parent;
|
|
13
11
|
}
|
|
14
|
-
throw new Error(
|
|
12
|
+
throw new Error(`Unable to resolve the @modern-js/create package root (a directory containing both package.json and template-workspace/) within ${MAX_WALK_UP_LEVELS} levels above ${fromDir}`);
|
|
15
13
|
}
|
|
16
14
|
export { resolveCreatePackageRoot };
|
package/dist/esm/index.js
CHANGED
|
@@ -6,12 +6,19 @@ import { fileURLToPath } from "node:url";
|
|
|
6
6
|
import { resolveCreatePackageRoot } from "./create-package-root.js";
|
|
7
7
|
import { i18n, localeKeys } from "./locale/index.js";
|
|
8
8
|
import { BLEEDINGDEV_CREATE_PACKAGE, BLEEDINGDEV_FRAMEWORK_VERSION_ENV, BLEEDINGDEV_PACKAGE_NAME_PREFIX, BLEEDINGDEV_PACKAGE_SCOPE, WORKSPACE_PACKAGE_VERSION } from "./ultramodern-package-source.js";
|
|
9
|
-
import { addUltramodernVertical, generateUltramodernWorkspace } from "./ultramodern-workspace.js";
|
|
9
|
+
import { addUltramodernVertical, generateUltramodernWorkspace } from "./ultramodern-workspace/index.js";
|
|
10
10
|
const src_dirname = node_path.dirname(fileURLToPath(import.meta.url));
|
|
11
11
|
const createPackageRoot = resolveCreatePackageRoot(src_dirname);
|
|
12
12
|
const semverPattern = /^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/;
|
|
13
13
|
const LEGACY_MODERN_JS_FLAG = '--legacy-modern-js';
|
|
14
14
|
const LEGACY_MODERN_JS_CONFIRMATION = 'USE LEGACY MODERN.JS';
|
|
15
|
+
const WORKSPACE_PROTOCOL_FLAG = '--workspace';
|
|
16
|
+
const BFF_FLAG = '--bff';
|
|
17
|
+
const BFF_RUNTIME_OPTION = '--bff-runtime';
|
|
18
|
+
const SUPPORTED_BFF_RUNTIMES = [
|
|
19
|
+
'effect'
|
|
20
|
+
];
|
|
21
|
+
const REGISTRY_LOOKUP_TIMEOUT_MS = 15000;
|
|
15
22
|
function getOptionValue(args, names) {
|
|
16
23
|
for (const name of names){
|
|
17
24
|
const prefix = `${name}=`;
|
|
@@ -45,8 +52,10 @@ function getBleedingDevFrameworkVersion(createPackage, fallbackVersion) {
|
|
|
45
52
|
}
|
|
46
53
|
function showVersion() {
|
|
47
54
|
const createPackage = readCreatePackageJson();
|
|
55
|
+
const name = createPackage.name || '@modern-js/create';
|
|
48
56
|
const version = createPackage.version || 'unknown';
|
|
49
57
|
console.log(i18n.t(localeKeys.version.message, {
|
|
58
|
+
name,
|
|
50
59
|
version
|
|
51
60
|
}));
|
|
52
61
|
process.exit(0);
|
|
@@ -62,20 +71,26 @@ function showHelp() {
|
|
|
62
71
|
console.log(i18n.t(localeKeys.help.optionHelp));
|
|
63
72
|
console.log(i18n.t(localeKeys.help.optionVersion));
|
|
64
73
|
console.log(i18n.t(localeKeys.help.optionLang));
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
74
|
+
console.log(i18n.t(localeKeys.help.optionTailwind));
|
|
75
|
+
console.log(i18n.t(localeKeys.help.optionBff));
|
|
76
|
+
console.log(i18n.t(localeKeys.help.optionBffRuntime));
|
|
77
|
+
console.log(i18n.t(localeKeys.help.optionWorkspace));
|
|
78
|
+
console.log(i18n.t(localeKeys.help.optionUltramodernPackageSource));
|
|
79
|
+
console.log(i18n.t(localeKeys.help.optionUltramodernPackageVersion));
|
|
80
|
+
console.log(i18n.t(localeKeys.help.optionUltramodernPackageRegistry));
|
|
81
|
+
console.log(i18n.t(localeKeys.help.optionUltramodernPackageScope));
|
|
82
|
+
console.log(i18n.t(localeKeys.help.optionUltramodernPackageNamePrefix));
|
|
83
|
+
console.log(i18n.t(localeKeys.help.optionVertical));
|
|
84
|
+
console.log(i18n.t(localeKeys.help.optionLegacyModernJs));
|
|
71
85
|
console.log('');
|
|
72
86
|
console.log(i18n.t(localeKeys.help.examples));
|
|
73
87
|
console.log(i18n.t(localeKeys.help.example1));
|
|
74
88
|
console.log(i18n.t(localeKeys.help.example2));
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
89
|
+
console.log(i18n.t(localeKeys.help.example3));
|
|
90
|
+
console.log(i18n.t(localeKeys.help.example4));
|
|
91
|
+
console.log(i18n.t(localeKeys.help.example5));
|
|
92
|
+
console.log(i18n.t(localeKeys.help.example6));
|
|
93
|
+
console.log(i18n.t(localeKeys.help.example7));
|
|
79
94
|
console.log('');
|
|
80
95
|
console.log(i18n.t(localeKeys.help.moreInfo));
|
|
81
96
|
console.log('');
|
|
@@ -132,6 +147,26 @@ function delegateLegacyModernJsSetup(args) {
|
|
|
132
147
|
});
|
|
133
148
|
throw new Error('Legacy Modern.js setup requires pnpm or npx to run @modern-js/create.');
|
|
134
149
|
}
|
|
150
|
+
function detectBffRuntime(args) {
|
|
151
|
+
if (args.some((arg)=>arg.startsWith(`${BFF_FLAG}=`))) {
|
|
152
|
+
console.error(`${BFF_FLAG} does not accept a value. Use: ${BFF_RUNTIME_OPTION} <runtime>`);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
}
|
|
155
|
+
const runtimeRequested = args.some((arg)=>arg === BFF_RUNTIME_OPTION || arg.startsWith(`${BFF_RUNTIME_OPTION}=`));
|
|
156
|
+
if (!runtimeRequested) return 'effect';
|
|
157
|
+
const runtime = getOptionValue(args, [
|
|
158
|
+
BFF_RUNTIME_OPTION
|
|
159
|
+
]);
|
|
160
|
+
if (!runtime) {
|
|
161
|
+
console.error(`${BFF_RUNTIME_OPTION} requires a value (supported: ${SUPPORTED_BFF_RUNTIMES.join(', ')})`);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
if (!SUPPORTED_BFF_RUNTIMES.includes(runtime)) {
|
|
165
|
+
console.error(`Unsupported BFF runtime "${runtime}". UltraModern workspaces scaffold an Effect BFF for every MicroVertical (supported: ${SUPPORTED_BFF_RUNTIMES.join(', ')}).`);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
}
|
|
168
|
+
return runtime;
|
|
169
|
+
}
|
|
135
170
|
function detectTailwindFlag() {
|
|
136
171
|
const args = process.argv.slice(2);
|
|
137
172
|
return !args.includes('--no-tailwind');
|
|
@@ -183,7 +218,7 @@ function hasExplicitUltramodernPackageSource(args, value) {
|
|
|
183
218
|
]);
|
|
184
219
|
return value ? configuredValue === value : void 0 !== configuredValue;
|
|
185
220
|
}
|
|
186
|
-
function readBleedingDevFrameworkVersionFromRegistry() {
|
|
221
|
+
function readBleedingDevFrameworkVersionFromRegistry(fallbackVersion) {
|
|
187
222
|
const envVersion = process.env[BLEEDINGDEV_FRAMEWORK_VERSION_ENV]?.trim();
|
|
188
223
|
if (envVersion) {
|
|
189
224
|
if (!semverPattern.test(envVersion)) {
|
|
@@ -198,16 +233,19 @@ function readBleedingDevFrameworkVersionFromRegistry() {
|
|
|
198
233
|
`${BLEEDINGDEV_CREATE_PACKAGE}@latest`,
|
|
199
234
|
'ultramodern.frameworkVersion',
|
|
200
235
|
'--json'
|
|
201
|
-
]
|
|
236
|
+
], {
|
|
237
|
+
timeoutMs: REGISTRY_LOOKUP_TIMEOUT_MS
|
|
238
|
+
}).trim();
|
|
202
239
|
const version = JSON.parse(rawVersion);
|
|
203
240
|
if ('string' == typeof version && semverPattern.test(version)) return version;
|
|
204
241
|
} catch {}
|
|
205
|
-
console.
|
|
206
|
-
`Could not resolve ${BLEEDINGDEV_CREATE_PACKAGE}@latest ultramodern.frameworkVersion.`,
|
|
207
|
-
|
|
242
|
+
console.warn([
|
|
243
|
+
`Could not resolve ${BLEEDINGDEV_CREATE_PACKAGE}@latest ultramodern.frameworkVersion from the npm registry.`,
|
|
244
|
+
`Falling back to the packaged framework version ${fallbackVersion}.`,
|
|
245
|
+
`Pass ${WORKSPACE_PROTOCOL_FLAG} to use local workspace protocol dependencies,`,
|
|
208
246
|
'or pass --ultramodern-package-version with the exact BleedingDev framework cohort.'
|
|
209
247
|
].join(' '));
|
|
210
|
-
|
|
248
|
+
return fallbackVersion;
|
|
211
249
|
}
|
|
212
250
|
function resolveInstallBackedPackageSource(args, createPackage, packageSource) {
|
|
213
251
|
const explicitVersion = getOptionValue(args, [
|
|
@@ -222,7 +260,7 @@ function resolveInstallBackedPackageSource(args, createPackage, packageSource) {
|
|
|
222
260
|
return {
|
|
223
261
|
...packageSource,
|
|
224
262
|
strategy: 'install',
|
|
225
|
-
modernPackageVersion: explicitVersion ?? (isBleedingDevCreatePackage(createPackage) ? packageSource.modernPackageVersion : readBleedingDevFrameworkVersionFromRegistry()),
|
|
263
|
+
modernPackageVersion: explicitVersion ?? (isBleedingDevCreatePackage(createPackage) ? packageSource.modernPackageVersion : readBleedingDevFrameworkVersionFromRegistry(packageSource.modernPackageVersion)),
|
|
226
264
|
aliasScope,
|
|
227
265
|
aliasPackageNamePrefix: getOptionValue(args, [
|
|
228
266
|
'--ultramodern-package-name-prefix'
|
|
@@ -230,7 +268,12 @@ function resolveInstallBackedPackageSource(args, createPackage, packageSource) {
|
|
|
230
268
|
};
|
|
231
269
|
}
|
|
232
270
|
function resolveWorkspacePackageSource(args, createPackage, packageSource) {
|
|
233
|
-
|
|
271
|
+
const workspaceProtocolRequested = args.includes(WORKSPACE_PROTOCOL_FLAG);
|
|
272
|
+
if (workspaceProtocolRequested && hasExplicitUltramodernPackageSource(args, 'install')) {
|
|
273
|
+
console.error(`${WORKSPACE_PROTOCOL_FLAG} conflicts with --ultramodern-package-source=install`);
|
|
274
|
+
process.exit(1);
|
|
275
|
+
}
|
|
276
|
+
if (workspaceProtocolRequested || hasExplicitUltramodernPackageSource(args, 'workspace')) return {
|
|
234
277
|
...packageSource,
|
|
235
278
|
strategy: 'workspace',
|
|
236
279
|
modernPackageVersion: WORKSPACE_PACKAGE_VERSION
|
|
@@ -245,7 +288,8 @@ function runSetupCommand(command, args, options = {}) {
|
|
|
245
288
|
'ignore',
|
|
246
289
|
'pipe',
|
|
247
290
|
'pipe'
|
|
248
|
-
]
|
|
291
|
+
],
|
|
292
|
+
timeout: options.timeoutMs
|
|
249
293
|
});
|
|
250
294
|
}
|
|
251
295
|
function commandExists(command) {
|
|
@@ -260,26 +304,9 @@ function commandExists(command) {
|
|
|
260
304
|
return false;
|
|
261
305
|
}
|
|
262
306
|
}
|
|
263
|
-
function
|
|
307
|
+
function assertGitAvailableForGeneratedProject() {
|
|
264
308
|
if (commandExists('git')) return;
|
|
265
|
-
|
|
266
|
-
'-lc',
|
|
267
|
-
script
|
|
268
|
-
], {
|
|
269
|
-
stdio: 'inherit'
|
|
270
|
-
});
|
|
271
|
-
const sudo = 'function' == typeof process.getuid && 0 === process.getuid() ? '' : 'sudo ';
|
|
272
|
-
if (commandExists('brew')) runSetupCommand('brew', [
|
|
273
|
-
'install',
|
|
274
|
-
'git'
|
|
275
|
-
], {
|
|
276
|
-
stdio: 'inherit'
|
|
277
|
-
});
|
|
278
|
-
else if ('linux' === process.platform && commandExists('apt-get')) runShell(`${sudo}apt-get update && ${sudo}apt-get install -y git`);
|
|
279
|
-
else if ('linux' === process.platform && commandExists('dnf')) runShell(`${sudo}dnf install -y git`);
|
|
280
|
-
else if ('linux' === process.platform && commandExists('yum')) runShell(`${sudo}yum install -y git`);
|
|
281
|
-
else if ('linux' === process.platform && commandExists('apk')) runShell('apk add --no-cache git');
|
|
282
|
-
if (!commandExists('git')) throw new Error('Git is required for UltraModern setup. Install git and rerun create, or run pnpm skills:install after installing git.');
|
|
309
|
+
throw new Error('Git is required for UltraModern setup. Install git yourself (for example "brew install git" or "sudo apt-get install git") and rerun create. This tool never installs system packages on your behalf.');
|
|
283
310
|
}
|
|
284
311
|
function isInsideGitWorkTree(targetDir) {
|
|
285
312
|
try {
|
|
@@ -294,7 +321,7 @@ function isInsideGitWorkTree(targetDir) {
|
|
|
294
321
|
}
|
|
295
322
|
}
|
|
296
323
|
function initializeGeneratedGitRepository(targetDir) {
|
|
297
|
-
|
|
324
|
+
assertGitAvailableForGeneratedProject();
|
|
298
325
|
if (isInsideGitWorkTree(targetDir)) return;
|
|
299
326
|
try {
|
|
300
327
|
runSetupCommand('git', [
|
|
@@ -336,6 +363,7 @@ async function getProjectName() {
|
|
|
336
363
|
const optionWithValue = new Set([
|
|
337
364
|
'--lang',
|
|
338
365
|
'-l',
|
|
366
|
+
BFF_RUNTIME_OPTION,
|
|
339
367
|
'--ultramodern-package-source',
|
|
340
368
|
'--ultramodern-package-version',
|
|
341
369
|
'--ultramodern-package-registry',
|
|
@@ -349,7 +377,8 @@ async function getProjectName() {
|
|
|
349
377
|
'-v',
|
|
350
378
|
'--tailwind',
|
|
351
379
|
'--no-tailwind',
|
|
352
|
-
|
|
380
|
+
BFF_FLAG,
|
|
381
|
+
WORKSPACE_PROTOCOL_FLAG,
|
|
353
382
|
'--vertical',
|
|
354
383
|
LEGACY_MODERN_JS_FLAG
|
|
355
384
|
]);
|
|
@@ -361,7 +390,7 @@ async function getProjectName() {
|
|
|
361
390
|
i += 1;
|
|
362
391
|
continue;
|
|
363
392
|
}
|
|
364
|
-
if (!(arg.startsWith('--lang=') || arg.startsWith('--ultramodern-package-source=') || arg.startsWith('--ultramodern-package-version=') || arg.startsWith('--ultramodern-package-registry=') || arg.startsWith('--ultramodern-package-scope=') || arg.startsWith('--ultramodern-package-name-prefix='))) positionalArgs.push(arg);
|
|
393
|
+
if (!(arg.startsWith('--lang=') || arg.startsWith(`${BFF_RUNTIME_OPTION}=`) || arg.startsWith('--ultramodern-package-source=') || arg.startsWith('--ultramodern-package-version=') || arg.startsWith('--ultramodern-package-registry=') || arg.startsWith('--ultramodern-package-scope=') || arg.startsWith('--ultramodern-package-name-prefix='))) positionalArgs.push(arg);
|
|
365
394
|
}
|
|
366
395
|
}
|
|
367
396
|
if (positionalArgs.length > 1) {
|
|
@@ -403,6 +432,7 @@ async function main() {
|
|
|
403
432
|
delegateLegacyModernJsSetup(args);
|
|
404
433
|
return;
|
|
405
434
|
}
|
|
435
|
+
detectBffRuntime(args);
|
|
406
436
|
console.log(`\n${i18n.t(localeKeys.message.welcome)}\n`);
|
|
407
437
|
const { name: projectName, useCurrentDir } = await getProjectName();
|
|
408
438
|
const targetDir = useCurrentDir ? process.cwd() : node_path.isAbsolute(projectName) ? projectName : node_path.resolve(process.cwd(), projectName);
|
package/dist/esm/locale/en.js
CHANGED
|
@@ -28,8 +28,12 @@ const EN_LOCALE = {
|
|
|
28
28
|
optionVersion: ' -v, --version Display version information',
|
|
29
29
|
optionLang: ' -l, --lang Set the language (en default; zh opt-in)',
|
|
30
30
|
optionTailwind: ' --no-tailwind Disable default Tailwind CSS v4 workspace styling',
|
|
31
|
+
optionBff: ' --bff Keep the default Effect BFF scaffolding (every MicroVertical ships an Effect BFF)',
|
|
32
|
+
optionBffRuntime: ' --bff-runtime Select the BFF runtime for scaffolded MicroVerticals (supported: effect; default: effect)',
|
|
31
33
|
optionWorkspace: ' --workspace Use workspace protocol for @modern-js dependencies (for local monorepo testing)',
|
|
32
34
|
optionUltramodernPackageSource: ' --ultramodern-package-source Select UltraModern package source (workspace or install; BleedingDev defaults to install aliases)',
|
|
35
|
+
optionUltramodernPackageVersion: ' --ultramodern-package-version Pin the exact BleedingDev framework cohort for install package sources',
|
|
36
|
+
optionUltramodernPackageRegistry: ' --ultramodern-package-registry npm registry URL used for install package sources',
|
|
33
37
|
optionUltramodernPackageScope: ' --ultramodern-package-scope Publish scope for npm alias installs (for example bleedingdev)',
|
|
34
38
|
optionUltramodernPackageNamePrefix: ' --ultramodern-package-name-prefix Prefix for npm alias package names (default: modern-js-)',
|
|
35
39
|
optionVertical: ' --vertical Mutate the current existing UltraModern workspace and wire a MicroVertical named <project-name>',
|
|
@@ -41,16 +45,11 @@ const EN_LOCALE = {
|
|
|
41
45
|
example4: ' pnpm dlx @bleedingdev/modern-js-create --help',
|
|
42
46
|
example5: ' pnpm dlx @bleedingdev/modern-js-create .',
|
|
43
47
|
example6: ' pnpm dlx @bleedingdev/modern-js-create my-workspace --workspace',
|
|
44
|
-
example7: '',
|
|
45
|
-
example8: '',
|
|
46
|
-
example9: '',
|
|
47
|
-
example10: '',
|
|
48
|
-
example11: '',
|
|
49
|
-
example12: ' pnpm dlx @bleedingdev/modern-js-create catalog --vertical',
|
|
48
|
+
example7: ' pnpm dlx @bleedingdev/modern-js-create catalog --vertical',
|
|
50
49
|
moreInfo: '📚 Learn more: https://modernjs.dev'
|
|
51
50
|
},
|
|
52
51
|
version: {
|
|
53
|
-
message: '
|
|
52
|
+
message: '{name} version: {version}'
|
|
54
53
|
}
|
|
55
54
|
};
|
|
56
55
|
export { EN_LOCALE };
|