@gjsify/rolldown-plugin-gjsify 0.4.26 → 0.4.28
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/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/plugins/gjs-imports-empty.js +15 -1
- package/lib/plugins/shebang.d.ts +7 -2
- package/lib/plugins/shebang.js +8 -3
- package/package.json +7 -7
package/lib/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ export type { ProcessStubPluginOptions } from './plugins/process-stub.js';
|
|
|
9
9
|
export { cssAsStringPlugin } from './plugins/css-as-string.js';
|
|
10
10
|
export { textLoaderPlugin } from './plugins/text-loader.js';
|
|
11
11
|
export type { TextLoaderPluginOptions } from './plugins/text-loader.js';
|
|
12
|
-
export { shebangPlugin, GJS_SHEBANG, expandEnvTemplate, resolveShebangLine } from './plugins/shebang.js';
|
|
12
|
+
export { shebangPlugin, GJS_SHEBANG, NODE_SHEBANG, expandEnvTemplate, resolveShebangLine } from './plugins/shebang.js';
|
|
13
13
|
export type { ShebangPluginOptions } from './plugins/shebang.js';
|
|
14
14
|
export { gjsImportsEmptyPlugin } from './plugins/gjs-imports-empty.js';
|
|
15
15
|
export * from './plugin.js';
|
package/lib/index.js
CHANGED
|
@@ -7,7 +7,7 @@ export { REWRITE_FILTER, getBundleDirFromOutput, rewriteContents, shouldRewrite,
|
|
|
7
7
|
export { processStubPlugin, GJS_PROCESS_STUB, composeBanner } from './plugins/process-stub.js';
|
|
8
8
|
export { cssAsStringPlugin } from './plugins/css-as-string.js';
|
|
9
9
|
export { textLoaderPlugin } from './plugins/text-loader.js';
|
|
10
|
-
export { shebangPlugin, GJS_SHEBANG, expandEnvTemplate, resolveShebangLine } from './plugins/shebang.js';
|
|
10
|
+
export { shebangPlugin, GJS_SHEBANG, NODE_SHEBANG, expandEnvTemplate, resolveShebangLine } from './plugins/shebang.js';
|
|
11
11
|
export { gjsImportsEmptyPlugin } from './plugins/gjs-imports-empty.js';
|
|
12
12
|
export * from './plugin.js';
|
|
13
13
|
import { gjsifyPlugin } from './plugin.js';
|
|
@@ -6,6 +6,14 @@
|
|
|
6
6
|
// Marking them external would leave bare specifiers in the bundle that the
|
|
7
7
|
// browser cannot resolve at runtime; instead we resolve them to a virtual
|
|
8
8
|
// empty ESM module so the bundle is self-contained.
|
|
9
|
+
//
|
|
10
|
+
// Portability note: the `filter: { id: ... }` below is a Rolldown fast-path
|
|
11
|
+
// — Rolldown pre-filters which specifiers reach `handler`. Under Vite (which
|
|
12
|
+
// also runs Rolldown for `build` but does NOT honor the Rolldown-specific
|
|
13
|
+
// hook-level `filter` in every code path, e.g. esbuild dep prebundle or the
|
|
14
|
+
// dev server) the handler may receive ALL ids. The internal guard below makes
|
|
15
|
+
// the plugin correct regardless of whether the filter pre-filtered — it is
|
|
16
|
+
// the load-bearing check; the `filter` is a defense-in-depth optimization.
|
|
9
17
|
const GJSIMPORTS_VIRTUAL_ID = '\0gjsify-empty-gjs-import';
|
|
10
18
|
export function gjsImportsEmptyPlugin() {
|
|
11
19
|
return {
|
|
@@ -13,7 +21,13 @@ export function gjsImportsEmptyPlugin() {
|
|
|
13
21
|
resolveId: {
|
|
14
22
|
order: 'pre',
|
|
15
23
|
filter: { id: /^(@girs\/|gi:\/\/)/ },
|
|
16
|
-
handler(
|
|
24
|
+
handler(source) {
|
|
25
|
+
// Internal guard: do not rely solely on the Rolldown `filter`
|
|
26
|
+
// above (it may not pre-filter under Vite). Only intercept
|
|
27
|
+
// `@girs/*` and `gi://*` specifiers; let everything else fall
|
|
28
|
+
// through to the default resolver chain.
|
|
29
|
+
if (!/^(@girs\/|gi:\/\/)/.test(source))
|
|
30
|
+
return null;
|
|
17
31
|
return { id: GJSIMPORTS_VIRTUAL_ID };
|
|
18
32
|
},
|
|
19
33
|
},
|
package/lib/plugins/shebang.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Plugin } from 'rolldown';
|
|
2
2
|
export declare const GJS_SHEBANG = "#!/usr/bin/env -S gjs -m";
|
|
3
|
+
export declare const NODE_SHEBANG = "#!/usr/bin/env node";
|
|
3
4
|
export interface ShebangPluginOptions {
|
|
4
5
|
enabled?: boolean;
|
|
5
6
|
/** Override the shebang line. Defaults to `GJS_SHEBANG`. */
|
|
@@ -21,12 +22,16 @@ export declare function expandEnvTemplate(input: string, env?: Record<string, st
|
|
|
21
22
|
* that should be prepended to the bundle (without trailing newline), or
|
|
22
23
|
* `null` when shebang injection is disabled.
|
|
23
24
|
*
|
|
24
|
-
* `true` → default
|
|
25
|
+
* `true` → `defaultLine` (the target's default shebang)
|
|
25
26
|
* `false|undefined` → null (disabled)
|
|
26
27
|
* `"…"` → string with `${env:NAME[:-default]}` expanded
|
|
27
28
|
*
|
|
29
|
+
* `defaultLine` lets the caller pick the per-target default that `true`
|
|
30
|
+
* resolves to — `GJS_SHEBANG` for `--app gjs` (the default), `NODE_SHEBANG`
|
|
31
|
+
* for `--app node`. An explicit string value always wins over the default.
|
|
32
|
+
*
|
|
28
33
|
* If the resolved string does not start with `#!`, it is prefixed
|
|
29
34
|
* automatically so users can write `"shebang": "/usr/bin/gjs -m"` instead
|
|
30
35
|
* of `"#!/usr/bin/gjs -m"`.
|
|
31
36
|
*/
|
|
32
|
-
export declare function resolveShebangLine(value: boolean | string | undefined): string | null;
|
|
37
|
+
export declare function resolveShebangLine(value: boolean | string | undefined, defaultLine?: string): string | null;
|
package/lib/plugins/shebang.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
// the `#` character is only valid as the very first byte of the file under
|
|
7
7
|
// SpiderMonkey 128+.
|
|
8
8
|
export const GJS_SHEBANG = '#!/usr/bin/env -S gjs -m';
|
|
9
|
+
export const NODE_SHEBANG = '#!/usr/bin/env node';
|
|
9
10
|
/**
|
|
10
11
|
* Strip a leading `#!…\n` from a source module. Rolldown preserves input
|
|
11
12
|
* shebangs verbatim, which ends up embedded mid-chunk after our process-stub
|
|
@@ -67,19 +68,23 @@ export function expandEnvTemplate(input, env = process.env) {
|
|
|
67
68
|
* that should be prepended to the bundle (without trailing newline), or
|
|
68
69
|
* `null` when shebang injection is disabled.
|
|
69
70
|
*
|
|
70
|
-
* `true` → default
|
|
71
|
+
* `true` → `defaultLine` (the target's default shebang)
|
|
71
72
|
* `false|undefined` → null (disabled)
|
|
72
73
|
* `"…"` → string with `${env:NAME[:-default]}` expanded
|
|
73
74
|
*
|
|
75
|
+
* `defaultLine` lets the caller pick the per-target default that `true`
|
|
76
|
+
* resolves to — `GJS_SHEBANG` for `--app gjs` (the default), `NODE_SHEBANG`
|
|
77
|
+
* for `--app node`. An explicit string value always wins over the default.
|
|
78
|
+
*
|
|
74
79
|
* If the resolved string does not start with `#!`, it is prefixed
|
|
75
80
|
* automatically so users can write `"shebang": "/usr/bin/gjs -m"` instead
|
|
76
81
|
* of `"#!/usr/bin/gjs -m"`.
|
|
77
82
|
*/
|
|
78
|
-
export function resolveShebangLine(value) {
|
|
83
|
+
export function resolveShebangLine(value, defaultLine = GJS_SHEBANG) {
|
|
79
84
|
if (value === undefined || value === false)
|
|
80
85
|
return null;
|
|
81
86
|
if (value === true)
|
|
82
|
-
return
|
|
87
|
+
return defaultLine;
|
|
83
88
|
const expanded = expandEnvTemplate(value);
|
|
84
89
|
if (!expanded.trim())
|
|
85
90
|
return null;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/rolldown-plugin-gjsify",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.28",
|
|
4
4
|
"description": "Rolldown / Rollup / Vite plugin orchestrator for GJS, Node, and Browser targets",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -48,11 +48,11 @@
|
|
|
48
48
|
],
|
|
49
49
|
"license": "MIT",
|
|
50
50
|
"dependencies": {
|
|
51
|
-
"@gjsify/console": "^0.4.
|
|
52
|
-
"@gjsify/resolve-npm": "^0.4.
|
|
53
|
-
"@gjsify/rolldown-plugin-deepkit": "^0.4.
|
|
54
|
-
"@gjsify/rolldown-plugin-pnp": "^0.4.
|
|
55
|
-
"@gjsify/vite-plugin-blueprint": "^0.4.
|
|
51
|
+
"@gjsify/console": "^0.4.28",
|
|
52
|
+
"@gjsify/resolve-npm": "^0.4.28",
|
|
53
|
+
"@gjsify/rolldown-plugin-deepkit": "^0.4.28",
|
|
54
|
+
"@gjsify/rolldown-plugin-pnp": "^0.4.28",
|
|
55
|
+
"@gjsify/vite-plugin-blueprint": "^0.4.28",
|
|
56
56
|
"@rollup/pluginutils": "^5.3.0",
|
|
57
57
|
"acorn": "^8.16.0",
|
|
58
58
|
"acorn-walk": "^8.3.5",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"lightningcss": "^1.32.0"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
|
-
"@gjsify/lightningcss-native": "^0.4.
|
|
63
|
+
"@gjsify/lightningcss-native": "^0.4.28",
|
|
64
64
|
"rolldown": "^1.0.0-rc.18"
|
|
65
65
|
},
|
|
66
66
|
"peerDependenciesMeta": {
|