@bleedingdev/modern-js-create 3.2.0-ultramodern.54 → 3.2.0-ultramodern.56

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/dist/index.js CHANGED
@@ -1507,6 +1507,7 @@ ${bffConfig} output: {
1507
1507
  localisedUrls: ultramodernLocalisedUrls as Record<string, Record<string, string>>,
1508
1508
  ignoreRedirectRoutes: [
1509
1509
  '/@mf-types',
1510
+ '/assets',
1510
1511
  '/bundles',
1511
1512
  '${effectApiPrefix(app)}',
1512
1513
  '/locales',
@@ -1547,7 +1548,7 @@ ${bffPluginEntry} moduleFederationPlugin(),
1547
1548
  : {}),
1548
1549
  server: {
1549
1550
  port,
1550
- publicDir: './locales',
1551
+ publicDir: ['./locales', './assets'],
1551
1552
  ssr: {
1552
1553
  mode: 'stream',
1553
1554
  moduleFederationAppSSR: true,
@@ -2144,35 +2145,66 @@ function createCommerceAssetSvg(title, palette) {
2144
2145
  </svg>
2145
2146
  `;
2146
2147
  }
2148
+ const commerceAssetPublicRoot = 'assets/ultramodern';
2149
+ function commerceAssetPublicPath(filename) {
2150
+ return `${commerceAssetPublicRoot}/${filename}`;
2151
+ }
2152
+ function commerceAssetUrl(filename) {
2153
+ return `/${commerceAssetPublicRoot}/${filename}`;
2154
+ }
2147
2155
  function commerceAssetsForApp(app) {
2148
2156
  if ('shell' === app.kind) return {
2149
- 'src/assets/hero-field.svg': createCommerceAssetSvg('Tractor crossing cultivated fields', {
2157
+ [commerceAssetPublicPath('hero-field.svg')]: createCommerceAssetSvg('Tractor crossing cultivated fields', {
2150
2158
  accent: '#d6b85d',
2151
2159
  ground: '#84ad58',
2152
2160
  sky: '#9fd6e8',
2153
2161
  tractor: '#005f73'
2162
+ }),
2163
+ [commerceAssetPublicPath('autonomy.svg')]: createCommerceAssetSvg('Autonomous tractor concept', {
2164
+ accent: '#c26a2e',
2165
+ ground: '#668f55',
2166
+ sky: '#d5e7de',
2167
+ tractor: '#f2a51a'
2168
+ }),
2169
+ [commerceAssetPublicPath('field-loader.svg')]: createCommerceAssetSvg('Field Loader 112 tractor', {
2170
+ accent: '#d6b85d',
2171
+ ground: '#84ad58',
2172
+ sky: '#9fd6e8',
2173
+ tractor: '#00624b'
2174
+ }),
2175
+ [commerceAssetPublicPath('orchard.svg')]: createCommerceAssetSvg('Orchard tractor between tight rows', {
2176
+ accent: '#b45b2d',
2177
+ ground: '#6f9b4a',
2178
+ sky: '#c9ebff',
2179
+ tractor: '#1d5d9b'
2180
+ }),
2181
+ [commerceAssetPublicPath('vineyard.svg')]: createCommerceAssetSvg('Vineyard narrow tractor', {
2182
+ accent: '#b88d58',
2183
+ ground: '#5e8a45',
2184
+ sky: '#f1dcb9',
2185
+ tractor: '#914d76'
2154
2186
  })
2155
2187
  };
2156
2188
  if ('remote-explore' === app.id) return {
2157
- 'src/assets/autonomy.svg': createCommerceAssetSvg('Autonomous tractor concept', {
2189
+ [commerceAssetPublicPath('autonomy.svg')]: createCommerceAssetSvg('Autonomous tractor concept', {
2158
2190
  accent: '#c26a2e',
2159
2191
  ground: '#668f55',
2160
2192
  sky: '#d5e7de',
2161
2193
  tractor: '#f2a51a'
2162
2194
  }),
2163
- 'src/assets/field-loader.svg': createCommerceAssetSvg('Field Loader 112 tractor', {
2195
+ [commerceAssetPublicPath('field-loader.svg')]: createCommerceAssetSvg('Field Loader 112 tractor', {
2164
2196
  accent: '#d6b85d',
2165
2197
  ground: '#84ad58',
2166
2198
  sky: '#9fd6e8',
2167
2199
  tractor: '#00624b'
2168
2200
  }),
2169
- 'src/assets/orchard.svg': createCommerceAssetSvg('Orchard tractor between tight rows', {
2201
+ [commerceAssetPublicPath('orchard.svg')]: createCommerceAssetSvg('Orchard tractor between tight rows', {
2170
2202
  accent: '#b45b2d',
2171
2203
  ground: '#6f9b4a',
2172
2204
  sky: '#c9ebff',
2173
2205
  tractor: '#1d5d9b'
2174
2206
  }),
2175
- 'src/assets/vineyard.svg': createCommerceAssetSvg('Vineyard narrow tractor', {
2207
+ [commerceAssetPublicPath('vineyard.svg')]: createCommerceAssetSvg('Vineyard narrow tractor', {
2176
2208
  accent: '#b88d58',
2177
2209
  ground: '#5e8a45',
2178
2210
  sky: '#f1dcb9',
@@ -2180,7 +2212,7 @@ function commerceAssetsForApp(app) {
2180
2212
  })
2181
2213
  };
2182
2214
  if ('remote-decide' === app.id) return {
2183
- 'src/assets/field-loader.svg': createCommerceAssetSvg('Field Loader 112 tractor detail', {
2215
+ [commerceAssetPublicPath('field-loader.svg')]: createCommerceAssetSvg('Field Loader 112 tractor detail', {
2184
2216
  accent: '#d6b85d',
2185
2217
  ground: '#84ad58',
2186
2218
  sky: '#9fd6e8',
@@ -2343,12 +2375,13 @@ function createShellPage() {
2343
2375
  return `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
2344
2376
  import { Helmet } from '@modern-js/runtime/head';
2345
2377
  import { useLocation } from '@modern-js/plugin-tanstack/runtime';
2346
- import heroField from '../../assets/hero-field.svg';
2347
2378
  import ShellFrame from '../shell-frame';
2348
2379
  import { StorePicker } from '../remote-components';
2349
2380
  import { ultramodernLocalisedUrls } from '../ultramodern-route-metadata';
2350
2381
  import { ultramodernUiMarker } from '../../ultramodern-build';
2351
2382
 
2383
+ const heroField = '${commerceAssetUrl('hero-field.svg')}';
2384
+
2352
2385
  ${createLocalizedHeadComponent()}
2353
2386
  export default function ShellHome() {
2354
2387
  const { i18nInstance, language } = useModernI18n();
@@ -2976,16 +3009,12 @@ export default function Header() {
2976
3009
  }
2977
3010
  `;
2978
3011
  if ('remote-explore' === app.id && './Recommendations' === expose) return `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
2979
- import autonomyImage from '../assets/autonomy.svg';
2980
- import fieldLoaderImage from '../assets/field-loader.svg';
2981
- import orchardImage from '../assets/orchard.svg';
2982
- import vineyardImage from '../assets/vineyard.svg';
2983
3012
 
2984
3013
  const tractors = [
2985
- { badge: 'explore.recommendations.bestRows', image: orchardImage, name: 'Orchard Tractor', slug: 'orchard-tractor' },
2986
- { badge: 'explore.recommendations.aiFirst', image: autonomyImage, name: 'Autonomy Retrofit Kit', slug: 'autonomy-retrofit-kit' },
2987
- { badge: 'explore.recommendations.loaderReady', image: fieldLoaderImage, name: 'Field Loader 112', slug: 'field-loader-112' },
2988
- { badge: 'explore.recommendations.vineyard', image: vineyardImage, name: 'Vineyard Narrow 80', slug: 'vineyard-narrow-80' },
3014
+ { badge: 'explore.recommendations.bestRows', image: '${commerceAssetUrl('orchard.svg')}', name: 'Orchard Tractor', slug: 'orchard-tractor' },
3015
+ { badge: 'explore.recommendations.aiFirst', image: '${commerceAssetUrl('autonomy.svg')}', name: 'Autonomy Retrofit Kit', slug: 'autonomy-retrofit-kit' },
3016
+ { badge: 'explore.recommendations.loaderReady', image: '${commerceAssetUrl('field-loader.svg')}', name: 'Field Loader 112', slug: 'field-loader-112' },
3017
+ { badge: 'explore.recommendations.vineyard', image: '${commerceAssetUrl('vineyard.svg')}', name: 'Vineyard Narrow 80', slug: 'vineyard-narrow-80' },
2989
3018
  ] as const;
2990
3019
 
2991
3020
  export default function Recommendations() {
@@ -3009,8 +3038,9 @@ export default function Recommendations() {
3009
3038
  }
3010
3039
  `;
3011
3040
  if ('remote-explore' === app.id && './StorePicker' === expose) return `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
3012
- import fieldLoaderImage from '../assets/field-loader.svg';
3013
- import vineyardImage from '../assets/vineyard.svg';
3041
+
3042
+ const fieldLoaderImage = '${commerceAssetUrl('field-loader.svg')}';
3043
+ const vineyardImage = '${commerceAssetUrl('vineyard.svg')}';
3014
3044
 
3015
3045
  export default function StorePicker() {
3016
3046
  const { i18nInstance } = useModernI18n();
@@ -3042,9 +3072,10 @@ export default function StorePicker() {
3042
3072
  if ('./Widget' === expose) return createRemoteWidget(app);
3043
3073
  const componentName = `${toPascalCase(app.domain ?? app.id)}${toPascalCase(expose.replace(/^\.\//u, ''))}`;
3044
3074
  if ('remote-decide' === app.id && './ProductPage' === expose) return `import { useModernI18n } from '@modern-js/plugin-i18n/runtime';
3045
- import fieldLoaderImage from '../assets/field-loader.svg';
3046
3075
  import { AddToCart, Recommendations } from './remote-components';
3047
3076
 
3077
+ const fieldLoaderImage = '${commerceAssetUrl('field-loader.svg')}';
3078
+
3048
3079
  export default function ${componentName}() {
3049
3080
  const { i18nInstance } = useModernI18n();
3050
3081
  const t = i18nInstance['t'].bind(i18nInstance);
@@ -4460,7 +4491,10 @@ function createAppGeneratedContract(scope, app, apps, enableTailwind) {
4460
4491
  appI18nNamespace(app),
4461
4492
  'translation'
4462
4493
  ],
4463
- publicDir: './locales',
4494
+ publicDir: [
4495
+ './locales',
4496
+ './assets'
4497
+ ],
4464
4498
  localisedUrls: createLocalisedUrlsMap(app),
4465
4499
  resourceOwnership: {
4466
4500
  ownerAppId: app.id,
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "engines": {
22
22
  "node": ">=20"
23
23
  },
24
- "version": "3.2.0-ultramodern.54",
24
+ "version": "3.2.0-ultramodern.56",
25
25
  "types": "./dist/types/index.d.ts",
26
26
  "main": "./dist/index.js",
27
27
  "bin": {
@@ -41,7 +41,7 @@
41
41
  "@types/node": "^25.9.1",
42
42
  "@typescript/native-preview": "7.0.0-dev.20260527.2",
43
43
  "tsx": "^4.22.3",
44
- "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.2.0-ultramodern.54"
44
+ "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.2.0-ultramodern.56"
45
45
  },
46
46
  "publishConfig": {
47
47
  "registry": "https://registry.npmjs.org/",
@@ -54,6 +54,6 @@
54
54
  "start": "node ./dist/index.js"
55
55
  },
56
56
  "ultramodern": {
57
- "frameworkVersion": "3.2.0-ultramodern.54"
57
+ "frameworkVersion": "3.2.0-ultramodern.56"
58
58
  }
59
59
  }
@@ -1,13 +1,6 @@
1
1
  minimumReleaseAge: 1440
2
2
  minimumReleaseAgeStrict: true
3
3
  minimumReleaseAgeIgnoreMissingTime: false
4
- minimumReleaseAgeExclude:
5
- - '@modern-js/*'
6
- - '@bleedingdev/*'
7
- - '@effect/tsgo'
8
- - '@effect/tsgo-*'
9
- - '@typescript/native-preview'
10
- - '@typescript/native-preview-*'
11
4
  trustPolicy: no-downgrade
12
5
  trustPolicyIgnoreAfter: 1440
13
6
  blockExoticSubdeps: true
@@ -321,18 +321,8 @@ if (readPnpmConfig('minimumReleaseAgeIgnoreMissingTime') !== false) {
321
321
  console.error('pnpm minimumReleaseAgeIgnoreMissingTime must be false');
322
322
  process.exit(1);
323
323
  }
324
- if (
325
- JSON.stringify(readPnpmConfig('minimumReleaseAgeExclude')) !==
326
- JSON.stringify([
327
- '@modern-js/*',
328
- '@bleedingdev/*',
329
- '@effect/tsgo',
330
- '@effect/tsgo-*',
331
- '@typescript/native-preview',
332
- '@typescript/native-preview-*',
333
- ])
334
- ) {
335
- console.error('pnpm minimumReleaseAgeExclude must retain framework exceptions');
324
+ if (readPnpmConfig('minimumReleaseAgeExclude') !== undefined) {
325
+ console.error('pnpm minimumReleaseAgeExclude must stay unset');
336
326
  process.exit(1);
337
327
  }
338
328
  if (readPnpmConfig('trustPolicy') !== 'no-downgrade') {