@gjsify/resolve-npm 0.1.7 → 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.
- package/lib/globals-map.mjs +159 -0
- package/lib/index.mjs +119 -1
- package/package.json +9 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Map from global identifier → bare-specifier register subpath.
|
|
3
|
+
*
|
|
4
|
+
* Used by the `@gjsify/cli` `--globals` flag (via `@gjsify/esbuild-plugin-gjsify/globals`)
|
|
5
|
+
* to resolve the user's explicit list of globals into the set of `/register`
|
|
6
|
+
* modules that must be injected into the bundle.
|
|
7
|
+
*
|
|
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
|
+
* / ALIASES_WEB_FOR_NODE resolution — which means they become no-ops on Node
|
|
11
|
+
* (where native globals already exist) and resolve to the real
|
|
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.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Pre-defined groups of identifiers that can be used as shorthand in `--globals`.
|
|
20
|
+
*
|
|
21
|
+
* - `node` — Node.js core globals: Buffer, Blob, File, process, URL, …
|
|
22
|
+
* - `web` — Web API globals: fetch, crypto, streams, AbortController, events, …
|
|
23
|
+
* - `dom` — DOM/GTK-only globals: document, HTMLCanvasElement, Image, …
|
|
24
|
+
*
|
|
25
|
+
* A group token in `--globals` expands to all individual identifiers in that
|
|
26
|
+
* group before the usual map lookup. Groups can be combined:
|
|
27
|
+
* --globals node,web,dom
|
|
28
|
+
*/
|
|
29
|
+
export const GJS_GLOBALS_GROUPS = {
|
|
30
|
+
node: [
|
|
31
|
+
'Buffer', 'Blob', 'File',
|
|
32
|
+
'process', 'setImmediate', 'clearImmediate', 'queueMicrotask',
|
|
33
|
+
'structuredClone', 'btoa', 'atob', 'URL', 'URLSearchParams',
|
|
34
|
+
],
|
|
35
|
+
web: [
|
|
36
|
+
'fetch', 'Headers', 'Request', 'Response',
|
|
37
|
+
'FormData',
|
|
38
|
+
'ReadableStream', 'WritableStream', 'TransformStream',
|
|
39
|
+
'TextEncoderStream', 'TextDecoderStream',
|
|
40
|
+
'ByteLengthQueuingStrategy', 'CountQueuingStrategy',
|
|
41
|
+
'CompressionStream', 'DecompressionStream',
|
|
42
|
+
'crypto',
|
|
43
|
+
'AbortController', 'AbortSignal',
|
|
44
|
+
'Event', 'EventTarget', 'CustomEvent', 'MessageEvent',
|
|
45
|
+
'ErrorEvent', 'CloseEvent', 'ProgressEvent', 'UIEvent',
|
|
46
|
+
'MouseEvent', 'PointerEvent', 'KeyboardEvent', 'WheelEvent', 'FocusEvent',
|
|
47
|
+
'EventSource',
|
|
48
|
+
'DOMException',
|
|
49
|
+
'performance', 'PerformanceObserver',
|
|
50
|
+
'XMLHttpRequest',
|
|
51
|
+
'DOMParser',
|
|
52
|
+
'AudioContext', 'webkitAudioContext', 'Audio', 'HTMLAudioElement',
|
|
53
|
+
'GamepadEvent',
|
|
54
|
+
],
|
|
55
|
+
dom: [
|
|
56
|
+
'document', 'Image', 'HTMLCanvasElement', 'HTMLImageElement',
|
|
57
|
+
'HTMLElement', 'MutationObserver', 'ResizeObserver', 'IntersectionObserver',
|
|
58
|
+
'FontFace', 'matchMedia', 'location', 'navigator',
|
|
59
|
+
],
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export const GJS_GLOBALS_MAP = {
|
|
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) ------------
|
|
78
|
+
Blob: '@gjsify/buffer/register',
|
|
79
|
+
File: '@gjsify/buffer/register',
|
|
80
|
+
|
|
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 -----------------------------------------------
|
|
100
|
+
CompressionStream: 'compression-streams/register',
|
|
101
|
+
DecompressionStream: 'compression-streams/register',
|
|
102
|
+
|
|
103
|
+
// --- WebCrypto ---------------------------------------------------------
|
|
104
|
+
crypto: 'webcrypto/register',
|
|
105
|
+
|
|
106
|
+
// --- Events + Abort (granular register subpaths) -----------------------
|
|
107
|
+
AbortController: 'abort-controller/register',
|
|
108
|
+
AbortSignal: 'abort-controller/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',
|
|
122
|
+
EventSource: 'eventsource/register',
|
|
123
|
+
|
|
124
|
+
// --- Performance -------------------------------------------------------
|
|
125
|
+
performance: '@gjsify/web-globals/register/performance',
|
|
126
|
+
PerformanceObserver: '@gjsify/web-globals/register/performance',
|
|
127
|
+
|
|
128
|
+
// --- DOMException ------------------------------------------------------
|
|
129
|
+
DOMException: 'dom-exception/register',
|
|
130
|
+
|
|
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',
|
|
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 = {
|
|
@@ -129,6 +136,7 @@ export const ALIASES_NODE_FOR_GJS = {
|
|
|
129
136
|
|
|
130
137
|
/** Record of Web modules and his replacement for Gjs */
|
|
131
138
|
export const ALIASES_WEB_FOR_GJS = {
|
|
139
|
+
// Bare specifiers (named imports, pure — no side-effects after Stage 2)
|
|
132
140
|
'abort-controller': '@gjsify/abort-controller',
|
|
133
141
|
'compression-streams': '@gjsify/compression-streams',
|
|
134
142
|
'dom-events': '@gjsify/dom-events',
|
|
@@ -142,11 +150,56 @@ export const ALIASES_WEB_FOR_GJS = {
|
|
|
142
150
|
'webgl': '@gjsify/webgl',
|
|
143
151
|
'websocket': '@gjsify/websocket',
|
|
144
152
|
'webstorage': '@gjsify/webstorage',
|
|
153
|
+
|
|
154
|
+
// /register subpaths (side-effect only — opt-in to global registration)
|
|
155
|
+
'abort-controller/register': '@gjsify/abort-controller/register',
|
|
156
|
+
'compression-streams/register': '@gjsify/compression-streams/register',
|
|
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',
|
|
161
|
+
'dom-exception/register': '@gjsify/dom-exception/register',
|
|
162
|
+
'eventsource/register': '@gjsify/eventsource/register',
|
|
163
|
+
'fetch/register': '@gjsify/fetch/register',
|
|
164
|
+
'fetch/register/fetch': '@gjsify/fetch/register/fetch',
|
|
165
|
+
'webcrypto/register': '@gjsify/webcrypto/register',
|
|
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',
|
|
145
186
|
}
|
|
146
187
|
|
|
147
188
|
/** General record of modules for Node */
|
|
148
189
|
export const ALIASES_GENERAL_FOR_NODE = {
|
|
149
190
|
'@gjsify/node-globals': '@gjsify/empty',
|
|
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',
|
|
199
|
+
'@gjsify/web-globals': '@gjsify/empty',
|
|
200
|
+
'@gjsify/web-globals/register': '@gjsify/empty',
|
|
201
|
+
'@gjsify/web-globals/register/performance': '@gjsify/empty',
|
|
202
|
+
'@gjsify/web-globals/register/formdata': '@gjsify/empty',
|
|
150
203
|
}
|
|
151
204
|
|
|
152
205
|
/** Record of Gjs modules (build in or not) and his replacement for Node */
|
|
@@ -156,6 +209,7 @@ export { ALIASES_GJS_FOR_NODE };
|
|
|
156
209
|
|
|
157
210
|
/** Record of Web modules and his replacement for Node */
|
|
158
211
|
export const ALIASES_WEB_FOR_NODE = {
|
|
212
|
+
// Bare specifiers → native re-exports (works for both named and side-effect imports)
|
|
159
213
|
'abort-controller': '@gjsify/abort-controller/globals',
|
|
160
214
|
'compression-streams': '@gjsify/compression-streams/globals',
|
|
161
215
|
'dom-events': '@gjsify/dom-events/globals',
|
|
@@ -168,4 +222,68 @@ export const ALIASES_WEB_FOR_NODE = {
|
|
|
168
222
|
'webgl': '@gjsify/webgl',
|
|
169
223
|
'websocket': '@gjsify/websocket/globals',
|
|
170
224
|
'webstorage': '@gjsify/webstorage',
|
|
225
|
+
|
|
226
|
+
// /register subpaths — no-op on Node (native globals are already set)
|
|
227
|
+
'abort-controller/register': '@gjsify/empty',
|
|
228
|
+
'compression-streams/register': '@gjsify/empty',
|
|
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',
|
|
233
|
+
'dom-exception/register': '@gjsify/empty',
|
|
234
|
+
'eventsource/register': '@gjsify/empty',
|
|
235
|
+
'fetch/register': '@gjsify/empty',
|
|
236
|
+
'fetch/register/fetch': '@gjsify/empty',
|
|
237
|
+
'webcrypto/register': '@gjsify/empty',
|
|
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',
|
|
244
|
+
'@gjsify/abort-controller/register': '@gjsify/empty',
|
|
245
|
+
'@gjsify/compression-streams/register': '@gjsify/empty',
|
|
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',
|
|
250
|
+
'@gjsify/dom-exception/register': '@gjsify/empty',
|
|
251
|
+
'@gjsify/eventsource/register': '@gjsify/empty',
|
|
252
|
+
'@gjsify/fetch/register': '@gjsify/empty',
|
|
253
|
+
'@gjsify/fetch/register/fetch': '@gjsify/empty',
|
|
254
|
+
'@gjsify/webcrypto/register': '@gjsify/empty',
|
|
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',
|
|
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',
|
|
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',
|
|
171
289
|
}
|
package/package.json
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gjsify/resolve-npm",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Resolve NPM package aliases",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.mjs",
|
|
7
7
|
"module": "lib/index.mjs",
|
|
8
8
|
"types": "lib/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"types": "./lib/index.d.ts",
|
|
12
|
+
"default": "./lib/index.mjs"
|
|
13
|
+
},
|
|
14
|
+
"./globals-map": "./lib/globals-map.mjs",
|
|
15
|
+
"./package.json": "./package.json"
|
|
16
|
+
},
|
|
9
17
|
"scripts": {
|
|
10
18
|
"clear": "echo 'nothing to do'",
|
|
11
19
|
"check": "true",
|