@gjsify/resolve-npm 0.1.7 → 0.1.8

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.
@@ -0,0 +1,131 @@
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" rather than
9
+ * "@gjsify/fetch/register") 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` modules on GJS.
13
+ */
14
+ /**
15
+ * Pre-defined groups of identifiers that can be used as shorthand in `--globals`.
16
+ *
17
+ * - `node` — Node.js core globals: Buffer, Blob, File, process, URL, …
18
+ * - `web` — Web API globals: fetch, crypto, streams, AbortController, events, …
19
+ * - `dom` — DOM/GTK-only globals: document, HTMLCanvasElement, Image, …
20
+ *
21
+ * A group token in `--globals` expands to all individual identifiers in that
22
+ * group before the usual map lookup. Groups can be combined:
23
+ * --globals node,web,dom
24
+ */
25
+ export const GJS_GLOBALS_GROUPS = {
26
+ node: [
27
+ 'Buffer', 'Blob', 'File',
28
+ 'process', 'setImmediate', 'clearImmediate', 'queueMicrotask',
29
+ 'structuredClone', 'btoa', 'atob', 'URL', 'URLSearchParams',
30
+ ],
31
+ web: [
32
+ 'fetch', 'Headers', 'Request', 'Response',
33
+ 'FormData',
34
+ 'ReadableStream', 'WritableStream', 'TransformStream',
35
+ 'TextEncoderStream', 'TextDecoderStream',
36
+ 'ByteLengthQueuingStrategy', 'CountQueuingStrategy',
37
+ 'CompressionStream', 'DecompressionStream',
38
+ 'crypto',
39
+ 'AbortController', 'AbortSignal',
40
+ 'Event', 'EventTarget', 'CustomEvent', 'MessageEvent',
41
+ 'ErrorEvent', 'CloseEvent', 'ProgressEvent', 'UIEvent',
42
+ 'MouseEvent', 'PointerEvent', 'KeyboardEvent', 'WheelEvent', 'FocusEvent',
43
+ 'EventSource',
44
+ 'DOMException',
45
+ 'performance', 'PerformanceObserver',
46
+ ],
47
+ dom: [
48
+ 'document', 'Image', 'HTMLCanvasElement', 'HTMLImageElement',
49
+ 'HTMLElement', 'MutationObserver', 'ResizeObserver', 'IntersectionObserver',
50
+ ],
51
+ };
52
+
53
+ 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) --------
69
+ Blob: '@gjsify/buffer/register',
70
+ File: '@gjsify/buffer/register',
71
+
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 -------------------------------------------
91
+ CompressionStream: 'compression-streams/register',
92
+ DecompressionStream: 'compression-streams/register',
93
+
94
+ // --- WebCrypto -----------------------------------------------------
95
+ crypto: 'webcrypto/register',
96
+
97
+ // --- Events + Abort ------------------------------------------------
98
+ AbortController: 'abort-controller/register',
99
+ 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',
113
+ EventSource: 'eventsource/register',
114
+
115
+ // --- Performance ---------------------------------------------------
116
+ performance: '@gjsify/web-globals/register',
117
+ PerformanceObserver: '@gjsify/web-globals/register',
118
+
119
+ // --- DOMException --------------------------------------------------
120
+ DOMException: 'dom-exception/register',
121
+
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
+ };
package/lib/index.mjs CHANGED
@@ -129,6 +129,7 @@ export const ALIASES_NODE_FOR_GJS = {
129
129
 
130
130
  /** Record of Web modules and his replacement for Gjs */
131
131
  export const ALIASES_WEB_FOR_GJS = {
132
+ // Bare specifiers (named imports, pure — no side-effects after Stage 2)
132
133
  'abort-controller': '@gjsify/abort-controller',
133
134
  'compression-streams': '@gjsify/compression-streams',
134
135
  'dom-events': '@gjsify/dom-events',
@@ -142,11 +143,24 @@ export const ALIASES_WEB_FOR_GJS = {
142
143
  'webgl': '@gjsify/webgl',
143
144
  'websocket': '@gjsify/websocket',
144
145
  'webstorage': '@gjsify/webstorage',
146
+
147
+ // /register subpaths (side-effect only — opt-in to global registration)
148
+ 'abort-controller/register': '@gjsify/abort-controller/register',
149
+ 'compression-streams/register': '@gjsify/compression-streams/register',
150
+ 'dom-events/register': '@gjsify/dom-events/register',
151
+ 'dom-exception/register': '@gjsify/dom-exception/register',
152
+ 'eventsource/register': '@gjsify/eventsource/register',
153
+ 'fetch/register': '@gjsify/fetch/register',
154
+ 'webcrypto/register': '@gjsify/webcrypto/register',
155
+ 'web-streams/register': '@gjsify/web-streams/register',
145
156
  }
146
157
 
147
158
  /** General record of modules for Node */
148
159
  export const ALIASES_GENERAL_FOR_NODE = {
149
160
  '@gjsify/node-globals': '@gjsify/empty',
161
+ '@gjsify/node-globals/register': '@gjsify/empty',
162
+ '@gjsify/web-globals': '@gjsify/empty',
163
+ '@gjsify/web-globals/register': '@gjsify/empty',
150
164
  }
151
165
 
152
166
  /** Record of Gjs modules (build in or not) and his replacement for Node */
@@ -156,6 +170,7 @@ export { ALIASES_GJS_FOR_NODE };
156
170
 
157
171
  /** Record of Web modules and his replacement for Node */
158
172
  export const ALIASES_WEB_FOR_NODE = {
173
+ // Bare specifiers → native re-exports (works for both named and side-effect imports)
159
174
  'abort-controller': '@gjsify/abort-controller/globals',
160
175
  'compression-streams': '@gjsify/compression-streams/globals',
161
176
  'dom-events': '@gjsify/dom-events/globals',
@@ -168,4 +183,24 @@ export const ALIASES_WEB_FOR_NODE = {
168
183
  'webgl': '@gjsify/webgl',
169
184
  'websocket': '@gjsify/websocket/globals',
170
185
  'webstorage': '@gjsify/webstorage',
186
+
187
+ // /register subpaths — no-op on Node (native globals are already set)
188
+ 'abort-controller/register': '@gjsify/empty',
189
+ 'compression-streams/register': '@gjsify/empty',
190
+ 'dom-events/register': '@gjsify/empty',
191
+ 'dom-exception/register': '@gjsify/empty',
192
+ 'eventsource/register': '@gjsify/empty',
193
+ 'fetch/register': '@gjsify/empty',
194
+ 'webcrypto/register': '@gjsify/empty',
195
+ 'web-streams/register': '@gjsify/empty',
196
+ '@gjsify/abort-controller/register': '@gjsify/empty',
197
+ '@gjsify/compression-streams/register': '@gjsify/empty',
198
+ '@gjsify/dom-events/register': '@gjsify/empty',
199
+ '@gjsify/dom-exception/register': '@gjsify/empty',
200
+ '@gjsify/eventsource/register': '@gjsify/empty',
201
+ '@gjsify/fetch/register': '@gjsify/empty',
202
+ '@gjsify/webcrypto/register': '@gjsify/empty',
203
+ '@gjsify/web-streams/register': '@gjsify/empty',
204
+ '@gjsify/dom-elements/register': '@gjsify/empty',
205
+ '@gjsify/buffer/register': '@gjsify/empty',
171
206
  }
package/package.json CHANGED
@@ -1,11 +1,19 @@
1
1
  {
2
2
  "name": "@gjsify/resolve-npm",
3
- "version": "0.1.7",
3
+ "version": "0.1.8",
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",