@bleedingdev/modern-js-create 3.5.0-ultramodern.5 → 3.5.0-ultramodern.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/ultramodern-workspace/package-json.cjs +1 -1
- package/dist/esm/ultramodern-workspace/package-json.js +1 -1
- package/dist/esm-node/ultramodern-workspace/package-json.js +1 -1
- package/package.json +3 -3
- package/template-workspace/README.md.handlebars +2 -2
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +20 -0
package/README.md
CHANGED
|
@@ -193,8 +193,8 @@ For strict Effect API migrations, update generated package metadata and Modern
|
|
|
193
193
|
package aliases through the framework command before hand-editing app code:
|
|
194
194
|
|
|
195
195
|
```bash
|
|
196
|
-
pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.
|
|
197
|
-
migrate-strict-effect --version 3.5.0-ultramodern.
|
|
196
|
+
pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.9 ultramodern \
|
|
197
|
+
migrate-strict-effect --version 3.5.0-ultramodern.9
|
|
198
198
|
pnpm api:check
|
|
199
199
|
pnpm contract:check
|
|
200
200
|
pnpm check
|
|
@@ -417,7 +417,7 @@ function createAppPackage(scope, app, packageSource, enableTailwind, remotes = [
|
|
|
417
417
|
scripts: {
|
|
418
418
|
dev: 'modern dev',
|
|
419
419
|
build: app.exposes ? `ULTRAMODERN_ZEPHYR=false modern build && ${publicSurfaceBuildCommand} && node ${(0, external_naming_cjs_namespaceObject.relativeRootFor)(app.directory)}/scripts/assert-mf-types.mts` : `ULTRAMODERN_ZEPHYR=false modern build && ${publicSurfaceBuildCommand}`,
|
|
420
|
-
'cloudflare:build': `ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern build && ${publicSurfaceCloudflareBuildCommand} && ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy && ${publicSurfaceCloudflareOutputCommand}`,
|
|
420
|
+
'cloudflare:build': `ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern build && ${publicSurfaceCloudflareBuildCommand} && ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy --skip-build && ${publicSurfaceCloudflareOutputCommand}`,
|
|
421
421
|
'cloudflare:deploy': 'ULTRAMODERN_CLOUDFLARE_REQUIRE_PUBLIC_URLS=true pnpm run cloudflare:build && wrangler deploy --config .output/wrangler.json',
|
|
422
422
|
'cloudflare:preview': 'pnpm run cloudflare:build && wrangler dev --config .output/wrangler.json',
|
|
423
423
|
'cloudflare:proof': `node ${(0, external_naming_cjs_namespaceObject.relativeRootFor)(app.directory)}/scripts/proof-cloudflare-version.mts --app ${app.id}`,
|
|
@@ -371,7 +371,7 @@ function createAppPackage(scope, app, packageSource, enableTailwind, remotes = [
|
|
|
371
371
|
scripts: {
|
|
372
372
|
dev: 'modern dev',
|
|
373
373
|
build: app.exposes ? `ULTRAMODERN_ZEPHYR=false modern build && ${publicSurfaceBuildCommand} && node ${relativeRootFor(app.directory)}/scripts/assert-mf-types.mts` : `ULTRAMODERN_ZEPHYR=false modern build && ${publicSurfaceBuildCommand}`,
|
|
374
|
-
'cloudflare:build': `ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern build && ${publicSurfaceCloudflareBuildCommand} && ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy && ${publicSurfaceCloudflareOutputCommand}`,
|
|
374
|
+
'cloudflare:build': `ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern build && ${publicSurfaceCloudflareBuildCommand} && ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy --skip-build && ${publicSurfaceCloudflareOutputCommand}`,
|
|
375
375
|
'cloudflare:deploy': 'ULTRAMODERN_CLOUDFLARE_REQUIRE_PUBLIC_URLS=true pnpm run cloudflare:build && wrangler deploy --config .output/wrangler.json',
|
|
376
376
|
'cloudflare:preview': 'pnpm run cloudflare:build && wrangler dev --config .output/wrangler.json',
|
|
377
377
|
'cloudflare:proof': `node ${relativeRootFor(app.directory)}/scripts/proof-cloudflare-version.mts --app ${app.id}`,
|
|
@@ -372,7 +372,7 @@ function createAppPackage(scope, app, packageSource, enableTailwind, remotes = [
|
|
|
372
372
|
scripts: {
|
|
373
373
|
dev: 'modern dev',
|
|
374
374
|
build: app.exposes ? `ULTRAMODERN_ZEPHYR=false modern build && ${publicSurfaceBuildCommand} && node ${relativeRootFor(app.directory)}/scripts/assert-mf-types.mts` : `ULTRAMODERN_ZEPHYR=false modern build && ${publicSurfaceBuildCommand}`,
|
|
375
|
-
'cloudflare:build': `ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern build && ${publicSurfaceCloudflareBuildCommand} && ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy && ${publicSurfaceCloudflareOutputCommand}`,
|
|
375
|
+
'cloudflare:build': `ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern build && ${publicSurfaceCloudflareBuildCommand} && ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy --skip-build && ${publicSurfaceCloudflareOutputCommand}`,
|
|
376
376
|
'cloudflare:deploy': 'ULTRAMODERN_CLOUDFLARE_REQUIRE_PUBLIC_URLS=true pnpm run cloudflare:build && wrangler deploy --config .output/wrangler.json',
|
|
377
377
|
'cloudflare:preview': 'pnpm run cloudflare:build && wrangler dev --config .output/wrangler.json',
|
|
378
378
|
'cloudflare:proof': `node ${relativeRootFor(app.directory)}/scripts/proof-cloudflare-version.mts --app ${app.id}`,
|
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=20"
|
|
23
23
|
},
|
|
24
|
-
"version": "3.5.0-ultramodern.
|
|
24
|
+
"version": "3.5.0-ultramodern.9",
|
|
25
25
|
"types": "./dist/types/index.d.ts",
|
|
26
26
|
"main": "./dist/esm-node/index.js",
|
|
27
27
|
"bin": {
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
"@modern-js/codesmith": "2.6.9",
|
|
78
78
|
"oxfmt": "0.56.0",
|
|
79
79
|
"ultracite": "7.8.3",
|
|
80
|
-
"@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.5.0-ultramodern.
|
|
80
|
+
"@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.5.0-ultramodern.9"
|
|
81
81
|
},
|
|
82
82
|
"devDependencies": {
|
|
83
83
|
"@rslib/core": "0.23.1",
|
|
@@ -99,6 +99,6 @@
|
|
|
99
99
|
"test": "rm -rf dist && rslib build -c rslibconfig.mts && rstest --passWithNoTests"
|
|
100
100
|
},
|
|
101
101
|
"ultramodern": {
|
|
102
|
-
"frameworkVersion": "3.5.0-ultramodern.
|
|
102
|
+
"frameworkVersion": "3.5.0-ultramodern.9"
|
|
103
103
|
}
|
|
104
104
|
}
|
|
@@ -177,8 +177,8 @@ from trusted-publisher metadata to provenance attestations.
|
|
|
177
177
|
For older generated workspaces, run the framework migration command first:
|
|
178
178
|
|
|
179
179
|
```bash
|
|
180
|
-
pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.
|
|
181
|
-
migrate-strict-effect --version 3.5.0-ultramodern.
|
|
180
|
+
pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.9 ultramodern \
|
|
181
|
+
migrate-strict-effect --version 3.5.0-ultramodern.9
|
|
182
182
|
pnpm api:check
|
|
183
183
|
pnpm contract:check
|
|
184
184
|
```
|
|
@@ -1349,6 +1349,22 @@ const extractAssetPrefixExpression = modernConfig => {
|
|
|
1349
1349
|
assert(match?.groups?.expression, 'modern.config.ts must assign assetPrefix');
|
|
1350
1350
|
return match.groups.expression;
|
|
1351
1351
|
};
|
|
1352
|
+
const assertBuildCacheBase = (appId, modernConfig) => {
|
|
1353
|
+
assert(
|
|
1354
|
+
modernConfig.includes("const buildCacheTarget = cloudflareDeployEnabled ? 'cloudflare' : 'web';") &&
|
|
1355
|
+
modernConfig.includes('const buildCacheDirectory = `node_modules/.cache/rspack-${appId}-${buildCacheTarget}`;') &&
|
|
1356
|
+
modernConfig.includes('cacheDirectory: buildCacheDirectory,'),
|
|
1357
|
+
`${appId} must provide a per-app/per-target Rspack cache base directory`,
|
|
1358
|
+
);
|
|
1359
|
+
};
|
|
1360
|
+
const assertCloudflareBuildSkipsDeployRebuild = (appId, packageJson) => {
|
|
1361
|
+
assert(
|
|
1362
|
+
packageJson.scripts?.['cloudflare:build']?.includes(
|
|
1363
|
+
'ULTRAMODERN_ZEPHYR=false MODERNJS_DEPLOY=cloudflare modern deploy --skip-build',
|
|
1364
|
+
),
|
|
1365
|
+
`${appId} cloudflare:build must deploy with --skip-build after the explicit Cloudflare build`,
|
|
1366
|
+
);
|
|
1367
|
+
};
|
|
1352
1368
|
const stripYamlInlineComment = value => {
|
|
1353
1369
|
let quote = undefined;
|
|
1354
1370
|
for (let index = 0; index < value.length; index += 1) {
|
|
@@ -1771,6 +1787,8 @@ assert(shellPackage.dependencies?.['@modern-js/plugin-bff'] === expectedModernPa
|
|
|
1771
1787
|
assert(shellPackage.dependencies?.['@modern-js/plugin-i18n'] === expectedModernPackageSpecifier('@modern-js/plugin-i18n'), 'Shell plugin-i18n dependency must match package source metadata');
|
|
1772
1788
|
assert(shellPackage.dependencies?.['@modern-js/plugin-tanstack'] === expectedModernPackageSpecifier('@modern-js/plugin-tanstack'), 'Shell plugin-tanstack dependency must match package source metadata');
|
|
1773
1789
|
assert(shellPackage.dependencies?.['@modern-js/runtime'] === expectedModernPackageSpecifier('@modern-js/runtime'), 'Shell runtime dependency must match package source metadata');
|
|
1790
|
+
assertBuildCacheBase('shell-super-app', shellModernConfig);
|
|
1791
|
+
assertCloudflareBuildSkipsDeployRebuild('shell-super-app', shellPackage);
|
|
1774
1792
|
const shellContract = generatedContract.apps?.find(app => app.id === 'shell-super-app');
|
|
1775
1793
|
assert(shellContract?.deploy?.cloudflare?.workerName === expectedWorkerName('shell-super-app'), 'Shell Cloudflare workerName is incorrect');
|
|
1776
1794
|
assert(shellContract?.deploy?.cloudflare?.publicUrlEnv === 'ULTRAMODERN_PUBLIC_URL_SHELL_SUPER_APP', 'Shell Cloudflare public URL env is incorrect');
|
|
@@ -1847,6 +1865,8 @@ for (const vertical of fullStackVerticals) {
|
|
|
1847
1865
|
assert(routeMetadata.includes("authoring: 'colocated-route-meta'"), `${vertical.id} route metadata manifest must advertise colocated authoring`);
|
|
1848
1866
|
assert(packageJson.name === vertical.packageName, `${vertical.id} package name is incorrect`);
|
|
1849
1867
|
assert(packageJson.scripts?.['cloudflare:deploy'] === 'ULTRAMODERN_CLOUDFLARE_REQUIRE_PUBLIC_URLS=true pnpm run cloudflare:build && wrangler deploy --config .output/wrangler.json', `${vertical.id} must expose cloudflare:deploy`);
|
|
1868
|
+
assertBuildCacheBase(vertical.id, modernConfig);
|
|
1869
|
+
assertCloudflareBuildSkipsDeployRebuild(vertical.id, packageJson);
|
|
1850
1870
|
assert(packageJson.scripts?.['cloudflare:proof']?.includes(`--app ${vertical.id}`), `${vertical.id} must expose cloudflare:proof`);
|
|
1851
1871
|
assert(packageJson.devDependencies?.['@modern-js/app-tools'] === expectedModernPackageSpecifier('@modern-js/app-tools'), `${vertical.id} app-tools dependency must match package source metadata`);
|
|
1852
1872
|
assert(packageJson.dependencies?.['@modern-js/plugin-bff'] === expectedModernPackageSpecifier('@modern-js/plugin-bff'), `${vertical.id} plugin-bff dependency must match package source metadata`);
|