@frmwrkd/snag-anchor 0.4.0 → 0.5.1
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 +11 -10
- package/dist/root.d.ts +6 -2
- package/dist/root.d.ts.map +1 -1
- package/dist/root.js +11 -3
- package/dist/root.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -205,7 +205,7 @@ server.middlewares.use(createDevtoolsJsonMiddleware('/abs/project/root'));
|
|
|
205
205
|
|
|
206
206
|
## Next.js and Turbopack
|
|
207
207
|
|
|
208
|
-
|
|
208
|
+
Next.js 16 defaults `next dev` and `next build` to Turbopack, and
|
|
209
209
|
`turbopack.rules` maps file extensions to **webpack-shaped loaders**, not to
|
|
210
210
|
unplugin plugins. So the transform also ships as a plain CommonJS loader:
|
|
211
211
|
|
|
@@ -214,20 +214,21 @@ unplugin plugins. So the transform also ships as a plain CommonJS loader:
|
|
|
214
214
|
module.exports = {
|
|
215
215
|
turbopack: {
|
|
216
216
|
rules: {
|
|
217
|
-
'*.
|
|
217
|
+
'*.jsx': { condition: { all: ['development', { not: 'foreign' }] }, loaders: ['@frmwrkd/snag-anchor/loader'] },
|
|
218
|
+
'*.tsx': { condition: { all: ['development', { not: 'foreign' }] }, loaders: ['@frmwrkd/snag-anchor/loader'] },
|
|
218
219
|
},
|
|
219
220
|
},
|
|
220
221
|
};
|
|
221
222
|
```
|
|
222
223
|
|
|
223
|
-
**
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
224
|
+
**Verified on Next.js 16.4.2 with Node 22 on Windows:** the development server
|
|
225
|
+
emitted exact file, line and column attributes, and `next build` emitted none.
|
|
226
|
+
The separate rules preserve JSX/TSX extensions for Next's compiler; an `as`
|
|
227
|
+
rename is unnecessary. See the official [Turbopack configuration](https://nextjs.org/docs/app/api-reference/config/next-config-js/turbopack)
|
|
228
|
+
and [Next.js 16 bundler defaults](https://nextjs.org/docs/app/guides/upgrading/version-16).
|
|
229
|
+
Next.js 15.5.26's webpack pipeline was also verified with the development-only
|
|
230
|
+
plugin hook. On Next.js 16, use `next dev --webpack` when deliberately choosing
|
|
231
|
+
webpack; init preserves the project's selected bundler and existing hooks.
|
|
231
232
|
|
|
232
233
|
There is no native SWC plugin. A real one would have to be a Rust-compiled
|
|
233
234
|
binary; the loader covers the same ground at the bundler level, for both the
|
package/dist/root.d.ts
CHANGED
|
@@ -29,14 +29,18 @@ export declare function findManifestDir(startDir: string): string | undefined;
|
|
|
29
29
|
* The project root every emitted path is relative to.
|
|
30
30
|
*
|
|
31
31
|
* Precedence: explicit `root` option → the Snag project (`.snag/config.json`)
|
|
32
|
-
* → git root → nearest `package.json` → the working
|
|
33
|
-
* and always POSIX-normalised.
|
|
32
|
+
* inside the git root → git root → nearest `package.json` → the working
|
|
33
|
+
* directory. Always absolute and always POSIX-normalised.
|
|
34
34
|
*
|
|
35
35
|
* The Snag project comes before git because snagd reads every path from its
|
|
36
36
|
* own root. An app in a subfolder of its repo (`roughcut/frontend` inside
|
|
37
37
|
* `Video Editor/`) otherwise emitted `roughcut/frontend/src/…`, which snagd
|
|
38
38
|
* looked for at `roughcut/frontend/roughcut/frontend/src/…` and dropped as
|
|
39
39
|
* "does not exist on disk".
|
|
40
|
+
*
|
|
41
|
+
* Only inside the git root, though: snagd run once from `~` writes
|
|
42
|
+
* `~/.snag/config.json`, and every repo under `~` would otherwise be rooted
|
|
43
|
+
* at `~`.
|
|
40
44
|
*/
|
|
41
45
|
export declare function resolveRoot(explicitRoot?: string, cwd?: string): string;
|
|
42
46
|
/**
|
package/dist/root.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzC;AAOD,wFAAwF;AACxF,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAoBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED
|
|
1
|
+
{"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAsBA;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzC;AAOD,wFAAwF;AACxF,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAoBD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEhE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED,gGAAgG;AAChG,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEpE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAsB,GAAG,MAAM,CAUtF;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAKzE"}
|
package/dist/root.js
CHANGED
|
@@ -84,20 +84,28 @@ export function findManifestDir(startDir) {
|
|
|
84
84
|
* The project root every emitted path is relative to.
|
|
85
85
|
*
|
|
86
86
|
* Precedence: explicit `root` option → the Snag project (`.snag/config.json`)
|
|
87
|
-
* → git root → nearest `package.json` → the working
|
|
88
|
-
* and always POSIX-normalised.
|
|
87
|
+
* inside the git root → git root → nearest `package.json` → the working
|
|
88
|
+
* directory. Always absolute and always POSIX-normalised.
|
|
89
89
|
*
|
|
90
90
|
* The Snag project comes before git because snagd reads every path from its
|
|
91
91
|
* own root. An app in a subfolder of its repo (`roughcut/frontend` inside
|
|
92
92
|
* `Video Editor/`) otherwise emitted `roughcut/frontend/src/…`, which snagd
|
|
93
93
|
* looked for at `roughcut/frontend/roughcut/frontend/src/…` and dropped as
|
|
94
94
|
* "does not exist on disk".
|
|
95
|
+
*
|
|
96
|
+
* Only inside the git root, though: snagd run once from `~` writes
|
|
97
|
+
* `~/.snag/config.json`, and every repo under `~` would otherwise be rooted
|
|
98
|
+
* at `~`.
|
|
95
99
|
*/
|
|
96
100
|
export function resolveRoot(explicitRoot, cwd = process.cwd()) {
|
|
97
101
|
if (explicitRoot !== undefined && explicitRoot !== '') {
|
|
98
102
|
return toPosix(path.resolve(explicitRoot));
|
|
99
103
|
}
|
|
100
|
-
const
|
|
104
|
+
const snag = findSnagProject(cwd);
|
|
105
|
+
const git = findGitRoot(cwd);
|
|
106
|
+
const relative = snag === undefined || git === undefined ? '' : path.relative(git, snag);
|
|
107
|
+
const inGit = snag !== undefined && (git === undefined || (relative !== '..' && !relative.startsWith(`..${path.sep}`) && !path.isAbsolute(relative)));
|
|
108
|
+
const found = (inGit ? snag : undefined) ?? git ?? findManifestDir(cwd) ?? cwd;
|
|
101
109
|
return toPosix(path.resolve(found));
|
|
102
110
|
}
|
|
103
111
|
/**
|
package/dist/root.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;GAMG;AACH,MAAM,UAAU,OAAO,CAAC,CAAS;IAC/B,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED,4EAA4E;AAC5E,MAAM,YAAY,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC3D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAC/D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;AAE/D,wFAAwF;AACxF,MAAM,UAAU,eAAe;IAC7B,YAAY,CAAC,KAAK,EAAE,CAAC;IACrB,gBAAgB,CAAC,KAAK,EAAE,CAAC;IACzB,gBAAgB,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,MAAM,CAAC,QAAgB,EAAE,KAAa,EAAE,KAAsC;IACrF,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,GAAG,GAAG,KAAK,CAAC;IAChB,SAAS,CAAC;QACR,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC5B,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,OAAO,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,EAAE,gBAAgB,CAAC,CAAC;AAC/E,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,eAAe,CAAC,QAAgB;IAC9C,OAAO,MAAM,CAAC,QAAQ,EAAE,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"root.js","sourceRoot":"","sources":["../src/root.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED