@nhost/nhost-js 2.0.7 → 2.0.9

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.
@@ -12,7 +12,7 @@ export declare class NhostFunctionsClient {
12
12
  private accessToken;
13
13
  private adminSecret?;
14
14
  constructor(params: NhostFunctionsConstructorParams);
15
- call<T = unknown, D = any>(url: string, data: D, config?: NhostFunctionCallConfig): Promise<NhostFunctionCallResponse<T>>;
15
+ call<T = unknown, D = any>(url: string, data: D | null, config?: NhostFunctionCallConfig): Promise<NhostFunctionCallResponse<T>>;
16
16
  /**
17
17
  * 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.
18
18
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/functions/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,SAAS,CAAA;AAChB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,4BAA4B,wBAWzE;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,WAAW,CAAC,CAAQ;gBAEhB,MAAM,EAAE,+BAA+B;IAQ7C,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,GAAG,EAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,EACP,MAAM,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;IA6DxC;;;;;;;;;OASG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAS9C,0BAA0B,IAAI,uBAAuB,CAAC,SAAS,CAAC;CAajE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/clients/functions/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,+BAA+B,EAChC,MAAM,SAAS,CAAA;AAChB;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,4BAA4B,wBAWzE;AAED;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,WAAW,CAAe;IAClC,OAAO,CAAC,WAAW,CAAC,CAAQ;gBAEhB,MAAM,EAAE,+BAA+B;IAQ7C,IAAI,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,GAAG,EAC7B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,GAAG,IAAI,EACd,MAAM,CAAC,EAAE,uBAAuB,GAC/B,OAAO,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC;IA6DxC;;;;;;;;;OASG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS;IAS9C,0BAA0B,IAAI,uBAAuB,CAAC,SAAS,CAAC;CAajE"}
package/dist/index.cjs.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("@nhost/hasura-auth-js"),g=require("@nhost/hasura-storage-js"),C=require("isomorphic-unfetch"),S=require("@nhost/graphql-js"),A=/^((?<protocol>http[s]?):\/\/)?(?<host>localhost)(:(?<port>(\d+|__\w+__)))?$/;function h(t,e){const{backendUrl:s,subdomain:n,region:u}=t;if(s)return`${s}/v1/${e}`;if(!n)throw new Error("Either `backendUrl` or `subdomain` must be set.");const i=n.match(A);if(i!=null&&i.groups){const{protocol:r="http",host:o,port:d=1337}=i.groups,c=q(e);return c||`${r}://${o}:${d}/v1/${e}`}if(!u)throw new Error('`region` must be set when using a `subdomain` other than "localhost".');return`https://${n}.${e}.${u}.nhost.run/v1`}function y(){return typeof window<"u"}function m(){return typeof process<"u"&&process.env}function q(t){return y()||!m()?null:process.env[`NHOST_${t.toUpperCase()}_URL`]}function v(t,e){const n=e.startsWith("/")?e:`/${e}`;return t+n}function b(t){const e="subdomain"in t||"backendUrl"in t?h(t,"auth"):t.authUrl;if(!e)throw new Error("Please provide `subdomain` or `authUrl`.");return new f.HasuraAuthClient({url:e,...t})}function w(t){const e="subdomain"in t||"backendUrl"in t?h(t,"functions"):t.functionsUrl;if(!e)throw new Error("Please provide `subdomain` or `functionsUrl`.");return new p({url:e,...t})}class p{constructor(e){const{url:s,adminSecret:n}=e;this.url=s,this.accessToken=null,this.adminSecret=n}async call(e,s,n){const u={"Content-Type":"application/json",...this.generateAccessTokenHeaders(),...n==null?void 0:n.headers},i=v(this.url,e);try{const r=await C(i,{body:JSON.stringify(s),headers:u,method:"POST"});if(!r.ok)throw new Error(r.statusText);let o;return r.headers.get("content-type")==="application/json"?o=await r.json():o=await r.text(),{res:{data:o,status:r.status,statusText:r.statusText},error:null}}catch(r){const o=r;return{res:null,error:{message:o.message,status:o.name==="AbortError"?0:500,error:o.name==="AbortError"?"abort-error":"unknown"}}}}setAccessToken(e){if(!e){this.accessToken=null;return}this.accessToken=e}generateAccessTokenHeaders(){return this.adminSecret?{"x-hasura-admin-secret":this.adminSecret}:this.accessToken?{Authorization:`Bearer ${this.accessToken}`}:{}}}function k(t){const e="subdomain"in t||"backendUrl"in t?h(t,"graphql"):t.graphqlUrl;if(!e)throw new Error("Please provide `subdomain` or `graphqlUrl`.");return new S.NhostGraphqlClient({url:e,...t})}function T(t){const e="subdomain"in t||"backendUrl"in t?h(t,"storage"):t.storageUrl;if(!e)throw new Error("Please provide `subdomain` or `storageUrl`.");return new g.HasuraStorageClient({url:e,...t})}const E=t=>new U(t);class U{constructor({refreshIntervalTime:e,clientStorage:s,clientStorageType:n,autoRefreshToken:u,autoSignIn:i,adminSecret:r,devTools:o,start:d=!0,...c}){this.auth=b({refreshIntervalTime:e,clientStorage:s,clientStorageType:n,autoRefreshToken:u,autoSignIn:i,start:d,...c}),this.storage=T({adminSecret:r,...c}),this.functions=w({adminSecret:r,...c}),this.graphql=k({adminSecret:r,...c}),this.auth.onAuthStateChanged((a,l)=>{a==="SIGNED_OUT"&&(this.storage.setAccessToken(void 0),this.functions.setAccessToken(void 0),this.graphql.setAccessToken(void 0))}),this.auth.onTokenChanged(a=>{const l=a==null?void 0:a.accessToken;this.storage.setAccessToken(l),this.functions.setAccessToken(l),this.graphql.setAccessToken(l)}),this._adminSecret=r,this.devTools=o}get adminSecret(){return this._adminSecret}set adminSecret(e){this._adminSecret=e,this.storage.setAdminSecret(e)}}exports.NhostClient=U;exports.NhostFunctionsClient=p;exports.createAuthClient=b;exports.createFunctionsClient=w;exports.createGraphqlClient=k;exports.createNhostClient=E;exports.createStorageClient=T;for(const t in f)t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>f[t]});for(const t in g)t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>g[t]});
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const f=require("@nhost/hasura-auth-js"),g=require("@nhost/hasura-storage-js"),U=require("isomorphic-unfetch"),C=require("@nhost/graphql-js"),A=/^((?<protocol>http[s]?):\/\/)?(?<host>(localhost|local))(:(?<port>(\d+|__\w+__)))?$/;function d(t,e){const{backendUrl:i,subdomain:r,region:u}=t;if(i)return`${i}/v1/${e}`;if(!r)throw new Error("Either `backendUrl` or `subdomain` must be set.");const c=r.match(A);if(c!=null&&c.groups){const{protocol:s,host:n,port:o}=c.groups,l=v(e);return l||(n==="localhost"?(console.warn('The `subdomain` is set to "localhost". Support for this will be removed in a future release. Please use "local" instead.'),`${s||"http"}://localhost:${o||1337}/v1/${e}`):o?`${s||"https"}://local.${e}.nhost.run:${o}/v1`:`${s||"https"}://local.${e}.nhost.run/v1`)}if(!u)throw new Error('`region` must be set when using a `subdomain` other than "local".');return`https://${r}.${e}.${u}.nhost.run/v1`}function m(){return typeof window<"u"}function $(){return typeof process<"u"&&process.env}function v(t){return m()||!$()?null:process.env[`NHOST_${t.toUpperCase()}_URL`]}function q(t,e){const r=e.startsWith("/")?e:`/${e}`;return t+r}function b(t){const e="subdomain"in t||"backendUrl"in t?d(t,"auth"):t.authUrl;if(!e)throw new Error("Please provide `subdomain` or `authUrl`.");return new f.HasuraAuthClient({url:e,...t})}function p(t){const e="subdomain"in t||"backendUrl"in t?d(t,"functions"):t.functionsUrl;if(!e)throw new Error("Please provide `subdomain` or `functionsUrl`.");return new w({url:e,...t})}class w{constructor(e){const{url:i,adminSecret:r}=e;this.url=i,this.accessToken=null,this.adminSecret=r}async call(e,i,r){var s;const u={"Content-Type":"application/json",...this.generateAccessTokenHeaders(),...r==null?void 0:r.headers},c=q(this.url,e);try{const n=await U(c,{body:i?JSON.stringify(i):null,headers:u,method:"POST"});if(!n.ok)throw new Error(n.statusText);let o;return(s=n.headers.get("content-type"))!=null&&s.includes("application/json")?o=await n.json():o=await n.text(),{res:{data:o,status:n.status,statusText:n.statusText},error:null}}catch(n){const o=n;return{res:null,error:{message:o.message,status:o.name==="AbortError"?0:500,error:o.name==="AbortError"?"abort-error":"unknown"}}}}setAccessToken(e){if(!e){this.accessToken=null;return}this.accessToken=e}generateAccessTokenHeaders(){return this.adminSecret?{"x-hasura-admin-secret":this.adminSecret}:this.accessToken?{Authorization:`Bearer ${this.accessToken}`}:{}}}function T(t){const e="subdomain"in t||"backendUrl"in t?d(t,"graphql"):t.graphqlUrl;if(!e)throw new Error("Please provide `subdomain` or `graphqlUrl`.");return new C.NhostGraphqlClient({url:e,...t})}function k(t){const e="subdomain"in t||"backendUrl"in t?d(t,"storage"):t.storageUrl;if(!e)throw new Error("Please provide `subdomain` or `storageUrl`.");return new g.HasuraStorageClient({url:e,...t})}const y=t=>new S(t);class S{constructor({refreshIntervalTime:e,clientStorage:i,clientStorageType:r,autoRefreshToken:u,autoSignIn:c,adminSecret:s,devTools:n,start:o=!0,...l}){this.auth=b({refreshIntervalTime:e,clientStorage:i,clientStorageType:r,autoRefreshToken:u,autoSignIn:c,start:o,...l}),this.storage=k({adminSecret:s,...l}),this.functions=p({adminSecret:s,...l}),this.graphql=T({adminSecret:s,...l}),this.auth.onAuthStateChanged((a,h)=>{a==="SIGNED_OUT"&&(this.storage.setAccessToken(void 0),this.functions.setAccessToken(void 0),this.graphql.setAccessToken(void 0))}),this.auth.onTokenChanged(a=>{const h=a==null?void 0:a.accessToken;this.storage.setAccessToken(h),this.functions.setAccessToken(h),this.graphql.setAccessToken(h)}),this._adminSecret=s,this.devTools=n}get adminSecret(){return this._adminSecret}set adminSecret(e){this._adminSecret=e,this.storage.setAdminSecret(e)}}exports.NhostClient=S;exports.NhostFunctionsClient=w;exports.createAuthClient=b;exports.createFunctionsClient=p;exports.createGraphqlClient=T;exports.createNhostClient=y;exports.createStorageClient=k;for(const t in f)t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>f[t]});for(const t in g)t!=="default"&&!Object.prototype.hasOwnProperty.call(exports,t)&&Object.defineProperty(exports,t,{enumerable:!0,get:()=>g[t]});
2
2
  //# sourceMappingURL=index.cjs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","sources":["../src/utils/helpers.ts","../src/clients/auth.ts","../src/clients/functions/index.ts","../src/clients/graphql.ts","../src/clients/storage.ts","../src/clients/nhost.ts"],"sourcesContent":["import { NhostClientConstructorParams } from './types'\n\n// a port can be a number or a placeholder string with leading and trailing double underscores, f.e. \"8080\" or \"__PLACEHOLDER_NAME__\"\nexport const LOCALHOST_REGEX =\n /^((?<protocol>http[s]?):\\/\\/)?(?<host>localhost)(:(?<port>(\\d+|__\\w+__)))?$/\n\n/**\n * `backendUrl` should now be used only when self-hosting\n * `subdomain` and `region` should be used instead when using the Nhost platform\n * `\n * @param backendOrSubdomain\n * @param service\n * @returns\n */\nexport function urlFromSubdomain(\n backendOrSubdomain: Pick<NhostClientConstructorParams, 'region' | 'subdomain' | 'backendUrl'>,\n service: string\n): string {\n const { backendUrl, subdomain, region } = backendOrSubdomain\n\n if (backendUrl) {\n return `${backendUrl}/v1/${service}`\n }\n\n if (!subdomain) {\n throw new Error('Either `backendUrl` or `subdomain` must be set.')\n }\n\n // check if subdomain is [http[s]://]localhost[:port]\n const subdomainLocalhostFound = subdomain.match(LOCALHOST_REGEX)\n if (subdomainLocalhostFound?.groups) {\n const { protocol = 'http', host, port = 1337 } = subdomainLocalhostFound.groups\n\n const urlFromEnv = getValueFromEnv(service)\n if (urlFromEnv) {\n return urlFromEnv\n }\n return `${protocol}://${host}:${port}/v1/${service}`\n }\n\n if (!region) {\n throw new Error('`region` must be set when using a `subdomain` other than \"localhost\".')\n }\n\n return `https://${subdomain}.${service}.${region}.nhost.run/v1`\n}\n\n/**\n *\n * @returns whether the code is running in a browser\n */\nfunction isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\n/**\n *\n * @returns whether the code is running in a Node.js environment\n */\nfunction environmentIsAvailable() {\n return typeof process !== 'undefined' && process.env\n}\n\n/**\n *\n * @param service auth | storage | graphql | functions\n * @returns the service's url if the corresponding env var is set\n * NHOST_${service}_URL\n */\nfunction getValueFromEnv(service: string) {\n if (isBrowser() || !environmentIsAvailable()) {\n return null\n }\n\n return process.env[`NHOST_${service.toUpperCase()}_URL`]\n}\n\n/**\n * Combines a base URL and a path into a single URL string.\n *\n * @param baseUrl - The base URL to use.\n * @param path - The path to append to the base URL.\n * @returns The combined URL string.\n */\nexport function buildUrl(baseUrl: string, path: string) {\n const hasLeadingSlash = path.startsWith('/')\n const urlPath = hasLeadingSlash ? path : `/${path}`\n return baseUrl + urlPath\n}\n","import { HasuraAuthClient } from '@nhost/hasura-auth-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Auth from either a subdomain or a URL\n */\nexport function createAuthClient(params: NhostClientConstructorParams) {\n const authUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'auth')\n : params.authUrl\n\n if (!authUrl) {\n throw new Error('Please provide `subdomain` or `authUrl`.')\n }\n\n return new HasuraAuthClient({ url: authUrl, ...params })\n}\n","import fetch from 'isomorphic-unfetch'\nimport { buildUrl, urlFromSubdomain } from '../../utils/helpers'\nimport { NhostClientConstructorParams } from '../../utils/types'\nimport {\n NhostFunctionCallConfig,\n NhostFunctionCallResponse,\n NhostFunctionsConstructorParams\n} from './types'\n/**\n * Creates a client for Functions from either a subdomain or a URL\n */\nexport function createFunctionsClient(params: NhostClientConstructorParams) {\n const functionsUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'functions')\n : params.functionsUrl\n\n if (!functionsUrl) {\n throw new Error('Please provide `subdomain` or `functionsUrl`.')\n }\n\n return new NhostFunctionsClient({ url: functionsUrl, ...params })\n}\n\n/**\n * @alias Functions\n */\nexport class NhostFunctionsClient {\n readonly url: string\n private accessToken: string | null\n private adminSecret?: string\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url, adminSecret } = params\n\n this.url = url\n this.accessToken = null\n this.adminSecret = adminSecret\n }\n\n async call<T = unknown, D = any>(\n url: string,\n data: D,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>>\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 body: D,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>> {\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n const fullUrl = buildUrl(this.url, url)\n\n try {\n const result = await fetch(fullUrl, {\n body: JSON.stringify(body),\n headers,\n method: 'POST'\n })\n\n if (!result.ok) {\n throw new Error(result.statusText)\n }\n\n let data: T\n\n if (result.headers.get('content-type') === 'application/json') {\n data = await result.json()\n } else {\n data = (await result.text()) as unknown as T\n }\n\n return {\n res: { data, status: result.status, statusText: result.statusText },\n error: null\n }\n } catch (e) {\n const error = e as Error\n return {\n res: null,\n error: {\n message: error.message,\n status: error.name === 'AbortError' ? 0 : 500,\n error: error.name === 'AbortError' ? 'abort-error' : 'unknown'\n }\n }\n }\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 generateAccessTokenHeaders(): NhostFunctionCallConfig['headers'] {\n if (this.adminSecret) {\n return {\n 'x-hasura-admin-secret': this.adminSecret\n }\n }\n if (this.accessToken) {\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n return {}\n }\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for GraphQL from either a subdomain or a URL\n */\nexport function createGraphqlClient(params: NhostClientConstructorParams) {\n const graphqlUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'graphql')\n : params.graphqlUrl\n\n if (!graphqlUrl) {\n throw new Error('Please provide `subdomain` or `graphqlUrl`.')\n }\n\n return new NhostGraphqlClient({ url: graphqlUrl, ...params })\n}\n","import { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Storage from either a subdomain or a URL\n */\nexport function createStorageClient(params: NhostClientConstructorParams<undefined>) {\n const storageUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'storage')\n : params.storageUrl\n\n if (!storageUrl) {\n throw new Error('Please provide `subdomain` or `storageUrl`.')\n }\n\n return new HasuraStorageClient({ url: storageUrl, ...params })\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { HasuraAuthClient } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\nimport { NhostClientConstructorParams } from '../utils/types'\nimport { createAuthClient } from './auth'\nimport { createFunctionsClient, NhostFunctionsClient } from './functions'\nimport { createGraphqlClient } from './graphql'\nimport { createStorageClient } from './storage'\n\nexport const createNhostClient = (params: NhostClientConstructorParams) => new NhostClient(params)\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n private _adminSecret?: string\n readonly devTools?: boolean\n\n /**\n * Nhost Client\n *\n * @example\n * ```ts\n * const nhost = new NhostClient({ subdomain, region });\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript\n */\n constructor({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n adminSecret,\n devTools,\n start = true,\n ...urlParams\n }: NhostClientConstructorParams) {\n // * Set clients for all services\n this.auth = createAuthClient({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start,\n ...urlParams\n })\n this.storage = createStorageClient({ adminSecret, ...urlParams })\n this.functions = createFunctionsClient({ adminSecret, ...urlParams })\n this.graphql = createGraphqlClient({ adminSecret, ...urlParams })\n\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 const accessToken = session?.accessToken\n this.storage.setAccessToken(accessToken)\n this.functions.setAccessToken(accessToken)\n this.graphql.setAccessToken(accessToken)\n })\n\n this._adminSecret = adminSecret\n this.devTools = devTools\n }\n\n get adminSecret(): string | undefined {\n return this._adminSecret\n }\n\n set adminSecret(newValue: string | undefined) {\n this._adminSecret = newValue\n this.storage.setAdminSecret(newValue)\n // TODO inconsistent API: storage can change admin secret, but functions/graphql cannot\n // this.functions.setAdminSecret(newValue)\n // this.graphql.setAdminSecret(newValue)\n }\n}\n"],"names":["LOCALHOST_REGEX","urlFromSubdomain","backendOrSubdomain","service","backendUrl","subdomain","region","subdomainLocalhostFound","protocol","host","port","urlFromEnv","getValueFromEnv","isBrowser","environmentIsAvailable","buildUrl","baseUrl","path","urlPath","createAuthClient","params","authUrl","HasuraAuthClient","createFunctionsClient","functionsUrl","NhostFunctionsClient","url","adminSecret","body","config","headers","fullUrl","result","fetch","data","e","error","accessToken","createGraphqlClient","graphqlUrl","NhostGraphqlClient","createStorageClient","storageUrl","HasuraStorageClient","createNhostClient","NhostClient","refreshIntervalTime","clientStorage","clientStorageType","autoRefreshToken","autoSignIn","devTools","start","urlParams","_event","session","newValue"],"mappings":"8NAGaA,EACX,8EAUc,SAAAC,EACdC,EACAC,EACQ,CACR,KAAM,CAAE,WAAAC,EAAY,UAAAC,EAAW,OAAAC,CAAA,EAAWJ,EAE1C,GAAIE,EACF,MAAO,GAAGA,QAAiBD,IAG7B,GAAI,CAACE,EACG,MAAA,IAAI,MAAM,iDAAiD,EAI7D,MAAAE,EAA0BF,EAAU,MAAML,CAAe,EAC/D,GAAIO,GAAA,MAAAA,EAAyB,OAAQ,CACnC,KAAM,CAAE,SAAAC,EAAW,OAAQ,KAAAC,EAAM,KAAAC,EAAO,MAASH,EAAwB,OAEnEI,EAAaC,EAAgBT,CAAO,EAC1C,OAAIQ,GAGG,GAAGH,OAAcC,KAAQC,QAAWP,GAC7C,CAEA,GAAI,CAACG,EACG,MAAA,IAAI,MAAM,uEAAuE,EAGlF,MAAA,WAAWD,KAAaF,KAAWG,gBAC5C,CAMA,SAASO,GAAqB,CAC5B,OAAO,OAAO,OAAW,GAC3B,CAMA,SAASC,GAAyB,CACzB,OAAA,OAAO,QAAY,KAAe,QAAQ,GACnD,CAQA,SAASF,EAAgBT,EAAiB,CACxC,OAAIU,EAAU,GAAK,CAACC,IACX,KAGF,QAAQ,IAAI,SAASX,EAAQ,YAAY,QAClD,CASgB,SAAAY,EAASC,EAAiBC,EAAc,CAEhD,MAAAC,EADkBD,EAAK,WAAW,GAAG,EACTA,EAAO,IAAIA,IAC7C,OAAOD,EAAUE,CACnB,CChFO,SAASC,EAAiBC,EAAsC,CAC/D,MAAAC,EACJ,cAAeD,GAAU,eAAgBA,EACrCnB,EAAiBmB,EAAQ,MAAM,EAC/BA,EAAO,QAEb,GAAI,CAACC,EACG,MAAA,IAAI,MAAM,0CAA0C,EAG5D,OAAO,IAAIC,EAAiB,iBAAA,CAAE,IAAKD,EAAS,GAAGD,EAAQ,CACzD,CCRO,SAASG,EAAsBH,EAAsC,CACpE,MAAAI,EACJ,cAAeJ,GAAU,eAAgBA,EACrCnB,EAAiBmB,EAAQ,WAAW,EACpCA,EAAO,aAEb,GAAI,CAACI,EACG,MAAA,IAAI,MAAM,+CAA+C,EAGjE,OAAO,IAAIC,EAAqB,CAAE,IAAKD,EAAc,GAAGJ,EAAQ,CAClE,CAKO,MAAMK,CAAqB,CAKhC,YAAYL,EAAyC,CAC7C,KAAA,CAAE,IAAAM,EAAK,YAAAC,CAAgB,EAAAP,EAE7B,KAAK,IAAMM,EACX,KAAK,YAAc,KACnB,KAAK,YAAcC,CACrB,CAkBA,MAAM,KACJD,EACAE,EACAC,EACuC,CACvC,MAAMC,EAAuB,CAC3B,eAAgB,mBAChB,GAAG,KAAK,2BAA2B,EACnC,GAAGD,GAAA,YAAAA,EAAQ,OAAA,EAGPE,EAAUhB,EAAS,KAAK,IAAKW,CAAG,EAElC,GAAA,CACI,MAAAM,EAAS,MAAMC,EAAMF,EAAS,CAClC,KAAM,KAAK,UAAUH,CAAI,EACzB,QAAAE,EACA,OAAQ,MAAA,CACT,EAEG,GAAA,CAACE,EAAO,GACJ,MAAA,IAAI,MAAMA,EAAO,UAAU,EAG/B,IAAAE,EAEJ,OAAIF,EAAO,QAAQ,IAAI,cAAc,IAAM,mBAClCE,EAAA,MAAMF,EAAO,OAEZE,EAAA,MAAMF,EAAO,OAGhB,CACL,IAAK,CAAE,KAAAE,EAAM,OAAQF,EAAO,OAAQ,WAAYA,EAAO,UAAW,EAClE,MAAO,IAAA,QAEFG,GACP,MAAMC,EAAQD,EACP,MAAA,CACL,IAAK,KACL,MAAO,CACL,QAASC,EAAM,QACf,OAAQA,EAAM,OAAS,aAAe,EAAI,IAC1C,MAAOA,EAAM,OAAS,aAAe,cAAgB,SACvD,CAAA,CAEJ,CACF,CAYA,eAAeC,EAAiC,CAC9C,GAAI,CAACA,EAAa,CAChB,KAAK,YAAc,KACnB,MACF,CAEA,KAAK,YAAcA,CACrB,CAEA,4BAAiE,CAC/D,OAAI,KAAK,YACA,CACL,wBAAyB,KAAK,WAAA,EAG9B,KAAK,YACA,CACL,cAAe,UAAU,KAAK,aAAA,EAG3B,EACT,CACF,CClIO,SAASC,EAAoBlB,EAAsC,CAClE,MAAAmB,EACJ,cAAenB,GAAU,eAAgBA,EACrCnB,EAAiBmB,EAAQ,SAAS,EAClCA,EAAO,WAEb,GAAI,CAACmB,EACG,MAAA,IAAI,MAAM,6CAA6C,EAG/D,OAAO,IAAIC,EAAmB,mBAAA,CAAE,IAAKD,EAAY,GAAGnB,EAAQ,CAC9D,CCVO,SAASqB,EAAoBrB,EAAiD,CAC7E,MAAAsB,EACJ,cAAetB,GAAU,eAAgBA,EACrCnB,EAAiBmB,EAAQ,SAAS,EAClCA,EAAO,WAEb,GAAI,CAACsB,EACG,MAAA,IAAI,MAAM,6CAA6C,EAG/D,OAAO,IAAIC,EAAoB,oBAAA,CAAE,IAAKD,EAAY,GAAGtB,EAAQ,CAC/D,CCVO,MAAMwB,EAAqBxB,GAAyC,IAAIyB,EAAYzB,CAAM,EAE1F,MAAMyB,CAAY,CAkBvB,YAAY,CACV,oBAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,YAAAvB,EACA,SAAAwB,EACA,MAAAC,EAAQ,MACLC,CAAA,EAC4B,CAE/B,KAAK,KAAOlC,EAAiB,CAC3B,oBAAA2B,EACA,cAAAC,EACA,kBAAAC,EACA,iBAAAC,EACA,WAAAC,EACA,MAAAE,EACA,GAAGC,CAAA,CACJ,EACD,KAAK,QAAUZ,EAAoB,CAAE,YAAAd,EAAa,GAAG0B,EAAW,EAChE,KAAK,UAAY9B,EAAsB,CAAE,YAAAI,EAAa,GAAG0B,EAAW,EACpE,KAAK,QAAUf,EAAoB,CAAE,YAAAX,EAAa,GAAG0B,EAAW,EAEhE,KAAK,KAAK,mBAAmB,CAACC,EAAQC,IAAY,CAC5CD,IAAW,eACR,KAAA,QAAQ,eAAe,MAAS,EAChC,KAAA,UAAU,eAAe,MAAS,EAClC,KAAA,QAAQ,eAAe,MAAS,EACvC,CACD,EAGI,KAAA,KAAK,eAAgBC,GAAY,CACpC,MAAMlB,EAAckB,GAAA,YAAAA,EAAS,YACxB,KAAA,QAAQ,eAAelB,CAAW,EAClC,KAAA,UAAU,eAAeA,CAAW,EACpC,KAAA,QAAQ,eAAeA,CAAW,CAAA,CACxC,EAED,KAAK,aAAeV,EACpB,KAAK,SAAWwB,CAClB,CAEA,IAAI,aAAkC,CACpC,OAAO,KAAK,YACd,CAEA,IAAI,YAAYK,EAA8B,CAC5C,KAAK,aAAeA,EACf,KAAA,QAAQ,eAAeA,CAAQ,CAItC,CACF"}
1
+ {"version":3,"file":"index.cjs.js","sources":["../src/utils/helpers.ts","../src/clients/auth.ts","../src/clients/functions/index.ts","../src/clients/graphql.ts","../src/clients/storage.ts","../src/clients/nhost.ts"],"sourcesContent":["import { NhostClientConstructorParams } from './types'\n\n// a port can be a number or a placeholder string with leading and trailing double underscores, f.e. \"8080\" or \"__PLACEHOLDER_NAME__\"\nexport const LOCALHOST_REGEX =\n /^((?<protocol>http[s]?):\\/\\/)?(?<host>(localhost|local))(:(?<port>(\\d+|__\\w+__)))?$/\n\n/**\n * `backendUrl` should now be used only when self-hosting\n * `subdomain` and `region` should be used instead when using the Nhost platform\n * `\n * @param backendOrSubdomain\n * @param service\n * @returns\n */\nexport function urlFromSubdomain(\n backendOrSubdomain: Pick<NhostClientConstructorParams, 'region' | 'subdomain' | 'backendUrl'>,\n service: string\n): string {\n const { backendUrl, subdomain, region } = backendOrSubdomain\n\n if (backendUrl) {\n return `${backendUrl}/v1/${service}`\n }\n\n if (!subdomain) {\n throw new Error('Either `backendUrl` or `subdomain` must be set.')\n }\n\n // check if subdomain is [http[s]://]localhost[:port] or [http[s]://]local[:port]\n const subdomainLocalhostFound = subdomain.match(LOCALHOST_REGEX)\n if (subdomainLocalhostFound?.groups) {\n const { protocol, host, port } = subdomainLocalhostFound.groups\n\n const urlFromEnv = getValueFromEnv(service)\n if (urlFromEnv) {\n return urlFromEnv\n }\n\n if (host === 'localhost') {\n console.warn(\n 'The `subdomain` is set to \"localhost\". Support for this will be removed in a future release. Please use \"local\" instead.'\n )\n\n return `${protocol || 'http'}://localhost:${port || 1337}/v1/${service}`\n }\n\n return port\n ? `${protocol || 'https'}://local.${service}.nhost.run:${port}/v1`\n : `${protocol || 'https'}://local.${service}.nhost.run/v1`\n }\n\n if (!region) {\n throw new Error('`region` must be set when using a `subdomain` other than \"local\".')\n }\n\n return `https://${subdomain}.${service}.${region}.nhost.run/v1`\n}\n\n/**\n *\n * @returns whether the code is running in a browser\n */\nfunction isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\n/**\n *\n * @returns whether the code is running in a Node.js environment\n */\nfunction environmentIsAvailable() {\n return typeof process !== 'undefined' && process.env\n}\n\n/**\n *\n * @param service auth | storage | graphql | functions\n * @returns the service's url if the corresponding env var is set\n * NHOST_${service}_URL\n */\nfunction getValueFromEnv(service: string) {\n if (isBrowser() || !environmentIsAvailable()) {\n return null\n }\n\n return process.env[`NHOST_${service.toUpperCase()}_URL`]\n}\n\n/**\n * Combines a base URL and a path into a single URL string.\n *\n * @param baseUrl - The base URL to use.\n * @param path - The path to append to the base URL.\n * @returns The combined URL string.\n */\nexport function buildUrl(baseUrl: string, path: string) {\n const hasLeadingSlash = path.startsWith('/')\n const urlPath = hasLeadingSlash ? path : `/${path}`\n return baseUrl + urlPath\n}\n","import { HasuraAuthClient } from '@nhost/hasura-auth-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Auth from either a subdomain or a URL\n */\nexport function createAuthClient(params: NhostClientConstructorParams) {\n const authUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'auth')\n : params.authUrl\n\n if (!authUrl) {\n throw new Error('Please provide `subdomain` or `authUrl`.')\n }\n\n return new HasuraAuthClient({ url: authUrl, ...params })\n}\n","import fetch from 'isomorphic-unfetch'\nimport { buildUrl, urlFromSubdomain } from '../../utils/helpers'\nimport { NhostClientConstructorParams } from '../../utils/types'\nimport {\n NhostFunctionCallConfig,\n NhostFunctionCallResponse,\n NhostFunctionsConstructorParams\n} from './types'\n/**\n * Creates a client for Functions from either a subdomain or a URL\n */\nexport function createFunctionsClient(params: NhostClientConstructorParams) {\n const functionsUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'functions')\n : params.functionsUrl\n\n if (!functionsUrl) {\n throw new Error('Please provide `subdomain` or `functionsUrl`.')\n }\n\n return new NhostFunctionsClient({ url: functionsUrl, ...params })\n}\n\n/**\n * @alias Functions\n */\nexport class NhostFunctionsClient {\n readonly url: string\n private accessToken: string | null\n private adminSecret?: string\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url, adminSecret } = params\n\n this.url = url\n this.accessToken = null\n this.adminSecret = adminSecret\n }\n\n async call<T = unknown, D = any>(\n url: string,\n data: D | null,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>>\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 body: D | null,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>> {\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n const fullUrl = buildUrl(this.url, url)\n\n try {\n const result = await fetch(fullUrl, {\n body: body ? JSON.stringify(body) : null,\n headers,\n method: 'POST'\n })\n\n if (!result.ok) {\n throw new Error(result.statusText)\n }\n\n let data: T\n\n if (result.headers.get('content-type')?.includes('application/json')) {\n data = await result.json()\n } else {\n data = (await result.text()) as unknown as T\n }\n\n return {\n res: { data, status: result.status, statusText: result.statusText },\n error: null\n }\n } catch (e) {\n const error = e as Error\n return {\n res: null,\n error: {\n message: error.message,\n status: error.name === 'AbortError' ? 0 : 500,\n error: error.name === 'AbortError' ? 'abort-error' : 'unknown'\n }\n }\n }\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 generateAccessTokenHeaders(): NhostFunctionCallConfig['headers'] {\n if (this.adminSecret) {\n return {\n 'x-hasura-admin-secret': this.adminSecret\n }\n }\n if (this.accessToken) {\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n return {}\n }\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for GraphQL from either a subdomain or a URL\n */\nexport function createGraphqlClient(params: NhostClientConstructorParams) {\n const graphqlUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'graphql')\n : params.graphqlUrl\n\n if (!graphqlUrl) {\n throw new Error('Please provide `subdomain` or `graphqlUrl`.')\n }\n\n return new NhostGraphqlClient({ url: graphqlUrl, ...params })\n}\n","import { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Storage from either a subdomain or a URL\n */\nexport function createStorageClient(params: NhostClientConstructorParams<undefined>) {\n const storageUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'storage')\n : params.storageUrl\n\n if (!storageUrl) {\n throw new Error('Please provide `subdomain` or `storageUrl`.')\n }\n\n return new HasuraStorageClient({ url: storageUrl, ...params })\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { HasuraAuthClient } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\nimport { NhostClientConstructorParams } from '../utils/types'\nimport { createAuthClient } from './auth'\nimport { createFunctionsClient, NhostFunctionsClient } from './functions'\nimport { createGraphqlClient } from './graphql'\nimport { createStorageClient } from './storage'\n\nexport const createNhostClient = (params: NhostClientConstructorParams) => new NhostClient(params)\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n private _adminSecret?: string\n readonly devTools?: boolean\n\n /**\n * Nhost Client\n *\n * @example\n * ```ts\n * const nhost = new NhostClient({ subdomain, region });\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript\n */\n constructor({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n adminSecret,\n devTools,\n start = true,\n ...urlParams\n }: NhostClientConstructorParams) {\n // * Set clients for all services\n this.auth = createAuthClient({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start,\n ...urlParams\n })\n this.storage = createStorageClient({ adminSecret, ...urlParams })\n this.functions = createFunctionsClient({ adminSecret, ...urlParams })\n this.graphql = createGraphqlClient({ adminSecret, ...urlParams })\n\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 const accessToken = session?.accessToken\n this.storage.setAccessToken(accessToken)\n this.functions.setAccessToken(accessToken)\n this.graphql.setAccessToken(accessToken)\n })\n\n this._adminSecret = adminSecret\n this.devTools = devTools\n }\n\n get adminSecret(): string | undefined {\n return this._adminSecret\n }\n\n set adminSecret(newValue: string | undefined) {\n this._adminSecret = newValue\n this.storage.setAdminSecret(newValue)\n // TODO inconsistent API: storage can change admin secret, but functions/graphql cannot\n // this.functions.setAdminSecret(newValue)\n // this.graphql.setAdminSecret(newValue)\n }\n}\n"],"names":["LOCALHOST_REGEX","urlFromSubdomain","backendOrSubdomain","service","backendUrl","subdomain","region","subdomainLocalhostFound","protocol","host","port","urlFromEnv","getValueFromEnv","isBrowser","environmentIsAvailable","buildUrl","baseUrl","path","urlPath","createAuthClient","params","authUrl","HasuraAuthClient","createFunctionsClient","functionsUrl","NhostFunctionsClient","url","adminSecret","body","config","headers","fullUrl","result","fetch","data","_a","e","error","accessToken","createGraphqlClient","graphqlUrl","NhostGraphqlClient","createStorageClient","storageUrl","HasuraStorageClient","createNhostClient","NhostClient","refreshIntervalTime","clientStorage","clientStorageType","autoRefreshToken","autoSignIn","devTools","start","urlParams","_event","session","newValue"],"mappings":"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"}
package/dist/index.esm.js CHANGED
@@ -3,74 +3,77 @@ export * from "@nhost/hasura-auth-js";
3
3
  import { HasuraStorageClient as g } from "@nhost/hasura-storage-js";
4
4
  export * from "@nhost/hasura-storage-js";
5
5
  import w from "isomorphic-unfetch";
6
- import { NhostGraphqlClient as b } from "@nhost/graphql-js";
7
- const T = /^((?<protocol>http[s]?):\/\/)?(?<host>localhost)(:(?<port>(\d+|__\w+__)))?$/;
8
- function l(t, e) {
9
- const { backendUrl: s, subdomain: n, region: u } = t;
10
- if (s)
11
- return `${s}/v1/${e}`;
12
- if (!n)
6
+ import { NhostGraphqlClient as p } from "@nhost/graphql-js";
7
+ const b = /^((?<protocol>http[s]?):\/\/)?(?<host>(localhost|local))(:(?<port>(\d+|__\w+__)))?$/;
8
+ function d(e, t) {
9
+ const { backendUrl: i, subdomain: r, region: l } = e;
10
+ if (i)
11
+ return `${i}/v1/${t}`;
12
+ if (!r)
13
13
  throw new Error("Either `backendUrl` or `subdomain` must be set.");
14
- const i = n.match(T);
15
- if (i != null && i.groups) {
16
- const { protocol: r = "http", host: o, port: d = 1337 } = i.groups, c = U(e);
17
- return c || `${r}://${o}:${d}/v1/${e}`;
14
+ const c = r.match(b);
15
+ if (c != null && c.groups) {
16
+ const { protocol: s, host: n, port: o } = c.groups, u = m(t);
17
+ return u || (n === "localhost" ? (console.warn(
18
+ 'The `subdomain` is set to "localhost". Support for this will be removed in a future release. Please use "local" instead.'
19
+ ), `${s || "http"}://localhost:${o || 1337}/v1/${t}`) : o ? `${s || "https"}://local.${t}.nhost.run:${o}/v1` : `${s || "https"}://local.${t}.nhost.run/v1`);
18
20
  }
19
- if (!u)
20
- throw new Error('`region` must be set when using a `subdomain` other than "localhost".');
21
- return `https://${n}.${e}.${u}.nhost.run/v1`;
21
+ if (!l)
22
+ throw new Error('`region` must be set when using a `subdomain` other than "local".');
23
+ return `https://${r}.${t}.${l}.nhost.run/v1`;
22
24
  }
23
- function k() {
25
+ function T() {
24
26
  return typeof window < "u";
25
27
  }
26
- function p() {
28
+ function k() {
27
29
  return typeof process < "u" && process.env;
28
30
  }
29
- function U(t) {
30
- return k() || !p() ? null : process.env[`NHOST_${t.toUpperCase()}_URL`];
31
+ function m(e) {
32
+ return T() || !k() ? null : process.env[`NHOST_${e.toUpperCase()}_URL`];
31
33
  }
32
- function m(t, e) {
33
- const n = e.startsWith("/") ? e : `/${e}`;
34
- return t + n;
34
+ function U(e, t) {
35
+ const r = t.startsWith("/") ? t : `/${t}`;
36
+ return e + r;
35
37
  }
36
- function A(t) {
37
- const e = "subdomain" in t || "backendUrl" in t ? l(t, "auth") : t.authUrl;
38
- if (!e)
38
+ function S(e) {
39
+ const t = "subdomain" in e || "backendUrl" in e ? d(e, "auth") : e.authUrl;
40
+ if (!t)
39
41
  throw new Error("Please provide `subdomain` or `authUrl`.");
40
- return new f({ url: e, ...t });
42
+ return new f({ url: t, ...e });
41
43
  }
42
- function S(t) {
43
- const e = "subdomain" in t || "backendUrl" in t ? l(t, "functions") : t.functionsUrl;
44
- if (!e)
44
+ function A(e) {
45
+ const t = "subdomain" in e || "backendUrl" in e ? d(e, "functions") : e.functionsUrl;
46
+ if (!t)
45
47
  throw new Error("Please provide `subdomain` or `functionsUrl`.");
46
- return new C({ url: e, ...t });
48
+ return new $({ url: t, ...e });
47
49
  }
48
- class C {
49
- constructor(e) {
50
- const { url: s, adminSecret: n } = e;
51
- this.url = s, this.accessToken = null, this.adminSecret = n;
50
+ class $ {
51
+ constructor(t) {
52
+ const { url: i, adminSecret: r } = t;
53
+ this.url = i, this.accessToken = null, this.adminSecret = r;
52
54
  }
53
- async call(e, s, n) {
54
- const u = {
55
+ async call(t, i, r) {
56
+ var s;
57
+ const l = {
55
58
  "Content-Type": "application/json",
56
59
  ...this.generateAccessTokenHeaders(),
57
- ...n == null ? void 0 : n.headers
58
- }, i = m(this.url, e);
60
+ ...r == null ? void 0 : r.headers
61
+ }, c = U(this.url, t);
59
62
  try {
60
- const r = await w(i, {
61
- body: JSON.stringify(s),
62
- headers: u,
63
+ const n = await w(c, {
64
+ body: i ? JSON.stringify(i) : null,
65
+ headers: l,
63
66
  method: "POST"
64
67
  });
65
- if (!r.ok)
66
- throw new Error(r.statusText);
68
+ if (!n.ok)
69
+ throw new Error(n.statusText);
67
70
  let o;
68
- return r.headers.get("content-type") === "application/json" ? o = await r.json() : o = await r.text(), {
69
- res: { data: o, status: r.status, statusText: r.statusText },
71
+ return (s = n.headers.get("content-type")) != null && s.includes("application/json") ? o = await n.json() : o = await n.text(), {
72
+ res: { data: o, status: n.status, statusText: n.statusText },
70
73
  error: null
71
74
  };
72
- } catch (r) {
73
- const o = r;
75
+ } catch (n) {
76
+ const o = n;
74
77
  return {
75
78
  res: null,
76
79
  error: {
@@ -81,12 +84,12 @@ class C {
81
84
  };
82
85
  }
83
86
  }
84
- setAccessToken(e) {
85
- if (!e) {
87
+ setAccessToken(t) {
88
+ if (!t) {
86
89
  this.accessToken = null;
87
90
  return;
88
91
  }
89
- this.accessToken = e;
92
+ this.accessToken = t;
90
93
  }
91
94
  generateAccessTokenHeaders() {
92
95
  return this.adminSecret ? {
@@ -96,60 +99,60 @@ class C {
96
99
  } : {};
97
100
  }
98
101
  }
99
- function E(t) {
100
- const e = "subdomain" in t || "backendUrl" in t ? l(t, "graphql") : t.graphqlUrl;
101
- if (!e)
102
+ function v(e) {
103
+ const t = "subdomain" in e || "backendUrl" in e ? d(e, "graphql") : e.graphqlUrl;
104
+ if (!t)
102
105
  throw new Error("Please provide `subdomain` or `graphqlUrl`.");
103
- return new b({ url: e, ...t });
106
+ return new p({ url: t, ...e });
104
107
  }
105
- function v(t) {
106
- const e = "subdomain" in t || "backendUrl" in t ? l(t, "storage") : t.storageUrl;
107
- if (!e)
108
+ function C(e) {
109
+ const t = "subdomain" in e || "backendUrl" in e ? d(e, "storage") : e.storageUrl;
110
+ if (!t)
108
111
  throw new Error("Please provide `subdomain` or `storageUrl`.");
109
- return new g({ url: e, ...t });
112
+ return new g({ url: t, ...e });
110
113
  }
111
- const N = (t) => new $(t);
112
- class $ {
114
+ const N = (e) => new E(e);
115
+ class E {
113
116
  constructor({
114
- refreshIntervalTime: e,
115
- clientStorage: s,
116
- clientStorageType: n,
117
- autoRefreshToken: u,
118
- autoSignIn: i,
119
- adminSecret: r,
120
- devTools: o,
121
- start: d = !0,
122
- ...c
117
+ refreshIntervalTime: t,
118
+ clientStorage: i,
119
+ clientStorageType: r,
120
+ autoRefreshToken: l,
121
+ autoSignIn: c,
122
+ adminSecret: s,
123
+ devTools: n,
124
+ start: o = !0,
125
+ ...u
123
126
  }) {
124
- this.auth = A({
125
- refreshIntervalTime: e,
126
- clientStorage: s,
127
- clientStorageType: n,
128
- autoRefreshToken: u,
129
- autoSignIn: i,
130
- start: d,
131
- ...c
132
- }), this.storage = v({ adminSecret: r, ...c }), this.functions = S({ adminSecret: r, ...c }), this.graphql = E({ adminSecret: r, ...c }), this.auth.onAuthStateChanged((a, h) => {
127
+ this.auth = S({
128
+ refreshIntervalTime: t,
129
+ clientStorage: i,
130
+ clientStorageType: r,
131
+ autoRefreshToken: l,
132
+ autoSignIn: c,
133
+ start: o,
134
+ ...u
135
+ }), this.storage = C({ adminSecret: s, ...u }), this.functions = A({ adminSecret: s, ...u }), this.graphql = v({ adminSecret: s, ...u }), this.auth.onAuthStateChanged((a, h) => {
133
136
  a === "SIGNED_OUT" && (this.storage.setAccessToken(void 0), this.functions.setAccessToken(void 0), this.graphql.setAccessToken(void 0));
134
137
  }), this.auth.onTokenChanged((a) => {
135
138
  const h = a == null ? void 0 : a.accessToken;
136
139
  this.storage.setAccessToken(h), this.functions.setAccessToken(h), this.graphql.setAccessToken(h);
137
- }), this._adminSecret = r, this.devTools = o;
140
+ }), this._adminSecret = s, this.devTools = n;
138
141
  }
139
142
  get adminSecret() {
140
143
  return this._adminSecret;
141
144
  }
142
- set adminSecret(e) {
143
- this._adminSecret = e, this.storage.setAdminSecret(e);
145
+ set adminSecret(t) {
146
+ this._adminSecret = t, this.storage.setAdminSecret(t);
144
147
  }
145
148
  }
146
149
  export {
147
- $ as NhostClient,
148
- C as NhostFunctionsClient,
149
- A as createAuthClient,
150
- S as createFunctionsClient,
151
- E as createGraphqlClient,
150
+ E as NhostClient,
151
+ $ as NhostFunctionsClient,
152
+ S as createAuthClient,
153
+ A as createFunctionsClient,
154
+ v as createGraphqlClient,
152
155
  N as createNhostClient,
153
- v as createStorageClient
156
+ C as createStorageClient
154
157
  };
155
158
  //# sourceMappingURL=index.esm.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../src/utils/helpers.ts","../src/clients/auth.ts","../src/clients/functions/index.ts","../src/clients/graphql.ts","../src/clients/storage.ts","../src/clients/nhost.ts"],"sourcesContent":["import { NhostClientConstructorParams } from './types'\n\n// a port can be a number or a placeholder string with leading and trailing double underscores, f.e. \"8080\" or \"__PLACEHOLDER_NAME__\"\nexport const LOCALHOST_REGEX =\n /^((?<protocol>http[s]?):\\/\\/)?(?<host>localhost)(:(?<port>(\\d+|__\\w+__)))?$/\n\n/**\n * `backendUrl` should now be used only when self-hosting\n * `subdomain` and `region` should be used instead when using the Nhost platform\n * `\n * @param backendOrSubdomain\n * @param service\n * @returns\n */\nexport function urlFromSubdomain(\n backendOrSubdomain: Pick<NhostClientConstructorParams, 'region' | 'subdomain' | 'backendUrl'>,\n service: string\n): string {\n const { backendUrl, subdomain, region } = backendOrSubdomain\n\n if (backendUrl) {\n return `${backendUrl}/v1/${service}`\n }\n\n if (!subdomain) {\n throw new Error('Either `backendUrl` or `subdomain` must be set.')\n }\n\n // check if subdomain is [http[s]://]localhost[:port]\n const subdomainLocalhostFound = subdomain.match(LOCALHOST_REGEX)\n if (subdomainLocalhostFound?.groups) {\n const { protocol = 'http', host, port = 1337 } = subdomainLocalhostFound.groups\n\n const urlFromEnv = getValueFromEnv(service)\n if (urlFromEnv) {\n return urlFromEnv\n }\n return `${protocol}://${host}:${port}/v1/${service}`\n }\n\n if (!region) {\n throw new Error('`region` must be set when using a `subdomain` other than \"localhost\".')\n }\n\n return `https://${subdomain}.${service}.${region}.nhost.run/v1`\n}\n\n/**\n *\n * @returns whether the code is running in a browser\n */\nfunction isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\n/**\n *\n * @returns whether the code is running in a Node.js environment\n */\nfunction environmentIsAvailable() {\n return typeof process !== 'undefined' && process.env\n}\n\n/**\n *\n * @param service auth | storage | graphql | functions\n * @returns the service's url if the corresponding env var is set\n * NHOST_${service}_URL\n */\nfunction getValueFromEnv(service: string) {\n if (isBrowser() || !environmentIsAvailable()) {\n return null\n }\n\n return process.env[`NHOST_${service.toUpperCase()}_URL`]\n}\n\n/**\n * Combines a base URL and a path into a single URL string.\n *\n * @param baseUrl - The base URL to use.\n * @param path - The path to append to the base URL.\n * @returns The combined URL string.\n */\nexport function buildUrl(baseUrl: string, path: string) {\n const hasLeadingSlash = path.startsWith('/')\n const urlPath = hasLeadingSlash ? path : `/${path}`\n return baseUrl + urlPath\n}\n","import { HasuraAuthClient } from '@nhost/hasura-auth-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Auth from either a subdomain or a URL\n */\nexport function createAuthClient(params: NhostClientConstructorParams) {\n const authUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'auth')\n : params.authUrl\n\n if (!authUrl) {\n throw new Error('Please provide `subdomain` or `authUrl`.')\n }\n\n return new HasuraAuthClient({ url: authUrl, ...params })\n}\n","import fetch from 'isomorphic-unfetch'\nimport { buildUrl, urlFromSubdomain } from '../../utils/helpers'\nimport { NhostClientConstructorParams } from '../../utils/types'\nimport {\n NhostFunctionCallConfig,\n NhostFunctionCallResponse,\n NhostFunctionsConstructorParams\n} from './types'\n/**\n * Creates a client for Functions from either a subdomain or a URL\n */\nexport function createFunctionsClient(params: NhostClientConstructorParams) {\n const functionsUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'functions')\n : params.functionsUrl\n\n if (!functionsUrl) {\n throw new Error('Please provide `subdomain` or `functionsUrl`.')\n }\n\n return new NhostFunctionsClient({ url: functionsUrl, ...params })\n}\n\n/**\n * @alias Functions\n */\nexport class NhostFunctionsClient {\n readonly url: string\n private accessToken: string | null\n private adminSecret?: string\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url, adminSecret } = params\n\n this.url = url\n this.accessToken = null\n this.adminSecret = adminSecret\n }\n\n async call<T = unknown, D = any>(\n url: string,\n data: D,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>>\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 body: D,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>> {\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n const fullUrl = buildUrl(this.url, url)\n\n try {\n const result = await fetch(fullUrl, {\n body: JSON.stringify(body),\n headers,\n method: 'POST'\n })\n\n if (!result.ok) {\n throw new Error(result.statusText)\n }\n\n let data: T\n\n if (result.headers.get('content-type') === 'application/json') {\n data = await result.json()\n } else {\n data = (await result.text()) as unknown as T\n }\n\n return {\n res: { data, status: result.status, statusText: result.statusText },\n error: null\n }\n } catch (e) {\n const error = e as Error\n return {\n res: null,\n error: {\n message: error.message,\n status: error.name === 'AbortError' ? 0 : 500,\n error: error.name === 'AbortError' ? 'abort-error' : 'unknown'\n }\n }\n }\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 generateAccessTokenHeaders(): NhostFunctionCallConfig['headers'] {\n if (this.adminSecret) {\n return {\n 'x-hasura-admin-secret': this.adminSecret\n }\n }\n if (this.accessToken) {\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n return {}\n }\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for GraphQL from either a subdomain or a URL\n */\nexport function createGraphqlClient(params: NhostClientConstructorParams) {\n const graphqlUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'graphql')\n : params.graphqlUrl\n\n if (!graphqlUrl) {\n throw new Error('Please provide `subdomain` or `graphqlUrl`.')\n }\n\n return new NhostGraphqlClient({ url: graphqlUrl, ...params })\n}\n","import { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Storage from either a subdomain or a URL\n */\nexport function createStorageClient(params: NhostClientConstructorParams<undefined>) {\n const storageUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'storage')\n : params.storageUrl\n\n if (!storageUrl) {\n throw new Error('Please provide `subdomain` or `storageUrl`.')\n }\n\n return new HasuraStorageClient({ url: storageUrl, ...params })\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { HasuraAuthClient } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\nimport { NhostClientConstructorParams } from '../utils/types'\nimport { createAuthClient } from './auth'\nimport { createFunctionsClient, NhostFunctionsClient } from './functions'\nimport { createGraphqlClient } from './graphql'\nimport { createStorageClient } from './storage'\n\nexport const createNhostClient = (params: NhostClientConstructorParams) => new NhostClient(params)\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n private _adminSecret?: string\n readonly devTools?: boolean\n\n /**\n * Nhost Client\n *\n * @example\n * ```ts\n * const nhost = new NhostClient({ subdomain, region });\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript\n */\n constructor({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n adminSecret,\n devTools,\n start = true,\n ...urlParams\n }: NhostClientConstructorParams) {\n // * Set clients for all services\n this.auth = createAuthClient({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start,\n ...urlParams\n })\n this.storage = createStorageClient({ adminSecret, ...urlParams })\n this.functions = createFunctionsClient({ adminSecret, ...urlParams })\n this.graphql = createGraphqlClient({ adminSecret, ...urlParams })\n\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 const accessToken = session?.accessToken\n this.storage.setAccessToken(accessToken)\n this.functions.setAccessToken(accessToken)\n this.graphql.setAccessToken(accessToken)\n })\n\n this._adminSecret = adminSecret\n this.devTools = devTools\n }\n\n get adminSecret(): string | undefined {\n return this._adminSecret\n }\n\n set adminSecret(newValue: string | undefined) {\n this._adminSecret = newValue\n this.storage.setAdminSecret(newValue)\n // TODO inconsistent API: storage can change admin secret, but functions/graphql cannot\n // this.functions.setAdminSecret(newValue)\n // this.graphql.setAdminSecret(newValue)\n }\n}\n"],"names":["LOCALHOST_REGEX","urlFromSubdomain","backendOrSubdomain","service","backendUrl","subdomain","region","subdomainLocalhostFound","protocol","host","port","urlFromEnv","getValueFromEnv","isBrowser","environmentIsAvailable","buildUrl","baseUrl","path","urlPath","createAuthClient","params","authUrl","HasuraAuthClient","createFunctionsClient","functionsUrl","NhostFunctionsClient","url","adminSecret","body","config","headers","fullUrl","result","fetch","data","e","error","accessToken","createGraphqlClient","graphqlUrl","NhostGraphqlClient","createStorageClient","storageUrl","HasuraStorageClient","createNhostClient","NhostClient","refreshIntervalTime","clientStorage","clientStorageType","autoRefreshToken","autoSignIn","devTools","start","urlParams","_event","session","newValue"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../src/utils/helpers.ts","../src/clients/auth.ts","../src/clients/functions/index.ts","../src/clients/graphql.ts","../src/clients/storage.ts","../src/clients/nhost.ts"],"sourcesContent":["import { NhostClientConstructorParams } from './types'\n\n// a port can be a number or a placeholder string with leading and trailing double underscores, f.e. \"8080\" or \"__PLACEHOLDER_NAME__\"\nexport const LOCALHOST_REGEX =\n /^((?<protocol>http[s]?):\\/\\/)?(?<host>(localhost|local))(:(?<port>(\\d+|__\\w+__)))?$/\n\n/**\n * `backendUrl` should now be used only when self-hosting\n * `subdomain` and `region` should be used instead when using the Nhost platform\n * `\n * @param backendOrSubdomain\n * @param service\n * @returns\n */\nexport function urlFromSubdomain(\n backendOrSubdomain: Pick<NhostClientConstructorParams, 'region' | 'subdomain' | 'backendUrl'>,\n service: string\n): string {\n const { backendUrl, subdomain, region } = backendOrSubdomain\n\n if (backendUrl) {\n return `${backendUrl}/v1/${service}`\n }\n\n if (!subdomain) {\n throw new Error('Either `backendUrl` or `subdomain` must be set.')\n }\n\n // check if subdomain is [http[s]://]localhost[:port] or [http[s]://]local[:port]\n const subdomainLocalhostFound = subdomain.match(LOCALHOST_REGEX)\n if (subdomainLocalhostFound?.groups) {\n const { protocol, host, port } = subdomainLocalhostFound.groups\n\n const urlFromEnv = getValueFromEnv(service)\n if (urlFromEnv) {\n return urlFromEnv\n }\n\n if (host === 'localhost') {\n console.warn(\n 'The `subdomain` is set to \"localhost\". Support for this will be removed in a future release. Please use \"local\" instead.'\n )\n\n return `${protocol || 'http'}://localhost:${port || 1337}/v1/${service}`\n }\n\n return port\n ? `${protocol || 'https'}://local.${service}.nhost.run:${port}/v1`\n : `${protocol || 'https'}://local.${service}.nhost.run/v1`\n }\n\n if (!region) {\n throw new Error('`region` must be set when using a `subdomain` other than \"local\".')\n }\n\n return `https://${subdomain}.${service}.${region}.nhost.run/v1`\n}\n\n/**\n *\n * @returns whether the code is running in a browser\n */\nfunction isBrowser(): boolean {\n return typeof window !== 'undefined'\n}\n\n/**\n *\n * @returns whether the code is running in a Node.js environment\n */\nfunction environmentIsAvailable() {\n return typeof process !== 'undefined' && process.env\n}\n\n/**\n *\n * @param service auth | storage | graphql | functions\n * @returns the service's url if the corresponding env var is set\n * NHOST_${service}_URL\n */\nfunction getValueFromEnv(service: string) {\n if (isBrowser() || !environmentIsAvailable()) {\n return null\n }\n\n return process.env[`NHOST_${service.toUpperCase()}_URL`]\n}\n\n/**\n * Combines a base URL and a path into a single URL string.\n *\n * @param baseUrl - The base URL to use.\n * @param path - The path to append to the base URL.\n * @returns The combined URL string.\n */\nexport function buildUrl(baseUrl: string, path: string) {\n const hasLeadingSlash = path.startsWith('/')\n const urlPath = hasLeadingSlash ? path : `/${path}`\n return baseUrl + urlPath\n}\n","import { HasuraAuthClient } from '@nhost/hasura-auth-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Auth from either a subdomain or a URL\n */\nexport function createAuthClient(params: NhostClientConstructorParams) {\n const authUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'auth')\n : params.authUrl\n\n if (!authUrl) {\n throw new Error('Please provide `subdomain` or `authUrl`.')\n }\n\n return new HasuraAuthClient({ url: authUrl, ...params })\n}\n","import fetch from 'isomorphic-unfetch'\nimport { buildUrl, urlFromSubdomain } from '../../utils/helpers'\nimport { NhostClientConstructorParams } from '../../utils/types'\nimport {\n NhostFunctionCallConfig,\n NhostFunctionCallResponse,\n NhostFunctionsConstructorParams\n} from './types'\n/**\n * Creates a client for Functions from either a subdomain or a URL\n */\nexport function createFunctionsClient(params: NhostClientConstructorParams) {\n const functionsUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'functions')\n : params.functionsUrl\n\n if (!functionsUrl) {\n throw new Error('Please provide `subdomain` or `functionsUrl`.')\n }\n\n return new NhostFunctionsClient({ url: functionsUrl, ...params })\n}\n\n/**\n * @alias Functions\n */\nexport class NhostFunctionsClient {\n readonly url: string\n private accessToken: string | null\n private adminSecret?: string\n\n constructor(params: NhostFunctionsConstructorParams) {\n const { url, adminSecret } = params\n\n this.url = url\n this.accessToken = null\n this.adminSecret = adminSecret\n }\n\n async call<T = unknown, D = any>(\n url: string,\n data: D | null,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>>\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 body: D | null,\n config?: NhostFunctionCallConfig\n ): Promise<NhostFunctionCallResponse<T>> {\n const headers: HeadersInit = {\n 'Content-Type': 'application/json',\n ...this.generateAccessTokenHeaders(),\n ...config?.headers\n }\n\n const fullUrl = buildUrl(this.url, url)\n\n try {\n const result = await fetch(fullUrl, {\n body: body ? JSON.stringify(body) : null,\n headers,\n method: 'POST'\n })\n\n if (!result.ok) {\n throw new Error(result.statusText)\n }\n\n let data: T\n\n if (result.headers.get('content-type')?.includes('application/json')) {\n data = await result.json()\n } else {\n data = (await result.text()) as unknown as T\n }\n\n return {\n res: { data, status: result.status, statusText: result.statusText },\n error: null\n }\n } catch (e) {\n const error = e as Error\n return {\n res: null,\n error: {\n message: error.message,\n status: error.name === 'AbortError' ? 0 : 500,\n error: error.name === 'AbortError' ? 'abort-error' : 'unknown'\n }\n }\n }\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 generateAccessTokenHeaders(): NhostFunctionCallConfig['headers'] {\n if (this.adminSecret) {\n return {\n 'x-hasura-admin-secret': this.adminSecret\n }\n }\n if (this.accessToken) {\n return {\n Authorization: `Bearer ${this.accessToken}`\n }\n }\n return {}\n }\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for GraphQL from either a subdomain or a URL\n */\nexport function createGraphqlClient(params: NhostClientConstructorParams) {\n const graphqlUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'graphql')\n : params.graphqlUrl\n\n if (!graphqlUrl) {\n throw new Error('Please provide `subdomain` or `graphqlUrl`.')\n }\n\n return new NhostGraphqlClient({ url: graphqlUrl, ...params })\n}\n","import { HasuraStorageClient } from '@nhost/hasura-storage-js'\n\nimport { urlFromSubdomain } from '../utils/helpers'\nimport { NhostClientConstructorParams } from '../utils/types'\n\n/**\n * Creates a client for Storage from either a subdomain or a URL\n */\nexport function createStorageClient(params: NhostClientConstructorParams<undefined>) {\n const storageUrl =\n 'subdomain' in params || 'backendUrl' in params\n ? urlFromSubdomain(params, 'storage')\n : params.storageUrl\n\n if (!storageUrl) {\n throw new Error('Please provide `subdomain` or `storageUrl`.')\n }\n\n return new HasuraStorageClient({ url: storageUrl, ...params })\n}\n","import { NhostGraphqlClient } from '@nhost/graphql-js'\nimport { HasuraAuthClient } from '@nhost/hasura-auth-js'\nimport { HasuraStorageClient } from '@nhost/hasura-storage-js'\nimport { NhostClientConstructorParams } from '../utils/types'\nimport { createAuthClient } from './auth'\nimport { createFunctionsClient, NhostFunctionsClient } from './functions'\nimport { createGraphqlClient } from './graphql'\nimport { createStorageClient } from './storage'\n\nexport const createNhostClient = (params: NhostClientConstructorParams) => new NhostClient(params)\n\nexport class NhostClient {\n auth: HasuraAuthClient\n storage: HasuraStorageClient\n functions: NhostFunctionsClient\n graphql: NhostGraphqlClient\n private _adminSecret?: string\n readonly devTools?: boolean\n\n /**\n * Nhost Client\n *\n * @example\n * ```ts\n * const nhost = new NhostClient({ subdomain, region });\n * ```\n *\n * @docs https://docs.nhost.io/reference/javascript\n */\n constructor({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n adminSecret,\n devTools,\n start = true,\n ...urlParams\n }: NhostClientConstructorParams) {\n // * Set clients for all services\n this.auth = createAuthClient({\n refreshIntervalTime,\n clientStorage,\n clientStorageType,\n autoRefreshToken,\n autoSignIn,\n start,\n ...urlParams\n })\n this.storage = createStorageClient({ adminSecret, ...urlParams })\n this.functions = createFunctionsClient({ adminSecret, ...urlParams })\n this.graphql = createGraphqlClient({ adminSecret, ...urlParams })\n\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 const accessToken = session?.accessToken\n this.storage.setAccessToken(accessToken)\n this.functions.setAccessToken(accessToken)\n this.graphql.setAccessToken(accessToken)\n })\n\n this._adminSecret = adminSecret\n this.devTools = devTools\n }\n\n get adminSecret(): string | undefined {\n return this._adminSecret\n }\n\n set adminSecret(newValue: string | undefined) {\n this._adminSecret = newValue\n this.storage.setAdminSecret(newValue)\n // TODO inconsistent API: storage can change admin secret, but functions/graphql cannot\n // this.functions.setAdminSecret(newValue)\n // this.graphql.setAdminSecret(newValue)\n }\n}\n"],"names":["LOCALHOST_REGEX","urlFromSubdomain","backendOrSubdomain","service","backendUrl","subdomain","region","subdomainLocalhostFound","protocol","host","port","urlFromEnv","getValueFromEnv","isBrowser","environmentIsAvailable","buildUrl","baseUrl","path","urlPath","createAuthClient","params","authUrl","HasuraAuthClient","createFunctionsClient","functionsUrl","NhostFunctionsClient","url","adminSecret","body","config","headers","fullUrl","result","fetch","data","_a","e","error","accessToken","createGraphqlClient","graphqlUrl","NhostGraphqlClient","createStorageClient","storageUrl","HasuraStorageClient","createNhostClient","NhostClient","refreshIntervalTime","clientStorage","clientStorageType","autoRefreshToken","autoSignIn","devTools","start","urlParams","_event","session","newValue"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAGtD,eAAO,MAAM,eAAe,QACmD,CAAA;AAE/E;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC,EAC7F,OAAO,EAAE,MAAM,GACd,MAAM,CA4BR;AAgCD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAIrD"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAA;AAGtD,eAAO,MAAM,eAAe,QAC2D,CAAA;AAEvF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,kBAAkB,EAAE,IAAI,CAAC,4BAA4B,EAAE,QAAQ,GAAG,WAAW,GAAG,YAAY,CAAC,EAC7F,OAAO,EAAE,MAAM,GACd,MAAM,CAuCR;AAgCD;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,UAIrD"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nhost/nhost-js",
3
- "version": "2.0.7",
3
+ "version": "2.0.9",
4
4
  "description": "Nhost JavaScript SDK",
5
5
  "license": "MIT",
6
6
  "keywords": [