@williamthorsen/nmr 0.17.1 → 0.18.0

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
@@ -3,13 +3,13 @@
3
3
  Context-aware script runner for PNPM monorepos. Ships an `nmr` (node-monorepo run) binary that provides centralized, consistent script execution across workspace packages and the monorepo root.
4
4
 
5
5
  <!-- section:release-notes -->
6
- ## Release notes — v0.17.1 (2026-07-01)
6
+ ## Release notes — v0.18.0 (2026-07-13)
7
7
 
8
8
  ### 🐛 Bug fixes
9
9
 
10
- - Relocate nmr-compile's build cache out of the published dist (#457)
10
+ - Remove the attw check and the nmr-attw binary (#469)
11
11
 
12
- Fixes an issue where packages built with nmr-compile shipped an internal build-cache file inside their published npm tarball.
12
+ Fixes an issue where a repo using nmr's default scripts could not pass `check:strict` without installing `@arethetypeswrong/cli` and conforming to inflexible requirements of questionable value. The `attw` check is removed.
13
13
  <!-- /section:release-notes -->
14
14
 
15
15
  ## Installation
@@ -139,26 +139,25 @@ These scripts are available out of the box. Repo-wide config (tier 2) and per-pa
139
139
 
140
140
  ### Workspace scripts
141
141
 
142
- | Command | Runs |
143
- | --------------- | ---------------------------------------------------------------- |
144
- | `attw` | `attw --pack --profile esm-only` |
145
- | `build` | `compile` |
146
- | `check` | `typecheck`, `fmt:check`, `lint:check`, `test` |
147
- | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test:coverage`, `attw` |
148
- | `clean` | `pnpm exec rimraf dist/*` |
149
- | `compile` | `nmr-compile` |
150
- | `fix` | `lint`, `fmt` |
151
- | `fix:check` | `fmt:check`, `lint:check` |
152
- | `fmt` | `prettier --list-different --write .` |
153
- | `fmt:check` | `prettier --check .` |
154
- | `lint` | `eslint --fix .` |
155
- | `lint:check` | `eslint .` |
156
- | `lint:strict` | `strict-lint` |
157
- | `test` | `pnpm exec vitest` |
158
- | `test:coverage` | `pnpm exec vitest --coverage` |
159
- | `test:watch` | `pnpm exec vitest --watch` |
160
- | `typecheck` | `tsgo --noEmit` |
161
- | `view-coverage` | `open coverage/index.html` |
142
+ | Command | Runs |
143
+ | --------------- | -------------------------------------------------------- |
144
+ | `build` | `compile` |
145
+ | `check` | `typecheck`, `fmt:check`, `lint:check`, `test` |
146
+ | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test:coverage` |
147
+ | `clean` | `pnpm exec rimraf dist/*` |
148
+ | `compile` | `nmr-compile` |
149
+ | `fix` | `lint`, `fmt` |
150
+ | `fix:check` | `fmt:check`, `lint:check` |
151
+ | `fmt` | `prettier --list-different --write .` |
152
+ | `fmt:check` | `prettier --check .` |
153
+ | `lint` | `eslint --fix .` |
154
+ | `lint:check` | `eslint .` |
155
+ | `lint:strict` | `strict-lint` |
156
+ | `test` | `pnpm exec vitest` |
157
+ | `test:coverage` | `pnpm exec vitest --coverage` |
158
+ | `test:watch` | `pnpm exec vitest --watch` |
159
+ | `typecheck` | `tsgo --noEmit` |
160
+ | `view-coverage` | `open coverage/index.html` |
162
161
 
163
162
  #### Integration test variant
164
163
 
@@ -184,12 +183,11 @@ A package gets this variant automatically when it contains a `vitest.integration
184
183
 
185
184
  #### Check and quality
186
185
 
187
- | Command | Runs |
188
- | ------------------- | ------------------------------------------------------------------------------------- |
189
- | `attw` | `pnpm --recursive exec nmr attw` |
190
- | `check` | `typecheck`, `fmt:check`, `lint:check`, `test` |
191
- | `check:agent-files` | `nmr-sync-agent-files --check` |
192
- | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test:coverage`, `attw`, `check:agent-files` |
186
+ | Command | Runs |
187
+ | ------------------- | ----------------------------------------------------------------------------- |
188
+ | `check` | `typecheck`, `fmt:check`, `lint:check`, `test` |
189
+ | `check:agent-files` | `nmr-sync-agent-files --check` |
190
+ | `check:strict` | `typecheck`, `fmt:check`, `lint:strict`, `test:coverage`, `check:agent-files` |
193
191
 
194
192
  #### Fix
195
193
 
@@ -1,8 +1,7 @@
1
1
  export const commonWorkspaceScripts = {
2
- attw: 'attw --pack --profile esm-only',
3
2
  build: ['compile'],
4
3
  check: ['typecheck', 'fmt:check', 'lint:check', 'test'],
5
- 'check:strict': ['typecheck', 'fmt:check', 'lint:strict', 'test:coverage', 'attw'],
4
+ 'check:strict': ['typecheck', 'fmt:check', 'lint:strict', 'test:coverage'],
6
5
  clean: 'pnpm exec rimraf dist/*',
7
6
  compile: 'nmr-compile',
8
7
  fix: ['lint', 'fmt'],
@@ -28,14 +27,13 @@ export const standardTestScripts = {
28
27
  'test:watch': 'pnpm exec vitest --watch',
29
28
  };
30
29
  export const rootScripts = {
31
- attw: 'pnpm --recursive exec nmr attw',
32
30
  audit: ['audit:prod', 'audit:dev'],
33
31
  'audit:dev': 'pnpm exec v11y --dev',
34
32
  'audit:prod': 'pnpm exec v11y --prod',
35
33
  build: 'pnpm --recursive exec nmr build',
36
34
  check: ['typecheck', 'fmt:check', 'lint:check', 'test'],
37
35
  'check:agent-files': 'nmr-sync-agent-files --check',
38
- 'check:strict': ['typecheck', 'fmt:check', 'lint:strict', 'test:coverage', 'attw', 'check:agent-files'],
36
+ 'check:strict': ['typecheck', 'fmt:check', 'lint:strict', 'test:coverage', 'check:agent-files'],
39
37
  ci: ['build', 'check:strict', 'audit'],
40
38
  clean: 'pnpm --recursive exec nmr clean',
41
39
  fix: ['lint', 'fmt'],
@@ -2,8 +2,7 @@ import { readFileSync } from 'node:fs';
2
2
  import path from 'node:path';
3
3
  import { isObject } from "./type-guards.js";
4
4
  export function readPackageJson(dir) {
5
- const content = readFileSync(path.join(dir, 'package.json'), 'utf8');
6
- const parsed = JSON.parse(content);
5
+ const parsed = JSON.parse(readFileSync(path.join(dir, 'package.json'), 'utf8'));
7
6
  if (!isObject(parsed)) {
8
7
  throw new TypeError(`Invalid package.json in ${dir}: expected an object`);
9
8
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@williamthorsen/nmr",
3
- "version": "0.17.1",
3
+ "version": "0.18.0",
4
4
  "private": false,
5
5
  "description": "Context-aware script runner for PNPM monorepos",
6
6
  "keywords": [
@@ -22,9 +22,18 @@
22
22
  "author": "William Thorsen <william@thorsen.dev> (https://github.com/williamthorsen)",
23
23
  "type": "module",
24
24
  "exports": {
25
- ".": "./dist/esm/index.js",
26
- "./scripts": "./dist/esm/scripts.js",
27
- "./tests": "./dist/esm/tests/consistency.js"
25
+ ".": {
26
+ "types": "./dist/esm/index.d.ts",
27
+ "default": "./dist/esm/index.js"
28
+ },
29
+ "./scripts": {
30
+ "types": "./dist/esm/scripts.d.ts",
31
+ "default": "./dist/esm/scripts.js"
32
+ },
33
+ "./tests": {
34
+ "types": "./dist/esm/tests/consistency.d.ts",
35
+ "default": "./dist/esm/tests/consistency.js"
36
+ }
28
37
  },
29
38
  "bin": {
30
39
  "ensure-prepublish-hooks": "bin/ensure-prepublish-hooks.js",
@@ -44,7 +53,7 @@
44
53
  "jiti": "2.7.0",
45
54
  "yaml": "2.9.0",
46
55
  "zod": "4.4.3",
47
- "@williamthorsen/nmr-core": "0.6.0"
56
+ "@williamthorsen/nmr-core": "0.7.0"
48
57
  },
49
58
  "devDependencies": {
50
59
  "@williamthorsen/toolbelt.strings": "3.1.4"