@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 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.5 ultramodern \
197
- migrate-strict-effect --version 3.5.0-ultramodern.5
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.5",
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.5"
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.5"
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.5 ultramodern \
181
- migrate-strict-effect --version 3.5.0-ultramodern.5
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`);