@ricsam/quickjs-core 0.2.0 → 0.2.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.
Files changed (59) hide show
  1. package/dist/cjs/blob.cjs +197 -0
  2. package/dist/cjs/blob.cjs.map +10 -0
  3. package/dist/cjs/class-builder.cjs +244 -0
  4. package/dist/cjs/class-builder.cjs.map +10 -0
  5. package/dist/cjs/dom-exception.cjs +95 -0
  6. package/dist/cjs/dom-exception.cjs.map +10 -0
  7. package/dist/cjs/file.cjs +234 -0
  8. package/dist/cjs/file.cjs.map +10 -0
  9. package/dist/cjs/function-builder.cjs +70 -0
  10. package/dist/cjs/function-builder.cjs.map +10 -0
  11. package/dist/cjs/marshal.cjs +191 -0
  12. package/dist/cjs/marshal.cjs.map +10 -0
  13. package/dist/cjs/package.json +1 -1
  14. package/dist/cjs/readable-stream.cjs +588 -0
  15. package/dist/cjs/readable-stream.cjs.map +10 -0
  16. package/dist/cjs/scope.cjs +76 -0
  17. package/dist/cjs/scope.cjs.map +10 -0
  18. package/dist/cjs/transform-stream.cjs +152 -0
  19. package/dist/cjs/transform-stream.cjs.map +10 -0
  20. package/dist/cjs/types.cjs +39 -0
  21. package/dist/cjs/types.cjs.map +10 -0
  22. package/dist/cjs/unmarshal.cjs +254 -0
  23. package/dist/cjs/unmarshal.cjs.map +10 -0
  24. package/dist/cjs/url-search-params.cjs +165 -0
  25. package/dist/cjs/url-search-params.cjs.map +10 -0
  26. package/dist/cjs/url.cjs +183 -0
  27. package/dist/cjs/url.cjs.map +10 -0
  28. package/dist/cjs/writable-stream.cjs +513 -0
  29. package/dist/cjs/writable-stream.cjs.map +10 -0
  30. package/dist/mjs/blob.mjs +166 -0
  31. package/dist/mjs/blob.mjs.map +10 -0
  32. package/dist/mjs/class-builder.mjs +213 -0
  33. package/dist/mjs/class-builder.mjs.map +10 -0
  34. package/dist/mjs/dom-exception.mjs +64 -0
  35. package/dist/mjs/dom-exception.mjs.map +10 -0
  36. package/dist/mjs/file.mjs +203 -0
  37. package/dist/mjs/file.mjs.map +10 -0
  38. package/dist/mjs/function-builder.mjs +39 -0
  39. package/dist/mjs/function-builder.mjs.map +10 -0
  40. package/dist/mjs/marshal.mjs +160 -0
  41. package/dist/mjs/marshal.mjs.map +10 -0
  42. package/dist/mjs/package.json +1 -1
  43. package/dist/mjs/readable-stream.mjs +557 -0
  44. package/dist/mjs/readable-stream.mjs.map +10 -0
  45. package/dist/mjs/scope.mjs +45 -0
  46. package/dist/mjs/scope.mjs.map +10 -0
  47. package/dist/mjs/transform-stream.mjs +121 -0
  48. package/dist/mjs/transform-stream.mjs.map +10 -0
  49. package/dist/mjs/types.mjs +8 -0
  50. package/dist/mjs/types.mjs.map +10 -0
  51. package/dist/mjs/unmarshal.mjs +223 -0
  52. package/dist/mjs/unmarshal.mjs.map +10 -0
  53. package/dist/mjs/url-search-params.mjs +134 -0
  54. package/dist/mjs/url-search-params.mjs.map +10 -0
  55. package/dist/mjs/url.mjs +152 -0
  56. package/dist/mjs/url.mjs.map +10 -0
  57. package/dist/mjs/writable-stream.mjs +482 -0
  58. package/dist/mjs/writable-stream.mjs.map +10 -0
  59. package/package.json +1 -1
@@ -0,0 +1,165 @@
1
+ // @bun @bun-cjs
2
+ (function(exports, require, module, __filename, __dirname) {var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
7
+ var __toCommonJS = (from) => {
8
+ var entry = __moduleCache.get(from), desc;
9
+ if (entry)
10
+ return entry;
11
+ entry = __defProp({}, "__esModule", { value: true });
12
+ if (from && typeof from === "object" || typeof from === "function")
13
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ }));
17
+ __moduleCache.set(from, entry);
18
+ return entry;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, {
23
+ get: all[name],
24
+ enumerable: true,
25
+ configurable: true,
26
+ set: (newValue) => all[name] = () => newValue
27
+ });
28
+ };
29
+
30
+ // packages/core/src/url-search-params.ts
31
+ var exports_url_search_params = {};
32
+ __export(exports_url_search_params, {
33
+ createURLSearchParamsClass: () => createURLSearchParamsClass
34
+ });
35
+ module.exports = __toCommonJS(exports_url_search_params);
36
+ var import_class_builder = require("./class-builder.ts");
37
+ function parseQueryString(query) {
38
+ const cleanQuery = query.startsWith("?") ? query.slice(1) : query;
39
+ if (!cleanQuery)
40
+ return [];
41
+ const params = [];
42
+ for (const pair of cleanQuery.split("&")) {
43
+ if (!pair)
44
+ continue;
45
+ const eqIndex = pair.indexOf("=");
46
+ if (eqIndex === -1) {
47
+ params.push([decodeURIComponent(pair), ""]);
48
+ } else {
49
+ const key = decodeURIComponent(pair.slice(0, eqIndex));
50
+ const value = decodeURIComponent(pair.slice(eqIndex + 1));
51
+ params.push([key, value]);
52
+ }
53
+ }
54
+ return params;
55
+ }
56
+ function createURLSearchParamsClass(context, stateMap) {
57
+ return import_class_builder.defineClass(context, stateMap, {
58
+ name: "URLSearchParams",
59
+ construct: (args) => {
60
+ const init = args[0];
61
+ let params = [];
62
+ if (init === undefined || init === null) {
63
+ params = [];
64
+ } else if (typeof init === "string") {
65
+ params = parseQueryString(init);
66
+ } else if (Array.isArray(init)) {
67
+ for (const pair of init) {
68
+ if (Array.isArray(pair) && pair.length >= 2) {
69
+ params.push([String(pair[0]), String(pair[1])]);
70
+ }
71
+ }
72
+ } else if (typeof init === "object") {
73
+ if ("params" in init && Array.isArray(init.params)) {
74
+ params = [...init.params];
75
+ } else {
76
+ for (const [key, value] of Object.entries(init)) {
77
+ params.push([String(key), String(value)]);
78
+ }
79
+ }
80
+ }
81
+ return { params };
82
+ },
83
+ properties: {
84
+ size: {
85
+ get() {
86
+ return this.params.length;
87
+ }
88
+ }
89
+ },
90
+ methods: {
91
+ append(name, value) {
92
+ this.params.push([String(name), String(value)]);
93
+ },
94
+ delete(name, value) {
95
+ const nameStr = String(name);
96
+ if (value !== undefined) {
97
+ const valueStr = String(value);
98
+ this.params = this.params.filter(([k, v]) => !(k === nameStr && v === valueStr));
99
+ } else {
100
+ this.params = this.params.filter(([k]) => k !== nameStr);
101
+ }
102
+ },
103
+ get(name) {
104
+ const nameStr = String(name);
105
+ const entry = this.params.find(([k]) => k === nameStr);
106
+ return entry ? entry[1] : null;
107
+ },
108
+ getAll(name) {
109
+ const nameStr = String(name);
110
+ return this.params.filter(([k]) => k === nameStr).map(([, v]) => v);
111
+ },
112
+ has(name, value) {
113
+ const nameStr = String(name);
114
+ if (value !== undefined) {
115
+ const valueStr = String(value);
116
+ return this.params.some(([k, v]) => k === nameStr && v === valueStr);
117
+ }
118
+ return this.params.some(([k]) => k === nameStr);
119
+ },
120
+ set(name, value) {
121
+ const nameStr = String(name);
122
+ const valueStr = String(value);
123
+ const firstIndex = this.params.findIndex(([k]) => k === nameStr);
124
+ this.params = this.params.filter(([k]) => k !== nameStr);
125
+ if (firstIndex >= 0 && firstIndex <= this.params.length) {
126
+ this.params.splice(firstIndex, 0, [nameStr, valueStr]);
127
+ } else {
128
+ this.params.push([nameStr, valueStr]);
129
+ }
130
+ },
131
+ sort() {
132
+ this.params.sort((a, b) => {
133
+ if (a[0] < b[0])
134
+ return -1;
135
+ if (a[0] > b[0])
136
+ return 1;
137
+ return 0;
138
+ });
139
+ },
140
+ toString() {
141
+ return this.params.map(([key, value]) => `${encodeURIComponent(key)}=${encodeURIComponent(value)}`).join("&");
142
+ },
143
+ entries() {
144
+ return [...this.params];
145
+ },
146
+ keys() {
147
+ return this.params.map(([k]) => k);
148
+ },
149
+ values() {
150
+ return this.params.map(([, v]) => v);
151
+ },
152
+ forEach(callback) {
153
+ if (typeof callback !== "function") {
154
+ throw new TypeError("callback must be a function");
155
+ }
156
+ for (const [name, value] of this.params) {
157
+ callback(value, name, this);
158
+ }
159
+ }
160
+ }
161
+ });
162
+ }
163
+ })
164
+
165
+ //# debugId=8785558BF41DA77F64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/url-search-params.ts"],
4
+ "sourcesContent": [
5
+ "import type { QuickJSContext, QuickJSHandle } from \"quickjs-emscripten\";\nimport type { StateMap } from \"./types.ts\";\nimport { defineClass } from \"./class-builder.ts\";\n\n/**\n * Internal state for URLSearchParams\n */\nexport interface URLSearchParamsState {\n params: [string, string][];\n}\n\n/**\n * Parse a query string into key-value pairs\n */\nfunction parseQueryString(query: string): [string, string][] {\n // Remove leading ? if present\n const cleanQuery = query.startsWith(\"?\") ? query.slice(1) : query;\n if (!cleanQuery) return [];\n\n const params: [string, string][] = [];\n for (const pair of cleanQuery.split(\"&\")) {\n if (!pair) continue;\n const eqIndex = pair.indexOf(\"=\");\n if (eqIndex === -1) {\n // Key with no value\n params.push([decodeURIComponent(pair), \"\"]);\n } else {\n const key = decodeURIComponent(pair.slice(0, eqIndex));\n const value = decodeURIComponent(pair.slice(eqIndex + 1));\n params.push([key, value]);\n }\n }\n return params;\n}\n\n/**\n * Create the URLSearchParams class for QuickJS\n */\nexport function createURLSearchParamsClass(\n context: QuickJSContext,\n stateMap: StateMap\n): QuickJSHandle {\n return defineClass<URLSearchParamsState>(context, stateMap, {\n name: \"URLSearchParams\",\n construct: (args) => {\n const init = args[0];\n let params: [string, string][] = [];\n\n if (init === undefined || init === null) {\n // Empty params\n params = [];\n } else if (typeof init === \"string\") {\n // Parse query string\n params = parseQueryString(init);\n } else if (Array.isArray(init)) {\n // Array of [key, value] pairs\n for (const pair of init) {\n if (Array.isArray(pair) && pair.length >= 2) {\n params.push([String(pair[0]), String(pair[1])]);\n }\n }\n } else if (typeof init === \"object\") {\n // Check if it's another URLSearchParamsState\n if (\"params\" in init && Array.isArray(init.params)) {\n params = [...(init as URLSearchParamsState).params];\n } else {\n // Plain object\n for (const [key, value] of Object.entries(init)) {\n params.push([String(key), String(value)]);\n }\n }\n }\n\n return { params };\n },\n properties: {\n size: {\n get(this: URLSearchParamsState) {\n return this.params.length;\n },\n },\n },\n methods: {\n append(this: URLSearchParamsState, name: unknown, value: unknown) {\n this.params.push([String(name), String(value)]);\n },\n delete(this: URLSearchParamsState, name: unknown, value?: unknown) {\n const nameStr = String(name);\n if (value !== undefined) {\n // Delete only entries with matching name AND value\n const valueStr = String(value);\n this.params = this.params.filter(\n ([k, v]) => !(k === nameStr && v === valueStr)\n );\n } else {\n // Delete all entries with matching name\n this.params = this.params.filter(([k]) => k !== nameStr);\n }\n },\n get(this: URLSearchParamsState, name: unknown): string | null {\n const nameStr = String(name);\n const entry = this.params.find(([k]) => k === nameStr);\n return entry ? entry[1] : null;\n },\n getAll(this: URLSearchParamsState, name: unknown): string[] {\n const nameStr = String(name);\n return this.params.filter(([k]) => k === nameStr).map(([, v]) => v);\n },\n has(this: URLSearchParamsState, name: unknown, value?: unknown): boolean {\n const nameStr = String(name);\n if (value !== undefined) {\n const valueStr = String(value);\n return this.params.some(([k, v]) => k === nameStr && v === valueStr);\n }\n return this.params.some(([k]) => k === nameStr);\n },\n set(this: URLSearchParamsState, name: unknown, value: unknown) {\n const nameStr = String(name);\n const valueStr = String(value);\n // Remove all existing entries with this name\n const firstIndex = this.params.findIndex(([k]) => k === nameStr);\n this.params = this.params.filter(([k]) => k !== nameStr);\n // Insert the new value at the first position (or end if not found)\n if (firstIndex >= 0 && firstIndex <= this.params.length) {\n this.params.splice(firstIndex, 0, [nameStr, valueStr]);\n } else {\n this.params.push([nameStr, valueStr]);\n }\n },\n sort(this: URLSearchParamsState) {\n this.params.sort((a, b) => {\n if (a[0] < b[0]) return -1;\n if (a[0] > b[0]) return 1;\n return 0;\n });\n },\n toString(this: URLSearchParamsState): string {\n return this.params\n .map(\n ([key, value]) =>\n `${encodeURIComponent(key)}=${encodeURIComponent(value)}`\n )\n .join(\"&\");\n },\n entries(this: URLSearchParamsState): [string, string][] {\n return [...this.params];\n },\n keys(this: URLSearchParamsState): string[] {\n return this.params.map(([k]) => k);\n },\n values(this: URLSearchParamsState): string[] {\n return this.params.map(([, v]) => v);\n },\n forEach(this: URLSearchParamsState, callback: unknown) {\n if (typeof callback !== \"function\") {\n throw new TypeError(\"callback must be a function\");\n }\n for (const [name, value] of this.params) {\n (callback as (value: string, name: string, parent: URLSearchParamsState) => void)(\n value,\n name,\n this\n );\n }\n },\n },\n });\n}\n"
6
+ ],
7
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAE4B,IAA5B;AAYA,SAAS,gBAAgB,CAAC,OAAmC;AAAA,EAE3D,MAAM,aAAa,MAAM,WAAW,GAAG,IAAI,MAAM,MAAM,CAAC,IAAI;AAAA,EAC5D,IAAI,CAAC;AAAA,IAAY,OAAO,CAAC;AAAA,EAEzB,MAAM,SAA6B,CAAC;AAAA,EACpC,WAAW,QAAQ,WAAW,MAAM,GAAG,GAAG;AAAA,IACxC,IAAI,CAAC;AAAA,MAAM;AAAA,IACX,MAAM,UAAU,KAAK,QAAQ,GAAG;AAAA,IAChC,IAAI,YAAY,IAAI;AAAA,MAElB,OAAO,KAAK,CAAC,mBAAmB,IAAI,GAAG,EAAE,CAAC;AAAA,IAC5C,EAAO;AAAA,MACL,MAAM,MAAM,mBAAmB,KAAK,MAAM,GAAG,OAAO,CAAC;AAAA,MACrD,MAAM,QAAQ,mBAAmB,KAAK,MAAM,UAAU,CAAC,CAAC;AAAA,MACxD,OAAO,KAAK,CAAC,KAAK,KAAK,CAAC;AAAA;AAAA,EAE5B;AAAA,EACA,OAAO;AAAA;AAMF,SAAS,0BAA0B,CACxC,SACA,UACe;AAAA,EACf,OAAO,iCAAkC,SAAS,UAAU;AAAA,IAC1D,MAAM;AAAA,IACN,WAAW,CAAC,SAAS;AAAA,MACnB,MAAM,OAAO,KAAK;AAAA,MAClB,IAAI,SAA6B,CAAC;AAAA,MAElC,IAAI,SAAS,aAAa,SAAS,MAAM;AAAA,QAEvC,SAAS,CAAC;AAAA,MACZ,EAAO,SAAI,OAAO,SAAS,UAAU;AAAA,QAEnC,SAAS,iBAAiB,IAAI;AAAA,MAChC,EAAO,SAAI,MAAM,QAAQ,IAAI,GAAG;AAAA,QAE9B,WAAW,QAAQ,MAAM;AAAA,UACvB,IAAI,MAAM,QAAQ,IAAI,KAAK,KAAK,UAAU,GAAG;AAAA,YAC3C,OAAO,KAAK,CAAC,OAAO,KAAK,EAAE,GAAG,OAAO,KAAK,EAAE,CAAC,CAAC;AAAA,UAChD;AAAA,QACF;AAAA,MACF,EAAO,SAAI,OAAO,SAAS,UAAU;AAAA,QAEnC,IAAI,YAAY,QAAQ,MAAM,QAAQ,KAAK,MAAM,GAAG;AAAA,UAClD,SAAS,CAAC,GAAI,KAA8B,MAAM;AAAA,QACpD,EAAO;AAAA,UAEL,YAAY,KAAK,UAAU,OAAO,QAAQ,IAAI,GAAG;AAAA,YAC/C,OAAO,KAAK,CAAC,OAAO,GAAG,GAAG,OAAO,KAAK,CAAC,CAAC;AAAA,UAC1C;AAAA;AAAA,MAEJ;AAAA,MAEA,OAAO,EAAE,OAAO;AAAA;AAAA,IAElB,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,GAAG,GAA6B;AAAA,UAC9B,OAAO,KAAK,OAAO;AAAA;AAAA,MAEvB;AAAA,IACF;AAAA,IACA,SAAS;AAAA,MACP,MAAM,CAA6B,MAAe,OAAgB;AAAA,QAChE,KAAK,OAAO,KAAK,CAAC,OAAO,IAAI,GAAG,OAAO,KAAK,CAAC,CAAC;AAAA;AAAA,MAEhD,MAAM,CAA6B,MAAe,OAAiB;AAAA,QACjE,MAAM,UAAU,OAAO,IAAI;AAAA,QAC3B,IAAI,UAAU,WAAW;AAAA,UAEvB,MAAM,WAAW,OAAO,KAAK;AAAA,UAC7B,KAAK,SAAS,KAAK,OAAO,OACxB,EAAE,GAAG,OAAO,EAAE,MAAM,WAAW,MAAM,SACvC;AAAA,QACF,EAAO;AAAA,UAEL,KAAK,SAAS,KAAK,OAAO,OAAO,EAAE,OAAO,MAAM,OAAO;AAAA;AAAA;AAAA,MAG3D,GAAG,CAA6B,MAA8B;AAAA,QAC5D,MAAM,UAAU,OAAO,IAAI;AAAA,QAC3B,MAAM,QAAQ,KAAK,OAAO,KAAK,EAAE,OAAO,MAAM,OAAO;AAAA,QACrD,OAAO,QAAQ,MAAM,KAAK;AAAA;AAAA,MAE5B,MAAM,CAA6B,MAAyB;AAAA,QAC1D,MAAM,UAAU,OAAO,IAAI;AAAA,QAC3B,OAAO,KAAK,OAAO,OAAO,EAAE,OAAO,MAAM,OAAO,EAAE,IAAI,IAAI,OAAO,CAAC;AAAA;AAAA,MAEpE,GAAG,CAA6B,MAAe,OAA0B;AAAA,QACvE,MAAM,UAAU,OAAO,IAAI;AAAA,QAC3B,IAAI,UAAU,WAAW;AAAA,UACvB,MAAM,WAAW,OAAO,KAAK;AAAA,UAC7B,OAAO,KAAK,OAAO,KAAK,EAAE,GAAG,OAAO,MAAM,WAAW,MAAM,QAAQ;AAAA,QACrE;AAAA,QACA,OAAO,KAAK,OAAO,KAAK,EAAE,OAAO,MAAM,OAAO;AAAA;AAAA,MAEhD,GAAG,CAA6B,MAAe,OAAgB;AAAA,QAC7D,MAAM,UAAU,OAAO,IAAI;AAAA,QAC3B,MAAM,WAAW,OAAO,KAAK;AAAA,QAE7B,MAAM,aAAa,KAAK,OAAO,UAAU,EAAE,OAAO,MAAM,OAAO;AAAA,QAC/D,KAAK,SAAS,KAAK,OAAO,OAAO,EAAE,OAAO,MAAM,OAAO;AAAA,QAEvD,IAAI,cAAc,KAAK,cAAc,KAAK,OAAO,QAAQ;AAAA,UACvD,KAAK,OAAO,OAAO,YAAY,GAAG,CAAC,SAAS,QAAQ,CAAC;AAAA,QACvD,EAAO;AAAA,UACL,KAAK,OAAO,KAAK,CAAC,SAAS,QAAQ,CAAC;AAAA;AAAA;AAAA,MAGxC,IAAI,GAA6B;AAAA,QAC/B,KAAK,OAAO,KAAK,CAAC,GAAG,MAAM;AAAA,UACzB,IAAI,EAAE,KAAK,EAAE;AAAA,YAAI,OAAO;AAAA,UACxB,IAAI,EAAE,KAAK,EAAE;AAAA,YAAI,OAAO;AAAA,UACxB,OAAO;AAAA,SACR;AAAA;AAAA,MAEH,QAAQ,GAAqC;AAAA,QAC3C,OAAO,KAAK,OACT,IACC,EAAE,KAAK,WACL,GAAG,mBAAmB,GAAG,KAAK,mBAAmB,KAAK,GAC1D,EACC,KAAK,GAAG;AAAA;AAAA,MAEb,OAAO,GAAiD;AAAA,QACtD,OAAO,CAAC,GAAG,KAAK,MAAM;AAAA;AAAA,MAExB,IAAI,GAAuC;AAAA,QACzC,OAAO,KAAK,OAAO,IAAI,EAAE,OAAO,CAAC;AAAA;AAAA,MAEnC,MAAM,GAAuC;AAAA,QAC3C,OAAO,KAAK,OAAO,IAAI,IAAI,OAAO,CAAC;AAAA;AAAA,MAErC,OAAO,CAA6B,UAAmB;AAAA,QACrD,IAAI,OAAO,aAAa,YAAY;AAAA,UAClC,MAAM,IAAI,UAAU,6BAA6B;AAAA,QACnD;AAAA,QACA,YAAY,MAAM,UAAU,KAAK,QAAQ;AAAA,UACtC,SACC,OACA,MACA,IACF;AAAA,QACF;AAAA;AAAA,IAEJ;AAAA,EACF,CAAC;AAAA;",
8
+ "debugId": "8785558BF41DA77F64756E2164756E21",
9
+ "names": []
10
+ }
@@ -0,0 +1,183 @@
1
+ // @bun @bun-cjs
2
+ (function(exports, require, module, __filename, __dirname) {var __defProp = Object.defineProperty;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __moduleCache = /* @__PURE__ */ new WeakMap;
7
+ var __toCommonJS = (from) => {
8
+ var entry = __moduleCache.get(from), desc;
9
+ if (entry)
10
+ return entry;
11
+ entry = __defProp({}, "__esModule", { value: true });
12
+ if (from && typeof from === "object" || typeof from === "function")
13
+ __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
14
+ get: () => from[key],
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ }));
17
+ __moduleCache.set(from, entry);
18
+ return entry;
19
+ };
20
+ var __export = (target, all) => {
21
+ for (var name in all)
22
+ __defProp(target, name, {
23
+ get: all[name],
24
+ enumerable: true,
25
+ configurable: true,
26
+ set: (newValue) => all[name] = () => newValue
27
+ });
28
+ };
29
+
30
+ // packages/core/src/url.ts
31
+ var exports_url = {};
32
+ __export(exports_url, {
33
+ createURLClass: () => createURLClass,
34
+ addURLSearchParamsGetter: () => addURLSearchParamsGetter
35
+ });
36
+ module.exports = __toCommonJS(exports_url);
37
+ var import_class_builder = require("./class-builder.ts");
38
+ function createURLClass(context, stateMap) {
39
+ return import_class_builder.defineClass(context, stateMap, {
40
+ name: "URL",
41
+ construct: (args) => {
42
+ const urlString = args[0];
43
+ const base = args[1];
44
+ if (urlString === undefined) {
45
+ throw new TypeError("Failed to construct 'URL': 1 argument required, but only 0 present.");
46
+ }
47
+ let parsed;
48
+ try {
49
+ if (base !== undefined) {
50
+ const baseStr = typeof base === "object" && base !== null && "href" in base ? base.href : String(base);
51
+ parsed = new globalThis.URL(String(urlString), baseStr);
52
+ } else {
53
+ parsed = new globalThis.URL(String(urlString));
54
+ }
55
+ } catch (e) {
56
+ throw new TypeError(`Failed to construct 'URL': Invalid URL`);
57
+ }
58
+ return {
59
+ hash: parsed.hash,
60
+ host: parsed.host,
61
+ hostname: parsed.hostname,
62
+ href: parsed.href,
63
+ origin: parsed.origin,
64
+ password: parsed.password,
65
+ pathname: parsed.pathname,
66
+ port: parsed.port,
67
+ protocol: parsed.protocol,
68
+ search: parsed.search,
69
+ username: parsed.username
70
+ };
71
+ },
72
+ properties: {
73
+ hash: {
74
+ get() {
75
+ return this.hash;
76
+ }
77
+ },
78
+ host: {
79
+ get() {
80
+ return this.host;
81
+ }
82
+ },
83
+ hostname: {
84
+ get() {
85
+ return this.hostname;
86
+ }
87
+ },
88
+ href: {
89
+ get() {
90
+ return this.href;
91
+ }
92
+ },
93
+ origin: {
94
+ get() {
95
+ return this.origin;
96
+ }
97
+ },
98
+ password: {
99
+ get() {
100
+ return this.password;
101
+ }
102
+ },
103
+ pathname: {
104
+ get() {
105
+ return this.pathname;
106
+ }
107
+ },
108
+ port: {
109
+ get() {
110
+ return this.port;
111
+ }
112
+ },
113
+ protocol: {
114
+ get() {
115
+ return this.protocol;
116
+ }
117
+ },
118
+ search: {
119
+ get() {
120
+ return this.search;
121
+ }
122
+ },
123
+ username: {
124
+ get() {
125
+ return this.username;
126
+ }
127
+ }
128
+ },
129
+ methods: {
130
+ toString() {
131
+ return this.href;
132
+ },
133
+ toJSON() {
134
+ return this.href;
135
+ },
136
+ __getSearch__() {
137
+ return this.search;
138
+ }
139
+ },
140
+ staticMethods: {
141
+ canParse(url, base) {
142
+ try {
143
+ if (base !== undefined) {
144
+ new globalThis.URL(String(url), String(base));
145
+ } else {
146
+ new globalThis.URL(String(url));
147
+ }
148
+ return true;
149
+ } catch {
150
+ return false;
151
+ }
152
+ }
153
+ }
154
+ });
155
+ }
156
+ function addURLSearchParamsGetter(context) {
157
+ const result = context.evalCode(`
158
+ (function() {
159
+ const searchParamsCache = new Map();
160
+
161
+ Object.defineProperty(URL.prototype, 'searchParams', {
162
+ get: function() {
163
+ const instanceId = this.__instanceId__;
164
+ if (!searchParamsCache.has(instanceId)) {
165
+ searchParamsCache.set(instanceId, new URLSearchParams(this.__getSearch__()));
166
+ }
167
+ return searchParamsCache.get(instanceId);
168
+ },
169
+ enumerable: true,
170
+ configurable: true
171
+ });
172
+ })();
173
+ `);
174
+ if (result.error) {
175
+ const err = context.dump(result.error);
176
+ result.error.dispose();
177
+ throw new Error(`Failed to add searchParams getter: ${JSON.stringify(err)}`);
178
+ }
179
+ result.value.dispose();
180
+ }
181
+ })
182
+
183
+ //# debugId=41CFF52047CA7CAC64756E2164756E21
@@ -0,0 +1,10 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/url.ts"],
4
+ "sourcesContent": [
5
+ "import type { QuickJSContext, QuickJSHandle } from \"quickjs-emscripten\";\nimport type { StateMap } from \"./types.ts\";\nimport { defineClass } from \"./class-builder.ts\";\n\n/**\n * Internal state for URL\n */\nexport interface URLState {\n hash: string;\n host: string;\n hostname: string;\n href: string;\n origin: string;\n password: string;\n pathname: string;\n port: string;\n protocol: string;\n search: string;\n username: string;\n}\n\n/**\n * Create the URL class for QuickJS\n *\n * Note: The searchParams property is added separately via evalCode\n * after this class is registered, as it needs to return a URLSearchParams instance.\n */\nexport function createURLClass(\n context: QuickJSContext,\n stateMap: StateMap\n): QuickJSHandle {\n return defineClass<URLState>(context, stateMap, {\n name: \"URL\",\n construct: (args) => {\n const urlString = args[0];\n const base = args[1];\n\n if (urlString === undefined) {\n throw new TypeError(\"Failed to construct 'URL': 1 argument required, but only 0 present.\");\n }\n\n let parsed: globalThis.URL;\n try {\n if (base !== undefined) {\n // Handle base URL\n const baseStr = typeof base === \"object\" && base !== null && \"href\" in base\n ? (base as URLState).href\n : String(base);\n parsed = new globalThis.URL(String(urlString), baseStr);\n } else {\n parsed = new globalThis.URL(String(urlString));\n }\n } catch (e) {\n throw new TypeError(`Failed to construct 'URL': Invalid URL`);\n }\n\n return {\n hash: parsed.hash,\n host: parsed.host,\n hostname: parsed.hostname,\n href: parsed.href,\n origin: parsed.origin,\n password: parsed.password,\n pathname: parsed.pathname,\n port: parsed.port,\n protocol: parsed.protocol,\n search: parsed.search,\n username: parsed.username,\n };\n },\n properties: {\n hash: {\n get(this: URLState) {\n return this.hash;\n },\n },\n host: {\n get(this: URLState) {\n return this.host;\n },\n },\n hostname: {\n get(this: URLState) {\n return this.hostname;\n },\n },\n href: {\n get(this: URLState) {\n return this.href;\n },\n },\n origin: {\n get(this: URLState) {\n return this.origin;\n },\n },\n password: {\n get(this: URLState) {\n return this.password;\n },\n },\n pathname: {\n get(this: URLState) {\n return this.pathname;\n },\n },\n port: {\n get(this: URLState) {\n return this.port;\n },\n },\n protocol: {\n get(this: URLState) {\n return this.protocol;\n },\n },\n search: {\n get(this: URLState) {\n return this.search;\n },\n },\n username: {\n get(this: URLState) {\n return this.username;\n },\n },\n },\n methods: {\n toString(this: URLState): string {\n return this.href;\n },\n toJSON(this: URLState): string {\n return this.href;\n },\n // Private method to get search for URLSearchParams creation\n __getSearch__(this: URLState): string {\n return this.search;\n },\n },\n staticMethods: {\n canParse(url: unknown, base?: unknown): boolean {\n try {\n if (base !== undefined) {\n new globalThis.URL(String(url), String(base));\n } else {\n new globalThis.URL(String(url));\n }\n return true;\n } catch {\n return false;\n }\n },\n },\n });\n}\n\n/**\n * Add searchParams getter to URL prototype using evalCode\n * This must be called after both URL and URLSearchParams are registered as globals\n */\nexport function addURLSearchParamsGetter(context: QuickJSContext): void {\n // Use a WeakMap-like pattern with a Map keyed by instance ID\n // Each URL instance will cache its URLSearchParams\n const result = context.evalCode(`\n (function() {\n const searchParamsCache = new Map();\n\n Object.defineProperty(URL.prototype, 'searchParams', {\n get: function() {\n const instanceId = this.__instanceId__;\n if (!searchParamsCache.has(instanceId)) {\n searchParamsCache.set(instanceId, new URLSearchParams(this.__getSearch__()));\n }\n return searchParamsCache.get(instanceId);\n },\n enumerable: true,\n configurable: true\n });\n })();\n `);\n\n if (result.error) {\n const err = context.dump(result.error);\n result.error.dispose();\n throw new Error(`Failed to add searchParams getter: ${JSON.stringify(err)}`);\n }\n result.value.dispose();\n}\n"
6
+ ],
7
+ "mappings": "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",
8
+ "debugId": "41CFF52047CA7CAC64756E2164756E21",
9
+ "names": []
10
+ }