@wener/utils 1.1.20 → 1.1.22
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/dist/cjs/index.cjs +9 -9
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/server.cjs +1 -1
- package/dist/cjs/server.cjs.map +1 -1
- package/dist/esm/index.js +9 -9
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/esm/server.js.map +1 -1
- package/dist/system/index.js +9 -9
- package/dist/system/index.js.map +1 -1
- package/dist/system/server.js +1 -1
- package/dist/system/server.js.map +1 -1
- package/lib/asyncs/createAsyncIterator.js.map +1 -1
- package/lib/asyncs/createLazyPromise.js.map +1 -1
- package/lib/crypto/md5.js +123 -0
- package/lib/crypto/md5.js.map +1 -0
- package/lib/errors/Errors.js +137 -0
- package/lib/errors/Errors.js.map +1 -0
- package/lib/fetch/dumpResponse.js +1 -1
- package/lib/fetch/dumpResponse.js.map +1 -1
- package/lib/http/HttpStatus.js +85 -0
- package/lib/http/HttpStatus.js.map +1 -0
- package/lib/index.js +4 -1
- package/lib/index.js.map +1 -1
- package/lib/logging/createLogger.js.map +1 -1
- package/lib/server.js +0 -3
- package/lib/server.js.map +1 -1
- package/package.json +21 -7
- package/server/jsdom.ts +1 -0
- package/server/node-fetch.ts +1 -0
- package/server/ws.ts +1 -0
- package/src/asyncs/createAsyncIterator.ts +10 -7
- package/src/asyncs/createLazyPromise.test.ts +9 -8
- package/src/asyncs/createLazyPromise.ts +1 -1
- package/src/crypto/md5.bench.ts +31 -0
- package/src/crypto/md5.test.ts +8 -0
- package/src/errors/Errors.ts +199 -0
- package/src/fetch/dumpResponse.ts +3 -3
- package/src/http/HttpStatus.ts +96 -0
- package/src/index.ts +10 -1
- package/src/logging/createLogger.ts +9 -0
- package/src/server.ts +0 -3
- package/src/servers/jsdom.ts +1 -0
- package/src/servers/node-fetch.ts +2 -0
- package/src/servers/ws.ts +1 -0
- package/src/types/global.d.ts +11 -0
- package/src/types/index.d.ts +8 -0
- package/types.d.ts +1 -0
- package/lib/servers/polyfill/polyfillBrowser.js +0 -12
- package/lib/servers/polyfill/polyfillBrowser.js.map +0 -1
- package/lib/servers/polyfill/polyfillFetch.js +0 -24
- package/lib/servers/polyfill/polyfillFetch.js.map +0 -1
- package/lib/servers/polyfill/polyfillJsDom.js +0 -57
- package/lib/servers/polyfill/polyfillJsDom.js.map +0 -1
- package/lib/servers/polyfill/polyfillWebSocket.js +0 -16
- package/lib/servers/polyfill/polyfillWebSocket.js.map +0 -1
package/types.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './src/types/global';
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { polyfillCrypto } from './polyfillCrypto.js';
|
|
2
|
-
import { polyfillFetch } from './polyfillFetch.js';
|
|
3
|
-
import { polyfillJsDom } from './polyfillJsDom.js';
|
|
4
|
-
|
|
5
|
-
async function polyfillBrowser() {
|
|
6
|
-
await polyfillCrypto();
|
|
7
|
-
await polyfillFetch();
|
|
8
|
-
await polyfillJsDom();
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export { polyfillBrowser };
|
|
12
|
-
//# sourceMappingURL=polyfillBrowser.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polyfillBrowser.js","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":[],"mappings":";;;;AAYA,eAAsB,eAAkB,GAAA;AACtC,EAAA,MAAM,cAAe,EAAA,CAAA;AACrB,EAAA,MAAM,aAAc,EAAA,CAAA;AACpB,EAAA,MAAM,aAAc,EAAA,CAAA;AACtB;;;;"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
function polyfillFetch(nodeFetch) {
|
|
2
|
-
if ("fetch" in globalThis) {
|
|
3
|
-
return false;
|
|
4
|
-
}
|
|
5
|
-
if (nodeFetch) {
|
|
6
|
-
const { default: fetch, Response, Headers, Request, AbortError, FetchError, FormData, Blob, File } = nodeFetch;
|
|
7
|
-
Object.assign(globalThis, {
|
|
8
|
-
fetch,
|
|
9
|
-
Response,
|
|
10
|
-
Headers,
|
|
11
|
-
Request,
|
|
12
|
-
AbortError,
|
|
13
|
-
FetchError,
|
|
14
|
-
FormData,
|
|
15
|
-
Blob,
|
|
16
|
-
File
|
|
17
|
-
});
|
|
18
|
-
return true;
|
|
19
|
-
}
|
|
20
|
-
return import('node-fetch').then((v) => polyfillFetch(v));
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export { polyfillFetch };
|
|
24
|
-
//# sourceMappingURL=polyfillFetch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polyfillFetch.js","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":[],"mappings":"AAIO,SAAS,cAAc,SAAgE,EAAA;AAC5F,EAAA,IAAI,WAAW,UAAY,EAAA;AACzB,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,IAAI,SAAW,EAAA;AACb,IAAM,MAAA,EAAE,OAAS,EAAA,KAAA,EAAO,QAAU,EAAA,OAAA,EAAS,OAAS,EAAA,UAAA,EAAY,UAAY,EAAA,QAAA,EAAU,IAAM,EAAA,IAAA,EAAS,GAAA,SAAA,CAAA;AACrG,IAAA,MAAA,CAAO,OAAO,UAAY,EAAA;AAAA,MACxB,KAAA;AAAA,MACA,QAAA;AAAA,MACA,OAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA,MACA,UAAA;AAAA,MACA,QAAA;AAAA,MACA,IAAA;AAAA,MACA,IAAA;AAAA,KACD,CAAA,CAAA;AAED,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,OAAO,YAAY,CAAE,CAAA,IAAA,CAAK,CAAC,CAAM,KAAA,aAAA,CAAc,CAAC,CAAC,CAAA,CAAA;AAC1D;;;;"}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { getGlobalThis } from '../../isomorphics/getGlobalThis.js';
|
|
2
|
-
|
|
3
|
-
async function polyfillJsDom() {
|
|
4
|
-
if (typeof window !== "undefined") {
|
|
5
|
-
return false;
|
|
6
|
-
}
|
|
7
|
-
const globalThis = getGlobalThis();
|
|
8
|
-
const { ResourceLoader, JSDOM } = await import('jsdom');
|
|
9
|
-
class Window {
|
|
10
|
-
constructor(opts = {}) {
|
|
11
|
-
const { proxy, strictSSL, userAgent, ...jsdomOpts } = opts;
|
|
12
|
-
const resources = new ResourceLoader({
|
|
13
|
-
proxy,
|
|
14
|
-
strictSSL,
|
|
15
|
-
userAgent
|
|
16
|
-
});
|
|
17
|
-
return new JSDOM(
|
|
18
|
-
"",
|
|
19
|
-
Object.assign(jsdomOpts, {
|
|
20
|
-
resources
|
|
21
|
-
})
|
|
22
|
-
).window;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
const defaultJsdomConfig = {
|
|
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
|
-
});
|
|
49
|
-
});
|
|
50
|
-
return window2;
|
|
51
|
-
}
|
|
52
|
-
installEnv({ url: "http://localhost" });
|
|
53
|
-
return true;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export { polyfillJsDom };
|
|
57
|
-
//# sourceMappingURL=polyfillJsDom.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polyfillJsDom.js","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":["window"],"mappings":";;AAGA,eAAsB,aAAgB,GAAA;AACpC,EAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AAEA,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AAEjC,EAAA,MAAM,EAAE,cAAgB,EAAA,KAAA,EAAU,GAAA,MAAM,OAAO,OAAO,CAAA,CAAA;AAAA,EAItD,MAAM,MAAO,CAAA;AAAA,IACX,WAAA,CAAY,IAA8D,GAAA,EAAI,EAAA;AAC5E,MAAA,MAAM,EAAE,KAAO,EAAA,SAAA,EAAW,SAAW,EAAA,GAAG,WAAc,GAAA,IAAA,CAAA;AACtD,MAAM,MAAA,SAAA,GAAY,IAAI,cAAe,CAAA;AAAA,QACnC,KAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,OACD,CAAA,CAAA;AACD,MAAA,OAAO,IAAI,KAAA;AAAA,QACT,EAAA;AAAA,QACA,MAAA,CAAO,OAAO,SAAW,EAAA;AAAA,UACvB,SAAA;AAAA,SACD,CAAA;AAAA,OACD,CAAA,MAAA,CAAA;AAAA,KACJ;AAAA,GACF;AAMA,EAAA,MAAM,kBAAqB,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,GAK3B,CAAA;AAGA,EAAM,MAAA,mBAAA,GAAA,CAAuB,MAC3B,MAAO,CAAA,mBAAA,CAAoB,IAAI,MAAO,CAAA,kBAAkB,CAAC,CAAE,CAAA,MAAA;AAAA,IACzD,CAAC,IAAA,KAAS,OAAO,UAAA,CAAW,IAA+B,CAAM,KAAA,WAAA;AAAA,GAChE,GAAA,CAAA;AAEL,EAAA,SAAS,cAAc,IAAa,EAAA;AAGlC,IAAM,MAAA,UAAA,GAAa,IAAK,CAAA,MAAA,CAAO,CAAC,GAAA,KAAa,MAAM,OAAQ,CAAA,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA;AAClE,IAAM,MAAA,eAAA,GAAkB,IAAK,CAAA,MAAA,CAAO,CAAC,GAAA,KAAa,CAAC,KAAA,CAAM,OAAQ,CAAA,GAAG,CAAC,CAAA,CAAE,CAAC,CAAA,CAAA;AAGxE,IAAMA,MAAAA,OAAAA,GAAS,IAAI,MAAO,CAAA,MAAA,CAAO,OAAO,EAAC,EAAG,eAAiB,EAAA,kBAAkB,CAAC,CAAA,CAAA;AAGhF,IAAO,MAAA,CAAA,mBAAA,CAAoBA,OAAM,CAAA,CAG9B,MAAO,CAAA,CAAC,SAAS,CAAC,mBAAA,CAAoB,QAAS,CAAA,IAAI,CAAC,CAAA,CAGpD,OAAO,CAAC,IAAA,KAAS,EAAE,UAAA,IAAc,UAAW,CAAA,OAAA,CAAQ,IAAI,CAAA,KAAM,CAAG,CAAA,CAAA,CAAA,CACjE,MAAO,CAAA,CAAC,IAAS,KAAA;AAChB,MAAA,QAAQ,IAAM;AAAA,QACZ,KAAK,WAAA;AACH,UAAO,OAAA,KAAA,CAAA;AAAA,OACX;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACR,CAAA,CAGA,OAAQ,CAAA,CAAC,IAAS,KAAA;AAEjB,MAAO,MAAA,CAAA,cAAA,CAAe,YAAY,IAAM,EAAA;AAAA,QACtC,YAAc,EAAA,IAAA;AAAA,QACd,GAAA,EAAK,MAAMA,OAAAA,CAAO,IAAoB,CAAA;AAAA,OACvC,CAAA,CAAA;AAAA,KACF,CAAA,CAAA;AAEH,IAAOA,OAAAA,OAAAA,CAAAA;AAAA,GACT;AAEA,EAAW,UAAA,CAAA,EAAE,GAAK,EAAA,kBAAA,EAAoB,CAAA,CAAA;AACtC,EAAO,OAAA,IAAA,CAAA;AACT;;;;"}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { getGlobalThis } from '../../isomorphics/getGlobalThis.js';
|
|
2
|
-
|
|
3
|
-
function polyfillWebSocket(ws) {
|
|
4
|
-
const globalThis = getGlobalThis();
|
|
5
|
-
if ("WebSocket" in globalThis) {
|
|
6
|
-
return false;
|
|
7
|
-
}
|
|
8
|
-
if (ws) {
|
|
9
|
-
const { WebSocket } = ws;
|
|
10
|
-
Object.assign(globalThis, { WebSocket });
|
|
11
|
-
}
|
|
12
|
-
return import('ws').then((ws2) => polyfillWebSocket(ws2));
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export { polyfillWebSocket };
|
|
16
|
-
//# sourceMappingURL=polyfillWebSocket.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"polyfillWebSocket.js","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":["ws"],"mappings":";;AAKO,SAAS,kBAAkB,EAAiC,EAAA;AACjE,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAA,IAAI,eAAe,UAAY,EAAA;AAC7B,IAAO,OAAA,KAAA,CAAA;AAAA,GACT;AACA,EAAA,IAAI,EAAI,EAAA;AACN,IAAM,MAAA,EAAE,WAAc,GAAA,EAAA,CAAA;AACtB,IAAA,MAAA,CAAO,MAAO,CAAA,UAAA,EAAY,EAAE,SAAA,EAAW,CAAA,CAAA;AAAA,GACzC;AACA,EAAO,OAAA,OAAO,IAAI,CAAE,CAAA,IAAA,CAAK,CAACA,GAAO,KAAA,iBAAA,CAAkBA,GAAE,CAAC,CAAA,CAAA;AACxD;;;;"}
|