@wener/utils 1.1.16 → 1.1.18

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 (87) hide show
  1. package/dist/cjs/index.cjs +5 -5
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/cjs/server.cjs +1 -1
  4. package/dist/cjs/server.cjs.map +1 -1
  5. package/dist/esm/index.js +11 -11
  6. package/dist/esm/index.js.map +1 -1
  7. package/dist/esm/server.js +1 -1
  8. package/dist/esm/server.js.map +1 -1
  9. package/dist/system/index.js +5 -5
  10. package/dist/system/index.js.map +1 -1
  11. package/dist/system/server.js +1 -1
  12. package/dist/system/server.js.map +1 -1
  13. package/lib/asyncs/createLazyPromise.js.map +1 -1
  14. package/lib/browsers/download.js.map +1 -1
  15. package/lib/browsers/getFileFromDataTransfer.js.map +1 -1
  16. package/lib/browsers/loaders.js.map +1 -1
  17. package/lib/crypto/getNodeCrypto.js.map +1 -1
  18. package/lib/crypto/getRandomValues.js.map +1 -1
  19. package/lib/crypto/pem/pem.js.map +1 -1
  20. package/lib/crypto/ulid.js +4 -1
  21. package/lib/crypto/ulid.js.map +1 -1
  22. package/lib/fetch/dumpRequest.js.map +1 -1
  23. package/lib/fetch/dumpResponse.js.map +1 -1
  24. package/lib/i18n/createTranslate.js.map +1 -1
  25. package/lib/io/ArrayBuffers.js +142 -164
  26. package/lib/io/ArrayBuffers.js.map +1 -1
  27. package/lib/io/Buffer.js +5 -6
  28. package/lib/io/Buffer.js.map +1 -1
  29. package/lib/libs/ms.js.map +1 -1
  30. package/lib/modules/parseModuleId.js.map +1 -1
  31. package/lib/server.js +8 -5
  32. package/lib/server.js.map +1 -1
  33. package/lib/servers/crypto/md5.js +8 -0
  34. package/lib/servers/crypto/md5.js.map +1 -0
  35. package/lib/servers/fetch/createFetchWithProxy.js.map +1 -0
  36. package/lib/servers/fetch/createFetchWithProxyByUndici.js.map +1 -0
  37. package/lib/servers/fetch/createFetchWithRetry.js +70 -0
  38. package/lib/servers/fetch/createFetchWithRetry.js.map +1 -0
  39. package/lib/servers/getPackageDir.js +18 -0
  40. package/lib/servers/getPackageDir.js.map +1 -0
  41. package/lib/servers/polyfill/polyfillBrowser.js.map +1 -0
  42. package/lib/servers/{polyfillCrypto.js → polyfill/polyfillCrypto.js} +1 -1
  43. package/lib/servers/polyfill/polyfillCrypto.js.map +1 -0
  44. package/lib/servers/polyfill/polyfillFetch.js.map +1 -0
  45. package/lib/servers/{polyfillJsDom.js → polyfill/polyfillJsDom.js} +1 -1
  46. package/lib/servers/polyfill/polyfillJsDom.js.map +1 -0
  47. package/lib/strings/formatBytes.js.map +1 -1
  48. package/lib/validations/isUUID.js +1 -1
  49. package/lib/validations/isUUID.js.map +1 -1
  50. package/lib/validations/parseTimestamp.js.map +1 -1
  51. package/package.json +6 -9
  52. package/src/crypto/hashing.test.ts +4 -1
  53. package/src/crypto/md5.d.ts +1 -0
  54. package/src/crypto/md5.js +44 -0
  55. package/src/crypto/ulid.test.ts +14 -1
  56. package/src/crypto/ulid.ts +5 -2
  57. package/src/fetch/types.ts +1 -1
  58. package/src/langs/hashCode.ts +37 -0
  59. package/src/logging/Logger.ts +6 -6
  60. package/src/logging/slog.test.ts +8 -0
  61. package/src/logging/slog.ts +100 -0
  62. package/src/maths/clamp.ts +1 -0
  63. package/src/server.ts +9 -5
  64. package/src/servers/crypto/md5.ts +5 -0
  65. package/src/servers/{createFetchWithProxyByNodeFetch.ts → fetch/createFetchWithProxyByNodeFetch.ts} +2 -2
  66. package/src/servers/{createFetchWithProxyByUndici.ts → fetch/createFetchWithProxyByUndici.ts} +3 -2
  67. package/src/servers/fetch/createFetchWithRetry.ts +95 -0
  68. package/src/servers/getPackageDir.ts +16 -0
  69. package/src/servers/{polyfillCrypto.ts → polyfill/polyfillCrypto.ts} +1 -1
  70. package/src/servers/{polyfillFetch.ts → polyfill/polyfillFetch.ts} +1 -1
  71. package/src/servers/{polyfillJsDom.ts → polyfill/polyfillJsDom.ts} +1 -1
  72. package/src/servers/{polyfillWebSocket.ts → polyfill/polyfillWebSocket.ts} +2 -2
  73. package/src/validations/isUUID.test.ts +14 -0
  74. package/src/validations/isUUID.ts +2 -2
  75. package/lib/servers/createFetchWithProxy.js.map +0 -1
  76. package/lib/servers/createFetchWithProxyByUndici.js.map +0 -1
  77. package/lib/servers/polyfillBrowser.js.map +0 -1
  78. package/lib/servers/polyfillCrypto.js.map +0 -1
  79. package/lib/servers/polyfillFetch.js.map +0 -1
  80. package/lib/servers/polyfillJsDom.js.map +0 -1
  81. /package/lib/servers/{createFetchWithProxy.js → fetch/createFetchWithProxy.js} +0 -0
  82. /package/lib/servers/{createFetchWithProxyByUndici.js → fetch/createFetchWithProxyByUndici.js} +0 -0
  83. /package/lib/servers/{polyfillBrowser.js → polyfill/polyfillBrowser.js} +0 -0
  84. /package/lib/servers/{polyfillFetch.js → polyfill/polyfillFetch.js} +0 -0
  85. /package/src/servers/{createFetchWithProxy.ts → fetch/createFetchWithProxy.ts} +0 -0
  86. /package/src/servers/{polyfillBrowser.test.ts → polyfill/polyfillBrowser.test.ts} +0 -0
  87. /package/src/servers/{polyfillBrowser.ts → polyfill/polyfillBrowser.ts} +0 -0
@@ -1,2 +1,2 @@
1
- System.register(["./getGlobalThis-8951eb0e.js"],function(w,y){"use strict";var h;return{setters:[function(p){h=p.g}],execute:function(){w({createFetchWithProxyByUndici:g,polyfillBrowser:m,polyfillCrypto:p,polyfillJsDom:d});async function p(){const r=h();return"crypto"in r?!1:(r.crypto=(await y.import("node:crypto")).webcrypto,!0)}async function d(){if(typeof window<"u")return!1;const r=h(),{ResourceLoader:c,JSDOM:s}=await y.import("jsdom");class a{constructor(o={}){const{proxy:i,strictSSL:f,userAgent:t,...F}=o,x=new c({proxy:i,strictSSL:f,userAgent:t});return new s("",Object.assign(F,{resources:x})).window}}const n={},u=(()=>Object.getOwnPropertyNames(new a(n)).filter(e=>typeof r[e]<"u"))();function l(...e){const o=e.filter(t=>Array.isArray(t))[0],i=e.filter(t=>!Array.isArray(t))[0],f=new a(Object.assign({},i,n));return Object.getOwnPropertyNames(f).filter(t=>!u.includes(t)).filter(t=>!(o&&o.indexOf(t)===-1)).filter(t=>{switch(t){case"undefined":return!1}return!0}).forEach(t=>{Object.defineProperty(r,t,{configurable:!0,get:()=>f[t]})}),f}return l({url:"http://localhost"}),!0}function b(r){if("fetch"in globalThis)return!1;if(r){const{default:c,Response:s,Headers:a,Request:n,AbortError:u,FetchError:l,FormData:e,Blob:o,File:i}=r;return Object.assign(globalThis,{fetch:c,Response:s,Headers:a,Request:n,AbortError:u,FetchError:l,FormData:e,Blob:o,File:i}),!0}return y.import("node-fetch").then(c=>b(c))}async function m(){await p(),await b(),await d()}function g({proxy:r,token:c,fetch:s,undici:a}={}){if(!r)return s||globalThis.fetch;let n;return async(...u)=>{const l=u[1]||={};{const e=l.body;typeof e=="object"&&e&&(e instanceof ReadableStream||Symbol.asyncIterator in e)&&(l.duplex||="half")}if(!n){let e=r,o=c;{let t;try{t=new URL(r)}catch{}!o&&t&&(t.username||t.password)&&(o=`Basic ${btoa(`${t.username||""}:${t.password}`)}`,t.username="",t.password="",e=t.toString())}a||=y.import("undici");const i=await a,f=i.ProxyAgent;s||=i.fetch,n=new f({uri:e,token:o})}return l.dispatcher=n,await s(...u)}}const O=w("createFetchWithProxy",g)}}});
1
+ System.register(["./getGlobalThis-8951eb0e.js","node:crypto","node:fs","node:path","node:url"],function(m,d){"use strict";var w,b,P,g,x;return{setters:[function(f){w=f.g},function(f){b=f.createHash},function(f){P=f.default},function(f){g=f.default},function(f){x=f.fileURLToPath}],execute:function(){m({createFetchWithProxyByUndici:O,createFetchWithRetry:A,getPackageDir:B,md5:S,polyfillBrowser:j,polyfillCrypto:f,polyfillJsDom:F});async function f(){const e=w();return"crypto"in e?!1:(e.crypto=(await d.import("node:crypto")).webcrypto,!0)}async function F(){if(typeof window<"u")return!1;const e=w(),{ResourceLoader:h,JSDOM:l}=await d.import("jsdom");class i{constructor(c={}){const{proxy:s,strictSSL:n,userAgent:t,...o}=c,a=new h({proxy:s,strictSSL:n,userAgent:t});return new l("",Object.assign(o,{resources:a})).window}}const u={},p=(()=>Object.getOwnPropertyNames(new i(u)).filter(r=>typeof e[r]<"u"))();function y(...r){const c=r.filter(t=>Array.isArray(t))[0],s=r.filter(t=>!Array.isArray(t))[0],n=new i(Object.assign({},s,u));return Object.getOwnPropertyNames(n).filter(t=>!p.includes(t)).filter(t=>!(c&&c.indexOf(t)===-1)).filter(t=>{switch(t){case"undefined":return!1}return!0}).forEach(t=>{Object.defineProperty(e,t,{configurable:!0,get:()=>n[t]})}),n}return y({url:"http://localhost"}),!0}function R(e){if("fetch"in globalThis)return!1;if(e){const{default:h,Response:l,Headers:i,Request:u,AbortError:p,FetchError:y,FormData:r,Blob:c,File:s}=e;return Object.assign(globalThis,{fetch:h,Response:l,Headers:i,Request:u,AbortError:p,FetchError:y,FormData:r,Blob:c,File:s}),!0}return d.import("node-fetch").then(h=>R(h))}async function j(){await f(),await R(),await F()}function O({proxy:e,token:h,fetch:l,undici:i}={}){if(!e)return l||globalThis.fetch;let u;return async(...p)=>{const y=p[1]||={};{const r=y.body;typeof r=="object"&&r&&(r instanceof ReadableStream||Symbol.asyncIterator in r)&&(y.duplex||="half")}if(!u){let r=e,c=h;{let t;try{t=new URL(e)}catch{}!c&&t&&(t.username||t.password)&&(c=`Basic ${btoa(`${t.username||""}:${t.password}`)}`,t.username="",t.password="",r=t.toString())}i||=d.import("undici");const s=await i,n=s.ProxyAgent;l||=s.fetch,u=new n({uri:r,token:c})}return y.dispatcher=u,await l(...p)}}const v=m("createFetchWithProxy",O);function A({fetch:e=w().fetch,retries:h=3,retryDelay:l=1e3,retryOn:i=[]}={}){return function(u,p){return new Promise(function(y,r){var c=function(n){var t=typeof Request<"u"&&u instanceof Request?u.clone():u;e(t,p).then(function(o){if(Array.isArray(i)&&i.indexOf(o.status)===-1)y(o);else if(typeof i=="function")try{return Promise.resolve(i(n,null,o)).then(function(a){a?s(n,null,o):y(o)}).catch(r)}catch(a){r(a)}else n<h?s(n,null,o):y(o)}).catch(function(o){if(typeof i=="function")try{Promise.resolve(i(n,o,null)).then(function(a){a?s(n,o,null):r(o)}).catch(function(a){r(a)})}catch(a){r(a)}else n<h?s(n,o,null):r(o)})};function s(n,t,o){let a=typeof l=="function"?l(n,t,o):l;setTimeout(function(){c(++n)},a)}c(0)})}}function S(e){return b("md5").update(e).digest("hex")}const D=x(d.meta.url),T=g.dirname(D);function B(e=T){for(;!P.existsSync(g.join(e,"package.json"));)if(e=g.resolve(e,".."),e==="/")return;return e}}}});
2
2
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sources":["../../src/servers/polyfillCrypto.ts","../../src/servers/polyfillJsDom.ts","../../src/servers/polyfillFetch.ts","../../src/servers/polyfillBrowser.ts","../../src/servers/createFetchWithProxyByUndici.ts","../../src/servers/createFetchWithProxy.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","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","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","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","import { MaybePromise } from '../asyncs/MaybePromise';\nimport { FetchLike } from '../fetch';\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 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 }\n init.dispatcher = agent;\n return await fetch!(...args);\n };\n}\n","import { createFetchWithProxyByUndici } from './createFetchWithProxyByUndici';\n\nexport const createFetchWithProxy = createFetchWithProxyByUndici;\n"],"names":["polyfillCrypto","globalThis","getGlobalThis","module","polyfillJsDom","ResourceLoader","JSDOM","Window","opts","proxy","strictSSL","userAgent","jsdomOpts","resources","defaultJsdomConfig","protectedProperties","prop","installEnv","args","properties","arg","userJsdomConfig","window","polyfillFetch","nodeFetch","fetch","Response","Headers","Request","AbortError","FetchError","FormData","Blob","File","v","polyfillBrowser","createFetchWithProxyByUndici","_token","undici","agent","init","body","uri","token","u","mod","ProxyAgent","createFetchWithProxy"],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sources":["../../src/servers/polyfill/polyfillCrypto.ts","../../src/servers/polyfill/polyfillJsDom.ts","../../src/servers/polyfill/polyfillFetch.ts","../../src/servers/polyfill/polyfillBrowser.ts","../../src/servers/fetch/createFetchWithProxyByUndici.ts","../../src/servers/fetch/createFetchWithProxy.ts","../../src/servers/fetch/createFetchWithRetry.ts","../../src/servers/crypto/md5.ts","../../src/servers/getPackageDir.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","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","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","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","import { MaybePromise } from '../../asyncs/MaybePromise';\nimport { FetchLike } from '../../fetch';\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 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","import { createFetchWithProxyByUndici } from './createFetchWithProxyByUndici';\n\nexport const createFetchWithProxy = createFetchWithProxyByUndici;\n","import { FetchLike } from '../../fetch';\nimport { getGlobalThis } from '../../isomorphics/getGlobalThis';\n\ntype RequestDelayFunction = (attempt: number, error: Error | null, response: Response | null) => number;\ntype RequestRetryOnFunction = (\n attempt: number,\n error: Error | null,\n response: Response | null,\n) => boolean | Promise<boolean>;\n\nexport interface FetchWithRetryOptions {\n fetch?: FetchLike;\n retries?: number;\n retryDelay?: number | RequestDelayFunction;\n retryOn?: number[] | RequestRetryOnFunction;\n}\n\nexport function createFetchWithRetry({\n fetch = getGlobalThis().fetch,\n retries = 3,\n retryDelay = 1000,\n retryOn = [],\n}: FetchWithRetryOptions = {}): FetchLike {\n // https://github.com/jonbern/fetch-retry/blob/master/index.js\n\n return function fetchRetry(input: string | Request, init?: RequestInit) {\n return new Promise(function (resolve, reject) {\n var wrappedFetch = function (attempt: number) {\n // As of node 18, this is no longer needed since node comes with native support for fetch:\n /* istanbul ignore next */\n var _input = typeof Request !== 'undefined' && input instanceof Request ? input.clone() : input;\n fetch(_input, init)\n .then(function (response) {\n if (Array.isArray(retryOn) && retryOn.indexOf(response.status) === -1) {\n resolve(response);\n } else if (typeof retryOn === 'function') {\n try {\n return Promise.resolve(retryOn(attempt, null, response))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n })\n .catch(reject);\n } catch (error) {\n reject(error);\n }\n } else {\n if (attempt < retries) {\n retry(attempt, null, response);\n } else {\n resolve(response);\n }\n }\n return;\n })\n .catch(function (error) {\n if (typeof retryOn === 'function') {\n try {\n // eslint-disable-next-line no-undef\n Promise.resolve(retryOn(attempt, error, null))\n .then(function (retryOnResponse) {\n if (retryOnResponse) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n })\n .catch(function (error) {\n reject(error);\n });\n } catch (error) {\n reject(error);\n }\n } else if (attempt < retries) {\n retry(attempt, error, null);\n } else {\n reject(error);\n }\n });\n };\n\n function retry(attempt: number, error: any, response: Response | null) {\n let delay = typeof retryDelay === 'function' ? retryDelay(attempt, error, response) : retryDelay;\n setTimeout(function () {\n wrappedFetch(++attempt);\n }, delay);\n }\n\n wrappedFetch(0);\n });\n };\n}\n","import { createHash } from 'node:crypto';\n\nexport function md5(input: Buffer | string) {\n return createHash('md5').update(input).digest('hex') as string;\n}\n","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":["polyfillCrypto","globalThis","getGlobalThis","module","polyfillJsDom","ResourceLoader","JSDOM","Window","opts","proxy","strictSSL","userAgent","jsdomOpts","resources","defaultJsdomConfig","protectedProperties","prop","installEnv","args","properties","arg","userJsdomConfig","window","polyfillFetch","nodeFetch","fetch","Response","Headers","Request","AbortError","FetchError","FormData","Blob","File","v","polyfillBrowser","createFetchWithProxyByUndici","_token","undici","agent","init","body","uri","token","u","mod","ProxyAgent","createFetchWithProxy","createFetchWithRetry","retries","retryDelay","retryOn","input","resolve","reject","wrappedFetch","attempt","_input","response","retryOnResponse","retry","error","delay","md5","createHash","__filename","fileURLToPath","__dirname","path","getPackageDir","currentDir","fs"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"createLazyPromise.js","sources":["../../src/asyncs/createLazyPromise.ts"],"sourcesContent":["import type { MaybePromise } from './MaybePromise';\nimport { isPromise } from './isPromise';\n\nexport type LazyPromise<T> = Promise<T> & {\n reject(reason?: any): void;\n resolve(v?: T | PromiseLike<T>): void;\n};\n\n/**\n * createLazyPromise return a promise that can be resolved or rejected manually.\n * if you pass a function to it, it will be executed when the promise try to resolve.\n */\nexport function createLazyPromise<T = any>(\n executor?:\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => void)\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T>),\n): LazyPromise<T> {\n const holder = {\n resolve(_: any): void {\n throw new Error('pending resolve');\n },\n reject(_: any): void {\n throw new Error('pending reject');\n },\n };\n const future = Object.assign(\n new Promise<T>((resolve, reject) => {\n holder.reject = reject;\n holder.resolve = resolve;\n }),\n {\n resolve(v: any) {\n holder.resolve(v);\n },\n reject(v: any) {\n holder.resolve(v);\n },\n },\n );\n if (executor) {\n const r = holder.resolve;\n let shouldExec = true;\n holder.resolve = (v: any) => {\n shouldExec = false;\n r(v);\n };\n const then = future.then.bind(future);\n future.then = (...args) => {\n if (shouldExec) {\n shouldExec = false;\n try {\n // kind of bad\n const result = executor(holder.resolve, holder.reject);\n // ensure resolve/reject is called\n if (isPromise(result)) {\n result.then(holder.resolve, holder.reject);\n } else if (result !== undefined) {\n holder.resolve(result);\n }\n } catch (e) {\n holder.reject(e);\n }\n }\n return then(...args);\n };\n const like = holder as LazyPromise<T>;\n like.then = future.then;\n like.catch = future.catch.bind(future);\n if (future.finally) like.finally = future.finally;\n\n void Object.defineProperty(like, Symbol.species, {\n get() {\n return Promise;\n },\n });\n return like;\n }\n return future;\n}\n"],"names":[],"mappings":";;AAYO,SAAS,kBACd,QAGgB,EAAA;AAChB,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,QAAQ,CAAc,EAAA;AACpB,MAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA,CAAA;AAAA,KACnC;AAAA,IACA,OAAO,CAAc,EAAA;AACnB,MAAM,MAAA,IAAI,MAAM,gBAAgB,CAAA,CAAA;AAAA,KAClC;AAAA,GACF,CAAA;AACA,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA;AAAA,IACpB,IAAI,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AAClC,MAAA,MAAA,CAAO,MAAS,GAAA,MAAA,CAAA;AAChB,MAAA,MAAA,CAAO,OAAU,GAAA,OAAA,CAAA;AAAA,KAClB,CAAA;AAAA,IACD;AAAA,MACE,QAAQ,CAAQ,EAAA;AACd,QAAA,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,OAClB;AAAA,MACA,OAAO,CAAQ,EAAA;AACb,QAAA,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,OAClB;AAAA,KACF;AAAA,GACF,CAAA;AACA,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,MAAM,IAAI,MAAO,CAAA,OAAA,CAAA;AACjB,IAAA,IAAI,UAAa,GAAA,IAAA,CAAA;AACjB,IAAO,MAAA,CAAA,OAAA,GAAU,CAAC,CAAW,KAAA;AAC3B,MAAa,UAAA,GAAA,KAAA,CAAA;AACb,MAAA,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,KACL,CAAA;AACA,IAAA,MAAM,IAAO,GAAA,MAAA,CAAO,IAAK,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AACpC,IAAO,MAAA,CAAA,IAAA,GAAO,IAAI,IAAS,KAAA;AACzB,MAAA,IAAI,UAAY,EAAA;AACd,QAAa,UAAA,GAAA,KAAA,CAAA;AACb,QAAI,IAAA;AAEF,UAAA,MAAM,MAAS,GAAA,QAAA,CAAS,MAAO,CAAA,OAAA,EAAS,OAAO,MAAM,CAAA,CAAA;AAErD,UAAI,IAAA,SAAA,CAAU,MAAM,CAAG,EAAA;AACrB,YAAA,MAAA,CAAO,IAAK,CAAA,MAAA,CAAO,OAAS,EAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,WAC3C,MAAA,IAAW,WAAW,KAAW,CAAA,EAAA;AAC/B,YAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,WACvB;AAAA,iBACO,CAAP,EAAA;AACA,UAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,SACjB;AAAA,OACF;AACA,MAAO,OAAA,IAAA,CAAK,GAAG,IAAI,CAAA,CAAA;AAAA,KACrB,CAAA;AACA,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AACb,IAAA,IAAA,CAAK,OAAO,MAAO,CAAA,IAAA,CAAA;AACnB,IAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AACrC,IAAA,IAAI,MAAO,CAAA,OAAA;AAAS,MAAA,IAAA,CAAK,UAAU,MAAO,CAAA,OAAA,CAAA;AAE1C,IAAA,KAAK,MAAO,CAAA,cAAA,CAAe,IAAM,EAAA,MAAA,CAAO,OAAS,EAAA;AAAA,MAC/C,GAAM,GAAA;AACJ,QAAO,OAAA,OAAA,CAAA;AAAA,OACT;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"createLazyPromise.js","sources":["../../src/asyncs/createLazyPromise.ts"],"sourcesContent":["import type { MaybePromise } from './MaybePromise';\nimport { isPromise } from './isPromise';\n\nexport type LazyPromise<T> = Promise<T> & {\n reject(reason?: any): void;\n resolve(v?: T | PromiseLike<T>): void;\n};\n\n/**\n * createLazyPromise return a promise that can be resolved or rejected manually.\n * if you pass a function to it, it will be executed when the promise try to resolve.\n */\nexport function createLazyPromise<T = any>(\n executor?:\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => void)\n | ((resolve: LazyPromise<T>['resolve'], reject: LazyPromise<T>['reject']) => MaybePromise<T>),\n): LazyPromise<T> {\n const holder = {\n resolve(_: any): void {\n throw new Error('pending resolve');\n },\n reject(_: any): void {\n throw new Error('pending reject');\n },\n };\n const future = Object.assign(\n new Promise<T>((resolve, reject) => {\n holder.reject = reject;\n holder.resolve = resolve;\n }),\n {\n resolve(v: any) {\n holder.resolve(v);\n },\n reject(v: any) {\n holder.resolve(v);\n },\n },\n );\n if (executor) {\n const r = holder.resolve;\n let shouldExec = true;\n holder.resolve = (v: any) => {\n shouldExec = false;\n r(v);\n };\n const then = future.then.bind(future);\n future.then = (...args) => {\n if (shouldExec) {\n shouldExec = false;\n try {\n // kind of bad\n const result = executor(holder.resolve, holder.reject);\n // ensure resolve/reject is called\n if (isPromise(result)) {\n result.then(holder.resolve, holder.reject);\n } else if (result !== undefined) {\n holder.resolve(result);\n }\n } catch (e) {\n holder.reject(e);\n }\n }\n return then(...args);\n };\n const like = holder as LazyPromise<T>;\n like.then = future.then;\n like.catch = future.catch.bind(future);\n if (future.finally) like.finally = future.finally;\n\n void Object.defineProperty(like, Symbol.species, {\n get() {\n return Promise;\n },\n });\n return like;\n }\n return future;\n}\n"],"names":[],"mappings":";;AAYO,SAAS,kBACd,QAGgB,EAAA;AAChB,EAAA,MAAM,MAAS,GAAA;AAAA,IACb,QAAQ,CAAc,EAAA;AACpB,MAAM,MAAA,IAAI,MAAM,iBAAiB,CAAA,CAAA;AAAA,KACnC;AAAA,IACA,OAAO,CAAc,EAAA;AACnB,MAAM,MAAA,IAAI,MAAM,gBAAgB,CAAA,CAAA;AAAA,KAClC;AAAA,GACF,CAAA;AACA,EAAA,MAAM,SAAS,MAAO,CAAA,MAAA;AAAA,IACpB,IAAI,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AAClC,MAAA,MAAA,CAAO,MAAS,GAAA,MAAA,CAAA;AAChB,MAAA,MAAA,CAAO,OAAU,GAAA,OAAA,CAAA;AAAA,KAClB,CAAA;AAAA,IACD;AAAA,MACE,QAAQ,CAAQ,EAAA;AACd,QAAA,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,OAClB;AAAA,MACA,OAAO,CAAQ,EAAA;AACb,QAAA,MAAA,CAAO,QAAQ,CAAC,CAAA,CAAA;AAAA,OAClB;AAAA,KACF;AAAA,GACF,CAAA;AACA,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,MAAM,IAAI,MAAO,CAAA,OAAA,CAAA;AACjB,IAAA,IAAI,UAAa,GAAA,IAAA,CAAA;AACjB,IAAO,MAAA,CAAA,OAAA,GAAU,CAAC,CAAW,KAAA;AAC3B,MAAa,UAAA,GAAA,KAAA,CAAA;AACb,MAAA,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,KACL,CAAA;AACA,IAAA,MAAM,IAAO,GAAA,MAAA,CAAO,IAAK,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AACpC,IAAO,MAAA,CAAA,IAAA,GAAO,IAAI,IAAS,KAAA;AACzB,MAAA,IAAI,UAAY,EAAA;AACd,QAAa,UAAA,GAAA,KAAA,CAAA;AACb,QAAI,IAAA;AAEF,UAAA,MAAM,MAAS,GAAA,QAAA,CAAS,MAAO,CAAA,OAAA,EAAS,OAAO,MAAM,CAAA,CAAA;AAErD,UAAI,IAAA,SAAA,CAAU,MAAM,CAAG,EAAA;AACrB,YAAA,MAAA,CAAO,IAAK,CAAA,MAAA,CAAO,OAAS,EAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,WAC3C,MAAA,IAAW,WAAW,KAAW,CAAA,EAAA;AAC/B,YAAA,MAAA,CAAO,QAAQ,MAAM,CAAA,CAAA;AAAA,WACvB;AAAA,iBACO,CAAG,EAAA;AACV,UAAA,MAAA,CAAO,OAAO,CAAC,CAAA,CAAA;AAAA,SACjB;AAAA,OACF;AACA,MAAO,OAAA,IAAA,CAAK,GAAG,IAAI,CAAA,CAAA;AAAA,KACrB,CAAA;AACA,IAAA,MAAM,IAAO,GAAA,MAAA,CAAA;AACb,IAAA,IAAA,CAAK,OAAO,MAAO,CAAA,IAAA,CAAA;AACnB,IAAA,IAAA,CAAK,KAAQ,GAAA,MAAA,CAAO,KAAM,CAAA,IAAA,CAAK,MAAM,CAAA,CAAA;AACrC,IAAA,IAAI,MAAO,CAAA,OAAA;AAAS,MAAA,IAAA,CAAK,UAAU,MAAO,CAAA,OAAA,CAAA;AAE1C,IAAA,KAAK,MAAO,CAAA,cAAA,CAAe,IAAM,EAAA,MAAA,CAAO,OAAS,EAAA;AAAA,MAC/C,GAAM,GAAA;AACJ,QAAO,OAAA,OAAA,CAAA;AAAA,OACT;AAAA,KACD,CAAA,CAAA;AACD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sources":["../../src/browsers/download.ts"],"sourcesContent":["/**\n * Trigger browser download\n * @param filename download as filename\n * @param data data or url to download\n * @param type content type\n * @param raw if true, data is treated as raw data, not url\n */\nexport function download(filename: string, data: any, { type = 'application/octet-stream', raw = false } = {}) {\n const a = document.createElement('a');\n let closer: () => void = () => null;\n try {\n a.download = filename;\n\n // console.info(`downloading ${name}`, data);\n\n // url or data url\n if (typeof data === 'string' && /^(https?:|data:)/.test(data) && !raw) {\n a.href = data;\n } else if (typeof data === 'string') {\n data = new TextEncoder().encode(data);\n }\n\n if (data instanceof Uint8Array) {\n data = new Blob([data], { type });\n }\n\n if (data instanceof File || data instanceof Blob || data instanceof MediaSource) {\n a.href = URL.createObjectURL(data);\n closer = () => {\n URL.revokeObjectURL(a.href);\n };\n } else {\n console.error(`invalid download data`, data);\n throw new Error(`can not download ${Object.getPrototypeOf(data)}`);\n }\n a.click();\n } finally {\n closer();\n }\n}\n"],"names":[],"mappings":"AAOgB,SAAA,QAAA,CAAS,QAAkB,EAAA,IAAA,EAAW,EAAE,IAAA,GAAO,4BAA4B,GAAM,GAAA,KAAA,EAAU,GAAA,EAAI,EAAA;AAC7G,EAAM,MAAA,CAAA,GAAI,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AACpC,EAAA,IAAI,SAAqB,MAAM,IAAA,CAAA;AAC/B,EAAI,IAAA;AACF,IAAA,CAAA,CAAE,QAAW,GAAA,QAAA,CAAA;AAKb,IAAI,IAAA,OAAO,SAAS,QAAY,IAAA,kBAAA,CAAmB,KAAK,IAAI,CAAA,IAAK,CAAC,GAAK,EAAA;AACrE,MAAA,CAAA,CAAE,IAAO,GAAA,IAAA,CAAA;AAAA,KACX,MAAA,IAAW,OAAO,IAAA,KAAS,QAAU,EAAA;AACnC,MAAA,IAAA,GAAO,IAAI,WAAA,EAAc,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,KACtC;AAEA,IAAA,IAAI,gBAAgB,UAAY,EAAA;AAC9B,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,CAAC,IAAI,CAAG,EAAA,EAAE,MAAM,CAAA,CAAA;AAAA,KAClC;AAEA,IAAA,IAAI,IAAgB,YAAA,IAAA,IAAQ,IAAgB,YAAA,IAAA,IAAQ,gBAAgB,WAAa,EAAA;AAC/E,MAAE,CAAA,CAAA,IAAA,GAAO,GAAI,CAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AACjC,MAAA,MAAA,GAAS,MAAM;AACb,QAAI,GAAA,CAAA,eAAA,CAAgB,EAAE,IAAI,CAAA,CAAA;AAAA,OAC5B,CAAA;AAAA,KACK,MAAA;AACL,MAAQ,OAAA,CAAA,KAAA,CAAM,yBAAyB,IAAI,CAAA,CAAA;AAC3C,MAAA,MAAM,IAAI,KAAM,CAAA,CAAA,iBAAA,EAAoB,MAAO,CAAA,cAAA,CAAe,IAAI,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,KACnE;AACA,IAAA,CAAA,CAAE,KAAM,EAAA,CAAA;AAAA,GACR,SAAA;AACA,IAAO,MAAA,EAAA,CAAA;AAAA,GACT;AACF;;;;"}
1
+ {"version":3,"file":"download.js","sources":["../../src/browsers/download.ts"],"sourcesContent":["/**\n * Trigger browser download\n * @param filename download as filename\n * @param data data or url to download\n * @param type content type\n * @param raw if true, data is treated as raw data, not url\n */\nexport function download(filename: string, data: any, { type = 'application/octet-stream', raw = false } = {}) {\n const a = document.createElement('a');\n let closer: () => void = () => null;\n try {\n a.download = filename;\n\n // console.info(`downloading ${name}`, data);\n\n // url or data url\n if (typeof data === 'string' && /^(https?:|data:)/.test(data) && !raw) {\n a.href = data;\n } else if (typeof data === 'string') {\n data = new TextEncoder().encode(data);\n }\n\n if (data instanceof Uint8Array) {\n data = new Blob([data], { type });\n }\n\n if (data instanceof File || data instanceof Blob || data instanceof MediaSource) {\n a.href = URL.createObjectURL(data);\n closer = () => {\n URL.revokeObjectURL(a.href);\n };\n } else {\n console.error(`invalid download data`, data);\n throw new Error(`can not download ${Object.getPrototypeOf(data)}`);\n }\n a.click();\n } finally {\n closer();\n }\n}\n"],"names":[],"mappings":"AAOgB,SAAA,QAAA,CAAS,QAAkB,EAAA,IAAA,EAAW,EAAE,IAAA,GAAO,4BAA4B,GAAM,GAAA,KAAA,EAAU,GAAA,EAAI,EAAA;AAC7G,EAAM,MAAA,CAAA,GAAI,QAAS,CAAA,aAAA,CAAc,GAAG,CAAA,CAAA;AACpC,EAAA,IAAI,SAAqB,MAAM,IAAA,CAAA;AAC/B,EAAI,IAAA;AACF,IAAA,CAAA,CAAE,QAAW,GAAA,QAAA,CAAA;AAKb,IAAI,IAAA,OAAO,SAAS,QAAY,IAAA,kBAAA,CAAmB,KAAK,IAAI,CAAA,IAAK,CAAC,GAAK,EAAA;AACrE,MAAA,CAAA,CAAE,IAAO,GAAA,IAAA,CAAA;AAAA,KACX,MAAA,IAAW,OAAO,IAAA,KAAS,QAAU,EAAA;AACnC,MAAA,IAAA,GAAO,IAAI,WAAA,EAAc,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA,KACtC;AAEA,IAAA,IAAI,gBAAgB,UAAY,EAAA;AAC9B,MAAA,IAAA,GAAO,IAAI,IAAK,CAAA,CAAC,IAAI,CAAG,EAAA,EAAE,MAAM,CAAA,CAAA;AAAA,KAClC;AAEA,IAAA,IAAI,IAAgB,YAAA,IAAA,IAAQ,IAAgB,YAAA,IAAA,IAAQ,gBAAgB,WAAa,EAAA;AAC/E,MAAE,CAAA,CAAA,IAAA,GAAO,GAAI,CAAA,eAAA,CAAgB,IAAI,CAAA,CAAA;AACjC,MAAA,MAAA,GAAS,MAAM;AACb,QAAI,GAAA,CAAA,eAAA,CAAgB,EAAE,IAAI,CAAA,CAAA;AAAA,OAC5B,CAAA;AAAA,KACK,MAAA;AACL,MAAQ,OAAA,CAAA,KAAA,CAAM,yBAAyB,IAAI,CAAA,CAAA;AAC3C,MAAA,MAAM,IAAI,KAAM,CAAA,CAAA,iBAAA,EAAoB,OAAO,cAAe,CAAA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAA;AAAA,KACnE;AACA,IAAA,CAAA,CAAE,KAAM,EAAA,CAAA;AAAA,GACR,SAAA;AACA,IAAO,MAAA,EAAA,CAAA;AAAA,GACT;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFileFromDataTransfer.js","sources":["../../src/browsers/getFileFromDataTransfer.ts"],"sourcesContent":["export function getFileFromDataTransfer(dataTransfer?: DataTransfer | null): { file?: File; name?: string } {\n if (!dataTransfer) {\n return {};\n }\n\n const items: DataTransferItemList = dataTransfer.items ?? [];\n\n if (items.length >= 2 && items[0].kind === 'string' && items[1].kind === 'file') {\n // name, file\n const text = dataTransfer.getData('text');\n const file = items[1].getAsFile() ?? dataTransfer.files?.item(0);\n if (!file) {\n console.error(`no file ${text}`, items[1]);\n return {};\n }\n\n // let type = file.type;\n // // fix type\n // type = type;\n // // NOTE paste file can not parse by libs\n // if (type !== file.type) {\n // const blob = file.slice(0, file.size);\n // file = new File([blob], text, {type});\n // }\n\n return { file, name: text };\n } else if (items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (!file) {\n console.error(`no file`, items[0]);\n return {};\n }\n return { file, name: file.name };\n } else {\n console.debug(\n `file item not match`,\n Array.from(items).map((v) => ({ type: v.type, kind: v.kind })),\n );\n }\n return {};\n}\n"],"names":[],"mappings":"AAAO,SAAS,wBAAwB,YAAoE,EAAA;AAA5G,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AACE,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAA,MAAM,KAA8B,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,KAAb,KAAA,IAAA,GAAA,EAAA,GAAsB,EAAC,CAAA;AAE3D,EAAA,IAAI,KAAM,CAAA,MAAA,IAAU,CAAK,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,IAAS,KAAA,QAAA,IAAY,KAAM,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,MAAQ,EAAA;AAE/E,IAAM,MAAA,IAAA,GAAO,YAAa,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AACxC,IAAM,MAAA,IAAA,GAAA,CAAO,EAAM,GAAA,KAAA,CAAA,CAAC,CAAE,CAAA,SAAA,OAAT,IAAwB,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,KAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoB,IAAK,CAAA,CAAA,CAAA,CAAA;AAC9D,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,QAAA,EAAW,IAAQ,CAAA,CAAA,EAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACzC,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAWA,IAAO,OAAA,EAAE,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA,CAAA;AAAA,GACjB,MAAA,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,SAAS,MAAQ,EAAA;AACnC,IAAA,MAAM,IAAO,GAAA,KAAA,CAAM,CAAC,CAAA,CAAE,SAAU,EAAA,CAAA;AAChC,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,OAAA,CAAA,EAAW,KAAM,CAAA,CAAC,CAAC,CAAA,CAAA;AACjC,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,IAAM,EAAA,IAAA,CAAK,IAAK,EAAA,CAAA;AAAA,GAC1B,MAAA;AACL,IAAQ,OAAA,CAAA,KAAA;AAAA,MACN,CAAA,mBAAA,CAAA;AAAA,MACA,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,IAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,CAAE,CAAA,IAAA,EAAM,IAAM,EAAA,CAAA,CAAE,MAAO,CAAA,CAAA;AAAA,KAC/D,CAAA;AAAA,GACF;AACA,EAAA,OAAO,EAAC,CAAA;AACV;;;;"}
1
+ {"version":3,"file":"getFileFromDataTransfer.js","sources":["../../src/browsers/getFileFromDataTransfer.ts"],"sourcesContent":["export function getFileFromDataTransfer(dataTransfer?: DataTransfer | null): { file?: File; name?: string } {\n if (!dataTransfer) {\n return {};\n }\n\n const items: DataTransferItemList = dataTransfer.items ?? [];\n\n if (items.length >= 2 && items[0].kind === 'string' && items[1].kind === 'file') {\n // name, file\n const text = dataTransfer.getData('text');\n const file = items[1].getAsFile() ?? dataTransfer.files?.item(0);\n if (!file) {\n console.error(`no file ${text}`, items[1]);\n return {};\n }\n\n // let type = file.type;\n // // fix type\n // type = type;\n // // NOTE paste file can not parse by libs\n // if (type !== file.type) {\n // const blob = file.slice(0, file.size);\n // file = new File([blob], text, {type});\n // }\n\n return { file, name: text };\n } else if (items[0].kind === 'file') {\n const file = items[0].getAsFile();\n if (!file) {\n console.error(`no file`, items[0]);\n return {};\n }\n return { file, name: file.name };\n } else {\n console.debug(\n `file item not match`,\n Array.from(items).map((v) => ({ type: v.type, kind: v.kind })),\n );\n }\n return {};\n}\n"],"names":[],"mappings":"AAAO,SAAS,wBAAwB,YAAoE,EAAA;AAA5G,EAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AACE,EAAA,IAAI,CAAC,YAAc,EAAA;AACjB,IAAA,OAAO,EAAC,CAAA;AAAA,GACV;AAEA,EAAA,MAAM,KAA8B,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,KAAb,KAAA,IAAA,GAAA,EAAA,GAAsB,EAAC,CAAA;AAE3D,EAAA,IAAI,KAAM,CAAA,MAAA,IAAU,CAAK,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,IAAS,KAAA,QAAA,IAAY,KAAM,CAAA,CAAC,CAAE,CAAA,IAAA,KAAS,MAAQ,EAAA;AAE/E,IAAM,MAAA,IAAA,GAAO,YAAa,CAAA,OAAA,CAAQ,MAAM,CAAA,CAAA;AACxC,IAAM,MAAA,IAAA,GAAA,CAAO,EAAM,GAAA,KAAA,CAAA,CAAC,CAAE,CAAA,SAAA,OAAT,IAAwB,GAAA,EAAA,GAAA,CAAA,EAAA,GAAA,YAAA,CAAa,KAAb,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoB,IAAK,CAAA,CAAA,CAAA,CAAA;AAC9D,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA,CAAQ,MAAM,CAAW,QAAA,EAAA,IAAI,CAAI,CAAA,EAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACzC,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AAWA,IAAO,OAAA,EAAE,IAAM,EAAA,IAAA,EAAM,IAAK,EAAA,CAAA;AAAA,GACjB,MAAA,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,SAAS,MAAQ,EAAA;AACnC,IAAA,MAAM,IAAO,GAAA,KAAA,CAAM,CAAC,CAAA,CAAE,SAAU,EAAA,CAAA;AAChC,IAAA,IAAI,CAAC,IAAM,EAAA;AACT,MAAA,OAAA,CAAQ,KAAM,CAAA,CAAA,OAAA,CAAA,EAAW,KAAM,CAAA,CAAC,CAAC,CAAA,CAAA;AACjC,MAAA,OAAO,EAAC,CAAA;AAAA,KACV;AACA,IAAA,OAAO,EAAE,IAAA,EAAM,IAAM,EAAA,IAAA,CAAK,IAAK,EAAA,CAAA;AAAA,GAC1B,MAAA;AACL,IAAQ,OAAA,CAAA,KAAA;AAAA,MACN,CAAA,mBAAA,CAAA;AAAA,MACA,KAAM,CAAA,IAAA,CAAK,KAAK,CAAA,CAAE,IAAI,CAAC,CAAA,MAAO,EAAE,IAAA,EAAM,CAAE,CAAA,IAAA,EAAM,IAAM,EAAA,CAAA,CAAE,MAAO,CAAA,CAAA;AAAA,KAC/D,CAAA;AAAA,GACF;AACA,EAAA,OAAO,EAAC,CAAA;AACV;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"loaders.js","sources":["../../src/browsers/loaders.ts"],"sourcesContent":["function load(\n el: HTMLScriptElement | HTMLLinkElement,\n resolve: (v: any) => void,\n reject: (v: any) => void,\n options: { attributes: Record<string, string> } | undefined,\n) {\n el.onload = () => {\n resolve(el);\n };\n el.onerror = (e) => {\n el.remove();\n reject(e);\n };\n const { attributes = {} } = options || {};\n Object.entries(attributes).forEach(([k, v]) => {\n el.setAttribute(k, v);\n });\n\n document.head.appendChild(el);\n}\n\nexport function loadScripts(\n src: string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement[]>;\nexport function loadScripts(src: string, options?: { attributes: Record<string, string> }): Promise<HTMLScriptElement>;\n\nexport function loadScripts(\n src: string | string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement | HTMLScriptElement[]> {\n if (Array.isArray(src)) {\n return Promise.resolve().then(async () => {\n const all = [];\n for (const s of src) {\n all.push(await loadScripts(s));\n }\n return all;\n });\n }\n // todo quote ?\n const $ele = document.querySelector(`script[src=\"${src}\"]`) as HTMLScriptElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n return new Promise((resolve, reject) => {\n const el = document.createElement('script');\n el.src = src;\n load(el, resolve, reject, options);\n });\n}\n\nexport function loadStyles(href: string, options?: { attributes: Record<string, string> }): Promise<HTMLLinkElement> {\n const $ele = document.querySelector(`link[href=\"${href}\"]`) as HTMLLinkElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n\n return new Promise((resolve, reject) => {\n const el = document.createElement('link');\n el.rel = 'stylesheet';\n el.href = href;\n load(el, resolve, reject, options);\n });\n}\n"],"names":[],"mappings":"AAAA,SAAS,IACP,CAAA,EAAA,EACA,OACA,EAAA,MAAA,EACA,OACA,EAAA;AACA,EAAA,EAAA,CAAG,SAAS,MAAM;AAChB,IAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACZ,CAAA;AACA,EAAG,EAAA,CAAA,OAAA,GAAU,CAAC,CAAM,KAAA;AAClB,IAAA,EAAA,CAAG,MAAO,EAAA,CAAA;AACV,IAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAAA,GACV,CAAA;AACA,EAAA,MAAM,EAAE,UAAa,GAAA,EAAG,EAAA,GAAI,WAAW,EAAC,CAAA;AACxC,EAAO,MAAA,CAAA,OAAA,CAAQ,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA;AAC7C,IAAG,EAAA,CAAA,YAAA,CAAa,GAAG,CAAC,CAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AAED,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,EAAE,CAAA,CAAA;AAC9B,CAAA;AAQgB,SAAA,WAAA,CACd,KACA,OACkD,EAAA;AAClD,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,GAAG,CAAG,EAAA;AACtB,IAAA,OAAO,OAAQ,CAAA,OAAA,EAAU,CAAA,IAAA,CAAK,YAAY;AACxC,MAAA,MAAM,MAAM,EAAC,CAAA;AACb,MAAA,KAAA,MAAW,KAAK,GAAK,EAAA;AACnB,QAAA,GAAA,CAAI,IAAK,CAAA,MAAM,WAAY,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OAC/B;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,MAAM,IAAO,GAAA,QAAA,CAAS,aAAc,CAAA,CAAA,YAAA,EAAe,GAAO,CAAA,EAAA,CAAA,CAAA,CAAA;AAC1D,EAAA,IAAI,IAAM,EAAA;AACR,IAAO,OAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AACA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;AAC1C,IAAA,EAAA,CAAG,GAAM,GAAA,GAAA,CAAA;AACT,IAAK,IAAA,CAAA,EAAA,EAAI,OAAS,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,GAClC,CAAA,CAAA;AACH,CAAA;AAEgB,SAAA,UAAA,CAAW,MAAc,OAA4E,EAAA;AACnH,EAAA,MAAM,IAAO,GAAA,QAAA,CAAS,aAAc,CAAA,CAAA,WAAA,EAAc,IAAQ,CAAA,EAAA,CAAA,CAAA,CAAA;AAC1D,EAAA,IAAI,IAAM,EAAA;AACR,IAAO,OAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AAEA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA,CAAA;AACxC,IAAA,EAAA,CAAG,GAAM,GAAA,YAAA,CAAA;AACT,IAAA,EAAA,CAAG,IAAO,GAAA,IAAA,CAAA;AACV,IAAK,IAAA,CAAA,EAAA,EAAI,OAAS,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,GAClC,CAAA,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"loaders.js","sources":["../../src/browsers/loaders.ts"],"sourcesContent":["function load(\n el: HTMLScriptElement | HTMLLinkElement,\n resolve: (v: any) => void,\n reject: (v: any) => void,\n options: { attributes: Record<string, string> } | undefined,\n) {\n el.onload = () => {\n resolve(el);\n };\n el.onerror = (e) => {\n el.remove();\n reject(e);\n };\n const { attributes = {} } = options || {};\n Object.entries(attributes).forEach(([k, v]) => {\n el.setAttribute(k, v);\n });\n\n document.head.appendChild(el);\n}\n\nexport function loadScripts(\n src: string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement[]>;\nexport function loadScripts(src: string, options?: { attributes: Record<string, string> }): Promise<HTMLScriptElement>;\n\nexport function loadScripts(\n src: string | string[],\n options?: { attributes: Record<string, string> },\n): Promise<HTMLScriptElement | HTMLScriptElement[]> {\n if (Array.isArray(src)) {\n return Promise.resolve().then(async () => {\n const all = [];\n for (const s of src) {\n all.push(await loadScripts(s));\n }\n return all;\n });\n }\n // todo quote ?\n const $ele = document.querySelector(`script[src=\"${src}\"]`) as HTMLScriptElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n return new Promise((resolve, reject) => {\n const el = document.createElement('script');\n el.src = src;\n load(el, resolve, reject, options);\n });\n}\n\nexport function loadStyles(href: string, options?: { attributes: Record<string, string> }): Promise<HTMLLinkElement> {\n const $ele = document.querySelector(`link[href=\"${href}\"]`) as HTMLLinkElement;\n if ($ele) {\n return Promise.resolve($ele);\n }\n\n return new Promise((resolve, reject) => {\n const el = document.createElement('link');\n el.rel = 'stylesheet';\n el.href = href;\n load(el, resolve, reject, options);\n });\n}\n"],"names":[],"mappings":"AAAA,SAAS,IACP,CAAA,EAAA,EACA,OACA,EAAA,MAAA,EACA,OACA,EAAA;AACA,EAAA,EAAA,CAAG,SAAS,MAAM;AAChB,IAAA,OAAA,CAAQ,EAAE,CAAA,CAAA;AAAA,GACZ,CAAA;AACA,EAAG,EAAA,CAAA,OAAA,GAAU,CAAC,CAAM,KAAA;AAClB,IAAA,EAAA,CAAG,MAAO,EAAA,CAAA;AACV,IAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAAA,GACV,CAAA;AACA,EAAA,MAAM,EAAE,UAAa,GAAA,EAAG,EAAA,GAAI,WAAW,EAAC,CAAA;AACxC,EAAO,MAAA,CAAA,OAAA,CAAQ,UAAU,CAAE,CAAA,OAAA,CAAQ,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA;AAC7C,IAAG,EAAA,CAAA,YAAA,CAAa,GAAG,CAAC,CAAA,CAAA;AAAA,GACrB,CAAA,CAAA;AAED,EAAS,QAAA,CAAA,IAAA,CAAK,YAAY,EAAE,CAAA,CAAA;AAC9B,CAAA;AAQgB,SAAA,WAAA,CACd,KACA,OACkD,EAAA;AAClD,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,GAAG,CAAG,EAAA;AACtB,IAAA,OAAO,OAAQ,CAAA,OAAA,EAAU,CAAA,IAAA,CAAK,YAAY;AACxC,MAAA,MAAM,MAAM,EAAC,CAAA;AACb,MAAA,KAAA,MAAW,KAAK,GAAK,EAAA;AACnB,QAAA,GAAA,CAAI,IAAK,CAAA,MAAM,WAAY,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,OAC/B;AACA,MAAO,OAAA,GAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH;AAEA,EAAA,MAAM,IAAO,GAAA,QAAA,CAAS,aAAc,CAAA,CAAA,YAAA,EAAe,GAAG,CAAI,EAAA,CAAA,CAAA,CAAA;AAC1D,EAAA,IAAI,IAAM,EAAA;AACR,IAAO,OAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AACA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,QAAQ,CAAA,CAAA;AAC1C,IAAA,EAAA,CAAG,GAAM,GAAA,GAAA,CAAA;AACT,IAAK,IAAA,CAAA,EAAA,EAAI,OAAS,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,GAClC,CAAA,CAAA;AACH,CAAA;AAEgB,SAAA,UAAA,CAAW,MAAc,OAA4E,EAAA;AACnH,EAAA,MAAM,IAAO,GAAA,QAAA,CAAS,aAAc,CAAA,CAAA,WAAA,EAAc,IAAI,CAAI,EAAA,CAAA,CAAA,CAAA;AAC1D,EAAA,IAAI,IAAM,EAAA;AACR,IAAO,OAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,CAAA;AAAA,GAC7B;AAEA,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAS,MAAW,KAAA;AACtC,IAAM,MAAA,EAAA,GAAK,QAAS,CAAA,aAAA,CAAc,MAAM,CAAA,CAAA;AACxC,IAAA,EAAA,CAAG,GAAM,GAAA,YAAA,CAAA;AACT,IAAA,EAAA,CAAG,IAAO,GAAA,IAAA,CAAA;AACV,IAAK,IAAA,CAAA,EAAA,EAAI,OAAS,EAAA,MAAA,EAAQ,OAAO,CAAA,CAAA;AAAA,GAClC,CAAA,CAAA;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getNodeCrypto.js","sources":["../../src/crypto/getNodeCrypto.ts"],"sourcesContent":["let nodeCrypto: Awaited<typeof import('node:crypto')>;\n// globalThis.process?.release?.name\n\n// avoid process.browser\nif (typeof window === 'undefined') {\n try {\n // avoid `node:` UnhandledSchemeError https://github.com/vercel/next.js/issues/28774\n if (typeof require === 'undefined') {\n void import('crypto').then((v) => (nodeCrypto = v.default));\n } else {\n nodeCrypto = require('crypto');\n }\n } catch (e) {}\n}\nexport function getNodeCrypto() {\n return nodeCrypto;\n}\n"],"names":[],"mappings":"AAAA,IAAI,UAAA,CAAA;AAIJ,IAAI,OAAO,WAAW,WAAa,EAAA;AACjC,EAAI,IAAA;AAEF,IAAI,IAAA,OAAO,YAAY,WAAa,EAAA;AAClC,MAAK,KAAA,OAAO,QAAQ,CAAE,CAAA,IAAA,CAAK,CAAC,CAAO,KAAA,UAAA,GAAa,EAAE,OAAQ,CAAA,CAAA;AAAA,KACrD,MAAA;AACL,MAAA,UAAA,GAAa,QAAQ,QAAQ,CAAA,CAAA;AAAA,KAC/B;AAAA,WACO,CAAP,EAAA;AAAA,GAAW;AACf,CAAA;AACO,SAAS,aAAgB,GAAA;AAC9B,EAAO,OAAA,UAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"getNodeCrypto.js","sources":["../../src/crypto/getNodeCrypto.ts"],"sourcesContent":["let nodeCrypto: Awaited<typeof import('node:crypto')>;\n// globalThis.process?.release?.name\n\n// avoid process.browser\nif (typeof window === 'undefined') {\n try {\n // avoid `node:` UnhandledSchemeError https://github.com/vercel/next.js/issues/28774\n if (typeof require === 'undefined') {\n void import('crypto').then((v) => (nodeCrypto = v.default));\n } else {\n nodeCrypto = require('crypto');\n }\n } catch (e) {}\n}\nexport function getNodeCrypto() {\n return nodeCrypto;\n}\n"],"names":[],"mappings":"AAAA,IAAI,UAAA,CAAA;AAIJ,IAAI,OAAO,WAAW,WAAa,EAAA;AACjC,EAAI,IAAA;AAEF,IAAI,IAAA,OAAO,YAAY,WAAa,EAAA;AAClC,MAAK,KAAA,OAAO,QAAQ,CAAE,CAAA,IAAA,CAAK,CAAC,CAAO,KAAA,UAAA,GAAa,EAAE,OAAQ,CAAA,CAAA;AAAA,KACrD,MAAA;AACL,MAAA,UAAA,GAAa,QAAQ,QAAQ,CAAA,CAAA;AAAA,KAC/B;AAAA,WACO,CAAG,EAAA;AAAA,GAAC;AACf,CAAA;AACO,SAAS,aAAgB,GAAA;AAC9B,EAAO,OAAA,UAAA,CAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"getRandomValues.js","sources":["../../src/crypto/getRandomValues.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { TypedArray } from '../io/ArrayBuffers';\nimport { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { getNodeCrypto } from './getNodeCrypto';\n\nconst globalThis = getGlobalThis();\nexport let getRandomValues: <T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T) => T =\n globalThis.crypto?.getRandomValues?.bind(globalThis.crypto) ||\n (globalThis as any).msCrypto?.getRandomValues?.bind((globalThis as any).msCrypto) ||\n _getRandomValues;\n\nfunction _getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(buf: T) {\n const nodeCrypto = getNodeCrypto();\n if (nodeCrypto?.webcrypto?.getRandomValues) {\n getRandomValues = nodeCrypto?.webcrypto?.getRandomValues?.bind(nodeCrypto?.webcrypto);\n return nodeCrypto.webcrypto.getRandomValues(buf);\n }\n if (nodeCrypto?.randomBytes) {\n if (!(buf instanceof Uint8Array)) {\n throw new TypeError('expected Uint8Array');\n }\n if (buf.length > 65536) {\n const e: any = new Error();\n e.code = 22;\n e.message = `Failed to execute 'getRandomValues' on 'Crypto': The ArrayBufferView's byte length (${buf.length}) exceeds the number of bytes of entropy available via this API (65536).`;\n e.name = 'QuotaExceededError';\n throw e;\n }\n const bytes = nodeCrypto.randomBytes(buf.length);\n buf.set(bytes);\n return buf;\n }\n throw new Error('[getRandomValues]: No secure random number generator available.');\n}\n"],"names":["_a","_b","_c"],"mappings":";;;AAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAKA,MAAM,aAAa,aAAc,EAAA,CAAA;AAC1B,IAAI,oBACT,EAAW,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,MAAA,KAAX,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,KAAnB,mBAAoC,IAAK,CAAA,UAAA,CAAW,MACnD,CAAA,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAmB,aAAnB,IAA6B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,KAA7B,IAA8C,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAM,WAAmB,QACxE,CAAA,CAAA,IAAA,iBAAA;AAEF,SAAS,iBAA6E,GAAQ,EAAA;AAX9F,EAAA,IAAAA,KAAAC,GAAAC,EAAAA,GAAAA,CAAAA;AAYE,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAA,IAAA,CAAIF,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,SAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAuB,eAAiB,EAAA;AAC1C,IAAkBE,eAAAA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,SAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAuB,eAAvB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,GAAwC,CAAA,IAAA,CAAK,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,SAAA,CAAA,CAAA;AAC3E,IAAO,OAAA,UAAA,CAAW,SAAU,CAAA,eAAA,CAAgB,GAAG,CAAA,CAAA;AAAA,GACjD;AACA,EAAA,IAAI,yCAAY,WAAa,EAAA;AAC3B,IAAI,IAAA,EAAE,eAAe,UAAa,CAAA,EAAA;AAChC,MAAM,MAAA,IAAI,UAAU,qBAAqB,CAAA,CAAA;AAAA,KAC3C;AACA,IAAI,IAAA,GAAA,CAAI,SAAS,KAAO,EAAA;AACtB,MAAM,MAAA,CAAA,GAAS,IAAI,KAAM,EAAA,CAAA;AACzB,MAAA,CAAA,CAAE,IAAO,GAAA,EAAA,CAAA;AACT,MAAE,CAAA,CAAA,OAAA,GAAU,uFAAuF,GAAI,CAAA,MAAA,CAAA,wEAAA,CAAA,CAAA;AACvG,MAAA,CAAA,CAAE,IAAO,GAAA,oBAAA,CAAA;AACT,MAAM,MAAA,CAAA,CAAA;AAAA,KACR;AACA,IAAA,MAAM,KAAQ,GAAA,UAAA,CAAW,WAAY,CAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAC/C,IAAA,GAAA,CAAI,IAAI,KAAK,CAAA,CAAA;AACb,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,IAAI,MAAM,iEAAiE,CAAA,CAAA;AACnF;;;;"}
1
+ {"version":3,"file":"getRandomValues.js","sources":["../../src/crypto/getRandomValues.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/consistent-type-imports\nimport type { TypedArray } from '../io/ArrayBuffers';\nimport { getGlobalThis } from '../isomorphics/getGlobalThis';\nimport { getNodeCrypto } from './getNodeCrypto';\n\nconst globalThis = getGlobalThis();\nexport let getRandomValues: <T extends Exclude<TypedArray, Float32Array | Float64Array>>(typedArray: T) => T =\n globalThis.crypto?.getRandomValues?.bind(globalThis.crypto) ||\n (globalThis as any).msCrypto?.getRandomValues?.bind((globalThis as any).msCrypto) ||\n _getRandomValues;\n\nfunction _getRandomValues<T extends Exclude<TypedArray, Float32Array | Float64Array>>(buf: T) {\n const nodeCrypto = getNodeCrypto();\n if (nodeCrypto?.webcrypto?.getRandomValues) {\n getRandomValues = nodeCrypto?.webcrypto?.getRandomValues?.bind(nodeCrypto?.webcrypto);\n return nodeCrypto.webcrypto.getRandomValues(buf);\n }\n if (nodeCrypto?.randomBytes) {\n if (!(buf instanceof Uint8Array)) {\n throw new TypeError('expected Uint8Array');\n }\n if (buf.length > 65536) {\n const e: any = new Error();\n e.code = 22;\n e.message = `Failed to execute 'getRandomValues' on 'Crypto': The ArrayBufferView's byte length (${buf.length}) exceeds the number of bytes of entropy available via this API (65536).`;\n e.name = 'QuotaExceededError';\n throw e;\n }\n const bytes = nodeCrypto.randomBytes(buf.length);\n buf.set(bytes);\n return buf;\n }\n throw new Error('[getRandomValues]: No secure random number generator available.');\n}\n"],"names":["_a","_b","_c"],"mappings":";;;AAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,CAAA;AAKA,MAAM,aAAa,aAAc,EAAA,CAAA;AAC1B,IAAI,oBACT,EAAW,GAAA,CAAA,EAAA,GAAA,UAAA,CAAA,MAAA,KAAX,IAAmB,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,KAAnB,mBAAoC,IAAK,CAAA,UAAA,CAAW,MACnD,CAAA,MAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,UAAA,CAAmB,aAAnB,IAA6B,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,eAAA,KAA7B,IAA8C,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAM,WAAmB,QACxE,CAAA,CAAA,IAAA,iBAAA;AAEF,SAAS,iBAA6E,GAAQ,EAAA;AAX9F,EAAA,IAAAA,KAAAC,GAAAC,EAAAA,GAAAA,CAAAA;AAYE,EAAA,MAAM,aAAa,aAAc,EAAA,CAAA;AACjC,EAAA,IAAA,CAAIF,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,SAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAuB,eAAiB,EAAA;AAC1C,IAAkBE,eAAAA,GAAAA,CAAAA,GAAAA,GAAAA,CAAAD,GAAA,GAAA,UAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAY,SAAZ,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAA,IAAuB,eAAvB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAAC,GAAwC,CAAA,IAAA,CAAK,UAAY,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,UAAA,CAAA,SAAA,CAAA,CAAA;AAC3E,IAAO,OAAA,UAAA,CAAW,SAAU,CAAA,eAAA,CAAgB,GAAG,CAAA,CAAA;AAAA,GACjD;AACA,EAAA,IAAI,yCAAY,WAAa,EAAA;AAC3B,IAAI,IAAA,EAAE,eAAe,UAAa,CAAA,EAAA;AAChC,MAAM,MAAA,IAAI,UAAU,qBAAqB,CAAA,CAAA;AAAA,KAC3C;AACA,IAAI,IAAA,GAAA,CAAI,SAAS,KAAO,EAAA;AACtB,MAAM,MAAA,CAAA,GAAS,IAAI,KAAM,EAAA,CAAA;AACzB,MAAA,CAAA,CAAE,IAAO,GAAA,EAAA,CAAA;AACT,MAAE,CAAA,CAAA,OAAA,GAAU,CAAuF,oFAAA,EAAA,GAAA,CAAI,MAAM,CAAA,wEAAA,CAAA,CAAA;AAC7G,MAAA,CAAA,CAAE,IAAO,GAAA,oBAAA,CAAA;AACT,MAAM,MAAA,CAAA,CAAA;AAAA,KACR;AACA,IAAA,MAAM,KAAQ,GAAA,UAAA,CAAW,WAAY,CAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAC/C,IAAA,GAAA,CAAI,IAAI,KAAK,CAAA,CAAA;AACb,IAAO,OAAA,GAAA,CAAA;AAAA,GACT;AACA,EAAM,MAAA,IAAI,MAAM,iEAAiE,CAAA,CAAA;AACnF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"pem.js","sources":["../../../src/crypto/pem/pem.ts"],"sourcesContent":["import { ArrayBuffers } from '../../io/ArrayBuffers';\n\nexport interface Block {\n /**\n * @see https://github.com/openssl/openssl/blob/master/include/openssl/pem.h#L35-L60 openssl/pem.h\n */\n type:\n | string\n | `${'RSA' | 'DSA'} ${'PRIVATE' | 'PUBLIC'} KEY`\n | `${'X509' | 'TRUSTED'} CERTIFICATE`\n | 'CERTIFICATE'\n | 'X509 CRL'\n | 'CERTIFICATE REQUEST'\n | 'NEW CERTIFICATE REQUEST'\n | 'ANY PRIVATE KEY'\n | 'PUBLIC KEY'\n | 'PKCS7'\n | 'PKCS #7 SIGNED DATA'\n | 'ENCRYPTED PRIVATE KEY'\n | 'PRIVATE KEY'\n | 'DH PARAMETERS'\n | 'X9.42 DH PARAMETERS'\n | 'SSL SESSION PARAMETERS'\n | 'DSA PARAMETERS'\n | 'ECDSA PUBLIC KEY'\n | 'EC PARAMETERS'\n | 'EC PRIVATE KEY'\n | 'PARAMETERS'\n | 'CMS'\n | 'SM2 PARAMETERS';\n\n header: Record<string, string>;\n bytes: BufferSource;\n}\n\nexport class PEM {\n static decode(data: string): { block: Block; tail: string; head: string } {\n const match = data.match(\n /^-----BEGIN (?<type>[^\\r\\n-]+)-----$\\r?\\n(?<headers>(^[^:\\r\\n]+:[^\\n\\r]+\\r?\\n)+\\r?\\n)?(?<data>[a-zA-Z0-9/_=\\n\\r+]+?)^-----END \\1-----$\\r?\\n?/ms,\n );\n if (!match?.groups) throw new Error('Invalid PEM data');\n const { type, headers = '', data: b64 } = match.groups;\n const header = headers\n .split('\\n')\n .filter((v) => v.trim())\n .map((h) => {\n const [k, ...v] = h.split(':');\n return [k.trim(), v.join(':').trim()];\n })\n .reduce((a, [k, v]) => ({ ...a, [k]: v }), {});\n return {\n block: {\n type,\n header,\n // avoid replaceAll\n bytes: ArrayBuffers.from(b64.replace(/[\\r\\n]/g, ''), 'base64'),\n },\n head: data.slice(0, match.index || 0),\n tail: data.slice((match.index || 0) + match[0].length),\n };\n }\n\n static encode(block: { type: string; bytes: string | BufferSource; header?: Record<string, string> }): string {\n const { type, header, bytes } = block;\n const headers = Object.entries(header || {})\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n');\n return `-----BEGIN ${type}-----\\n${headers}${headers.length ? '\\n\\n' : ''}${\n ArrayBuffers.toString(bytes, 'base64')\n .match(/.{1,64}/g)\n ?.join('\\n') || ''\n }\\n-----END ${type}-----\\n`;\n }\n}\n"],"names":[],"mappings":";;AAmCO,MAAM,GAAI,CAAA;AAAA,EACf,OAAO,OAAO,IAA4D,EAAA;AACxE,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AAAA,MACjB,gJAAA;AAAA,KACF,CAAA;AACA,IAAA,IAAI,EAAC,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,MAAA,CAAA;AAAQ,MAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA,CAAA;AACtD,IAAA,MAAM,EAAE,IAAM,EAAA,OAAA,GAAU,IAAI,IAAM,EAAA,GAAA,KAAQ,KAAM,CAAA,MAAA,CAAA;AAChD,IAAA,MAAM,MAAS,GAAA,OAAA,CACZ,KAAM,CAAA,IAAI,EACV,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,IAAK,EAAC,CACtB,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA;AACV,MAAA,MAAM,CAAC,CAAG,EAAA,GAAG,CAAC,CAAI,GAAA,CAAA,CAAE,MAAM,GAAG,CAAA,CAAA;AAC7B,MAAO,OAAA,CAAC,EAAE,IAAK,EAAA,EAAG,EAAE,IAAK,CAAA,GAAG,CAAE,CAAA,IAAA,EAAM,CAAA,CAAA;AAAA,KACrC,CACA,CAAA,MAAA,CAAO,CAAC,CAAG,EAAA,CAAC,GAAG,CAAC,CAAA,MAAO,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAE,EAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAC/C,IAAO,OAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACL,IAAA;AAAA,QACA,MAAA;AAAA;AAAA,QAEA,KAAA,EAAO,aAAa,IAAK,CAAA,GAAA,CAAI,QAAQ,SAAW,EAAA,EAAE,GAAG,QAAQ,CAAA;AAAA,OAC/D;AAAA,MACA,MAAM,IAAK,CAAA,KAAA,CAAM,CAAG,EAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,MACpC,IAAA,EAAM,KAAK,KAAO,CAAA,CAAA,KAAA,CAAM,SAAS,CAAK,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA;AAAA,KACvD,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAO,KAAgG,EAAA;AA9DhH,IAAA,IAAA,EAAA,CAAA;AA+DI,IAAA,MAAM,EAAE,IAAA,EAAM,MAAQ,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AAChC,IAAA,MAAM,UAAU,MAAO,CAAA,OAAA,CAAQ,UAAU,EAAE,EACxC,GAAI,CAAA,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA,CAAA,EAAG,MAAM,CAAG,CAAA,CAAA,CAAA,CAC5B,KAAK,IAAI,CAAA,CAAA;AACZ,IAAA,OAAO,CAAc,WAAA,EAAA,IAAA,CAAA;AAAA,EAAc,OAAU,CAAA,EAAA,OAAA,CAAQ,MAAS,GAAA,MAAA,GAAS,OACrE,EAAa,GAAA,YAAA,CAAA,QAAA,CAAS,KAAO,EAAA,QAAQ,EAClC,KAAM,CAAA,UAAU,CADnB,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAEI,KAAK,IAAS,CAAA,KAAA,EAAA,CAAA;AAAA,SACN,EAAA,IAAA,CAAA;AAAA,CAAA,CAAA;AAAA,GAChB;AACF;;;;"}
1
+ {"version":3,"file":"pem.js","sources":["../../../src/crypto/pem/pem.ts"],"sourcesContent":["import { ArrayBuffers } from '../../io/ArrayBuffers';\n\nexport interface Block {\n /**\n * @see https://github.com/openssl/openssl/blob/master/include/openssl/pem.h#L35-L60 openssl/pem.h\n */\n type:\n | string\n | `${'RSA' | 'DSA'} ${'PRIVATE' | 'PUBLIC'} KEY`\n | `${'X509' | 'TRUSTED'} CERTIFICATE`\n | 'CERTIFICATE'\n | 'X509 CRL'\n | 'CERTIFICATE REQUEST'\n | 'NEW CERTIFICATE REQUEST'\n | 'ANY PRIVATE KEY'\n | 'PUBLIC KEY'\n | 'PKCS7'\n | 'PKCS #7 SIGNED DATA'\n | 'ENCRYPTED PRIVATE KEY'\n | 'PRIVATE KEY'\n | 'DH PARAMETERS'\n | 'X9.42 DH PARAMETERS'\n | 'SSL SESSION PARAMETERS'\n | 'DSA PARAMETERS'\n | 'ECDSA PUBLIC KEY'\n | 'EC PARAMETERS'\n | 'EC PRIVATE KEY'\n | 'PARAMETERS'\n | 'CMS'\n | 'SM2 PARAMETERS';\n\n header: Record<string, string>;\n bytes: BufferSource;\n}\n\nexport class PEM {\n static decode(data: string): { block: Block; tail: string; head: string } {\n const match = data.match(\n /^-----BEGIN (?<type>[^\\r\\n-]+)-----$\\r?\\n(?<headers>(^[^:\\r\\n]+:[^\\n\\r]+\\r?\\n)+\\r?\\n)?(?<data>[a-zA-Z0-9/_=\\n\\r+]+?)^-----END \\1-----$\\r?\\n?/ms,\n );\n if (!match?.groups) throw new Error('Invalid PEM data');\n const { type, headers = '', data: b64 } = match.groups;\n const header = headers\n .split('\\n')\n .filter((v) => v.trim())\n .map((h) => {\n const [k, ...v] = h.split(':');\n return [k.trim(), v.join(':').trim()];\n })\n .reduce((a, [k, v]) => ({ ...a, [k]: v }), {});\n return {\n block: {\n type,\n header,\n // avoid replaceAll\n bytes: ArrayBuffers.from(b64.replace(/[\\r\\n]/g, ''), 'base64'),\n },\n head: data.slice(0, match.index || 0),\n tail: data.slice((match.index || 0) + match[0].length),\n };\n }\n\n static encode(block: { type: string; bytes: string | BufferSource; header?: Record<string, string> }): string {\n const { type, header, bytes } = block;\n const headers = Object.entries(header || {})\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n');\n return `-----BEGIN ${type}-----\\n${headers}${headers.length ? '\\n\\n' : ''}${\n ArrayBuffers.toString(bytes, 'base64')\n .match(/.{1,64}/g)\n ?.join('\\n') || ''\n }\\n-----END ${type}-----\\n`;\n }\n}\n"],"names":[],"mappings":";;AAmCO,MAAM,GAAI,CAAA;AAAA,EACf,OAAO,OAAO,IAA4D,EAAA;AACxE,IAAA,MAAM,QAAQ,IAAK,CAAA,KAAA;AAAA,MACjB,gJAAA;AAAA,KACF,CAAA;AACA,IAAA,IAAI,EAAC,KAAO,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,KAAA,CAAA,MAAA,CAAA;AAAQ,MAAM,MAAA,IAAI,MAAM,kBAAkB,CAAA,CAAA;AACtD,IAAA,MAAM,EAAE,IAAM,EAAA,OAAA,GAAU,IAAI,IAAM,EAAA,GAAA,KAAQ,KAAM,CAAA,MAAA,CAAA;AAChD,IAAA,MAAM,MAAS,GAAA,OAAA,CACZ,KAAM,CAAA,IAAI,EACV,MAAO,CAAA,CAAC,CAAM,KAAA,CAAA,CAAE,IAAK,EAAC,CACtB,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA;AACV,MAAA,MAAM,CAAC,CAAG,EAAA,GAAG,CAAC,CAAI,GAAA,CAAA,CAAE,MAAM,GAAG,CAAA,CAAA;AAC7B,MAAO,OAAA,CAAC,EAAE,IAAK,EAAA,EAAG,EAAE,IAAK,CAAA,GAAG,CAAE,CAAA,IAAA,EAAM,CAAA,CAAA;AAAA,KACrC,CACA,CAAA,MAAA,CAAO,CAAC,CAAG,EAAA,CAAC,GAAG,CAAC,CAAA,MAAO,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAE,EAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAC/C,IAAO,OAAA;AAAA,MACL,KAAO,EAAA;AAAA,QACL,IAAA;AAAA,QACA,MAAA;AAAA;AAAA,QAEA,KAAA,EAAO,aAAa,IAAK,CAAA,GAAA,CAAI,QAAQ,SAAW,EAAA,EAAE,GAAG,QAAQ,CAAA;AAAA,OAC/D;AAAA,MACA,MAAM,IAAK,CAAA,KAAA,CAAM,CAAG,EAAA,KAAA,CAAM,SAAS,CAAC,CAAA;AAAA,MACpC,IAAA,EAAM,KAAK,KAAO,CAAA,CAAA,KAAA,CAAM,SAAS,CAAK,IAAA,KAAA,CAAM,CAAC,CAAA,CAAE,MAAM,CAAA;AAAA,KACvD,CAAA;AAAA,GACF;AAAA,EAEA,OAAO,OAAO,KAAgG,EAAA;AA9DhH,IAAA,IAAA,EAAA,CAAA;AA+DI,IAAA,MAAM,EAAE,IAAA,EAAM,MAAQ,EAAA,KAAA,EAAU,GAAA,KAAA,CAAA;AAChC,IAAM,MAAA,OAAA,GAAU,OAAO,OAAQ,CAAA,MAAA,IAAU,EAAE,CAAA,CACxC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA,KAAM,GAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAE,CAAA,CAAA,CAC5B,KAAK,IAAI,CAAA,CAAA;AACZ,IAAA,OAAO,cAAc,IAAI,CAAA;AAAA,EAAU,OAAO,CAAG,EAAA,OAAA,CAAQ,SAAS,MAAS,GAAA,EAAE,KACvE,EAAa,GAAA,YAAA,CAAA,QAAA,CAAS,KAAO,EAAA,QAAQ,EAClC,KAAM,CAAA,UAAU,MADnB,IAEI,GAAA,KAAA,CAAA,GAAA,EAAA,CAAA,IAAA,CAAK,UAAS,EACpB,CAAA;AAAA,SAAA,EAAc,IAAI,CAAA;AAAA,CAAA,CAAA;AAAA,GACpB;AACF;;;;"}
@@ -11,7 +11,10 @@ const TIME_MAX = Math.pow(2, 48) - 1;
11
11
  const TIME_LEN = 10;
12
12
  const RANDOM_LEN = 16;
13
13
  function isULID(str) {
14
- return (str == null ? void 0 : str.length) === 26 && /^[0-9A-HJKMNP-TV-Z]{26}$/i.test(str);
14
+ if (!str) {
15
+ return false;
16
+ }
17
+ return str.length === 26 && /^[0-9A-HJKMNP-TV-Z]{26}$/i.test(str);
15
18
  }
16
19
  function replaceCharAt(str, index, char) {
17
20
  if (index > str.length - 1) {
@@ -1 +1 @@
1
- {"version":3,"file":"ulid.js","sources":["../../src/crypto/ulid.ts"],"sourcesContent":["import { getRandomValues } from './getRandomValues';\n\ntype PRNG = () => number;\n\n/**\n * Universally Unique Lexicographically Sortable Identifier\n *\n * @see https://github.com/ulid/spec ulid/spec\n */\nexport type ULID = (seedTime?: number) => string;\n\nexport interface ULIDError extends Error {\n source: string;\n}\n\nfunction createError(message: string): ULIDError {\n const err = new Error(message) as ULIDError;\n err.source = 'ulid';\n return err;\n}\n\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nconst ENCODING = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'; // Crockford's Base32\nconst ENCODING_LEN = ENCODING.length;\nconst TIME_MAX = Math.pow(2, 48) - 1;\nconst TIME_LEN = 10;\nconst RANDOM_LEN = 16;\n\n/**\n * check give {@link str} is a valid ulid\n */\nexport function isULID(str: string): boolean {\n // ttttttttttrrrrrrrrrrrrrrrr\n return str?.length === 26 && /^[0-9A-HJKMNP-TV-Z]{26}$/i.test(str);\n}\n\nfunction replaceCharAt(str: string, index: number, char: string) {\n if (index > str.length - 1) {\n return str;\n }\n return str.substr(0, index) + char + str.substr(index + 1);\n}\n\nfunction incrementBase32(str: string): string {\n let done;\n let index = str.length;\n let char;\n let charIndex;\n const maxCharIndex = ENCODING_LEN - 1;\n while (!done && index-- >= 0) {\n char = str[index];\n charIndex = ENCODING.indexOf(char);\n if (charIndex === -1) {\n throw createError('incorrectly encoded string');\n }\n if (charIndex === maxCharIndex) {\n str = replaceCharAt(str, index, ENCODING[0]);\n continue;\n }\n done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n }\n if (typeof done === 'string') {\n return done;\n }\n throw createError('cannot increment this string');\n}\n\nfunction randomChar(prng: PRNG): string {\n let rand = Math.floor(prng() * ENCODING_LEN);\n if (rand === ENCODING_LEN) {\n rand = ENCODING_LEN - 1;\n }\n return ENCODING.charAt(rand);\n}\n\nfunction encodeTime(now: number, len: number): string {\n if (isNaN(now)) {\n throw new Error(`${now} must be a number`);\n }\n if (now > TIME_MAX) {\n throw createError(`cannot encode time greater than ${TIME_MAX}`);\n }\n if (now < 0) {\n throw createError('time must be positive');\n }\n if (!Number.isInteger(now)) {\n throw createError('time must be an integer');\n }\n let mod;\n let str = '';\n for (; len > 0; len--) {\n mod = now % ENCODING_LEN;\n str = ENCODING.charAt(mod) + str;\n now = (now - mod) / ENCODING_LEN;\n }\n return str;\n}\n\nfunction encodeRandom(len: number, prng: PRNG): string {\n let str = '';\n for (; len > 0; len--) {\n str = randomChar(prng) + str;\n }\n return str;\n}\n\n/**\n * extract time & random from ulid\n *\n * @throws ULIDError\n */\nexport function parseULID(id: string): { timestamp: number; random: string } {\n if (id.length !== TIME_LEN + RANDOM_LEN) {\n throw createError('malformed ulid');\n }\n const time = id\n .substr(0, TIME_LEN)\n .split('')\n .reverse()\n .reduce((carry, char, index) => {\n const encodingIndex = ENCODING.indexOf(char);\n if (encodingIndex === -1) {\n throw createError('invalid character found: ' + char);\n }\n return (carry += encodingIndex * Math.pow(ENCODING_LEN, index));\n }, 0);\n if (time > TIME_MAX) {\n throw createError('malformed ulid, timestamp too large');\n }\n return { timestamp: time, random: id.substring(TIME_LEN) };\n}\n\nfunction createPrng(): PRNG {\n return () => {\n const buffer = new Uint8Array(1);\n getRandomValues(buffer);\n return buffer[0] / 0xff;\n };\n}\n\n/**\n * create a ulid generator\n */\nexport function createULID({\n monotonic = true,\n random = createPrng(),\n now = Date.now,\n}: { monotonic?: boolean; now?: () => number; random?: () => number } = {}) {\n if (!monotonic) {\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, random);\n };\n }\n\n let lastTime: number = 0;\n let lastRandom: string;\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n if (seedTime <= lastTime && lastRandom) {\n const incrementedRandom = (lastRandom = incrementBase32(lastRandom));\n return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n }\n lastTime = seedTime;\n const newRandom = (lastRandom = encodeRandom(RANDOM_LEN, random));\n return encodeTime(seedTime, TIME_LEN) + newRandom;\n };\n}\n\n/**\n * default monotonic ulid generator\n */\nexport let ulid: ULID = (...args) => {\n if (_real) {\n return _real(...args);\n }\n // delay initialize crypto\n _real = createULID();\n ulid = _real;\n return _real(...args);\n};\nlet _real: ULID;\n"],"names":["ulid"],"mappings":"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"}
1
+ {"version":3,"file":"ulid.js","sources":["../../src/crypto/ulid.ts"],"sourcesContent":["import { getRandomValues } from './getRandomValues';\n\ntype PRNG = () => number;\n\n/**\n * Universally Unique Lexicographically Sortable Identifier\n *\n * @see https://github.com/ulid/spec ulid/spec\n */\nexport type ULID = (seedTime?: number) => string;\n\nexport interface ULIDError extends Error {\n source: string;\n}\n\nfunction createError(message: string): ULIDError {\n const err = new Error(message) as ULIDError;\n err.source = 'ulid';\n return err;\n}\n\n// These values should NEVER change. If\n// they do, we're no longer making ulids!\nconst ENCODING = '0123456789ABCDEFGHJKMNPQRSTVWXYZ'; // Crockford's Base32\nconst ENCODING_LEN = ENCODING.length;\nconst TIME_MAX = Math.pow(2, 48) - 1;\nconst TIME_LEN = 10;\nconst RANDOM_LEN = 16;\n\n/**\n * check give {@link str} is a valid ulid\n */\nexport function isULID(str: string | undefined | null): boolean {\n if (!str) {\n return false;\n }\n // ttttttttttrrrrrrrrrrrrrrrr\n return str.length === 26 && /^[0-9A-HJKMNP-TV-Z]{26}$/i.test(str);\n}\n\nfunction replaceCharAt(str: string, index: number, char: string) {\n if (index > str.length - 1) {\n return str;\n }\n return str.substr(0, index) + char + str.substr(index + 1);\n}\n\nfunction incrementBase32(str: string): string {\n let done;\n let index = str.length;\n let char;\n let charIndex;\n const maxCharIndex = ENCODING_LEN - 1;\n while (!done && index-- >= 0) {\n char = str[index];\n charIndex = ENCODING.indexOf(char);\n if (charIndex === -1) {\n throw createError('incorrectly encoded string');\n }\n if (charIndex === maxCharIndex) {\n str = replaceCharAt(str, index, ENCODING[0]);\n continue;\n }\n done = replaceCharAt(str, index, ENCODING[charIndex + 1]);\n }\n if (typeof done === 'string') {\n return done;\n }\n throw createError('cannot increment this string');\n}\n\nfunction randomChar(prng: PRNG): string {\n let rand = Math.floor(prng() * ENCODING_LEN);\n if (rand === ENCODING_LEN) {\n rand = ENCODING_LEN - 1;\n }\n return ENCODING.charAt(rand);\n}\n\nfunction encodeTime(now: number, len: number): string {\n if (isNaN(now)) {\n throw new Error(`${now} must be a number`);\n }\n if (now > TIME_MAX) {\n throw createError(`cannot encode time greater than ${TIME_MAX}`);\n }\n if (now < 0) {\n throw createError('time must be positive');\n }\n if (!Number.isInteger(now)) {\n throw createError('time must be an integer');\n }\n let mod;\n let str = '';\n for (; len > 0; len--) {\n mod = now % ENCODING_LEN;\n str = ENCODING.charAt(mod) + str;\n now = (now - mod) / ENCODING_LEN;\n }\n return str;\n}\n\nfunction encodeRandom(len: number, prng: PRNG): string {\n let str = '';\n for (; len > 0; len--) {\n str = randomChar(prng) + str;\n }\n return str;\n}\n\n/**\n * extract time & random from ulid\n *\n * @throws ULIDError\n */\nexport function parseULID(id: string): { timestamp: number; random: string } {\n if (id.length !== TIME_LEN + RANDOM_LEN) {\n throw createError('malformed ulid');\n }\n const time = id\n .substr(0, TIME_LEN)\n .split('')\n .reverse()\n .reduce((carry, char, index) => {\n const encodingIndex = ENCODING.indexOf(char);\n if (encodingIndex === -1) {\n throw createError('invalid character found: ' + char);\n }\n return (carry += encodingIndex * Math.pow(ENCODING_LEN, index));\n }, 0);\n if (time > TIME_MAX) {\n throw createError('malformed ulid, timestamp too large');\n }\n return { timestamp: time, random: id.substring(TIME_LEN) };\n}\n\nfunction createPrng(): PRNG {\n return () => {\n const buffer = new Uint8Array(1);\n getRandomValues(buffer);\n return buffer[0] / 0xff;\n };\n}\n\n/**\n * create a ulid generator\n */\nexport function createULID({\n monotonic = true,\n random = createPrng(),\n now = Date.now,\n}: { monotonic?: boolean; now?: () => number; random?: () => number } = {}) {\n if (!monotonic) {\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n return encodeTime(seedTime, TIME_LEN) + encodeRandom(RANDOM_LEN, random);\n };\n }\n\n let lastTime: number = 0;\n let lastRandom: string;\n return function ulid(seedTime?: number): string {\n seedTime ||= now();\n if (seedTime <= lastTime && lastRandom) {\n const incrementedRandom = (lastRandom = incrementBase32(lastRandom));\n return encodeTime(lastTime, TIME_LEN) + incrementedRandom;\n }\n lastTime = seedTime;\n const newRandom = (lastRandom = encodeRandom(RANDOM_LEN, random));\n return encodeTime(seedTime, TIME_LEN) + newRandom;\n };\n}\n\n/**\n * default monotonic ulid generator\n */\nexport let ulid: ULID = (...args) => {\n if (_real) {\n return _real(...args);\n }\n // delay initialize crypto\n _real = createULID();\n ulid = _real;\n return _real(...args);\n};\nlet _real: ULID;\n"],"names":["ulid"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dumpRequest.js","sources":["../../src/fetch/dumpRequest.ts"],"sourcesContent":["export function dumpRequest({\n url,\n req = {},\n log = console.log,\n}: {\n url: string;\n req?: RequestInit;\n log?: (s: string) => void;\n}) {\n const { method = 'GET' } = req;\n let out = `-> ${method} ${url}\n${Array.from(new Headers(req.headers).entries())\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n')}\n`;\n\n let done: Promise<string> | undefined;\n if (req.body) {\n if (req.body instanceof ReadableStream) {\n const [a, b] = req.body.tee();\n req.body = a;\n const signal = req.signal;\n done = Promise.resolve().then(async () => {\n const reader = b.getReader();\n log(out);\n while (true) {\n if (signal?.aborted) {\n break;\n }\n\n let { done, value } = await reader.read();\n value instanceof Uint8Array && (value = new TextDecoder().decode(value));\n out += value;\n log(value);\n if (!done) {\n break;\n }\n }\n // maybe for archive\n out += `\\n`;\n return out;\n });\n } else {\n out += `\n${req.body}\n`;\n }\n log(out);\n }\n return done || Promise.resolve(out);\n}\n"],"names":["done"],"mappings":"AAAO,SAAS,WAAY,CAAA;AAAA,EAC1B,GAAA;AAAA,EACA,MAAM,EAAC;AAAA,EACP,MAAM,OAAQ,CAAA,GAAA;AAChB,CAIG,EAAA;AACD,EAAM,MAAA,EAAE,MAAS,GAAA,KAAA,EAAU,GAAA,GAAA,CAAA;AAC3B,EAAI,IAAA,GAAA,GAAM,MAAM,MAAU,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,EAC1B,KAAA,CAAM,KAAK,IAAI,OAAA,CAAQ,IAAI,OAAO,CAAA,CAAE,SAAS,CAAA,CAC5C,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA,KAAM,GAAG,CAAM,CAAA,EAAA,EAAA,CAAA,CAAA,CAAG,CAC5B,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,CAAA,CAAA;AAGV,EAAI,IAAA,IAAA,CAAA;AACJ,EAAA,IAAI,IAAI,IAAM,EAAA;AACZ,IAAI,IAAA,GAAA,CAAI,gBAAgB,cAAgB,EAAA;AACtC,MAAA,MAAM,CAAC,CAAG,EAAA,CAAC,CAAI,GAAA,GAAA,CAAI,KAAK,GAAI,EAAA,CAAA;AAC5B,MAAA,GAAA,CAAI,IAAO,GAAA,CAAA,CAAA;AACX,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA,CAAA;AACnB,MAAA,IAAA,GAAO,OAAQ,CAAA,OAAA,EAAU,CAAA,IAAA,CAAK,YAAY;AACxC,QAAM,MAAA,MAAA,GAAS,EAAE,SAAU,EAAA,CAAA;AAC3B,QAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AACP,QAAA,OAAO,IAAM,EAAA;AACX,UAAA,IAAI,iCAAQ,OAAS,EAAA;AACnB,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,IAAI,EAAE,IAAAA,EAAAA,KAAAA,EAAM,OAAU,GAAA,MAAM,OAAO,IAAK,EAAA,CAAA;AACxC,UAAA,KAAA,YAAiB,eAAe,KAAQ,GAAA,IAAI,WAAY,EAAA,CAAE,OAAO,KAAK,CAAA,CAAA,CAAA;AACtE,UAAO,GAAA,IAAA,KAAA,CAAA;AACP,UAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AACT,UAAA,IAAI,CAACA,KAAM,EAAA;AACT,YAAA,MAAA;AAAA,WACF;AAAA,SACF;AAEA,QAAO,GAAA,IAAA,CAAA;AAAA,CAAA,CAAA;AACP,QAAO,OAAA,GAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAAA,KACI,MAAA;AACL,MAAO,GAAA,IAAA,CAAA;AAAA,EACX,GAAI,CAAA,IAAA,CAAA;AAAA,CAAA,CAAA;AAAA,KAEF;AACA,IAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,IAAA,IAAQ,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AACpC;;;;"}
1
+ {"version":3,"file":"dumpRequest.js","sources":["../../src/fetch/dumpRequest.ts"],"sourcesContent":["export function dumpRequest({\n url,\n req = {},\n log = console.log,\n}: {\n url: string;\n req?: RequestInit;\n log?: (s: string) => void;\n}) {\n const { method = 'GET' } = req;\n let out = `-> ${method} ${url}\n${Array.from(new Headers(req.headers).entries())\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n')}\n`;\n\n let done: Promise<string> | undefined;\n if (req.body) {\n if (req.body instanceof ReadableStream) {\n const [a, b] = req.body.tee();\n req.body = a;\n const signal = req.signal;\n done = Promise.resolve().then(async () => {\n const reader = b.getReader();\n log(out);\n while (true) {\n if (signal?.aborted) {\n break;\n }\n\n let { done, value } = await reader.read();\n value instanceof Uint8Array && (value = new TextDecoder().decode(value));\n out += value;\n log(value);\n if (!done) {\n break;\n }\n }\n // maybe for archive\n out += `\\n`;\n return out;\n });\n } else {\n out += `\n${req.body}\n`;\n }\n log(out);\n }\n return done || Promise.resolve(out);\n}\n"],"names":["done"],"mappings":"AAAO,SAAS,WAAY,CAAA;AAAA,EAC1B,GAAA;AAAA,EACA,MAAM,EAAC;AAAA,EACP,MAAM,OAAQ,CAAA,GAAA;AAChB,CAIG,EAAA;AACD,EAAM,MAAA,EAAE,MAAS,GAAA,KAAA,EAAU,GAAA,GAAA,CAAA;AAC3B,EAAA,IAAI,GAAM,GAAA,CAAA,GAAA,EAAM,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA;AAAA,EAC7B,KAAA,CAAM,IAAK,CAAA,IAAI,OAAQ,CAAA,GAAA,CAAI,OAAO,CAAE,CAAA,OAAA,EAAS,CAAA,CAC5C,GAAI,CAAA,CAAC,CAAC,CAAG,EAAA,CAAC,CAAM,KAAA,CAAA,EAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAE,CAAA,CAAA,CAC5B,IAAK,CAAA,IAAI,CAAC,CAAA;AAAA,CAAA,CAAA;AAGX,EAAI,IAAA,IAAA,CAAA;AACJ,EAAA,IAAI,IAAI,IAAM,EAAA;AACZ,IAAI,IAAA,GAAA,CAAI,gBAAgB,cAAgB,EAAA;AACtC,MAAA,MAAM,CAAC,CAAG,EAAA,CAAC,CAAI,GAAA,GAAA,CAAI,KAAK,GAAI,EAAA,CAAA;AAC5B,MAAA,GAAA,CAAI,IAAO,GAAA,CAAA,CAAA;AACX,MAAA,MAAM,SAAS,GAAI,CAAA,MAAA,CAAA;AACnB,MAAA,IAAA,GAAO,OAAQ,CAAA,OAAA,EAAU,CAAA,IAAA,CAAK,YAAY;AACxC,QAAM,MAAA,MAAA,GAAS,EAAE,SAAU,EAAA,CAAA;AAC3B,QAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AACP,QAAA,OAAO,IAAM,EAAA;AACX,UAAA,IAAI,iCAAQ,OAAS,EAAA;AACnB,YAAA,MAAA;AAAA,WACF;AAEA,UAAA,IAAI,EAAE,IAAAA,EAAAA,KAAAA,EAAM,OAAU,GAAA,MAAM,OAAO,IAAK,EAAA,CAAA;AACxC,UAAA,KAAA,YAAiB,eAAe,KAAQ,GAAA,IAAI,WAAY,EAAA,CAAE,OAAO,KAAK,CAAA,CAAA,CAAA;AACtE,UAAO,GAAA,IAAA,KAAA,CAAA;AACP,UAAA,GAAA,CAAI,KAAK,CAAA,CAAA;AACT,UAAA,IAAI,CAACA,KAAM,EAAA;AACT,YAAA,MAAA;AAAA,WACF;AAAA,SACF;AAEA,QAAO,GAAA,IAAA,CAAA;AAAA,CAAA,CAAA;AACP,QAAO,OAAA,GAAA,CAAA;AAAA,OACR,CAAA,CAAA;AAAA,KACI,MAAA;AACL,MAAO,GAAA,IAAA,CAAA;AAAA,EACX,IAAI,IAAI,CAAA;AAAA,CAAA,CAAA;AAAA,KAEN;AACA,IAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,GACT;AACA,EAAO,OAAA,IAAA,IAAQ,OAAQ,CAAA,OAAA,CAAQ,GAAG,CAAA,CAAA;AACpC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dumpResponse.js","sources":["../../src/fetch/dumpResponse.ts"],"sourcesContent":["export async function dumpResponse({\n res,\n url,\n req,\n log = console.log,\n}: {\n res: Response;\n url: string;\n req: RequestInit;\n log?: (s: string) => void;\n}) {\n let out = `<- ${res.status} ${res.statusText} ${req.method} ${url}\n ${Array.from(res.headers.entries())\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n')}\n `;\n let contentType = res.headers.get('content-type');\n // TODO text/event-stream\n if (contentType?.includes('application/json') || contentType?.includes('text/plain')) {\n const body = await res.text();\n out += `\\n${body}\\n`;\n res = new Response(body, res);\n }\n\n log(out);\n\n return res;\n}\n"],"names":[],"mappings":"AAAA,eAAsB,YAAa,CAAA;AAAA,EACjC,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAChB,CAKG,EAAA;AACD,EAAA,IAAI,MAAM,CAAM,GAAA,EAAA,GAAA,CAAI,UAAU,GAAI,CAAA,UAAA,CAAA,CAAA,EAAc,IAAI,MAAU,CAAA,CAAA,EAAA,GAAA,CAAA;AAAA,EAAA,EAC5D,MAAM,IAAK,CAAA,GAAA,CAAI,QAAQ,OAAQ,EAAC,EAC/B,GAAI,CAAA,CAAC,CAAC,CAAA,EAAG,CAAC,CAAM,KAAA,CAAA,EAAG,MAAM,CAAG,CAAA,CAAA,CAAA,CAC5B,KAAK,IAAI,CAAA,CAAA;AAAA,GAAA,CAAA,CAAA;AAEZ,EAAA,IAAI,WAAc,GAAA,GAAA,CAAI,OAAQ,CAAA,GAAA,CAAI,cAAc,CAAA,CAAA;AAEhD,EAAA,IAAA,CAAI,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,QAAA,CAAS,kBAAuB,CAAA,MAAA,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,SAAS,YAAe,CAAA,CAAA,EAAA;AACpF,IAAM,MAAA,IAAA,GAAO,MAAM,GAAA,CAAI,IAAK,EAAA,CAAA;AAC5B,IAAO,GAAA,IAAA,CAAA;AAAA,EAAK,IAAA,CAAA;AAAA,CAAA,CAAA;AACZ,IAAM,GAAA,GAAA,IAAI,QAAS,CAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAEP,EAAO,OAAA,GAAA,CAAA;AACT;;;;"}
1
+ {"version":3,"file":"dumpResponse.js","sources":["../../src/fetch/dumpResponse.ts"],"sourcesContent":["export async function dumpResponse({\n res,\n url,\n req,\n log = console.log,\n}: {\n res: Response;\n url: string;\n req: RequestInit;\n log?: (s: string) => void;\n}) {\n let out = `<- ${res.status} ${res.statusText} ${req.method} ${url}\n ${Array.from(res.headers.entries())\n .map(([k, v]) => `${k}: ${v}`)\n .join('\\n')}\n `;\n let contentType = res.headers.get('content-type');\n // TODO text/event-stream\n if (contentType?.includes('application/json') || contentType?.includes('text/plain')) {\n const body = await res.text();\n out += `\\n${body}\\n`;\n res = new Response(body, res);\n }\n\n log(out);\n\n return res;\n}\n"],"names":[],"mappings":"AAAA,eAAsB,YAAa,CAAA;AAAA,EACjC,GAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA,MAAM,OAAQ,CAAA,GAAA;AAChB,CAKG,EAAA;AACD,EAAI,IAAA,GAAA,GAAM,CAAM,GAAA,EAAA,GAAA,CAAI,MAAM,CAAA,CAAA,EAAI,GAAI,CAAA,UAAU,CAAI,CAAA,EAAA,GAAA,CAAI,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA;AAAA,EAC/D,EAAA,KAAA,CAAM,KAAK,GAAI,CAAA,OAAA,CAAQ,SAAS,CAAA,CAC/B,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA,KAAM,GAAG,CAAC,CAAA,EAAA,EAAK,CAAC,CAAE,CAAA,CAAA,CAC5B,IAAK,CAAA,IAAI,CAAC,CAAA;AAAA,GAAA,CAAA,CAAA;AAEb,EAAA,IAAI,WAAc,GAAA,GAAA,CAAI,OAAQ,CAAA,GAAA,CAAI,cAAc,CAAA,CAAA;AAEhD,EAAA,IAAA,CAAI,WAAa,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAA,QAAA,CAAS,kBAAuB,CAAA,MAAA,WAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,WAAA,CAAa,SAAS,YAAe,CAAA,CAAA,EAAA;AACpF,IAAM,MAAA,IAAA,GAAO,MAAM,GAAA,CAAI,IAAK,EAAA,CAAA;AAC5B,IAAO,GAAA,IAAA,CAAA;AAAA,EAAK,IAAI,CAAA;AAAA,CAAA,CAAA;AAChB,IAAM,GAAA,GAAA,IAAI,QAAS,CAAA,IAAA,EAAM,GAAG,CAAA,CAAA;AAAA,GAC9B;AAEA,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAEP,EAAO,OAAA,GAAA,CAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createTranslate.js","sources":["../../src/i18n/createTranslate.ts"],"sourcesContent":["import { get } from '../objects/get';\nimport type { ObjectPathLike } from '../objects/parseObjectPath';\nimport { renderTemplate } from '../strings/renderTemplate';\n\nexport interface Translate<T extends object> {\n /** Get/Set the language key */\n locale(lang?: string): string;\n\n /** Define the dict of translations for a language */\n dict(lang: string, dict: T): void;\n\n /** Get the dict of translations for a language */\n dict(lang: string): T;\n\n /** Retrieve a translation segment for the current language */\n t<X extends Record<string, any> | any[]>(key: ObjectPathLike, params?: X, lang?: string): string;\n}\n\nexport function createTranslate<T extends object>(obj?: Record<string, T>): Translate<T> {\n let locale = '';\n const tree = obj || {};\n // en-US -> en-US,en\n const keyOfDict = (s: string | string[]) => {\n if (Array.isArray(s)) {\n return s;\n }\n const sp = s.split(/[_-]/);\n if (sp.length > 1) {\n return [s, sp[0]];\n }\n return [s];\n };\n return {\n locale(lang) {\n return (locale = lang || locale);\n },\n\n dict: ((lang, dict?) => {\n if (dict) {\n tree[lang] = Object.assign(tree[lang] || {}, dict);\n return;\n }\n return tree[lang];\n }) as Translate<T>['dict'],\n\n t(key, params, lang) {\n let val: any;\n for (const k of keyOfDict(lang || locale)) {\n val = get(tree[k], key, '');\n if (val) {\n break;\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (val == null) {\n console.error(\n `[Translate] Missing the \"${[].concat(key as any).join('.')}\" key within the \"${\n lang || locale\n }\" dictionary`,\n );\n return;\n }\n }\n if (typeof val === 'function') return val(params);\n if (typeof val === 'string') return renderTemplate(val, params, 'common');\n return val;\n },\n };\n}\n"],"names":[],"mappings":";;;AAkBO,SAAS,gBAAkC,GAAuC,EAAA;AACvF,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,EAAM,MAAA,IAAA,GAAO,OAAO,EAAC,CAAA;AAErB,EAAM,MAAA,SAAA,GAAY,CAAC,CAAyB,KAAA;AAC1C,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACpB,MAAO,OAAA,CAAA,CAAA;AAAA,KACT;AACA,IAAM,MAAA,EAAA,GAAK,CAAE,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AACzB,IAAI,IAAA,EAAA,CAAG,SAAS,CAAG,EAAA;AACjB,MAAA,OAAO,CAAC,CAAA,EAAG,EAAG,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KAClB;AACA,IAAA,OAAO,CAAC,CAAC,CAAA,CAAA;AAAA,GACX,CAAA;AACA,EAAO,OAAA;AAAA,IACL,OAAO,IAAM,EAAA;AACX,MAAA,OAAQ,SAAS,IAAQ,IAAA,MAAA,CAAA;AAAA,KAC3B;AAAA,IAEA,IAAA,EAAO,CAAC,IAAA,EAAM,IAAU,KAAA;AACtB,MAAA,IAAI,IAAM,EAAA;AACR,QAAK,IAAA,CAAA,IAAI,IAAI,MAAO,CAAA,MAAA,CAAO,KAAK,IAAI,CAAA,IAAK,EAAC,EAAG,IAAI,CAAA,CAAA;AACjD,QAAA,OAAA;AAAA,OACF;AACA,MAAA,OAAO,KAAK,IAAI,CAAA,CAAA;AAAA,KAClB;AAAA,IAEA,CAAA,CAAE,GAAK,EAAA,MAAA,EAAQ,IAAM,EAAA;AACnB,MAAI,IAAA,GAAA,CAAA;AACJ,MAAA,KAAA,MAAW,CAAK,IAAA,SAAA,CAAU,IAAQ,IAAA,MAAM,CAAG,EAAA;AACzC,QAAA,GAAA,GAAM,GAAI,CAAA,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,EAAE,CAAA,CAAA;AAC1B,QAAA,IAAI,GAAK,EAAA;AACP,UAAA,MAAA;AAAA,SACF;AAAA,OACF;AACA,MAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,aAAe,EAAA;AAC1C,QAAA,IAAI,OAAO,IAAM,EAAA;AACf,UAAQ,OAAA,CAAA,KAAA;AAAA,YACN,CAAA,yBAAA,EAA4B,EAAG,CAAA,MAAA,CAAO,GAAU,CAAE,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA,kBAAA,EACxD,IAAQ,IAAA,MAAA,CAAA,YAAA,CAAA;AAAA,WAEZ,CAAA;AACA,UAAA,OAAA;AAAA,SACF;AAAA,OACF;AACA,MAAA,IAAI,OAAO,GAAQ,KAAA,UAAA;AAAY,QAAA,OAAO,IAAI,MAAM,CAAA,CAAA;AAChD,MAAA,IAAI,OAAO,GAAQ,KAAA,QAAA;AAAU,QAAO,OAAA,cAAA,CAAe,GAAK,EAAA,MAAA,EAAQ,QAAQ,CAAA,CAAA;AACxE,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"createTranslate.js","sources":["../../src/i18n/createTranslate.ts"],"sourcesContent":["import { get } from '../objects/get';\nimport type { ObjectPathLike } from '../objects/parseObjectPath';\nimport { renderTemplate } from '../strings/renderTemplate';\n\nexport interface Translate<T extends object> {\n /** Get/Set the language key */\n locale(lang?: string): string;\n\n /** Define the dict of translations for a language */\n dict(lang: string, dict: T): void;\n\n /** Get the dict of translations for a language */\n dict(lang: string): T;\n\n /** Retrieve a translation segment for the current language */\n t<X extends Record<string, any> | any[]>(key: ObjectPathLike, params?: X, lang?: string): string;\n}\n\nexport function createTranslate<T extends object>(obj?: Record<string, T>): Translate<T> {\n let locale = '';\n const tree = obj || {};\n // en-US -> en-US,en\n const keyOfDict = (s: string | string[]) => {\n if (Array.isArray(s)) {\n return s;\n }\n const sp = s.split(/[_-]/);\n if (sp.length > 1) {\n return [s, sp[0]];\n }\n return [s];\n };\n return {\n locale(lang) {\n return (locale = lang || locale);\n },\n\n dict: ((lang, dict?) => {\n if (dict) {\n tree[lang] = Object.assign(tree[lang] || {}, dict);\n return;\n }\n return tree[lang];\n }) as Translate<T>['dict'],\n\n t(key, params, lang) {\n let val: any;\n for (const k of keyOfDict(lang || locale)) {\n val = get(tree[k], key, '');\n if (val) {\n break;\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (val == null) {\n console.error(\n `[Translate] Missing the \"${[].concat(key as any).join('.')}\" key within the \"${\n lang || locale\n }\" dictionary`,\n );\n return;\n }\n }\n if (typeof val === 'function') return val(params);\n if (typeof val === 'string') return renderTemplate(val, params, 'common');\n return val;\n },\n };\n}\n"],"names":[],"mappings":";;;AAkBO,SAAS,gBAAkC,GAAuC,EAAA;AACvF,EAAA,IAAI,MAAS,GAAA,EAAA,CAAA;AACb,EAAM,MAAA,IAAA,GAAO,OAAO,EAAC,CAAA;AAErB,EAAM,MAAA,SAAA,GAAY,CAAC,CAAyB,KAAA;AAC1C,IAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,CAAC,CAAG,EAAA;AACpB,MAAO,OAAA,CAAA,CAAA;AAAA,KACT;AACA,IAAM,MAAA,EAAA,GAAK,CAAE,CAAA,KAAA,CAAM,MAAM,CAAA,CAAA;AACzB,IAAI,IAAA,EAAA,CAAG,SAAS,CAAG,EAAA;AACjB,MAAA,OAAO,CAAC,CAAA,EAAG,EAAG,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,KAClB;AACA,IAAA,OAAO,CAAC,CAAC,CAAA,CAAA;AAAA,GACX,CAAA;AACA,EAAO,OAAA;AAAA,IACL,OAAO,IAAM,EAAA;AACX,MAAA,OAAQ,SAAS,IAAQ,IAAA,MAAA,CAAA;AAAA,KAC3B;AAAA,IAEA,IAAA,EAAO,CAAC,IAAA,EAAM,IAAU,KAAA;AACtB,MAAA,IAAI,IAAM,EAAA;AACR,QAAK,IAAA,CAAA,IAAI,IAAI,MAAO,CAAA,MAAA,CAAO,KAAK,IAAI,CAAA,IAAK,EAAC,EAAG,IAAI,CAAA,CAAA;AACjD,QAAA,OAAA;AAAA,OACF;AACA,MAAA,OAAO,KAAK,IAAI,CAAA,CAAA;AAAA,KAClB;AAAA,IAEA,CAAA,CAAE,GAAK,EAAA,MAAA,EAAQ,IAAM,EAAA;AACnB,MAAI,IAAA,GAAA,CAAA;AACJ,MAAA,KAAA,MAAW,CAAK,IAAA,SAAA,CAAU,IAAQ,IAAA,MAAM,CAAG,EAAA;AACzC,QAAA,GAAA,GAAM,GAAI,CAAA,IAAA,CAAK,CAAC,CAAA,EAAG,KAAK,EAAE,CAAA,CAAA;AAC1B,QAAA,IAAI,GAAK,EAAA;AACP,UAAA,MAAA;AAAA,SACF;AAAA,OACF;AACA,MAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,QAAA,KAAa,aAAe,EAAA;AAC1C,QAAA,IAAI,OAAO,IAAM,EAAA;AACf,UAAQ,OAAA,CAAA,KAAA;AAAA,YACN,CAAA,yBAAA,EAA4B,EAAC,CAAE,MAAO,CAAA,GAAU,CAAE,CAAA,IAAA,CAAK,GAAG,CAAC,CACzD,kBAAA,EAAA,IAAA,IAAQ,MACV,CAAA,YAAA,CAAA;AAAA,WACF,CAAA;AACA,UAAA,OAAA;AAAA,SACF;AAAA,OACF;AACA,MAAA,IAAI,OAAO,GAAQ,KAAA,UAAA;AAAY,QAAA,OAAO,IAAI,MAAM,CAAA,CAAA;AAChD,MAAA,IAAI,OAAO,GAAQ,KAAA,QAAA;AAAU,QAAO,OAAA,cAAA,CAAe,GAAK,EAAA,MAAA,EAAQ,QAAQ,CAAA,CAAA;AACxE,MAAO,OAAA,GAAA,CAAA;AAAA,KACT;AAAA,GACF,CAAA;AACF;;;;"}