@bleedingdev/modern-js-create 3.2.0-ultramodern.40 → 3.2.0-ultramodern.41
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
|
@@ -4676,7 +4676,7 @@ function createTemplateManifest(modernVersion, packageSource) {
|
|
|
4676
4676
|
'provenance-present'
|
|
4677
4677
|
],
|
|
4678
4678
|
materializationValidation: [
|
|
4679
|
-
'path-boundary-
|
|
4679
|
+
'path-boundary-policy',
|
|
4680
4680
|
'path-boundary-denylist',
|
|
4681
4681
|
'no-path-traversal',
|
|
4682
4682
|
'no-absolute-paths',
|
|
@@ -5377,23 +5377,13 @@ function writeApp(targetDir, scope, app, packageSource, enableTailwind) {
|
|
|
5377
5377
|
writeFile(targetDir, `${app.directory}/module-federation.config.ts`, 'shell' === app.kind ? createShellModuleFederationConfig() : createRemoteModuleFederationConfig(app));
|
|
5378
5378
|
writeFile(targetDir, `${app.directory}/src/routes/layout.tsx`, createLayout(app.id));
|
|
5379
5379
|
writeFile(targetDir, `${app.directory}/src/routes/[lang]/page.tsx`, 'shell' === app.kind ? createShellPage() : createRemotePage(app));
|
|
5380
|
-
for (const route of createRouteOwnedI18nPaths(app))
|
|
5381
|
-
if ('/' === route.canonicalPath || 'shell' === app.kind) continue;
|
|
5382
|
-
const routePaths = new Set([
|
|
5383
|
-
route.canonicalPath,
|
|
5384
|
-
...Object.values(route.localisedPaths)
|
|
5385
|
-
]);
|
|
5386
|
-
for (const routePath of routePaths)if ('/' !== routePath) writeFile(targetDir, createRoutePageFilePath(app, routePath), createRouteAliasPage(routePath));
|
|
5387
|
-
}
|
|
5380
|
+
for (const route of createRouteOwnedI18nPaths(app))if ('/' !== route.canonicalPath && 'shell' !== app.kind) writeFile(targetDir, createRoutePageFilePath(app, route.canonicalPath), createRouteAliasPage(route.canonicalPath));
|
|
5388
5381
|
if ('shell' === app.kind) {
|
|
5389
5382
|
writeFile(targetDir, `${app.directory}/src/routes/remote-components.tsx`, createShellRemoteComponents());
|
|
5390
5383
|
writeFile(targetDir, `${app.directory}/src/effect/recommendations-client.ts`, createShellEffectClient(scope));
|
|
5391
5384
|
writeFile(targetDir, `${app.directory}/src/routes/[lang]/tractors/page.tsx`, createShellTractorsPage());
|
|
5392
|
-
writeFile(targetDir, `${app.directory}/src/routes/[lang]/traktory/page.tsx`, createShellTractorsPage());
|
|
5393
5385
|
writeFile(targetDir, `${app.directory}/src/routes/[lang]/tractors/[slug]/page.tsx`, createShellProductPage());
|
|
5394
|
-
writeFile(targetDir, `${app.directory}/src/routes/[lang]/traktory/[slug]/page.tsx`, createShellProductPage());
|
|
5395
5386
|
writeFile(targetDir, `${app.directory}/src/routes/[lang]/cart/page.tsx`, createShellCartPage());
|
|
5396
|
-
writeFile(targetDir, `${app.directory}/src/routes/[lang]/kosik/page.tsx`, createShellCartPage());
|
|
5397
5387
|
}
|
|
5398
5388
|
if (appHasEffectApi(app)) {
|
|
5399
5389
|
writeFile(targetDir, `${app.directory}/shared/effect/api.ts`, createEffectSharedApi(app));
|
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.41",
|
|
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.41"
|
|
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.41"
|
|
58
58
|
}
|
|
59
59
|
}
|
|
@@ -36,7 +36,7 @@ ScriptedAlchemy/TechsioCZ skills are private and are cloned only when the curren
|
|
|
36
36
|
pnpm skills:install
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
The installer copies only the
|
|
39
|
+
The installer copies only the pinned private skills from `.agents/skills-lock.json`: `plan-graph`, `dag`, `subagent-graph`, `helm`, and `debugger-mode`.
|
|
40
40
|
|
|
41
41
|
## Agent Reference Repositories
|
|
42
42
|
|
|
@@ -58,4 +58,4 @@ Agents may read files under `repos/` to understand upstream patterns, APIs, and
|
|
|
58
58
|
|
|
59
59
|
## Skill Provenance
|
|
60
60
|
|
|
61
|
-
The vendored Rstack skills, public Module Federation skill, and private TechsioCZ skill
|
|
61
|
+
The vendored Rstack skills, public Module Federation skill, and private TechsioCZ skill set are pinned in `.agents/skills-lock.json`. Do not update, remove, or replace them casually. If a skill needs updating, update the lock file and run `pnpm check`.
|
|
@@ -4,22 +4,7 @@ packages:
|
|
|
4
4
|
- services/*
|
|
5
5
|
- packages/*
|
|
6
6
|
|
|
7
|
-
minimumReleaseAge:
|
|
8
|
-
minimumReleaseAgeStrict: true
|
|
9
|
-
minimumReleaseAgeIgnoreMissingTime: false
|
|
10
|
-
minimumReleaseAgeExclude:
|
|
11
|
-
- '@modern-js/*'
|
|
12
|
-
- '@bleedingdev/*'
|
|
13
|
-
- '@effect/tsgo'
|
|
14
|
-
- '@effect/tsgo-*'
|
|
15
|
-
- '@typescript/native-preview'
|
|
16
|
-
- '@typescript/native-preview-*'
|
|
17
|
-
- '@cloudflare/*'
|
|
18
|
-
- miniflare
|
|
19
|
-
- workerd
|
|
20
|
-
- wrangler
|
|
21
|
-
trustPolicy: no-downgrade
|
|
22
|
-
trustPolicyIgnoreAfter: 1440
|
|
7
|
+
minimumReleaseAge: 0
|
|
23
8
|
blockExoticSubdeps: true
|
|
24
9
|
engineStrict: true
|
|
25
10
|
pmOnFail: error
|
|
@@ -244,30 +244,18 @@ assert(
|
|
|
244
244
|
JSON.stringify(['apps/*', 'apps/remotes/*', 'services/*', 'packages/*']),
|
|
245
245
|
'pnpm-workspace.yaml must retain workspace package globs',
|
|
246
246
|
);
|
|
247
|
-
assert(readPnpmConfig('minimumReleaseAge') ===
|
|
248
|
-
assert(readPnpmConfig('minimumReleaseAgeStrict') ===
|
|
249
|
-
assert(
|
|
250
|
-
readPnpmConfig('minimumReleaseAgeIgnoreMissingTime') ===
|
|
251
|
-
'pnpm minimumReleaseAgeIgnoreMissingTime must
|
|
252
|
-
);
|
|
253
|
-
assert(
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
'@effect/tsgo-*',
|
|
260
|
-
'@typescript/native-preview',
|
|
261
|
-
'@typescript/native-preview-*',
|
|
262
|
-
'@cloudflare/*',
|
|
263
|
-
'miniflare',
|
|
264
|
-
'workerd',
|
|
265
|
-
'wrangler',
|
|
266
|
-
]),
|
|
267
|
-
'pnpm minimumReleaseAgeExclude must retain framework and Cloudflare exceptions',
|
|
268
|
-
);
|
|
269
|
-
assert(readPnpmConfig('trustPolicy') === 'no-downgrade', 'pnpm trustPolicy must be no-downgrade');
|
|
270
|
-
assert(readPnpmConfig('trustPolicyIgnoreAfter') === 1440, 'pnpm trustPolicyIgnoreAfter must be 1440');
|
|
247
|
+
assert(readPnpmConfig('minimumReleaseAge') === 0, 'pnpm minimumReleaseAge must be 0');
|
|
248
|
+
assert(readPnpmConfig('minimumReleaseAgeStrict') === undefined, 'pnpm minimumReleaseAgeStrict must stay unset');
|
|
249
|
+
assert(
|
|
250
|
+
readPnpmConfig('minimumReleaseAgeIgnoreMissingTime') === undefined,
|
|
251
|
+
'pnpm minimumReleaseAgeIgnoreMissingTime must stay unset',
|
|
252
|
+
);
|
|
253
|
+
assert(
|
|
254
|
+
readPnpmConfig('minimumReleaseAgeExclude') === undefined,
|
|
255
|
+
'pnpm minimumReleaseAgeExclude must stay unset',
|
|
256
|
+
);
|
|
257
|
+
assert(readPnpmConfig('trustPolicy') === undefined, 'pnpm trustPolicy must stay unset');
|
|
258
|
+
assert(readPnpmConfig('trustPolicyIgnoreAfter') === undefined, 'pnpm trustPolicyIgnoreAfter must stay unset');
|
|
271
259
|
assert(readPnpmConfig('blockExoticSubdeps') === true, 'pnpm blockExoticSubdeps must be true');
|
|
272
260
|
assert(readPnpmConfig('engineStrict') === true, 'pnpm engineStrict must be true');
|
|
273
261
|
assert(readPnpmConfig('pmOnFail') === 'error', 'pnpm pmOnFail must be error');
|
|
@@ -492,7 +480,7 @@ assert(
|
|
|
492
480
|
for (const skillName of privateAgentSkills) {
|
|
493
481
|
assert(
|
|
494
482
|
privateSource.baseline?.some((skill) => skill.name === skillName),
|
|
495
|
-
`Agent skills lock must
|
|
483
|
+
`Agent skills lock must pin private skill ${skillName}`,
|
|
496
484
|
);
|
|
497
485
|
}
|
|
498
486
|
|
|
@@ -926,7 +914,7 @@ assert(
|
|
|
926
914
|
privateAgentSkills.every((skillName) =>
|
|
927
915
|
manifest.agentSkills?.privateSource?.baseline?.includes(skillName),
|
|
928
916
|
),
|
|
929
|
-
'Template manifest must list every private agent skill
|
|
917
|
+
'Template manifest must list every pinned private agent skill entry',
|
|
930
918
|
);
|
|
931
919
|
assert(
|
|
932
920
|
manifest.validation?.expectedCommands?.includes('mise exec -- pnpm run ultramodern:check'),
|