@bleedingdev/modern-js-create 3.5.0-ultramodern.20 → 3.5.0-ultramodern.22
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 +4 -3
- package/dist/cjs/ultramodern-tooling/commands.cjs +46 -7
- package/dist/cjs/ultramodern-workspace/versions.cjs +2 -2
- package/dist/esm/ultramodern-tooling/commands.js +46 -7
- package/dist/esm/ultramodern-workspace/versions.js +2 -2
- package/dist/esm-node/ultramodern-tooling/commands.js +46 -7
- package/dist/esm-node/ultramodern-workspace/versions.js +2 -2
- package/dist/types/ultramodern-workspace/versions.d.ts +2 -2
- package/package.json +3 -3
- package/template-workspace/pnpm-workspace.yaml.handlebars +2 -0
- package/templates/workspace-scripts/validate-ultramodern-workspace.mjs.handlebars +8 -0
package/README.md
CHANGED
|
@@ -210,9 +210,10 @@ your back. If `pnpm api:check` still fails, migrate the source to
|
|
|
210
210
|
`api/effect`, `api/lambda`, `shared/effect`, and `src/effect` paths.
|
|
211
211
|
|
|
212
212
|
Generated strict Effect workspaces pin the compatible Effect cohort through
|
|
213
|
-
`pnpm-workspace.yaml` overrides: `effect@4.0.0-beta.
|
|
214
|
-
`@effect/
|
|
215
|
-
|
|
213
|
+
`pnpm-workspace.yaml` overrides: `effect@4.0.0-beta.92`,
|
|
214
|
+
`@effect/opentelemetry@4.0.0-beta.92`, and
|
|
215
|
+
`@effect/vitest@4.0.0-beta.92`. The generated pnpm policy also excludes the
|
|
216
|
+
known `effect@4.0.0-beta.92` and `@effect/opentelemetry@4.0.0-beta.92`
|
|
216
217
|
versions from the 24-hour minimum-release-age gate and their trusted-publisher
|
|
217
218
|
to provenance transitions from no-downgrade checks. Do not override those in
|
|
218
219
|
app packages; update the framework cohort when the runtime moves.
|
|
@@ -417,6 +417,32 @@ function ensureYamlMapEntry(source, key, entryKey, value) {
|
|
|
417
417
|
changed: true
|
|
418
418
|
};
|
|
419
419
|
}
|
|
420
|
+
function ensureYamlScalarMapEntry(source, key, entryKey, value) {
|
|
421
|
+
const entryLine = ` ${entryKey}: ${value}`;
|
|
422
|
+
const escapedEntryKey = entryKey.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
423
|
+
const currentEntryPattern = new RegExp(`^ {2}${escapedEntryKey}: .+$`, 'mu');
|
|
424
|
+
const currentEntry = source.match(currentEntryPattern);
|
|
425
|
+
if (currentEntry) {
|
|
426
|
+
if (currentEntry[0] === entryLine) return {
|
|
427
|
+
source,
|
|
428
|
+
changed: false
|
|
429
|
+
};
|
|
430
|
+
return {
|
|
431
|
+
source: source.replace(currentEntryPattern, entryLine),
|
|
432
|
+
changed: true
|
|
433
|
+
};
|
|
434
|
+
}
|
|
435
|
+
const headerPattern = new RegExp(`^${key}:\\n(?:(?: .+\\n)*)`, 'mu');
|
|
436
|
+
const header = source.match(headerPattern);
|
|
437
|
+
if (header) return {
|
|
438
|
+
source: source.replace(headerPattern, `${header[0]}${entryLine}\n`),
|
|
439
|
+
changed: true
|
|
440
|
+
};
|
|
441
|
+
return {
|
|
442
|
+
source: `${source.trimEnd()}\n${key}:\n${entryLine}\n`,
|
|
443
|
+
changed: true
|
|
444
|
+
};
|
|
445
|
+
}
|
|
420
446
|
function removeYamlMapEntry(source, entryKey) {
|
|
421
447
|
const packageName = entryKey.includes('@') ? entryKey.slice(0, entryKey.lastIndexOf('@')) : entryKey;
|
|
422
448
|
const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
@@ -501,21 +527,34 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
|
|
|
501
527
|
[
|
|
502
528
|
/^ {4}'@effect\/vitest>effect': .+$/mu,
|
|
503
529
|
` '@effect/vitest>effect': '${versions_cjs_namespaceObject.EFFECT_VERSION}'`
|
|
530
|
+
]
|
|
531
|
+
];
|
|
532
|
+
for (const [pattern, replacement] of replacements){
|
|
533
|
+
const result = replaceYamlLine(source, pattern, replacement);
|
|
534
|
+
source = result.source;
|
|
535
|
+
changed = result.changed || changed;
|
|
536
|
+
}
|
|
537
|
+
for (const [entryKey, version] of [
|
|
538
|
+
[
|
|
539
|
+
"'@effect/opentelemetry'",
|
|
540
|
+
versions_cjs_namespaceObject.EFFECT_VERSION
|
|
504
541
|
],
|
|
505
542
|
[
|
|
506
|
-
|
|
507
|
-
|
|
543
|
+
"'@effect/vitest'",
|
|
544
|
+
versions_cjs_namespaceObject.EFFECT_VITEST_VERSION
|
|
508
545
|
],
|
|
509
546
|
[
|
|
510
|
-
|
|
511
|
-
|
|
547
|
+
'effect',
|
|
548
|
+
versions_cjs_namespaceObject.EFFECT_VERSION
|
|
512
549
|
]
|
|
513
|
-
]
|
|
514
|
-
|
|
515
|
-
const result = replaceYamlLine(source, pattern, replacement);
|
|
550
|
+
]){
|
|
551
|
+
const result = ensureYamlScalarMapEntry(source, 'overrides', entryKey, version);
|
|
516
552
|
source = result.source;
|
|
517
553
|
changed = result.changed || changed;
|
|
518
554
|
}
|
|
555
|
+
const parcelWatcherBuildPolicy = ensureYamlScalarMapEntry(source, 'allowBuilds', "'@parcel/watcher'", 'true');
|
|
556
|
+
source = parcelWatcherBuildPolicy.source;
|
|
557
|
+
changed = parcelWatcherBuildPolicy.changed || changed;
|
|
519
558
|
for (const item of strictEffectPackageVersionPolicyExclusions){
|
|
520
559
|
const packageName = item.slice(0, item.lastIndexOf('@'));
|
|
521
560
|
const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
@@ -37,8 +37,8 @@ const CLOUDFLARE_COMPATIBILITY_DATE = '2026-06-02';
|
|
|
37
37
|
const TAILWIND_VERSION = '4.3.1';
|
|
38
38
|
const TAILWIND_POSTCSS_VERSION = '4.3.1';
|
|
39
39
|
const POSTCSS_VERSION = '8.5.15';
|
|
40
|
-
const EFFECT_VERSION = '4.0.0-beta.
|
|
41
|
-
const EFFECT_VITEST_VERSION = '4.0.0-beta.
|
|
40
|
+
const EFFECT_VERSION = '4.0.0-beta.92';
|
|
41
|
+
const EFFECT_VITEST_VERSION = '4.0.0-beta.92';
|
|
42
42
|
const EFFECT_TSGO_VERSION = '0.14.6';
|
|
43
43
|
const DRIZZLE_ORM_VERSION = '1.0.0-rc.4';
|
|
44
44
|
const TYPESCRIPT_STABLE_VERSION = '6.0.3';
|
|
@@ -370,6 +370,32 @@ function ensureYamlMapEntry(source, key, entryKey, value) {
|
|
|
370
370
|
changed: true
|
|
371
371
|
};
|
|
372
372
|
}
|
|
373
|
+
function ensureYamlScalarMapEntry(source, key, entryKey, value) {
|
|
374
|
+
const entryLine = ` ${entryKey}: ${value}`;
|
|
375
|
+
const escapedEntryKey = entryKey.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
376
|
+
const currentEntryPattern = new RegExp(`^ {2}${escapedEntryKey}: .+$`, 'mu');
|
|
377
|
+
const currentEntry = source.match(currentEntryPattern);
|
|
378
|
+
if (currentEntry) {
|
|
379
|
+
if (currentEntry[0] === entryLine) return {
|
|
380
|
+
source,
|
|
381
|
+
changed: false
|
|
382
|
+
};
|
|
383
|
+
return {
|
|
384
|
+
source: source.replace(currentEntryPattern, entryLine),
|
|
385
|
+
changed: true
|
|
386
|
+
};
|
|
387
|
+
}
|
|
388
|
+
const headerPattern = new RegExp(`^${key}:\\n(?:(?: .+\\n)*)`, 'mu');
|
|
389
|
+
const header = source.match(headerPattern);
|
|
390
|
+
if (header) return {
|
|
391
|
+
source: source.replace(headerPattern, `${header[0]}${entryLine}\n`),
|
|
392
|
+
changed: true
|
|
393
|
+
};
|
|
394
|
+
return {
|
|
395
|
+
source: `${source.trimEnd()}\n${key}:\n${entryLine}\n`,
|
|
396
|
+
changed: true
|
|
397
|
+
};
|
|
398
|
+
}
|
|
373
399
|
function removeYamlMapEntry(source, entryKey) {
|
|
374
400
|
const packageName = entryKey.includes('@') ? entryKey.slice(0, entryKey.lastIndexOf('@')) : entryKey;
|
|
375
401
|
const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
@@ -454,21 +480,34 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
|
|
|
454
480
|
[
|
|
455
481
|
/^ {4}'@effect\/vitest>effect': .+$/mu,
|
|
456
482
|
` '@effect/vitest>effect': '${EFFECT_VERSION}'`
|
|
483
|
+
]
|
|
484
|
+
];
|
|
485
|
+
for (const [pattern, replacement] of replacements){
|
|
486
|
+
const result = replaceYamlLine(source, pattern, replacement);
|
|
487
|
+
source = result.source;
|
|
488
|
+
changed = result.changed || changed;
|
|
489
|
+
}
|
|
490
|
+
for (const [entryKey, version] of [
|
|
491
|
+
[
|
|
492
|
+
"'@effect/opentelemetry'",
|
|
493
|
+
EFFECT_VERSION
|
|
457
494
|
],
|
|
458
495
|
[
|
|
459
|
-
|
|
460
|
-
|
|
496
|
+
"'@effect/vitest'",
|
|
497
|
+
EFFECT_VITEST_VERSION
|
|
461
498
|
],
|
|
462
499
|
[
|
|
463
|
-
|
|
464
|
-
|
|
500
|
+
'effect',
|
|
501
|
+
EFFECT_VERSION
|
|
465
502
|
]
|
|
466
|
-
]
|
|
467
|
-
|
|
468
|
-
const result = replaceYamlLine(source, pattern, replacement);
|
|
503
|
+
]){
|
|
504
|
+
const result = ensureYamlScalarMapEntry(source, 'overrides', entryKey, version);
|
|
469
505
|
source = result.source;
|
|
470
506
|
changed = result.changed || changed;
|
|
471
507
|
}
|
|
508
|
+
const parcelWatcherBuildPolicy = ensureYamlScalarMapEntry(source, 'allowBuilds', "'@parcel/watcher'", 'true');
|
|
509
|
+
source = parcelWatcherBuildPolicy.source;
|
|
510
|
+
changed = parcelWatcherBuildPolicy.changed || changed;
|
|
472
511
|
for (const item of strictEffectPackageVersionPolicyExclusions){
|
|
473
512
|
const packageName = item.slice(0, item.lastIndexOf('@'));
|
|
474
513
|
const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
@@ -8,8 +8,8 @@ const CLOUDFLARE_COMPATIBILITY_DATE = '2026-06-02';
|
|
|
8
8
|
const TAILWIND_VERSION = '4.3.1';
|
|
9
9
|
const TAILWIND_POSTCSS_VERSION = '4.3.1';
|
|
10
10
|
const POSTCSS_VERSION = '8.5.15';
|
|
11
|
-
const EFFECT_VERSION = '4.0.0-beta.
|
|
12
|
-
const EFFECT_VITEST_VERSION = '4.0.0-beta.
|
|
11
|
+
const EFFECT_VERSION = '4.0.0-beta.92';
|
|
12
|
+
const EFFECT_VITEST_VERSION = '4.0.0-beta.92';
|
|
13
13
|
const EFFECT_TSGO_VERSION = '0.14.6';
|
|
14
14
|
const DRIZZLE_ORM_VERSION = '1.0.0-rc.4';
|
|
15
15
|
const TYPESCRIPT_STABLE_VERSION = '6.0.3';
|
|
@@ -371,6 +371,32 @@ function ensureYamlMapEntry(source, key, entryKey, value) {
|
|
|
371
371
|
changed: true
|
|
372
372
|
};
|
|
373
373
|
}
|
|
374
|
+
function ensureYamlScalarMapEntry(source, key, entryKey, value) {
|
|
375
|
+
const entryLine = ` ${entryKey}: ${value}`;
|
|
376
|
+
const escapedEntryKey = entryKey.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
377
|
+
const currentEntryPattern = new RegExp(`^ {2}${escapedEntryKey}: .+$`, 'mu');
|
|
378
|
+
const currentEntry = source.match(currentEntryPattern);
|
|
379
|
+
if (currentEntry) {
|
|
380
|
+
if (currentEntry[0] === entryLine) return {
|
|
381
|
+
source,
|
|
382
|
+
changed: false
|
|
383
|
+
};
|
|
384
|
+
return {
|
|
385
|
+
source: source.replace(currentEntryPattern, entryLine),
|
|
386
|
+
changed: true
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
const headerPattern = new RegExp(`^${key}:\\n(?:(?: .+\\n)*)`, 'mu');
|
|
390
|
+
const header = source.match(headerPattern);
|
|
391
|
+
if (header) return {
|
|
392
|
+
source: source.replace(headerPattern, `${header[0]}${entryLine}\n`),
|
|
393
|
+
changed: true
|
|
394
|
+
};
|
|
395
|
+
return {
|
|
396
|
+
source: `${source.trimEnd()}\n${key}:\n${entryLine}\n`,
|
|
397
|
+
changed: true
|
|
398
|
+
};
|
|
399
|
+
}
|
|
374
400
|
function removeYamlMapEntry(source, entryKey) {
|
|
375
401
|
const packageName = entryKey.includes('@') ? entryKey.slice(0, entryKey.lastIndexOf('@')) : entryKey;
|
|
376
402
|
const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
@@ -455,21 +481,34 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
|
|
|
455
481
|
[
|
|
456
482
|
/^ {4}'@effect\/vitest>effect': .+$/mu,
|
|
457
483
|
` '@effect/vitest>effect': '${EFFECT_VERSION}'`
|
|
484
|
+
]
|
|
485
|
+
];
|
|
486
|
+
for (const [pattern, replacement] of replacements){
|
|
487
|
+
const result = replaceYamlLine(source, pattern, replacement);
|
|
488
|
+
source = result.source;
|
|
489
|
+
changed = result.changed || changed;
|
|
490
|
+
}
|
|
491
|
+
for (const [entryKey, version] of [
|
|
492
|
+
[
|
|
493
|
+
"'@effect/opentelemetry'",
|
|
494
|
+
EFFECT_VERSION
|
|
458
495
|
],
|
|
459
496
|
[
|
|
460
|
-
|
|
461
|
-
|
|
497
|
+
"'@effect/vitest'",
|
|
498
|
+
EFFECT_VITEST_VERSION
|
|
462
499
|
],
|
|
463
500
|
[
|
|
464
|
-
|
|
465
|
-
|
|
501
|
+
'effect',
|
|
502
|
+
EFFECT_VERSION
|
|
466
503
|
]
|
|
467
|
-
]
|
|
468
|
-
|
|
469
|
-
const result = replaceYamlLine(source, pattern, replacement);
|
|
504
|
+
]){
|
|
505
|
+
const result = ensureYamlScalarMapEntry(source, 'overrides', entryKey, version);
|
|
470
506
|
source = result.source;
|
|
471
507
|
changed = result.changed || changed;
|
|
472
508
|
}
|
|
509
|
+
const parcelWatcherBuildPolicy = ensureYamlScalarMapEntry(source, 'allowBuilds', "'@parcel/watcher'", 'true');
|
|
510
|
+
source = parcelWatcherBuildPolicy.source;
|
|
511
|
+
changed = parcelWatcherBuildPolicy.changed || changed;
|
|
473
512
|
for (const item of strictEffectPackageVersionPolicyExclusions){
|
|
474
513
|
const packageName = item.slice(0, item.lastIndexOf('@'));
|
|
475
514
|
const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
|
|
@@ -9,8 +9,8 @@ const CLOUDFLARE_COMPATIBILITY_DATE = '2026-06-02';
|
|
|
9
9
|
const TAILWIND_VERSION = '4.3.1';
|
|
10
10
|
const TAILWIND_POSTCSS_VERSION = '4.3.1';
|
|
11
11
|
const POSTCSS_VERSION = '8.5.15';
|
|
12
|
-
const EFFECT_VERSION = '4.0.0-beta.
|
|
13
|
-
const EFFECT_VITEST_VERSION = '4.0.0-beta.
|
|
12
|
+
const EFFECT_VERSION = '4.0.0-beta.92';
|
|
13
|
+
const EFFECT_VITEST_VERSION = '4.0.0-beta.92';
|
|
14
14
|
const EFFECT_TSGO_VERSION = '0.14.6';
|
|
15
15
|
const DRIZZLE_ORM_VERSION = '1.0.0-rc.4';
|
|
16
16
|
const TYPESCRIPT_STABLE_VERSION = '6.0.3';
|
|
@@ -13,8 +13,8 @@ export declare const CLOUDFLARE_COMPATIBILITY_DATE = "2026-06-02";
|
|
|
13
13
|
export declare const TAILWIND_VERSION = "4.3.1";
|
|
14
14
|
export declare const TAILWIND_POSTCSS_VERSION = "4.3.1";
|
|
15
15
|
export declare const POSTCSS_VERSION = "8.5.15";
|
|
16
|
-
export declare const EFFECT_VERSION = "4.0.0-beta.
|
|
17
|
-
export declare const EFFECT_VITEST_VERSION = "4.0.0-beta.
|
|
16
|
+
export declare const EFFECT_VERSION = "4.0.0-beta.92";
|
|
17
|
+
export declare const EFFECT_VITEST_VERSION = "4.0.0-beta.92";
|
|
18
18
|
export declare const EFFECT_TSGO_VERSION = "0.14.6";
|
|
19
19
|
export declare const DRIZZLE_ORM_VERSION = "1.0.0-rc.4";
|
|
20
20
|
export declare const TYPESCRIPT_STABLE_VERSION = "6.0.3";
|
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.22",
|
|
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.22"
|
|
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.22"
|
|
103
103
|
}
|
|
104
104
|
}
|
|
@@ -48,11 +48,13 @@ peerDependencyRules:
|
|
|
48
48
|
overrides:
|
|
49
49
|
'@tanstack/react-router': {{tanstackRouterVersion}}
|
|
50
50
|
'@tanstack/router-core': {{tanstackRouterCoreVersion}}
|
|
51
|
+
'@effect/opentelemetry': {{effectVersion}}
|
|
51
52
|
'@effect/vitest': {{effectVitestVersion}}
|
|
52
53
|
effect: {{effectVersion}}
|
|
53
54
|
node-fetch: '{{nodeFetchVersion}}'
|
|
54
55
|
|
|
55
56
|
allowBuilds:
|
|
57
|
+
'@parcel/watcher': true
|
|
56
58
|
'@swc/core': true
|
|
57
59
|
core-js: true
|
|
58
60
|
esbuild: true
|
|
@@ -1582,6 +1582,14 @@ for (const requiredPath of requiredPaths) {
|
|
|
1582
1582
|
assertExists(requiredPath);
|
|
1583
1583
|
}
|
|
1584
1584
|
const pnpmWorkspace = readText('pnpm-workspace.yaml');
|
|
1585
|
+
assert(
|
|
1586
|
+
pnpmWorkspace.includes("'@effect/opentelemetry': {{effectVersion}}"),
|
|
1587
|
+
'pnpm-workspace.yaml must override @effect/opentelemetry to the generated Effect cohort',
|
|
1588
|
+
);
|
|
1589
|
+
assert(
|
|
1590
|
+
pnpmWorkspace.includes('effect: {{effectVersion}}'),
|
|
1591
|
+
'pnpm-workspace.yaml must override effect to the generated Effect cohort',
|
|
1592
|
+
);
|
|
1585
1593
|
assert(
|
|
1586
1594
|
pnpmWorkspace.includes(
|
|
1587
1595
|
"'@module-federation/modern-js-v3@{{moduleFederationVersion}}': patches/@module-federation__modern-js-v3@{{moduleFederationVersion}}.patch",
|