@dropins/tools 1.6.0-alpha4 → 1.6.0-alpha6

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/fetch-graphql.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- var b=Object.defineProperty;var F=(r,t,e)=>t in r?b(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var h=(r,t,e)=>F(r,typeof t!="symbol"?t+"":t,e);const u={"Content-Type":"application/json",Accept:"application/json"};class H{constructor(){h(this,"_endpoint");h(this,"_inheritHeaders");h(this,"_fetchGraphQlHeaders",{});h(this,"_beforeHooks",[]);h(this,"_afterHooks",[])}get endpoint(){return this._endpoint}get fetchGraphQlHeaders(){return this._fetchGraphQlHeaders}setEndpoint(t,e){this._endpoint=t,this._inheritHeaders=e==null?void 0:e.inheritHeaders}setFetchGraphQlHeader(t,e){this._fetchGraphQlHeaders={...this.fetchGraphQlHeaders,[t]:e}}removeFetchGraphQlHeader(t){delete this._fetchGraphQlHeaders[t]}getFetchGraphQlHeader(t){return this._fetchGraphQlHeaders[t]}setFetchGraphQlHeaders(t){typeof t=="function"?this._fetchGraphQlHeaders={...this._fetchGraphQlHeaders,...t(this._fetchGraphQlHeaders)}:this._fetchGraphQlHeaders={...t}}addBeforeHook(t){this._beforeHooks.push(t)}addAfterHook(t){this._afterHooks.push(t)}async fetchGraphQl(t,e){const l=this.endpoint,p=this.fetchGraphQlHeaders;if(!l)throw Error('Missing "url"');const s=(e==null?void 0:e.method)??"POST",G=e==null?void 0:e.cache,Q=e==null?void 0:e.signal;let f;const d=new URL(l),o={...u,...p};s==="POST"&&(f=JSON.stringify({query:t,variables:e==null?void 0:e.variables})),s==="GET"&&(d.searchParams.append("query",k(t)),e!=null&&e.variables&&d.searchParams.append("variables",JSON.stringify(e.variables)));let a={method:s,headers:o,body:f,cache:G,signal:Q};return a=await this._beforeHooks.reduce(async(i,c)=>c(await i),Promise.resolve(a)),await fetch(d,a).then(i=>i.json().then(c=>this._afterHooks.reduce(async(g,_)=>_(a,await g),Promise.resolve(c))))}getConfig(){return{endpoint:this.endpoint,fetchGraphQlHeaders:this.fetchGraphQlHeaders}}getMethods(){return{setEndpoint:this.setEndpoint.bind(this),setFetchGraphQlHeader:this.setFetchGraphQlHeader.bind(this),getFetchGraphQlHeader:this.getFetchGraphQlHeader.bind(this),removeFetchGraphQlHeader:this.removeFetchGraphQlHeader.bind(this),setFetchGraphQlHeaders:this.setFetchGraphQlHeaders.bind(this),fetchGraphQl:this.fetchGraphQl.bind(this),getConfig:this.getConfig.bind(this),addBeforeHook:this.addBeforeHook.bind(this),addAfterHook:this.addAfterHook.bind(this)}}}const n=new H;class v extends H{get endpoint(){return this._endpoint??n.endpoint}get fetchGraphQlHeaders(){return this._endpoint&&!this._inheritHeaders?this._fetchGraphQlHeaders:{...n.fetchGraphQlHeaders,...this._fetchGraphQlHeaders}}}function k(r){return r=r.replace(/#.*/g,""),r=r.replace(/\s+/g," "),r.trim()}const{setEndpoint:w,setFetchGraphQlHeaders:E,setFetchGraphQlHeader:P,getFetchGraphQlHeader:y,removeFetchGraphQlHeader:A,fetchGraphQl:C,getConfig:B,addBeforeHook:M,addAfterHook:O}=n.getMethods();export{v as FetchGraphQL,O as addAfterHook,M as addBeforeHook,C as fetchGraphQl,B as getConfig,y as getFetchGraphQlHeader,A as removeFetchGraphQlHeader,w as setEndpoint,P as setFetchGraphQlHeader,E as setFetchGraphQlHeaders};
3
+ var m=Object.defineProperty;var b=(r,t,e)=>t in r?m(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var s=(r,t,e)=>b(r,typeof t!="symbol"?t+"":t,e);const F={"Content-Type":"application/json",Accept:"application/json"};class f{constructor(){s(this,"_endpoint");s(this,"_fetchGraphQlHeaders",{});s(this,"_beforeHooks",[]);s(this,"_afterHooks",[])}get endpoint(){return this._endpoint}get fetchGraphQlHeaders(){return this._fetchGraphQlHeaders}setEndpoint(t){this._endpoint=t}setFetchGraphQlHeader(t,e){this._fetchGraphQlHeaders={...this._fetchGraphQlHeaders,[t]:e}}removeFetchGraphQlHeader(t){delete this._fetchGraphQlHeaders[t]}getFetchGraphQlHeader(t){return this._fetchGraphQlHeaders[t]}setFetchGraphQlHeaders(t){typeof t=="function"?this._fetchGraphQlHeaders={...this._fetchGraphQlHeaders,...t(this._fetchGraphQlHeaders)}:this._fetchGraphQlHeaders={...t}}addBeforeHook(t){this._beforeHooks.push(t)}addAfterHook(t){this._afterHooks.push(t)}_collectBeforeHooks(){return this._beforeHooks}_collectAfterHooks(){return this._afterHooks}async fetchGraphQl(t,e){const h=this.endpoint,p=this.fetchGraphQlHeaders;if(!h)throw Error('Missing "url"');const i=(e==null?void 0:e.method)??"POST",_=e==null?void 0:e.cache,G=e==null?void 0:e.signal;let l;const o=new URL(h),Q={...F,...p};i==="POST"&&(l=JSON.stringify({query:t,variables:e==null?void 0:e.variables})),i==="GET"&&(o.searchParams.append("query",v(t)),e!=null&&e.variables&&o.searchParams.append("variables",JSON.stringify(e.variables)));let a={method:i,headers:Q,body:l,cache:_,signal:G};a=await this._collectBeforeHooks().reduce(async(c,d)=>d(await c),Promise.resolve(a));const u=this._collectAfterHooks();return await fetch(o,a).then(c=>c.json().then(d=>u.reduce(async(k,g)=>g(a,await k),Promise.resolve(d))))}getConfig(){return{endpoint:this.endpoint,fetchGraphQlHeaders:this.fetchGraphQlHeaders}}getMethods(){return{setEndpoint:this.setEndpoint.bind(this),setFetchGraphQlHeader:this.setFetchGraphQlHeader.bind(this),getFetchGraphQlHeader:this.getFetchGraphQlHeader.bind(this),removeFetchGraphQlHeader:this.removeFetchGraphQlHeader.bind(this),setFetchGraphQlHeaders:this.setFetchGraphQlHeaders.bind(this),fetchGraphQl:this.fetchGraphQl.bind(this),getConfig:this.getConfig.bind(this),addBeforeHook:this.addBeforeHook.bind(this),addAfterHook:this.addAfterHook.bind(this)}}}const n=new f;class H extends f{constructor(){super(...arguments);s(this,"_mode","default");s(this,"_source")}get endpoint(){var e;switch(this._mode){case"standalone":return this._source;case"inheriting":return(e=this._source)==null?void 0:e.endpoint;case"default":return n.endpoint}}get fetchGraphQlHeaders(){var h;const e=this._fetchGraphQlHeaders;switch(this._mode){case"standalone":return e;case"inheriting":return{...(h=this._source)==null?void 0:h.fetchGraphQlHeaders,...e};case"default":return{...n.fetchGraphQlHeaders,...e}}}setEndpoint(e){e instanceof H?(this._mode="inheriting",this._source=e):(this._mode="standalone",this._source=e)}_collectBeforeHooks(){return this._mode==="inheriting"?[...this._source._collectBeforeHooks(),...this._beforeHooks]:this._beforeHooks}_collectAfterHooks(){if(this._mode==="inheriting"){const e=this._source._collectAfterHooks();return[...this._afterHooks,...e]}return this._afterHooks}}function v(r){return r=r.replace(/#.*/g,""),r=r.replace(/\s+/g," "),r.trim()}const{setEndpoint:B,setFetchGraphQlHeaders:E,setFetchGraphQlHeader:P,getFetchGraphQlHeader:y,removeFetchGraphQlHeader:C,fetchGraphQl:M,getConfig:O,addBeforeHook:S,addAfterHook:T}=n.getMethods();export{H as FetchGraphQL,T as addAfterHook,S as addBeforeHook,M as fetchGraphQl,O as getConfig,y as getFetchGraphQlHeader,C as removeFetchGraphQlHeader,B as setEndpoint,P as setFetchGraphQlHeader,E as setFetchGraphQlHeaders};
4
4
  //# sourceMappingURL=fetch-graphql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetch-graphql.js","sources":["@dropins/tools/src/fetch-graphql/index.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport type Header = { [key: string]: string | null };\n\nexport type FetchOptions = {\n method?: 'GET' | 'POST';\n variables?: { [key: string]: any };\n signal?: AbortSignal;\n cache?:\n | 'default'\n | 'no-store'\n | 'reload'\n | 'no-cache'\n | 'force-cache'\n | 'only-if-cached';\n};\n\nexport type FetchQueryError = Array<{\n message: string;\n extensions: { category: string };\n}>;\n\nexport type BeforeHook = (requestInit: RequestInit) => RequestInit;\nexport type AfterHook<T = any> = (\n requestInit: RequestInit,\n response: { errors?: FetchQueryError; data: T }\n) => { errors?: FetchQueryError; data: T };\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n};\n\nclass FetchGraphQLMesh {\n public _endpoint?: string;\n\n public _inheritHeaders?: boolean;\n\n get endpoint() {\n return this._endpoint;\n }\n\n get fetchGraphQlHeaders() {\n return this._fetchGraphQlHeaders;\n }\n\n public _fetchGraphQlHeaders: Header = {};\n\n public _beforeHooks: BeforeHook[] = [];\n\n public _afterHooks: AfterHook[] = [];\n\n /**\n * Sets the GraphQL endpoint.\n * @param endpoint - The GraphQL endpoint.\n * @param options - Optional configuration.\n * @param options.inheritHeaders - If true, headers from the global mesh will be inherited.\n */\n public setEndpoint(endpoint: string, options?: { inheritHeaders?: boolean }) {\n this._endpoint = endpoint;\n this._inheritHeaders = options?.inheritHeaders;\n }\n\n /**\n * Sets the GraphQL headers.\n * @param key - The key of the header.\n * @param value - The value of the header.\n */\n public setFetchGraphQlHeader(key: string, value: string | null) {\n this._fetchGraphQlHeaders = {\n ...this.fetchGraphQlHeaders,\n [key]: value,\n };\n }\n /**\n * Removes a specific GraphQL header.\n * @param key - The key of the header.\n */\n public removeFetchGraphQlHeader(key: string) {\n delete this._fetchGraphQlHeaders[key];\n }\n /**\n * Gets the value of a specific GraphQL header.\n * @param key - The key of the header.\n * @returns The value of the header, or undefined if not found.\n */\n public getFetchGraphQlHeader(key: string): string | null | undefined {\n return this._fetchGraphQlHeaders[key];\n }\n /**\n * Sets the GraphQL headers.\n * @param header - The header object or a function that returns a header object.\n * If a function is provided, it will be called with the previous headers.\n * The returned object will be merged with the previous headers.\n * @example\n * ```js\n * // set headers\n * setFetchGraphQlHeaders({ test: 'test' });\n * \n * // merge with previous headers\n * setFetchGraphQlHeaders((prev) => ({\n * ...prev,\n * test: 'test2',\n * }));\n * ```\n */\n public setFetchGraphQlHeaders(header: Header | ((prev: Header) => Header)) {\n if (typeof header === 'function') {\n this._fetchGraphQlHeaders = {\n ...this._fetchGraphQlHeaders,\n ...header(this._fetchGraphQlHeaders),\n };\n } else {\n this._fetchGraphQlHeaders = { ...header };\n }\n }\n /**\n * Adds a hook executed before the GraphQL call.\n * @param hook - The hook function.\n * @example\n * ```js\n * // add before hook\n * addBeforeHook((requestInit) => console.log('About to execute ' + requestInit.method + ' call.'));\n *\n * // modify the requestInit before executing the request\n * addBeforeHook((requestInit) => {method: requestInit.method, body: 'new body'});\n * ```\n */\n public addBeforeHook(hook: BeforeHook): void {\n this._beforeHooks.push(hook);\n }\n /**\n * Adds a hook executed before the GraphQL call.\n * @param hook - The hook function.\n * @example\n * ```js\n * // add before hook\n * addAfterHook((requestInit, response) => console.log(\n * 'The result of ' + requestInit.method + ' call is ' + response.json().body\n * ));\n *\n * // modify the response\n * addAfterHook((requestInit, response) => new Response(JSON.stringify({ ...response, modified: true }));\n * ```\n */\n public addAfterHook(hook: AfterHook): void {\n this._afterHooks.push(hook);\n }\n /**\n * Fetches GraphQL data.\n * @param query - The GraphQL query.\n * @param options - Optional configuration for the fetch request.\n * @returns\n */\n public async fetchGraphQl<T = any>(\n query: string,\n options?: FetchOptions\n ): Promise<{ errors?: FetchQueryError; data: T }> {\n const endpoint = this.endpoint;\n const fetchGraphQlHeaders = this.fetchGraphQlHeaders;\n\n if (!endpoint) throw Error('Missing \"url\"');\n\n const method = options?.method ?? 'POST';\n const cache = options?.cache;\n const signal = options?.signal;\n\n let body;\n const url = new URL(endpoint);\n const headers = {\n ...defaultHeaders,\n ...fetchGraphQlHeaders,\n };\n\n if (method === 'POST') {\n body = JSON.stringify({\n query,\n variables: options?.variables,\n });\n }\n\n if (method === 'GET') {\n url.searchParams.append('query', minimizeGraphQlQuery(query));\n\n if (options?.variables)\n url.searchParams.append('variables', JSON.stringify(options.variables));\n }\n\n let requestInit: RequestInit = {\n method,\n headers,\n body,\n cache,\n signal,\n };\n\n requestInit = await this._beforeHooks.reduce(\n async (prev, hook) => hook(await prev),\n Promise.resolve(requestInit)\n );\n\n return await fetch(url, requestInit).then((r) => r.json().then(\n (response) => this._afterHooks.reduce(\n async (result, hook) => hook(requestInit, await result),\n Promise.resolve(response)\n )\n ));\n }\n /**\n * Gets the configuration.\n */\n public getConfig() {\n return {\n endpoint: this.endpoint,\n fetchGraphQlHeaders: this.fetchGraphQlHeaders,\n };\n }\n\n public getMethods() {\n return {\n setEndpoint: this.setEndpoint.bind(this),\n setFetchGraphQlHeader: this.setFetchGraphQlHeader.bind(this),\n getFetchGraphQlHeader: this.getFetchGraphQlHeader.bind(this),\n removeFetchGraphQlHeader: this.removeFetchGraphQlHeader.bind(this),\n setFetchGraphQlHeaders: this.setFetchGraphQlHeaders.bind(this),\n fetchGraphQl: this.fetchGraphQl.bind(this),\n getConfig: this.getConfig.bind(this),\n addBeforeHook: this.addBeforeHook.bind(this),\n addAfterHook: this.addAfterHook.bind(this),\n };\n }\n}\n\nconst mesh = new FetchGraphQLMesh();\n\n/**\n * `FetchGraphQL` is a class that extends `FetchGraphQLMesh`.\n * It provides methods to get the GraphQL endpoint and headers.\n *\n * @class\n *\n */\nexport class FetchGraphQL extends FetchGraphQLMesh {\n get endpoint() {\n return this._endpoint ?? mesh.endpoint;\n }\n\n get fetchGraphQlHeaders() {\n if (this._endpoint && !this._inheritHeaders) {\n return this._fetchGraphQlHeaders;\n }\n return { ...mesh.fetchGraphQlHeaders, ...this._fetchGraphQlHeaders };\n }\n}\n\nfunction minimizeGraphQlQuery(query: string) {\n // Remove comments\n query = query.replace(/#.*/g, '');\n\n // Remove extra spaces, tabs, and line breaks\n query = query.replace(/\\s+/g, ' ');\n\n return query.trim();\n}\n/**\n * Exports several methods from the `mesh` object.\n *\n * @property {Function} setEndpoint - Sets the GraphQL endpoint.\n * @property {Function} setFetchGraphQlHeaders - Sets the GraphQL headers.\n * @property {Function} setFetchGraphQlHeader - Sets a specific GraphQL header.\n * @property {Function} getFetchGraphQlHeader - Gets the value of a specific GraphQL header.\n * @property {Function} removeFetchGraphQlHeader - Removes a specific GraphQL header.\n * @property {Function} fetchGraphQl - Fetches GraphQL data.\n * @property {Function} getConfig - Gets the configuration.\n */\n\n// Global Mesh instance\nexport const {\n setEndpoint,\n setFetchGraphQlHeaders,\n setFetchGraphQlHeader,\n getFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n fetchGraphQl,\n getConfig,\n addBeforeHook,\n addAfterHook,\n} = mesh.getMethods();\n"],"names":["defaultHeaders","FetchGraphQLMesh","__publicField","endpoint","options","key","value","header","hook","query","fetchGraphQlHeaders","method","cache","signal","body","url","headers","minimizeGraphQlQuery","requestInit","prev","r","response","result","mesh","FetchGraphQL","setEndpoint","setFetchGraphQlHeaders","setFetchGraphQlHeader","getFetchGraphQlHeader","removeFetchGraphQlHeader","fetchGraphQl","getConfig","addBeforeHook","addAfterHook"],"mappings":"oKAmCA,MAAMA,EAAiB,CACrB,eAAgB,mBAChB,OAAQ,kBACV,EAEA,MAAMC,CAAiB,CAAvB,cACSC,EAAA,kBAEAA,EAAA,wBAUAA,EAAA,4BAA+B,CAAC,GAEhCA,EAAA,oBAA6B,CAAC,GAE9BA,EAAA,mBAA2B,CAAC,GAZnC,IAAI,UAAW,CACb,OAAO,KAAK,SAAA,CAGd,IAAI,qBAAsB,CACxB,OAAO,KAAK,oBAAA,CAeP,YAAYC,EAAkBC,EAAwC,CAC3E,KAAK,UAAYD,EACjB,KAAK,gBAAkBC,GAAA,YAAAA,EAAS,cAAA,CAQ3B,sBAAsBC,EAAaC,EAAsB,CAC9D,KAAK,qBAAuB,CAC1B,GAAG,KAAK,oBACR,CAACD,CAAG,EAAGC,CACT,CAAA,CAMK,yBAAyBD,EAAa,CACpC,OAAA,KAAK,qBAAqBA,CAAG,CAAA,CAO/B,sBAAsBA,EAAwC,CAC5D,OAAA,KAAK,qBAAqBA,CAAG,CAAA,CAmB/B,uBAAuBE,EAA6C,CACrE,OAAOA,GAAW,WACpB,KAAK,qBAAuB,CAC1B,GAAG,KAAK,qBACR,GAAGA,EAAO,KAAK,oBAAoB,CACrC,EAEK,KAAA,qBAAuB,CAAE,GAAGA,CAAO,CAC1C,CAcK,cAAcC,EAAwB,CACtC,KAAA,aAAa,KAAKA,CAAI,CAAA,CAgBtB,aAAaA,EAAuB,CACpC,KAAA,YAAY,KAAKA,CAAI,CAAA,CAQ5B,MAAa,aACXC,EACAL,EACgD,CAChD,MAAMD,EAAW,KAAK,SAChBO,EAAsB,KAAK,oBAEjC,GAAI,CAACP,EAAgB,MAAA,MAAM,eAAe,EAEpC,MAAAQ,GAASP,GAAA,YAAAA,EAAS,SAAU,OAC5BQ,EAAQR,GAAA,YAAAA,EAAS,MACjBS,EAAST,GAAA,YAAAA,EAAS,OAEpB,IAAAU,EACE,MAAAC,EAAM,IAAI,IAAIZ,CAAQ,EACtBa,EAAU,CACd,GAAGhB,EACH,GAAGU,CACL,EAEIC,IAAW,SACbG,EAAO,KAAK,UAAU,CACpB,MAAAL,EACA,UAAWL,GAAA,YAAAA,EAAS,SAAA,CACrB,GAGCO,IAAW,QACbI,EAAI,aAAa,OAAO,QAASE,EAAqBR,CAAK,CAAC,EAExDL,GAAA,MAAAA,EAAS,WACXW,EAAI,aAAa,OAAO,YAAa,KAAK,UAAUX,EAAQ,SAAS,CAAC,GAG1E,IAAIc,EAA2B,CAC7B,OAAAP,EACA,QAAAK,EACA,KAAAF,EACA,MAAAF,EACA,OAAAC,CACF,EAEc,OAAAK,EAAA,MAAM,KAAK,aAAa,OAClC,MAAOC,EAAMX,IAASA,EAAK,MAAMW,CAAI,EACrC,QAAQ,QAAQD,CAAW,CAC/B,EAEO,MAAM,MAAMH,EAAKG,CAAW,EAAE,KAAME,GAAMA,EAAE,KAAA,EAAO,KACrDC,GAAa,KAAK,YAAY,OAC3B,MAAOC,EAAQd,IAASA,EAAKU,EAAa,MAAMI,CAAM,EACtD,QAAQ,QAAQD,CAAQ,CAAA,CAC5B,CACH,CAAA,CAKI,WAAY,CACV,MAAA,CACL,SAAU,KAAK,SACf,oBAAqB,KAAK,mBAC5B,CAAA,CAGK,YAAa,CACX,MAAA,CACL,YAAa,KAAK,YAAY,KAAK,IAAI,EACvC,sBAAuB,KAAK,sBAAsB,KAAK,IAAI,EAC3D,sBAAuB,KAAK,sBAAsB,KAAK,IAAI,EAC3D,yBAA0B,KAAK,yBAAyB,KAAK,IAAI,EACjE,uBAAwB,KAAK,uBAAuB,KAAK,IAAI,EAC7D,aAAc,KAAK,aAAa,KAAK,IAAI,EACzC,UAAW,KAAK,UAAU,KAAK,IAAI,EACnC,cAAe,KAAK,cAAc,KAAK,IAAI,EAC3C,aAAc,KAAK,aAAa,KAAK,IAAI,CAC3C,CAAA,CAEJ,CAEA,MAAME,EAAO,IAAItB,EASV,MAAMuB,UAAqBvB,CAAiB,CACjD,IAAI,UAAW,CACN,OAAA,KAAK,WAAasB,EAAK,QAAA,CAGhC,IAAI,qBAAsB,CACxB,OAAI,KAAK,WAAa,CAAC,KAAK,gBACnB,KAAK,qBAEP,CAAE,GAAGA,EAAK,oBAAqB,GAAG,KAAK,oBAAqB,CAAA,CAEvE,CAEA,SAASN,EAAqBR,EAAe,CAEnC,OAAAA,EAAAA,EAAM,QAAQ,OAAQ,EAAE,EAGxBA,EAAAA,EAAM,QAAQ,OAAQ,GAAG,EAE1BA,EAAM,KAAK,CACpB,CAca,KAAA,CACX,YAAAgB,EACA,uBAAAC,EACA,sBAAAC,EACA,sBAAAC,EACA,yBAAAC,EACA,aAAAC,EACA,UAAAC,EACA,cAAAC,EACA,aAAAC,CACF,EAAIV,EAAK,WAAW"}
1
+ {"version":3,"file":"fetch-graphql.js","sources":["@dropins/tools/src/fetch-graphql/index.ts"],"sourcesContent":["/********************************************************************\n * Copyright 2024 Adobe\n * All Rights Reserved.\n *\n * NOTICE: Adobe permits you to use, modify, and distribute this \n * file in accordance with the terms of the Adobe license agreement \n * accompanying it. \n *******************************************************************/\n\nexport type Header = { [key: string]: string | null };\n\nexport type FetchOptions = {\n method?: 'GET' | 'POST';\n variables?: { [key: string]: any };\n signal?: AbortSignal;\n cache?:\n | 'default'\n | 'no-store'\n | 'reload'\n | 'no-cache'\n | 'force-cache'\n | 'only-if-cached';\n};\n\nexport type FetchQueryError = Array<{\n message: string;\n extensions: { category: string };\n}>;\n\nexport type BeforeHook = (requestInit: RequestInit) => RequestInit;\nexport type AfterHook<T = any> = (\n requestInit: RequestInit,\n response: { errors?: FetchQueryError; data: T }\n) => { errors?: FetchQueryError; data: T };\n\nconst defaultHeaders = {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n};\n\nclass FetchGraphQLMesh {\n protected _endpoint?: string;\n\n get endpoint() {\n return this._endpoint;\n }\n\n get fetchGraphQlHeaders() {\n return this._fetchGraphQlHeaders;\n }\n\n public _fetchGraphQlHeaders: Header = {};\n\n public _beforeHooks: BeforeHook[] = [];\n\n public _afterHooks: AfterHook[] = [];\n\n /**\n * Sets the GraphQL endpoint.\n * @param endpoint - The GraphQL endpoint URL string.\n * @example\n * ```js\n * // Set endpoint as string\n * instance.setEndpoint('https://api.example.com/graphql');\n * ```\n */\n public setEndpoint(endpoint: string) {\n this._endpoint = endpoint;\n }\n\n /**\n * Sets the GraphQL headers.\n * @param key - The key of the header.\n * @param value - The value of the header.\n */\n public setFetchGraphQlHeader(key: string, value: string | null) {\n this._fetchGraphQlHeaders = {\n ...this._fetchGraphQlHeaders,\n [key]: value,\n };\n }\n\n /**\n * Removes a specific GraphQL header.\n * @param key - The key of the header.\n */\n public removeFetchGraphQlHeader(key: string) {\n delete this._fetchGraphQlHeaders[key];\n }\n\n /**\n * Gets the value of a specific GraphQL header.\n * @param key - The key of the header.\n * @returns The value of the header, or undefined if not found.\n */\n public getFetchGraphQlHeader(key: string): string | null | undefined {\n return this._fetchGraphQlHeaders[key];\n }\n\n /**\n * Sets the GraphQL headers.\n * @param header - The header object or a function that returns a header object.\n * If a function is provided, it will be called with the previous headers.\n * The returned object will be merged with the previous headers.\n * @example\n * ```js\n * // set headers\n * setFetchGraphQlHeaders({ test: 'test' });\n * \n * // merge with previous headers\n * setFetchGraphQlHeaders((prev) => ({\n * ...prev,\n * test: 'test2',\n * }));\n * ```\n */\n public setFetchGraphQlHeaders(header: Header | ((prev: Header) => Header)) {\n if (typeof header === 'function') {\n this._fetchGraphQlHeaders = {\n ...this._fetchGraphQlHeaders,\n ...header(this._fetchGraphQlHeaders),\n };\n } else {\n this._fetchGraphQlHeaders = { ...header };\n }\n }\n\n /**\n * Adds a hook executed before the GraphQL call.\n * @param hook - The hook function.\n * @example\n * ```js\n * // add before hook\n * addBeforeHook((requestInit) => console.log('About to execute ' + requestInit.method + ' call.'));\n *\n * // modify the requestInit before executing the request\n * addBeforeHook((requestInit) => {method: requestInit.method, body: 'new body'});\n * ```\n */\n public addBeforeHook(hook: BeforeHook): void {\n this._beforeHooks.push(hook);\n }\n\n /**\n * Adds a hook executed before the GraphQL call.\n * @param hook - The hook function.\n * @example\n * ```js\n * // add before hook\n * addAfterHook((requestInit, response) => console.log(\n * 'The result of ' + requestInit.method + ' call is ' + response.json().body\n * ));\n *\n * // modify the response\n * addAfterHook((requestInit, response) => new Response(JSON.stringify({ ...response, modified: true }));\n * ```\n */\n public addAfterHook(hook: AfterHook): void {\n this._afterHooks.push(hook);\n }\n \n /**\n * Collects all before hooks. Can be overridden by subclasses for inheritance.\n * @protected\n */\n protected _collectBeforeHooks(): BeforeHook[] {\n return this._beforeHooks;\n }\n \n /**\n * Collects all after hooks. Can be overridden by subclasses for inheritance.\n * @protected\n */\n protected _collectAfterHooks(): AfterHook[] {\n return this._afterHooks;\n }\n \n /**\n * Fetches GraphQL data.\n * @param query - The GraphQL query.\n * @param options - Optional configuration for the fetch request.\n * @returns\n */\n public async fetchGraphQl<T = any>(\n query: string,\n options?: FetchOptions\n ): Promise<{ errors?: FetchQueryError; data: T }> {\n const endpoint = this.endpoint;\n const fetchGraphQlHeaders = this.fetchGraphQlHeaders;\n\n if (!endpoint) throw Error('Missing \"url\"');\n\n const method = options?.method ?? 'POST';\n const cache = options?.cache;\n const signal = options?.signal;\n\n let body;\n const url = new URL(endpoint);\n const headers = {\n ...defaultHeaders,\n ...fetchGraphQlHeaders,\n };\n\n if (method === 'POST') {\n body = JSON.stringify({\n query,\n variables: options?.variables,\n });\n }\n\n if (method === 'GET') {\n url.searchParams.append('query', minimizeGraphQlQuery(query));\n\n if (options?.variables)\n url.searchParams.append('variables', JSON.stringify(options.variables));\n }\n\n let requestInit: RequestInit = {\n method,\n headers,\n body,\n cache,\n signal,\n };\n\n // Collect and execute before hooks\n const allBeforeHooks = this._collectBeforeHooks();\n requestInit = await allBeforeHooks.reduce(\n async (prev, hook) => hook(await prev),\n Promise.resolve(requestInit)\n );\n\n // Collect and execute after hooks\n const allAfterHooks = this._collectAfterHooks();\n return await fetch(url, requestInit).then((r) => r.json().then(\n (response) => allAfterHooks.reduce(\n async (result, hook) => hook(requestInit, await result),\n Promise.resolve(response)\n )\n ));\n }\n \n /**\n * Gets the configuration.\n */\n public getConfig() {\n return {\n endpoint: this.endpoint,\n fetchGraphQlHeaders: this.fetchGraphQlHeaders,\n };\n }\n\n public getMethods() {\n return {\n setEndpoint: this.setEndpoint.bind(this),\n setFetchGraphQlHeader: this.setFetchGraphQlHeader.bind(this),\n getFetchGraphQlHeader: this.getFetchGraphQlHeader.bind(this),\n removeFetchGraphQlHeader: this.removeFetchGraphQlHeader.bind(this),\n setFetchGraphQlHeaders: this.setFetchGraphQlHeaders.bind(this),\n fetchGraphQl: this.fetchGraphQl.bind(this),\n getConfig: this.getConfig.bind(this),\n addBeforeHook: this.addBeforeHook.bind(this),\n addAfterHook: this.addAfterHook.bind(this),\n };\n }\n}\n\nconst mesh = new FetchGraphQLMesh();\n\n/**\n * `FetchGraphQL` is a class that extends `FetchGraphQLMesh`.\n * It provides methods to get the GraphQL endpoint and headers with support for inheritance.\n *\n * @class\n *\n */\nexport class FetchGraphQL extends FetchGraphQLMesh {\n private _mode: 'standalone' | 'inheriting' | 'default' = 'default';\n private _source?: string | FetchGraphQL;\n\n get endpoint(): string | undefined {\n switch (this._mode) {\n case 'standalone':\n return this._source as string;\n case 'inheriting':\n return (this._source as FetchGraphQL)?.endpoint;\n case 'default':\n return mesh.endpoint;\n }\n }\n\n get fetchGraphQlHeaders(): Header {\n const ownHeaders = this._fetchGraphQlHeaders;\n \n switch (this._mode) {\n case 'standalone':\n // Standalone instance - only use own headers\n return ownHeaders;\n case 'inheriting':\n // Inheriting from parent - merge parent and own headers\n return {\n ...(this._source as FetchGraphQL)?.fetchGraphQlHeaders,\n ...ownHeaders,\n };\n case 'default':\n // Default - inherit from global mesh\n return {\n ...mesh.fetchGraphQlHeaders,\n ...ownHeaders,\n };\n }\n }\n\n /**\n * Sets the GraphQL endpoint or inherits from a parent instance.\n * @param endpoint - The GraphQL endpoint URL string, or a FetchGraphQL instance to inherit from.\n * @example\n * ```js\n * // Set endpoint as string\n * instance.setEndpoint('https://api.example.com/graphql');\n * \n * // Inherit from parent instance\n * const parent = new FetchGraphQL();\n * parent.setEndpoint('https://api.example.com/graphql');\n * \n * const child = new FetchGraphQL();\n * child.setEndpoint(parent); // Inherits endpoint, headers, and hooks\n * ```\n */\n public setEndpoint(endpoint: string | FetchGraphQL): void {\n if (endpoint instanceof FetchGraphQL) {\n // Inherit from parent instance\n this._mode = 'inheriting';\n this._source = endpoint;\n } else {\n // Set string endpoint - become standalone\n this._mode = 'standalone';\n this._source = endpoint;\n }\n }\n\n /**\n * Collects all before hooks from the parent chain.\n * Parent hooks execute first, then child hooks.\n * @protected\n */\n protected _collectBeforeHooks(): BeforeHook[] {\n if (this._mode === 'inheriting') {\n const parentHooks = (this._source as FetchGraphQL)._collectBeforeHooks();\n return [...parentHooks, ...this._beforeHooks];\n }\n return this._beforeHooks;\n }\n \n /**\n * Collects all after hooks from the parent chain.\n * Child hooks execute first, then parent hooks.\n * @protected\n */\n protected _collectAfterHooks(): AfterHook[] {\n if (this._mode === 'inheriting') {\n const parentHooks = (this._source as FetchGraphQL)._collectAfterHooks();\n return [...this._afterHooks, ...parentHooks];\n }\n return this._afterHooks;\n }\n}\n\nfunction minimizeGraphQlQuery(query: string) {\n // Remove comments\n query = query.replace(/#.*/g, '');\n\n // Remove extra spaces, tabs, and line breaks\n query = query.replace(/\\s+/g, ' ');\n\n return query.trim();\n}\n/**\n * Exports several methods from the `mesh` object.\n *\n * @property {Function} setEndpoint - Sets the GraphQL endpoint.\n * @property {Function} setFetchGraphQlHeaders - Sets the GraphQL headers.\n * @property {Function} setFetchGraphQlHeader - Sets a specific GraphQL header.\n * @property {Function} getFetchGraphQlHeader - Gets the value of a specific GraphQL header.\n * @property {Function} removeFetchGraphQlHeader - Removes a specific GraphQL header.\n * @property {Function} fetchGraphQl - Fetches GraphQL data.\n * @property {Function} getConfig - Gets the configuration.\n * @property {Function} addBeforeHook - Adds a hook executed before the GraphQL call.\n * @property {Function} addAfterHook - Adds a hook executed after the GraphQL call.\n */\n\n// Global Mesh instance\nexport const {\n setEndpoint,\n setFetchGraphQlHeaders,\n setFetchGraphQlHeader,\n getFetchGraphQlHeader,\n removeFetchGraphQlHeader,\n fetchGraphQl,\n getConfig,\n addBeforeHook,\n addAfterHook,\n} = mesh.getMethods();\n"],"names":["defaultHeaders","FetchGraphQLMesh","__publicField","endpoint","key","value","header","hook","query","options","fetchGraphQlHeaders","method","cache","signal","body","url","headers","minimizeGraphQlQuery","requestInit","prev","allAfterHooks","r","response","result","mesh","FetchGraphQL","_a","ownHeaders","parentHooks","setEndpoint","setFetchGraphQlHeaders","setFetchGraphQlHeader","getFetchGraphQlHeader","removeFetchGraphQlHeader","fetchGraphQl","getConfig","addBeforeHook","addAfterHook"],"mappings":"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"}
package/lib/aem/assets.js CHANGED
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{getConfigValue as O}from"./configs.js";import{p as f,I as g}from"../../chunks/Image.js";import"../../chunks/cjs.js";import"../../chunks/get-path-value.js";import"../../preact-jsx-runtime.js";import"../../chunks/icons/Add.js";import"../../i18n.js";import"../../chunks/vcomponent.js";import"../../chunks/image-params-keymap.js";import"../../signals.js";const b=["gif","jpg","jpeg","png","webp"],v=[90,180,270],U=["h","v","hv"];function l(e){let t=e;if(t.startsWith("//")){const{protocol:s}=window.location;t=s+t}return t}function I(e){return U.includes(e)}function L(e){return v.includes(e)}function y(e){return b.includes(e)}function u(e,t,s){if(e!==void 0&&!t(e))throw new Error(s)}function h(){const e=O("commerce-assets-enabled");return e&&(typeof e=="string"&&e.toLowerCase()==="true"||typeof e=="boolean"&&e===!0)}function R(){return{quality:80,format:"webp"}}function A(e){return!!(typeof e=="string"?new URL(l(e)):e).pathname.startsWith("/adobe/assets/urn:aaid:aem")}function w(e,t,s={}){const r={...R(),...s},{format:i,crop:n,...o}=r;u(i,y,"Invalid format"),u(o.flip,I,"Invalid flip"),u(o.rotate,L,"Invalid rotation");const a=Object.fromEntries(Object.entries(o).map(([p,d])=>[p,String(d)])),c=new URLSearchParams(a);if(n){const[p,d]=[n.xOrigin||0,n.yOrigin||0],[P,E]=[n.width||100,n.height||100],S=`${p}p,${d}p,${P}p,${E}p`;c.set("crop",S)}return`${e}/as/${t}.${i}?${c.toString()}`}function q(e,t,s={}){if(!h())return e;const r=new URL(l(e));if(!A(r))return e;const i=r.origin+r.pathname;return w(i,t,s)}function _(e){return t=>{const{wrapper:s,alias:m,params:r,imageProps:i}=e;if(!i.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const n=s??document.createElement("div"),o=w(i.src,m,r),a={width:r.width,height:r.height,crop:void 0,fit:void 0,auto:void 0},c={...i,width:r.width,height:r.height,src:o,params:a};f.render(g,c)(n),t.replaceWith(n)}}function x(e,t){function s(){const i=t.wrapper??document.createElement("div"),{imageProps:n,params:o}=t,a={...n,width:o.width,height:o.height};f.render(g,a)(i),e.replaceWith(i)}if(!h()){s();return}if(!t.imageProps.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const r=new URL(l(t.imageProps.src));if(!A(r)){s();return}_(t)(e)}export{w as generateAemAssetsOptimizedUrl,R as getDefaultAemAssetsOptimizationParams,h as isAemAssetsEnabled,A as isAemAssetsUrl,_ as makeAemAssetsImageSlot,q as tryGenerateAemAssetsOptimizedUrl,x as tryRenderAemAssetsImage};
3
+ import{getConfigValue as O}from"./configs.js";import{p as f,I as g}from"../../chunks/Image.js";import"../../chunks/get-path-value.js";import"../../chunks/cjs.js";import"../../preact-jsx-runtime.js";import"../../chunks/icons/Add.js";import"../../i18n.js";import"../../chunks/vcomponent.js";import"../../chunks/image-params-keymap.js";import"../../signals.js";const b=["gif","jpg","jpeg","png","webp"],v=[90,180,270],U=["h","v","hv"];function l(e){let t=e;if(t.startsWith("//")){const{protocol:s}=window.location;t=s+t}return t}function I(e){return U.includes(e)}function L(e){return v.includes(e)}function y(e){return b.includes(e)}function u(e,t,s){if(e!==void 0&&!t(e))throw new Error(s)}function h(){const e=O("commerce-assets-enabled");return e&&(typeof e=="string"&&e.toLowerCase()==="true"||typeof e=="boolean"&&e===!0)}function R(){return{quality:80,format:"webp"}}function A(e){return!!(typeof e=="string"?new URL(l(e)):e).pathname.startsWith("/adobe/assets/urn:aaid:aem")}function w(e,t,s={}){const r={...R(),...s},{format:i,crop:n,...o}=r;u(i,y,"Invalid format"),u(o.flip,I,"Invalid flip"),u(o.rotate,L,"Invalid rotation");const a=Object.fromEntries(Object.entries(o).map(([p,d])=>[p,String(d)])),c=new URLSearchParams(a);if(n){const[p,d]=[n.xOrigin||0,n.yOrigin||0],[P,E]=[n.width||100,n.height||100],S=`${p}p,${d}p,${P}p,${E}p`;c.set("crop",S)}return`${e}/as/${t}.${i}?${c.toString()}`}function q(e,t,s={}){if(!h())return e;const r=new URL(l(e));if(!A(r))return e;const i=r.origin+r.pathname;return w(i,t,s)}function _(e){return t=>{const{wrapper:s,alias:m,params:r,imageProps:i}=e;if(!i.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const n=s??document.createElement("div"),o=w(i.src,m,r),a={width:r.width,height:r.height,crop:void 0,fit:void 0,auto:void 0},c={...i,width:r.width,height:r.height,src:o,params:a};f.render(g,c)(n),t.replaceWith(n)}}function x(e,t){function s(){const i=t.wrapper??document.createElement("div"),{imageProps:n,params:o}=t,a={...n,width:o.width,height:o.height};f.render(g,a)(i),e.replaceWith(i)}if(!h()){s();return}if(!t.imageProps.src)throw new Error("An image source is required. Please provide a `src` or `imageProps.src`.");const r=new URL(l(t.imageProps.src));if(!A(r)){s();return}_(t)(e)}export{w as generateAemAssetsOptimizedUrl,R as getDefaultAemAssetsOptimizationParams,h as isAemAssetsEnabled,A as isAemAssetsUrl,_ as makeAemAssetsImageSlot,q as tryGenerateAemAssetsOptimizedUrl,x as tryRenderAemAssetsImage};
4
4
  //# sourceMappingURL=assets.js.map
@@ -1,4 +1,4 @@
1
1
  /*! Copyright 2025 Adobe
2
2
  All Rights Reserved. */
3
- import{d as c}from"../../chunks/cjs.js";import{g as s}from"../../chunks/get-path-value.js";let l=null,f=null,u=null,i=null;function z(){l=null,f=null,u=null,i=null}function g(e=l,t=f){return e?Object.keys(e==null?void 0:e.public).sort((n,r)=>{const o=n.split("/").filter(Boolean).length;return r.split("/").filter(Boolean).length-o}).find(n=>{var r;return window.location.pathname===n||(((r=t==null?void 0:t.match)==null?void 0:r.call(t,n))??window.location.pathname.startsWith(n))})??"/":(console.warn("No config found. Please call initializeConfig() first."),"/")}function h(){return l?Object.keys(l.public).filter(e=>e!=="default"):(console.warn("No config found. Please call initializeConfig() first."),[])}function P(){return h().length>=1}function p(e){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");const t=i.headers??{};return{...t.all??{},...t[e]??{}}}function d(e,t){var n;const a=(n=e.public)==null?void 0:n.default;return t==="/"||!e.public[t]?a:c(a,e.public[t])}function v(e,t){return l=e,f=t??null,u=g(l,{match:t==null?void 0:t.match}),i=d(l,u),i}function S(e){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");return s(i,e)}export{S as getConfigValue,p as getHeaders,h as getListOfRootPaths,g as getRootPath,v as initializeConfig,P as isMultistore,z as resetConfig};
3
+ import{g as c}from"../../chunks/get-path-value.js";import{d as s}from"../../chunks/cjs.js";let l=null,f=null,u=null,i=null;function z(){l=null,f=null,u=null,i=null}function g(e=l,t=f){return e?Object.keys(e==null?void 0:e.public).sort((n,r)=>{const o=n.split("/").filter(Boolean).length;return r.split("/").filter(Boolean).length-o}).find(n=>{var r;return window.location.pathname===n||(((r=t==null?void 0:t.match)==null?void 0:r.call(t,n))??window.location.pathname.startsWith(n))})??"/":(console.warn("No config found. Please call initializeConfig() first."),"/")}function h(){return l?Object.keys(l.public).filter(e=>e!=="default"):(console.warn("No config found. Please call initializeConfig() first."),[])}function P(){return h().length>=1}function p(e){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");const t=i.headers??{};return{...t.all??{},...t[e]??{}}}function d(e,t){var n;const a=(n=e.public)==null?void 0:n.default;return t==="/"||!e.public[t]?a:s(a,e.public[t])}function v(e,t){return l=e,f=t??null,u=g(l,{match:t==null?void 0:t.match}),i=d(l,u),i}function S(e){if(!i)throw new Error("Configuration not initialized. Call initializeConfig() first.");return c(i,e)}export{S as getConfigValue,p as getHeaders,h as getListOfRootPaths,g as getRootPath,v as initializeConfig,P as isMultistore,z as resetConfig};
4
4
  //# sourceMappingURL=configs.js.map
package/package.json CHANGED
@@ -1 +1 @@
1
- {"name": "@dropins/tools", "version": "1.6.0-alpha4", "license": "SEE LICENSE IN LICENSE.md"}
1
+ {"name": "@dropins/tools", "version": "1.6.0-alpha6", "license": "SEE LICENSE IN LICENSE.md"}
@@ -32,8 +32,7 @@ export type AfterHook<T = any> = (requestInit: RequestInit, response: {
32
32
  data: T;
33
33
  };
34
34
  declare class FetchGraphQLMesh {
35
- _endpoint?: string;
36
- _inheritHeaders?: boolean;
35
+ protected _endpoint?: string;
37
36
  get endpoint(): string | undefined;
38
37
  get fetchGraphQlHeaders(): Header;
39
38
  _fetchGraphQlHeaders: Header;
@@ -41,13 +40,14 @@ declare class FetchGraphQLMesh {
41
40
  _afterHooks: AfterHook[];
42
41
  /**
43
42
  * Sets the GraphQL endpoint.
44
- * @param endpoint - The GraphQL endpoint.
45
- * @param options - Optional configuration.
46
- * @param options.inheritHeaders - If true, headers from the global mesh will be inherited.
43
+ * @param endpoint - The GraphQL endpoint URL string.
44
+ * @example
45
+ * ```js
46
+ * // Set endpoint as string
47
+ * instance.setEndpoint('https://api.example.com/graphql');
48
+ * ```
47
49
  */
48
- setEndpoint(endpoint: string, options?: {
49
- inheritHeaders?: boolean;
50
- }): void;
50
+ setEndpoint(endpoint: string): void;
51
51
  /**
52
52
  * Sets the GraphQL headers.
53
53
  * @param key - The key of the header.
@@ -111,6 +111,16 @@ declare class FetchGraphQLMesh {
111
111
  * ```
112
112
  */
113
113
  addAfterHook(hook: AfterHook): void;
114
+ /**
115
+ * Collects all before hooks. Can be overridden by subclasses for inheritance.
116
+ * @protected
117
+ */
118
+ protected _collectBeforeHooks(): BeforeHook[];
119
+ /**
120
+ * Collects all after hooks. Can be overridden by subclasses for inheritance.
121
+ * @protected
122
+ */
123
+ protected _collectAfterHooks(): AfterHook[];
114
124
  /**
115
125
  * Fetches GraphQL data.
116
126
  * @param query - The GraphQL query.
@@ -129,9 +139,7 @@ declare class FetchGraphQLMesh {
129
139
  fetchGraphQlHeaders: Header;
130
140
  };
131
141
  getMethods(): {
132
- setEndpoint: (endpoint: string, options?: {
133
- inheritHeaders?: boolean | undefined;
134
- } | undefined) => void;
142
+ setEndpoint: (endpoint: string) => void;
135
143
  setFetchGraphQlHeader: (key: string, value: string | null) => void;
136
144
  getFetchGraphQlHeader: (key: string) => string | null | undefined;
137
145
  removeFetchGraphQlHeader: (key: string) => void;
@@ -150,14 +158,45 @@ declare class FetchGraphQLMesh {
150
158
  }
151
159
  /**
152
160
  * `FetchGraphQL` is a class that extends `FetchGraphQLMesh`.
153
- * It provides methods to get the GraphQL endpoint and headers.
161
+ * It provides methods to get the GraphQL endpoint and headers with support for inheritance.
154
162
  *
155
163
  * @class
156
164
  *
157
165
  */
158
166
  export declare class FetchGraphQL extends FetchGraphQLMesh {
167
+ private _mode;
168
+ private _source?;
159
169
  get endpoint(): string | undefined;
160
170
  get fetchGraphQlHeaders(): Header;
171
+ /**
172
+ * Sets the GraphQL endpoint or inherits from a parent instance.
173
+ * @param endpoint - The GraphQL endpoint URL string, or a FetchGraphQL instance to inherit from.
174
+ * @example
175
+ * ```js
176
+ * // Set endpoint as string
177
+ * instance.setEndpoint('https://api.example.com/graphql');
178
+ *
179
+ * // Inherit from parent instance
180
+ * const parent = new FetchGraphQL();
181
+ * parent.setEndpoint('https://api.example.com/graphql');
182
+ *
183
+ * const child = new FetchGraphQL();
184
+ * child.setEndpoint(parent); // Inherits endpoint, headers, and hooks
185
+ * ```
186
+ */
187
+ setEndpoint(endpoint: string | FetchGraphQL): void;
188
+ /**
189
+ * Collects all before hooks from the parent chain.
190
+ * Parent hooks execute first, then child hooks.
191
+ * @protected
192
+ */
193
+ protected _collectBeforeHooks(): BeforeHook[];
194
+ /**
195
+ * Collects all after hooks from the parent chain.
196
+ * Child hooks execute first, then parent hooks.
197
+ * @protected
198
+ */
199
+ protected _collectAfterHooks(): AfterHook[];
161
200
  }
162
201
  /**
163
202
  * Exports several methods from the `mesh` object.
@@ -169,10 +208,10 @@ export declare class FetchGraphQL extends FetchGraphQLMesh {
169
208
  * @property {Function} removeFetchGraphQlHeader - Removes a specific GraphQL header.
170
209
  * @property {Function} fetchGraphQl - Fetches GraphQL data.
171
210
  * @property {Function} getConfig - Gets the configuration.
211
+ * @property {Function} addBeforeHook - Adds a hook executed before the GraphQL call.
212
+ * @property {Function} addAfterHook - Adds a hook executed after the GraphQL call.
172
213
  */
173
- export declare const setEndpoint: (endpoint: string, options?: {
174
- inheritHeaders?: boolean;
175
- }) => void, setFetchGraphQlHeaders: (header: Header | ((prev: Header) => Header)) => void, setFetchGraphQlHeader: (key: string, value: string | null) => void, getFetchGraphQlHeader: (key: string) => string | null | undefined, removeFetchGraphQlHeader: (key: string) => void, fetchGraphQl: <T = any>(query: string, options?: FetchOptions) => Promise<{
214
+ export declare const setEndpoint: (endpoint: string) => void, setFetchGraphQlHeaders: (header: Header | ((prev: Header) => Header)) => void, setFetchGraphQlHeader: (key: string, value: string | null) => void, getFetchGraphQlHeader: (key: string) => string | null | undefined, removeFetchGraphQlHeader: (key: string) => void, fetchGraphQl: <T = any>(query: string, options?: FetchOptions) => Promise<{
176
215
  errors?: FetchQueryError | undefined;
177
216
  data: T;
178
217
  }>, getConfig: () => {
@@ -1,9 +1,7 @@
1
1
  import { ReCaptchaV3Response, PropsFormTypes, ReCaptchaV3Model } from './types/recaptcha.types';
2
2
 
3
3
  export declare const recaptchaFetchApi: {
4
- setEndpoint: (endpoint: string, options?: {
5
- inheritHeaders?: boolean | undefined;
6
- } | undefined) => void;
4
+ setEndpoint: (endpoint: string) => void;
7
5
  setFetchGraphQlHeader: (key: string, value: string | null) => void;
8
6
  getFetchGraphQlHeader: (key: string) => string | null | undefined;
9
7
  removeFetchGraphQlHeader: (key: string) => void;