@bleedingdev/modern-js-create 3.2.0-ultramodern.55 → 3.2.0-ultramodern.57
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 +65 -27
- package/package.json +3 -3
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
|
-
'
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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
|
-
'
|
|
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:
|
|
2986
|
-
{ badge: 'explore.recommendations.aiFirst', image:
|
|
2987
|
-
{ badge: 'explore.recommendations.loaderReady', image:
|
|
2988
|
-
{ badge: 'explore.recommendations.vineyard', image:
|
|
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
|
-
|
|
3013
|
-
|
|
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:
|
|
4494
|
+
publicDir: [
|
|
4495
|
+
'./locales',
|
|
4496
|
+
'./assets'
|
|
4497
|
+
],
|
|
4464
4498
|
localisedUrls: createLocalisedUrlsMap(app),
|
|
4465
4499
|
resourceOwnership: {
|
|
4466
4500
|
ownerAppId: app.id,
|
|
@@ -5358,9 +5392,9 @@ main().then(
|
|
|
5358
5392
|
);
|
|
5359
5393
|
`;
|
|
5360
5394
|
}
|
|
5361
|
-
function writeGeneratedWorkspaceScripts(targetDir, scope, enableTailwind) {
|
|
5395
|
+
function writeGeneratedWorkspaceScripts(targetDir, scope, enableTailwind, remotes = remoteApps) {
|
|
5362
5396
|
writeFileReplacing(targetDir, "scripts/assert-mf-types.mjs", createAssertMfTypesScript());
|
|
5363
|
-
writeFileReplacing(targetDir, "scripts/validate-ultramodern-workspace.mjs", createWorkspaceValidationScript(scope, enableTailwind));
|
|
5397
|
+
writeFileReplacing(targetDir, "scripts/validate-ultramodern-workspace.mjs", createWorkspaceValidationScript(scope, enableTailwind, remotes));
|
|
5364
5398
|
writeFileReplacing(targetDir, "scripts/proof-cloudflare-version.mjs", createCloudflareVersionProofScript());
|
|
5365
5399
|
}
|
|
5366
5400
|
function writeApp(targetDir, scope, app, packageSource, enableTailwind) {
|
|
@@ -5583,6 +5617,7 @@ function remoteTopologyEntry(scope, remote) {
|
|
|
5583
5617
|
...effectApiTopologyMetadata(remote) ? {
|
|
5584
5618
|
api: effectApiTopologyMetadata(remote)
|
|
5585
5619
|
} : {},
|
|
5620
|
+
cloudflare: createCloudflareDeployContract(scope, remote),
|
|
5586
5621
|
ownership: remote.ownership
|
|
5587
5622
|
};
|
|
5588
5623
|
}
|
|
@@ -5596,6 +5631,7 @@ function ownershipEntry(scope, owner) {
|
|
|
5596
5631
|
}
|
|
5597
5632
|
function remotesFromTopology(topology, ports) {
|
|
5598
5633
|
return (topology.remotes ?? []).map((remote)=>{
|
|
5634
|
+
const packageSuffix = remote.package?.split('/').at(-1) ?? remote.id;
|
|
5599
5635
|
const effectApi = remote.api?.effect ? {
|
|
5600
5636
|
stem: 'string' == typeof remote.api.effect.basePath ? remote.api.effect.basePath.split('/').filter(Boolean).at(-1) ?? remote.domain ?? String(remote.id).replace(/^remote-/, '') : remote.domain ?? String(remote.id).replace(/^remote-/, ''),
|
|
5601
5637
|
prefix: remote.api.effect.bff?.prefix ?? `/${remote.domain ?? String(remote.id).replace(/^remote-/, '')}-api`,
|
|
@@ -5606,8 +5642,8 @@ function remotesFromTopology(topology, ports) {
|
|
|
5606
5642
|
} : void 0;
|
|
5607
5643
|
return {
|
|
5608
5644
|
id: remote.id,
|
|
5609
|
-
directory: ''
|
|
5610
|
-
packageSuffix
|
|
5645
|
+
directory: 'string' == typeof remote.path ? remote.path : `apps/remotes/${packageSuffix}`,
|
|
5646
|
+
packageSuffix,
|
|
5611
5647
|
displayName: remote.id,
|
|
5612
5648
|
kind: remote.kind ?? 'vertical',
|
|
5613
5649
|
domain: remote.domain ?? String(remote.id).replace(/^remote-/, ''),
|
|
@@ -5681,16 +5717,18 @@ function addUltramodernMicroVertical(options) {
|
|
|
5681
5717
|
writeJsonFile(topologyPath, topology);
|
|
5682
5718
|
writeJsonFile(ownershipPath, ownership);
|
|
5683
5719
|
writeJsonFile(overlayPath, overlay);
|
|
5720
|
+
const updatedRemotes = remotesFromTopology(topology, overlay.ports);
|
|
5684
5721
|
writeJsonFile(node_path.join(options.workspaceRoot, GENERATED_CONTRACT_PATH), createGeneratedContract(scope, [
|
|
5685
5722
|
{
|
|
5686
5723
|
...shellApp,
|
|
5687
|
-
remoteRefs:
|
|
5724
|
+
remoteRefs: updatedRemotes.map((remote)=>remote.id)
|
|
5688
5725
|
},
|
|
5689
|
-
...
|
|
5726
|
+
...updatedRemotes
|
|
5690
5727
|
], enableTailwind));
|
|
5691
5728
|
const shellConfigPath = node_path.join(options.workspaceRoot, `${shellApp.directory}/module-federation.config.ts`);
|
|
5692
|
-
writeFileReplacing(options.workspaceRoot, `${shellApp.directory}/module-federation.config.ts`, createShellModuleFederationConfig(
|
|
5729
|
+
writeFileReplacing(options.workspaceRoot, `${shellApp.directory}/module-federation.config.ts`, createShellModuleFederationConfig(updatedRemotes));
|
|
5693
5730
|
if (!node_fs.existsSync(shellConfigPath)) throw new Error('Shell Module Federation config was not regenerated');
|
|
5731
|
+
writeGeneratedWorkspaceScripts(options.workspaceRoot, scope, enableTailwind, updatedRemotes);
|
|
5694
5732
|
addShellZephyrDependency(options.workspaceRoot, scope, remote);
|
|
5695
5733
|
addShellWorkspaceDependency(options.workspaceRoot, scope, remote);
|
|
5696
5734
|
addRootDevScript(options.workspaceRoot, scope, remote.packageSuffix, name);
|
package/package.json
CHANGED
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"engines": {
|
|
22
22
|
"node": ">=20"
|
|
23
23
|
},
|
|
24
|
-
"version": "3.2.0-ultramodern.
|
|
24
|
+
"version": "3.2.0-ultramodern.57",
|
|
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.
|
|
44
|
+
"@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.2.0-ultramodern.57"
|
|
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.
|
|
57
|
+
"frameworkVersion": "3.2.0-ultramodern.57"
|
|
58
58
|
}
|
|
59
59
|
}
|