@matheusdev20/hc-lib 0.1.2 → 0.1.5
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 +10 -25
- package/dist/index.d.mts +1 -3
- package/dist/index.d.ts +1 -3
- package/dist/index.global.js +1 -1
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -7,15 +7,9 @@ Utility library for Zendesk Help Center development. Supports both **v3** and **
|
|
|
7
7
|
Add the script tag to your Help Center template:
|
|
8
8
|
|
|
9
9
|
```html
|
|
10
|
-
|
|
11
|
-
<script src="https://cdn.jsdelivr.net/npm/@matheusdev20/hc-lib/dist/index.global.js"></script>
|
|
12
|
-
|
|
13
|
-
<!-- unpkg -->
|
|
14
|
-
<script src="https://unpkg.com/@matheusdev20/hc-lib/dist/index.global.js"></script>
|
|
10
|
+
<script src="https://cdn.example.com/hc-utilities-kit/index.global.js"></script>
|
|
15
11
|
```
|
|
16
12
|
|
|
17
|
-
To pin a specific version, replace `hc-lib` with `hc-lib@1.0.0`.
|
|
18
|
-
|
|
19
13
|
This exposes the global `AktieHC` object.
|
|
20
14
|
|
|
21
15
|
## Instantiating
|
|
@@ -25,10 +19,14 @@ Call `AktieHC.create()` with the Help Center version:
|
|
|
25
19
|
```html
|
|
26
20
|
<script>
|
|
27
21
|
// For Help Center v3
|
|
28
|
-
|
|
22
|
+
const hc = AktieHC.create("v3");
|
|
29
23
|
|
|
30
24
|
// For Help Center v4
|
|
31
|
-
|
|
25
|
+
const hc = AktieHC.create("v4");
|
|
26
|
+
// Bring API utilities like getArticles()
|
|
27
|
+
|
|
28
|
+
const hc = AktieHC.create("v4", ["articles"]);
|
|
29
|
+
|
|
32
30
|
</script>
|
|
33
31
|
```
|
|
34
32
|
|
|
@@ -37,22 +35,9 @@ The returned `hc` object has the same interface regardless of version — the im
|
|
|
37
35
|
## Available Methods
|
|
38
36
|
|
|
39
37
|
```js
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
hc.hideFormField("field_id");
|
|
43
|
-
hc.hideCustomFieldOption("field_id", "option_value");
|
|
44
|
-
hc.hideAttachmentField();
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Waiting for DOM Ready
|
|
38
|
+
const hc = AktieHC.create("v4", ["articles"]);
|
|
48
39
|
|
|
49
|
-
|
|
40
|
+
const { api } = hc
|
|
50
41
|
|
|
51
|
-
|
|
52
|
-
<script>
|
|
53
|
-
AktieHC.ready(function () {
|
|
54
|
-
var hc = AktieHC.create("v4");
|
|
55
|
-
hc.hideFormField("field_id");
|
|
56
|
-
});
|
|
57
|
-
</script>
|
|
42
|
+
const response = hc.articles.getAll(page = 4)
|
|
58
43
|
```
|
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
declare function ready(fn: () => void): void;
|
|
2
2
|
|
|
3
|
-
declare function noop(): void;
|
|
4
|
-
declare function ping(): string;
|
|
5
3
|
declare function timeout(ms: number): Promise<never>;
|
|
6
4
|
|
|
7
5
|
type HCVersion = "v3" | "v4";
|
|
@@ -12,4 +10,4 @@ type APIDependencies = 'articles';
|
|
|
12
10
|
|
|
13
11
|
declare function create(version: HCVersion, apiDependencies?: APIDependencies[]): HCInstance;
|
|
14
12
|
|
|
15
|
-
export { type HCInstance, type HCVersion, create,
|
|
13
|
+
export { type HCInstance, type HCVersion, create, ready, timeout };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
declare function ready(fn: () => void): void;
|
|
2
2
|
|
|
3
|
-
declare function noop(): void;
|
|
4
|
-
declare function ping(): string;
|
|
5
3
|
declare function timeout(ms: number): Promise<never>;
|
|
6
4
|
|
|
7
5
|
type HCVersion = "v3" | "v4";
|
|
@@ -12,4 +10,4 @@ type APIDependencies = 'articles';
|
|
|
12
10
|
|
|
13
11
|
declare function create(version: HCVersion, apiDependencies?: APIDependencies[]): HCInstance;
|
|
14
12
|
|
|
15
|
-
export { type HCInstance, type HCVersion, create,
|
|
13
|
+
export { type HCInstance, type HCVersion, create, ready, timeout };
|
package/dist/index.global.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var AktieHC=(()=>{var
|
|
1
|
+
"use strict";var AktieHC=(()=>{var u=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var P=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},I=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of A(e))!x.call(t,n)&&n!==r&&u(t,n,{get:()=>e[n],enumerable:!(s=y(e,n))||s.enumerable});return t};var v=t=>I(u({},"__esModule",{value:!0}),t);var E={};P(E,{create:()=>w,ready:()=>_,timeout:()=>C});function _(t){document.readyState!=="loading"?t():document.addEventListener("DOMContentLoaded",t)}function C(t){return new Promise((e,r)=>setTimeout(()=>r(new Error("Request timeout")),t))}var c=class{constructor(e){this.api=e!=null?e:{}}use(e){let r=this.api[e];if(!r)throw new Error(`HCv4: "${e}" was not provided as a dependency. Pass it when creating the instance: create("v4", ["${e}"])`);return r}getAllArticles(){return this.use("articles").getAll()}};var m={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},async getAuthorizationToken(){return fetch("/hc/api/internal/csrf_token.json").then(t=>t.json()).then(t=>t.current_session.csrf_token).catch(t=>{console.error(new Error(t))})}};var h={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},general:{perPage:"100",include:"categories,sections"},async getAll(t=1){let e=`${this.web.subdomain}-articles-p${t}`;if(sessionStorage.getItem(e))return JSON.parse(sessionStorage.getItem(e));let s=await(await fetch(`/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`)).json();for(;s.next_page;){let o=await(await fetch(s.next_page)).json();s.categories.push(...o.categories.filter(i=>s.categories.findIndex(a=>a.id===i.id)===-1)),s.sections.push(...o.sections.filter(i=>s.sections.findIndex(a=>a.id===i.id)===-1)),s.articles=s.articles.concat(o.articles),s.next_page=o.next_page}return sessionStorage.setItem(e,JSON.stringify(s)),s},async searchArticle(t){let s=(n,o={})=>Promise.race([fetch(n,o),new Promise((i,a)=>setTimeout(()=>a(new Error("Request timeout")),8e3))]);try{if(!t||typeof t!="string")return{results:[],count:0};let o=`/api/v2/help_center/articles/search.json?query=${encodeURIComponent(t)}`,i={results:[],next_page:o},a=0;for(;i.next_page&&!(a>50);){let d=await s(i.next_page);if(!d.ok)break;let l=await d.json();if(!Array.isArray(l.results))break;i.results=i.results.concat(l.results),i.next_page=l.next_page,a++}return i}catch(n){return{results:[],error:n.message}}},async vote({articleId:t,vote:e}){var s;let r=JSON.parse((s=sessionStorage.getItem("cur-votes"))!=null?s:"")||{};if(!["up","down"].includes(e))throw new Error(`Tipo de voto "${e}" inv\xE1lido`);try{let n=`/api/v2/help_center/pt-br/articles/${t}/${e}`,o=await fetch(n,{method:"POST",headers:{"content-type":"application/json","x-csrf-token":await m.getAuthorizationToken(),"x-requested-with":"XMLHttpRequest"}});if(!o.ok)throw{message:"A API do Zendesk retornou um erro inesperado, tente novamente. Caso o erro persista, nos informe atrav\xE9s de uma solicita\xE7\xE3o",code:o.status};return r[t]=e,sessionStorage.setItem("cur-votes",JSON.stringify(r)),o.json()}catch(n){return{error:!0,message:`Ocorreu um erro ao votar no artigo de ID "${t}"`,originalError:`${n.code} - ${n.message}`}}}};var f={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},async me(){return await fetch("/api/v2/users/me.json")}};var g={articles:h,users:f};var p=class{constructor(e){this.api=e!=null?e:{}}use(e){let r=this.api[e];if(!r)throw new Error(`HCv4: "${e}" was not provided as a dependency. Pass it when creating the instance: create("v4", ["${e}"])`);return r}getAllArticles(){return this.use("articles").getAll()}searchForArticle(e){return this.use("articles").searchArticle(e)}};function w(t,e=[]){let r=null;if(e.length>0){let s={};for(let n of e)s[n]=g[n];r=s}switch(t){case"v3":return new c(r);case"v4":return new p(r);default:throw new Error(`Unsupported HC version: ${t}`)}}return v(E);})();
|
|
2
2
|
//# sourceMappingURL=index.global.js.map
|
package/dist/index.global.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/dom/index.ts","../src/utils/index.ts","../src/v3/index.ts","../src/api/articles/index.ts","../src/api/index.ts","../src/v4/index.ts","../src/hc/factory.ts"],"sourcesContent":["export * from \"./dom\";\nexport * from \"./utils\";\nexport * from \"./hc\";\n","export function ready(fn: () => void): void {\n if (document.readyState !== \"loading\") {\n fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn);\n }\n}\n","export function noop(): void {}\n\nexport function ping(): string {\n const msg = \"hc-lib loaded successfully!\";\n console.log(msg);\n return msg;\n}\n\nexport function timeout(ms: number): Promise<never> {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(\"Request timeout\")), ms));\n}\n","import type { APIDependencies, HCInstance } from \"../hc/types\";\n\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\nexport class HCv3 implements HCInstance {\n\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","export const articles = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n general: {\n perPage: \"100\",\n include: \"categories,sections\"\n },\n\n async getAll(page: number = 1) {\n \n const storageName = `${this.web.subdomain}-articles-p${page}`;\n if (sessionStorage.getItem(storageName)) { return JSON.parse(sessionStorage.getItem(storageName) as string); }\n\n const response = await fetch(\n `/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`,\n );\n\n const json = await response.json();\n\n while (json.next_page) {\n const nextResult = await fetch(json.next_page);\n const nextJson = await nextResult.json();\n\n json.categories.push(...nextJson.categories\n .filter((nextCategory: any) =>\n json.categories\n .findIndex((category: any) => category.id === nextCategory.id) === -1\n )\n );\n json.sections.push(...nextJson.sections\n .filter((nextSection: any) =>\n json.sections\n .findIndex((section: any) => section.id === nextSection.id) === -1\n )\n );\n json.articles = json.articles.concat(nextJson.articles);\n json.next_page = nextJson.next_page;\n }\n\n sessionStorage.setItem(storageName, JSON.stringify(json));\n return json\n }\n}","import { articles } from \"./articles\";\n\nexport const deps = {\n articles,\n};","import type { APIDependencies, HCInstance } from \"../hc/types\";\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\n\nexport class HCv4 implements HCInstance {\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","import type { APIDependencies, HCInstance, HCVersion } from \"./types\";\nimport { HCv3 } from \"../v3\";\nimport { deps } from \"../api/index\"\nimport { HCv4 } from \"../v4\";\n\nexport function create(version: HCVersion, apiDependencies: APIDependencies[] = []): HCInstance {\n let api: Partial<Record<APIDependencies, any>> | null = null\n\n if (apiDependencies.length > 0) {\n const result: Partial<Record<APIDependencies, any>> = {}\n for (const dep of apiDependencies) result[dep] = deps[dep]\n api = result\n }\n\n switch (version) {\n case \"v3\":\n return new HCv3(api);\n case \"v4\":\n return new HCv4(api);\n default:\n throw new Error(`Unsupported HC version: ${version}`);\n }\n}\n"],"mappings":"2bAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,YAAAE,EAAA,SAAAC,EAAA,SAAAC,EAAA,UAAAC,EAAA,YAAAC,ICAO,SAASC,EAAMC,EAAsB,CACtC,SAAS,aAAe,UAC1BA,EAAG,EAEH,SAAS,iBAAiB,mBAAoBA,CAAE,CAEpD,CCNO,SAASC,GAAa,CAAC,CAEvB,SAASC,GAAe,CAC7B,IAAMC,EAAM,8BACZ,eAAQ,IAAIA,CAAG,EACRA,CACT,CAEO,SAASC,EAAQC,EAA4B,CAClD,OAAO,IAAI,QAAQ,CAACC,EAAGC,IAAW,WAAW,IAAMA,EAAO,IAAI,MAAM,iBAAiB,CAAC,EAAGF,CAAE,CAAC,CAC9F,CCLO,IAAMG,EAAN,KAAiC,CAItC,YAAYC,EAAwB,CAClC,KAAK,IAAMA,GAAA,KAAAA,EAAW,CAAC,CACzB,CAEQ,IAA+BC,EAA0B,CAC/D,IAAMC,EAAS,KAAK,IAAID,CAAG,EAC3B,GAAI,CAACC,EACH,MAAM,IAAI,MACR,UAAUD,CAAG,0FAA0FA,CAAG,KAC5G,EAGF,OAAOC,CACT,CAGA,gBAA+B,CAE7B,OADiB,KAAK,IAAI,UAAU,EACpB,OAAO,CACzB,CACF,EC7BO,IAAMC,EAAW,CACtB,IAAK,CACH,UAAW,OAAO,SAAS,KAC3B,OAAQ,OAAO,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC,CAC/C,EAEA,QAAS,CACP,QAAS,MACT,QAAS,qBACX,EAEA,MAAM,OAAOC,EAAe,EAAG,CAE7B,IAAMC,EAAc,GAAG,KAAK,IAAI,SAAS,cAAcD,CAAI,GAC3D,GAAI,eAAe,QAAQC,CAAW,EAAK,OAAO,KAAK,MAAM,eAAe,QAAQA,CAAW,CAAW,EAM1G,IAAMC,EAAO,MAJI,MAAM,MACrB,uBAAuB,KAAK,IAAI,MAAM,sBAAsB,KAAK,QAAQ,OAAO,YAAY,KAAK,QAAQ,OAAO,EAClH,GAE4B,KAAK,EAEjC,KAAOA,EAAK,WAAW,CAErB,IAAMC,EAAW,MADE,MAAM,MAAMD,EAAK,SAAS,GACX,KAAK,EAEvCA,EAAK,WAAW,KAAK,GAAGC,EAAS,WAC9B,OAAQC,GACPF,EAAK,WACF,UAAWG,GAAkBA,EAAS,KAAOD,EAAa,EAAE,IAAM,EACvE,CACF,EACAF,EAAK,SAAS,KAAK,GAAGC,EAAS,SAC5B,OAAQG,GACPJ,EAAK,SACF,UAAWK,GAAiBA,EAAQ,KAAOD,EAAY,EAAE,IAAM,EACpE,CACF,EACAJ,EAAK,SAAWA,EAAK,SAAS,OAAOC,EAAS,QAAQ,EACtDD,EAAK,UAAYC,EAAS,SAC5B,CAEA,sBAAe,QAAQF,EAAa,KAAK,UAAUC,CAAI,CAAC,EACjDA,CACT,CACF,EC3CO,IAAMM,EAAO,CAClB,SAAAC,CACF,ECCO,IAAMC,EAAN,KAAiC,CAGtC,YAAYC,EAAwB,CAClC,KAAK,IAAMA,GAAA,KAAAA,EAAW,CAAC,CACzB,CAEQ,IAA+BC,EAA0B,CAC/D,IAAMC,EAAS,KAAK,IAAID,CAAG,EAC3B,GAAI,CAACC,EACH,MAAM,IAAI,MACR,UAAUD,CAAG,0FAA0FA,CAAG,KAC5G,EAGF,OAAOC,CACT,CAEA,gBAA+B,CAE7B,OADiB,KAAK,IAAI,UAAU,EACpB,OAAO,CACzB,CACF,ECtBO,SAASC,EAAOC,EAAoBC,EAAqC,CAAC,EAAe,CAC9F,IAAIC,EAAoD,KAExD,GAAID,EAAgB,OAAS,EAAG,CAC9B,IAAME,EAAgD,CAAC,EACvD,QAAWC,KAAOH,EAAiBE,EAAOC,CAAG,EAAIC,EAAKD,CAAG,EACzDF,EAAMC,CACR,CAEA,OAAQH,EAAS,CACf,IAAK,KACH,OAAO,IAAIM,EAAKJ,CAAG,EACrB,IAAK,KACH,OAAO,IAAIK,EAAKL,CAAG,EACrB,QACE,MAAM,IAAI,MAAM,2BAA2BF,CAAO,EAAE,CACxD,CACF","names":["index_exports","__export","create","noop","ping","ready","timeout","ready","fn","noop","ping","msg","timeout","ms","_","reject","HCv3","apiDeps","dep","module","articles","page","storageName","json","nextJson","nextCategory","category","nextSection","section","deps","articles","HCv4","apiDeps","dep","module","create","version","apiDependencies","api","result","dep","deps","HCv3","HCv4"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/dom/index.ts","../src/utils/index.ts","../src/v3/index.ts","../src/api/internal/index.ts","../src/api/articles/index.ts","../src/api/users/index.ts","../src/api/index.ts","../src/v4/index.ts","../src/hc/factory.ts"],"sourcesContent":["export * from \"./dom\";\nexport * from \"./utils\";\nexport * from \"./hc\";\n","export function ready(fn: () => void): void {\n if (document.readyState !== \"loading\") {\n fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn);\n }\n}\n","\nexport function timeout(ms: number): Promise<never> {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(\"Request timeout\")), ms));\n}\n","import type { APIDependencies, HCInstance } from \"../hc/types\";\n\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\nexport class HCv3 implements HCInstance {\n\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","export const internals = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n async getAuthorizationToken() {\n return fetch('/hc/api/internal/csrf_token.json')\n .then((response) => response.json())\n .then((response) => response.current_session.csrf_token)\n .catch((response) => {\n console.error(new Error(response));\n });\n }\n}","import { ArticleVoteParams } from \"../../shared/types\";\nimport { internals } from \"../internal\"\n\nexport const articles = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n general: {\n perPage: \"100\",\n include: \"categories,sections\"\n },\n\n async getAll(page: number = 1) {\n const storageName = `${this.web.subdomain}-articles-p${page}`;\n if (sessionStorage.getItem(storageName)) { return JSON.parse(sessionStorage.getItem(storageName) as string); }\n\n const response = await fetch(\n `/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`,\n );\n\n const json = await response.json();\n\n while (json.next_page) {\n const nextResult = await fetch(json.next_page);\n const nextJson = await nextResult.json();\n\n json.categories.push(...nextJson.categories\n .filter((nextCategory: any) =>\n json.categories\n .findIndex((category: any) => category.id === nextCategory.id) === -1\n )\n );\n json.sections.push(...nextJson.sections\n .filter((nextSection: any) =>\n json.sections\n .findIndex((section: any) => section.id === nextSection.id) === -1\n )\n );\n json.articles = json.articles.concat(nextJson.articles);\n json.next_page = nextJson.next_page;\n }\n\n sessionStorage.setItem(storageName, JSON.stringify(json));\n return json\n },\n\n async searchArticle(query: string) {\n const MAX_PAGES = 50;\n const REQUEST_TIMEOUT = 8000;\n const fetchWithTimeout = (url: string, options = {}) => {\n return Promise.race([\n fetch(url, options),\n new Promise((_, reject) =>\n setTimeout(() => reject(new Error(\"Request timeout\")), REQUEST_TIMEOUT)\n )\n ]);\n };\n\n try {\n if (!query || typeof query !== \"string\") {\n return { results: [], count: 0 };\n }\n const encoded = encodeURIComponent(query);\n let url = `/api/v2/help_center/articles/search.json?query=${encoded}`;\n let json = {\n results: [],\n next_page: url\n };\n\n let pageCount = 0;\n\n while (json.next_page) {\n if (pageCount > MAX_PAGES) {\n break;\n }\n\n const response = await fetchWithTimeout(json.next_page) as Response;\n\n if (!response.ok) break;\n\n\n const data = await response.json();\n if (!Array.isArray(data.results)) {\n break;\n }\n json.results = json.results.concat(data.results);\n json.next_page = data.next_page;\n\n pageCount++;\n }\n\n return json;\n\n } catch (error: any) {\n return { results: [], error: error.message };\n }\n },\n\n async vote({ articleId, vote }: ArticleVoteParams) {\n const sessionVotes = JSON.parse(sessionStorage.getItem('cur-votes') ?? '') || {};\n if (!['up', 'down'].includes(vote)) throw new Error(`Tipo de voto \"${vote}\" inválido`);\n try {\n const baseURL = `/api/v2/help_center/pt-br/articles/${articleId}/${vote}`;\n const response = await fetch(\n baseURL,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n 'x-csrf-token': await internals.getAuthorizationToken(),\n 'x-requested-with': 'XMLHttpRequest',\n },\n\n }\n );\n\n if (!response.ok) {\n throw {\n message: 'A API do Zendesk retornou um erro inesperado, tente novamente. Caso o erro persista, nos informe através de uma solicitação',\n code: response.status\n }\n };\n\n sessionVotes[articleId] = vote;\n sessionStorage.setItem('cur-votes', JSON.stringify(sessionVotes));\n\n return response.json();\n } catch (error: any) {\n return {\n error: true,\n message: `Ocorreu um erro ao votar no artigo de ID \"${articleId}\"`,\n originalError: `${error.code} - ${error.message}`\n }\n }\n }\n}","export const users = {\n\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n async me() {\n const json = await fetch('/api/v2/users/me.json')\n return json;\n }\n}","import { articles } from \"./articles\";\nimport { users } from \"./users\";\n\nexport const deps = {\n articles,\n users\n};","import type { APIDependencies, HCInstance } from \"../hc/types\";\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\n\nexport class HCv4 implements HCInstance {\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n\n searchForArticle(query: string): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.searchArticle(query);\n }\n}\n","import type { APIDependencies, HCInstance, HCVersion } from \"./types\";\nimport { HCv3 } from \"../v3\";\nimport { deps } from \"../api/index\"\nimport { HCv4 } from \"../v4\";\n\nexport function create(version: HCVersion, apiDependencies: APIDependencies[] = []): HCInstance {\n let api: Partial<Record<APIDependencies, any>> | null = null\n\n if (apiDependencies.length > 0) {\n const result: Partial<Record<APIDependencies, any>> = {}\n for (const dep of apiDependencies) result[dep] = deps[dep]\n api = result\n }\n\n switch (version) {\n case \"v3\":\n return new HCv3(api);\n case \"v4\":\n return new HCv4(api);\n default:\n throw new Error(`Unsupported HC version: ${version}`);\n }\n}\n"],"mappings":"2bAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,YAAAE,EAAA,UAAAC,EAAA,YAAAC,ICAO,SAASC,EAAMC,EAAsB,CACtC,SAAS,aAAe,UAC1BA,EAAG,EAEH,SAAS,iBAAiB,mBAAoBA,CAAE,CAEpD,CCLO,SAASC,EAAQC,EAA4B,CAClD,OAAO,IAAI,QAAQ,CAACC,EAAGC,IAAW,WAAW,IAAMA,EAAO,IAAI,MAAM,iBAAiB,CAAC,EAAGF,CAAE,CAAC,CAC9F,CCEO,IAAMG,EAAN,KAAiC,CAItC,YAAYC,EAAwB,CAClC,KAAK,IAAMA,GAAA,KAAAA,EAAW,CAAC,CACzB,CAEQ,IAA+BC,EAA0B,CAC/D,IAAMC,EAAS,KAAK,IAAID,CAAG,EAC3B,GAAI,CAACC,EACH,MAAM,IAAI,MACR,UAAUD,CAAG,0FAA0FA,CAAG,KAC5G,EAGF,OAAOC,CACT,CAGA,gBAA+B,CAE7B,OADiB,KAAK,IAAI,UAAU,EACpB,OAAO,CACzB,CACF,EC7BO,IAAMC,EAAY,CACvB,IAAK,CACH,UAAW,OAAO,SAAS,KAC3B,OAAQ,OAAO,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC,CAC/C,EAEA,MAAM,uBAAwB,CAC5B,OAAO,MAAM,kCAAkC,EAC5C,KAAMC,GAAaA,EAAS,KAAK,CAAC,EAClC,KAAMA,GAAaA,EAAS,gBAAgB,UAAU,EACtD,MAAOA,GAAa,CACnB,QAAQ,MAAM,IAAI,MAAMA,CAAQ,CAAC,CACnC,CAAC,CACL,CACF,ECXO,IAAMC,EAAW,CACtB,IAAK,CACH,UAAW,OAAO,SAAS,KAC3B,OAAQ,OAAO,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC,CAC/C,EAEA,QAAS,CACP,QAAS,MACT,QAAS,qBACX,EAEA,MAAM,OAAOC,EAAe,EAAG,CAC7B,IAAMC,EAAc,GAAG,KAAK,IAAI,SAAS,cAAcD,CAAI,GAC3D,GAAI,eAAe,QAAQC,CAAW,EAAK,OAAO,KAAK,MAAM,eAAe,QAAQA,CAAW,CAAW,EAM1G,IAAMC,EAAO,MAJI,MAAM,MACrB,uBAAuB,KAAK,IAAI,MAAM,sBAAsB,KAAK,QAAQ,OAAO,YAAY,KAAK,QAAQ,OAAO,EAClH,GAE4B,KAAK,EAEjC,KAAOA,EAAK,WAAW,CAErB,IAAMC,EAAW,MADE,MAAM,MAAMD,EAAK,SAAS,GACX,KAAK,EAEvCA,EAAK,WAAW,KAAK,GAAGC,EAAS,WAC9B,OAAQC,GACPF,EAAK,WACF,UAAWG,GAAkBA,EAAS,KAAOD,EAAa,EAAE,IAAM,EACvE,CACF,EACAF,EAAK,SAAS,KAAK,GAAGC,EAAS,SAC5B,OAAQG,GACPJ,EAAK,SACF,UAAWK,GAAiBA,EAAQ,KAAOD,EAAY,EAAE,IAAM,EACpE,CACF,EACAJ,EAAK,SAAWA,EAAK,SAAS,OAAOC,EAAS,QAAQ,EACtDD,EAAK,UAAYC,EAAS,SAC5B,CAEA,sBAAe,QAAQF,EAAa,KAAK,UAAUC,CAAI,CAAC,EACjDA,CACT,EAEC,MAAM,cAAcM,EAAe,CAGlC,IAAMC,EAAmB,CAACC,EAAaC,EAAU,CAAC,IACzC,QAAQ,KAAK,CAClB,MAAMD,EAAKC,CAAO,EAClB,IAAI,QAAQ,CAACC,EAAGC,IACd,WAAW,IAAMA,EAAO,IAAI,MAAM,iBAAiB,CAAC,EAAG,GAAe,CACxE,CACF,CAAC,EAGH,GAAI,CACF,GAAI,CAACL,GAAS,OAAOA,GAAU,SAC7B,MAAO,CAAE,QAAS,CAAC,EAAG,MAAO,CAAE,EAGjC,IAAIE,EAAM,kDADM,mBAAmBF,CAAK,CAC2B,GAC/DN,EAAO,CACT,QAAS,CAAC,EACV,UAAWQ,CACb,EAEII,EAAY,EAEhB,KAAOZ,EAAK,WACN,EAAAY,EAAY,KADK,CAKrB,IAAMC,EAAW,MAAMN,EAAiBP,EAAK,SAAS,EAEtD,GAAI,CAACa,EAAS,GAAI,MAGlB,IAAMC,EAAO,MAAMD,EAAS,KAAK,EACjC,GAAI,CAAC,MAAM,QAAQC,EAAK,OAAO,EAC7B,MAEFd,EAAK,QAAUA,EAAK,QAAQ,OAAOc,EAAK,OAAO,EAC/Cd,EAAK,UAAYc,EAAK,UAEtBF,GACF,CAEA,OAAOZ,CAET,OAASe,EAAY,CACnB,MAAO,CAAE,QAAS,CAAC,EAAG,MAAOA,EAAM,OAAQ,CAC7C,CACF,EAEA,MAAM,KAAK,CAAE,UAAAC,EAAW,KAAAC,CAAK,EAAsB,CApGrD,IAAAC,EAqGI,IAAMC,EAAe,KAAK,OAAMD,EAAA,eAAe,QAAQ,WAAW,IAAlC,KAAAA,EAAuC,EAAE,GAAK,CAAC,EAC/E,GAAI,CAAC,CAAC,KAAM,MAAM,EAAE,SAASD,CAAI,EAAG,MAAM,IAAI,MAAM,iBAAiBA,CAAI,eAAY,EACrF,GAAI,CACF,IAAMG,EAAU,sCAAsCJ,CAAS,IAAIC,CAAI,GACjEJ,EAAW,MAAM,MACrBO,EACA,CACE,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,eAAgB,MAAMC,EAAU,sBAAsB,EACtD,mBAAoB,gBACtB,CAEF,CACF,EAEA,GAAI,CAACR,EAAS,GACZ,KAAM,CACJ,QAAS,uIACT,KAAMA,EAAS,MACjB,EAGF,OAAAM,EAAaH,CAAS,EAAIC,EAC1B,eAAe,QAAQ,YAAa,KAAK,UAAUE,CAAY,CAAC,EAEzDN,EAAS,KAAK,CACvB,OAASE,EAAY,CACnB,MAAO,CACL,MAAO,GACP,QAAS,6CAA6CC,CAAS,IAC/D,cAAe,GAAGD,EAAM,IAAI,MAAMA,EAAM,OAAO,EACjD,CACF,CACF,CACF,ECzIO,IAAMO,EAAQ,CAEnB,IAAK,CACH,UAAW,OAAO,SAAS,KAC3B,OAAQ,OAAO,SAAS,SAAS,MAAM,GAAG,EAAE,CAAC,CAC/C,EAEA,MAAM,IAAK,CAET,OADa,MAAM,MAAM,uBAAuB,CAElD,CACF,ECRO,IAAMC,EAAO,CAClB,SAAAC,EACA,MAAAC,CACF,ECDO,IAAMC,EAAN,KAAiC,CAGtC,YAAYC,EAAwB,CAClC,KAAK,IAAMA,GAAA,KAAAA,EAAW,CAAC,CACzB,CAEQ,IAA+BC,EAA0B,CAC/D,IAAMC,EAAS,KAAK,IAAID,CAAG,EAC3B,GAAI,CAACC,EACH,MAAM,IAAI,MACR,UAAUD,CAAG,0FAA0FA,CAAG,KAC5G,EAGF,OAAOC,CACT,CAEA,gBAA+B,CAE7B,OADiB,KAAK,IAAI,UAAU,EACpB,OAAO,CACzB,CAEA,iBAAiBC,EAA6B,CAE5C,OADiB,KAAK,IAAI,UAAU,EACpB,cAAcA,CAAK,CACrC,CACF,EC3BO,SAASC,EAAOC,EAAoBC,EAAqC,CAAC,EAAe,CAC9F,IAAIC,EAAoD,KAExD,GAAID,EAAgB,OAAS,EAAG,CAC9B,IAAME,EAAgD,CAAC,EACvD,QAAWC,KAAOH,EAAiBE,EAAOC,CAAG,EAAIC,EAAKD,CAAG,EACzDF,EAAMC,CACR,CAEA,OAAQH,EAAS,CACf,IAAK,KACH,OAAO,IAAIM,EAAKJ,CAAG,EACrB,IAAK,KACH,OAAO,IAAIK,EAAKL,CAAG,EACrB,QACE,MAAM,IAAI,MAAM,2BAA2BF,CAAO,EAAE,CACxD,CACF","names":["index_exports","__export","create","ready","timeout","ready","fn","timeout","ms","_","reject","HCv3","apiDeps","dep","module","internals","response","articles","page","storageName","json","nextJson","nextCategory","category","nextSection","section","query","fetchWithTimeout","url","options","_","reject","pageCount","response","data","error","articleId","vote","_a","sessionVotes","baseURL","internals","users","deps","articles","users","HCv4","apiDeps","dep","module","query","create","version","apiDependencies","api","result","dep","deps","HCv3","HCv4"]}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var u=Object.defineProperty;var y=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var P=(t,e)=>{for(var r in e)u(t,r,{get:e[r],enumerable:!0})},I=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of A(e))!x.call(t,n)&&n!==r&&u(t,n,{get:()=>e[n],enumerable:!(s=y(e,n))||s.enumerable});return t};var v=t=>I(u({},"__esModule",{value:!0}),t);var E={};P(E,{create:()=>w,ready:()=>_,timeout:()=>C});module.exports=v(E);function _(t){document.readyState!=="loading"?t():document.addEventListener("DOMContentLoaded",t)}function C(t){return new Promise((e,r)=>setTimeout(()=>r(new Error("Request timeout")),t))}var c=class{constructor(e){this.api=e!=null?e:{}}use(e){let r=this.api[e];if(!r)throw new Error(`HCv4: "${e}" was not provided as a dependency. Pass it when creating the instance: create("v4", ["${e}"])`);return r}getAllArticles(){return this.use("articles").getAll()}};var m={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},async getAuthorizationToken(){return fetch("/hc/api/internal/csrf_token.json").then(t=>t.json()).then(t=>t.current_session.csrf_token).catch(t=>{console.error(new Error(t))})}};var h={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},general:{perPage:"100",include:"categories,sections"},async getAll(t=1){let e=`${this.web.subdomain}-articles-p${t}`;if(sessionStorage.getItem(e))return JSON.parse(sessionStorage.getItem(e));let s=await(await fetch(`/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`)).json();for(;s.next_page;){let o=await(await fetch(s.next_page)).json();s.categories.push(...o.categories.filter(i=>s.categories.findIndex(a=>a.id===i.id)===-1)),s.sections.push(...o.sections.filter(i=>s.sections.findIndex(a=>a.id===i.id)===-1)),s.articles=s.articles.concat(o.articles),s.next_page=o.next_page}return sessionStorage.setItem(e,JSON.stringify(s)),s},async searchArticle(t){let s=(n,o={})=>Promise.race([fetch(n,o),new Promise((i,a)=>setTimeout(()=>a(new Error("Request timeout")),8e3))]);try{if(!t||typeof t!="string")return{results:[],count:0};let o=`/api/v2/help_center/articles/search.json?query=${encodeURIComponent(t)}`,i={results:[],next_page:o},a=0;for(;i.next_page&&!(a>50);){let d=await s(i.next_page);if(!d.ok)break;let l=await d.json();if(!Array.isArray(l.results))break;i.results=i.results.concat(l.results),i.next_page=l.next_page,a++}return i}catch(n){return{results:[],error:n.message}}},async vote({articleId:t,vote:e}){var s;let r=JSON.parse((s=sessionStorage.getItem("cur-votes"))!=null?s:"")||{};if(!["up","down"].includes(e))throw new Error(`Tipo de voto "${e}" inv\xE1lido`);try{let n=`/api/v2/help_center/pt-br/articles/${t}/${e}`,o=await fetch(n,{method:"POST",headers:{"content-type":"application/json","x-csrf-token":await m.getAuthorizationToken(),"x-requested-with":"XMLHttpRequest"}});if(!o.ok)throw{message:"A API do Zendesk retornou um erro inesperado, tente novamente. Caso o erro persista, nos informe atrav\xE9s de uma solicita\xE7\xE3o",code:o.status};return r[t]=e,sessionStorage.setItem("cur-votes",JSON.stringify(r)),o.json()}catch(n){return{error:!0,message:`Ocorreu um erro ao votar no artigo de ID "${t}"`,originalError:`${n.code} - ${n.message}`}}}};var f={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},async me(){return await fetch("/api/v2/users/me.json")}};var g={articles:h,users:f};var p=class{constructor(e){this.api=e!=null?e:{}}use(e){let r=this.api[e];if(!r)throw new Error(`HCv4: "${e}" was not provided as a dependency. Pass it when creating the instance: create("v4", ["${e}"])`);return r}getAllArticles(){return this.use("articles").getAll()}searchForArticle(e){return this.use("articles").searchArticle(e)}};function w(t,e=[]){let r=null;if(e.length>0){let s={};for(let n of e)s[n]=g[n];r=s}switch(t){case"v3":return new c(r);case"v4":return new p(r);default:throw new Error(`Unsupported HC version: ${t}`)}}0&&(module.exports={create,ready,timeout});
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/dom/index.ts","../src/utils/index.ts","../src/v3/index.ts","../src/api/articles/index.ts","../src/api/index.ts","../src/v4/index.ts","../src/hc/factory.ts"],"sourcesContent":["export * from \"./dom\";\nexport * from \"./utils\";\nexport * from \"./hc\";\n","export function ready(fn: () => void): void {\n if (document.readyState !== \"loading\") {\n fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn);\n }\n}\n","export function noop(): void {}\n\nexport function ping(): string {\n const msg = \"hc-lib loaded successfully!\";\n console.log(msg);\n return msg;\n}\n\nexport function timeout(ms: number): Promise<never> {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(\"Request timeout\")), ms));\n}\n","import type { APIDependencies, HCInstance } from \"../hc/types\";\n\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\nexport class HCv3 implements HCInstance {\n\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","export const articles = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n general: {\n perPage: \"100\",\n include: \"categories,sections\"\n },\n\n async getAll(page: number = 1) {\n \n const storageName = `${this.web.subdomain}-articles-p${page}`;\n if (sessionStorage.getItem(storageName)) { return JSON.parse(sessionStorage.getItem(storageName) as string); }\n\n const response = await fetch(\n `/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`,\n );\n\n const json = await response.json();\n\n while (json.next_page) {\n const nextResult = await fetch(json.next_page);\n const nextJson = await nextResult.json();\n\n json.categories.push(...nextJson.categories\n .filter((nextCategory: any) =>\n json.categories\n .findIndex((category: any) => category.id === nextCategory.id) === -1\n )\n );\n json.sections.push(...nextJson.sections\n .filter((nextSection: any) =>\n json.sections\n .findIndex((section: any) => section.id === nextSection.id) === -1\n )\n );\n json.articles = json.articles.concat(nextJson.articles);\n json.next_page = nextJson.next_page;\n }\n\n sessionStorage.setItem(storageName, JSON.stringify(json));\n return json\n }\n}","import { articles } from \"./articles\";\n\nexport const deps = {\n articles,\n};","import type { APIDependencies, HCInstance } from \"../hc/types\";\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\n\nexport class HCv4 implements HCInstance {\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","import type { APIDependencies, HCInstance, HCVersion } from \"./types\";\nimport { HCv3 } from \"../v3\";\nimport { deps } from \"../api/index\"\nimport { HCv4 } from \"../v4\";\n\nexport function create(version: HCVersion, apiDependencies: APIDependencies[] = []): HCInstance {\n let api: Partial<Record<APIDependencies, any>> | null = null\n\n if (apiDependencies.length > 0) {\n const result: Partial<Record<APIDependencies, any>> = {}\n for (const dep of apiDependencies) result[dep] = deps[dep]\n api = result\n }\n\n switch (version) {\n case \"v3\":\n return new HCv3(api);\n case \"v4\":\n return new HCv4(api);\n default:\n throw new Error(`Unsupported HC version: ${version}`);\n }\n}\n"],"mappings":"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","names":["index_exports","__export","create","noop","ping","ready","timeout","__toCommonJS","ready","fn","noop","ping","msg","timeout","ms","_","reject","HCv3","apiDeps","dep","module","articles","page","storageName","json","nextJson","nextCategory","category","nextSection","section","deps","articles","HCv4","apiDeps","dep","module","create","version","apiDependencies","api","result","dep","deps","HCv3","HCv4"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/dom/index.ts","../src/utils/index.ts","../src/v3/index.ts","../src/api/internal/index.ts","../src/api/articles/index.ts","../src/api/users/index.ts","../src/api/index.ts","../src/v4/index.ts","../src/hc/factory.ts"],"sourcesContent":["export * from \"./dom\";\nexport * from \"./utils\";\nexport * from \"./hc\";\n","export function ready(fn: () => void): void {\n if (document.readyState !== \"loading\") {\n fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn);\n }\n}\n","\nexport function timeout(ms: number): Promise<never> {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(\"Request timeout\")), ms));\n}\n","import type { APIDependencies, HCInstance } from \"../hc/types\";\n\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\nexport class HCv3 implements HCInstance {\n\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","export const internals = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n async getAuthorizationToken() {\n return fetch('/hc/api/internal/csrf_token.json')\n .then((response) => response.json())\n .then((response) => response.current_session.csrf_token)\n .catch((response) => {\n console.error(new Error(response));\n });\n }\n}","import { ArticleVoteParams } from \"../../shared/types\";\nimport { internals } from \"../internal\"\n\nexport const articles = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n general: {\n perPage: \"100\",\n include: \"categories,sections\"\n },\n\n async getAll(page: number = 1) {\n const storageName = `${this.web.subdomain}-articles-p${page}`;\n if (sessionStorage.getItem(storageName)) { return JSON.parse(sessionStorage.getItem(storageName) as string); }\n\n const response = await fetch(\n `/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`,\n );\n\n const json = await response.json();\n\n while (json.next_page) {\n const nextResult = await fetch(json.next_page);\n const nextJson = await nextResult.json();\n\n json.categories.push(...nextJson.categories\n .filter((nextCategory: any) =>\n json.categories\n .findIndex((category: any) => category.id === nextCategory.id) === -1\n )\n );\n json.sections.push(...nextJson.sections\n .filter((nextSection: any) =>\n json.sections\n .findIndex((section: any) => section.id === nextSection.id) === -1\n )\n );\n json.articles = json.articles.concat(nextJson.articles);\n json.next_page = nextJson.next_page;\n }\n\n sessionStorage.setItem(storageName, JSON.stringify(json));\n return json\n },\n\n async searchArticle(query: string) {\n const MAX_PAGES = 50;\n const REQUEST_TIMEOUT = 8000;\n const fetchWithTimeout = (url: string, options = {}) => {\n return Promise.race([\n fetch(url, options),\n new Promise((_, reject) =>\n setTimeout(() => reject(new Error(\"Request timeout\")), REQUEST_TIMEOUT)\n )\n ]);\n };\n\n try {\n if (!query || typeof query !== \"string\") {\n return { results: [], count: 0 };\n }\n const encoded = encodeURIComponent(query);\n let url = `/api/v2/help_center/articles/search.json?query=${encoded}`;\n let json = {\n results: [],\n next_page: url\n };\n\n let pageCount = 0;\n\n while (json.next_page) {\n if (pageCount > MAX_PAGES) {\n break;\n }\n\n const response = await fetchWithTimeout(json.next_page) as Response;\n\n if (!response.ok) break;\n\n\n const data = await response.json();\n if (!Array.isArray(data.results)) {\n break;\n }\n json.results = json.results.concat(data.results);\n json.next_page = data.next_page;\n\n pageCount++;\n }\n\n return json;\n\n } catch (error: any) {\n return { results: [], error: error.message };\n }\n },\n\n async vote({ articleId, vote }: ArticleVoteParams) {\n const sessionVotes = JSON.parse(sessionStorage.getItem('cur-votes') ?? '') || {};\n if (!['up', 'down'].includes(vote)) throw new Error(`Tipo de voto \"${vote}\" inválido`);\n try {\n const baseURL = `/api/v2/help_center/pt-br/articles/${articleId}/${vote}`;\n const response = await fetch(\n baseURL,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n 'x-csrf-token': await internals.getAuthorizationToken(),\n 'x-requested-with': 'XMLHttpRequest',\n },\n\n }\n );\n\n if (!response.ok) {\n throw {\n message: 'A API do Zendesk retornou um erro inesperado, tente novamente. Caso o erro persista, nos informe através de uma solicitação',\n code: response.status\n }\n };\n\n sessionVotes[articleId] = vote;\n sessionStorage.setItem('cur-votes', JSON.stringify(sessionVotes));\n\n return response.json();\n } catch (error: any) {\n return {\n error: true,\n message: `Ocorreu um erro ao votar no artigo de ID \"${articleId}\"`,\n originalError: `${error.code} - ${error.message}`\n }\n }\n }\n}","export const users = {\n\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n async me() {\n const json = await fetch('/api/v2/users/me.json')\n return json;\n }\n}","import { articles } from \"./articles\";\nimport { users } from \"./users\";\n\nexport const deps = {\n articles,\n users\n};","import type { APIDependencies, HCInstance } from \"../hc/types\";\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\n\nexport class HCv4 implements HCInstance {\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n\n searchForArticle(query: string): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.searchArticle(query);\n }\n}\n","import type { APIDependencies, HCInstance, HCVersion } from \"./types\";\nimport { HCv3 } from \"../v3\";\nimport { deps } from \"../api/index\"\nimport { HCv4 } from \"../v4\";\n\nexport function create(version: HCVersion, apiDependencies: APIDependencies[] = []): HCInstance {\n let api: Partial<Record<APIDependencies, any>> | null = null\n\n if (apiDependencies.length > 0) {\n const result: Partial<Record<APIDependencies, any>> = {}\n for (const dep of apiDependencies) result[dep] = deps[dep]\n api = result\n }\n\n switch (version) {\n case \"v3\":\n return new HCv3(api);\n case \"v4\":\n return new HCv4(api);\n default:\n throw new Error(`Unsupported HC version: ${version}`);\n }\n}\n"],"mappings":"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","names":["index_exports","__export","create","ready","timeout","__toCommonJS","ready","fn","timeout","ms","_","reject","HCv3","apiDeps","dep","module","internals","response","articles","page","storageName","json","nextJson","nextCategory","category","nextSection","section","query","fetchWithTimeout","url","options","_","reject","pageCount","response","data","error","articleId","vote","_a","sessionVotes","baseURL","internals","users","deps","articles","users","HCv4","apiDeps","dep","module","query","create","version","apiDependencies","api","result","dep","deps","HCv3","HCv4"]}
|
package/dist/index.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function
|
|
1
|
+
function w(t){document.readyState!=="loading"?t():document.addEventListener("DOMContentLoaded",t)}function A(t){return new Promise((e,s)=>setTimeout(()=>s(new Error("Request timeout")),t))}var c=class{constructor(e){this.api=e!=null?e:{}}use(e){let s=this.api[e];if(!s)throw new Error(`HCv4: "${e}" was not provided as a dependency. Pass it when creating the instance: create("v4", ["${e}"])`);return s}getAllArticles(){return this.use("articles").getAll()}};var d={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},async getAuthorizationToken(){return fetch("/hc/api/internal/csrf_token.json").then(t=>t.json()).then(t=>t.current_session.csrf_token).catch(t=>{console.error(new Error(t))})}};var m={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},general:{perPage:"100",include:"categories,sections"},async getAll(t=1){let e=`${this.web.subdomain}-articles-p${t}`;if(sessionStorage.getItem(e))return JSON.parse(sessionStorage.getItem(e));let r=await(await fetch(`/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`)).json();for(;r.next_page;){let o=await(await fetch(r.next_page)).json();r.categories.push(...o.categories.filter(i=>r.categories.findIndex(a=>a.id===i.id)===-1)),r.sections.push(...o.sections.filter(i=>r.sections.findIndex(a=>a.id===i.id)===-1)),r.articles=r.articles.concat(o.articles),r.next_page=o.next_page}return sessionStorage.setItem(e,JSON.stringify(r)),r},async searchArticle(t){let r=(n,o={})=>Promise.race([fetch(n,o),new Promise((i,a)=>setTimeout(()=>a(new Error("Request timeout")),8e3))]);try{if(!t||typeof t!="string")return{results:[],count:0};let o=`/api/v2/help_center/articles/search.json?query=${encodeURIComponent(t)}`,i={results:[],next_page:o},a=0;for(;i.next_page&&!(a>50);){let u=await r(i.next_page);if(!u.ok)break;let l=await u.json();if(!Array.isArray(l.results))break;i.results=i.results.concat(l.results),i.next_page=l.next_page,a++}return i}catch(n){return{results:[],error:n.message}}},async vote({articleId:t,vote:e}){var r;let s=JSON.parse((r=sessionStorage.getItem("cur-votes"))!=null?r:"")||{};if(!["up","down"].includes(e))throw new Error(`Tipo de voto "${e}" inv\xE1lido`);try{let n=`/api/v2/help_center/pt-br/articles/${t}/${e}`,o=await fetch(n,{method:"POST",headers:{"content-type":"application/json","x-csrf-token":await d.getAuthorizationToken(),"x-requested-with":"XMLHttpRequest"}});if(!o.ok)throw{message:"A API do Zendesk retornou um erro inesperado, tente novamente. Caso o erro persista, nos informe atrav\xE9s de uma solicita\xE7\xE3o",code:o.status};return s[t]=e,sessionStorage.setItem("cur-votes",JSON.stringify(s)),o.json()}catch(n){return{error:!0,message:`Ocorreu um erro ao votar no artigo de ID "${t}"`,originalError:`${n.code} - ${n.message}`}}}};var h={web:{subdomain:window.location.host,locale:window.location.pathname.split("/")[2]},async me(){return await fetch("/api/v2/users/me.json")}};var f={articles:m,users:h};var p=class{constructor(e){this.api=e!=null?e:{}}use(e){let s=this.api[e];if(!s)throw new Error(`HCv4: "${e}" was not provided as a dependency. Pass it when creating the instance: create("v4", ["${e}"])`);return s}getAllArticles(){return this.use("articles").getAll()}searchForArticle(e){return this.use("articles").searchArticle(e)}};function g(t,e=[]){let s=null;if(e.length>0){let r={};for(let n of e)r[n]=f[n];s=r}switch(t){case"v3":return new c(s);case"v4":return new p(s);default:throw new Error(`Unsupported HC version: ${t}`)}}export{g as create,w as ready,A as timeout};
|
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/dom/index.ts","../src/utils/index.ts","../src/v3/index.ts","../src/api/articles/index.ts","../src/api/index.ts","../src/v4/index.ts","../src/hc/factory.ts"],"sourcesContent":["export function ready(fn: () => void): void {\n if (document.readyState !== \"loading\") {\n fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn);\n }\n}\n","export function noop(): void {}\n\nexport function ping(): string {\n const msg = \"hc-lib loaded successfully!\";\n console.log(msg);\n return msg;\n}\n\nexport function timeout(ms: number): Promise<never> {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(\"Request timeout\")), ms));\n}\n","import type { APIDependencies, HCInstance } from \"../hc/types\";\n\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\nexport class HCv3 implements HCInstance {\n\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","export const articles = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n general: {\n perPage: \"100\",\n include: \"categories,sections\"\n },\n\n async getAll(page: number = 1) {\n \n const storageName = `${this.web.subdomain}-articles-p${page}`;\n if (sessionStorage.getItem(storageName)) { return JSON.parse(sessionStorage.getItem(storageName) as string); }\n\n const response = await fetch(\n `/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`,\n );\n\n const json = await response.json();\n\n while (json.next_page) {\n const nextResult = await fetch(json.next_page);\n const nextJson = await nextResult.json();\n\n json.categories.push(...nextJson.categories\n .filter((nextCategory: any) =>\n json.categories\n .findIndex((category: any) => category.id === nextCategory.id) === -1\n )\n );\n json.sections.push(...nextJson.sections\n .filter((nextSection: any) =>\n json.sections\n .findIndex((section: any) => section.id === nextSection.id) === -1\n )\n );\n json.articles = json.articles.concat(nextJson.articles);\n json.next_page = nextJson.next_page;\n }\n\n sessionStorage.setItem(storageName, JSON.stringify(json));\n return json\n }\n}","import { articles } from \"./articles\";\n\nexport const deps = {\n articles,\n};","import type { APIDependencies, HCInstance } from \"../hc/types\";\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\n\nexport class HCv4 implements HCInstance {\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","import type { APIDependencies, HCInstance, HCVersion } from \"./types\";\nimport { HCv3 } from \"../v3\";\nimport { deps } from \"../api/index\"\nimport { HCv4 } from \"../v4\";\n\nexport function create(version: HCVersion, apiDependencies: APIDependencies[] = []): HCInstance {\n let api: Partial<Record<APIDependencies, any>> | null = null\n\n if (apiDependencies.length > 0) {\n const result: Partial<Record<APIDependencies, any>> = {}\n for (const dep of apiDependencies) result[dep] = deps[dep]\n api = result\n }\n\n switch (version) {\n case \"v3\":\n return new HCv3(api);\n case \"v4\":\n return new HCv4(api);\n default:\n throw new Error(`Unsupported HC version: ${version}`);\n }\n}\n"],"mappings":"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","names":["ready","fn","noop","ping","msg","timeout","ms","_","reject","HCv3","apiDeps","dep","module","articles","page","storageName","json","nextJson","nextCategory","category","nextSection","section","deps","articles","HCv4","apiDeps","dep","module","create","version","apiDependencies","api","result","dep","deps","HCv3","HCv4"]}
|
|
1
|
+
{"version":3,"sources":["../src/dom/index.ts","../src/utils/index.ts","../src/v3/index.ts","../src/api/internal/index.ts","../src/api/articles/index.ts","../src/api/users/index.ts","../src/api/index.ts","../src/v4/index.ts","../src/hc/factory.ts"],"sourcesContent":["export function ready(fn: () => void): void {\n if (document.readyState !== \"loading\") {\n fn();\n } else {\n document.addEventListener(\"DOMContentLoaded\", fn);\n }\n}\n","\nexport function timeout(ms: number): Promise<never> {\n return new Promise((_, reject) => setTimeout(() => reject(new Error(\"Request timeout\")), ms));\n}\n","import type { APIDependencies, HCInstance } from \"../hc/types\";\n\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\nexport class HCv3 implements HCInstance {\n\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n}\n","export const internals = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n async getAuthorizationToken() {\n return fetch('/hc/api/internal/csrf_token.json')\n .then((response) => response.json())\n .then((response) => response.current_session.csrf_token)\n .catch((response) => {\n console.error(new Error(response));\n });\n }\n}","import { ArticleVoteParams } from \"../../shared/types\";\nimport { internals } from \"../internal\"\n\nexport const articles = {\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n general: {\n perPage: \"100\",\n include: \"categories,sections\"\n },\n\n async getAll(page: number = 1) {\n const storageName = `${this.web.subdomain}-articles-p${page}`;\n if (sessionStorage.getItem(storageName)) { return JSON.parse(sessionStorage.getItem(storageName) as string); }\n\n const response = await fetch(\n `/api/v2/help_center/${this.web.locale}/articles?per_page=${this.general.perPage}&include=${this.general.include}`,\n );\n\n const json = await response.json();\n\n while (json.next_page) {\n const nextResult = await fetch(json.next_page);\n const nextJson = await nextResult.json();\n\n json.categories.push(...nextJson.categories\n .filter((nextCategory: any) =>\n json.categories\n .findIndex((category: any) => category.id === nextCategory.id) === -1\n )\n );\n json.sections.push(...nextJson.sections\n .filter((nextSection: any) =>\n json.sections\n .findIndex((section: any) => section.id === nextSection.id) === -1\n )\n );\n json.articles = json.articles.concat(nextJson.articles);\n json.next_page = nextJson.next_page;\n }\n\n sessionStorage.setItem(storageName, JSON.stringify(json));\n return json\n },\n\n async searchArticle(query: string) {\n const MAX_PAGES = 50;\n const REQUEST_TIMEOUT = 8000;\n const fetchWithTimeout = (url: string, options = {}) => {\n return Promise.race([\n fetch(url, options),\n new Promise((_, reject) =>\n setTimeout(() => reject(new Error(\"Request timeout\")), REQUEST_TIMEOUT)\n )\n ]);\n };\n\n try {\n if (!query || typeof query !== \"string\") {\n return { results: [], count: 0 };\n }\n const encoded = encodeURIComponent(query);\n let url = `/api/v2/help_center/articles/search.json?query=${encoded}`;\n let json = {\n results: [],\n next_page: url\n };\n\n let pageCount = 0;\n\n while (json.next_page) {\n if (pageCount > MAX_PAGES) {\n break;\n }\n\n const response = await fetchWithTimeout(json.next_page) as Response;\n\n if (!response.ok) break;\n\n\n const data = await response.json();\n if (!Array.isArray(data.results)) {\n break;\n }\n json.results = json.results.concat(data.results);\n json.next_page = data.next_page;\n\n pageCount++;\n }\n\n return json;\n\n } catch (error: any) {\n return { results: [], error: error.message };\n }\n },\n\n async vote({ articleId, vote }: ArticleVoteParams) {\n const sessionVotes = JSON.parse(sessionStorage.getItem('cur-votes') ?? '') || {};\n if (!['up', 'down'].includes(vote)) throw new Error(`Tipo de voto \"${vote}\" inválido`);\n try {\n const baseURL = `/api/v2/help_center/pt-br/articles/${articleId}/${vote}`;\n const response = await fetch(\n baseURL,\n {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n 'x-csrf-token': await internals.getAuthorizationToken(),\n 'x-requested-with': 'XMLHttpRequest',\n },\n\n }\n );\n\n if (!response.ok) {\n throw {\n message: 'A API do Zendesk retornou um erro inesperado, tente novamente. Caso o erro persista, nos informe através de uma solicitação',\n code: response.status\n }\n };\n\n sessionVotes[articleId] = vote;\n sessionStorage.setItem('cur-votes', JSON.stringify(sessionVotes));\n\n return response.json();\n } catch (error: any) {\n return {\n error: true,\n message: `Ocorreu um erro ao votar no artigo de ID \"${articleId}\"`,\n originalError: `${error.code} - ${error.message}`\n }\n }\n }\n}","export const users = {\n\n web: {\n subdomain: window.location.host,\n locale: window.location.pathname.split(\"/\")[2]\n },\n\n async me() {\n const json = await fetch('/api/v2/users/me.json')\n return json;\n }\n}","import { articles } from \"./articles\";\nimport { users } from \"./users\";\n\nexport const deps = {\n articles,\n users\n};","import type { APIDependencies, HCInstance } from \"../hc/types\";\nimport type { deps } from \"../api\";\n\ntype ApiMap = Partial<{ [K in APIDependencies]: (typeof deps)[K] }>;\n\nexport class HCv4 implements HCInstance {\n private api: ApiMap;\n\n constructor(apiDeps: ApiMap | null) {\n this.api = apiDeps ?? {};\n }\n\n private use<K extends APIDependencies>(dep: K): (typeof deps)[K] {\n const module = this.api[dep];\n if (!module) {\n throw new Error(\n `HCv4: \"${dep}\" was not provided as a dependency. Pass it when creating the instance: create(\"v4\", [\"${dep}\"])`\n );\n }\n\n return module as (typeof deps)[K];\n }\n\n getAllArticles(): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.getAll();\n }\n\n searchForArticle(query: string): Promise<any> {\n const articles = this.use(\"articles\");\n return articles.searchArticle(query);\n }\n}\n","import type { APIDependencies, HCInstance, HCVersion } from \"./types\";\nimport { HCv3 } from \"../v3\";\nimport { deps } from \"../api/index\"\nimport { HCv4 } from \"../v4\";\n\nexport function create(version: HCVersion, apiDependencies: APIDependencies[] = []): HCInstance {\n let api: Partial<Record<APIDependencies, any>> | null = null\n\n if (apiDependencies.length > 0) {\n const result: Partial<Record<APIDependencies, any>> = {}\n for (const dep of apiDependencies) result[dep] = deps[dep]\n api = result\n }\n\n switch (version) {\n case \"v3\":\n return new HCv3(api);\n case \"v4\":\n return new HCv4(api);\n default:\n throw new Error(`Unsupported HC version: ${version}`);\n }\n}\n"],"mappings":"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","names":["ready","fn","timeout","ms","_","reject","HCv3","apiDeps","dep","module","internals","response","articles","page","storageName","json","nextJson","nextCategory","category","nextSection","section","query","fetchWithTimeout","url","options","_","reject","pageCount","response","data","error","articleId","vote","_a","sessionVotes","baseURL","internals","users","deps","articles","users","HCv4","apiDeps","dep","module","query","create","version","apiDependencies","api","result","dep","deps","HCv3","HCv4"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@matheusdev20/hc-lib",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "An typescript library to implement common function and utilities for Help Center development",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "tsup",
|
|
13
13
|
"dev": "tsup --watch",
|
|
14
|
-
"test": "jest"
|
|
14
|
+
"test": "jest --coverage"
|
|
15
15
|
},
|
|
16
16
|
"keywords": [],
|
|
17
17
|
"author": "",
|