@wener/utils 1.1.6 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -1
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server.js +1 -1
- package/dist/cjs/server.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/esm/server.js.map +1 -1
- package/dist/system/index.js +1 -1
- package/dist/system/index.js.map +1 -1
- package/dist/system/server.js +1 -1
- package/dist/system/server.js.map +1 -1
- package/lib/arrays/MaybeArray.js.map +1 -1
- package/lib/asyncs/createLazyPromise.js +2 -2
- package/lib/asyncs/createLazyPromise.js.map +1 -1
- package/lib/asyncs/timeout.js +1 -1
- package/lib/asyncs/timeout.js.map +1 -1
- package/lib/browsers/copy.js +2 -3
- package/lib/browsers/copy.js.map +1 -1
- package/lib/browsers/loaders.js +6 -11
- package/lib/browsers/loaders.js.map +1 -1
- package/lib/crypto/{hex.js → base.js} +1 -1
- package/lib/crypto/base.js.map +1 -0
- package/lib/crypto/hashing.js +4 -4
- package/lib/crypto/hashing.js.map +1 -1
- package/lib/crypto/randomUUID.js.map +1 -1
- package/lib/i18n/createTranslate.js.map +1 -1
- package/lib/index.js +2 -2
- package/lib/io/ArrayBuffers.js +164 -0
- package/lib/io/ArrayBuffers.js.map +1 -0
- package/lib/io/isBuffer.js +1 -1
- package/lib/io/isBuffer.js.map +1 -1
- package/lib/io/isTransferable.js.map +1 -1
- package/lib/isomorphics/structuredClone.js.map +1 -1
- package/lib/langs/deepEqual.js.map +1 -1
- package/lib/langs/shallowEqual.js.map +1 -1
- package/lib/logging/createNoopLogger.js.map +1 -1
- package/lib/modules/isModule.js.map +1 -1
- package/lib/modules/parseModuleId.js +7 -5
- package/lib/modules/parseModuleId.js.map +1 -1
- package/lib/objects/parseObjectPath.js.map +1 -1
- package/lib/objects/set.js.map +1 -1
- package/lib/server/polyfillBrowser.js.map +1 -1
- package/lib/server/polyfillFetch.js.map +1 -1
- package/lib/server/polyfillJsDom.js +1 -1
- package/lib/server/polyfillJsDom.js.map +1 -1
- package/lib/strings/formatBytes.js +1 -1
- package/lib/strings/formatBytes.js.map +1 -1
- package/lib/strings/renderTemplate.js +1 -1
- package/lib/strings/renderTemplate.js.map +1 -1
- package/package.json +10 -2
- package/src/arrays/MaybeArray.ts +1 -1
- package/src/asyncs/createLazyPromise.test.ts +4 -4
- package/src/asyncs/createLazyPromise.ts +2 -2
- package/src/asyncs/generatorOfStream.ts +1 -0
- package/src/asyncs/timeout.ts +1 -1
- package/src/browsers/copy.ts +6 -5
- package/src/browsers/loaders.ts +6 -11
- package/src/crypto/{hex.ts → base.ts} +3 -0
- package/src/crypto/hashing.test.ts +1 -1
- package/src/crypto/hashing.ts +4 -4
- package/src/crypto/randomUUID.ts +3 -0
- package/src/i18n/createTranslate.test.ts +18 -18
- package/src/i18n/createTranslate.ts +1 -1
- package/src/index.ts +3 -2
- package/src/io/AbstractEncoding.ts +21 -0
- package/src/io/ArrayBuffer.test-d.ts +4 -0
- package/src/io/ArrayBuffers.base64.test.ts +61 -0
- package/src/io/ArrayBuffers.test.ts +23 -0
- package/src/io/ArrayBuffers.ts +272 -0
- package/src/io/Buffer.ts +16 -0
- package/src/io/isBuffer.test.ts +2 -0
- package/src/io/isBuffer.ts +3 -8
- package/src/io/isTransferable.ts +1 -1
- package/src/isomorphics/structuredClone.test.ts +1 -1
- package/src/isomorphics/structuredClone.ts +9 -6
- package/src/langs/deepEqual.ts +1 -0
- package/src/langs/shallowEqual.ts +1 -1
- package/src/logging/Logger.ts +6 -0
- package/src/logging/createNoopLogger.ts +1 -1
- package/src/logging/logger.test.ts +3 -3
- package/src/modules/isModule.ts +3 -0
- package/src/modules/parseModuleId.test.ts +7 -2
- package/src/modules/parseModuleId.ts +15 -9
- package/src/objects/get.test-d.ts +51 -0
- package/src/objects/get.test.ts +2 -55
- package/src/objects/parseObjectPath.ts +4 -3
- package/src/objects/set.test.ts +32 -31
- package/src/objects/set.ts +2 -2
- package/src/server/polyfillBrowser.ts +8 -0
- package/src/server/polyfillFetch.ts +0 -1
- package/src/server/polyfillJsDom.ts +3 -2
- package/src/strings/formatBytes.ts +1 -1
- package/src/strings/renderTemplate.test.ts +1 -0
- package/src/strings/renderTemplate.ts +8 -5
- package/src/typedoc.ts +2 -0
- package/tsconfig.json +2 -1
- package/dist/cjs/_commonjsHelpers-dfec268f.js +0 -2
- package/dist/cjs/_commonjsHelpers-dfec268f.js.map +0 -1
- package/dist/cjs/api-7db97ae3.js +0 -1085
- package/dist/cjs/api-7db97ae3.js.map +0 -1
- package/dist/cjs/index-a6d1d653.js +0 -14
- package/dist/cjs/index-a6d1d653.js.map +0 -1
- package/dist/cjs/multipart-parser-141ed517.js +0 -3
- package/dist/cjs/multipart-parser-141ed517.js.map +0 -1
- package/dist/esm/_commonjsHelpers-28e086c5.js +0 -2
- package/dist/esm/_commonjsHelpers-28e086c5.js.map +0 -1
- package/dist/esm/api-3f555472.js +0 -1085
- package/dist/esm/api-3f555472.js.map +0 -1
- package/dist/esm/index-b50fef91.js +0 -14
- package/dist/esm/index-b50fef91.js.map +0 -1
- package/dist/esm/multipart-parser-5c1d6ee9.js +0 -3
- package/dist/esm/multipart-parser-5c1d6ee9.js.map +0 -1
- package/dist/system/_commonjsHelpers-07f370a7.js +0 -2
- package/dist/system/_commonjsHelpers-07f370a7.js.map +0 -1
- package/dist/system/api-dc50ebac.js +0 -1085
- package/dist/system/api-dc50ebac.js.map +0 -1
- package/dist/system/index-8f1807ba.js +0 -14
- package/dist/system/index-8f1807ba.js.map +0 -1
- package/dist/system/multipart-parser-53518ee9.js +0 -3
- package/dist/system/multipart-parser-53518ee9.js.map +0 -1
- package/lib/crypto/hex.js.map +0 -1
- package/lib/shim/urljoin.js +0 -51
- package/lib/shim/urljoin.js.map +0 -1
- package/src/shim/urljoin.test.ts +0 -6
- package/src/shim/urljoin.ts +0 -75
- package/src/types.d.ts +0 -7
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
System.register(["node:fs","node:path","./index-8f1807ba.js","node:http","node:https","node:zlib","node:stream","node:buffer","node:util","./_commonjsHelpers-07f370a7.js","node:url","node:net"],function(w){"use strict";var y,N;return{setters:[function(){},function(){},function(A){y=A.FormData,N=A.File},function(){},function(){},function(){},function(){},function(){},function(){},function(){},function(){},function(){}],execute:function(){w("toFormData",j);let A=0;const t={START_BOUNDARY:A++,HEADER_FIELD_START:A++,HEADER_FIELD:A++,HEADER_VALUE_START:A++,HEADER_VALUE:A++,HEADER_VALUE_ALMOST_DONE:A++,HEADERS_ALMOST_DONE:A++,PART_DATA_START:A++,PART_DATA:A++,END:A++};let k=1;const u={PART_BOUNDARY:k,LAST_BOUNDARY:k*=2},m=10,g=13,B=32,S=45,V=58,x=97,Y=122,C=R=>R|32,_=()=>{};class I{constructor(a){this.index=0,this.flags=0,this.onHeaderEnd=_,this.onHeaderField=_,this.onHeadersEnd=_,this.onHeaderValue=_,this.onPartBegin=_,this.onPartData=_,this.onPartEnd=_,this.boundaryChars={},a=`\r
|
|
2
|
-
--`+a;const n=new Uint8Array(a.length);for(let r=0;r<a.length;r++)n[r]=a.charCodeAt(r),this.boundaryChars[n[r]]=!0;this.boundary=n,this.lookbehind=new Uint8Array(this.boundary.length+8),this.state=t.START_BOUNDARY}write(a){let n=0;const r=a.length;let d=this.index,{lookbehind:c,boundary:f,boundaryChars:H,index:e,state:i,flags:l}=this;const b=this.boundary.length,F=b-1,O=a.length;let o,P;const h=E=>{this[E+"Mark"]=n},s=E=>{delete this[E+"Mark"]},D=(E,p,T,U)=>{(p===void 0||p!==T)&&this[E](U&&U.subarray(p,T))},L=(E,p)=>{const T=E+"Mark";T in this&&(p?(D(E,this[T],n,a),delete this[T]):(D(E,this[T],a.length,a),this[T]=0))};for(n=0;n<r;n++)switch(o=a[n],i){case t.START_BOUNDARY:if(e===f.length-2){if(o===S)l|=u.LAST_BOUNDARY;else if(o!==g)return;e++;break}else if(e-1===f.length-2){if(l&u.LAST_BOUNDARY&&o===S)i=t.END,l=0;else if(!(l&u.LAST_BOUNDARY)&&o===m)e=0,D("onPartBegin"),i=t.HEADER_FIELD_START;else return;break}o!==f[e+2]&&(e=-2),o===f[e+2]&&e++;break;case t.HEADER_FIELD_START:i=t.HEADER_FIELD,h("onHeaderField"),e=0;case t.HEADER_FIELD:if(o===g){s("onHeaderField"),i=t.HEADERS_ALMOST_DONE;break}if(e++,o===S)break;if(o===V){if(e===1)return;L("onHeaderField",!0),i=t.HEADER_VALUE_START;break}if(P=C(o),P<x||P>Y)return;break;case t.HEADER_VALUE_START:if(o===B)break;h("onHeaderValue"),i=t.HEADER_VALUE;case t.HEADER_VALUE:o===g&&(L("onHeaderValue",!0),D("onHeaderEnd"),i=t.HEADER_VALUE_ALMOST_DONE);break;case t.HEADER_VALUE_ALMOST_DONE:if(o!==m)return;i=t.HEADER_FIELD_START;break;case t.HEADERS_ALMOST_DONE:if(o!==m)return;D("onHeadersEnd"),i=t.PART_DATA_START;break;case t.PART_DATA_START:i=t.PART_DATA,h("onPartData");case t.PART_DATA:if(d=e,e===0){for(n+=F;n<O&&!(a[n]in H);)n+=b;n-=F,o=a[n]}if(e<f.length)f[e]===o?(e===0&&L("onPartData",!0),e++):e=0;else if(e===f.length)e++,o===g?l|=u.PART_BOUNDARY:o===S?l|=u.LAST_BOUNDARY:e=0;else if(e-1===f.length)if(l&u.PART_BOUNDARY){if(e=0,o===m){l&=~u.PART_BOUNDARY,D("onPartEnd"),D("onPartBegin"),i=t.HEADER_FIELD_START;break}}else l&u.LAST_BOUNDARY&&o===S?(D("onPartEnd"),i=t.END,l=0):e=0;if(e>0)c[e-1]=o;else if(d>0){const E=new Uint8Array(c.buffer,c.byteOffset,c.byteLength);D("onPartData",0,d,E),d=0,h("onPartData"),n--}break;case t.END:break;default:throw new Error(`Unexpected state entered: ${i}`)}L("onHeaderField"),L("onHeaderValue"),L("onPartData"),this.index=e,this.state=i,this.flags=l}end(){if(this.state===t.HEADER_FIELD_START&&this.index===0||this.state===t.PART_DATA&&this.index===this.boundary.length)this.onPartEnd();else if(this.state!==t.END)throw new Error("MultipartParser.end(): stream ended unexpectedly")}}function M(R){const a=R.match(/\bfilename=("(.*?)"|([^()<>@,;:\\"/[\]?={}\s\t]+))($|;\s)/i);if(!a)return;const n=a[2]||a[3]||"";let r=n.slice(n.lastIndexOf("\\")+1);return r=r.replace(/%22/g,'"'),r=r.replace(/&#(\d{4});/g,(d,c)=>String.fromCharCode(c)),r}async function j(R,a){if(!/multipart/i.test(a))throw new TypeError("Failed to fetch");const n=a.match(/boundary=(?:"([^"]+)"|([^;]+))/i);if(!n)throw new TypeError("no or bad content-type header, no multipart boundary");const r=new I(n[1]||n[2]);let d,c,f,H,e,i;const l=[],b=new y,F=s=>{f+=h.decode(s,{stream:!0})},O=s=>{l.push(s)},o=()=>{const s=new N(l,i,{type:e});b.append(H,s)},P=()=>{b.append(H,f)},h=new TextDecoder("utf-8");h.decode(),r.onPartBegin=function(){r.onPartData=F,r.onPartEnd=P,d="",c="",f="",H="",e="",i=null,l.length=0},r.onHeaderField=function(s){d+=h.decode(s,{stream:!0})},r.onHeaderValue=function(s){c+=h.decode(s,{stream:!0})},r.onHeaderEnd=function(){if(c+=h.decode(),d=d.toLowerCase(),d==="content-disposition"){const s=c.match(/\bname=("([^"]*)"|([^()<>@,;:\\"/[\]?={}\s\t]+))/i);s&&(H=s[2]||s[3]||""),i=M(c),i&&(r.onPartData=O,r.onPartEnd=o)}else d==="content-type"&&(e=c);c="",d=""};for await(const s of R)r.write(s);return r.end(),b}}}});
|
|
3
|
-
//# sourceMappingURL=multipart-parser-53518ee9.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"multipart-parser-53518ee9.js","sources":["../../../../node_modules/.pnpm/node-fetch@3.2.10/node_modules/node-fetch/src/utils/multipart-parser.js"],"sourcesContent":["import {File} from 'fetch-blob/from.js';\nimport {FormData} from 'formdata-polyfill/esm.min.js';\n\nlet s = 0;\nconst S = {\n\tSTART_BOUNDARY: s++,\n\tHEADER_FIELD_START: s++,\n\tHEADER_FIELD: s++,\n\tHEADER_VALUE_START: s++,\n\tHEADER_VALUE: s++,\n\tHEADER_VALUE_ALMOST_DONE: s++,\n\tHEADERS_ALMOST_DONE: s++,\n\tPART_DATA_START: s++,\n\tPART_DATA: s++,\n\tEND: s++\n};\n\nlet f = 1;\nconst F = {\n\tPART_BOUNDARY: f,\n\tLAST_BOUNDARY: f *= 2\n};\n\nconst LF = 10;\nconst CR = 13;\nconst SPACE = 32;\nconst HYPHEN = 45;\nconst COLON = 58;\nconst A = 97;\nconst Z = 122;\n\nconst lower = c => c | 0x20;\n\nconst noop = () => {};\n\nclass MultipartParser {\n\t/**\n\t * @param {string} boundary\n\t */\n\tconstructor(boundary) {\n\t\tthis.index = 0;\n\t\tthis.flags = 0;\n\n\t\tthis.onHeaderEnd = noop;\n\t\tthis.onHeaderField = noop;\n\t\tthis.onHeadersEnd = noop;\n\t\tthis.onHeaderValue = noop;\n\t\tthis.onPartBegin = noop;\n\t\tthis.onPartData = noop;\n\t\tthis.onPartEnd = noop;\n\n\t\tthis.boundaryChars = {};\n\n\t\tboundary = '\\r\\n--' + boundary;\n\t\tconst ui8a = new Uint8Array(boundary.length);\n\t\tfor (let i = 0; i < boundary.length; i++) {\n\t\t\tui8a[i] = boundary.charCodeAt(i);\n\t\t\tthis.boundaryChars[ui8a[i]] = true;\n\t\t}\n\n\t\tthis.boundary = ui8a;\n\t\tthis.lookbehind = new Uint8Array(this.boundary.length + 8);\n\t\tthis.state = S.START_BOUNDARY;\n\t}\n\n\t/**\n\t * @param {Uint8Array} data\n\t */\n\twrite(data) {\n\t\tlet i = 0;\n\t\tconst length_ = data.length;\n\t\tlet previousIndex = this.index;\n\t\tlet {lookbehind, boundary, boundaryChars, index, state, flags} = this;\n\t\tconst boundaryLength = this.boundary.length;\n\t\tconst boundaryEnd = boundaryLength - 1;\n\t\tconst bufferLength = data.length;\n\t\tlet c;\n\t\tlet cl;\n\n\t\tconst mark = name => {\n\t\t\tthis[name + 'Mark'] = i;\n\t\t};\n\n\t\tconst clear = name => {\n\t\t\tdelete this[name + 'Mark'];\n\t\t};\n\n\t\tconst callback = (callbackSymbol, start, end, ui8a) => {\n\t\t\tif (start === undefined || start !== end) {\n\t\t\t\tthis[callbackSymbol](ui8a && ui8a.subarray(start, end));\n\t\t\t}\n\t\t};\n\n\t\tconst dataCallback = (name, clear) => {\n\t\t\tconst markSymbol = name + 'Mark';\n\t\t\tif (!(markSymbol in this)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (clear) {\n\t\t\t\tcallback(name, this[markSymbol], i, data);\n\t\t\t\tdelete this[markSymbol];\n\t\t\t} else {\n\t\t\t\tcallback(name, this[markSymbol], data.length, data);\n\t\t\t\tthis[markSymbol] = 0;\n\t\t\t}\n\t\t};\n\n\t\tfor (i = 0; i < length_; i++) {\n\t\t\tc = data[i];\n\n\t\t\tswitch (state) {\n\t\t\t\tcase S.START_BOUNDARY:\n\t\t\t\t\tif (index === boundary.length - 2) {\n\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else if (c !== CR) {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t} else if (index - 1 === boundary.length - 2) {\n\t\t\t\t\t\tif (flags & F.LAST_BOUNDARY && c === HYPHEN) {\n\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t} else if (!(flags & F.LAST_BOUNDARY) && c === LF) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c !== boundary[index + 2]) {\n\t\t\t\t\t\tindex = -2;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === boundary[index + 2]) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_FIELD_START:\n\t\t\t\t\tstate = S.HEADER_FIELD;\n\t\t\t\t\tmark('onHeaderField');\n\t\t\t\t\tindex = 0;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_FIELD:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tclear('onHeaderField');\n\t\t\t\t\t\tstate = S.HEADERS_ALMOST_DONE;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tindex++;\n\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (c === COLON) {\n\t\t\t\t\t\tif (index === 1) {\n\t\t\t\t\t\t\t// empty header field\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tdataCallback('onHeaderField', true);\n\t\t\t\t\t\tstate = S.HEADER_VALUE_START;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tcl = lower(c);\n\t\t\t\t\tif (cl < A || cl > Z) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_START:\n\t\t\t\t\tif (c === SPACE) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tmark('onHeaderValue');\n\t\t\t\t\tstate = S.HEADER_VALUE;\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.HEADER_VALUE:\n\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\tdataCallback('onHeaderValue', true);\n\t\t\t\t\t\tcallback('onHeaderEnd');\n\t\t\t\t\t\tstate = S.HEADER_VALUE_ALMOST_DONE;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADER_VALUE_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.HEADERS_ALMOST_DONE:\n\t\t\t\t\tif (c !== LF) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tcallback('onHeadersEnd');\n\t\t\t\t\tstate = S.PART_DATA_START;\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.PART_DATA_START:\n\t\t\t\t\tstate = S.PART_DATA;\n\t\t\t\t\tmark('onPartData');\n\t\t\t\t\t// falls through\n\t\t\t\tcase S.PART_DATA:\n\t\t\t\t\tpreviousIndex = index;\n\n\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t// boyer-moore derrived algorithm to safely skip non-boundary data\n\t\t\t\t\t\ti += boundaryEnd;\n\t\t\t\t\t\twhile (i < bufferLength && !(data[i] in boundaryChars)) {\n\t\t\t\t\t\t\ti += boundaryLength;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\ti -= boundaryEnd;\n\t\t\t\t\t\tc = data[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index < boundary.length) {\n\t\t\t\t\t\tif (boundary[index] === c) {\n\t\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tdataCallback('onPartData', true);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index === boundary.length) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (c === CR) {\n\t\t\t\t\t\t\t// CR = part boundary\n\t\t\t\t\t\t\tflags |= F.PART_BOUNDARY;\n\t\t\t\t\t\t} else if (c === HYPHEN) {\n\t\t\t\t\t\t\t// HYPHEN = end boundary\n\t\t\t\t\t\t\tflags |= F.LAST_BOUNDARY;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else if (index - 1 === boundary.length) {\n\t\t\t\t\t\tif (flags & F.PART_BOUNDARY) {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\tif (c === LF) {\n\t\t\t\t\t\t\t\t// unset the PART_BOUNDARY flag\n\t\t\t\t\t\t\t\tflags &= ~F.PART_BOUNDARY;\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tcallback('onPartBegin');\n\t\t\t\t\t\t\t\tstate = S.HEADER_FIELD_START;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (flags & F.LAST_BOUNDARY) {\n\t\t\t\t\t\t\tif (c === HYPHEN) {\n\t\t\t\t\t\t\t\tcallback('onPartEnd');\n\t\t\t\t\t\t\t\tstate = S.END;\n\t\t\t\t\t\t\t\tflags = 0;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tindex = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t// when matching a possible boundary, keep a lookbehind reference\n\t\t\t\t\t\t// in case it turns out to be a false lead\n\t\t\t\t\t\tlookbehind[index - 1] = c;\n\t\t\t\t\t} else if (previousIndex > 0) {\n\t\t\t\t\t\t// if our boundary turned out to be rubbish, the captured lookbehind\n\t\t\t\t\t\t// belongs to partData\n\t\t\t\t\t\tconst _lookbehind = new Uint8Array(lookbehind.buffer, lookbehind.byteOffset, lookbehind.byteLength);\n\t\t\t\t\t\tcallback('onPartData', 0, previousIndex, _lookbehind);\n\t\t\t\t\t\tpreviousIndex = 0;\n\t\t\t\t\t\tmark('onPartData');\n\n\t\t\t\t\t\t// reconsider the current character even so it interrupted the sequence\n\t\t\t\t\t\t// it could be the beginning of a new sequence\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\tcase S.END:\n\t\t\t\t\tbreak;\n\t\t\t\tdefault:\n\t\t\t\t\tthrow new Error(`Unexpected state entered: ${state}`);\n\t\t\t}\n\t\t}\n\n\t\tdataCallback('onHeaderField');\n\t\tdataCallback('onHeaderValue');\n\t\tdataCallback('onPartData');\n\n\t\t// Update properties for the next call\n\t\tthis.index = index;\n\t\tthis.state = state;\n\t\tthis.flags = flags;\n\t}\n\n\tend() {\n\t\tif ((this.state === S.HEADER_FIELD_START && this.index === 0) ||\n\t\t\t(this.state === S.PART_DATA && this.index === this.boundary.length)) {\n\t\t\tthis.onPartEnd();\n\t\t} else if (this.state !== S.END) {\n\t\t\tthrow new Error('MultipartParser.end(): stream ended unexpectedly');\n\t\t}\n\t}\n}\n\nfunction _fileName(headerValue) {\n\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\tconst m = headerValue.match(/\\bfilename=(\"(.*?)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))($|;\\s)/i);\n\tif (!m) {\n\t\treturn;\n\t}\n\n\tconst match = m[2] || m[3] || '';\n\tlet filename = match.slice(match.lastIndexOf('\\\\') + 1);\n\tfilename = filename.replace(/%22/g, '\"');\n\tfilename = filename.replace(/&#(\\d{4});/g, (m, code) => {\n\t\treturn String.fromCharCode(code);\n\t});\n\treturn filename;\n}\n\nexport async function toFormData(Body, ct) {\n\tif (!/multipart/i.test(ct)) {\n\t\tthrow new TypeError('Failed to fetch');\n\t}\n\n\tconst m = ct.match(/boundary=(?:\"([^\"]+)\"|([^;]+))/i);\n\n\tif (!m) {\n\t\tthrow new TypeError('no or bad content-type header, no multipart boundary');\n\t}\n\n\tconst parser = new MultipartParser(m[1] || m[2]);\n\n\tlet headerField;\n\tlet headerValue;\n\tlet entryValue;\n\tlet entryName;\n\tlet contentType;\n\tlet filename;\n\tconst entryChunks = [];\n\tconst formData = new FormData();\n\n\tconst onPartData = ui8a => {\n\t\tentryValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tconst appendToFile = ui8a => {\n\t\tentryChunks.push(ui8a);\n\t};\n\n\tconst appendFileToFormData = () => {\n\t\tconst file = new File(entryChunks, filename, {type: contentType});\n\t\tformData.append(entryName, file);\n\t};\n\n\tconst appendEntryToFormData = () => {\n\t\tformData.append(entryName, entryValue);\n\t};\n\n\tconst decoder = new TextDecoder('utf-8');\n\tdecoder.decode();\n\n\tparser.onPartBegin = function () {\n\t\tparser.onPartData = onPartData;\n\t\tparser.onPartEnd = appendEntryToFormData;\n\n\t\theaderField = '';\n\t\theaderValue = '';\n\t\tentryValue = '';\n\t\tentryName = '';\n\t\tcontentType = '';\n\t\tfilename = null;\n\t\tentryChunks.length = 0;\n\t};\n\n\tparser.onHeaderField = function (ui8a) {\n\t\theaderField += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderValue = function (ui8a) {\n\t\theaderValue += decoder.decode(ui8a, {stream: true});\n\t};\n\n\tparser.onHeaderEnd = function () {\n\t\theaderValue += decoder.decode();\n\t\theaderField = headerField.toLowerCase();\n\n\t\tif (headerField === 'content-disposition') {\n\t\t\t// matches either a quoted-string or a token (RFC 2616 section 19.5.1)\n\t\t\tconst m = headerValue.match(/\\bname=(\"([^\"]*)\"|([^()<>@,;:\\\\\"/[\\]?={}\\s\\t]+))/i);\n\n\t\t\tif (m) {\n\t\t\t\tentryName = m[2] || m[3] || '';\n\t\t\t}\n\n\t\t\tfilename = _fileName(headerValue);\n\n\t\t\tif (filename) {\n\t\t\t\tparser.onPartData = appendToFile;\n\t\t\t\tparser.onPartEnd = appendFileToFormData;\n\t\t\t}\n\t\t} else if (headerField === 'content-type') {\n\t\t\tcontentType = headerValue;\n\t\t}\n\n\t\theaderValue = '';\n\t\theaderField = '';\n\t};\n\n\tfor await (const chunk of Body) {\n\t\tparser.write(chunk);\n\t}\n\n\tparser.end();\n\n\treturn formData;\n}\n"],"names":["s","S","f","F","LF","CR","SPACE","HYPHEN","COLON","A","Z","lower","c","noop","MultipartParser","boundary","ui8a","i","data","length_","previousIndex","lookbehind","boundaryChars","index","state","flags","boundaryLength","boundaryEnd","bufferLength","cl","mark","name","clear","callback","callbackSymbol","start","end","dataCallback","markSymbol","_lookbehind","_fileName","headerValue","m","match","filename","code","toFormData","Body","ct","parser","headerField","entryValue","entryName","contentType","entryChunks","formData","FormData","onPartData","decoder","appendToFile","appendFileToFormData","file","File","appendEntryToFormData","chunk"],"mappings":"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"}
|
package/lib/crypto/hex.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"hex.js","sources":["../../src/crypto/hex.ts"],"sourcesContent":["export function hex(s: Uint8Array | ArrayBuffer) {\n return Array.from(new Uint8Array(s))\n .map((v) => v.toString(16).padStart(2, '0'))\n .join('');\n}\n"],"names":[],"mappings":"AAAO,SAAS,IAAI,CAA6B,EAAA;AAC/C,EAAO,OAAA,KAAA,CAAM,KAAK,IAAI,UAAA,CAAW,CAAC,CAAC,CAAA,CAChC,IAAI,CAAC,CAAA,KAAM,EAAE,QAAS,CAAA,EAAE,EAAE,QAAS,CAAA,CAAA,EAAG,GAAG,CAAC,CAAA,CAC1C,KAAK,EAAE,CAAA,CAAA;AACZ;;;;"}
|
package/lib/shim/urljoin.js
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
function urljoin(...args) {
|
|
2
|
-
if (Array.isArray(args[0])) {
|
|
3
|
-
return normalize(args[0]);
|
|
4
|
-
} else {
|
|
5
|
-
return normalize(args);
|
|
6
|
-
}
|
|
7
|
-
}
|
|
8
|
-
function normalize(strArray) {
|
|
9
|
-
const resultArray = [];
|
|
10
|
-
if (strArray.length === 0) {
|
|
11
|
-
return "";
|
|
12
|
-
}
|
|
13
|
-
if (typeof strArray[0] !== "string") {
|
|
14
|
-
throw new TypeError("Url must be a string. Received " + strArray[0]);
|
|
15
|
-
}
|
|
16
|
-
if (strArray[0].match(/^[^/:]+:\/*$/) && strArray.length > 1) {
|
|
17
|
-
const first = strArray.shift();
|
|
18
|
-
strArray[0] = first + strArray[0];
|
|
19
|
-
}
|
|
20
|
-
if (strArray[0].match(/^file:\/\/\//)) {
|
|
21
|
-
strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, "$1:///");
|
|
22
|
-
} else {
|
|
23
|
-
strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, "$1://");
|
|
24
|
-
}
|
|
25
|
-
for (let i = 0; i < strArray.length; i++) {
|
|
26
|
-
let component = strArray[i];
|
|
27
|
-
if (typeof component !== "string") {
|
|
28
|
-
throw new TypeError("Url must be a string. Received " + component);
|
|
29
|
-
}
|
|
30
|
-
if (component === "") {
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
if (i > 0) {
|
|
34
|
-
component = component.replace(/^[\/]+/, "");
|
|
35
|
-
}
|
|
36
|
-
if (i < strArray.length - 1) {
|
|
37
|
-
component = component.replace(/[\/]+$/, "");
|
|
38
|
-
} else {
|
|
39
|
-
component = component.replace(/[\/]+$/, "/");
|
|
40
|
-
}
|
|
41
|
-
resultArray.push(component);
|
|
42
|
-
}
|
|
43
|
-
let str = resultArray.join("/");
|
|
44
|
-
str = str.replace(/\/(\?|&|#[^!])/g, "$1");
|
|
45
|
-
const parts = str.split("?");
|
|
46
|
-
str = parts.shift() + (parts.length > 0 ? "?" : "") + parts.join("&");
|
|
47
|
-
return str;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export { urljoin };
|
|
51
|
-
//# sourceMappingURL=urljoin.js.map
|
package/lib/shim/urljoin.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"urljoin.js","sources":["../../src/shim/urljoin.ts"],"sourcesContent":["export function urljoin(...strArray: string[]): string;\nexport function urljoin(strArray: string[]): string;\n\n/**\n * @see {@link https://github.com/jfromaniello/url-join}\n */\nexport function urljoin(...args: string[] | [string[]]): string {\n if (Array.isArray(args[0])) {\n return normalize(args[0]);\n } else {\n return normalize(args as any);\n }\n}\n\nfunction normalize(strArray: string[]) {\n const resultArray: string[] = [];\n if (strArray.length === 0) {\n return '';\n }\n\n if (typeof strArray[0] !== 'string') {\n throw new TypeError('Url must be a string. Received ' + strArray[0]);\n }\n\n // If the first part is a plain protocol, we combine it with the next part.\n if (strArray[0].match(/^[^/:]+:\\/*$/) && strArray.length > 1) {\n const first = strArray.shift();\n strArray[0] = first + strArray[0];\n }\n\n // There must be two or three slashes in the file protocol, two slashes in anything else.\n if (strArray[0].match(/^file:\\/\\/\\//)) {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1:///');\n } else {\n strArray[0] = strArray[0].replace(/^([^/:]+):\\/*/, '$1://');\n }\n\n for (let i = 0; i < strArray.length; i++) {\n let component = strArray[i];\n\n if (typeof component !== 'string') {\n throw new TypeError('Url must be a string. Received ' + component);\n }\n\n if (component === '') {\n continue;\n }\n\n if (i > 0) {\n // Removing the starting slashes for each component but the first.\n component = component.replace(/^[\\/]+/, '');\n }\n if (i < strArray.length - 1) {\n // Removing the ending slashes for each component but the last.\n component = component.replace(/[\\/]+$/, '');\n } else {\n // For the last component we will combine multiple slashes to a single one.\n component = component.replace(/[\\/]+$/, '/');\n }\n\n resultArray.push(component);\n }\n\n let str = resultArray.join('/');\n // Each input component is now separated by a single slash except the possible first plain protocol part.\n\n // remove trailing slash before parameters or hash\n str = str.replace(/\\/(\\?|&|#[^!])/g, '$1');\n\n // replace ? in parameters with &\n const parts = str.split('?');\n str = parts.shift() + (parts.length > 0 ? '?' : '') + parts.join('&');\n\n return str;\n}\n"],"names":[],"mappings":"AAMO,SAAS,WAAW,IAAqC,EAAA;AAC9D,EAAA,IAAI,KAAM,CAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,CAAE,CAAG,EAAA;AAC1B,IAAO,OAAA,SAAA,CAAU,KAAK,CAAE,CAAA,CAAA,CAAA;AAAA,GACnB,MAAA;AACL,IAAA,OAAO,UAAU,IAAW,CAAA,CAAA;AAAA,GAC9B;AACF,CAAA;AAEA,SAAS,UAAU,QAAoB,EAAA;AACrC,EAAA,MAAM,cAAwB,EAAC,CAAA;AAC/B,EAAI,IAAA,QAAA,CAAS,WAAW,CAAG,EAAA;AACzB,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AAEA,EAAI,IAAA,OAAO,QAAS,CAAA,CAAA,CAAA,KAAO,QAAU,EAAA;AACnC,IAAA,MAAM,IAAI,SAAA,CAAU,iCAAoC,GAAA,QAAA,CAAS,CAAE,CAAA,CAAA,CAAA;AAAA,GACrE;AAGA,EAAA,IAAI,SAAS,CAAG,CAAA,CAAA,KAAA,CAAM,cAAc,CAAK,IAAA,QAAA,CAAS,SAAS,CAAG,EAAA;AAC5D,IAAM,MAAA,KAAA,GAAQ,SAAS,KAAM,EAAA,CAAA;AAC7B,IAAS,QAAA,CAAA,CAAA,CAAA,GAAK,QAAQ,QAAS,CAAA,CAAA,CAAA,CAAA;AAAA,GACjC;AAGA,EAAA,IAAI,QAAS,CAAA,CAAA,CAAA,CAAG,KAAM,CAAA,cAAc,CAAG,EAAA;AACrC,IAAA,QAAA,CAAS,CAAK,CAAA,GAAA,QAAA,CAAS,CAAG,CAAA,CAAA,OAAA,CAAQ,iBAAiB,QAAQ,CAAA,CAAA;AAAA,GACtD,MAAA;AACL,IAAA,QAAA,CAAS,CAAK,CAAA,GAAA,QAAA,CAAS,CAAG,CAAA,CAAA,OAAA,CAAQ,iBAAiB,OAAO,CAAA,CAAA;AAAA,GAC5D;AAEA,EAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,QAAA,CAAS,QAAQ,CAAK,EAAA,EAAA;AACxC,IAAA,IAAI,YAAY,QAAS,CAAA,CAAA,CAAA,CAAA;AAEzB,IAAI,IAAA,OAAO,cAAc,QAAU,EAAA;AACjC,MAAM,MAAA,IAAI,SAAU,CAAA,iCAAA,GAAoC,SAAS,CAAA,CAAA;AAAA,KACnE;AAEA,IAAA,IAAI,cAAc,EAAI,EAAA;AACpB,MAAA,SAAA;AAAA,KACF;AAEA,IAAA,IAAI,IAAI,CAAG,EAAA;AAET,MAAY,SAAA,GAAA,SAAA,CAAU,OAAQ,CAAA,QAAA,EAAU,EAAE,CAAA,CAAA;AAAA,KAC5C;AACA,IAAI,IAAA,CAAA,GAAI,QAAS,CAAA,MAAA,GAAS,CAAG,EAAA;AAE3B,MAAY,SAAA,GAAA,SAAA,CAAU,OAAQ,CAAA,QAAA,EAAU,EAAE,CAAA,CAAA;AAAA,KACrC,MAAA;AAEL,MAAY,SAAA,GAAA,SAAA,CAAU,OAAQ,CAAA,QAAA,EAAU,GAAG,CAAA,CAAA;AAAA,KAC7C;AAEA,IAAA,WAAA,CAAY,KAAK,SAAS,CAAA,CAAA;AAAA,GAC5B;AAEA,EAAI,IAAA,GAAA,GAAM,WAAY,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAI9B,EAAM,GAAA,GAAA,GAAA,CAAI,OAAQ,CAAA,iBAAA,EAAmB,IAAI,CAAA,CAAA;AAGzC,EAAM,MAAA,KAAA,GAAQ,GAAI,CAAA,KAAA,CAAM,GAAG,CAAA,CAAA;AAC3B,EAAM,GAAA,GAAA,KAAA,CAAM,KAAM,EAAA,IAAK,KAAM,CAAA,MAAA,GAAS,IAAI,GAAM,GAAA,EAAA,CAAA,GAAM,KAAM,CAAA,IAAA,CAAK,GAAG,CAAA,CAAA;AAEpE,EAAO,OAAA,GAAA,CAAA;AACT;;;;"}
|
package/src/shim/urljoin.test.ts
DELETED
package/src/shim/urljoin.ts
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
export function urljoin(...strArray: string[]): string;
|
|
2
|
-
export function urljoin(strArray: string[]): string;
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @see {@link https://github.com/jfromaniello/url-join}
|
|
6
|
-
*/
|
|
7
|
-
export function urljoin(...args: string[] | [string[]]): string {
|
|
8
|
-
if (Array.isArray(args[0])) {
|
|
9
|
-
return normalize(args[0]);
|
|
10
|
-
} else {
|
|
11
|
-
return normalize(args as any);
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
function normalize(strArray: string[]) {
|
|
16
|
-
const resultArray: string[] = [];
|
|
17
|
-
if (strArray.length === 0) {
|
|
18
|
-
return '';
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
if (typeof strArray[0] !== 'string') {
|
|
22
|
-
throw new TypeError('Url must be a string. Received ' + strArray[0]);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// If the first part is a plain protocol, we combine it with the next part.
|
|
26
|
-
if (strArray[0].match(/^[^/:]+:\/*$/) && strArray.length > 1) {
|
|
27
|
-
const first = strArray.shift();
|
|
28
|
-
strArray[0] = first + strArray[0];
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// There must be two or three slashes in the file protocol, two slashes in anything else.
|
|
32
|
-
if (strArray[0].match(/^file:\/\/\//)) {
|
|
33
|
-
strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1:///');
|
|
34
|
-
} else {
|
|
35
|
-
strArray[0] = strArray[0].replace(/^([^/:]+):\/*/, '$1://');
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
for (let i = 0; i < strArray.length; i++) {
|
|
39
|
-
let component = strArray[i];
|
|
40
|
-
|
|
41
|
-
if (typeof component !== 'string') {
|
|
42
|
-
throw new TypeError('Url must be a string. Received ' + component);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
if (component === '') {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
if (i > 0) {
|
|
50
|
-
// Removing the starting slashes for each component but the first.
|
|
51
|
-
component = component.replace(/^[\/]+/, '');
|
|
52
|
-
}
|
|
53
|
-
if (i < strArray.length - 1) {
|
|
54
|
-
// Removing the ending slashes for each component but the last.
|
|
55
|
-
component = component.replace(/[\/]+$/, '');
|
|
56
|
-
} else {
|
|
57
|
-
// For the last component we will combine multiple slashes to a single one.
|
|
58
|
-
component = component.replace(/[\/]+$/, '/');
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
resultArray.push(component);
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
let str = resultArray.join('/');
|
|
65
|
-
// Each input component is now separated by a single slash except the possible first plain protocol part.
|
|
66
|
-
|
|
67
|
-
// remove trailing slash before parameters or hash
|
|
68
|
-
str = str.replace(/\/(\?|&|#[^!])/g, '$1');
|
|
69
|
-
|
|
70
|
-
// replace ? in parameters with &
|
|
71
|
-
const parts = str.split('?');
|
|
72
|
-
str = parts.shift() + (parts.length > 0 ? '?' : '') + parts.join('&');
|
|
73
|
-
|
|
74
|
-
return str;
|
|
75
|
-
}
|