New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@nhost/hasura-storage-js

Package Overview
Dependencies
Maintainers
3
Versions
67
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@nhost/hasura-storage-js - npm Package Compare versions

Comparing version 0.5.3 to 0.6.0

28

dist/hasura-storage-client.d.ts

@@ -1,2 +0,2 @@

import { StorageDeleteParams, StorageDeleteResponse, StorageGetPresignedUrlParams, StorageGetPresignedUrlResponse, StorageGetUrlParams, StorageUploadParams, StorageUploadResponse } from './utils/types';
import { StorageDeleteParams, StorageDeleteResponse, StorageGetPresignedUrlParams, StorageGetPresignedUrlResponse, StorageGetUrlParams, StorageUploadFileParams, StorageUploadFormDataParams, StorageUploadResponse } from './utils/types';
interface NhostStorageConstructorParams {

@@ -20,7 +20,12 @@ /**

/**
* Use `nhost.storage.upload` to upload a file. The `file` must be of type [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File).
* Use `nhost.storage.upload` to upload a file.
*
* If no `bucket` is specified the `default` bucket will be used.
* It's possible to use [`File`](https://developer.mozilla.org/en-US/docs/Web/API/File) or [`FormData`](https://developer.mozilla.org/en-US/docs/Web/API/FormData) to upload a file. The `File` instance is only available in the browser while `FormData` with [`form-data`](https://www.npmjs.com/package/form-data) works both in the browser and in NodeJS (server).
*
* If no `bucketId` is specified the bucket `default` is used.
*
* @example
*
* Upload a file from a browser using `File`.
*
* ```ts

@@ -30,2 +35,4 @@ * await nhost.storage.upload({ file })

*
* Upload a file from a browser using `File` to a specific Bucket.
*
@example

@@ -36,5 +43,18 @@ * ```ts

*
* Upload a file from a server using `FormData` with [`form-data`](https://www.npmjs.com/package/form-data).
*
* @example
* ```ts
* const fd = new FormData()
* fd.append('file', fs.createReadStream('./tests/assets/sample.pdf'))
*
* await storage.upload({
* formData: fd
* })
* ```
*
* @docs https://docs.nhost.io/reference/javascript/storage/upload
*/
upload(params: StorageUploadParams): Promise<StorageUploadResponse>;
upload(params: StorageUploadFileParams): Promise<StorageUploadResponse>;
upload(params: StorageUploadFormDataParams): Promise<StorageUploadResponse>;
/**

@@ -41,0 +61,0 @@ * @deprecated Use `nhost.storage.getPublicUrl()` instead.

2

dist/index.cjs.js

@@ -1,2 +0,2 @@

"use strict";var I=Object.defineProperty,R=Object.defineProperties;var M=Object.getOwnPropertyDescriptors;var D=Object.getOwnPropertySymbols;var k=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var S=(r,e,t)=>e in r?I(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,d=(r,e)=>{for(var t in e||(e={}))k.call(e,t)&&S(r,t,e[t]);if(D)for(var t of D(e))C.call(e,t)&&S(r,t,e[t]);return r},g=(r,e)=>R(r,M(e));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var F=require("axios"),i=require("xstate");function b(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var _=b(F);class L{constructor({url:e}){this.url=e,this.httpClient=_.default.create({baseURL:this.url})}async upload(e){try{return{fileMetadata:(await this.httpClient.post("/files",e.file,{headers:g(d(d({},this.generateUploadHeaders(e)),this.generateAuthHeaders()),{"Content-Type":"multipart/form-data"})})).data,error:null}}catch(t){return{fileMetadata:null,error:t}}}async getPresignedUrl(e){try{const{fileId:t}=e;return{presignedUrl:(await this.httpClient.get(`/files/${t}/presignedurl`,{headers:d({},this.generateAuthHeaders())})).data,error:null}}catch(t){return{presignedUrl:null,error:t}}}async delete(e){try{const{fileId:t}=e;return await this.httpClient.delete(`/files/${t}`,{headers:d({},this.generateAuthHeaders())}),{error:null}}catch(t){return{error:t}}}setAccessToken(e){return this.accessToken=e,this}setAdminSecret(e){return this.adminSecret=e,this}generateUploadHeaders(e){const{bucketId:t,name:s,id:a}=e,n={};return t&&(n["x-nhost-bucket-id"]=t),a&&(n["x-nhost-file-id"]=a),s&&(n["x-nhost-file-name"]=s),n}generateAuthHeaders(){return!this.adminSecret&&!this.accessToken?null:this.adminSecret?{"x-hasura-admin-secret":this.adminSecret}:{Authorization:`Bearer ${this.accessToken}`}}}class x{constructor({url:e,adminSecret:t}){this.url=e,this.api=new L({url:e}),this.setAdminSecret(t)}async upload(e){const t=new FormData;t.append("file",e.file);const{fileMetadata:s,error:a}=await this.api.upload(g(d({},e),{file:t}));return a?{fileMetadata:null,error:a}:s?{fileMetadata:s,error:null}:{fileMetadata:null,error:new Error("Invalid file returned")}}getUrl(e){return this.getPublicUrl(e)}getPublicUrl(e){const{fileId:t}=e;return`${this.url}/files/${t}`}async getPresignedUrl(e){const{presignedUrl:t,error:s}=await this.api.getPresignedUrl(e);return s?{presignedUrl:null,error:s}:t?{presignedUrl:t,error:null}:{presignedUrl:null,error:new Error("Invalid file id")}}async delete(e){const{error:t}=await this.api.delete(e);return t?{error:t}:{error:null}}setAccessToken(e){return this.api.setAccessToken(e),this}setAdminSecret(e){return this.api.setAdminSecret(e),this}}const A={progress:null,loaded:0,error:null},T=()=>i.createMachine({preserveActionOrder:!0,schema:{context:{},events:{}},tsTypes:{},context:d({},A),initial:"idle",on:{DESTROY:{actions:"sendDestroy",target:"stopped"}},states:{idle:{on:{ADD:{actions:"addFile"},UPLOAD:{cond:"hasFile",target:"uploading"}}},uploading:{entry:"resetProgress",on:{UPLOAD_PROGRESS:{actions:["incrementProgress","sendProgress"]},UPLOAD_DONE:"uploaded",UPLOAD_ERROR:"error",CANCEL:"idle"},invoke:{src:"uploadFile"}},uploaded:{entry:["setFileMetadata","sendDone"]},error:{entry:["setError","sendError"]},stopped:{type:"final"}}},{guards:{hasFile:(r,e)=>!!r.file||!!e.file},actions:{incrementProgress:i.assign({loaded:(r,{loaded:e})=>e,progress:(r,{progress:e})=>e}),setFileMetadata:i.assign({id:(r,{id:e})=>e,bucketId:(r,{bucketId:e})=>e,progress:r=>100}),setError:i.assign({error:(r,{error:e})=>e}),sendProgress:()=>{},sendError:()=>{},sendDestroy:()=>{},sendDone:()=>{},resetProgress:i.assign({progress:r=>null,loaded:r=>0}),addFile:i.assign({file:(r,{file:e})=>e,bucketId:(r,{bucketId:e})=>e,id:(r,{id:e})=>e})},services:{uploadFile:(r,e)=>t=>{const s={"Content-Type":"multipart/form-data"},a=e.id||r.id;a&&(s["x-nhost-file-id"]=a);const n=e.bucketId||r.bucketId;n&&(s["x-nhost-bucket-id"]=n);const l=e.file||r.file;s["x-nhost-file-name"]=e.name||l.name;const u=new FormData;u.append("file",l),e.adminSecret&&(s["x-hasura-admin-secret"]=e.adminSecret),e.accessToken&&(s.Authorization=`Bearer ${e.accessToken}`);let p=0;const P=new AbortController;return _.default.post(e.url+"/files",u,{headers:s,signal:P.signal,onUploadProgress:o=>{const c=Math.round(o.loaded*l.size/o.total),h=c-p;p=c,t({type:"UPLOAD_PROGRESS",progress:Math.round(c*100/o.total),loaded:c,additions:h})}}).then(({data:{id:o,bucketId:c}})=>{t({type:"UPLOAD_DONE",id:o,bucketId:c})}).catch(({response:o,message:c})=>{var h,U,y,E,O;t({type:"UPLOAD_ERROR",error:{status:(h=o==null?void 0:o.status)!=null?h:0,message:((y=(U=o==null?void 0:o.data)==null?void 0:U.error)==null?void 0:y.message)||c,error:((O=(E=o==null?void 0:o.data)==null?void 0:E.error)==null?void 0:O.message)||c}})}),()=>{P.abort()}}}}),{pure:m,sendParent:f}=i.actions,w=()=>i.createMachine({id:"files-list",schema:{context:{},events:{}},tsTypes:{},context:{progress:null,files:[],loaded:0,total:0},initial:"idle",on:{UPLOAD:{cond:"hasFileToDownload",actions:"addItem",target:"uploading"},ADD:{actions:"addItem"},REMOVE:{actions:"removeItem"}},states:{idle:{entry:["resetProgress","resetLoaded","resetTotal"],on:{CLEAR:{actions:"clearList",target:"idle"}}},uploading:{entry:["upload","startProgress","resetLoaded","resetTotal"],on:{UPLOAD_PROGRESS:{actions:["incrementProgress"]},UPLOAD_DONE:[{cond:"isAllUploaded",target:"uploaded"},{cond:"isAllUploadedOrError",target:"error"}],UPLOAD_ERROR:[{cond:"isAllUploaded",target:"uploaded"},{cond:"isAllUploadedOrError",target:"error"}],CANCEL:{actions:"cancel",target:"idle"}}},uploaded:{entry:"setUploaded",on:{CLEAR:{actions:"clearList",target:"idle"}}},error:{on:{CLEAR:{actions:"clearList",target:"idle"}}}}},{guards:{hasFileToDownload:(r,e)=>r.files.some(t=>t.getSnapshot().matches("idle"))||!!e.files,isAllUploaded:r=>r.files.every(e=>{var t;return(t=e.getSnapshot())==null?void 0:t.matches("uploaded")}),isAllUploadedOrError:r=>r.files.every(e=>{const t=e.getSnapshot();return(t==null?void 0:t.matches("error"))||(t==null?void 0:t.matches("uploaded"))})},actions:{incrementProgress:i.assign((r,e)=>{const t=r.loaded+e.additions,s=Math.round(t*100/r.total);return g(d({},r),{loaded:t,progress:s})}),setUploaded:i.assign({progress:r=>100,loaded:({files:r})=>r.map(e=>e.getSnapshot()).filter(e=>e.matches("uploaded")).reduce((e,t)=>{var s;return e+((s=t.context.file)==null?void 0:s.size)},0)}),resetTotal:i.assign({total:({files:r})=>r.map(e=>e.getSnapshot()).filter(e=>!e.matches("uploaded")).reduce((e,t)=>{var s;return e+((s=t.context.file)==null?void 0:s.size)},0)}),resetLoaded:i.assign({loaded:r=>0}),startProgress:i.assign({progress:r=>0}),resetProgress:i.assign({progress:r=>null}),addItem:i.assign((r,{files:e,bucketId:t})=>{const s=e?Array.isArray(e)?e:"length"in e?Array.from(e):[e]:[],a=r.total+s.reduce((l,u)=>l+u.size,0),n=Math.round(r.loaded*100/a);return{files:[...r.files,...s.map(l=>i.spawn(T().withConfig({actions:{sendProgress:f((u,{additions:p})=>({type:"UPLOAD_PROGRESS",additions:p})),sendDone:f("UPLOAD_DONE"),sendError:f("UPLOAD_ERROR"),sendDestroy:f("REMOVE")}}).withContext(g(d({},A),{file:l,bucketId:t})),{sync:!0}))],total:a,loaded:r.loaded,progress:n}}),removeItem:i.assign({files:r=>r.files.filter(e=>{var s,a;const t=(s=e.getSnapshot())==null?void 0:s.matches("stopped");return t&&((a=e.stop)==null||a.call(e)),!t})}),clearList:m(r=>r.files.map(e=>i.send({type:"DESTROY"},{to:e.id}))),upload:m((r,e)=>r.files.map(t=>i.send(e,{to:t.id}))),cancel:m(r=>r.files.map(e=>i.send({type:"CANCEL"},{to:e.id})))}}),N=async(r,e,t)=>new Promise(s=>{e.send(d({type:"UPLOAD",url:r.storage.url,accessToken:r.auth.getAccessToken(),adminSecret:r.adminSecret},t)),e.subscribe(a=>{var n;a.matches("error")?s({error:a.context.error,isError:!0,isUploaded:!1}):a.matches("uploaded")&&s({error:null,isError:!1,isUploaded:!0,id:a.context.id,bucketId:a.context.id,name:(n=a.context.file)==null?void 0:n.name})})}),H=async(r,e,t)=>new Promise(s=>{e.send({type:"UPLOAD",url:r.storage.url,accessToken:r.auth.getAccessToken(),adminSecret:r.adminSecret,bucketId:t==null?void 0:t.bucketId,files:t==null?void 0:t.files}),e.onTransition(a=>{a.matches("error")?s({errors:a.context.files.filter(n=>{var l;return(l=n.getSnapshot())==null?void 0:l.context.error}),isError:!0,files:[]}):a.matches("uploaded")&&s({errors:[],isError:!1,files:a.context.files})})});exports.HasuraStorageApi=L;exports.HasuraStorageClient=x;exports.INITIAL_FILE_CONTEXT=A;exports.createFileUploadMachine=T;exports.createMultipleFilesUploadMachine=w;exports.uploadFilePromise=N;exports.uploadMultipleFilesPromise=H;
"use strict";var R=Object.defineProperty,M=Object.defineProperties;var k=Object.getOwnPropertyDescriptors;var O=Object.getOwnPropertySymbols;var F=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var _=(r,e,t)=>e in r?R(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,d=(r,e)=>{for(var t in e||(e={}))F.call(e,t)&&_(r,t,e[t]);if(O)for(var t of O(e))C.call(e,t)&&_(r,t,e[t]);return r},g=(r,e)=>M(r,k(e));Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});var b=require("axios"),x=require("form-data"),i=require("xstate");function S(r){return r&&typeof r=="object"&&"default"in r?r:{default:r}}var L=S(b),w=S(x);class T{constructor({url:e}){this.url=e,this.httpClient=L.default.create({baseURL:this.url})}async upload(e){const{formData:t}=e;try{return{fileMetadata:(await this.httpClient.post("/files",t,{headers:g(d(d({},this.generateUploadHeaders(e)),this.generateAuthHeaders()),{"Content-Type":"multipart/form-data"})})).data,error:null}}catch(s){return{fileMetadata:null,error:s}}}async getPresignedUrl(e){try{const{fileId:t}=e;return{presignedUrl:(await this.httpClient.get(`/files/${t}/presignedurl`,{headers:d({},this.generateAuthHeaders())})).data,error:null}}catch(t){return{presignedUrl:null,error:t}}}async delete(e){try{const{fileId:t}=e;return await this.httpClient.delete(`/files/${t}`,{headers:d({},this.generateAuthHeaders())}),{error:null}}catch(t){return{error:t}}}setAccessToken(e){return this.accessToken=e,this}setAdminSecret(e){return this.adminSecret=e,this}generateUploadHeaders(e){const{bucketId:t,name:s,id:a}=e,n={};return t&&(n["x-nhost-bucket-id"]=t),a&&(n["x-nhost-file-id"]=a),s&&(n["x-nhost-file-name"]=s),n}generateAuthHeaders(){return!this.adminSecret&&!this.accessToken?null:this.adminSecret?{"x-hasura-admin-secret":this.adminSecret}:{Authorization:`Bearer ${this.accessToken}`}}}class N{constructor({url:e,adminSecret:t}){this.url=e,this.api=new T({url:e}),this.setAdminSecret(t)}async upload(e){let t;"file"in e?(t=new w.default,t.append("file",e.file)):t=e.formData;const{fileMetadata:s,error:a}=await this.api.upload(g(d({},e),{formData:t}));return a?{fileMetadata:null,error:a}:s?{fileMetadata:s,error:null}:{fileMetadata:null,error:new Error("Invalid file returned")}}getUrl(e){return this.getPublicUrl(e)}getPublicUrl(e){const{fileId:t}=e;return`${this.url}/files/${t}`}async getPresignedUrl(e){const{presignedUrl:t,error:s}=await this.api.getPresignedUrl(e);return s?{presignedUrl:null,error:s}:t?{presignedUrl:t,error:null}:{presignedUrl:null,error:new Error("Invalid file id")}}async delete(e){const{error:t}=await this.api.delete(e);return t?{error:t}:{error:null}}setAccessToken(e){return this.api.setAccessToken(e),this}setAdminSecret(e){return this.api.setAdminSecret(e),this}}const A={progress:null,loaded:0,error:null},I=()=>i.createMachine({preserveActionOrder:!0,schema:{context:{},events:{}},tsTypes:{},context:d({},A),initial:"idle",on:{DESTROY:{actions:"sendDestroy",target:"stopped"}},states:{idle:{on:{ADD:{actions:"addFile"},UPLOAD:{cond:"hasFile",target:"uploading"}}},uploading:{entry:"resetProgress",on:{UPLOAD_PROGRESS:{actions:["incrementProgress","sendProgress"]},UPLOAD_DONE:"uploaded",UPLOAD_ERROR:"error",CANCEL:"idle"},invoke:{src:"uploadFile"}},uploaded:{entry:["setFileMetadata","sendDone"]},error:{entry:["setError","sendError"]},stopped:{type:"final"}}},{guards:{hasFile:(r,e)=>!!r.file||!!e.file},actions:{incrementProgress:i.assign({loaded:(r,{loaded:e})=>e,progress:(r,{progress:e})=>e}),setFileMetadata:i.assign({id:(r,{id:e})=>e,bucketId:(r,{bucketId:e})=>e,progress:r=>100}),setError:i.assign({error:(r,{error:e})=>e}),sendProgress:()=>{},sendError:()=>{},sendDestroy:()=>{},sendDone:()=>{},resetProgress:i.assign({progress:r=>null,loaded:r=>0}),addFile:i.assign({file:(r,{file:e})=>e,bucketId:(r,{bucketId:e})=>e,id:(r,{id:e})=>e})},services:{uploadFile:(r,e)=>t=>{const s={"Content-Type":"multipart/form-data"},a=e.id||r.id;a&&(s["x-nhost-file-id"]=a);const n=e.bucketId||r.bucketId;n&&(s["x-nhost-bucket-id"]=n);const l=e.file||r.file;s["x-nhost-file-name"]=e.name||l.name;const u=new FormData;u.append("file",l),e.adminSecret&&(s["x-hasura-admin-secret"]=e.adminSecret),e.accessToken&&(s.Authorization=`Bearer ${e.accessToken}`);let p=0;const P=new AbortController;return L.default.post(e.url+"/files",u,{headers:s,signal:P.signal,onUploadProgress:o=>{const c=Math.round(o.loaded*l.size/o.total),h=c-p;p=c,t({type:"UPLOAD_PROGRESS",progress:Math.round(c*100/o.total),loaded:c,additions:h})}}).then(({data:{id:o,bucketId:c}})=>{t({type:"UPLOAD_DONE",id:o,bucketId:c})}).catch(({response:o,message:c})=>{var h,U,y,E,D;t({type:"UPLOAD_ERROR",error:{status:(h=o==null?void 0:o.status)!=null?h:0,message:((y=(U=o==null?void 0:o.data)==null?void 0:U.error)==null?void 0:y.message)||c,error:((D=(E=o==null?void 0:o.data)==null?void 0:E.error)==null?void 0:D.message)||c}})}),()=>{P.abort()}}}}),{pure:m,sendParent:f}=i.actions,H=()=>i.createMachine({id:"files-list",schema:{context:{},events:{}},tsTypes:{},context:{progress:null,files:[],loaded:0,total:0},initial:"idle",on:{UPLOAD:{cond:"hasFileToDownload",actions:"addItem",target:"uploading"},ADD:{actions:"addItem"},REMOVE:{actions:"removeItem"}},states:{idle:{entry:["resetProgress","resetLoaded","resetTotal"],on:{CLEAR:{actions:"clearList",target:"idle"}}},uploading:{entry:["upload","startProgress","resetLoaded","resetTotal"],on:{UPLOAD_PROGRESS:{actions:["incrementProgress"]},UPLOAD_DONE:[{cond:"isAllUploaded",target:"uploaded"},{cond:"isAllUploadedOrError",target:"error"}],UPLOAD_ERROR:[{cond:"isAllUploaded",target:"uploaded"},{cond:"isAllUploadedOrError",target:"error"}],CANCEL:{actions:"cancel",target:"idle"}}},uploaded:{entry:"setUploaded",on:{CLEAR:{actions:"clearList",target:"idle"}}},error:{on:{CLEAR:{actions:"clearList",target:"idle"}}}}},{guards:{hasFileToDownload:(r,e)=>r.files.some(t=>t.getSnapshot().matches("idle"))||!!e.files,isAllUploaded:r=>r.files.every(e=>{var t;return(t=e.getSnapshot())==null?void 0:t.matches("uploaded")}),isAllUploadedOrError:r=>r.files.every(e=>{const t=e.getSnapshot();return(t==null?void 0:t.matches("error"))||(t==null?void 0:t.matches("uploaded"))})},actions:{incrementProgress:i.assign((r,e)=>{const t=r.loaded+e.additions,s=Math.round(t*100/r.total);return g(d({},r),{loaded:t,progress:s})}),setUploaded:i.assign({progress:r=>100,loaded:({files:r})=>r.map(e=>e.getSnapshot()).filter(e=>e.matches("uploaded")).reduce((e,t)=>{var s;return e+((s=t.context.file)==null?void 0:s.size)},0)}),resetTotal:i.assign({total:({files:r})=>r.map(e=>e.getSnapshot()).filter(e=>!e.matches("uploaded")).reduce((e,t)=>{var s;return e+((s=t.context.file)==null?void 0:s.size)},0)}),resetLoaded:i.assign({loaded:r=>0}),startProgress:i.assign({progress:r=>0}),resetProgress:i.assign({progress:r=>null}),addItem:i.assign((r,{files:e,bucketId:t})=>{const s=e?Array.isArray(e)?e:"length"in e?Array.from(e):[e]:[],a=r.total+s.reduce((l,u)=>l+u.size,0),n=Math.round(r.loaded*100/a);return{files:[...r.files,...s.map(l=>i.spawn(I().withConfig({actions:{sendProgress:f((u,{additions:p})=>({type:"UPLOAD_PROGRESS",additions:p})),sendDone:f("UPLOAD_DONE"),sendError:f("UPLOAD_ERROR"),sendDestroy:f("REMOVE")}}).withContext(g(d({},A),{file:l,bucketId:t})),{sync:!0}))],total:a,loaded:r.loaded,progress:n}}),removeItem:i.assign({files:r=>r.files.filter(e=>{var s,a;const t=(s=e.getSnapshot())==null?void 0:s.matches("stopped");return t&&((a=e.stop)==null||a.call(e)),!t})}),clearList:m(r=>r.files.map(e=>i.send({type:"DESTROY"},{to:e.id}))),upload:m((r,e)=>r.files.map(t=>i.send(e,{to:t.id}))),cancel:m(r=>r.files.map(e=>i.send({type:"CANCEL"},{to:e.id})))}}),$=async(r,e,t)=>new Promise(s=>{e.send(d({type:"UPLOAD",url:r.storage.url,accessToken:r.auth.getAccessToken(),adminSecret:r.adminSecret},t)),e.subscribe(a=>{var n;a.matches("error")?s({error:a.context.error,isError:!0,isUploaded:!1}):a.matches("uploaded")&&s({error:null,isError:!1,isUploaded:!0,id:a.context.id,bucketId:a.context.id,name:(n=a.context.file)==null?void 0:n.name})})}),z=async(r,e,t)=>new Promise(s=>{e.send({type:"UPLOAD",url:r.storage.url,accessToken:r.auth.getAccessToken(),adminSecret:r.adminSecret,bucketId:t==null?void 0:t.bucketId,files:t==null?void 0:t.files}),e.onTransition(a=>{a.matches("error")?s({errors:a.context.files.filter(n=>{var l;return(l=n.getSnapshot())==null?void 0:l.context.error}),isError:!0,files:[]}):a.matches("uploaded")&&s({errors:[],isError:!1,files:a.context.files})})});exports.HasuraStorageApi=T;exports.HasuraStorageClient=N;exports.INITIAL_FILE_CONTEXT=A;exports.createFileUploadMachine=I;exports.createMultipleFilesUploadMachine=H;exports.uploadFilePromise=$;exports.uploadMultipleFilesPromise=z;
//# sourceMappingURL=index.cjs.js.map

@@ -21,2 +21,3 @@ var __defProp = Object.defineProperty;

import axios from "axios";
import FormData$1 from "form-data";
import { createMachine, assign, spawn, send, actions } from "xstate";

@@ -31,4 +32,5 @@ class HasuraStorageApi {

async upload(params) {
const { formData } = params;
try {
const res = await this.httpClient.post("/files", params.file, {
const res = await this.httpClient.post("/files", formData, {
headers: __spreadProps(__spreadValues(__spreadValues({}, this.generateUploadHeaders(params)), this.generateAuthHeaders()), {

@@ -108,6 +110,11 @@ "Content-Type": "multipart/form-data"

async upload(params) {
const file = new FormData();
file.append("file", params.file);
let formData;
if ("file" in params) {
formData = new FormData$1();
formData.append("file", params.file);
} else {
formData = params.formData;
}
const { fileMetadata, error } = await this.api.upload(__spreadProps(__spreadValues({}, params), {
file
formData
}));

@@ -114,0 +121,0 @@ if (error) {

import { InterpreterFrom } from 'xstate';
import { ActionErrorState } from '@nhost/core';
import { FileItemRef, FileUploadMachine } from '../machines';
import { NhostClientReturnType, StorageUploadParams } from '../utils/types';
import { NhostClientReturnType, StorageUploadFileParams } from '../utils/types';
export interface UploadProgressState {

@@ -35,3 +35,3 @@ /**

}
export declare const uploadFilePromise: (nhost: NhostClientReturnType, interpreter: FileItemRef | InterpreterFrom<FileUploadMachine>, params: Partial<StorageUploadParams>) => Promise<UploadFileHandlerResult>;
export declare const uploadFilePromise: (nhost: NhostClientReturnType, interpreter: FileItemRef | InterpreterFrom<FileUploadMachine>, params: Partial<StorageUploadFileParams>) => Promise<UploadFileHandlerResult>;
//# sourceMappingURL=file-upload.d.ts.map

@@ -0,1 +1,2 @@

import FormData from 'form-data';
import { HasuraAuthClient } from '@nhost/hasura-auth-js';

@@ -9,3 +10,3 @@ export interface NhostClientReturnType {

}
export interface StorageUploadParams {
export interface StorageUploadFileParams {
file: File;

@@ -16,2 +17,9 @@ id?: string;

}
export interface StorageUploadFormDataParams {
formData: FormData;
id?: string;
name?: string;
bucketId?: string;
}
export declare type StorageUploadParams = StorageUploadFileParams | StorageUploadFormDataParams;
export declare type StorageUploadResponse = {

@@ -56,3 +64,3 @@ fileMetadata: FileResponse;

export interface ApiUploadParams {
file: FormData;
formData: FormData;
id?: string;

@@ -59,0 +67,0 @@ name?: string;

{
"name": "@nhost/hasura-storage-js",
"version": "0.5.3",
"version": "0.6.0",
"description": "Hasura-storage client",

@@ -44,2 +44,3 @@ "license": "MIT",

"axios": "^0.27.2",
"form-data": "^4.0.0",
"xstate": "^4.32.1"

@@ -53,3 +54,6 @@ },

"@nhost/docgen": "0.1.2",
"msw": "^0.39.2"
"cross-fetch": "^3.1.5",
"msw": "^0.39.2",
"start-server-and-test": "^1.14.0",
"uuid": "^8.3.2"
},

@@ -59,7 +63,9 @@ "scripts": {

"build": "run-p build:lib build:umd",
"build:lib": "vite build --config ../../config/vite.lib.config.js",
"build:lib": "vite build",
"build:umd": "vite build --config ../../config/vite.lib.umd.config.js",
"test": "vitest run --config ../../config/vite.lib.config.js",
"test:watch": "vitest --config ../../config/vite.lib.config.js",
"test:coverage": "vitest run --coverage --config ../../config/vite.lib.config.js",
"e2e": "start-test e2e:backend http-get://localhost:9695 ci:test",
"ci:test": "vitest run",
"e2e:backend": "nhost dev --no-browser",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"prettier": "prettier --check src/",

@@ -74,3 +80,3 @@ "prettier:fix": "prettier --write src/",

},
"readme": "<h1 align=\"center\">@nhost/hasura-storage-js</h1>\n<h2 align=\"center\">Hasura Storage SDK</h2>\n\n<p align=\"center\">\n <img alt=\"npm\" src=\"https://img.shields.io/npm/v/@nhost/hasura-storage-js\">\n <img alt=\"npm\" src=\"https://img.shields.io/npm/dm/@nhost/hasura-storage-js\">\n <a href=\"LICENSE\">\n <img src=\"https://img.shields.io/badge/license-MIT-yellow.svg\" alt=\"license: MIT\" />\n </a>\n</p>\n\nHasura JS SDK to handle **Storage** with [Hasura](https://hasura.io/).\n## Install\n\n`$ npm install @nhost/hasura-storage-js`\n\n## Documentation\n\n[https://docs.nhost.io/reference/javascript/storage](https://docs.nhost.io/reference/javascript/storage)\n"
"readme": "<h1 align=\"center\">@nhost/hasura-storage-js</h1>\n<h2 align=\"center\">Hasura Storage SDK</h2>\n\n<p align=\"center\">\n <img alt=\"npm\" src=\"https://img.shields.io/npm/v/@nhost/hasura-storage-js\">\n <img alt=\"npm\" src=\"https://img.shields.io/npm/dm/@nhost/hasura-storage-js\">\n <a href=\"LICENSE\">\n <img src=\"https://img.shields.io/badge/license-MIT-yellow.svg\" alt=\"license: MIT\" />\n </a>\n</p>\n\nHasura JavaScript SDK to handle **Storage** with [Hasura](https://hasura.io/).\n\n## Install\n\n`$ npm install @nhost/hasura-storage-js`\n\n## Documentation\n\n[https://docs.nhost.io/reference/javascript/storage](https://docs.nhost.io/reference/javascript/storage)\n"
}

@@ -12,3 +12,4 @@ <h1 align="center">@nhost/hasura-storage-js</h1>

Hasura JS SDK to handle **Storage** with [Hasura](https://hasura.io/).
Hasura JavaScript SDK to handle **Storage** with [Hasura](https://hasura.io/).
## Install

@@ -15,0 +16,0 @@

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc