@bleedingdev/modern-js-create 3.5.0-ultramodern.3 → 3.5.0-ultramodern.4

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.3 ultramodern \
197
- migrate-strict-effect --version 3.5.0-ultramodern.3
196
+ pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.4 ultramodern \
197
+ migrate-strict-effect --version 3.5.0-ultramodern.4
198
198
  pnpm api:check
199
199
  pnpm contract:check
200
200
  pnpm check
@@ -212,9 +212,10 @@ your back. If `pnpm api:check` still fails, migrate the source to
212
212
  Generated strict Effect workspaces pin the compatible Effect cohort through
213
213
  `pnpm-workspace.yaml` overrides: `effect@4.0.0-beta.91` and
214
214
  `@effect/vitest@4.0.0-beta.91`. The generated pnpm policy also excludes the
215
- known `@effect/opentelemetry@4.0.0-beta.91` trusted-publisher to provenance
216
- transition from no-downgrade checks. Do not override those in app packages;
217
- update the framework cohort when the runtime moves.
215
+ known `effect@4.0.0-beta.91` and `@effect/opentelemetry@4.0.0-beta.91`
216
+ trusted-publisher to provenance transitions from no-downgrade checks. Do not
217
+ override those in app packages; update the framework cohort when the runtime
218
+ moves.
218
219
 
219
220
  Use `--ultramodern-package-source=install` for published cohort proof and pin a
220
221
  specific release with `--ultramodern-package-version` when CI must prove an
@@ -229,6 +229,10 @@ const generatedToolingDependencyPins = new Map([
229
229
  versions_cjs_namespaceObject.ZEPHYR_RSPACK_PLUGIN_VERSION
230
230
  ]
231
231
  ]);
232
+ const strictEffectTrustPolicyExclusions = [
233
+ `effect@${versions_cjs_namespaceObject.EFFECT_VERSION}`,
234
+ `@effect/opentelemetry@${versions_cjs_namespaceObject.EFFECT_VERSION}`
235
+ ];
232
236
  function updateGeneratedToolingDependencies(packageJson) {
233
237
  let changed = false;
234
238
  for (const section of [
@@ -360,10 +364,6 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
360
364
  [
361
365
  /^ {2}effect: .+$/mu,
362
366
  ` effect: ${versions_cjs_namespaceObject.EFFECT_VERSION}`
363
- ],
364
- [
365
- /^ {2}- '@effect\/opentelemetry@[^']+'$/mu,
366
- ` - '@effect/opentelemetry@${versions_cjs_namespaceObject.EFFECT_VERSION}'`
367
367
  ]
368
368
  ];
369
369
  for (const [pattern, replacement] of replacements){
@@ -371,9 +371,16 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
371
371
  source = result.source;
372
372
  changed = result.changed || changed;
373
373
  }
374
- const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', `@effect/opentelemetry@${versions_cjs_namespaceObject.EFFECT_VERSION}`);
375
- source = trustPolicyExclude.source;
376
- changed = trustPolicyExclude.changed || changed;
374
+ for (const item of strictEffectTrustPolicyExclusions){
375
+ const packageName = item.slice(0, item.lastIndexOf('@'));
376
+ const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
377
+ const currentVersion = replaceYamlLine(source, new RegExp(`^ {2}- '${escapedPackageName}@[^']+'$`, 'mu'), ` - '${item}'`);
378
+ source = currentVersion.source;
379
+ changed = currentVersion.changed || changed;
380
+ const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', item);
381
+ source = trustPolicyExclude.source;
382
+ changed = trustPolicyExclude.changed || changed;
383
+ }
377
384
  if (changed) external_node_fs_default().writeFileSync(workspaceFile, source, 'utf-8');
378
385
  return changed;
379
386
  }
@@ -182,6 +182,10 @@ const generatedToolingDependencyPins = new Map([
182
182
  ZEPHYR_RSPACK_PLUGIN_VERSION
183
183
  ]
184
184
  ]);
185
+ const strictEffectTrustPolicyExclusions = [
186
+ `effect@${EFFECT_VERSION}`,
187
+ `@effect/opentelemetry@${EFFECT_VERSION}`
188
+ ];
185
189
  function updateGeneratedToolingDependencies(packageJson) {
186
190
  let changed = false;
187
191
  for (const section of [
@@ -313,10 +317,6 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
313
317
  [
314
318
  /^ {2}effect: .+$/mu,
315
319
  ` effect: ${EFFECT_VERSION}`
316
- ],
317
- [
318
- /^ {2}- '@effect\/opentelemetry@[^']+'$/mu,
319
- ` - '@effect/opentelemetry@${EFFECT_VERSION}'`
320
320
  ]
321
321
  ];
322
322
  for (const [pattern, replacement] of replacements){
@@ -324,9 +324,16 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
324
324
  source = result.source;
325
325
  changed = result.changed || changed;
326
326
  }
327
- const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', `@effect/opentelemetry@${EFFECT_VERSION}`);
328
- source = trustPolicyExclude.source;
329
- changed = trustPolicyExclude.changed || changed;
327
+ for (const item of strictEffectTrustPolicyExclusions){
328
+ const packageName = item.slice(0, item.lastIndexOf('@'));
329
+ const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
330
+ const currentVersion = replaceYamlLine(source, new RegExp(`^ {2}- '${escapedPackageName}@[^']+'$`, 'mu'), ` - '${item}'`);
331
+ source = currentVersion.source;
332
+ changed = currentVersion.changed || changed;
333
+ const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', item);
334
+ source = trustPolicyExclude.source;
335
+ changed = trustPolicyExclude.changed || changed;
336
+ }
330
337
  if (changed) node_fs.writeFileSync(workspaceFile, source, 'utf-8');
331
338
  return changed;
332
339
  }
@@ -183,6 +183,10 @@ const generatedToolingDependencyPins = new Map([
183
183
  ZEPHYR_RSPACK_PLUGIN_VERSION
184
184
  ]
185
185
  ]);
186
+ const strictEffectTrustPolicyExclusions = [
187
+ `effect@${EFFECT_VERSION}`,
188
+ `@effect/opentelemetry@${EFFECT_VERSION}`
189
+ ];
186
190
  function updateGeneratedToolingDependencies(packageJson) {
187
191
  let changed = false;
188
192
  for (const section of [
@@ -314,10 +318,6 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
314
318
  [
315
319
  /^ {2}effect: .+$/mu,
316
320
  ` effect: ${EFFECT_VERSION}`
317
- ],
318
- [
319
- /^ {2}- '@effect\/opentelemetry@[^']+'$/mu,
320
- ` - '@effect/opentelemetry@${EFFECT_VERSION}'`
321
321
  ]
322
322
  ];
323
323
  for (const [pattern, replacement] of replacements){
@@ -325,9 +325,16 @@ function updateGeneratedPnpmWorkspacePolicy(workspaceRoot) {
325
325
  source = result.source;
326
326
  changed = result.changed || changed;
327
327
  }
328
- const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', `@effect/opentelemetry@${EFFECT_VERSION}`);
329
- source = trustPolicyExclude.source;
330
- changed = trustPolicyExclude.changed || changed;
328
+ for (const item of strictEffectTrustPolicyExclusions){
329
+ const packageName = item.slice(0, item.lastIndexOf('@'));
330
+ const escapedPackageName = packageName.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&');
331
+ const currentVersion = replaceYamlLine(source, new RegExp(`^ {2}- '${escapedPackageName}@[^']+'$`, 'mu'), ` - '${item}'`);
332
+ source = currentVersion.source;
333
+ changed = currentVersion.changed || changed;
334
+ const trustPolicyExclude = ensureYamlListItem(source, 'trustPolicyExclude', item);
335
+ source = trustPolicyExclude.source;
336
+ changed = trustPolicyExclude.changed || changed;
337
+ }
331
338
  if (changed) node_fs.writeFileSync(workspaceFile, source, 'utf-8');
332
339
  return changed;
333
340
  }
package/package.json CHANGED
@@ -21,7 +21,7 @@
21
21
  "engines": {
22
22
  "node": ">=20"
23
23
  },
24
- "version": "3.5.0-ultramodern.3",
24
+ "version": "3.5.0-ultramodern.4",
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.3"
80
+ "@modern-js/i18n-utils": "npm:@bleedingdev/modern-js-i18n-utils@3.5.0-ultramodern.4"
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.3"
102
+ "frameworkVersion": "3.5.0-ultramodern.4"
103
103
  }
104
104
  }
@@ -170,14 +170,15 @@ Generated pnpm overrides pin the framework-compatible Effect cohort. Keep
170
170
  `effect` and `@effect/vitest` aligned with `pnpm-workspace.yaml`; do not add
171
171
  new direct package-level Effect versions unless the whole UltraModern cohort is
172
172
  upgraded. The generated pnpm trust policy intentionally excludes the matching
173
- `@effect/opentelemetry` cohort package from no-downgrade checks while Effect's
174
- beta publishes move from trusted-publisher metadata to provenance attestations.
173
+ `effect` and `@effect/opentelemetry` cohort packages from no-downgrade checks
174
+ while Effect's beta publishes move from trusted-publisher metadata to
175
+ provenance attestations.
175
176
 
176
177
  For older generated workspaces, run the framework migration command first:
177
178
 
178
179
  ```bash
179
- pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.3 ultramodern \
180
- migrate-strict-effect --version 3.5.0-ultramodern.3
180
+ pnpm dlx @bleedingdev/modern-js-create@3.5.0-ultramodern.4 ultramodern \
181
+ migrate-strict-effect --version 3.5.0-ultramodern.4
181
182
  pnpm api:check
182
183
  pnpm contract:check
183
184
  ```
@@ -25,6 +25,7 @@ minimumReleaseAgeExclude:
25
25
  trustPolicy: no-downgrade
26
26
  trustPolicyIgnoreAfter: 1440
27
27
  trustPolicyExclude:
28
+ - 'effect@{{effectVersion}}'
28
29
  - '@effect/opentelemetry@{{effectVersion}}'
29
30
  blockExoticSubdeps: true
30
31
  engineStrict: true