@gjsify/resolve-npm 0.1.8 → 0.1.9

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.
@@ -5,11 +5,15 @@
5
5
  * to resolve the user's explicit list of globals into the set of `/register`
6
6
  * modules that must be injected into the bundle.
7
7
  *
8
- * The register paths use bare specifiers ("fetch/register" rather than
9
- * "@gjsify/fetch/register") so they go through the normal ALIASES_WEB_FOR_GJS
8
+ * The register paths use bare specifiers ("fetch/register/fetch" rather than
9
+ * "@gjsify/fetch/register/fetch") so they go through the normal ALIASES_WEB_FOR_GJS
10
10
  * / ALIASES_WEB_FOR_NODE resolution — which means they become no-ops on Node
11
11
  * (where native globals already exist) and resolve to the real
12
- * `@gjsify/<pkg>/register` modules on GJS.
12
+ * `@gjsify/<pkg>/register/<subpath>` modules on GJS.
13
+ *
14
+ * Granular subpaths (e.g. "dom-events/register/event-target" vs "dom-events/register")
15
+ * ensure that --globals auto injects only the register code for identifiers
16
+ * actually referenced in the bundle, keeping unused globals out of the output.
13
17
  */
14
18
  /**
15
19
  * Pre-defined groups of identifiers that can be used as shorthand in `--globals`.
@@ -43,89 +47,113 @@ export const GJS_GLOBALS_GROUPS = {
43
47
  'EventSource',
44
48
  'DOMException',
45
49
  'performance', 'PerformanceObserver',
50
+ 'XMLHttpRequest',
51
+ 'DOMParser',
52
+ 'AudioContext', 'webkitAudioContext', 'Audio', 'HTMLAudioElement',
53
+ 'GamepadEvent',
46
54
  ],
47
55
  dom: [
48
56
  'document', 'Image', 'HTMLCanvasElement', 'HTMLImageElement',
49
57
  'HTMLElement', 'MutationObserver', 'ResizeObserver', 'IntersectionObserver',
58
+ 'FontFace', 'matchMedia', 'location', 'navigator',
50
59
  ],
51
60
  };
52
61
 
53
62
  export const GJS_GLOBALS_MAP = {
54
- // --- Node.js globals ------------------------------------------------
55
- Buffer: '@gjsify/buffer/register',
56
- process: '@gjsify/node-globals/register',
57
- setImmediate: '@gjsify/node-globals/register',
58
- clearImmediate: '@gjsify/node-globals/register',
59
- queueMicrotask: '@gjsify/node-globals/register',
60
- structuredClone: '@gjsify/node-globals/register',
61
- btoa: '@gjsify/node-globals/register',
62
- atob: '@gjsify/node-globals/register',
63
-
64
- // --- URL (shared Node + Web) ---------------------------------------
65
- URL: '@gjsify/node-globals/register',
66
- URLSearchParams: '@gjsify/node-globals/register',
67
-
68
- // --- Blob / File (exposed via node:buffer and Web File API) --------
63
+ // --- Node.js globals (granular register subpaths) ----------------------
64
+ Buffer: '@gjsify/node-globals/register/buffer',
65
+ process: '@gjsify/node-globals/register/process',
66
+ setImmediate: '@gjsify/node-globals/register/timers',
67
+ clearImmediate: '@gjsify/node-globals/register/timers',
68
+ queueMicrotask: '@gjsify/node-globals/register/microtask',
69
+ structuredClone: '@gjsify/node-globals/register/structured-clone',
70
+ btoa: '@gjsify/node-globals/register/encoding',
71
+ atob: '@gjsify/node-globals/register/encoding',
72
+
73
+ // --- URL (shared Node + Web) -------------------------------------------
74
+ URL: '@gjsify/node-globals/register/url',
75
+ URLSearchParams: '@gjsify/node-globals/register/url',
76
+
77
+ // --- Blob / File (exposed via node:buffer and Web File API) ------------
69
78
  Blob: '@gjsify/buffer/register',
70
79
  File: '@gjsify/buffer/register',
71
80
 
72
- // --- Fetch stack ----------------------------------------------------
73
- fetch: 'fetch/register',
74
- Headers: 'fetch/register',
75
- Request: 'fetch/register',
76
- Response: 'fetch/register',
77
-
78
- // --- FormData ------------------------------------------------------
79
- FormData: '@gjsify/web-globals/register',
80
-
81
- // --- WHATWG Streams ------------------------------------------------
82
- ReadableStream: 'web-streams/register',
83
- WritableStream: 'web-streams/register',
84
- TransformStream: 'web-streams/register',
85
- TextEncoderStream: 'web-streams/register',
86
- TextDecoderStream: 'web-streams/register',
87
- ByteLengthQueuingStrategy: 'web-streams/register',
88
- CountQueuingStrategy: 'web-streams/register',
89
-
90
- // --- Compression Streams -------------------------------------------
81
+ // --- Fetch stack -------------------------------------------------------
82
+ fetch: 'fetch/register/fetch',
83
+ Headers: 'fetch/register/fetch',
84
+ Request: 'fetch/register/fetch',
85
+ Response: 'fetch/register/fetch',
86
+
87
+ // --- FormData ----------------------------------------------------------
88
+ FormData: '@gjsify/web-globals/register/formdata',
89
+
90
+ // --- WHATWG Streams (granular register subpaths) ------------------------
91
+ ReadableStream: 'web-streams/register/readable',
92
+ WritableStream: 'web-streams/register/writable',
93
+ TransformStream: 'web-streams/register/transform',
94
+ TextEncoderStream: 'web-streams/register/text-streams',
95
+ TextDecoderStream: 'web-streams/register/text-streams',
96
+ ByteLengthQueuingStrategy: 'web-streams/register/queuing',
97
+ CountQueuingStrategy: 'web-streams/register/queuing',
98
+
99
+ // --- Compression Streams -----------------------------------------------
91
100
  CompressionStream: 'compression-streams/register',
92
101
  DecompressionStream: 'compression-streams/register',
93
102
 
94
- // --- WebCrypto -----------------------------------------------------
103
+ // --- WebCrypto ---------------------------------------------------------
95
104
  crypto: 'webcrypto/register',
96
105
 
97
- // --- Events + Abort ------------------------------------------------
106
+ // --- Events + Abort (granular register subpaths) -----------------------
98
107
  AbortController: 'abort-controller/register',
99
108
  AbortSignal: 'abort-controller/register',
100
- Event: 'dom-events/register',
101
- EventTarget: 'dom-events/register',
102
- CustomEvent: 'dom-events/register',
103
- MessageEvent: 'dom-events/register',
104
- ErrorEvent: 'dom-events/register',
105
- CloseEvent: 'dom-events/register',
106
- ProgressEvent: 'dom-events/register',
107
- UIEvent: 'dom-events/register',
108
- MouseEvent: 'dom-events/register',
109
- PointerEvent: 'dom-events/register',
110
- KeyboardEvent: 'dom-events/register',
111
- WheelEvent: 'dom-events/register',
112
- FocusEvent: 'dom-events/register',
109
+ Event: 'dom-events/register/event-target',
110
+ EventTarget: 'dom-events/register/event-target',
111
+ CustomEvent: 'dom-events/register/custom-events',
112
+ MessageEvent: 'dom-events/register/custom-events',
113
+ ErrorEvent: 'dom-events/register/custom-events',
114
+ CloseEvent: 'dom-events/register/custom-events',
115
+ ProgressEvent: 'dom-events/register/custom-events',
116
+ UIEvent: 'dom-events/register/ui-events',
117
+ MouseEvent: 'dom-events/register/ui-events',
118
+ PointerEvent: 'dom-events/register/ui-events',
119
+ KeyboardEvent: 'dom-events/register/ui-events',
120
+ WheelEvent: 'dom-events/register/ui-events',
121
+ FocusEvent: 'dom-events/register/ui-events',
113
122
  EventSource: 'eventsource/register',
114
123
 
115
- // --- Performance ---------------------------------------------------
116
- performance: '@gjsify/web-globals/register',
117
- PerformanceObserver: '@gjsify/web-globals/register',
124
+ // --- Performance -------------------------------------------------------
125
+ performance: '@gjsify/web-globals/register/performance',
126
+ PerformanceObserver: '@gjsify/web-globals/register/performance',
118
127
 
119
- // --- DOMException --------------------------------------------------
128
+ // --- DOMException ------------------------------------------------------
120
129
  DOMException: 'dom-exception/register',
121
130
 
122
- // --- DOM elements (browser-compat) ---------------------------------
123
- document: '@gjsify/dom-elements/register',
124
- Image: '@gjsify/dom-elements/register',
125
- HTMLCanvasElement: '@gjsify/dom-elements/register',
126
- HTMLImageElement: '@gjsify/dom-elements/register',
127
- HTMLElement: '@gjsify/dom-elements/register',
128
- MutationObserver: '@gjsify/dom-elements/register',
129
- ResizeObserver: '@gjsify/dom-elements/register',
130
- IntersectionObserver: '@gjsify/dom-elements/register',
131
+ // --- XMLHttpRequest + URL.createObjectURL ------------------------------
132
+ XMLHttpRequest: '@gjsify/xmlhttprequest/register',
133
+
134
+ // --- DOMParser ---------------------------------------------------------
135
+ DOMParser: '@gjsify/domparser/register',
136
+
137
+ // --- Web Audio API (GStreamer backend) ----------------------------------
138
+ AudioContext: '@gjsify/webaudio/register',
139
+ webkitAudioContext: '@gjsify/webaudio/register',
140
+ Audio: '@gjsify/webaudio/register',
141
+ HTMLAudioElement: '@gjsify/webaudio/register',
142
+
143
+ // --- Gamepad API (libmanette backend) -----------------------------------
144
+ GamepadEvent: '@gjsify/gamepad/register',
145
+
146
+ // --- DOM elements (granular register subpaths) -------------------------
147
+ document: '@gjsify/dom-elements/register/document',
148
+ Image: '@gjsify/dom-elements/register/image',
149
+ HTMLCanvasElement: '@gjsify/dom-elements/register/canvas',
150
+ HTMLImageElement: '@gjsify/dom-elements/register/image',
151
+ HTMLElement: '@gjsify/dom-elements/register/document',
152
+ MutationObserver: '@gjsify/dom-elements/register/observers',
153
+ ResizeObserver: '@gjsify/dom-elements/register/observers',
154
+ IntersectionObserver: '@gjsify/dom-elements/register/observers',
155
+ FontFace: '@gjsify/dom-elements/register/font-face',
156
+ matchMedia: '@gjsify/dom-elements/register/match-media',
157
+ location: '@gjsify/dom-elements/register/location',
158
+ navigator: '@gjsify/dom-elements/register/navigator',
131
159
  };
package/lib/index.mjs CHANGED
@@ -63,7 +63,14 @@ export const EXTERNALS_NPM = [
63
63
  ]
64
64
 
65
65
  /** General record of modules for Gjs */
66
- export const ALIASES_GENERAL_FOR_GJS = {}
66
+ export const ALIASES_GENERAL_FOR_GJS = {
67
+ // Third-party Node-only packages that must be stripped from GJS bundles.
68
+ // jsdom is pulled in by @excaliburjs/plugin-tiled as a fallback when
69
+ // DOMParser is not available; on GJS we provide DOMParser via
70
+ // @gjsify/domparser, so jsdom and its whatwg-url/webidl-conversions
71
+ // deps (which use SharedArrayBuffer — unavailable in GJS) are never needed.
72
+ 'jsdom': '@gjsify/empty',
73
+ }
67
74
 
68
75
  /** Record of Node.js modules (build in or not) and his replacement for Gjs */
69
76
  export const ALIASES_NODE_FOR_GJS = {
@@ -148,19 +155,51 @@ export const ALIASES_WEB_FOR_GJS = {
148
155
  'abort-controller/register': '@gjsify/abort-controller/register',
149
156
  'compression-streams/register': '@gjsify/compression-streams/register',
150
157
  'dom-events/register': '@gjsify/dom-events/register',
158
+ 'dom-events/register/event-target': '@gjsify/dom-events/register/event-target',
159
+ 'dom-events/register/custom-events': '@gjsify/dom-events/register/custom-events',
160
+ 'dom-events/register/ui-events': '@gjsify/dom-events/register/ui-events',
151
161
  'dom-exception/register': '@gjsify/dom-exception/register',
152
162
  'eventsource/register': '@gjsify/eventsource/register',
153
163
  'fetch/register': '@gjsify/fetch/register',
164
+ 'fetch/register/fetch': '@gjsify/fetch/register/fetch',
154
165
  'webcrypto/register': '@gjsify/webcrypto/register',
155
166
  'web-streams/register': '@gjsify/web-streams/register',
167
+ 'web-streams/register/readable': '@gjsify/web-streams/register/readable',
168
+ 'web-streams/register/writable': '@gjsify/web-streams/register/writable',
169
+ 'web-streams/register/transform': '@gjsify/web-streams/register/transform',
170
+ 'web-streams/register/text-streams': '@gjsify/web-streams/register/text-streams',
171
+ 'web-streams/register/queuing': '@gjsify/web-streams/register/queuing',
172
+
173
+ // xmlhttprequest + DOMParser
174
+ 'xmlhttprequest': '@gjsify/xmlhttprequest',
175
+ 'xmlhttprequest/register': '@gjsify/xmlhttprequest/register',
176
+ 'domparser': '@gjsify/domparser',
177
+ 'domparser/register': '@gjsify/domparser/register',
178
+
179
+ // Web Audio API (GStreamer backend)
180
+ 'webaudio': '@gjsify/webaudio',
181
+ 'webaudio/register': '@gjsify/webaudio/register',
182
+
183
+ // Gamepad API (libmanette backend)
184
+ 'gamepad': '@gjsify/gamepad',
185
+ 'gamepad/register': '@gjsify/gamepad/register',
156
186
  }
157
187
 
158
188
  /** General record of modules for Node */
159
189
  export const ALIASES_GENERAL_FOR_NODE = {
160
190
  '@gjsify/node-globals': '@gjsify/empty',
161
191
  '@gjsify/node-globals/register': '@gjsify/empty',
192
+ '@gjsify/node-globals/register/process': '@gjsify/empty',
193
+ '@gjsify/node-globals/register/buffer': '@gjsify/empty',
194
+ '@gjsify/node-globals/register/timers': '@gjsify/empty',
195
+ '@gjsify/node-globals/register/encoding': '@gjsify/empty',
196
+ '@gjsify/node-globals/register/url': '@gjsify/empty',
197
+ '@gjsify/node-globals/register/structured-clone': '@gjsify/empty',
198
+ '@gjsify/node-globals/register/microtask': '@gjsify/empty',
162
199
  '@gjsify/web-globals': '@gjsify/empty',
163
200
  '@gjsify/web-globals/register': '@gjsify/empty',
201
+ '@gjsify/web-globals/register/performance': '@gjsify/empty',
202
+ '@gjsify/web-globals/register/formdata': '@gjsify/empty',
164
203
  }
165
204
 
166
205
  /** Record of Gjs modules (build in or not) and his replacement for Node */
@@ -188,19 +227,63 @@ export const ALIASES_WEB_FOR_NODE = {
188
227
  'abort-controller/register': '@gjsify/empty',
189
228
  'compression-streams/register': '@gjsify/empty',
190
229
  'dom-events/register': '@gjsify/empty',
230
+ 'dom-events/register/event-target': '@gjsify/empty',
231
+ 'dom-events/register/custom-events': '@gjsify/empty',
232
+ 'dom-events/register/ui-events': '@gjsify/empty',
191
233
  'dom-exception/register': '@gjsify/empty',
192
234
  'eventsource/register': '@gjsify/empty',
193
235
  'fetch/register': '@gjsify/empty',
236
+ 'fetch/register/fetch': '@gjsify/empty',
194
237
  'webcrypto/register': '@gjsify/empty',
195
238
  'web-streams/register': '@gjsify/empty',
239
+ 'web-streams/register/readable': '@gjsify/empty',
240
+ 'web-streams/register/writable': '@gjsify/empty',
241
+ 'web-streams/register/transform': '@gjsify/empty',
242
+ 'web-streams/register/text-streams': '@gjsify/empty',
243
+ 'web-streams/register/queuing': '@gjsify/empty',
196
244
  '@gjsify/abort-controller/register': '@gjsify/empty',
197
245
  '@gjsify/compression-streams/register': '@gjsify/empty',
198
246
  '@gjsify/dom-events/register': '@gjsify/empty',
247
+ '@gjsify/dom-events/register/event-target': '@gjsify/empty',
248
+ '@gjsify/dom-events/register/custom-events': '@gjsify/empty',
249
+ '@gjsify/dom-events/register/ui-events': '@gjsify/empty',
199
250
  '@gjsify/dom-exception/register': '@gjsify/empty',
200
251
  '@gjsify/eventsource/register': '@gjsify/empty',
201
252
  '@gjsify/fetch/register': '@gjsify/empty',
253
+ '@gjsify/fetch/register/fetch': '@gjsify/empty',
202
254
  '@gjsify/webcrypto/register': '@gjsify/empty',
203
255
  '@gjsify/web-streams/register': '@gjsify/empty',
256
+ '@gjsify/web-streams/register/readable': '@gjsify/empty',
257
+ '@gjsify/web-streams/register/writable': '@gjsify/empty',
258
+ '@gjsify/web-streams/register/transform': '@gjsify/empty',
259
+ '@gjsify/web-streams/register/text-streams': '@gjsify/empty',
260
+ '@gjsify/web-streams/register/queuing': '@gjsify/empty',
204
261
  '@gjsify/dom-elements/register': '@gjsify/empty',
262
+ '@gjsify/dom-elements/register/document': '@gjsify/empty',
263
+ '@gjsify/dom-elements/register/canvas': '@gjsify/empty',
264
+ '@gjsify/dom-elements/register/image': '@gjsify/empty',
265
+ '@gjsify/dom-elements/register/observers': '@gjsify/empty',
266
+ '@gjsify/dom-elements/register/font-face': '@gjsify/empty',
267
+ '@gjsify/dom-elements/register/match-media': '@gjsify/empty',
268
+ '@gjsify/dom-elements/register/location': '@gjsify/empty',
269
+ '@gjsify/dom-elements/register/navigator': '@gjsify/empty',
205
270
  '@gjsify/buffer/register': '@gjsify/empty',
271
+
272
+ // xmlhttprequest + DOMParser — no-op on Node
273
+ 'xmlhttprequest': '@gjsify/empty',
274
+ 'xmlhttprequest/register': '@gjsify/empty',
275
+ '@gjsify/xmlhttprequest/register': '@gjsify/empty',
276
+ 'domparser': '@gjsify/empty',
277
+ 'domparser/register': '@gjsify/empty',
278
+ '@gjsify/domparser/register': '@gjsify/empty',
279
+
280
+ // Web Audio API — no-op on Node (experimental --experimental-web-audio not widely available)
281
+ 'webaudio': '@gjsify/empty',
282
+ 'webaudio/register': '@gjsify/empty',
283
+ '@gjsify/webaudio/register': '@gjsify/empty',
284
+
285
+ // Gamepad API — no-op on Node
286
+ 'gamepad': '@gjsify/empty',
287
+ 'gamepad/register': '@gjsify/empty',
288
+ '@gjsify/gamepad/register': '@gjsify/empty',
206
289
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/resolve-npm",
3
- "version": "0.1.8",
3
+ "version": "0.1.9",
4
4
  "description": "Resolve NPM package aliases",
5
5
  "type": "module",
6
6
  "main": "lib/index.mjs",