@nhost/nhost-js 1.1.9 → 1.1.12

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.
@@ -10,7 +10,28 @@ export declare class NhostFunctionsClient {
10
10
  private instance;
11
11
  private accessToken;
12
12
  constructor(params: NhostFunctionsConstructorParams);
13
+ /**
14
+ * Use `nhost.functions.call` to call (sending a POST request to) a serverless function.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * await nhost.functions.call('send-welcome-email', { email: 'joe@example.com', name: 'Joe Doe' })
19
+ * ```
20
+ *
21
+ * @docs https://docs.nhost.io/reference/javascript/nhost-js/functions/call
22
+ */
13
23
  call<T = unknown, D = any>(url: string, data: D, config?: AxiosRequestConfig): Promise<FunctionCallResponse<T>>;
24
+ /**
25
+ * Use `nhost.functions.setAccessToken` to a set an access token to be used in subsequent functions requests. Note that if you're signin in users with `nhost.auth.signIn()` the access token will be set automatically.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * nhost.functions.setAccessToken('some-access-token')
30
+ * ```
31
+ *
32
+ * @docs https://docs.nhost.io/reference/javascript/nhost-js/functions/set-access-token
33
+ */
14
34
  setAccessToken(accessToken: string | undefined): void;
15
35
  private generateAccessTokenHeaders;
16
36
  }
37
+ //# sourceMappingURL=functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["functions.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAiB,MAAM,OAAO,CAAA;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAC/C,MAAM,WAAW,+BAA+B;IAC9C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,WAAW,CAAe;gBAEtB,MAAM,EAAE,+BAA+B;IASnD;;;;;;;;;OASG;IACG,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,GAAG,EAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;IAyBnC;;;;;;;;;OASG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAS9C,OAAO,CAAC,0BAA0B;CAUnC"}
@@ -12,8 +12,47 @@ export declare class NhostGraphqlClient {
12
12
  private instance;
13
13
  private accessToken;
14
14
  constructor(params: NhostGraphqlConstructorParams);
15
+ /**
16
+ * Use `nhost.graphql.request` to send a GraphQL request. For more serious GraphQL usage in your app we recommend using a GraphQL client such as Apollo Client (https://www.apollographql.com/docs/react).
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const CUSTOMERS = gql`
21
+ * query {
22
+ * customers {
23
+ * id
24
+ * name
25
+ * }
26
+ * }
27
+ * `
28
+ * const { data, error } = await nhost.graphql.request(CUSTOMERS)
29
+ * ```
30
+ *
31
+ * @docs https://docs.nhost.io/reference/javascript/nhost-js/graphql/request
32
+ */
15
33
  request<T = any, V = any>(document: string | DocumentNode, variables?: V, config?: AxiosRequestConfig): Promise<GraphqlRequestResponse<T>>;
34
+ /**
35
+ * Use `nhost.graphql.getUrl` to get the GraphQL URL.
36
+ *
37
+ * @example
38
+ * ```ts
39
+ * const url = nhost.graphql.getUrl();
40
+ * ```
41
+ *
42
+ * @docs https://docs.nhost.io/reference/javascript/nhost-js/graphql/get-url
43
+ */
16
44
  getUrl(): string;
45
+ /**
46
+ * Use `nhost.graphql.setAccessToken` to a set an access token to be used in subsequent graphql requests. Note that if you're signin in users with `nhost.auth.signIn()` the access token will be set automatically.
47
+ *
48
+ * @example
49
+ * ```ts
50
+ * nhost.graphql.setAccessToken('some-access-token')
51
+ * ```
52
+ *
53
+ * @docs https://docs.nhost.io/reference/javascript/nhost-js/graphql/set-access-token
54
+ */
17
55
  setAccessToken(accessToken: string | undefined): void;
18
56
  private generateAccessTokenHeaders;
19
57
  }
58
+ //# sourceMappingURL=graphql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graphql.d.ts","sourceRoot":"","sources":["graphql.ts"],"names":[],"mappings":"AAAA,OAAc,EAAiB,kBAAkB,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAG3C,OAAO,EAAE,sBAAsB,EAAmB,MAAM,UAAU,CAAA;AAElE,MAAM,WAAW,6BAA6B;IAC5C,GAAG,EAAE,MAAM,CAAA;CACZ;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,GAAG,CAAQ;IACnB,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,WAAW,CAAe;gBAEtB,MAAM,EAAE,6BAA6B;IAUjD;;;;;;;;;;;;;;;;;OAiBG;IACG,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,GAAG,EAC5B,QAAQ,EAAE,MAAM,GAAG,YAAY,EAC/B,SAAS,CAAC,EAAE,CAAC,EACb,MAAM,CAAC,EAAE,kBAAkB,GAC1B,OAAO,CAAC,sBAAsB,CAAC,CAAC,CAAC,CAAC;IAiDrC;;;;;;;;;OASG;IACH,MAAM,IAAI,MAAM;IAIhB;;;;;;;;;OASG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAS9C,OAAO,CAAC,0BAA0B;CAUnC"}
@@ -1,2 +1,3 @@
1
1
  export * from './functions';
2
2
  export * from './graphql';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAA;AAC3B,cAAc,WAAW,CAAA"}
@@ -1 +1,2 @@
1
1
  export * from './nhost-client';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -23,3 +23,4 @@ export declare class NhostClient {
23
23
  */
24
24
  constructor({ backendUrl, refreshIntervalTime, clientStorageGetter, clientStorageSetter, clientStorage, clientStorageType, autoRefreshToken, autoSignIn, start }: NhostClientConstructorParams);
25
25
  }
26
+ //# sourceMappingURL=nhost-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nhost-client.d.ts","sourceRoot":"","sources":["nhost-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAA;AACpF,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAEvD,MAAM,WAAW,4BAA6B,SAAQ,IAAI,CAAC,0BAA0B,EAAE,KAAK,CAAC;IAC3F;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,qBAAa,WAAW;IACtB,IAAI,EAAE,gBAAgB,CAAA;IACtB,OAAO,EAAE,mBAAmB,CAAA;IAC5B,SAAS,EAAE,oBAAoB,CAAA;IAC/B,OAAO,EAAE,kBAAkB,CAAA;IAE3B;;;;;;;OAOG;gBACS,EACV,UAAU,EACV,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,KAAY,EACb,EAAE,4BAA4B;CAiDhC"}
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- var P=Object.create;var l=Object.defineProperty,v=Object.defineProperties,G=Object.getOwnPropertyDescriptor,D=Object.getOwnPropertyDescriptors,H=Object.getOwnPropertyNames,A=Object.getOwnPropertySymbols,E=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,$=Object.prototype.propertyIsEnumerable;var g=(r,e,t)=>e in r?l(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,i=(r,e)=>{for(var t in e||(e={}))d.call(e,t)&&g(r,t,e[t]);if(A)for(var t of A(e))$.call(e,t)&&g(r,t,e[t]);return r},T=(r,e)=>v(r,D(e));var F=(r,e)=>{for(var t in e)l(r,t,{get:e[t],enumerable:!0})},k=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of H(e))!d.call(r,n)&&n!==t&&l(r,n,{get:()=>e[n],enumerable:!(s=G(e,n))||s.enumerable});return r};var C=(r,e,t)=>(t=r!=null?P(E(r)):{},k(e||!r||!r.__esModule?l(t,"default",{value:r,enumerable:!0}):t,r)),I=r=>k(l({},"__esModule",{value:!0}),r);var L={};F(L,{NhostClient:()=>m,NhostFunctionsClient:()=>p,NhostGraphqlClient:()=>f,createClient:()=>S});module.exports=I(L);var R=require("@nhost/hasura-auth-js"),y=require("@nhost/hasura-storage-js");var x=C(require("axios")),p=class{constructor(e){let{url:t}=e;this.accessToken=null,this.instance=x.default.create({baseURL:t})}async call(e,t,s){let n=i(i({},this.generateAccessTokenHeaders()),s==null?void 0:s.headers),o;try{o=await this.instance.post(e,t,T(i({},s),{headers:n}))}catch(u){if(u instanceof Error)return{res:null,error:u}}return o?{res:o,error:null}:{res:null,error:new Error("Unable to make post request to funtion")}}setAccessToken(e){if(!e){this.accessToken=null;return}this.accessToken=e}generateAccessTokenHeaders(){if(!!this.accessToken)return{Authorization:`Bearer ${this.accessToken}`}}};var q=C(require("axios")),N=require("graphql/language/printer"),f=class{constructor(e){let{url:t}=e;this.url=t,this.accessToken=null,this.instance=q.default.create({baseURL:t})}async request(e,t,s){let n=i(i({},s==null?void 0:s.headers),this.generateAccessTokenHeaders());try{let o="",h=(await this.instance.post("",{operationName:o||void 0,query:typeof e=="string"?e:(0,N.print)(e),variables:t},T(i({},s),{headers:n}))).data,{data:c}=h;return h.errors?{data:null,error:h.errors}:typeof c!="object"||Array.isArray(c)||c===null?{data:null,error:new Error("incorrect response data from GraphQL server")}:{data:c,error:null}}catch(o){return o instanceof Error?{data:null,error:o}:(console.error(o),{data:null,error:new Error("Unable to get do GraphQL request")})}}getUrl(){return this.url}setAccessToken(e){if(!e){this.accessToken=null;return}this.accessToken=e}generateAccessTokenHeaders(){if(!!this.accessToken)return{Authorization:`Bearer ${this.accessToken}`}}};var m=class{constructor({backendUrl:e,refreshIntervalTime:t,clientStorageGetter:s,clientStorageSetter:n,clientStorage:o,clientStorageType:u,autoRefreshToken:h,autoSignIn:c,start:w=!0}){if(!e)throw new Error("Please specify a `backendUrl`. Docs: [todo]!");this.auth=new R.HasuraAuthClient({url:`${e}/v1/auth`,refreshIntervalTime:t,clientStorageGetter:s,clientStorageSetter:n,clientStorage:o,clientStorageType:u,autoRefreshToken:h,autoSignIn:c,start:w}),this.storage=new y.HasuraStorageClient({url:`${e}/v1/storage`}),this.functions=new p({url:`${e}/v1/functions`}),this.graphql=new f({url:`${e}/v1/graphql`}),this.storage.setAccessToken(this.auth.getAccessToken()),this.functions.setAccessToken(this.auth.getAccessToken()),this.graphql.setAccessToken(this.auth.getAccessToken()),this.auth.client.onStart(()=>{this.auth.onAuthStateChanged((a,U)=>{a==="SIGNED_OUT"&&(this.storage.setAccessToken(void 0),this.functions.setAccessToken(void 0),this.graphql.setAccessToken(void 0))}),this.auth.onTokenChanged(a=>{this.storage.setAccessToken(a==null?void 0:a.accessToken),this.functions.setAccessToken(a==null?void 0:a.accessToken),this.graphql.setAccessToken(a==null?void 0:a.accessToken)})})}};var S=r=>new m(r);0&&(module.exports={NhostClient,NhostFunctionsClient,NhostGraphqlClient,createClient});
1
+ "use strict";var v=Object.defineProperty,y=Object.defineProperties;var w=Object.getOwnPropertyDescriptors;var k=Object.getOwnPropertySymbols;var C=Object.prototype.hasOwnProperty,N=Object.prototype.propertyIsEnumerable;var d=(r,e,t)=>e in r?v(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,o=(r,e)=>{for(var t in e||(e={}))C.call(e,t)&&d(r,t,e[t]);if(k)for(var t of k(e))N.call(e,t)&&d(r,t,e[t]);return r},l=(r,e)=>y(r,w(e));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var E=require("@nhost/hasura-auth-js"),S=require("@nhost/hasura-storage-js"),H=require("axios"),_=require("graphql/language/printer");function $(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var p=$(H);class A{constructor(e){const{url:t}=e;this.accessToken=null,this.instance=p.default.create({baseURL:t})}async call(e,t,s){const u=o(o({},this.generateAccessTokenHeaders()),s==null?void 0:s.headers);let a;try{a=await this.instance.post(e,t,l(o({},s),{headers:u}))}catch(i){if(i instanceof Error)return{res:null,error:i}}return a?{res:a,error:null}:{res:null,error:new Error("Unable to make post request to funtion")}}setAccessToken(e){if(!e){this.accessToken=null;return}this.accessToken=e}generateAccessTokenHeaders(){if(!!this.accessToken)return{Authorization:`Bearer ${this.accessToken}`}}}class f{constructor(e){const{url:t}=e;this.url=t,this.accessToken=null,this.instance=p.default.create({baseURL:t})}async request(e,t,s){const u=o(o({},s==null?void 0:s.headers),this.generateAccessTokenHeaders());try{const a="",h=(await this.instance.post("",{operationName:a||void 0,query:typeof e=="string"?e:_.print(e),variables:t},l(o({},s),{headers:u}))).data,{data:c}=h;return h.errors?{data:null,error:h.errors}:typeof c!="object"||Array.isArray(c)||c===null?{data:null,error:new Error("incorrect response data from GraphQL server")}:{data:c,error:null}}catch(a){return a instanceof Error?{data:null,error:a}:(console.error(a),{data:null,error:new Error("Unable to get do GraphQL request")})}}getUrl(){return this.url}setAccessToken(e){if(!e){this.accessToken=null;return}this.accessToken=e}generateAccessTokenHeaders(){if(!!this.accessToken)return{Authorization:`Bearer ${this.accessToken}`}}}class g{constructor({backendUrl:e,refreshIntervalTime:t,clientStorageGetter:s,clientStorageSetter:u,clientStorage:a,clientStorageType:i,autoRefreshToken:h,autoSignIn:c,start:q=!0}){var T;if(!e)throw new Error("Please specify a `backendUrl`. Docs: [todo]!");this.auth=new E.HasuraAuthClient({url:`${e}/v1/auth`,refreshIntervalTime:t,clientStorageGetter:s,clientStorageSetter:u,clientStorage:a,clientStorageType:i,autoRefreshToken:h,autoSignIn:c,start:q}),this.storage=new S.HasuraStorageClient({url:`${e}/v1/storage`}),this.functions=new A({url:`${e}/v1/functions`}),this.graphql=new f({url:`${e}/v1/graphql`}),this.storage.setAccessToken(this.auth.getAccessToken()),this.functions.setAccessToken(this.auth.getAccessToken()),this.graphql.setAccessToken(this.auth.getAccessToken()),(T=this.auth.client)==null||T.onStart(()=>{this.auth.onAuthStateChanged((n,j)=>{n==="SIGNED_OUT"&&(this.storage.setAccessToken(void 0),this.functions.setAccessToken(void 0),this.graphql.setAccessToken(void 0))}),this.auth.onTokenChanged(n=>{this.storage.setAccessToken(n==null?void 0:n.accessToken),this.functions.setAccessToken(n==null?void 0:n.accessToken),this.graphql.setAccessToken(n==null?void 0:n.accessToken)})})}}const b=r=>new g(r);exports.NhostClient=g;exports.NhostFunctionsClient=A;exports.NhostGraphqlClient=f;exports.createClient=b;
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1,7 +1 @@
1
- {
2
- "version": 3,
3
- "sources": ["../src/index.ts", "../src/core/nhost-client.ts", "../src/clients/functions.ts", "../src/clients/graphql.ts"],
4
- "sourcesContent": ["import { NhostClient, NhostClientConstructorParams } from './core'\n\nconst createClient = (config: NhostClientConstructorParams) => new NhostClient(config)\n\nexport * from './clients'\nexport * from './core'\nexport { createClient }\n", "import { HasuraAuthClient, NhostAuthConstructorParams } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { NhostFunctionsClient } from '../clients/functions'\nimport { NhostGraphqlClient } from '../clients/graphql'\n\nexport interface NhostClientConstructorParams extends Omit<NhostAuthConstructorParams, 'url'> {\n /**\n * Nhost backend URL.\n */\n backendUrl: string\n}\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n\n /**\n * Nhost Client\n *\n * @example\n * const nhost = new NhostClient({ url });\n *\n * @docs https://docs.nhost.io/reference/javascript\n */\n constructor({\n backendUrl,\n refreshIntervalTime,\n clientStorageGetter,\n clientStorageSetter,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start = true\n }: NhostClientConstructorParams) {\n if (!backendUrl) throw new Error('Please specify a `backendUrl`. Docs: [todo]!')\n this.auth = new HasuraAuthClient({\n url: `${backendUrl}/v1/auth`,\n refreshIntervalTime,\n clientStorageGetter,\n clientStorageSetter,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start\n })\n\n this.storage = new HasuraStorageClient({\n url: `${backendUrl}/v1/storage`\n })\n\n this.functions = new NhostFunctionsClient({\n url: `${backendUrl}/v1/functions`\n })\n\n this.graphql = new NhostGraphqlClient({\n url: `${backendUrl}/v1/graphql`\n })\n\n // * Set current token if token is already accessable\n this.storage.setAccessToken(this.auth.getAccessToken())\n this.functions.setAccessToken(this.auth.getAccessToken())\n this.graphql.setAccessToken(this.auth.getAccessToken())\n\n this.auth.client.onStart(() => {\n // * Set access token when signing out\n this.auth.onAuthStateChanged((_event, session) => {\n if (_event === 'SIGNED_OUT') {\n this.storage.setAccessToken(undefined)\n this.functions.setAccessToken(undefined)\n this.graphql.setAccessToken(undefined)\n }\n })\n\n // * Update access token for clients, including when signin in\n this.auth.onTokenChanged((session) => {\n this.storage.setAccessToken(session?.accessToken)\n this.functions.setAccessToken(session?.accessToken)\n this.graphql.setAccessToken(session?.accessToken)\n })\n })\n }\n}\n", "import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { FunctionCallResponse } from '../types'\nexport interface NhostFunctionsConstructorParams {\n url: string\n}\n\n/**\n * @alias Functions\n */\nexport class NhostFunctionsClient {\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url } = params\n\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n async call<T = unknown, D = any>(\n url: string,\n data: D,\n config?: AxiosRequestConfig\n ): Promise<FunctionCallResponse<T>> {\n const headers = {\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n let res\n try {\n res = await this.instance.post<T, AxiosResponse<T>, D>(url, data, { ...config, headers })\n } catch (error) {\n if (error instanceof Error) {\n return { res: null, error }\n }\n }\n\n if (!res) {\n return {\n res: null,\n error: new Error('Unable to make post request to funtion')\n }\n }\n\n return { res, error: null }\n }\n\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders(): { Authorization: string } | undefined {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n", "import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\nimport type { DocumentNode } from 'graphql'\nimport { print } from 'graphql/language/printer'\n\nimport { GraphqlRequestResponse, GraphqlResponse } from '../types'\n\nexport interface NhostGraphqlConstructorParams {\n url: string\n}\n\n/**\n * @alias GraphQL\n */\nexport class NhostGraphqlClient {\n private url: string\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostGraphqlConstructorParams) {\n const { url } = params\n\n this.url = url\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n async request<T = any, V = any>(\n document: string | DocumentNode,\n variables?: V,\n config?: AxiosRequestConfig\n ): Promise<GraphqlRequestResponse<T>> {\n // add auth headers if any\n const headers = {\n ...config?.headers,\n ...this.generateAccessTokenHeaders()\n }\n\n try {\n const operationName = ''\n const res = await this.instance.post<GraphqlResponse<T>>(\n '',\n {\n operationName: operationName || undefined,\n query: typeof document === 'string' ? document : print(document),\n variables\n },\n { ...config, headers }\n )\n\n const responseData = res.data\n const { data } = responseData\n\n if (responseData.errors) {\n return {\n data: null,\n error: responseData.errors\n }\n }\n\n if (typeof data !== 'object' || Array.isArray(data) || data === null) {\n return {\n data: null,\n error: new Error('incorrect response data from GraphQL server')\n }\n }\n\n return { data, error: null }\n } catch (error) {\n if (error instanceof Error) {\n return { data: null, error }\n }\n console.error(error)\n return {\n data: null,\n error: new Error('Unable to get do GraphQL request')\n }\n }\n }\n\n getUrl(): string {\n return this.url\n }\n\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders() {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/clients/functions.ts","../src/clients/graphql.ts","../src/core/nhost-client.ts","../src/index.ts"],"sourcesContent":["import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios'\n\nimport { FunctionCallResponse } from '../types'\nexport interface NhostFunctionsConstructorParams {\n url: string\n}\n\n/**\n * @alias Functions\n */\nexport class NhostFunctionsClient {\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url } = params\n\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n /**\n * Use `nhost.functions.call` to call (sending a POST request to) a serverless function.\n *\n * @example\n * ```ts\n * await nhost.functions.call('send-welcome-email', { email: 'joe@example.com', name: 'Joe Doe' })\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript/nhost-js/functions/call\n */\n async call<T = unknown, D = any>(\n url: string,\n data: D,\n config?: AxiosRequestConfig\n ): Promise<FunctionCallResponse<T>> {\n const headers = {\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n let res\n try {\n res = await this.instance.post<T, AxiosResponse<T>, D>(url, data, { ...config, headers })\n } catch (error) {\n if (error instanceof Error) {\n return { res: null, error }\n }\n }\n\n if (!res) {\n return {\n res: null,\n error: new Error('Unable to make post request to funtion')\n }\n }\n\n return { res, error: null }\n }\n\n /**\n * Use `nhost.functions.setAccessToken` to a set an access token to be used in subsequent functions requests. Note that if you're signin in users with `nhost.auth.signIn()` the access token will be set automatically.\n *\n * @example\n * ```ts\n * nhost.functions.setAccessToken('some-access-token')\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript/nhost-js/functions/set-access-token\n */\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders(): { Authorization: string } | undefined {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n","import axios, { AxiosInstance, AxiosRequestConfig } from 'axios'\nimport type { DocumentNode } from 'graphql'\nimport { print } from 'graphql/language/printer'\n\nimport { GraphqlRequestResponse, GraphqlResponse } from '../types'\n\nexport interface NhostGraphqlConstructorParams {\n url: string\n}\n\n/**\n * @alias GraphQL\n */\nexport class NhostGraphqlClient {\n private url: string\n private instance: AxiosInstance\n private accessToken: string | null\n\n constructor(params: NhostGraphqlConstructorParams) {\n const { url } = params\n\n this.url = url\n this.accessToken = null\n this.instance = axios.create({\n baseURL: url\n })\n }\n\n /**\n * Use `nhost.graphql.request` to send a GraphQL request. For more serious GraphQL usage in your app we recommend using a GraphQL client such as Apollo Client (https://www.apollographql.com/docs/react).\n *\n * @example\n * ```ts\n * const CUSTOMERS = gql`\n * query {\n * customers {\n * id\n * name\n * }\n * }\n * `\n * const { data, error } = await nhost.graphql.request(CUSTOMERS)\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript/nhost-js/graphql/request\n */\n async request<T = any, V = any>(\n document: string | DocumentNode,\n variables?: V,\n config?: AxiosRequestConfig\n ): Promise<GraphqlRequestResponse<T>> {\n // add auth headers if any\n const headers = {\n ...config?.headers,\n ...this.generateAccessTokenHeaders()\n }\n\n try {\n const operationName = ''\n const res = await this.instance.post<GraphqlResponse<T>>(\n '',\n {\n operationName: operationName || undefined,\n query: typeof document === 'string' ? document : print(document),\n variables\n },\n { ...config, headers }\n )\n\n const responseData = res.data\n const { data } = responseData\n\n if (responseData.errors) {\n return {\n data: null,\n error: responseData.errors\n }\n }\n\n if (typeof data !== 'object' || Array.isArray(data) || data === null) {\n return {\n data: null,\n error: new Error('incorrect response data from GraphQL server')\n }\n }\n\n return { data, error: null }\n } catch (error) {\n if (error instanceof Error) {\n return { data: null, error }\n }\n console.error(error)\n return {\n data: null,\n error: new Error('Unable to get do GraphQL request')\n }\n }\n }\n\n /**\n * Use `nhost.graphql.getUrl` to get the GraphQL URL.\n *\n * @example\n * ```ts\n * const url = nhost.graphql.getUrl();\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript/nhost-js/graphql/get-url\n */\n getUrl(): string {\n return this.url\n }\n\n /**\n * Use `nhost.graphql.setAccessToken` to a set an access token to be used in subsequent graphql requests. Note that if you're signin in users with `nhost.auth.signIn()` the access token will be set automatically.\n *\n * @example\n * ```ts\n * nhost.graphql.setAccessToken('some-access-token')\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript/nhost-js/graphql/set-access-token\n */\n setAccessToken(accessToken: string | undefined) {\n if (!accessToken) {\n this.accessToken = null\n return\n }\n\n this.accessToken = accessToken\n }\n\n private generateAccessTokenHeaders() {\n if (!this.accessToken) {\n return\n }\n\n // eslint-disable-next-line consistent-return\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n}\n","import { HasuraAuthClient, NhostAuthConstructorParams } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { NhostFunctionsClient } from '../clients/functions'\nimport { NhostGraphqlClient } from '../clients/graphql'\n\nexport interface NhostClientConstructorParams extends Omit<NhostAuthConstructorParams, 'url'> {\n /**\n * Nhost backend URL.\n */\n backendUrl: string\n}\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n\n /**\n * Nhost Client\n *\n * @example\n * const nhost = new NhostClient({ url });\n *\n * @docs https://docs.nhost.io/reference/javascript\n */\n constructor({\n backendUrl,\n refreshIntervalTime,\n clientStorageGetter,\n clientStorageSetter,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start = true\n }: NhostClientConstructorParams) {\n if (!backendUrl) throw new Error('Please specify a `backendUrl`. Docs: [todo]!')\n this.auth = new HasuraAuthClient({\n url: `${backendUrl}/v1/auth`,\n refreshIntervalTime,\n clientStorageGetter,\n clientStorageSetter,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start\n })\n\n this.storage = new HasuraStorageClient({\n url: `${backendUrl}/v1/storage`\n })\n\n this.functions = new NhostFunctionsClient({\n url: `${backendUrl}/v1/functions`\n })\n\n this.graphql = new NhostGraphqlClient({\n url: `${backendUrl}/v1/graphql`\n })\n\n // * Set current token if token is already accessable\n this.storage.setAccessToken(this.auth.getAccessToken())\n this.functions.setAccessToken(this.auth.getAccessToken())\n this.graphql.setAccessToken(this.auth.getAccessToken())\n\n this.auth.client?.onStart(() => {\n // * Set access token when signing out\n this.auth.onAuthStateChanged((_event, session) => {\n if (_event === 'SIGNED_OUT') {\n this.storage.setAccessToken(undefined)\n this.functions.setAccessToken(undefined)\n this.graphql.setAccessToken(undefined)\n }\n })\n\n // * Update access token for clients, including when signin in\n this.auth.onTokenChanged((session) => {\n this.storage.setAccessToken(session?.accessToken)\n this.functions.setAccessToken(session?.accessToken)\n this.graphql.setAccessToken(session?.accessToken)\n })\n })\n }\n}\n","import { NhostClient, NhostClientConstructorParams } from './core'\n\nconst createClient = (config: NhostClientConstructorParams) => new NhostClient(config)\n\nexport * from './clients'\nexport * from './core'\nexport { createClient }\n"],"names":["axios","print","HasuraAuthClient","HasuraStorageClient"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -3,3 +3,4 @@ declare const createClient: (config: NhostClientConstructorParams) => NhostClien
3
3
  export * from './clients';
4
4
  export * from './core';
5
5
  export { createClient };
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,QAAQ,CAAA;AAElE,QAAA,MAAM,YAAY,WAAY,4BAA4B,gBAA4B,CAAA;AAEtF,cAAc,WAAW,CAAA;AACzB,cAAc,QAAQ,CAAA;AACtB,OAAO,EAAE,YAAY,EAAE,CAAA"}