peryl 1.5.2 → 1.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -16
- package/demo/hsml-app-form-validation_demo.ts +22 -23
- package/demo/hsml-app-form_demo.ts +24 -20
- package/demo/hsml-app-test_demo.ts +35 -36
- package/demo/hsml-app-tictactoe_demo.ts +16 -15
- package/demo/hsml-app_demo.ts +20 -12
- package/demo/hsml-appel_demo.html +7 -0
- package/demo/hsml-appel_demo.ts +33 -25
- package/demo/hsml-appi_demo.ts +9 -9
- package/demo/hsml_demo.ts +27 -22
- package/demo/js/hsml-app-js-happi_demo.html +16 -8
- package/demo/js/hsml-app-js_demo.html +15 -15
- package/dist/browser-esmodule/encode.js.map +1 -1
- package/dist/browser-esmodule/hsml-app.js +67 -73
- package/dist/browser-esmodule/hsml-app.js.map +1 -1
- package/dist/browser-esmodule/hsml-convert.js.map +1 -1
- package/dist/browser-esmodule/hsml-dom.js +3 -3
- package/dist/browser-esmodule/hsml-dom.js.map +1 -1
- package/dist/browser-esmodule/hsml-h.js.map +1 -1
- package/dist/browser-esmodule/hsml-html.js +2 -2
- package/dist/browser-esmodule/hsml-html.js.map +1 -1
- package/dist/browser-esmodule/hsml-idom.js +5 -5
- package/dist/browser-esmodule/hsml-idom.js.map +1 -1
- package/dist/browser-esmodule/hsml.js.map +1 -1
- package/dist/browser-esmodule/http.js.map +1 -1
- package/dist/browser-esmodule/index.js +71 -77
- package/dist/browser-esmodule/index.js.map +1 -1
- package/dist/browser-esmodule/router.js.map +1 -1
- package/dist/browser-umd/encode.js +1 -1
- package/dist/browser-umd/encode.js.map +1 -1
- package/dist/browser-umd/hsml-app.js +1 -1
- package/dist/browser-umd/hsml-app.js.map +1 -1
- package/dist/browser-umd/hsml-convert.js.map +1 -1
- package/dist/browser-umd/hsml-dom.js +1 -1
- package/dist/browser-umd/hsml-dom.js.map +1 -1
- package/dist/browser-umd/hsml-h.js.map +1 -1
- package/dist/browser-umd/hsml-html.js +1 -1
- package/dist/browser-umd/hsml-html.js.map +1 -1
- package/dist/browser-umd/hsml-idom.js +1 -1
- package/dist/browser-umd/hsml-idom.js.map +1 -1
- package/dist/browser-umd/hsml.js.map +1 -1
- package/dist/browser-umd/http.js +1 -1
- package/dist/browser-umd/http.js.map +1 -1
- package/dist/browser-umd/index.js +1 -1
- package/dist/browser-umd/index.js.map +1 -1
- package/dist/browser-umd/router.js +1 -1
- package/dist/browser-umd/router.js.map +1 -1
- package/dist/browser-umd/validators-moment.js +1 -1
- package/dist/browser-umd/validators-moment.js.map +1 -1
- package/dist/browser-umd/validators-numeral.js.map +1 -1
- package/dist/demo/encode_demo.ce182166.js.map +1 -1
- package/dist/demo/encode_demo.f40a44eb.js.map +1 -1
- package/dist/demo/hsml-app-form-validation_demo.a9e2c583.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.a9e2c583.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.bb392ab0.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.bb392ab0.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.c6856b02.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.c6856b02.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.fdcc0b2d.js +2 -0
- package/dist/demo/hsml-app-form-validation_demo.fdcc0b2d.js.map +1 -0
- package/dist/demo/hsml-app-form-validation_demo.html +1 -1
- package/dist/demo/hsml-app-form_demo.e36ef1e9.js +2 -0
- package/dist/demo/hsml-app-form_demo.e36ef1e9.js.map +1 -0
- package/dist/demo/hsml-app-form_demo.fd22dfcf.js +2 -0
- package/dist/demo/hsml-app-form_demo.fd22dfcf.js.map +1 -0
- package/dist/demo/hsml-app-form_demo.html +1 -1
- package/dist/demo/hsml-app-test_demo.ba5f166c.js +2 -0
- package/dist/demo/hsml-app-test_demo.ba5f166c.js.map +1 -0
- package/dist/demo/hsml-app-test_demo.e8b5e4b2.js +2 -0
- package/dist/demo/hsml-app-test_demo.e8b5e4b2.js.map +1 -0
- package/dist/demo/hsml-app-test_demo.html +1 -1
- package/dist/demo/hsml-app-tictactoe_demo.03d8363f.js +2 -0
- package/dist/demo/hsml-app-tictactoe_demo.03d8363f.js.map +1 -0
- package/dist/demo/hsml-app-tictactoe_demo.399f8e69.js +2 -0
- package/dist/demo/hsml-app-tictactoe_demo.399f8e69.js.map +1 -0
- package/dist/demo/hsml-app-tictactoe_demo.html +1 -1
- package/dist/demo/hsml-app_demo.44aa1072.js +2 -0
- package/dist/demo/hsml-app_demo.44aa1072.js.map +1 -0
- package/dist/demo/hsml-app_demo.70ef3e7a.js +2 -0
- package/dist/demo/hsml-app_demo.70ef3e7a.js.map +1 -0
- package/dist/demo/hsml-app_demo.html +1 -1
- package/dist/demo/hsml-appel_demo.2a9f7f3f.js +2 -0
- package/dist/demo/hsml-appel_demo.2a9f7f3f.js.map +1 -0
- package/dist/demo/hsml-appel_demo.bea7849a.js +2 -0
- package/dist/demo/hsml-appel_demo.bea7849a.js.map +1 -0
- package/dist/demo/hsml-appel_demo.html +1 -1
- package/dist/demo/hsml-appi_demo.3dc5de90.js +2 -0
- package/dist/demo/hsml-appi_demo.3dc5de90.js.map +1 -0
- package/dist/demo/hsml-appi_demo.bfc7056a.js +2 -0
- package/dist/demo/hsml-appi_demo.bfc7056a.js.map +1 -0
- package/dist/demo/hsml-appi_demo.html +1 -1
- package/dist/demo/hsml-convert_demo.0ea1fa3b.js.map +1 -1
- package/dist/demo/hsml-convert_demo.63e3e7b5.js.map +1 -1
- package/dist/demo/{hsml_demo.ff950ba1.js → hsml_demo.a248689a.js} +2 -2
- package/dist/demo/hsml_demo.a248689a.js.map +1 -0
- package/dist/demo/hsml_demo.eb3b08be.js +2 -0
- package/dist/demo/hsml_demo.eb3b08be.js.map +1 -0
- package/dist/demo/hsml_demo.html +1 -1
- package/dist/demo/http_demo.3e7da3d8.js.map +1 -1
- package/dist/demo/http_demo.8e435f23.js.map +1 -1
- package/dist/demo/i18n_demo.html +1 -1
- package/dist/demo/router_demo.3cfa03aa.js.map +1 -1
- package/dist/demo/router_demo.89ab1681.js.map +1 -1
- package/dist/demo/{validators_demo.252e13a6.js → validators_demo.90ff6001.js} +2 -2
- package/dist/demo/validators_demo.90ff6001.js.map +1 -0
- package/dist/demo/{validators_demo.66893723.js → validators_demo.ef5b2dea.js} +2 -2
- package/dist/demo/validators_demo.ef5b2dea.js.map +1 -0
- package/dist/demo/validators_demo.html +1 -1
- package/dist/encode.js +1 -1
- package/dist/encode.js.map +1 -1
- package/dist/hsml-app.d.ts +38 -37
- package/dist/hsml-app.js +60 -62
- package/dist/hsml-app.js.map +1 -1
- package/dist/hsml-convert.d.ts +3 -3
- package/dist/hsml-convert.js.map +1 -1
- package/dist/hsml-dom.d.ts +2 -2
- package/dist/hsml-dom.js +3 -3
- package/dist/hsml-dom.js.map +1 -1
- package/dist/hsml-h.d.ts +8 -8
- package/dist/hsml-h.js.map +1 -1
- package/dist/hsml-html.d.ts +4 -4
- package/dist/hsml-html.js +2 -2
- package/dist/hsml-html.js.map +1 -1
- package/dist/hsml-idom.d.ts +2 -2
- package/dist/hsml-idom.js +5 -5
- package/dist/hsml-idom.js.map +1 -1
- package/dist/hsml.d.ts +26 -27
- package/dist/hsml.js.map +1 -1
- package/dist/http.js +1 -1
- package/dist/http.js.map +1 -1
- package/dist/router.js +1 -1
- package/dist/router.js.map +1 -1
- package/package.json +8 -8
- package/src/hsml-app.ts +209 -144
- package/src/hsml-convert.ts +8 -8
- package/src/hsml-dom.ts +18 -18
- package/src/hsml-h.ts +10 -10
- package/src/hsml-html.ts +19 -19
- package/src/hsml-idom.ts +25 -25
- package/src/hsml.ts +46 -143
- package/demo/hsml-appc_demo.html +0 -16
- package/demo/hsml-appc_demo.ts +0 -49
- package/dist/demo/hsml-app-form-validation_demo.0b03b743.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.0b03b743.js.map +0 -1
- package/dist/demo/hsml-app-form-validation_demo.b3a5c810.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.b3a5c810.js.map +0 -1
- package/dist/demo/hsml-app-form-validation_demo.d3925067.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.d3925067.js.map +0 -1
- package/dist/demo/hsml-app-form-validation_demo.f757d763.js +0 -2
- package/dist/demo/hsml-app-form-validation_demo.f757d763.js.map +0 -1
- package/dist/demo/hsml-app-form_demo.007ffcaa.js +0 -2
- package/dist/demo/hsml-app-form_demo.007ffcaa.js.map +0 -1
- package/dist/demo/hsml-app-form_demo.a034239d.js +0 -2
- package/dist/demo/hsml-app-form_demo.a034239d.js.map +0 -1
- package/dist/demo/hsml-app-test_demo.35c14dc9.js +0 -2
- package/dist/demo/hsml-app-test_demo.35c14dc9.js.map +0 -1
- package/dist/demo/hsml-app-test_demo.3c7e16ae.js +0 -2
- package/dist/demo/hsml-app-test_demo.3c7e16ae.js.map +0 -1
- package/dist/demo/hsml-app-tictactoe_demo.5f4861c1.js +0 -2
- package/dist/demo/hsml-app-tictactoe_demo.5f4861c1.js.map +0 -1
- package/dist/demo/hsml-app-tictactoe_demo.7deeabad.js +0 -2
- package/dist/demo/hsml-app-tictactoe_demo.7deeabad.js.map +0 -1
- package/dist/demo/hsml-app_demo.87d83c29.js +0 -2
- package/dist/demo/hsml-app_demo.87d83c29.js.map +0 -1
- package/dist/demo/hsml-app_demo.941a13a6.js +0 -2
- package/dist/demo/hsml-app_demo.941a13a6.js.map +0 -1
- package/dist/demo/hsml-appc_demo.0234ff15.js +0 -2
- package/dist/demo/hsml-appc_demo.0234ff15.js.map +0 -1
- package/dist/demo/hsml-appc_demo.f5783031.js +0 -2
- package/dist/demo/hsml-appc_demo.f5783031.js.map +0 -1
- package/dist/demo/hsml-appc_demo.html +0 -1
- package/dist/demo/hsml-appel_demo.0e8a4d4c.js +0 -2
- package/dist/demo/hsml-appel_demo.0e8a4d4c.js.map +0 -1
- package/dist/demo/hsml-appel_demo.1a5c2c26.js +0 -2
- package/dist/demo/hsml-appel_demo.1a5c2c26.js.map +0 -1
- package/dist/demo/hsml-appi_demo.2c3fb511.js +0 -2
- package/dist/demo/hsml-appi_demo.2c3fb511.js.map +0 -1
- package/dist/demo/hsml-appi_demo.427fdebd.js +0 -2
- package/dist/demo/hsml-appi_demo.427fdebd.js.map +0 -1
- package/dist/demo/hsml_demo.33f28c29.js +0 -2
- package/dist/demo/hsml_demo.33f28c29.js.map +0 -1
- package/dist/demo/hsml_demo.ff950ba1.js.map +0 -1
- package/dist/demo/validators_demo.252e13a6.js.map +0 -1
- package/dist/demo/validators_demo.66893723.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hsml.js","mappings":"CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,EACvE,CACA,CATD,CASGC,MAAM,WACT,O,yIC6Ha,EAAAC,KAAO,KAEpB,gBAAgBC,EAA4BC,EACAC,EACAC,GAExC,GAAIF,QAGJ,OAAQA,EAAIG,aACR,KAAKC,OAwDT,SAAiBC,EAAcJ,EAAsBC,G,MAGjD,GAAyB,iBAAdG,EAAO,GAEd,YADAC,QAAQC,MAAM,4BAA6BF,GAI/C,MAAMG,EAAOH,EAAO,GACdI,EAAWJ,EAAO,GAClBK,EAAWD,GAAYA,EAASN,cAAgBQ,OAGtD,IACIC,EACAC,EAFAC,EAAsB,GAI1B,MAAMC,EAAMV,EANKK,EAAW,EAAI,GAOhC,OAAe,MAAPK,GAAeA,EAAIZ,aACvB,KAAKC,MACDU,EAAWC,EACX,MACJ,KAAKC,SACDJ,EAAOG,EACP,MACJ,KAAKE,OACL,KAAKC,QACL,KAAKC,OACL,KAAKC,KACDN,EAAW,CAACC,GACZ,MACJ,QACIF,EAAOE,EAIf,MAAMM,EAAWb,EAAKc,MAAM,KACtBC,EAAMF,EAAS,GACfG,EAAWH,EAAS,GAAGC,MAAM,KAC7BG,EAAYD,EAAS,GAAGF,MAAM,KAC9BI,EAAmB,QAAZ,EAAAD,EAAU,UAAE,QAAI,MACvBE,EAAKF,EAAU,GACfG,EAAUJ,EAASK,MAAM,GAE/B,IAAIC,EAEAA,EADApB,EACQD,EAEA,CAAC,EAGTkB,IACCG,EAAcC,IAAMJ,GAErBC,EAAQI,SACPF,EAAcG,SAAWL,GAE1BL,IACCO,EAAcI,KAAOX,GAEtBV,IACCiB,EAAcK,MAAQtB,GAG3B,MAAMuB,EAAOnC,EAAQoC,KAAKX,EAAKI,EAAOhB,EAAUZ,GAE5CU,GACAX,EAAQqC,IAAI1B,EAAMV,GAGjBkC,GACDtB,EAASyB,SAAQC,GAAOzC,EAAKyC,EAAKvC,EAASC,KAG/CD,EAAQwC,MAAMf,EAAKZ,EAAUZ,EACjC,CApGQwC,CAAQ1C,EAAaC,EAASC,GAC9B,MACJ,KAAKc,SACDf,EAAQqC,IAAItC,EAAaE,GACzB,MACJ,KAAKe,OACDhB,EAAQ0C,KAAK3C,EAAeE,GAC5B,MACJ,KAAKgB,QACDjB,EAAQ0C,KAAK,GAAK3C,EAAKE,GACvB,MACJ,KAAKiB,OACD,MAAMyB,EAAI5C,EACJ6C,EAAKD,EAAEE,eAAiBF,EAAEE,iBAAmBF,EAAEG,WACrD9C,EAAQ0C,KAAKE,EAAI3C,GACjB,MACJ,KAAKkB,KACD,MAAM4B,EAAIhD,EACJiD,EAAKD,EAAEF,eAAiBE,EAAEF,iBAAmBE,EAAED,WACrD9C,EAAQ0C,KAAKM,EAAI/C,GACjB,MACJ,QACID,EAAQiD,IAAIlD,EAAaE,GA+ErC,EAEA,iBAAsBiD,EAAkBC,GACpC,MAAMC,EAAIF,EAAMG,QACZ,CAACC,EAAGC,KAAOD,EAAEE,KAAKD,EAAGJ,GAAMG,IAC3B,IAGJ,OADAF,EAAEK,QAAQ,GACHL,CACX,C","sources":["webpack://peryl/webpack/universalModuleDefinition","webpack://peryl/./src/hsml.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","// HSML tag head format \"tag#id.class1.class2~handler\"\n\nexport type HTagHeadName = keyof HTMLElementTagNameMap;\nexport type HTagHeadAttr = \".\" | \"#\" | \"~\";\n\nexport type HTagHead<T extends string = string> = `${HTagHeadName}` | `${HTagHeadName}${HTagHeadAttr}${T}`;\n\nexport type HAttrClasses = Array<string | [string, boolean]>;\n\nexport type HAttrStyles = { [key: string]: string };\n\nexport type HAttrData = {\n [key: string]:\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object;\n};\n\nexport type HAttrOnAction = string;\n\nexport type HAttrOnDataFnc = (e: Event) => any;\n\nexport type HAttrOnData =\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object\n | HAttrOnDataFnc\n | null;\n\nexport type HAttrOnCb = [keyof HTMLElementEventMap, EventListener];\n\nexport type HAttrOnAct = [\n keyof HTMLElementEventMap | string,\n HAttrOnAction,\n HAttrOnData?\n];\n\nexport type HAttrOn = HAttrOnCb | HAttrOnAct | Array<HAttrOnCb | HAttrOnAct>;\n\nexport interface HTagAttrs {\n readonly _id?: string;\n readonly _classes?: string[];\n readonly _ref?: string;\n readonly _key?: string;\n readonly _skip?: boolean;\n readonly _hObj?: HObj;\n readonly classes?: HAttrClasses;\n readonly styles?: HAttrStyles;\n readonly data?: HAttrData;\n readonly on?: HAttrOn;\n readonly [key: string]:\n | string\n | String\n | string[]\n | String[]\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | HAttrClasses\n | HAttrStyles\n // | HsmlAttrData\n | HAttrOn\n | EventListener\n | HObj\n | undefined;\n}\n\nexport type HFnc = (e: Element) => boolean | void;\n\nexport interface HObj {\n toHsml?(): HElement;\n}\n\nexport interface HElements extends Array<HElement> {}\n\nexport type HTagChildren =\n | HElements\n | HFnc\n | HObj\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport type HTagNoAttr = [HTagHead, HTagChildren?];\nexport type HTagWithAttr = [HTagHead, HTagAttrs, HTagChildren?];\n\nexport type HTag = HTagNoAttr | HTagWithAttr;\n\nexport type HElement =\n | HFnc\n | HObj\n | HTag\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport interface HHandlerCtx extends HObj {\n refs: { [name: string]: Element };\n actionCb(action: HAttrOnAction, data: HAttrOnData, e: Event): void;\n}\n\nexport interface HHandler<C extends HHandlerCtx> {\n open(tag: HTagHeadName, attrs: HTagAttrs, children: HElements, ctx?: C): boolean;\n close(tag: HTagHeadName, children: HElements, ctx?: C): void;\n text(text: string, ctx?: C): void;\n fnc(fnc: HFnc, ctx?: C): void;\n obj(obj: HObj, ctx?: C): void;\n}\n\nexport const NBSP = \"\\u00a0 \";\n\nexport function hsml<C extends HHandlerCtx>(hml: HElement,\n handler: HHandler<C>,\n ctx?: C): void {\n // console.log(\"hsml\", hsml);\n if (hml === undefined || hml === null) {\n return;\n }\n switch (hml.constructor) {\n case Array:\n // const tag = hml as HTag;\n // if (\n // (\n // tag.length === 1 &&\n // tag[0].constructor === String\n // ) ||\n // (\n // tag.length === 2 &&\n // (\n // tag[0].constructor === String &&\n // (tag[1]!.constructor === Array || tag[1]!.constructor === Function)\n // ) ||\n // (\n // tag[0].constructor === String &&\n // tag[1]!.constructor === Object\n // )\n // ) ||\n // (\n // tag.length === 3 &&\n // tag[0].constructor === String &&\n // tag[1].constructor === Object &&\n // tag[2]!.constructor === Array\n // )\n // ) {\n // hsmlTag(hml as HTag, handler, ctx);\n // } else {\n // console.error(\"hsml parse error:\", hml);\n // // console.error(\"hsml parse error:\", JSON.stringify(hml, null, 4));\n // // throw Error(`hsml parse error: ${JSON.stringify(hml)}`);\n // }\n hsmlTag(hml as HTag, handler, ctx);\n break;\n case Function:\n handler.fnc(hml as HFnc, ctx);\n break;\n case String:\n handler.text(hml as string, ctx);\n break;\n case Boolean:\n handler.text(\"\" + hml, ctx);\n break;\n case Number:\n const n = hml as number;\n const ns = n.toLocaleString ? n.toLocaleString() : n.toString();\n handler.text(ns, ctx);\n break;\n case Date:\n const d = hml as Date;\n const ds = d.toLocaleString ? d.toLocaleString() : d.toString();\n handler.text(ds, ctx);\n break;\n default: // HObj\n handler.obj(hml as HObj, ctx);\n }\n\n function hsmlTag(hmlTag: HTag, handler: HHandler<C>, ctx?: C): void {\n // console.log(\"hsml tag\", hmlTag);\n\n if (typeof hmlTag[0] !== \"string\") {\n console.error(\"HSML tag head not string:\", hmlTag);\n return;\n }\n\n const head = hmlTag[0] as HTagHead;\n const attrsObj = hmlTag[1] as any;\n const hasAttrs = attrsObj && attrsObj.constructor === Object;\n const childIdx = hasAttrs ? 2 : 1;\n\n let children: HElements = [];\n let hFnc: HFnc | undefined;\n let hObj: HObj | undefined;\n\n const htc = hmlTag[childIdx];\n switch (htc != null && htc.constructor) { // switch ((typeof htc !== \"undefined\" || htc !== null) && htc.constructor) {\n case Array:\n children = htc as HElements;\n break;\n case Function:\n hFnc = htc as HFnc;\n break;\n case String:\n case Boolean:\n case Number:\n case Date:\n children = [htc as string | boolean | number | Date];\n break;\n default: // HObj\n hObj = htc as HObj;\n break;\n }\n\n const refSplit = head.split(\"~\");\n const ref = refSplit[1];\n const dotSplit = refSplit[0].split(\".\");\n const hashSplit = dotSplit[0].split(\"#\");\n const tag = (hashSplit[0] ?? \"div\") as HTagHeadName;\n const id = hashSplit[1];\n const classes = dotSplit.slice(1);\n\n let attrs: HTagAttrs;\n if (hasAttrs) {\n attrs = attrsObj as HTagAttrs;\n } else {\n attrs = {} as HTagAttrs;\n }\n\n if (id) {\n (attrs as any)._id = id;\n }\n if (classes.length) {\n (attrs as any)._classes = classes;\n }\n if (ref) {\n (attrs as any)._ref = ref;\n }\n if (hObj) {\n (attrs as any)._hObj = hObj;\n }\n\n const skip = handler.open(tag, attrs, children, ctx);\n\n if (hFnc) {\n handler.fnc(hFnc, ctx);\n }\n\n if (!skip) {\n children.forEach(jml => hsml(jml, handler, ctx));\n }\n\n handler.close(tag, children, ctx);\n }\n}\n\nexport function hjoin(hsmls: HElements, sep: string | HElement): HElements {\n const r = hsmls.reduce<HElements>(\n (p, c) => (p.push(c, sep), p),\n [] as HElements\n );\n r.splice(-1);\n return r;\n}\n\n// Test\n\n// const hsmls: Hsmls = [\n// \"text\",\n// [\"tag\", [\n// \"d\",\n// [\"\"]\n// ]],\n// [\"taga\", { attr: \"attr\", classes: [\"class\"] }, [\n// \"text\",\n// 123,\n// true\n// ]]\n// ];\n\n// const hml: Hsml = [\"xxx\", {}, [\n// \"types\", \" \", 1235.456, \" \", new Date(), \" \",\n// ...hsmls,\n// [\"t\", [\"t\", \"a\", \"\"]],\n// [\"t\", {}, [\"t\", \"a\", \"\"]],\n// [\"t\"]\n// ]];\n\n// console.log(hsmls, hml);\n\n// const hml1: Hsml = [\"div\", null, [\n// [\"span\", null, [\n// [\"a\",\n// {\n// href: \"https://gitlab.com/peter-rybar/diasheet\",\n// title: \"GitLab\",\n// target: \"_blank\"\n// },\n// [[\"i.fa.fa-gitlab\"]]\n// ]\n// ]],\n// [\"span\"]\n// ]];\n// console.log(hml1);\n\n// const hml2: Hsml = [\"div\", [\n// [\"h2\", [\"title\"]],\n// [\"div.w3-card-12\", [\n// [\"header.w3-container w3-light-grey\", [\n// [\"h3\", [\"Account: \", \"User\"]]\n// ]],\n// [\"div.w3-container.w3-light-grey\", [\n// [\"p\", [\"Balance: 4 DCT\"]],\n// [\"br\"]\n// ]],\n// [\"h4\", [\"Your account spending\"]],\n// [\"div#piechart\"],\n// [\"h4\", [\"Your account balance\"]],\n// [\"div#linechart\"],\n// [\"button.w3-button.w3-block.w3-dark-grey\", [\"Refresh\"]]\n// ]],\n// [\"br\"]\n// ]];\n// console.log(hml2);\n\n// TEST\n\n// import { hsmls2htmls } from \"./hsml-html\";\n// import { HDispatch } from \"./hsml-app\";\n\n// const dispatch: HDispatch = (type: string, data?: any, event?: Event): void => {\n// console.log(\"action:\", type, data, event);\n// };\n\n// const data = { attr: \"action-data\" };\n\n// const hmls: HElements = [\n// [\"button\", { on: [\"click\", \"action\", data] }, \"send\"],\n// [\"h1\", \"aaa\"],\n// [\"input\",\n// {\n// type: \"text\",\n// on: [\n// [\"mouseover\", \"hover-action\", data],\n// [\"change\", \"click-action\", e => (e.target as HTMLInputElement).value],\n// [\"click\", e => dispatch(\"action\", data, e)],\n// ],\n// click: e => dispatch(\"action\", data, e)\n// }\n// ],\n// [\"button\",\n// {\n// on: [\"click\", e => dispatch(\"action\", data, e)],\n// click: e => dispatch(\"action\", data, e)\n// },\n// [\"Send\"]\n// ]\n// ];\n\n// console.log(hsmls2htmls(hmls, true).join(\"\"));\n"],"names":["root","factory","exports","module","define","amd","a","i","self","NBSP","hsml","hml","handler","ctx","constructor","Array","hmlTag","console","error","head","attrsObj","hasAttrs","Object","hFnc","hObj","children","htc","Function","String","Boolean","Number","Date","refSplit","split","ref","dotSplit","hashSplit","tag","id","classes","slice","attrs","_id","length","_classes","_ref","_hObj","skip","open","fnc","forEach","jml","close","hsmlTag","text","n","ns","toLocaleString","toString","d","ds","obj","hsmls","sep","r","reduce","p","c","push","splice"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"hsml.js","mappings":"CAAA,SAA2CA,EAAMC,GAChD,GAAsB,iBAAZC,SAA0C,iBAAXC,OACxCA,OAAOD,QAAUD,SACb,GAAqB,mBAAXG,QAAyBA,OAAOC,IAC9CD,OAAO,GAAIH,OACP,CACJ,IAAIK,EAAIL,IACR,IAAI,IAAIM,KAAKD,GAAuB,iBAAZJ,QAAuBA,QAAUF,GAAMO,GAAKD,EAAEC,EACvE,CACA,CATD,CASGC,MAAM,WACT,O,yIC2Ha,EAAAC,KAAO,KAEpB,gBAAgBC,EACRC,EACAC,EACAC,GAEJ,GAAIF,QAGJ,OAAQA,EAAIG,aACR,KAAKC,OAwDT,SAAiBC,EAA8BJ,EAAsCC,G,MAGjF,GAAyB,iBAAdG,EAAO,GAEd,YADAC,QAAQC,MAAM,4BAA6BF,GAI/C,MAAMG,EAAOH,EAAO,GACdI,EAAWJ,EAAO,GAClBK,EAAWD,GAAYA,EAASN,cAAgBQ,OAGtD,IACIC,EACAC,EAFAC,EAAsC,GAI1C,MAAMC,EAAMV,EANKK,EAAW,EAAI,GAOhC,OAAe,MAAPK,GAAeA,EAAIZ,aACvB,KAAKC,MACDU,EAAWC,EACX,MACJ,KAAKC,SACDJ,EAAOG,EACP,MACJ,KAAKE,OACL,KAAKC,QACL,KAAKC,OACL,KAAKC,KACDN,EAAW,CAACC,GACZ,MACJ,QACIF,EAAOE,EAIf,MAAMM,EAAWb,EAAKc,MAAM,KACtBC,EAAMF,EAAS,GACfG,EAAWH,EAAS,GAAGC,MAAM,KAC7BG,EAAYD,EAAS,GAAGF,MAAM,KAC9BI,EAAmB,QAAZ,EAAAD,EAAU,UAAE,QAAI,MACvBE,EAAKF,EAAU,GACfG,EAAUJ,EAASK,MAAM,GAE/B,IAAIC,EAEAA,EADApB,EACQD,EAEA,CAAC,EAGTkB,IACCG,EAAcC,IAAMJ,GAErBC,EAAQI,SACPF,EAAcG,SAAWL,GAE1BL,IACCO,EAAcI,KAAOX,GAEtBV,IACCiB,EAAcK,MAAQtB,GAG3B,MAAMuB,EAAOnC,EAAQoC,KAAKX,EAAKI,EAAOhB,EAAUZ,GAE5CU,GACAX,EAAQqC,IAAI1B,EAAMV,GAGjBkC,GACDtB,EAASyB,SAAQC,GAAOzC,EAAKyC,EAAKvC,EAASC,KAG/CD,EAAQwC,MAAMf,EAAKZ,EAAUZ,EACjC,CApGQwC,CAAQ1C,EAA6BC,EAASC,GAC9C,MACJ,KAAKc,SACDf,EAAQqC,IAAItC,EAAaE,GACzB,MACJ,KAAKe,OACDhB,EAAQ0C,KAAK3C,EAAeE,GAC5B,MACJ,KAAKgB,QACDjB,EAAQ0C,KAAK,GAAK3C,EAAKE,GACvB,MACJ,KAAKiB,OACD,MAAMyB,EAAI5C,EACJ6C,EAAKD,EAAEE,eAAiBF,EAAEE,iBAAmBF,EAAEG,WACrD9C,EAAQ0C,KAAKE,EAAI3C,GACjB,MACJ,KAAKkB,KACD,MAAM4B,EAAIhD,EACJiD,EAAKD,EAAEF,eAAiBE,EAAEF,iBAAmBE,EAAED,WACrD9C,EAAQ0C,KAAKM,EAAI/C,GACjB,MACJ,QACID,EAAQiD,IAAIlD,EAA6BE,GA+ErD,EAEA,iBAAqDiD,EAAkCC,GACnF,MAAMC,EAAIF,EAAMG,QACZ,CAACC,EAAGC,KAAOD,EAAEE,KAAKD,EAAGJ,GAAMG,IAC3B,IAGJ,OADAF,EAAEK,QAAQ,GACHL,CACX,C","sources":["webpack://peryl/webpack/universalModuleDefinition","webpack://peryl/./src/hsml.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","// HSML tag head format \"tag#id.class1.class2~handler\"\n\nexport type HTagHeadName = keyof HTMLElementTagNameMap | `${string}${\"-\"}${string}`;\nexport type HTagHeadAttr = \".\" | \"#\" | \"~\";\n\nexport type HTagHead<T extends string = string> = `${HTagHeadName}` | `${HTagHeadName}${HTagHeadAttr}${T}`;\n\nexport type HAttrClasses = Array<string | [string, boolean]>;\n\nexport type HAttrStyles = { [key: string]: string };\n\nexport type HAttrData = {\n [key: string]:\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object;\n};\n\nexport type HAttrOnDataFnc = (e: Event) => any;\n\nexport type HAttrOnData =\n | string\n | String\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | Array<any>\n | Object\n | HAttrOnDataFnc\n | null;\n\nexport type HAttrOnCb = [keyof HTMLElementEventMap, EventListener];\n\nexport type HAttrOnAct<HAttrOnActType extends string> = [\n keyof HTMLElementEventMap | string,\n HAttrOnActType,\n HAttrOnData?\n];\n\nexport type HAttrOn<HAttrOnActType extends string> = HAttrOnCb | HAttrOnAct<HAttrOnActType> | Array<HAttrOnCb | HAttrOnAct<HAttrOnActType>>;\n\nexport interface HTagAttrs<HAttrOnActType extends string> {\n readonly _id?: string;\n readonly _classes?: string[];\n readonly _ref?: string;\n readonly _hObj?: HObj<HAttrOnActType>;\n readonly key?: string;\n readonly skip?: boolean;\n readonly classes?: HAttrClasses;\n readonly styles?: HAttrStyles;\n readonly data?: HAttrData;\n readonly on?: HAttrOn<HAttrOnActType>;\n readonly [key: string]:\n | string\n | String\n | string[]\n | String[]\n | number\n | Number\n | boolean\n | Boolean\n | Date\n | HAttrClasses\n | HAttrStyles\n // | HsmlAttrData\n | HAttrOn<HAttrOnActType>\n | EventListener\n | HObj<HAttrOnActType>\n | undefined;\n}\n\nexport type HFnc = (e: Element) => boolean | void;\n\nexport interface HObj<HAttrOnActType extends string> {\n toHsml?(): HElement<HAttrOnActType>;\n}\n\nexport interface HElements<HAttrOnActType extends string> extends Array<HElement<HAttrOnActType>> {}\n\nexport type HTagChildren<HAttrOnActType extends string> =\n | HElements<HAttrOnActType>\n | HFnc\n | HObj<HAttrOnActType>\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport type HTagNoAttr<HAttrOnActType extends string> = [HTagHead, HTagChildren<HAttrOnActType>?];\nexport type HTagWithAttr<HAttrOnActType extends string> = [HTagHead, HTagAttrs<HAttrOnActType>, HTagChildren<HAttrOnActType>?];\n\nexport type HTag<HAttrOnActType extends string> = HTagNoAttr<HAttrOnActType> | HTagWithAttr<HAttrOnActType>;\n\nexport type HElement<HAttrOnActType extends string> =\n | HFnc\n | HObj<HAttrOnActType>\n | HTag<HAttrOnActType>\n | string\n | String\n | boolean\n | Boolean\n | number\n | Number\n | Date\n | undefined\n | null;\n\nexport interface HHandlerCtx<HAttrOnActType extends string> extends HObj<HAttrOnActType> {\n refs: { [name: string]: Element };\n actionCb(action: HAttrOnActType, data: HAttrOnData, e: Event): void;\n}\n\nexport interface HHandler<HAttrOnActType extends string, C extends HHandlerCtx<HAttrOnActType>> {\n open(tag: HTagHeadName, attrs: HTagAttrs<HAttrOnActType>, children: HElements<HAttrOnActType>, ctx?: C): boolean;\n close(tag: HTagHeadName, children: HElements<HAttrOnActType>, ctx?: C): void;\n text(text: string, ctx?: C): void;\n fnc(fnc: HFnc, ctx?: C): void;\n obj(obj: HObj<HAttrOnActType>, ctx?: C): void;\n}\n\nexport const NBSP = \"\\u00a0 \";\n\nexport function hsml<HAttrOnActType extends string, C extends HHandlerCtx<HAttrOnActType>>(\n hml: HElement<HAttrOnActType>,\n handler: HHandler<HAttrOnActType, C>,\n ctx?: C): void {\n // console.log(\"hsml\", hsml);\n if (hml === undefined || hml === null) {\n return;\n }\n switch (hml.constructor) {\n case Array:\n // const tag = hml as HTag;\n // if (\n // (\n // tag.length === 1 &&\n // tag[0].constructor === String\n // ) ||\n // (\n // tag.length === 2 &&\n // (\n // tag[0].constructor === String &&\n // (tag[1]!.constructor === Array || tag[1]!.constructor === Function)\n // ) ||\n // (\n // tag[0].constructor === String &&\n // tag[1]!.constructor === Object\n // )\n // ) ||\n // (\n // tag.length === 3 &&\n // tag[0].constructor === String &&\n // tag[1].constructor === Object &&\n // tag[2]!.constructor === Array\n // )\n // ) {\n // hsmlTag(hml as HTag, handler, ctx);\n // } else {\n // console.error(\"hsml parse error:\", hml);\n // // console.error(\"hsml parse error:\", JSON.stringify(hml, null, 4));\n // // throw Error(`hsml parse error: ${JSON.stringify(hml)}`);\n // }\n hsmlTag(hml as HTag<HAttrOnActType>, handler, ctx);\n break;\n case Function:\n handler.fnc(hml as HFnc, ctx);\n break;\n case String:\n handler.text(hml as string, ctx);\n break;\n case Boolean:\n handler.text(\"\" + hml, ctx);\n break;\n case Number:\n const n = hml as number;\n const ns = n.toLocaleString ? n.toLocaleString() : n.toString();\n handler.text(ns, ctx);\n break;\n case Date:\n const d = hml as Date;\n const ds = d.toLocaleString ? d.toLocaleString() : d.toString();\n handler.text(ds, ctx);\n break;\n default: // HObj\n handler.obj(hml as HObj<HAttrOnActType>, ctx);\n }\n\n function hsmlTag(hmlTag: HTag<HAttrOnActType>, handler: HHandler<HAttrOnActType, C>, ctx?: C): void {\n // console.log(\"hsml tag\", hmlTag);\n\n if (typeof hmlTag[0] !== \"string\") {\n console.error(\"HSML tag head not string:\", hmlTag);\n return;\n }\n\n const head = hmlTag[0] as HTagHead;\n const attrsObj = hmlTag[1] as any;\n const hasAttrs = attrsObj && attrsObj.constructor === Object;\n const childIdx = hasAttrs ? 2 : 1;\n\n let children: HElements<HAttrOnActType> = [];\n let hFnc: HFnc | undefined;\n let hObj: HObj<HAttrOnActType> | undefined;\n\n const htc = hmlTag[childIdx];\n switch (htc != null && htc.constructor) { // switch ((typeof htc !== \"undefined\" || htc !== null) && htc.constructor) {\n case Array:\n children = htc as HElements<HAttrOnActType>;\n break;\n case Function:\n hFnc = htc as HFnc;\n break;\n case String:\n case Boolean:\n case Number:\n case Date:\n children = [htc as string | boolean | number | Date];\n break;\n default: // HObj\n hObj = htc as HObj<HAttrOnActType>;\n break;\n }\n\n const refSplit = head.split(\"~\");\n const ref = refSplit[1];\n const dotSplit = refSplit[0].split(\".\");\n const hashSplit = dotSplit[0].split(\"#\");\n const tag = (hashSplit[0] ?? \"div\") as HTagHeadName;\n const id = hashSplit[1];\n const classes = dotSplit.slice(1);\n\n let attrs: HTagAttrs<HAttrOnActType>;\n if (hasAttrs) {\n attrs = attrsObj as HTagAttrs<HAttrOnActType>;\n } else {\n attrs = {} as HTagAttrs<HAttrOnActType>;\n }\n\n if (id) {\n (attrs as any)._id = id;\n }\n if (classes.length) {\n (attrs as any)._classes = classes;\n }\n if (ref) {\n (attrs as any)._ref = ref;\n }\n if (hObj) {\n (attrs as any)._hObj = hObj;\n }\n\n const skip = handler.open(tag, attrs, children, ctx);\n\n if (hFnc) {\n handler.fnc(hFnc, ctx);\n }\n\n if (!skip) {\n children.forEach(jml => hsml(jml, handler, ctx));\n }\n\n handler.close(tag, children, ctx);\n }\n}\n\nexport function hjoin<HAttrOnActType extends string>(hsmls: HElements<HAttrOnActType>, sep: string | HElement<HAttrOnActType>): HElements<HAttrOnActType> {\n const r = hsmls.reduce<HElements<HAttrOnActType>>(\n (p, c) => (p.push(c, sep), p),\n [] as HElements<HAttrOnActType>\n );\n r.splice(-1);\n return r;\n}\n"],"names":["root","factory","exports","module","define","amd","a","i","self","NBSP","hsml","hml","handler","ctx","constructor","Array","hmlTag","console","error","head","attrsObj","hasAttrs","Object","hFnc","hObj","children","htc","Function","String","Boolean","Number","Date","refSplit","split","ref","dotSplit","hashSplit","tag","id","classes","slice","attrs","_id","length","_classes","_ref","_hObj","skip","open","fnc","forEach","jml","close","hsmlTag","text","n","ns","toLocaleString","toString","d","ds","obj","hsmls","sep","r","reduce","p","c","push","splice"],"sourceRoot":""}
|
package/dist/browser-umd/http.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var s in r)("object"==typeof exports?exports:t)[s]=r[s]}}(self,(function(){return function(){"use strict";var t={};return function(){var e=t;function r(t){const e=[];for(const s in t)if(t.hasOwnProperty(s)){const o=t[s];if("object"==typeof o)if(r=o,Array.isArray?Array.isArray(r):null!=r&&void 0!==r&&-1==="boolean|number|string|function|xml".indexOf(typeof r)&&"number"==typeof r.length&&!r.propertyIsEnumerable("length"))for(const t of o)e.push([s,"object"==typeof t?JSON.stringify(t):t]);else e.push([s,JSON.stringify(o)]);else e.push([s,o])}var r;for(let t,r=0;t=e[r++];)e[r-1]=`${encodeURIComponent(t[0])}=${encodeURIComponent(t[1])}`;return e.join("&")}Object.defineProperty(e,"__esModule",{value:!0}),e.http=e.httpOnError=e.httpOnResponse=e.httpOnRequest=e.httpDelete=e.httpPatch=e.httpPut=e.httpPost=e.httpGet=e.HttpRequest=e.authJwt=e.authBasic=e.HttpResponse=e.encodeUrlQuery=e.decodeUrlQuery=void 0,e.decodeUrlQuery=function(t){var e;const r={};if(t){const s=t.substr(1).split("&");for(const t of s){const s=t.split("=");r[decodeURIComponent(s[0])]=decodeURIComponent(null!==(e=s[1])&&void 0!==e?e:"")}}return r},e.encodeUrlQuery=r;class s{constructor(t){this._xhr=t}getHeaders(){return this._xhr.getAllResponseHeaders()}getHeader(t){return this._xhr.getResponseHeader(t)}getBody(){return this._xhr.response}getType(){return this._xhr.responseType}getContentType(){return this.getHeader("Content-Type")}getText(){return this._xhr.responseText}getJson(){return JSON.parse(this._xhr.responseText)}getXml(){return this._xhr.responseXML}}e.HttpResponse=s,e.authBasic=(t,e)=>r=>{r.headers({Authorization:"Basic "+btoa(t+":"+e)})},e.authJwt=t=>e=>{e.headers({Authorization:"Bearer "+t})};class o{constructor(){this._method="GET",this._headers={},this._async=!0,this._noCache=!1}static abortAll(){o.xhrs.forEach((t=>t.abort())),o.xhrs.length=0}get(t,e){return this.method("GET"),this.url(t,e),this}post(t,e){return this.method("POST"),this.url(t,e),this}put(t,e){return this.method("PUT"),this.url(t,e),this}patch(t,e){return this.method("PATCH"),this.url(t,e),this}del(t,e){return this.method("DELETE"),this.url(t,e),this}url(t,e){return this._url=t,this._query=e,this}method(t){return this._method=t,this}headers(t){for(const e in t)t.hasOwnProperty(e)&&(this._headers[e]=t[e]);return this}use(t){return t(this),this}timeout(t){return this._timeout=t,this}responseType(t){return this._responseType=t,this}onProgress(t){return this._onProgress=t,this}onResponse(t){return this._onResponse=t,this}onError(t){return this._onError=t,this}async(t=!0){return this._async=t,this}noCache(t=!0){return this._noCache=t,this}abort(){return this._xhr&&this._xhr.abort(),this}send(t,e){e&&(this._headers["Content-Type"]=e),this._send(t,this._headers)}sendPromise(t,e){return new Promise(((r,s)=>{this._onResponse=r,this._onError=s,e&&(this._headers["Content-Type"]=e),this._send(t,this._headers)}))}_send(t,e){var n;const h=new XMLHttpRequest;this._xhr=h;let i=null!==(n=this._url)&&void 0!==n?n:"";if(this._query){const t=r(this._query);i=t?`${i}?${t}`:i}if(this._noCache&&(i+=(/\?/.test(i)?"&":"?")+(new Date).getTime()),this._responseType&&(this._xhr.responseType=this._responseType),"onprogress"in h&&this._onProgress){const t=t=>{this._onProgress({loaded:t.loaded,total:t.lengthComputable?t.total:void 0})};h.upload.onprogress=t,h.onprogress=t}o.xhrs.push(this),h.open(this._method,i,this._async);for(const t in e)e.hasOwnProperty(t)&&h.setRequestHeader(t,e[t]);if(this._timeout&&(h.timeout=this._timeout),"ontimeout"in h&&(this._onError||o.onError)&&(h.ontimeout=t=>{o.onError&&o.onError(t),this._onError&&this._onError(t)}),"onabort"in h&&(this._onError||o.onError)&&(h.onabort=t=>{o.onError&&o.onError(t),this._onError&&this._onError(t)}),(this._onError||o.onError)&&(h.onerror=t=>{o.onError&&o.onError(t),this._onError&&this._onError(t)}),!this._async){if(t){const e="string"==typeof t?t:JSON.stringify(t);h.send(e)}else h.send();return JSON.parse(h.responseText)}"onload"in h?h.onload=t=>{if(o.xhrs=o.xhrs.filter((t=>this!==t)),h.status>=200&&h.status<300){const t=new s(h);o.onResponse&&o.onResponse(t),this._onResponse&&this._onResponse(t)}else o.onError&&o.onError(t),this._onError&&this._onError(t)}:h.onreadystatechange=t=>{if(4===h.readyState)if(o.xhrs=o.xhrs.filter((t=>this!==t)),h.status>=200&&h.status<300){const t=new s(h);o.onResponse&&o.onResponse(t),this._onResponse&&this._onResponse(t)}else o.onError&&o.onError(t),this._onError&&this._onError(t)},void 0!==t?"string"==typeof t||t instanceof FormData||t instanceof Blob?h.send(t):(this._headers["Content-Type"]||h.setRequestHeader("Content-Type","application/json"),h.send(JSON.stringify(t))):h.send()}}function n(t,e){return(new o).method("GET").url(t,e)}function h(t,e){return(new o).method("POST").url(t,e)}function i(t,e){return(new o).method("PUT").url(t,e)}function u(t,e){return(new o).method("PATCH").url(t,e)}function p(t,e){return(new o).method("DELETE").url(t,e)}function a(t){o.onRequest=t}function d(t){o.onResponse=t}function c(t){o.onError=t}
|
|
1
|
+
!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r=e();for(var s in r)("object"==typeof exports?exports:t)[s]=r[s]}}(self,(function(){return function(){"use strict";var t={};return function(){var e=t;function r(t){const e=[];for(const s in t)if(t.hasOwnProperty(s)){const o=t[s];if("object"==typeof o)if(r=o,Array.isArray?Array.isArray(r):null!=r&&void 0!==r&&-1==="boolean|number|string|function|xml".indexOf(typeof r)&&"number"==typeof r.length&&!r.propertyIsEnumerable("length"))for(const t of o)e.push([s,"object"==typeof t?JSON.stringify(t):t]);else e.push([s,JSON.stringify(o)]);else e.push([s,o])}var r;for(let t,r=0;t=e[r++];)e[r-1]=`${encodeURIComponent(t[0])}=${encodeURIComponent(t[1])}`;return e.join("&")}Object.defineProperty(e,"__esModule",{value:!0}),e.http=e.httpOnError=e.httpOnResponse=e.httpOnRequest=e.httpDelete=e.httpPatch=e.httpPut=e.httpPost=e.httpGet=e.HttpRequest=e.authJwt=e.authBasic=e.HttpResponse=e.encodeUrlQuery=e.decodeUrlQuery=void 0,e.decodeUrlQuery=function(t){var e;const r={};if(t){const s=t.substr(1).split("&");for(const t of s){const s=t.split("=");r[decodeURIComponent(s[0])]=decodeURIComponent(null!==(e=s[1])&&void 0!==e?e:"")}}return r},e.encodeUrlQuery=r;class s{constructor(t){this._xhr=t}getHeaders(){return this._xhr.getAllResponseHeaders()}getHeader(t){return this._xhr.getResponseHeader(t)}getBody(){return this._xhr.response}getType(){return this._xhr.responseType}getContentType(){return this.getHeader("Content-Type")}getText(){return this._xhr.responseText}getJson(){return JSON.parse(this._xhr.responseText)}getXml(){return this._xhr.responseXML}}e.HttpResponse=s,e.authBasic=(t,e)=>r=>{r.headers({Authorization:"Basic "+btoa(t+":"+e)})},e.authJwt=t=>e=>{e.headers({Authorization:"Bearer "+t})};class o{constructor(){this._method="GET",this._headers={},this._async=!0,this._noCache=!1}static abortAll(){o.xhrs.forEach((t=>t.abort())),o.xhrs.length=0}get(t,e){return this.method("GET"),this.url(t,e),this}post(t,e){return this.method("POST"),this.url(t,e),this}put(t,e){return this.method("PUT"),this.url(t,e),this}patch(t,e){return this.method("PATCH"),this.url(t,e),this}del(t,e){return this.method("DELETE"),this.url(t,e),this}url(t,e){return this._url=t,this._query=e,this}method(t){return this._method=t,this}headers(t){for(const e in t)t.hasOwnProperty(e)&&(this._headers[e]=t[e]);return this}use(t){return t(this),this}timeout(t){return this._timeout=t,this}responseType(t){return this._responseType=t,this}onProgress(t){return this._onProgress=t,this}onResponse(t){return this._onResponse=t,this}onError(t){return this._onError=t,this}async(t=!0){return this._async=t,this}noCache(t=!0){return this._noCache=t,this}abort(){return this._xhr&&this._xhr.abort(),this}send(t,e){e&&(this._headers["Content-Type"]=e),this._send(t,this._headers)}sendPromise(t,e){return new Promise(((r,s)=>{this._onResponse=r,this._onError=s,e&&(this._headers["Content-Type"]=e),this._send(t,this._headers)}))}_send(t,e){var n;const h=new XMLHttpRequest;this._xhr=h;let i=null!==(n=this._url)&&void 0!==n?n:"";if(this._query){const t=r(this._query);i=t?`${i}?${t}`:i}if(this._noCache&&(i+=(/\?/.test(i)?"&":"?")+(new Date).getTime()),this._responseType&&(this._xhr.responseType=this._responseType),"onprogress"in h&&this._onProgress){const t=t=>{this._onProgress({loaded:t.loaded,total:t.lengthComputable?t.total:void 0})};h.upload.onprogress=t,h.onprogress=t}o.xhrs.push(this),h.open(this._method,i,this._async);for(const t in e)e.hasOwnProperty(t)&&h.setRequestHeader(t,e[t]);if(this._timeout&&(h.timeout=this._timeout),"ontimeout"in h&&(this._onError||o.onError)&&(h.ontimeout=t=>{o.onError&&o.onError(t),this._onError&&this._onError(t)}),"onabort"in h&&(this._onError||o.onError)&&(h.onabort=t=>{o.onError&&o.onError(t),this._onError&&this._onError(t)}),(this._onError||o.onError)&&(h.onerror=t=>{o.onError&&o.onError(t),this._onError&&this._onError(t)}),!this._async){if(t){const e="string"==typeof t?t:JSON.stringify(t);h.send(e)}else h.send();return JSON.parse(h.responseText)}"onload"in h?h.onload=t=>{if(o.xhrs=o.xhrs.filter((t=>this!==t)),h.status>=200&&h.status<300){const t=new s(h);o.onResponse&&o.onResponse(t),this._onResponse&&this._onResponse(t)}else o.onError&&o.onError(t),this._onError&&this._onError(t)}:h.onreadystatechange=t=>{if(4===h.readyState)if(o.xhrs=o.xhrs.filter((t=>this!==t)),h.status>=200&&h.status<300){const t=new s(h);o.onResponse&&o.onResponse(t),this._onResponse&&this._onResponse(t)}else o.onError&&o.onError(t),this._onError&&this._onError(t)},void 0!==t?"string"==typeof t||t instanceof FormData||t instanceof Blob?h.send(t):(this._headers["Content-Type"]||h.setRequestHeader("Content-Type","application/json"),h.send(JSON.stringify(t))):h.send()}}function n(t,e){return(new o).method("GET").url(t,e)}function h(t,e){return(new o).method("POST").url(t,e)}function i(t,e){return(new o).method("PUT").url(t,e)}function u(t,e){return(new o).method("PATCH").url(t,e)}function p(t,e){return(new o).method("DELETE").url(t,e)}function a(t){o.onRequest=t}function d(t){o.onResponse=t}function c(t){o.onError=t}o.xhrs=[],e.HttpRequest=o,e.httpGet=n,e.httpPost=h,e.httpPut=i,e.httpPatch=u,e.httpDelete=p,e.httpOnRequest=a,e.httpOnResponse=d,e.httpOnError=c,e.http={get:n,post:h,put:i,patch:u,delete:p,onRequest:a,onResponse:d,onError:c}}(),t}()}));
|
|
2
2
|
//# sourceMappingURL=http.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","mappings":"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","sources":["webpack://peryl/webpack/universalModuleDefinition","webpack://peryl/./src/http.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","\nfunction isArray(obj: any) {\n return Array.isArray ?\n Array.isArray(obj) :\n (obj == null || obj === undefined || \"boolean|number|string|function|xml\".indexOf(typeof obj) !== -1) ?\n false :\n (typeof obj.length === \"number\" && !(obj.propertyIsEnumerable(\"length\")));\n}\n\nexport function decodeUrlQuery(queryStr: string): { [key: string]: string } {\n const query: { [key: string]: string } = {};\n if (queryStr) {\n const a = queryStr.substr(1).split(\"&\");\n for (const item of a) {\n const b = item.split(\"=\");\n query[decodeURIComponent(b[0])] = decodeURIComponent(b[1] ?? \"\");\n }\n }\n return query;\n}\n\nexport function encodeUrlQuery(query: any): string {\n const key_value_pairs: any[] = [];\n for (const key in query) {\n if (query.hasOwnProperty(key)) {\n const value = query[key];\n if (typeof value === \"object\") {\n if (isArray(value)) {\n for (const item of value) {\n key_value_pairs.push(\n [key, typeof item === \"object\" ?\n JSON.stringify(item) : item]);\n }\n } else {\n key_value_pairs.push([key, JSON.stringify(value)]);\n }\n } else {\n key_value_pairs.push([key, value]);\n }\n }\n }\n for (let j = 0, pair: any; pair = key_value_pairs[j++];) {\n key_value_pairs[j - 1] = `${encodeURIComponent(pair[0])}=${encodeURIComponent(pair[1])}`;\n }\n return key_value_pairs.join(\"&\");\n}\n\n\nexport class HttpResponse {\n\n private _xhr: XMLHttpRequest;\n\n constructor(xhr: XMLHttpRequest) {\n this._xhr = xhr;\n }\n\n getHeaders(): string {\n return this._xhr.getAllResponseHeaders();\n }\n\n getHeader(header: string): string | null {\n return this._xhr.getResponseHeader(header);\n }\n\n getBody(): any {\n return this._xhr.response;\n }\n\n getType(): string {\n return this._xhr.responseType;\n }\n\n getContentType(): string | null {\n return this.getHeader(\"Content-Type\");\n }\n\n getText(): string {\n return this._xhr.responseText;\n }\n\n getJson(): any {\n return JSON.parse(this._xhr.responseText);\n }\n\n getXml(): Document | null {\n return this._xhr.responseXML;\n }\n\n}\n\n\nexport interface HttpProgress {\n loaded: number;\n total?: number;\n}\n\nexport type HttpMethod =\n | \"GET\"\n | \"POST\"\n | \"PUT\"\n | \"DELETE\"\n | \"PATCH\"\n | \"HEAD\"\n | \"CONNECT\"\n | \"OPTIONS\"\n | \"TRACE\";\n\nexport type HttpResponseType =\n | \"arraybuffer\"\n | \"blob\"\n | \"document\"\n | \"json\"\n | \"text\";\n\nexport const authBasic = (login: string, password: string) => (req: HttpRequest) => {\n req.headers({ \"Authorization\": \"Basic \" + btoa(login + \":\" + password) });\n};\n\nexport const authJwt = (jwt: string) => (req: HttpRequest) => {\n req.headers({ \"Authorization\": \"Bearer \" + jwt });\n};\n\nexport class HttpRequest {\n\n static readonly xhrs: HttpRequest[] = [];\n\n static onRequest?: (request: HttpRequest) => void;\n static onResponse?: (response: HttpResponse) => void;\n static onError?: (e: Event) => void;\n\n static abortAll() {\n HttpRequest.xhrs.forEach(x => x.abort());\n HttpRequest.xhrs.length = 0;\n }\n\n private _url?: string;\n private _query?: Object;\n private _method: HttpMethod = \"GET\";\n private _headers: { [key: string]: string } = {};\n private _timeout?: number;\n private _responseType?: HttpResponseType;\n\n private _onProgress?: (progress: HttpProgress) => void;\n private _onResponse?: (response: HttpResponse) => void;\n private _onError?: (e?: Event) => void;\n\n private _xhr?: XMLHttpRequest;\n private _async: boolean = true;\n private _noCache: boolean = false;\n\n get(url: string, query?: Object): this {\n this.method(\"GET\");\n this.url(url, query);\n return this;\n }\n\n post(url: string, query?: Object): this {\n this.method(\"POST\");\n this.url(url, query);\n return this;\n }\n\n put(url: string, query?: Object): this {\n this.method(\"PUT\");\n this.url(url, query);\n return this;\n }\n\n patch(url: string, query?: Object): this {\n this.method(\"PATCH\");\n this.url(url, query);\n return this;\n }\n\n del(url: string, query?: Object): this {\n this.method(\"DELETE\");\n this.url(url, query);\n return this;\n }\n\n url(url: string, query?: Object): this {\n this._url = url;\n this._query = query;\n return this;\n }\n\n method(method: HttpMethod): this {\n this._method = method;\n return this;\n }\n\n headers(headers: { [key: string]: string }): this {\n for (const key in headers) {\n if (headers.hasOwnProperty(key)) {\n this._headers[key] = headers[key];\n }\n }\n return this;\n }\n\n use(middleware: (req: HttpRequest) => void): this {\n middleware(this);\n return this;\n }\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n responseType(type: HttpResponseType): this {\n this._responseType = type;\n return this;\n }\n\n onProgress(onProgress: (progress: HttpProgress) => void): this {\n this._onProgress = onProgress;\n return this;\n }\n\n onResponse(onResponse: (response: HttpResponse) => void): this {\n this._onResponse = onResponse;\n return this;\n }\n\n onError(onError: (e?: Event) => void): this {\n this._onError = onError;\n return this;\n }\n\n async(async: boolean = true): this {\n this._async = async;\n return this;\n }\n\n noCache(noCache: boolean = true): this {\n this._noCache = noCache;\n return this;\n }\n\n abort(): this {\n if (this._xhr) {\n this._xhr.abort();\n }\n return this;\n }\n\n send(data?: any, contentType?: string): void {\n if (contentType) {\n this._headers[\"Content-Type\"] = contentType;\n }\n // this._headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n this._send(data, this._headers);\n }\n\n sendPromise(data?: any, contentType?: string): Promise<HttpResponse> {\n return new Promise<HttpResponse>((res, rej) => {\n this._onResponse = res;\n this._onError = rej;\n if (contentType) {\n this._headers[\"Content-Type\"] = contentType;\n }\n this._send(data, this._headers);\n });\n }\n\n private _send(data?: any, headers?: { [key: string]: string }): void {\n const xhr = new XMLHttpRequest();\n this._xhr = xhr;\n\n let url = this._url ?? \"\";\n if (this._query) {\n const query = encodeUrlQuery(this._query);\n url = query ? `${url}?${query}` : url;\n }\n if (this._noCache) {\n url += (/\\?/.test(url) ? \"&\" : \"?\") + new Date().getTime();\n }\n // console.debug(\"HttpRequest: \" + this._method + \" \" + url, data);\n\n if (this._responseType) {\n this._xhr.responseType = this._responseType;\n }\n\n if (\"onprogress\" in xhr) {\n if (this._onProgress) {\n const onprogress = (e: ProgressEvent) => {\n this._onProgress!({\n loaded: e.loaded,\n total: e.lengthComputable ? e.total : undefined\n });\n };\n xhr.upload.onprogress = onprogress;\n xhr.onprogress = onprogress;\n }\n }\n\n HttpRequest.xhrs.push(this);\n\n xhr.open(this._method, url, this._async);\n\n for (const header in headers) {\n if (headers.hasOwnProperty(header)) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n\n if (this._timeout) {\n xhr.timeout = this._timeout;\n }\n\n if (\"ontimeout\" in xhr) {\n if (this._onError || HttpRequest.onError) {\n xhr.ontimeout = (e: ProgressEvent) => {\n HttpRequest.onError && HttpRequest.onError(e);\n this._onError && this._onError(e);\n };\n }\n }\n\n if (\"onabort\" in xhr) {\n if (this._onError || HttpRequest.onError) {\n xhr.onabort = (e: ProgressEvent) => {\n HttpRequest.onError && HttpRequest.onError(e);\n this._onError && this._onError(e);\n };\n }\n }\n\n if (this._onError || HttpRequest.onError) {\n xhr.onerror = (e: ProgressEvent) => {\n HttpRequest.onError && HttpRequest.onError(e);\n this._onError && this._onError(e);\n };\n }\n\n if (this._async) {\n if (\"onload\" in xhr) {\n xhr.onload = (e: ProgressEvent) => {\n (HttpRequest as any).xhrs = HttpRequest.xhrs.filter(x => this !== x);\n if (xhr.status >= 200 && xhr.status < 300) {\n const respone = new HttpResponse(xhr);\n if (HttpRequest.onResponse) {\n HttpRequest.onResponse(respone);\n }\n if (this._onResponse) {\n this._onResponse(respone);\n }\n } else {\n if (HttpRequest.onError) {\n HttpRequest.onError(e);\n }\n if (this._onError) {\n this._onError(e);\n }\n }\n };\n } else {\n // legacy\n (xhr as any).onreadystatechange = (e: Event) => {\n switch ((xhr as any).readyState) {\n // 0 UNSENT Client has been created. open() not called yet.\n // 1 OPENED open() has been called.\n // 2 HEADERS_RECEIVED send() has been called, and headers and status are available.\n // 3 LOADING Downloading; responseText holds partial data.\n // 4 DONE The operation is complete.\n // case 3: // loading\n // if (this._onProgress) {\n // this._onProgress(new HttpResponse(httpRequest));\n // }\n // break;\n case 4: // done\n (HttpRequest as any).xhrs = HttpRequest.xhrs.filter(x => this !== x);\n // const httpStatusOk = xhr.status >= 200 && xhr.status < 300;\n // schemes other than http/https (file, ftp)\n // const fileFtpStatusOk = xhr.status === 0 && !this._url.match(/^https?:\\/\\//);\n // const fileFtpStatusOk = xhr.status === 0 && !xhr.responseURL.match(/^https?:\\/\\//);\n // if (httpStatusOk || fileFtpStatusOk) {\n if ((xhr as any).status >= 200 && (xhr as any).status < 300) {\n const respone = new HttpResponse(xhr);\n if (HttpRequest.onResponse) {\n HttpRequest.onResponse(respone);\n }\n if (this._onResponse) {\n this._onResponse(respone);\n }\n } else {\n if (HttpRequest.onError) {\n HttpRequest.onError(e);\n }\n if (this._onError) {\n this._onError(e);\n }\n }\n break;\n default:\n }\n };\n }\n\n if (data !== undefined) {\n if (\n typeof data === \"string\" ||\n data instanceof FormData ||\n data instanceof Blob\n ) {\n xhr.send(data);\n } else {\n if (!this._headers[\"Content-Type\"]) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n }\n xhr.send(JSON.stringify(data));\n }\n } else {\n xhr.send();\n }\n } else {\n if (data) {\n const payload = (typeof data === \"string\") ? data : JSON.stringify(data);\n xhr.send(payload);\n } else {\n xhr.send();\n }\n return JSON.parse(xhr.responseText);\n }\n }\n\n}\n\n\nexport function httpGet(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"GET\").url(url, query);\n}\n\nexport function httpPost(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"POST\").url(url, query);\n}\n\nexport function httpPut(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"PUT\").url(url, query);\n}\n\nexport function httpPatch(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"PATCH\").url(url, query);\n}\n\nexport function httpDelete(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"DELETE\").url(url, query);\n}\n\nexport function httpOnRequest(onRequest: (req: HttpRequest) => void): void {\n HttpRequest.onRequest = onRequest;\n}\n\nexport function httpOnResponse(onResponse: (req: HttpResponse) => void): void {\n HttpRequest.onResponse = onResponse;\n}\n\nexport function httpOnError(onError: (req: Event) => void): void {\n HttpRequest.onError = onError;\n}\n\nexport const http = {\n get: httpGet,\n post: httpPost,\n put: httpPut,\n patch: httpPatch,\n delete: httpDelete,\n onRequest: httpOnRequest,\n onResponse: httpOnResponse,\n onError: httpOnError\n};\n"],"names":["root","factory","exports","module","define","amd","a","i","self","encodeUrlQuery","query","key_value_pairs","key","hasOwnProperty","value","obj","Array","isArray","undefined","indexOf","length","propertyIsEnumerable","item","push","JSON","stringify","pair","j","encodeURIComponent","join","queryStr","substr","split","b","decodeURIComponent","HttpResponse","constructor","xhr","this","_xhr","getHeaders","getAllResponseHeaders","getHeader","header","getResponseHeader","getBody","response","getType","responseType","getContentType","getText","responseText","getJson","parse","getXml","responseXML","authBasic","login","password","req","headers","btoa","authJwt","jwt","HttpRequest","_method","_headers","_async","_noCache","static","xhrs","forEach","x","abort","get","url","method","post","put","patch","del","_url","_query","use","middleware","timeout","_timeout","type","_responseType","onProgress","_onProgress","onResponse","_onResponse","onError","_onError","async","noCache","send","data","contentType","_send","sendPromise","Promise","res","rej","XMLHttpRequest","test","Date","getTime","onprogress","e","loaded","total","lengthComputable","upload","open","setRequestHeader","ontimeout","onabort","onerror","payload","onload","filter","status","respone","onreadystatechange","readyState","FormData","Blob","httpGet","httpPost","httpPut","httpPatch","httpDelete","httpOnRequest","onRequest","httpOnResponse","httpOnError","http","delete"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"http.js","mappings":"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","sources":["webpack://peryl/webpack/universalModuleDefinition","webpack://peryl/./src/http.ts"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","\nfunction isArray(obj: any) {\n return Array.isArray ?\n Array.isArray(obj) :\n (obj == null || obj === undefined || \"boolean|number|string|function|xml\".indexOf(typeof obj) !== -1) ?\n false :\n (typeof obj.length === \"number\" && !(obj.propertyIsEnumerable(\"length\")));\n}\n\nexport function decodeUrlQuery(queryStr: string): { [key: string]: string } {\n const query: { [key: string]: string } = {};\n if (queryStr) {\n const a = queryStr.substr(1).split(\"&\");\n for (const item of a) {\n const b = item.split(\"=\");\n query[decodeURIComponent(b[0])] = decodeURIComponent(b[1] ?? \"\");\n }\n }\n return query;\n}\n\nexport function encodeUrlQuery(query: any): string {\n const key_value_pairs: any[] = [];\n for (const key in query) {\n if (query.hasOwnProperty(key)) {\n const value = query[key];\n if (typeof value === \"object\") {\n if (isArray(value)) {\n for (const item of value) {\n key_value_pairs.push(\n [key, typeof item === \"object\" ?\n JSON.stringify(item) : item]);\n }\n } else {\n key_value_pairs.push([key, JSON.stringify(value)]);\n }\n } else {\n key_value_pairs.push([key, value]);\n }\n }\n }\n for (let j = 0, pair: any; pair = key_value_pairs[j++];) {\n key_value_pairs[j - 1] = `${encodeURIComponent(pair[0])}=${encodeURIComponent(pair[1])}`;\n }\n return key_value_pairs.join(\"&\");\n}\n\n\nexport class HttpResponse {\n\n private _xhr: XMLHttpRequest;\n\n constructor(xhr: XMLHttpRequest) {\n this._xhr = xhr;\n }\n\n getHeaders(): string {\n return this._xhr.getAllResponseHeaders();\n }\n\n getHeader(header: string): string | null {\n return this._xhr.getResponseHeader(header);\n }\n\n getBody(): any {\n return this._xhr.response;\n }\n\n getType(): string {\n return this._xhr.responseType;\n }\n\n getContentType(): string | null {\n return this.getHeader(\"Content-Type\");\n }\n\n getText(): string {\n return this._xhr.responseText;\n }\n\n getJson(): any {\n return JSON.parse(this._xhr.responseText);\n }\n\n getXml(): Document | null {\n return this._xhr.responseXML;\n }\n\n}\n\n\nexport interface HttpProgress {\n loaded: number;\n total?: number;\n}\n\nexport type HttpMethod =\n | \"GET\"\n | \"POST\"\n | \"PUT\"\n | \"DELETE\"\n | \"PATCH\"\n | \"HEAD\"\n | \"CONNECT\"\n | \"OPTIONS\"\n | \"TRACE\";\n\nexport type HttpResponseType =\n | \"arraybuffer\"\n | \"blob\"\n | \"document\"\n | \"json\"\n | \"text\";\n\nexport const authBasic = (login: string, password: string) => (req: HttpRequest) => {\n req.headers({ \"Authorization\": \"Basic \" + btoa(login + \":\" + password) });\n};\n\nexport const authJwt = (jwt: string) => (req: HttpRequest) => {\n req.headers({ \"Authorization\": \"Bearer \" + jwt });\n};\n\nexport class HttpRequest {\n\n static readonly xhrs: HttpRequest[] = [];\n\n static onRequest?: (request: HttpRequest) => void;\n static onResponse?: (response: HttpResponse) => void;\n static onError?: (e: Event) => void;\n\n static abortAll() {\n HttpRequest.xhrs.forEach(x => x.abort());\n HttpRequest.xhrs.length = 0;\n }\n\n private _url?: string;\n private _query?: Object;\n private _method: HttpMethod = \"GET\";\n private _headers: { [key: string]: string } = {};\n private _timeout?: number;\n private _responseType?: HttpResponseType;\n\n private _onProgress?: (progress: HttpProgress) => void;\n private _onResponse?: (response: HttpResponse) => void;\n private _onError?: (e?: Event) => void;\n\n private _xhr?: XMLHttpRequest;\n private _async: boolean = true;\n private _noCache: boolean = false;\n\n get(url: string, query?: Object): this {\n this.method(\"GET\");\n this.url(url, query);\n return this;\n }\n\n post(url: string, query?: Object): this {\n this.method(\"POST\");\n this.url(url, query);\n return this;\n }\n\n put(url: string, query?: Object): this {\n this.method(\"PUT\");\n this.url(url, query);\n return this;\n }\n\n patch(url: string, query?: Object): this {\n this.method(\"PATCH\");\n this.url(url, query);\n return this;\n }\n\n del(url: string, query?: Object): this {\n this.method(\"DELETE\");\n this.url(url, query);\n return this;\n }\n\n url(url: string, query?: Object): this {\n this._url = url;\n this._query = query;\n return this;\n }\n\n method(method: HttpMethod): this {\n this._method = method;\n return this;\n }\n\n headers(headers: { [key: string]: string }): this {\n for (const key in headers) {\n if (headers.hasOwnProperty(key)) {\n this._headers[key] = headers[key];\n }\n }\n return this;\n }\n\n use(middleware: (req: HttpRequest) => void): this {\n middleware(this);\n return this;\n }\n\n timeout(timeout: number): this {\n this._timeout = timeout;\n return this;\n }\n\n responseType(type: HttpResponseType): this {\n this._responseType = type;\n return this;\n }\n\n onProgress(onProgress: (progress: HttpProgress) => void): this {\n this._onProgress = onProgress;\n return this;\n }\n\n onResponse(onResponse: (response: HttpResponse) => void): this {\n this._onResponse = onResponse;\n return this;\n }\n\n onError(onError: (e?: Event) => void): this {\n this._onError = onError;\n return this;\n }\n\n async(async: boolean = true): this {\n this._async = async;\n return this;\n }\n\n noCache(noCache: boolean = true): this {\n this._noCache = noCache;\n return this;\n }\n\n abort(): this {\n if (this._xhr) {\n this._xhr.abort();\n }\n return this;\n }\n\n send(data?: any, contentType?: string): void {\n if (contentType) {\n this._headers[\"Content-Type\"] = contentType;\n }\n // this._headers[\"X-Requested-With\"] = \"XMLHttpRequest\";\n this._send(data, this._headers);\n }\n\n sendPromise(data?: any, contentType?: string): Promise<HttpResponse> {\n return new Promise<HttpResponse>((res, rej) => {\n this._onResponse = res;\n this._onError = rej;\n if (contentType) {\n this._headers[\"Content-Type\"] = contentType;\n }\n this._send(data, this._headers);\n });\n }\n\n private _send(data?: any, headers?: { [key: string]: string }): void {\n const xhr = new XMLHttpRequest();\n this._xhr = xhr;\n\n let url = this._url ?? \"\";\n if (this._query) {\n const query = encodeUrlQuery(this._query);\n url = query ? `${url}?${query}` : url;\n }\n if (this._noCache) {\n url += (/\\?/.test(url) ? \"&\" : \"?\") + new Date().getTime();\n }\n // console.debug(\"HttpRequest: \" + this._method + \" \" + url, data);\n\n if (this._responseType) {\n this._xhr.responseType = this._responseType;\n }\n\n if (\"onprogress\" in xhr) {\n if (this._onProgress) {\n const onprogress = (e: ProgressEvent) => {\n this._onProgress!({\n loaded: e.loaded,\n total: e.lengthComputable ? e.total : undefined\n });\n };\n xhr.upload.onprogress = onprogress;\n xhr.onprogress = onprogress;\n }\n }\n\n HttpRequest.xhrs.push(this);\n\n xhr.open(this._method, url, this._async);\n\n for (const header in headers) {\n if (headers.hasOwnProperty(header)) {\n xhr.setRequestHeader(header, headers[header]);\n }\n }\n\n if (this._timeout) {\n xhr.timeout = this._timeout;\n }\n\n if (\"ontimeout\" in xhr) {\n if (this._onError || HttpRequest.onError) {\n xhr.ontimeout = (e: ProgressEvent) => {\n HttpRequest.onError && HttpRequest.onError(e);\n this._onError && this._onError(e);\n };\n }\n }\n\n if (\"onabort\" in xhr) {\n if (this._onError || HttpRequest.onError) {\n xhr.onabort = (e: ProgressEvent) => {\n HttpRequest.onError && HttpRequest.onError(e);\n this._onError && this._onError(e);\n };\n }\n }\n\n if (this._onError || HttpRequest.onError) {\n xhr.onerror = (e: ProgressEvent) => {\n HttpRequest.onError && HttpRequest.onError(e);\n this._onError && this._onError(e);\n };\n }\n\n if (this._async) {\n if (\"onload\" in xhr) {\n xhr.onload = (e: ProgressEvent) => {\n (HttpRequest as any).xhrs = HttpRequest.xhrs.filter(x => this !== x);\n if (xhr.status >= 200 && xhr.status < 300) {\n const respone = new HttpResponse(xhr);\n if (HttpRequest.onResponse) {\n HttpRequest.onResponse(respone);\n }\n if (this._onResponse) {\n this._onResponse(respone);\n }\n } else {\n if (HttpRequest.onError) {\n HttpRequest.onError(e);\n }\n if (this._onError) {\n this._onError(e);\n }\n }\n };\n } else {\n // legacy\n (xhr as any).onreadystatechange = (e: Event) => {\n switch ((xhr as any).readyState) {\n // 0 UNSENT Client has been created. open() not called yet.\n // 1 OPENED open() has been called.\n // 2 HEADERS_RECEIVED send() has been called, and headers and status are available.\n // 3 LOADING Downloading; responseText holds partial data.\n // 4 DONE The operation is complete.\n // case 3: // loading\n // if (this._onProgress) {\n // this._onProgress(new HttpResponse(httpRequest));\n // }\n // break;\n case 4: // done\n (HttpRequest as any).xhrs = HttpRequest.xhrs.filter(x => this !== x);\n // const httpStatusOk = xhr.status >= 200 && xhr.status < 300;\n // schemes other than http/https (file, ftp)\n // const fileFtpStatusOk = xhr.status === 0 && !this._url.match(/^https?:\\/\\//);\n // const fileFtpStatusOk = xhr.status === 0 && !xhr.responseURL.match(/^https?:\\/\\//);\n // if (httpStatusOk || fileFtpStatusOk) {\n if ((xhr as any).status >= 200 && (xhr as any).status < 300) {\n const respone = new HttpResponse(xhr);\n if (HttpRequest.onResponse) {\n HttpRequest.onResponse(respone);\n }\n if (this._onResponse) {\n this._onResponse(respone);\n }\n } else {\n if (HttpRequest.onError) {\n HttpRequest.onError(e);\n }\n if (this._onError) {\n this._onError(e);\n }\n }\n break;\n default:\n }\n };\n }\n\n if (data !== undefined) {\n if (\n typeof data === \"string\" ||\n data instanceof FormData ||\n data instanceof Blob\n ) {\n xhr.send(data);\n } else {\n if (!this._headers[\"Content-Type\"]) {\n xhr.setRequestHeader(\"Content-Type\", \"application/json\");\n }\n xhr.send(JSON.stringify(data));\n }\n } else {\n xhr.send();\n }\n } else {\n if (data) {\n const payload = (typeof data === \"string\") ? data : JSON.stringify(data);\n xhr.send(payload);\n } else {\n xhr.send();\n }\n return JSON.parse(xhr.responseText);\n }\n }\n\n}\n\n\nexport function httpGet(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"GET\").url(url, query);\n}\n\nexport function httpPost(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"POST\").url(url, query);\n}\n\nexport function httpPut(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"PUT\").url(url, query);\n}\n\nexport function httpPatch(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"PATCH\").url(url, query);\n}\n\nexport function httpDelete(url: string, query?: Object): HttpRequest {\n return new HttpRequest().method(\"DELETE\").url(url, query);\n}\n\nexport function httpOnRequest(onRequest: (req: HttpRequest) => void): void {\n HttpRequest.onRequest = onRequest;\n}\n\nexport function httpOnResponse(onResponse: (req: HttpResponse) => void): void {\n HttpRequest.onResponse = onResponse;\n}\n\nexport function httpOnError(onError: (req: Event) => void): void {\n HttpRequest.onError = onError;\n}\n\nexport const http = {\n get: httpGet,\n post: httpPost,\n put: httpPut,\n patch: httpPatch,\n delete: httpDelete,\n onRequest: httpOnRequest,\n onResponse: httpOnResponse,\n onError: httpOnError\n};\n"],"names":["root","factory","exports","module","define","amd","a","i","self","encodeUrlQuery","query","key_value_pairs","key","hasOwnProperty","value","obj","Array","isArray","undefined","indexOf","length","propertyIsEnumerable","item","push","JSON","stringify","pair","j","encodeURIComponent","join","queryStr","substr","split","b","decodeURIComponent","HttpResponse","constructor","xhr","this","_xhr","getHeaders","getAllResponseHeaders","getHeader","header","getResponseHeader","getBody","response","getType","responseType","getContentType","getText","responseText","getJson","parse","getXml","responseXML","authBasic","login","password","req","headers","btoa","authJwt","jwt","HttpRequest","_method","_headers","_async","_noCache","static","xhrs","forEach","x","abort","get","url","method","post","put","patch","del","_url","_query","use","middleware","timeout","_timeout","type","_responseType","onProgress","_onProgress","onResponse","_onResponse","onError","_onError","async","noCache","send","data","contentType","_send","sendPromise","Promise","res","rej","XMLHttpRequest","test","Date","getTime","onprogress","e","loaded","total","lengthComputable","upload","open","setRequestHeader","ontimeout","onabort","onerror","payload","onload","filter","status","respone","onreadystatechange","readyState","FormData","Blob","httpGet","httpPost","httpPut","httpPatch","httpDelete","httpOnRequest","onRequest","httpOnResponse","httpOnError","http","delete"],"sourceRoot":""}
|