@wener/utils 1.1.27 → 1.1.30
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/arrays/MaybeArray.js +36 -25
- package/lib/arrays/MaybeArray.js.map +1 -1
- package/lib/arrays/arrayFromAsync.js +5 -7
- package/lib/arrays/arrayFromAsync.js.map +1 -1
- package/lib/asyncs/AsyncInterval.js +11 -12
- package/lib/asyncs/AsyncInterval.js.map +1 -1
- package/lib/asyncs/MaybePromise.js +3 -0
- package/lib/asyncs/MaybePromise.js.map +1 -0
- package/lib/asyncs/createAsyncIterator.js +37 -35
- package/lib/asyncs/createAsyncIterator.js.map +1 -1
- package/lib/asyncs/createLazyPromise.js +59 -60
- package/lib/asyncs/createLazyPromise.js.map +1 -1
- package/lib/asyncs/firstOfAsyncIterator.js +7 -9
- package/lib/asyncs/firstOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/generatorOfStream.js +16 -0
- package/lib/asyncs/generatorOfStream.js.map +1 -0
- package/lib/asyncs/isIterator.js +3 -4
- package/lib/asyncs/isIterator.js.map +1 -1
- package/lib/asyncs/isPromise.js +3 -4
- package/lib/asyncs/isPromise.js.map +1 -1
- package/lib/asyncs/isThenable.js +6 -0
- package/lib/asyncs/isThenable.js.map +1 -0
- package/lib/asyncs/nextOfAsyncIterator.js +20 -14
- package/lib/asyncs/nextOfAsyncIterator.js.map +1 -1
- package/lib/asyncs/promiseOfCallback.js +17 -0
- package/lib/asyncs/promiseOfCallback.js.map +1 -0
- package/lib/asyncs/sleep.js +2 -3
- package/lib/asyncs/sleep.js.map +1 -1
- package/lib/asyncs/timeout.js +22 -26
- package/lib/asyncs/timeout.js.map +1 -1
- package/lib/browsers/copy.js +47 -45
- package/lib/browsers/copy.js.map +1 -1
- package/lib/browsers/download.js +38 -27
- package/lib/browsers/download.js.map +1 -1
- package/lib/browsers/getFileFromDataTransfer.js +41 -28
- package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
- package/lib/browsers/loaders.js +43 -43
- package/lib/browsers/loaders.js.map +1 -1
- package/lib/crypto/base.js +5 -4
- package/lib/crypto/base.js.map +1 -1
- package/lib/crypto/getNodeCrypto.js +14 -13
- package/lib/crypto/getNodeCrypto.js.map +1 -1
- package/lib/crypto/getRandomValues.js +22 -26
- package/lib/crypto/getRandomValues.js.map +1 -1
- package/lib/crypto/hashing.js +42 -50
- package/lib/crypto/hashing.js.map +1 -1
- package/lib/crypto/md5.bench.js +21 -0
- package/lib/crypto/md5.bench.js.map +1 -0
- package/lib/crypto/md5.d.js +3 -0
- package/lib/crypto/md5.d.js.map +1 -0
- package/lib/crypto/md5.js +119 -121
- package/lib/crypto/md5.js.map +1 -1
- package/lib/crypto/pem/pem.js +32 -35
- package/lib/crypto/pem/pem.js.map +1 -1
- package/lib/crypto/randomUUID.js +12 -11
- package/lib/crypto/randomUUID.js.map +1 -1
- package/lib/crypto/ulid.js +123 -112
- package/lib/crypto/ulid.js.map +1 -1
- package/lib/errors/Errors.js +167 -149
- package/lib/errors/Errors.js.map +1 -1
- package/lib/fetch/createFetchWith.js +20 -23
- package/lib/fetch/createFetchWith.js.map +1 -1
- package/lib/fetch/createFetchWithLogging.js +20 -16
- package/lib/fetch/createFetchWithLogging.js.map +1 -1
- package/lib/fetch/createFetchWithRetry.js +61 -65
- package/lib/fetch/createFetchWithRetry.js.map +1 -1
- package/lib/fetch/dumpRequest.js +39 -42
- package/lib/fetch/dumpRequest.js.map +1 -1
- package/lib/fetch/dumpResponse.js +13 -20
- package/lib/fetch/dumpResponse.js.map +1 -1
- package/lib/fetch/index.js +7 -0
- package/lib/fetch/index.js.map +1 -0
- package/lib/fetch/types.js +3 -0
- package/lib/fetch/types.js.map +1 -0
- package/lib/http/HttpStatus.js +89 -80
- package/lib/http/HttpStatus.js.map +1 -1
- package/lib/i18n/createTranslate.js +48 -48
- package/lib/i18n/createTranslate.js.map +1 -1
- package/lib/index.js +28 -14
- package/lib/index.js.map +1 -1
- package/lib/io/AbstractEncoding.js +7 -0
- package/lib/io/AbstractEncoding.js.map +1 -0
- package/lib/io/ArrayBuffer.test-d.js +7 -0
- package/lib/io/ArrayBuffer.test-d.js.map +1 -0
- package/lib/io/ArrayBuffers.js +198 -172
- package/lib/io/ArrayBuffers.js.map +1 -1
- package/lib/io/Buffer.js +21 -20
- package/lib/io/Buffer.js.map +1 -1
- package/lib/io/base64.js +49 -48
- package/lib/io/base64.js.map +1 -1
- package/lib/io/isBuffer.js +7 -5
- package/lib/io/isBuffer.js.map +1 -1
- package/lib/io/isTransferable.js +23 -19
- package/lib/io/isTransferable.js.map +1 -1
- package/lib/isomorphics/getGlobalThis.js +17 -12
- package/lib/isomorphics/getGlobalThis.js.map +1 -1
- package/lib/isomorphics/structuredClone.js +71 -63
- package/lib/isomorphics/structuredClone.js.map +1 -1
- package/lib/langs/MaybeFunction.js +7 -7
- package/lib/langs/MaybeFunction.js.map +1 -1
- package/lib/langs/classOf.js +3 -4
- package/lib/langs/classOf.js.map +1 -1
- package/lib/langs/deepEqual.js +77 -85
- package/lib/langs/deepEqual.js.map +1 -1
- package/lib/langs/deepFreeze.js +17 -13
- package/lib/langs/deepFreeze.js.map +1 -1
- package/lib/langs/hashCode.ignored.js +112 -0
- package/lib/langs/hashCode.ignored.js.map +1 -0
- package/lib/langs/isClass.js +3 -4
- package/lib/langs/isClass.js.map +1 -1
- package/lib/langs/isDefined.js +3 -4
- package/lib/langs/isDefined.js.map +1 -1
- package/lib/langs/isEmptyObject.js +3 -5
- package/lib/langs/isEmptyObject.js.map +1 -1
- package/lib/langs/isFunction.js +5 -0
- package/lib/langs/isFunction.js.map +1 -0
- package/lib/langs/isPlainObject.js +7 -8
- package/lib/langs/isPlainObject.js.map +1 -1
- package/lib/langs/memoize.js +19 -21
- package/lib/langs/memoize.js.map +1 -1
- package/lib/langs/parseBoolean.js +26 -27
- package/lib/langs/parseBoolean.js.map +1 -1
- package/lib/langs/shallowClone.js +12 -12
- package/lib/langs/shallowClone.js.map +1 -1
- package/lib/langs/shallowEqual.js +21 -18
- package/lib/langs/shallowEqual.js.map +1 -1
- package/lib/libs/ms.js +123 -103
- package/lib/libs/ms.js.map +1 -1
- package/lib/logging/Logger.js +5 -0
- package/lib/logging/Logger.js.map +1 -0
- package/lib/logging/createChildLogger.js +12 -14
- package/lib/logging/createChildLogger.js.map +1 -1
- package/lib/logging/createLogger.js +59 -33
- package/lib/logging/createLogger.js.map +1 -1
- package/lib/logging/createNoopLogger.js +11 -12
- package/lib/logging/createNoopLogger.js.map +1 -1
- package/lib/logging/slog.js +143 -0
- package/lib/logging/slog.js.map +1 -0
- package/lib/maths/clamp.js +20 -20
- package/lib/maths/clamp.js.map +1 -1
- package/lib/maths/random.js +14 -15
- package/lib/maths/random.js.map +1 -1
- package/lib/modules/isModule.js +5 -4
- package/lib/modules/isModule.js.map +1 -1
- package/lib/modules/parseModuleId.js +36 -31
- package/lib/modules/parseModuleId.js.map +1 -1
- package/lib/objects/get.js +13 -11
- package/lib/objects/get.js.map +1 -1
- package/lib/objects/get.test-d.js +33 -0
- package/lib/objects/get.test-d.js.map +1 -0
- package/lib/objects/merge/index.js +3 -0
- package/lib/objects/merge/index.js.map +1 -0
- package/lib/objects/merge/isMergeableObject.js +11 -10
- package/lib/objects/merge/isMergeableObject.js.map +1 -1
- package/lib/objects/merge/merge.js +65 -66
- package/lib/objects/merge/merge.js.map +1 -1
- package/lib/objects/parseObjectPath.js +35 -23
- package/lib/objects/parseObjectPath.js.map +1 -1
- package/lib/objects/set.js +33 -34
- package/lib/objects/set.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/encoder.js +93 -67
- package/lib/schema/typebox/gen/codegen/common/encoder.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/formatter.js +31 -8
- package/lib/schema/typebox/gen/codegen/common/formatter.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/common/index.js +5 -0
- package/lib/schema/typebox/gen/codegen/common/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js +109 -60
- package/lib/schema/typebox/gen/codegen/common/jsdoc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/compiler.js +359 -317
- package/lib/schema/typebox/gen/codegen/expression/compiler.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/errors.js +255 -233
- package/lib/schema/typebox/gen/codegen/expression/errors.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js +249 -236
- package/lib/schema/typebox/gen/codegen/expression/evaluator.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/expression.js +382 -198
- package/lib/schema/typebox/gen/codegen/expression/expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/expression/index.js +6 -0
- package/lib/schema/typebox/gen/codegen/expression/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/index.js +5 -19
- package/lib/schema/typebox/gen/codegen/index.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/index.js +16 -0
- package/lib/schema/typebox/gen/codegen/model/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js +236 -260
- package/lib/schema/typebox/gen/codegen/model/model-to-arktype.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js +348 -352
- package/lib/schema/typebox/gen/codegen/model/model-to-expression.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js +214 -242
- package/lib/schema/typebox/gen/codegen/model/model-to-grpc.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js +229 -292
- package/lib/schema/typebox/gen/codegen/model/model-to-io-ts.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js +42 -15
- package/lib/schema/typebox/gen/codegen/model/model-to-javascript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js +168 -168
- package/lib/schema/typebox/gen/codegen/model/model-to-json-schema.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js +31 -8
- package/lib/schema/typebox/gen/codegen/model/model-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js +156 -190
- package/lib/schema/typebox/gen/codegen/model/model-to-typescript.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js +215 -249
- package/lib/schema/typebox/gen/codegen/model/model-to-valibot.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js +37 -13
- package/lib/schema/typebox/gen/codegen/model/model-to-value.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js +201 -242
- package/lib/schema/typebox/gen/codegen/model/model-to-yrel.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js +200 -245
- package/lib/schema/typebox/gen/codegen/model/model-to-yup.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js +223 -268
- package/lib/schema/typebox/gen/codegen/model/model-to-zod.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/model/model.js +27 -0
- package/lib/schema/typebox/gen/codegen/model/model.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/typescript/index.js +4 -0
- package/lib/schema/typebox/gen/codegen/typescript/index.js.map +1 -0
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js +43 -40
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-model.js.map +1 -1
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js +592 -616
- package/lib/schema/typebox/gen/codegen/typescript/typescript-to-typebox.js.map +1 -1
- package/lib/schema/typebox/gen/index.js +3 -3
- package/lib/schema/typebox/gen/index.js.map +1 -1
- package/lib/schema/typebox/index.js +3 -3
- package/lib/schema/typebox/index.js.map +1 -1
- package/lib/schema/typebox/typebox.js +18 -29
- package/lib/schema/typebox/typebox.js.map +1 -1
- package/lib/server.js +2 -1
- package/lib/server.js.map +1 -1
- package/lib/servers/crypto/md5.js +3 -5
- package/lib/servers/crypto/md5.js.map +1 -1
- package/lib/servers/fetch/createFetchWithProxy.js +2 -4
- package/lib/servers/fetch/createFetchWithProxy.js.map +1 -1
- package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js +34 -34
- package/lib/servers/fetch/createFetchWithProxyByNodeFetch.js.map +1 -1
- package/lib/servers/fetch/createFetchWithProxyByUndici.js +57 -58
- package/lib/servers/fetch/createFetchWithProxyByUndici.js.map +1 -1
- package/lib/servers/getPackageDir.js +8 -10
- package/lib/servers/getPackageDir.js.map +1 -1
- package/lib/servers/jsdom.js +3 -2
- package/lib/servers/jsdom.js.map +1 -1
- package/lib/servers/node-fetch.js +4 -3
- package/lib/servers/node-fetch.js.map +1 -1
- package/lib/servers/polyfill/polyfillBrowser.js +17 -0
- package/lib/servers/polyfill/polyfillBrowser.js.map +1 -0
- package/lib/servers/polyfill/polyfillCrypto.js +8 -10
- package/lib/servers/polyfill/polyfillCrypto.js.map +1 -1
- package/lib/servers/polyfill/polyfillFetch.js +23 -22
- package/lib/servers/polyfill/polyfillFetch.js.map +1 -1
- package/lib/servers/polyfill/polyfillJsDom.js +59 -52
- package/lib/servers/polyfill/polyfillJsDom.js.map +1 -1
- package/lib/servers/polyfill/polyfillWebSocket.js +13 -13
- package/lib/servers/polyfill/polyfillWebSocket.js.map +1 -1
- package/lib/servers/ws.js +3 -2
- package/lib/servers/ws.js.map +1 -1
- package/lib/strings/camelCase.js +51 -49
- package/lib/strings/camelCase.js.map +1 -1
- package/lib/strings/formatBytes.js +41 -15
- package/lib/strings/formatBytes.js.map +1 -1
- package/lib/strings/renderTemplate.js +27 -20
- package/lib/strings/renderTemplate.js.map +1 -1
- package/lib/typedoc.js +4 -0
- package/lib/typedoc.js.map +1 -0
- package/lib/types/global.d.js +2 -0
- package/lib/types/global.d.js.map +1 -0
- package/lib/types/index.d.js +6 -0
- package/lib/types/index.d.js.map +1 -0
- package/lib/validations/asserts.js +14 -0
- package/lib/validations/asserts.js.map +1 -0
- package/lib/validations/isUUID.js +3 -4
- package/lib/validations/isUUID.js.map +1 -1
- package/lib/validations/parseTimestamp.js +25 -21
- package/lib/validations/parseTimestamp.js.map +1 -1
- package/package.json +3 -3
- package/dist/LICENSE.txt +0 -1
- package/dist/cjs/createFetchWith-qhRObsE4.js +0 -2
- package/dist/cjs/createFetchWith-qhRObsE4.js.map +0 -1
- package/dist/cjs/getGlobalThis-GhffAgiG.js +0 -2
- package/dist/cjs/getGlobalThis-GhffAgiG.js.map +0 -1
- package/dist/cjs/index.cjs +0 -21
- package/dist/cjs/index.cjs.map +0 -1
- package/dist/cjs/schema/typebox/gen/index.cjs +0 -118
- package/dist/cjs/schema/typebox/gen/index.cjs.map +0 -1
- package/dist/cjs/schema/typebox/index.cjs +0 -2
- package/dist/cjs/schema/typebox/index.cjs.map +0 -1
- package/dist/cjs/server.cjs +0 -2
- package/dist/cjs/server.cjs.map +0 -1
- package/dist/cjs/servers/jsdom.cjs +0 -2
- package/dist/cjs/servers/jsdom.cjs.map +0 -1
- package/dist/cjs/servers/node-fetch.cjs +0 -2
- package/dist/cjs/servers/node-fetch.cjs.map +0 -1
- package/dist/cjs/servers/ws.cjs +0 -2
- package/dist/cjs/servers/ws.cjs.map +0 -1
- package/dist/esm/createFetchWith-1q1S-Xro.js +0 -2
- package/dist/esm/createFetchWith-1q1S-Xro.js.map +0 -1
- package/dist/esm/getGlobalThis-A8F-nU7J.js +0 -2
- package/dist/esm/getGlobalThis-A8F-nU7J.js.map +0 -1
- package/dist/esm/index.js +0 -21
- package/dist/esm/index.js.map +0 -1
- package/dist/esm/schema/typebox/gen.js +0 -118
- package/dist/esm/schema/typebox/gen.js.map +0 -1
- package/dist/esm/schema/typebox.js +0 -2
- package/dist/esm/schema/typebox.js.map +0 -1
- package/dist/esm/server.js +0 -2
- package/dist/esm/server.js.map +0 -1
- package/dist/esm/servers/jsdom.js +0 -2
- package/dist/esm/servers/jsdom.js.map +0 -1
- package/dist/esm/servers/node-fetch.js +0 -2
- package/dist/esm/servers/node-fetch.js.map +0 -1
- package/dist/esm/servers/ws.js +0 -2
- package/dist/esm/servers/ws.js.map +0 -1
- package/dist/system/createFetchWith-TjUle-dI.js +0 -2
- package/dist/system/createFetchWith-TjUle-dI.js.map +0 -1
- package/dist/system/getGlobalThis-X5ifUXDI.js +0 -2
- package/dist/system/getGlobalThis-X5ifUXDI.js.map +0 -1
- package/dist/system/index.js +0 -21
- package/dist/system/index.js.map +0 -1
- package/dist/system/schema/typebox/gen.js +0 -118
- package/dist/system/schema/typebox/gen.js.map +0 -1
- package/dist/system/schema/typebox.js +0 -2
- package/dist/system/schema/typebox.js.map +0 -1
- package/dist/system/server.js +0 -2
- package/dist/system/server.js.map +0 -1
- package/dist/system/servers/jsdom.js +0 -2
- package/dist/system/servers/jsdom.js.map +0 -1
- package/dist/system/servers/node-fetch.js +0 -2
- package/dist/system/servers/node-fetch.js.map +0 -1
- package/dist/system/servers/ws.js +0 -2
- package/dist/system/servers/ws.js.map +0 -1
|
@@ -1,65 +1,64 @@
|
|
|
1
|
-
import { createFetchWith } from '../../fetch/
|
|
1
|
+
import { createFetchWith } from '../../fetch/index.js';
|
|
2
2
|
import { getGlobalThis } from '../../isomorphics/getGlobalThis.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
return next(url, {
|
|
18
|
-
...req,
|
|
19
|
-
// https://github.com/oven-sh/bun/issues/1829
|
|
20
|
-
proxy
|
|
3
|
+
export function createFetchWithProxyByUndici({ proxy, token: _token, fetch, undici } = {}) {
|
|
4
|
+
if (!proxy) {
|
|
5
|
+
return fetch || globalThis.fetch;
|
|
6
|
+
}
|
|
7
|
+
if (getGlobalThis().Bun) {
|
|
8
|
+
return createFetchWith({
|
|
9
|
+
fetch,
|
|
10
|
+
onRequest: ({ url, req, next })=>{
|
|
11
|
+
return next(url, {
|
|
12
|
+
...req,
|
|
13
|
+
// https://github.com/oven-sh/bun/issues/1829
|
|
14
|
+
proxy
|
|
15
|
+
});
|
|
16
|
+
}
|
|
21
17
|
});
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
let agent;
|
|
26
|
-
return async (...args) => {
|
|
27
|
-
const init = args[1] || (args[1] = {});
|
|
28
|
-
{
|
|
29
|
-
const body = init.body;
|
|
30
|
-
if (typeof body === "object" && body && (body instanceof ReadableStream || Symbol.asyncIterator in body)) {
|
|
31
|
-
init.duplex || (init.duplex = "half");
|
|
32
|
-
}
|
|
33
18
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
19
|
+
let agent;
|
|
20
|
+
// https://github.com/nodejs/undici/blob/main/docs/best-practices/proxy.md
|
|
21
|
+
return async (...args)=>{
|
|
22
|
+
const init = args[1] ||= {};
|
|
23
|
+
{
|
|
24
|
+
const body = init.body;
|
|
25
|
+
if (typeof body === 'object' && body && (body instanceof ReadableStream || Symbol.asyncIterator in body)) {
|
|
26
|
+
// request.duplex must be set if request.body is ReadableStream or Async Iterables
|
|
27
|
+
init.duplex ||= 'half';
|
|
28
|
+
}
|
|
42
29
|
}
|
|
43
|
-
if (!
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
30
|
+
if (!agent) {
|
|
31
|
+
let uri = proxy;
|
|
32
|
+
let token = _token;
|
|
33
|
+
{
|
|
34
|
+
let u;
|
|
35
|
+
try {
|
|
36
|
+
u = new URL(proxy);
|
|
37
|
+
} catch (e) {}
|
|
38
|
+
if (!token && u && (u.username || u.password)) {
|
|
39
|
+
token = `Basic ${btoa(`${u.username || ''}:${u.password}`)}`;
|
|
40
|
+
u.username = '';
|
|
41
|
+
u.password = '';
|
|
42
|
+
uri = u.toString();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
// if in next use 'next/dist/compiled/undici'
|
|
46
|
+
undici ||= import('undici');
|
|
47
|
+
const mod = await undici;
|
|
48
|
+
const ProxyAgent = mod.ProxyAgent;
|
|
49
|
+
fetch ||= mod.fetch;
|
|
50
|
+
// https://github.com/nodejs/undici/blob/main/docs/api/ProxyAgent.md
|
|
51
|
+
agent = new ProxyAgent({
|
|
52
|
+
uri,
|
|
53
|
+
token
|
|
54
|
+
});
|
|
55
|
+
// https://github.com/nodejs/node/issues/43187#issuecomment-1134634174
|
|
56
|
+
// (global as any)[Symbol.for('undici.globalDispatcher.1')] = agent;
|
|
57
|
+
// fixme should unwrap error https://github.com/nodejs/undici/issues/1248
|
|
48
58
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
const ProxyAgent = mod.ProxyAgent;
|
|
53
|
-
fetch || (fetch = mod.fetch);
|
|
54
|
-
agent = new ProxyAgent({
|
|
55
|
-
uri,
|
|
56
|
-
token
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
init.dispatcher = agent;
|
|
60
|
-
return await fetch(...args);
|
|
61
|
-
};
|
|
59
|
+
init.dispatcher = agent;
|
|
60
|
+
return await fetch(...args);
|
|
61
|
+
};
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
|
|
65
|
-
//# sourceMappingURL=createFetchWithProxyByUndici.js.map
|
|
64
|
+
//# sourceMappingURL=createFetchWithProxyByUndici.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/servers/fetch/createFetchWithProxyByUndici.ts"],"sourcesContent":["import { MaybePromise } from '../../asyncs/MaybePromise';\nimport { createFetchWith, FetchLike } from '../../fetch';\nimport { getGlobalThis } from '../../isomorphics/getGlobalThis';\n\nexport function createFetchWithProxyByUndici({\n proxy,\n token: _token,\n fetch,\n undici,\n}: {\n proxy?: string;\n token?: string;\n fetch?: FetchLike;\n undici?: MaybePromise<{ fetch: any; ProxyAgent: any }>;\n} = {}): FetchLike {\n if (!proxy) {\n return fetch || globalThis.fetch;\n }\n\n if ((getGlobalThis() as any).Bun) {\n return createFetchWith({\n fetch,\n onRequest: ({ url, req, next }) => {\n return next(url, {\n ...req,\n // https://github.com/oven-sh/bun/issues/1829\n proxy,\n } as RequestInit);\n },\n });\n }\n\n let agent: any;\n // https://github.com/nodejs/undici/blob/main/docs/best-practices/proxy.md\n return async (...args) => {\n const init = (args[1] ||= {}) as RequestInit & {\n duplex?: string;\n dispatcher?: any;\n };\n {\n const body = init.body;\n if (typeof body === 'object' && body && (body instanceof ReadableStream || Symbol.asyncIterator in body)) {\n // request.duplex must be set if request.body is ReadableStream or Async Iterables\n init.duplex ||= 'half';\n }\n }\n if (!agent) {\n let uri = proxy;\n let token = _token;\n {\n let u: URL | undefined;\n try {\n u = new URL(proxy);\n } catch (e) {}\n if (!token && u && (u.username || u.password)) {\n token = `Basic ${btoa(`${u.username || ''}:${u.password}`)}`;\n u.username = '';\n u.password = '';\n uri = u.toString();\n }\n }\n // if in next use 'next/dist/compiled/undici'\n undici ||= import('undici');\n const mod = await undici;\n const ProxyAgent = mod.ProxyAgent as new (_: any) => any;\n fetch ||= mod.fetch as FetchLike;\n // https://github.com/nodejs/undici/blob/main/docs/api/ProxyAgent.md\n agent = new ProxyAgent({\n uri,\n token,\n });\n // https://github.com/nodejs/node/issues/43187#issuecomment-1134634174\n // (global as any)[Symbol.for('undici.globalDispatcher.1')] = agent;\n // fixme should unwrap error https://github.com/nodejs/undici/issues/1248\n }\n init.dispatcher = agent;\n return await fetch!(...args);\n };\n}\n"],"names":["createFetchWith","getGlobalThis","createFetchWithProxyByUndici","proxy","token","_token","fetch","undici","globalThis","Bun","onRequest","url","req","next","agent","args","init","body","ReadableStream","Symbol","asyncIterator","duplex","uri","u","URL","e","username","password","btoa","toString","mod","ProxyAgent","dispatcher"],"mappings":"AACA,SAASA,eAAe,QAAmB,cAAc;AACzD,SAASC,aAAa,QAAQ,kCAAkC;AAEhE,OAAO,SAASC,6BAA6B,EAC3CC,KAAK,EACLC,OAAOC,MAAM,EACbC,KAAK,EACLC,MAAM,EAMP,GAAG,CAAC,CAAC;IACJ,IAAI,CAACJ,OAAO;QACV,OAAOG,SAASE,WAAWF,KAAK;IAClC;IAEA,IAAI,AAACL,gBAAwBQ,GAAG,EAAE;QAChC,OAAOT,gBAAgB;YACrBM;YACAI,WAAW,CAAC,EAAEC,GAAG,EAAEC,GAAG,EAAEC,IAAI,EAAE;gBAC5B,OAAOA,KAAKF,KAAK;oBACf,GAAGC,GAAG;oBACN,6CAA6C;oBAC7CT;gBACF;YACF;QACF;IACF;IAEA,IAAIW;IACJ,0EAA0E;IAC1E,OAAO,OAAO,GAAGC;QACf,MAAMC,OAAQD,IAAI,CAAC,EAAE,KAAK,CAAC;QAI3B;YACE,MAAME,OAAOD,KAAKC,IAAI;YACtB,IAAI,OAAOA,SAAS,YAAYA,QAASA,CAAAA,gBAAgBC,kBAAkBC,OAAOC,aAAa,IAAIH,IAAG,GAAI;gBACxG,kFAAkF;gBAClFD,KAAKK,MAAM,KAAK;YAClB;QACF;QACA,IAAI,CAACP,OAAO;YACV,IAAIQ,MAAMnB;YACV,IAAIC,QAAQC;YACZ;gBACE,IAAIkB;gBACJ,IAAI;oBACFA,IAAI,IAAIC,IAAIrB;gBACd,EAAE,OAAOsB,GAAG,CAAC;gBACb,IAAI,CAACrB,SAASmB,KAAMA,CAAAA,EAAEG,QAAQ,IAAIH,EAAEI,QAAQ,AAAD,GAAI;oBAC7CvB,QAAQ,CAAC,MAAM,EAAEwB,KAAK,CAAC,EAAEL,EAAEG,QAAQ,IAAI,GAAG,CAAC,EAAEH,EAAEI,QAAQ,CAAC,CAAC,EAAE,CAAC;oBAC5DJ,EAAEG,QAAQ,GAAG;oBACbH,EAAEI,QAAQ,GAAG;oBACbL,MAAMC,EAAEM,QAAQ;gBAClB;YACF;YACA,6CAA6C;YAC7CtB,WAAW,MAAM,CAAC;YAClB,MAAMuB,MAAM,MAAMvB;YAClB,MAAMwB,aAAaD,IAAIC,UAAU;YACjCzB,UAAUwB,IAAIxB,KAAK;YACnB,oEAAoE;YACpEQ,QAAQ,IAAIiB,WAAW;gBACrBT;gBACAlB;YACF;QACA,sEAAsE;QACtE,oEAAoE;QACpE,yEAAyE;QAC3E;QACAY,KAAKgB,UAAU,GAAGlB;QAClB,OAAO,MAAMR,SAAUS;IACzB;AACF"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import fs from 'node:fs';
|
|
2
2
|
import path from 'node:path';
|
|
3
3
|
import { fileURLToPath } from 'node:url';
|
|
4
|
-
|
|
5
4
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
5
|
const __dirname = path.dirname(__filename);
|
|
7
|
-
function getPackageDir(currentDir = __dirname) {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
export function getPackageDir(currentDir = __dirname) {
|
|
7
|
+
while(!fs.existsSync(path.join(currentDir, 'package.json'))){
|
|
8
|
+
currentDir = path.resolve(currentDir, '..');
|
|
9
|
+
if (currentDir === '/') {
|
|
10
|
+
return undefined;
|
|
11
|
+
}
|
|
12
12
|
}
|
|
13
|
-
|
|
14
|
-
return currentDir;
|
|
13
|
+
return currentDir;
|
|
15
14
|
}
|
|
16
15
|
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=getPackageDir.js.map
|
|
16
|
+
//# sourceMappingURL=getPackageDir.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/servers/getPackageDir.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\nimport { fileURLToPath } from 'node:url';\n\nconst __filename = fileURLToPath(import.meta.url);\nconst __dirname = path.dirname(__filename);\n\nexport function getPackageDir(currentDir: string = __dirname) {\n while (!fs.existsSync(path.join(currentDir, 'package.json'))) {\n currentDir = path.resolve(currentDir, '..');\n if (currentDir === '/') {\n return undefined;\n }\n }\n return currentDir;\n}\n"],"names":["fs","path","fileURLToPath","__filename","url","__dirname","dirname","getPackageDir","currentDir","existsSync","join","resolve","undefined"],"mappings":"AAAA,OAAOA,QAAQ,UAAU;AACzB,OAAOC,UAAU,YAAY;AAC7B,SAASC,aAAa,QAAQ,WAAW;AAEzC,MAAMC,aAAaD,cAAc,YAAYE,GAAG;AAChD,MAAMC,YAAYJ,KAAKK,OAAO,CAACH;AAE/B,OAAO,SAASI,cAAcC,aAAqBH,SAAS;IAC1D,MAAO,CAACL,GAAGS,UAAU,CAACR,KAAKS,IAAI,CAACF,YAAY,iBAAkB;QAC5DA,aAAaP,KAAKU,OAAO,CAACH,YAAY;QACtC,IAAIA,eAAe,KAAK;YACtB,OAAOI;QACT;IACF;IACA,OAAOJ;AACT"}
|
package/lib/servers/jsdom.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export * from './polyfill/polyfillJsDom.js';
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=jsdom.js.map
|
package/lib/servers/jsdom.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/servers/jsdom.ts"],"sourcesContent":["export * from './polyfill/polyfillJsDom';\n"],"names":[],"mappings":"AAAA,cAAc,2BAA2B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
3
|
-
|
|
1
|
+
export * from './polyfill/polyfillFetch.js';
|
|
2
|
+
export * from './fetch/createFetchWithProxyByNodeFetch.js';
|
|
3
|
+
|
|
4
|
+
//# sourceMappingURL=node-fetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/servers/node-fetch.ts"],"sourcesContent":["export * from './polyfill/polyfillFetch';\nexport * from './fetch/createFetchWithProxyByNodeFetch';\n"],"names":[],"mappings":"AAAA,cAAc,2BAA2B;AACzC,cAAc,0CAA0C"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { polyfillCrypto } from './polyfillCrypto.js';
|
|
2
|
+
import { polyfillFetch } from './polyfillFetch.js';
|
|
3
|
+
import { polyfillJsDom } from './polyfillJsDom.js';
|
|
4
|
+
/**
|
|
5
|
+
* Polyfills the browser environment with the necessary APIs for the server.
|
|
6
|
+
* Currently, this includes:
|
|
7
|
+
* - `window`
|
|
8
|
+
* - `document`
|
|
9
|
+
* - `fetch`
|
|
10
|
+
* - `crypto`
|
|
11
|
+
*/ export async function polyfillBrowser() {
|
|
12
|
+
await polyfillCrypto();
|
|
13
|
+
await polyfillFetch();
|
|
14
|
+
await polyfillJsDom();
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
//# sourceMappingURL=polyfillBrowser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/servers/polyfill/polyfillBrowser.ts"],"sourcesContent":["import { polyfillCrypto } from './polyfillCrypto';\nimport { polyfillFetch } from './polyfillFetch';\nimport { polyfillJsDom } from './polyfillJsDom';\n\n/**\n * Polyfills the browser environment with the necessary APIs for the server.\n * Currently, this includes:\n * - `window`\n * - `document`\n * - `fetch`\n * - `crypto`\n */\nexport async function polyfillBrowser() {\n await polyfillCrypto();\n await polyfillFetch();\n await polyfillJsDom();\n}\n"],"names":["polyfillCrypto","polyfillFetch","polyfillJsDom","polyfillBrowser"],"mappings":"AAAA,SAASA,cAAc,QAAQ,mBAAmB;AAClD,SAASC,aAAa,QAAQ,kBAAkB;AAChD,SAASC,aAAa,QAAQ,kBAAkB;AAEhD;;;;;;;CAOC,GACD,OAAO,eAAeC;IACpB,MAAMH;IACN,MAAMC;IACN,MAAMC;AACR"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { getGlobalThis } from '../../isomorphics/getGlobalThis.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return true;
|
|
2
|
+
export async function polyfillCrypto() {
|
|
3
|
+
const globalThis = getGlobalThis();
|
|
4
|
+
if ('crypto' in globalThis) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
globalThis.crypto = (await import('node:crypto')).webcrypto;
|
|
8
|
+
return true;
|
|
10
9
|
}
|
|
11
10
|
|
|
12
|
-
|
|
13
|
-
//# sourceMappingURL=polyfillCrypto.js.map
|
|
11
|
+
//# sourceMappingURL=polyfillCrypto.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/servers/polyfill/polyfillCrypto.ts"],"sourcesContent":["import { getGlobalThis } from '../../isomorphics/getGlobalThis';\n\nexport async function polyfillCrypto() {\n const globalThis = getGlobalThis();\n if ('crypto' in globalThis) {\n return false;\n }\n (globalThis as any).crypto = (await import('node:crypto')).webcrypto as Crypto;\n return true;\n}\n"],"names":["getGlobalThis","polyfillCrypto","globalThis","crypto","webcrypto"],"mappings":"AAAA,SAASA,aAAa,QAAQ,kCAAkC;AAEhE,OAAO,eAAeC;IACpB,MAAMC,aAAaF;IACnB,IAAI,YAAYE,YAAY;QAC1B,OAAO;IACT;IACCA,WAAmBC,MAAM,GAAG,AAAC,CAAA,MAAM,MAAM,CAAC,cAAa,EAAGC,SAAS;IACpE,OAAO;AACT"}
|
|
@@ -1,24 +1,25 @@
|
|
|
1
|
-
function polyfillFetch(nodeFetch) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
1
|
+
export function polyfillFetch(nodeFetch) {
|
|
2
|
+
if ('fetch' in globalThis) {
|
|
3
|
+
return false;
|
|
4
|
+
}
|
|
5
|
+
// sync mode
|
|
6
|
+
if (nodeFetch) {
|
|
7
|
+
const { default: fetch, Response, Headers, Request, AbortError, FetchError, FormData, Blob, File } = nodeFetch;
|
|
8
|
+
Object.assign(globalThis, {
|
|
9
|
+
fetch,
|
|
10
|
+
Response,
|
|
11
|
+
Headers,
|
|
12
|
+
Request,
|
|
13
|
+
AbortError,
|
|
14
|
+
FetchError,
|
|
15
|
+
FormData,
|
|
16
|
+
Blob,
|
|
17
|
+
File
|
|
18
|
+
});
|
|
19
|
+
// abort controller
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
return import('node-fetch').then((v)=>polyfillFetch(v));
|
|
21
23
|
}
|
|
22
24
|
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=polyfillFetch.js.map
|
|
25
|
+
//# sourceMappingURL=polyfillFetch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/servers/polyfill/polyfillFetch.ts"],"sourcesContent":["import type { MaybePromise } from '../../asyncs/MaybePromise';\n\nexport function polyfillFetch(nodeFetch: typeof import('node-fetch')): boolean;\nexport function polyfillFetch(nodeFetch?: undefined): Promise<boolean>;\nexport function polyfillFetch(nodeFetch?: typeof import('node-fetch')): MaybePromise<boolean> {\n if ('fetch' in globalThis) {\n return false;\n }\n // sync mode\n if (nodeFetch) {\n const { default: fetch, Response, Headers, Request, AbortError, FetchError, FormData, Blob, File } = nodeFetch;\n Object.assign(globalThis, {\n fetch,\n Response,\n Headers,\n Request,\n AbortError,\n FetchError,\n FormData,\n Blob,\n File,\n });\n // abort controller\n return true;\n }\n return import('node-fetch').then((v) => polyfillFetch(v));\n}\n"],"names":["polyfillFetch","nodeFetch","globalThis","default","fetch","Response","Headers","Request","AbortError","FetchError","FormData","Blob","File","Object","assign","then","v"],"mappings":"AAIA,OAAO,SAASA,cAAcC,SAAuC;IACnE,IAAI,WAAWC,YAAY;QACzB,OAAO;IACT;IACA,YAAY;IACZ,IAAID,WAAW;QACb,MAAM,EAAEE,SAASC,KAAK,EAAEC,QAAQ,EAAEC,OAAO,EAAEC,OAAO,EAAEC,UAAU,EAAEC,UAAU,EAAEC,QAAQ,EAAEC,IAAI,EAAEC,IAAI,EAAE,GAAGX;QACrGY,OAAOC,MAAM,CAACZ,YAAY;YACxBE;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;YACAC;QACF;QACA,mBAAmB;QACnB,OAAO;IACT;IACA,OAAO,MAAM,CAAC,cAAcG,IAAI,CAAC,CAACC,IAAMhB,cAAcgB;AACxD"}
|
|
@@ -1,57 +1,64 @@
|
|
|
1
1
|
import { getGlobalThis } from '../../isomorphics/getGlobalThis.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
}
|
|
22
|
-
|
|
2
|
+
export async function polyfillJsDom() {
|
|
3
|
+
if (typeof window !== 'undefined') {
|
|
4
|
+
return false;
|
|
5
|
+
}
|
|
6
|
+
const globalThis = getGlobalThis();
|
|
7
|
+
const { ResourceLoader, JSDOM } = await import('jsdom');
|
|
8
|
+
// https://github.com/lukechilds/window/blob/master/src/index.js
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-extraneous-class
|
|
10
|
+
let Window = class Window {
|
|
11
|
+
constructor(opts = {}){
|
|
12
|
+
const { proxy, strictSSL, userAgent, ...jsdomOpts } = opts;
|
|
13
|
+
const resources = new ResourceLoader({
|
|
14
|
+
proxy,
|
|
15
|
+
strictSSL,
|
|
16
|
+
userAgent
|
|
17
|
+
});
|
|
18
|
+
return new JSDOM('', Object.assign(jsdomOpts, {
|
|
19
|
+
resources
|
|
20
|
+
})).window;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
// https://github.com/lukechilds/browser-env/blob/master/src/index.js
|
|
24
|
+
// Default jsdom config.
|
|
25
|
+
// These settings must override any custom settings to make sure we can iterate
|
|
26
|
+
// over the window object.
|
|
27
|
+
const defaultJsdomConfig = {
|
|
28
|
+
};
|
|
29
|
+
// IIFE executed on import to return an array of global Node.js properties that
|
|
30
|
+
// conflict with global browser properties.
|
|
31
|
+
const protectedProperties = (()=>Object.getOwnPropertyNames(new Window(defaultJsdomConfig)).filter((prop)=>typeof globalThis[prop] !== 'undefined'))();
|
|
32
|
+
function installEnv(...args) {
|
|
33
|
+
// Sets up global browser environment
|
|
34
|
+
// Extract options from args
|
|
35
|
+
const properties = args.filter((arg)=>Array.isArray(arg))[0];
|
|
36
|
+
const userJsdomConfig = args.filter((arg)=>!Array.isArray(arg))[0];
|
|
37
|
+
// Create window object
|
|
38
|
+
const window1 = new Window(Object.assign({}, userJsdomConfig, defaultJsdomConfig));
|
|
39
|
+
// Get all global browser properties
|
|
40
|
+
Object.getOwnPropertyNames(window1)// Remove protected properties
|
|
41
|
+
.filter((prop)=>!protectedProperties.includes(prop))// If we're only applying specific required properties remove everything else
|
|
42
|
+
.filter((prop)=>!(properties && properties.indexOf(prop) === -1)).filter((prop)=>{
|
|
43
|
+
switch(prop){
|
|
44
|
+
case 'undefined':
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
})// Copy what's left to the Node.js global scope
|
|
49
|
+
.forEach((prop)=>{
|
|
50
|
+
// console.debug(`define globalThis.${prop}`);
|
|
51
|
+
Object.defineProperty(globalThis, prop, {
|
|
52
|
+
configurable: true,
|
|
53
|
+
get: ()=>window1[prop]
|
|
54
|
+
});
|
|
55
|
+
});
|
|
56
|
+
return window1;
|
|
23
57
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// features: {
|
|
27
|
-
// FetchExternalResources: false,
|
|
28
|
-
// ProcessExternalResources: false,
|
|
29
|
-
// },
|
|
30
|
-
};
|
|
31
|
-
const protectedProperties = (() => Object.getOwnPropertyNames(new Window(defaultJsdomConfig)).filter(
|
|
32
|
-
(prop) => typeof globalThis[prop] !== "undefined"
|
|
33
|
-
))();
|
|
34
|
-
function installEnv(...args) {
|
|
35
|
-
const properties = args.filter((arg) => Array.isArray(arg))[0];
|
|
36
|
-
const userJsdomConfig = args.filter((arg) => !Array.isArray(arg))[0];
|
|
37
|
-
const window2 = new Window(Object.assign({}, userJsdomConfig, defaultJsdomConfig));
|
|
38
|
-
Object.getOwnPropertyNames(window2).filter((prop) => !protectedProperties.includes(prop)).filter((prop) => !(properties && properties.indexOf(prop) === -1)).filter((prop) => {
|
|
39
|
-
switch (prop) {
|
|
40
|
-
case "undefined":
|
|
41
|
-
return false;
|
|
42
|
-
}
|
|
43
|
-
return true;
|
|
44
|
-
}).forEach((prop) => {
|
|
45
|
-
Object.defineProperty(globalThis, prop, {
|
|
46
|
-
configurable: true,
|
|
47
|
-
get: () => window2[prop]
|
|
48
|
-
});
|
|
58
|
+
installEnv({
|
|
59
|
+
url: 'http://localhost'
|
|
49
60
|
});
|
|
50
|
-
return
|
|
51
|
-
}
|
|
52
|
-
installEnv({ url: "http://localhost" });
|
|
53
|
-
return true;
|
|
61
|
+
return true;
|
|
54
62
|
}
|
|
55
63
|
|
|
56
|
-
|
|
57
|
-
//# sourceMappingURL=polyfillJsDom.js.map
|
|
64
|
+
//# sourceMappingURL=polyfillJsDom.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/servers/polyfill/polyfillJsDom.ts"],"sourcesContent":["import type { ConstructorOptions, ResourceLoaderConstructorOptions } from 'jsdom';\nimport { getGlobalThis } from '../../isomorphics/getGlobalThis';\n\nexport async function polyfillJsDom() {\n if (typeof window !== 'undefined') {\n return false;\n }\n\n const globalThis = getGlobalThis();\n\n const { ResourceLoader, JSDOM } = await import('jsdom');\n\n // https://github.com/lukechilds/window/blob/master/src/index.js\n // eslint-disable-next-line @typescript-eslint/no-extraneous-class\n class Window {\n constructor(opts: ResourceLoaderConstructorOptions & ConstructorOptions = {}) {\n const { proxy, strictSSL, userAgent, ...jsdomOpts } = opts;\n const resources = new ResourceLoader({\n proxy,\n strictSSL,\n userAgent,\n });\n return new JSDOM(\n '',\n Object.assign(jsdomOpts, {\n resources,\n }),\n ).window;\n }\n }\n\n // https://github.com/lukechilds/browser-env/blob/master/src/index.js\n // Default jsdom config.\n // These settings must override any custom settings to make sure we can iterate\n // over the window object.\n const defaultJsdomConfig = {\n // features: {\n // FetchExternalResources: false,\n // ProcessExternalResources: false,\n // },\n };\n // IIFE executed on import to return an array of global Node.js properties that\n // conflict with global browser properties.\n const protectedProperties = (() =>\n Object.getOwnPropertyNames(new Window(defaultJsdomConfig)).filter(\n (prop) => typeof globalThis[prop as keyof typeof globalThis] !== 'undefined',\n ))();\n\n function installEnv(...args: any[]) {\n // Sets up global browser environment\n // Extract options from args\n const properties = args.filter((arg: any) => Array.isArray(arg))[0];\n const userJsdomConfig = args.filter((arg: any) => !Array.isArray(arg))[0];\n\n // Create window object\n const window = new Window(Object.assign({}, userJsdomConfig, defaultJsdomConfig));\n\n // Get all global browser properties\n Object.getOwnPropertyNames(window)\n\n // Remove protected properties\n .filter((prop) => !protectedProperties.includes(prop))\n\n // If we're only applying specific required properties remove everything else\n .filter((prop) => !(properties && properties.indexOf(prop) === -1))\n .filter((prop) => {\n switch (prop) {\n case 'undefined':\n return false;\n }\n return true;\n })\n\n // Copy what's left to the Node.js global scope\n .forEach((prop) => {\n // console.debug(`define globalThis.${prop}`);\n Object.defineProperty(globalThis, prop, {\n configurable: true,\n get: () => window[prop as keyof Window] as any,\n });\n });\n\n return window;\n }\n\n installEnv({ url: 'http://localhost' });\n return true;\n}\n"],"names":["getGlobalThis","polyfillJsDom","window","globalThis","ResourceLoader","JSDOM","Window","constructor","opts","proxy","strictSSL","userAgent","jsdomOpts","resources","Object","assign","defaultJsdomConfig","protectedProperties","getOwnPropertyNames","filter","prop","installEnv","args","properties","arg","Array","isArray","userJsdomConfig","includes","indexOf","forEach","defineProperty","configurable","get","url"],"mappings":"AACA,SAASA,aAAa,QAAQ,kCAAkC;AAEhE,OAAO,eAAeC;IACpB,IAAI,OAAOC,WAAW,aAAa;QACjC,OAAO;IACT;IAEA,MAAMC,aAAaH;IAEnB,MAAM,EAAEI,cAAc,EAAEC,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC;IAE/C,gEAAgE;IAChE,kEAAkE;IAClE,IAAA,AAAMC,SAAN,MAAMA;QACJC,YAAYC,OAA8D,CAAC,CAAC,CAAE;YAC5E,MAAM,EAAEC,KAAK,EAAEC,SAAS,EAAEC,SAAS,EAAE,GAAGC,WAAW,GAAGJ;YACtD,MAAMK,YAAY,IAAIT,eAAe;gBACnCK;gBACAC;gBACAC;YACF;YACA,OAAO,IAAIN,MACT,IACAS,OAAOC,MAAM,CAACH,WAAW;gBACvBC;YACF,IACAX,MAAM;QACV;IACF;IAEA,qEAAqE;IACrE,wBAAwB;IACxB,+EAA+E;IAC/E,0BAA0B;IAC1B,MAAMc,qBAAqB;IAK3B;IACA,+EAA+E;IAC/E,2CAA2C;IAC3C,MAAMC,sBAAsB,AAAC,CAAA,IAC3BH,OAAOI,mBAAmB,CAAC,IAAIZ,OAAOU,qBAAqBG,MAAM,CAC/D,CAACC,OAAS,OAAOjB,UAAU,CAACiB,KAAgC,KAAK,YACnE;IAEF,SAASC,WAAW,GAAGC,IAAW;QAChC,qCAAqC;QACrC,4BAA4B;QAC5B,MAAMC,aAAaD,KAAKH,MAAM,CAAC,CAACK,MAAaC,MAAMC,OAAO,CAACF,KAAK,CAAC,EAAE;QACnE,MAAMG,kBAAkBL,KAAKH,MAAM,CAAC,CAACK,MAAa,CAACC,MAAMC,OAAO,CAACF,KAAK,CAAC,EAAE;QAEzE,uBAAuB;QACvB,MAAMtB,UAAS,IAAII,OAAOQ,OAAOC,MAAM,CAAC,CAAC,GAAGY,iBAAiBX;QAE7D,oCAAoC;QACpCF,OAAOI,mBAAmB,CAAChB,QAEzB,8BAA8B;SAC7BiB,MAAM,CAAC,CAACC,OAAS,CAACH,oBAAoBW,QAAQ,CAACR,MAEhD,6EAA6E;SAC5ED,MAAM,CAAC,CAACC,OAAS,CAAEG,CAAAA,cAAcA,WAAWM,OAAO,CAACT,UAAU,CAAC,CAAA,GAC/DD,MAAM,CAAC,CAACC;YACP,OAAQA;gBACN,KAAK;oBACH,OAAO;YACX;YACA,OAAO;QACT,EAEA,+CAA+C;SAC9CU,OAAO,CAAC,CAACV;YACR,8CAA8C;YAC9CN,OAAOiB,cAAc,CAAC5B,YAAYiB,MAAM;gBACtCY,cAAc;gBACdC,KAAK,IAAM/B,OAAM,CAACkB,KAAqB;YACzC;QACF;QAEF,OAAOlB;IACT;IAEAmB,WAAW;QAAEa,KAAK;IAAmB;IACrC,OAAO;AACT"}
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { getGlobalThis } from '../../isomorphics/getGlobalThis.js';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
export function polyfillWebSocket(ws) {
|
|
3
|
+
const globalThis = getGlobalThis();
|
|
4
|
+
if ('WebSocket' in globalThis) {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
if (ws) {
|
|
8
|
+
const { WebSocket } = ws;
|
|
9
|
+
Object.assign(globalThis, {
|
|
10
|
+
WebSocket
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
return import('ws').then((ws)=>polyfillWebSocket(ws));
|
|
13
14
|
}
|
|
14
15
|
|
|
15
|
-
|
|
16
|
-
//# sourceMappingURL=polyfillWebSocket.js.map
|
|
16
|
+
//# sourceMappingURL=polyfillWebSocket.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../../src/servers/polyfill/polyfillWebSocket.ts"],"sourcesContent":["import type { MaybePromise } from '../../asyncs/MaybePromise';\nimport { getGlobalThis } from '../../isomorphics/getGlobalThis';\n\nexport function polyfillWebSocket(ws: any): boolean;\nexport function polyfillWebSocket(ws?: undefined): Promise<boolean>;\nexport function polyfillWebSocket(ws?: any): MaybePromise<boolean> {\n const globalThis = getGlobalThis();\n if ('WebSocket' in globalThis) {\n return false;\n }\n if (ws) {\n const { WebSocket } = ws;\n Object.assign(globalThis, { WebSocket });\n }\n return import('ws').then((ws) => polyfillWebSocket(ws));\n}\n"],"names":["getGlobalThis","polyfillWebSocket","ws","globalThis","WebSocket","Object","assign","then"],"mappings":"AACA,SAASA,aAAa,QAAQ,kCAAkC;AAIhE,OAAO,SAASC,kBAAkBC,EAAQ;IACxC,MAAMC,aAAaH;IACnB,IAAI,eAAeG,YAAY;QAC7B,OAAO;IACT;IACA,IAAID,IAAI;QACN,MAAM,EAAEE,SAAS,EAAE,GAAGF;QACtBG,OAAOC,MAAM,CAACH,YAAY;YAAEC;QAAU;IACxC;IACA,OAAO,MAAM,CAAC,MAAMG,IAAI,CAAC,CAACL,KAAOD,kBAAkBC;AACrD"}
|
package/lib/servers/ws.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export * from './polyfill/polyfillWebSocket.js';
|
|
2
|
+
|
|
3
|
+
//# sourceMappingURL=ws.js.map
|
package/lib/servers/ws.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/servers/ws.ts"],"sourcesContent":["export * from './polyfill/polyfillWebSocket';\n"],"names":[],"mappings":"AAAA,cAAc,+BAA+B"}
|