@comapeo/map-server 1.0.0-pre.0 → 1.0.0-pre.3

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 (168) hide show
  1. package/README.md +5 -6
  2. package/dist/context.d.ts +1 -1
  3. package/dist/context.js +1 -1
  4. package/dist/index.d.ts +1 -0
  5. package/dist/index.d.ts.map +1 -1
  6. package/dist/index.js +2 -2
  7. package/dist/lib/download-request.d.ts.map +1 -1
  8. package/dist/lib/download-request.js +2 -3
  9. package/dist/lib/map-share.d.ts +1 -1
  10. package/dist/lib/map-share.d.ts.map +1 -1
  11. package/dist/lib/map-share.js +2 -2
  12. package/dist/lib/secret-stream-fetch.d.ts +1 -1
  13. package/dist/lib/secret-stream-fetch.d.ts.map +1 -1
  14. package/dist/lib/secret-stream-fetch.js +2 -1
  15. package/dist/lib/utils.d.ts +1 -0
  16. package/dist/lib/utils.d.ts.map +1 -1
  17. package/dist/lib/utils.js +6 -2
  18. package/dist/routes/downloads.d.ts +1 -1
  19. package/dist/routes/map-shares.d.ts +1 -1
  20. package/dist/routes/map-shares.d.ts.map +1 -1
  21. package/dist/routes/map-shares.js +7 -2
  22. package/dist/routes/maps.js +1 -1
  23. package/dist/types.d.ts +8 -8
  24. package/dist/types.d.ts.map +1 -1
  25. package/dist/types.js +4 -4
  26. package/node_modules/@fastify/busboy/LICENSE +24 -0
  27. package/node_modules/@fastify/busboy/README.md +270 -0
  28. package/node_modules/@fastify/busboy/deps/dicer/LICENSE +19 -0
  29. package/node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js +213 -0
  30. package/node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js +100 -0
  31. package/node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js +13 -0
  32. package/node_modules/@fastify/busboy/deps/dicer/lib/dicer.d.ts +164 -0
  33. package/node_modules/@fastify/busboy/deps/streamsearch/sbmh.js +230 -0
  34. package/node_modules/@fastify/busboy/lib/main.d.ts +196 -0
  35. package/node_modules/@fastify/busboy/lib/main.js +85 -0
  36. package/node_modules/@fastify/busboy/lib/types/multipart.js +306 -0
  37. package/node_modules/@fastify/busboy/lib/types/urlencoded.js +190 -0
  38. package/node_modules/@fastify/busboy/lib/utils/Decoder.js +54 -0
  39. package/node_modules/@fastify/busboy/lib/utils/basename.js +14 -0
  40. package/node_modules/@fastify/busboy/lib/utils/decodeText.js +114 -0
  41. package/node_modules/@fastify/busboy/lib/utils/getLimit.js +16 -0
  42. package/node_modules/@fastify/busboy/lib/utils/parseParams.js +201 -0
  43. package/node_modules/@fastify/busboy/package.json +81 -0
  44. package/node_modules/@whatwg-node/fetch/CHANGELOG.md +941 -0
  45. package/node_modules/@whatwg-node/fetch/README.md +141 -0
  46. package/node_modules/@whatwg-node/fetch/dist/create-node-ponyfill.js +100 -0
  47. package/node_modules/@whatwg-node/fetch/dist/esm-ponyfill.js +71 -0
  48. package/node_modules/@whatwg-node/fetch/dist/global-ponyfill.js +22 -0
  49. package/node_modules/@whatwg-node/fetch/dist/index.d.ts +73 -0
  50. package/node_modules/@whatwg-node/fetch/dist/node-ponyfill.js +35 -0
  51. package/node_modules/@whatwg-node/fetch/dist/shouldSkipPonyfill.js +17 -0
  52. package/node_modules/@whatwg-node/fetch/package.json +31 -0
  53. package/node_modules/@whatwg-node/node-fetch/cjs/AbortError.js +19 -0
  54. package/node_modules/@whatwg-node/node-fetch/cjs/Blob.js +291 -0
  55. package/node_modules/@whatwg-node/node-fetch/cjs/Body.js +529 -0
  56. package/node_modules/@whatwg-node/node-fetch/cjs/CompressionStream.js +34 -0
  57. package/node_modules/@whatwg-node/node-fetch/cjs/DecompressionStream.js +34 -0
  58. package/node_modules/@whatwg-node/node-fetch/cjs/File.js +15 -0
  59. package/node_modules/@whatwg-node/node-fetch/cjs/FormData.js +150 -0
  60. package/node_modules/@whatwg-node/node-fetch/cjs/Headers.js +309 -0
  61. package/node_modules/@whatwg-node/node-fetch/cjs/IteratorObject.js +134 -0
  62. package/node_modules/@whatwg-node/node-fetch/cjs/ReadableStream.js +245 -0
  63. package/node_modules/@whatwg-node/node-fetch/cjs/Request.js +128 -0
  64. package/node_modules/@whatwg-node/node-fetch/cjs/Response.js +108 -0
  65. package/node_modules/@whatwg-node/node-fetch/cjs/TextEncoderDecoder.js +49 -0
  66. package/node_modules/@whatwg-node/node-fetch/cjs/TextEncoderDecoderStream.js +40 -0
  67. package/node_modules/@whatwg-node/node-fetch/cjs/TransformStream.js +79 -0
  68. package/node_modules/@whatwg-node/node-fetch/cjs/URL.js +28 -0
  69. package/node_modules/@whatwg-node/node-fetch/cjs/URLSearchParams.js +4 -0
  70. package/node_modules/@whatwg-node/node-fetch/cjs/WritableStream.js +115 -0
  71. package/node_modules/@whatwg-node/node-fetch/cjs/fetch.js +107 -0
  72. package/node_modules/@whatwg-node/node-fetch/cjs/fetchCurl.js +142 -0
  73. package/node_modules/@whatwg-node/node-fetch/cjs/fetchNodeHttp.js +152 -0
  74. package/node_modules/@whatwg-node/node-fetch/cjs/index.js +42 -0
  75. package/node_modules/@whatwg-node/node-fetch/cjs/package.json +1 -0
  76. package/node_modules/@whatwg-node/node-fetch/cjs/utils.js +125 -0
  77. package/node_modules/@whatwg-node/node-fetch/esm/AbortError.js +15 -0
  78. package/node_modules/@whatwg-node/node-fetch/esm/Blob.js +279 -0
  79. package/node_modules/@whatwg-node/node-fetch/esm/Body.js +525 -0
  80. package/node_modules/@whatwg-node/node-fetch/esm/CompressionStream.js +29 -0
  81. package/node_modules/@whatwg-node/node-fetch/esm/DecompressionStream.js +29 -0
  82. package/node_modules/@whatwg-node/node-fetch/esm/File.js +11 -0
  83. package/node_modules/@whatwg-node/node-fetch/esm/FormData.js +145 -0
  84. package/node_modules/@whatwg-node/node-fetch/esm/Headers.js +304 -0
  85. package/node_modules/@whatwg-node/node-fetch/esm/IteratorObject.js +130 -0
  86. package/node_modules/@whatwg-node/node-fetch/esm/ReadableStream.js +241 -0
  87. package/node_modules/@whatwg-node/node-fetch/esm/Request.js +124 -0
  88. package/node_modules/@whatwg-node/node-fetch/esm/Response.js +104 -0
  89. package/node_modules/@whatwg-node/node-fetch/esm/TextEncoderDecoder.js +43 -0
  90. package/node_modules/@whatwg-node/node-fetch/esm/TextEncoderDecoderStream.js +35 -0
  91. package/node_modules/@whatwg-node/node-fetch/esm/TransformStream.js +75 -0
  92. package/node_modules/@whatwg-node/node-fetch/esm/URL.js +24 -0
  93. package/node_modules/@whatwg-node/node-fetch/esm/URLSearchParams.js +1 -0
  94. package/node_modules/@whatwg-node/node-fetch/esm/WritableStream.js +111 -0
  95. package/node_modules/@whatwg-node/node-fetch/esm/fetch.js +104 -0
  96. package/node_modules/@whatwg-node/node-fetch/esm/fetchCurl.js +139 -0
  97. package/node_modules/@whatwg-node/node-fetch/esm/fetchNodeHttp.js +148 -0
  98. package/node_modules/@whatwg-node/node-fetch/esm/index.js +18 -0
  99. package/node_modules/@whatwg-node/node-fetch/esm/utils.js +110 -0
  100. package/node_modules/@whatwg-node/node-fetch/package.json +46 -0
  101. package/node_modules/@whatwg-node/node-fetch/typings/AbortError.d.cts +4 -0
  102. package/node_modules/@whatwg-node/node-fetch/typings/AbortError.d.ts +4 -0
  103. package/node_modules/@whatwg-node/node-fetch/typings/Blob.d.cts +63 -0
  104. package/node_modules/@whatwg-node/node-fetch/typings/Blob.d.ts +63 -0
  105. package/node_modules/@whatwg-node/node-fetch/typings/Body.d.cts +54 -0
  106. package/node_modules/@whatwg-node/node-fetch/typings/Body.d.ts +54 -0
  107. package/node_modules/@whatwg-node/node-fetch/typings/CompressionStream.d.cts +6 -0
  108. package/node_modules/@whatwg-node/node-fetch/typings/CompressionStream.d.ts +6 -0
  109. package/node_modules/@whatwg-node/node-fetch/typings/DecompressionStream.d.cts +6 -0
  110. package/node_modules/@whatwg-node/node-fetch/typings/DecompressionStream.d.ts +6 -0
  111. package/node_modules/@whatwg-node/node-fetch/typings/File.d.cts +7 -0
  112. package/node_modules/@whatwg-node/node-fetch/typings/File.d.ts +7 -0
  113. package/node_modules/@whatwg-node/node-fetch/typings/FormData.d.cts +22 -0
  114. package/node_modules/@whatwg-node/node-fetch/typings/FormData.d.ts +22 -0
  115. package/node_modules/@whatwg-node/node-fetch/typings/Headers.d.cts +26 -0
  116. package/node_modules/@whatwg-node/node-fetch/typings/Headers.d.ts +26 -0
  117. package/node_modules/@whatwg-node/node-fetch/typings/IteratorObject.d.cts +20 -0
  118. package/node_modules/@whatwg-node/node-fetch/typings/IteratorObject.d.ts +20 -0
  119. package/node_modules/@whatwg-node/node-fetch/typings/ReadableStream.d.cts +27 -0
  120. package/node_modules/@whatwg-node/node-fetch/typings/ReadableStream.d.ts +27 -0
  121. package/node_modules/@whatwg-node/node-fetch/typings/Request.d.cts +38 -0
  122. package/node_modules/@whatwg-node/node-fetch/typings/Request.d.ts +38 -0
  123. package/node_modules/@whatwg-node/node-fetch/typings/Response.d.cts +23 -0
  124. package/node_modules/@whatwg-node/node-fetch/typings/Response.d.ts +23 -0
  125. package/node_modules/@whatwg-node/node-fetch/typings/TextEncoderDecoder.d.cts +15 -0
  126. package/node_modules/@whatwg-node/node-fetch/typings/TextEncoderDecoder.d.ts +15 -0
  127. package/node_modules/@whatwg-node/node-fetch/typings/TextEncoderDecoderStream.d.cts +14 -0
  128. package/node_modules/@whatwg-node/node-fetch/typings/TextEncoderDecoderStream.d.ts +14 -0
  129. package/node_modules/@whatwg-node/node-fetch/typings/TransformStream.d.cts +9 -0
  130. package/node_modules/@whatwg-node/node-fetch/typings/TransformStream.d.ts +9 -0
  131. package/node_modules/@whatwg-node/node-fetch/typings/URL.d.cts +16 -0
  132. package/node_modules/@whatwg-node/node-fetch/typings/URL.d.ts +16 -0
  133. package/node_modules/@whatwg-node/node-fetch/typings/URLSearchParams.d.cts +4 -0
  134. package/node_modules/@whatwg-node/node-fetch/typings/URLSearchParams.d.ts +4 -0
  135. package/node_modules/@whatwg-node/node-fetch/typings/WritableStream.d.cts +9 -0
  136. package/node_modules/@whatwg-node/node-fetch/typings/WritableStream.d.ts +9 -0
  137. package/node_modules/@whatwg-node/node-fetch/typings/fetch.d.cts +3 -0
  138. package/node_modules/@whatwg-node/node-fetch/typings/fetch.d.ts +3 -0
  139. package/node_modules/@whatwg-node/node-fetch/typings/fetchCurl.d.cts +3 -0
  140. package/node_modules/@whatwg-node/node-fetch/typings/fetchCurl.d.ts +3 -0
  141. package/node_modules/@whatwg-node/node-fetch/typings/fetchNodeHttp.d.cts +3 -0
  142. package/node_modules/@whatwg-node/node-fetch/typings/fetchNodeHttp.d.ts +3 -0
  143. package/node_modules/@whatwg-node/node-fetch/typings/index.d.cts +18 -0
  144. package/node_modules/@whatwg-node/node-fetch/typings/index.d.ts +18 -0
  145. package/node_modules/@whatwg-node/node-fetch/typings/utils.d.cts +21 -0
  146. package/node_modules/@whatwg-node/node-fetch/typings/utils.d.ts +21 -0
  147. package/node_modules/@whatwg-node/server/cjs/index.js +0 -3
  148. package/node_modules/@whatwg-node/server/esm/index.js +0 -2
  149. package/node_modules/@whatwg-node/server/package.json +2 -1
  150. package/node_modules/urlpattern-polyfill/LICENSE +19 -0
  151. package/node_modules/urlpattern-polyfill/README.md +242 -0
  152. package/node_modules/urlpattern-polyfill/dist/index.d.ts +9 -0
  153. package/node_modules/urlpattern-polyfill/dist/types.d.ts +49 -0
  154. package/node_modules/urlpattern-polyfill/dist/urlpattern.cjs +1 -0
  155. package/node_modules/urlpattern-polyfill/dist/urlpattern.js +1 -0
  156. package/node_modules/urlpattern-polyfill/index.cjs +7 -0
  157. package/node_modules/urlpattern-polyfill/index.js +7 -0
  158. package/node_modules/urlpattern-polyfill/package.json +149 -0
  159. package/package.json +19 -10
  160. package/src/context.ts +1 -1
  161. package/src/index.ts +3 -2
  162. package/src/lib/download-request.ts +3 -4
  163. package/src/lib/map-share.ts +3 -3
  164. package/src/lib/secret-stream-fetch.ts +3 -2
  165. package/src/lib/utils.ts +9 -2
  166. package/src/routes/map-shares.ts +12 -3
  167. package/src/routes/maps.ts +1 -1
  168. package/src/types.ts +9 -7
@@ -0,0 +1,115 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PonyfillWritableStream = void 0;
4
+ const node_events_1 = require("node:events");
5
+ const node_stream_1 = require("node:stream");
6
+ const promise_helpers_1 = require("@whatwg-node/promise-helpers");
7
+ const utils_js_1 = require("./utils.js");
8
+ class PonyfillWritableStream {
9
+ writable;
10
+ constructor(underlyingSink) {
11
+ if (underlyingSink instanceof node_stream_1.Writable) {
12
+ this.writable = underlyingSink;
13
+ }
14
+ else if (underlyingSink) {
15
+ const writable = new node_stream_1.Writable({
16
+ write(chunk, _encoding, callback) {
17
+ try {
18
+ const result = underlyingSink.write?.(chunk, controller);
19
+ if (result instanceof Promise) {
20
+ result.then(() => {
21
+ callback();
22
+ }, err => {
23
+ callback(err);
24
+ });
25
+ }
26
+ else {
27
+ callback();
28
+ }
29
+ }
30
+ catch (err) {
31
+ callback(err);
32
+ }
33
+ },
34
+ final(callback) {
35
+ const result = underlyingSink.close?.();
36
+ if (result instanceof Promise) {
37
+ result.then(() => {
38
+ callback();
39
+ }, err => {
40
+ callback(err);
41
+ });
42
+ }
43
+ else {
44
+ callback();
45
+ }
46
+ },
47
+ });
48
+ this.writable = writable;
49
+ const abortCtrl = new AbortController();
50
+ const controller = {
51
+ signal: abortCtrl.signal,
52
+ error(e) {
53
+ writable.destroy(e);
54
+ },
55
+ };
56
+ writable.once('error', err => abortCtrl.abort(err));
57
+ writable.once('close', () => abortCtrl.abort());
58
+ }
59
+ else {
60
+ this.writable = new node_stream_1.Writable();
61
+ }
62
+ }
63
+ getWriter() {
64
+ const writable = this.writable;
65
+ return {
66
+ get closed() {
67
+ return (0, node_events_1.once)(writable, 'close');
68
+ },
69
+ get desiredSize() {
70
+ return writable.writableLength;
71
+ },
72
+ get ready() {
73
+ return (0, node_events_1.once)(writable, 'drain');
74
+ },
75
+ releaseLock() {
76
+ // no-op
77
+ },
78
+ write(chunk) {
79
+ const promise = (0, utils_js_1.fakePromise)();
80
+ if (chunk == null) {
81
+ return promise;
82
+ }
83
+ return promise.then(() => (0, utils_js_1.safeWrite)(chunk, writable));
84
+ },
85
+ close() {
86
+ if (!writable.errored && writable.closed) {
87
+ return (0, utils_js_1.fakePromise)();
88
+ }
89
+ if (writable.errored) {
90
+ return (0, promise_helpers_1.fakeRejectPromise)(writable.errored);
91
+ }
92
+ return (0, utils_js_1.fakePromise)().then(() => (0, utils_js_1.endStream)(writable));
93
+ },
94
+ abort(reason) {
95
+ writable.destroy(reason);
96
+ return (0, node_events_1.once)(writable, 'close');
97
+ },
98
+ };
99
+ }
100
+ close() {
101
+ if (!this.writable.errored && this.writable.closed) {
102
+ return (0, utils_js_1.fakePromise)();
103
+ }
104
+ if (this.writable.errored) {
105
+ return (0, promise_helpers_1.fakeRejectPromise)(this.writable.errored);
106
+ }
107
+ return (0, utils_js_1.fakePromise)().then(() => (0, utils_js_1.endStream)(this.writable));
108
+ }
109
+ abort(reason) {
110
+ this.writable.destroy(reason);
111
+ return (0, node_events_1.once)(this.writable, 'close');
112
+ }
113
+ locked = false;
114
+ }
115
+ exports.PonyfillWritableStream = PonyfillWritableStream;
@@ -0,0 +1,107 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchPonyfill = fetchPonyfill;
4
+ const node_buffer_1 = require("node:buffer");
5
+ const node_fs_1 = require("node:fs");
6
+ const node_url_1 = require("node:url");
7
+ const fetchCurl_js_1 = require("./fetchCurl.js");
8
+ const fetchNodeHttp_js_1 = require("./fetchNodeHttp.js");
9
+ const Request_js_1 = require("./Request.js");
10
+ const Response_js_1 = require("./Response.js");
11
+ const URL_js_1 = require("./URL.js");
12
+ const utils_js_1 = require("./utils.js");
13
+ const BASE64_SUFFIX = ';base64';
14
+ async function getResponseForFile(url) {
15
+ const path = (0, node_url_1.fileURLToPath)(url);
16
+ try {
17
+ await node_fs_1.promises.access(path, node_fs_1.promises.constants.R_OK);
18
+ const stats = await node_fs_1.promises.stat(path, {
19
+ bigint: true,
20
+ });
21
+ const readable = (0, node_fs_1.createReadStream)(path);
22
+ return new Response_js_1.PonyfillResponse(readable, {
23
+ status: 200,
24
+ statusText: 'OK',
25
+ headers: {
26
+ 'content-type': 'application/octet-stream',
27
+ 'last-modified': stats.mtime.toUTCString(),
28
+ },
29
+ });
30
+ }
31
+ catch (err) {
32
+ if (err.code === 'ENOENT') {
33
+ return new Response_js_1.PonyfillResponse(null, {
34
+ status: 404,
35
+ statusText: 'Not Found',
36
+ });
37
+ }
38
+ else if (err.code === 'EACCES') {
39
+ return new Response_js_1.PonyfillResponse(null, {
40
+ status: 403,
41
+ statusText: 'Forbidden',
42
+ });
43
+ }
44
+ throw err;
45
+ }
46
+ }
47
+ function getResponseForDataUri(url) {
48
+ const [mimeType = 'text/plain', ...datas] = url.substring(5).split(',');
49
+ const data = decodeURIComponent(datas.join(','));
50
+ if (mimeType.endsWith(BASE64_SUFFIX)) {
51
+ const buffer = node_buffer_1.Buffer.from(data, 'base64url');
52
+ const realMimeType = mimeType.slice(0, -BASE64_SUFFIX.length);
53
+ return new Response_js_1.PonyfillResponse(buffer, {
54
+ status: 200,
55
+ statusText: 'OK',
56
+ headers: {
57
+ 'content-type': realMimeType,
58
+ },
59
+ });
60
+ }
61
+ return new Response_js_1.PonyfillResponse(data, {
62
+ status: 200,
63
+ statusText: 'OK',
64
+ headers: {
65
+ 'content-type': mimeType,
66
+ },
67
+ });
68
+ }
69
+ function getResponseForBlob(url) {
70
+ const blob = URL_js_1.PonyfillURL.getBlobFromURL(url);
71
+ if (!blob) {
72
+ throw new TypeError('Invalid Blob URL');
73
+ }
74
+ return new Response_js_1.PonyfillResponse(blob, {
75
+ status: 200,
76
+ headers: {
77
+ 'content-type': blob.type,
78
+ 'content-length': blob.size.toString(),
79
+ },
80
+ });
81
+ }
82
+ function isURL(obj) {
83
+ return obj != null && obj.href != null;
84
+ }
85
+ function fetchPonyfill(info, init) {
86
+ if (typeof info === 'string' || isURL(info)) {
87
+ const ponyfillRequest = new Request_js_1.PonyfillRequest(info, init);
88
+ return fetchPonyfill(ponyfillRequest);
89
+ }
90
+ const fetchRequest = info;
91
+ if (fetchRequest.url.startsWith('data:')) {
92
+ const response = getResponseForDataUri(fetchRequest.url);
93
+ return (0, utils_js_1.fakePromise)(response);
94
+ }
95
+ if (fetchRequest.url.startsWith('file:')) {
96
+ const response = getResponseForFile(fetchRequest.url);
97
+ return response;
98
+ }
99
+ if (fetchRequest.url.startsWith('blob:')) {
100
+ const response = getResponseForBlob(fetchRequest.url);
101
+ return (0, utils_js_1.fakePromise)(response);
102
+ }
103
+ if (globalThis.libcurl && !fetchRequest.agent) {
104
+ return (0, fetchCurl_js_1.fetchCurl)(fetchRequest);
105
+ }
106
+ return (0, fetchNodeHttp_js_1.fetchNodeHttp)(fetchRequest);
107
+ }
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchCurl = fetchCurl;
4
+ const node_stream_1 = require("node:stream");
5
+ const node_tls_1 = require("node:tls");
6
+ const promise_helpers_1 = require("@whatwg-node/promise-helpers");
7
+ const Response_js_1 = require("./Response.js");
8
+ const utils_js_1 = require("./utils.js");
9
+ function fetchCurl(fetchRequest) {
10
+ const { Curl, CurlFeature, CurlPause, CurlProgressFunc } = globalThis['libcurl'];
11
+ const curlHandle = new Curl();
12
+ curlHandle.enable(CurlFeature.NoDataParsing);
13
+ curlHandle.setOpt('URL', fetchRequest.url);
14
+ if (process.env.NODE_TLS_REJECT_UNAUTHORIZED === '0') {
15
+ curlHandle.setOpt('SSL_VERIFYPEER', false);
16
+ }
17
+ if (process.env.NODE_EXTRA_CA_CERTS) {
18
+ curlHandle.setOpt('CAINFO', process.env.NODE_EXTRA_CA_CERTS);
19
+ }
20
+ else {
21
+ curlHandle.setOpt('CAINFO_BLOB', node_tls_1.rootCertificates.join('\n'));
22
+ }
23
+ curlHandle.enable(CurlFeature.StreamResponse);
24
+ let signal;
25
+ if (fetchRequest._signal === null) {
26
+ signal = undefined;
27
+ }
28
+ else if (fetchRequest._signal) {
29
+ signal = fetchRequest._signal;
30
+ }
31
+ curlHandle.setStreamProgressCallback(function () {
32
+ return signal?.aborted ? (process.env.DEBUG ? CurlProgressFunc.Continue : 1) : 0;
33
+ });
34
+ if (fetchRequest['bodyType'] === 'String') {
35
+ curlHandle.setOpt('POSTFIELDS', fetchRequest['bodyInit']);
36
+ }
37
+ else {
38
+ const nodeReadable = (fetchRequest.body != null
39
+ ? (0, utils_js_1.isNodeReadable)(fetchRequest.body)
40
+ ? fetchRequest.body
41
+ : node_stream_1.Readable.from(fetchRequest.body)
42
+ : null);
43
+ if (nodeReadable) {
44
+ curlHandle.setOpt('UPLOAD', true);
45
+ curlHandle.setUploadStream(nodeReadable);
46
+ }
47
+ }
48
+ if (process.env.DEBUG) {
49
+ curlHandle.setOpt('VERBOSE', true);
50
+ }
51
+ curlHandle.setOpt('TRANSFER_ENCODING', false);
52
+ curlHandle.setOpt('HTTP_TRANSFER_DECODING', true);
53
+ curlHandle.setOpt('FOLLOWLOCATION', fetchRequest.redirect === 'follow');
54
+ curlHandle.setOpt('MAXREDIRS', 20);
55
+ curlHandle.setOpt('ACCEPT_ENCODING', '');
56
+ curlHandle.setOpt('CUSTOMREQUEST', fetchRequest.method);
57
+ const headersSerializer = fetchRequest.headersSerializer || utils_js_1.defaultHeadersSerializer;
58
+ let size;
59
+ const curlHeaders = headersSerializer(fetchRequest.headers, value => {
60
+ size = Number(value);
61
+ });
62
+ if (size != null) {
63
+ curlHandle.setOpt('INFILESIZE', size);
64
+ }
65
+ curlHandle.setOpt('HTTPHEADER', curlHeaders);
66
+ curlHandle.enable(CurlFeature.NoHeaderParsing);
67
+ const deferredPromise = (0, promise_helpers_1.createDeferredPromise)();
68
+ let streamResolved;
69
+ function onAbort() {
70
+ if (curlHandle.isOpen) {
71
+ try {
72
+ curlHandle.pause(CurlPause.Recv);
73
+ }
74
+ catch (e) {
75
+ deferredPromise.reject(e);
76
+ }
77
+ }
78
+ }
79
+ signal?.addEventListener('abort', onAbort, { once: true });
80
+ curlHandle.once('end', function endListener() {
81
+ try {
82
+ curlHandle.close();
83
+ }
84
+ catch (e) {
85
+ deferredPromise.reject(e);
86
+ }
87
+ signal?.removeEventListener('abort', onAbort);
88
+ });
89
+ curlHandle.once('error', function errorListener(error) {
90
+ if (streamResolved && !streamResolved.closed && !streamResolved.destroyed) {
91
+ streamResolved.destroy(error);
92
+ }
93
+ else {
94
+ if (error.message === 'Operation was aborted by an application callback') {
95
+ error.message = 'The operation was aborted.';
96
+ }
97
+ deferredPromise.reject(error);
98
+ }
99
+ try {
100
+ curlHandle.close();
101
+ }
102
+ catch (e) {
103
+ deferredPromise.reject(e);
104
+ }
105
+ });
106
+ curlHandle.once('stream', function streamListener(stream, status, headersBuf) {
107
+ const outputStream = stream.pipe(new node_stream_1.PassThrough(), {
108
+ end: true,
109
+ });
110
+ const headersFlat = headersBuf
111
+ .toString('utf8')
112
+ .split(/\r?\n|\r/g)
113
+ .filter(headerFilter => {
114
+ if (headerFilter && !headerFilter.startsWith('HTTP/')) {
115
+ if (fetchRequest.redirect === 'error' &&
116
+ headerFilter.toLowerCase().includes('location') &&
117
+ (0, utils_js_1.shouldRedirect)(status)) {
118
+ if (!stream.destroyed) {
119
+ stream.resume();
120
+ }
121
+ outputStream.destroy();
122
+ deferredPromise.reject(new Error('redirect is not allowed'));
123
+ }
124
+ return true;
125
+ }
126
+ return false;
127
+ });
128
+ const headersInit = headersFlat.map(headerFlat => headerFlat.split(/:\s(.+)/).slice(0, 2));
129
+ const ponyfillResponse = new Response_js_1.PonyfillResponse(outputStream, {
130
+ status,
131
+ headers: headersInit,
132
+ url: curlHandle.getInfo(Curl.info.REDIRECT_URL)?.toString() || fetchRequest.url,
133
+ redirected: Number(curlHandle.getInfo(Curl.info.REDIRECT_COUNT)) > 0,
134
+ });
135
+ deferredPromise.resolve(ponyfillResponse);
136
+ streamResolved = outputStream;
137
+ });
138
+ setImmediate(() => {
139
+ curlHandle.perform();
140
+ });
141
+ return deferredPromise.promise;
142
+ }
@@ -0,0 +1,152 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchNodeHttp = fetchNodeHttp;
4
+ const tslib_1 = require("tslib");
5
+ const node_http_1 = require("node:http");
6
+ const node_https_1 = require("node:https");
7
+ const node_stream_1 = require("node:stream");
8
+ const node_zlib_1 = tslib_1.__importDefault(require("node:zlib"));
9
+ const promise_helpers_1 = require("@whatwg-node/promise-helpers");
10
+ const Request_js_1 = require("./Request.js");
11
+ const Response_js_1 = require("./Response.js");
12
+ const URL_js_1 = require("./URL.js");
13
+ const utils_js_1 = require("./utils.js");
14
+ function getRequestFnForProtocol(url) {
15
+ if (url.startsWith('http:')) {
16
+ return node_http_1.request;
17
+ }
18
+ else if (url.startsWith('https:')) {
19
+ return node_https_1.request;
20
+ }
21
+ throw new Error(`Unsupported protocol: ${url.split(':')[0] || url}`);
22
+ }
23
+ function fetchNodeHttp(fetchRequest) {
24
+ return new Promise((resolve, reject) => {
25
+ try {
26
+ const requestFn = getRequestFnForProtocol(fetchRequest.parsedUrl?.protocol || fetchRequest.url);
27
+ const headersSerializer = fetchRequest.headersSerializer || utils_js_1.getHeadersObj;
28
+ const nodeHeaders = headersSerializer(fetchRequest.headers);
29
+ nodeHeaders['accept-encoding'] ||= utils_js_1.DEFAULT_ACCEPT_ENCODING;
30
+ if (nodeHeaders['user-agent'] == null && nodeHeaders['User-Agent'] == null) {
31
+ nodeHeaders['user-agent'] = 'node';
32
+ }
33
+ let signal;
34
+ if (fetchRequest._signal == null) {
35
+ signal = undefined;
36
+ }
37
+ else if (fetchRequest._signal) {
38
+ signal = fetchRequest._signal;
39
+ }
40
+ let nodeRequest;
41
+ // If it is our ponyfilled Request, it should have `parsedUrl` which is a `URL` object
42
+ if (fetchRequest.parsedUrl) {
43
+ nodeRequest = requestFn(fetchRequest.parsedUrl, {
44
+ method: fetchRequest.method,
45
+ headers: nodeHeaders,
46
+ signal,
47
+ agent: fetchRequest.agent,
48
+ });
49
+ }
50
+ else {
51
+ nodeRequest = requestFn(fetchRequest.url, {
52
+ method: fetchRequest.method,
53
+ headers: nodeHeaders,
54
+ signal,
55
+ agent: fetchRequest.agent,
56
+ });
57
+ }
58
+ nodeRequest.once('error', reject);
59
+ nodeRequest.once('response', nodeResponse => {
60
+ let outputStream;
61
+ const contentEncoding = nodeResponse.headers['content-encoding'];
62
+ switch (contentEncoding) {
63
+ case 'x-gzip':
64
+ case 'gzip':
65
+ outputStream = node_zlib_1.default.createGunzip();
66
+ break;
67
+ case 'x-deflate':
68
+ case 'deflate':
69
+ outputStream = node_zlib_1.default.createInflate();
70
+ break;
71
+ case 'x-deflate-raw':
72
+ case 'deflate-raw':
73
+ outputStream = node_zlib_1.default.createInflateRaw();
74
+ break;
75
+ case 'br':
76
+ outputStream = node_zlib_1.default.createBrotliDecompress();
77
+ break;
78
+ case 'zstd':
79
+ if (node_zlib_1.default.createZstdDecompress != null) {
80
+ outputStream = node_zlib_1.default.createZstdDecompress();
81
+ }
82
+ break;
83
+ }
84
+ if (nodeResponse.headers.location && (0, utils_js_1.shouldRedirect)(nodeResponse.statusCode)) {
85
+ if (fetchRequest.redirect === 'error') {
86
+ const redirectError = new Error('Redirects are not allowed');
87
+ reject(redirectError);
88
+ nodeResponse.resume();
89
+ return;
90
+ }
91
+ if (fetchRequest.redirect === 'follow') {
92
+ const redirectedUrl = new URL_js_1.PonyfillURL(nodeResponse.headers.location, fetchRequest.parsedUrl || fetchRequest.url);
93
+ const redirectResponse$ = fetchNodeHttp(new Request_js_1.PonyfillRequest(redirectedUrl, fetchRequest));
94
+ resolve(redirectResponse$.then(redirectResponse => {
95
+ redirectResponse.redirected = true;
96
+ return redirectResponse;
97
+ }));
98
+ nodeResponse.resume();
99
+ return;
100
+ }
101
+ }
102
+ outputStream ||= new node_stream_1.PassThrough();
103
+ (0, utils_js_1.pipeThrough)({
104
+ src: nodeResponse,
105
+ dest: outputStream,
106
+ signal,
107
+ onError: e => {
108
+ if (!nodeResponse.destroyed) {
109
+ nodeResponse.destroy(e);
110
+ }
111
+ if (!outputStream.destroyed) {
112
+ outputStream.destroy(e);
113
+ }
114
+ reject(e);
115
+ },
116
+ });
117
+ const statusCode = nodeResponse.statusCode || 200;
118
+ let statusText = nodeResponse.statusMessage || node_http_1.STATUS_CODES[statusCode];
119
+ if (statusText == null) {
120
+ statusText = '';
121
+ }
122
+ const ponyfillResponse = new Response_js_1.PonyfillResponse(outputStream || nodeResponse, {
123
+ status: statusCode,
124
+ statusText,
125
+ headers: nodeResponse.headers,
126
+ url: fetchRequest.url,
127
+ signal,
128
+ });
129
+ resolve(ponyfillResponse);
130
+ });
131
+ if (fetchRequest['_buffer'] != null) {
132
+ (0, promise_helpers_1.handleMaybePromise)(() => (0, utils_js_1.safeWrite)(fetchRequest['_buffer'], nodeRequest), () => (0, utils_js_1.endStream)(nodeRequest), reject);
133
+ }
134
+ else {
135
+ const nodeReadable = (fetchRequest.body != null
136
+ ? (0, utils_js_1.isNodeReadable)(fetchRequest.body)
137
+ ? fetchRequest.body
138
+ : node_stream_1.Readable.from(fetchRequest.body)
139
+ : null);
140
+ if (nodeReadable) {
141
+ nodeReadable.pipe(nodeRequest);
142
+ }
143
+ else {
144
+ (0, utils_js_1.endStream)(nodeRequest);
145
+ }
146
+ }
147
+ }
148
+ catch (e) {
149
+ reject(e);
150
+ }
151
+ });
152
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TextEncoderStream = exports.TextDecoderStream = exports.IteratorObject = exports.DecompressionStream = exports.CompressionStream = exports.TransformStream = exports.WritableStream = exports.URLSearchParams = exports.URL = exports.btoa = exports.TextDecoder = exports.TextEncoder = exports.Blob = exports.FormData = exports.File = exports.ReadableStream = exports.Response = exports.Request = exports.Body = exports.Headers = exports.fetch = void 0;
4
+ var fetch_js_1 = require("./fetch.js");
5
+ Object.defineProperty(exports, "fetch", { enumerable: true, get: function () { return fetch_js_1.fetchPonyfill; } });
6
+ var Headers_js_1 = require("./Headers.js");
7
+ Object.defineProperty(exports, "Headers", { enumerable: true, get: function () { return Headers_js_1.PonyfillHeaders; } });
8
+ var Body_js_1 = require("./Body.js");
9
+ Object.defineProperty(exports, "Body", { enumerable: true, get: function () { return Body_js_1.PonyfillBody; } });
10
+ var Request_js_1 = require("./Request.js");
11
+ Object.defineProperty(exports, "Request", { enumerable: true, get: function () { return Request_js_1.PonyfillRequest; } });
12
+ var Response_js_1 = require("./Response.js");
13
+ Object.defineProperty(exports, "Response", { enumerable: true, get: function () { return Response_js_1.PonyfillResponse; } });
14
+ var ReadableStream_js_1 = require("./ReadableStream.js");
15
+ Object.defineProperty(exports, "ReadableStream", { enumerable: true, get: function () { return ReadableStream_js_1.PonyfillReadableStream; } });
16
+ var File_js_1 = require("./File.js");
17
+ Object.defineProperty(exports, "File", { enumerable: true, get: function () { return File_js_1.PonyfillFile; } });
18
+ var FormData_js_1 = require("./FormData.js");
19
+ Object.defineProperty(exports, "FormData", { enumerable: true, get: function () { return FormData_js_1.PonyfillFormData; } });
20
+ var Blob_js_1 = require("./Blob.js");
21
+ Object.defineProperty(exports, "Blob", { enumerable: true, get: function () { return Blob_js_1.PonyfillBlob; } });
22
+ var TextEncoderDecoder_js_1 = require("./TextEncoderDecoder.js");
23
+ Object.defineProperty(exports, "TextEncoder", { enumerable: true, get: function () { return TextEncoderDecoder_js_1.PonyfillTextEncoder; } });
24
+ Object.defineProperty(exports, "TextDecoder", { enumerable: true, get: function () { return TextEncoderDecoder_js_1.PonyfillTextDecoder; } });
25
+ Object.defineProperty(exports, "btoa", { enumerable: true, get: function () { return TextEncoderDecoder_js_1.PonyfillBtoa; } });
26
+ var URL_js_1 = require("./URL.js");
27
+ Object.defineProperty(exports, "URL", { enumerable: true, get: function () { return URL_js_1.PonyfillURL; } });
28
+ var URLSearchParams_js_1 = require("./URLSearchParams.js");
29
+ Object.defineProperty(exports, "URLSearchParams", { enumerable: true, get: function () { return URLSearchParams_js_1.PonyfillURLSearchParams; } });
30
+ var WritableStream_js_1 = require("./WritableStream.js");
31
+ Object.defineProperty(exports, "WritableStream", { enumerable: true, get: function () { return WritableStream_js_1.PonyfillWritableStream; } });
32
+ var TransformStream_js_1 = require("./TransformStream.js");
33
+ Object.defineProperty(exports, "TransformStream", { enumerable: true, get: function () { return TransformStream_js_1.PonyfillTransformStream; } });
34
+ var CompressionStream_js_1 = require("./CompressionStream.js");
35
+ Object.defineProperty(exports, "CompressionStream", { enumerable: true, get: function () { return CompressionStream_js_1.PonyfillCompressionStream; } });
36
+ var DecompressionStream_js_1 = require("./DecompressionStream.js");
37
+ Object.defineProperty(exports, "DecompressionStream", { enumerable: true, get: function () { return DecompressionStream_js_1.PonyfillDecompressionStream; } });
38
+ var IteratorObject_js_1 = require("./IteratorObject.js");
39
+ Object.defineProperty(exports, "IteratorObject", { enumerable: true, get: function () { return IteratorObject_js_1.PonyfillIteratorObject; } });
40
+ var TextEncoderDecoderStream_js_1 = require("./TextEncoderDecoderStream.js");
41
+ Object.defineProperty(exports, "TextDecoderStream", { enumerable: true, get: function () { return TextEncoderDecoderStream_js_1.PonyfillTextDecoderStream; } });
42
+ Object.defineProperty(exports, "TextEncoderStream", { enumerable: true, get: function () { return TextEncoderDecoderStream_js_1.PonyfillTextEncoderStream; } });
@@ -0,0 +1 @@
1
+ {"type":"commonjs"}