@xgsd/artifact-sdk 0.0.4 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // src/index.ts
2
2
  import { createReadStream, createWriteStream } from "fs";
3
+ import { stat } from "fs/promises";
3
4
  import { pipeline } from "stream/promises";
4
5
  function parse(q) {
5
6
  const idx = q.indexOf(":");
@@ -81,13 +82,15 @@ var ArtifactStorage = class {
81
82
  method: "put",
82
83
  contentType
83
84
  });
85
+ const file = await stat(localPath);
84
86
  const stream = createReadStream(localPath);
85
87
  const res = await fetch(url, {
86
88
  method,
87
89
  body: stream,
88
90
  duplex: "half",
89
91
  headers: {
90
- "content-type": contentType
92
+ "content-type": contentType,
93
+ "content-length": file.size
91
94
  }
92
95
  });
93
96
  if (res.status >= 400) {
@@ -194,7 +197,8 @@ var ArtifactStorage = class {
194
197
  method: "POST",
195
198
  body: JSON.stringify({
196
199
  group: ref.group,
197
- prefix: ref.key
200
+ prefix: ref.key,
201
+ cache: false
198
202
  }),
199
203
  headers: {
200
204
  authorization: `Bearer ${this.accessToken}`,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createReadStream, createWriteStream } from \"node:fs\";\nimport { pipeline } from \"node:stream/promises\";\n\ntype Ref = {\n group: string;\n key: string;\n method: \"get\" | \"put\" | \"delete\";\n contentType?: string;\n};\n\nfunction parse(q: string): {\n group: string;\n key: string;\n} | null {\n const idx = q.indexOf(\":\");\n\n if (idx === -1) {\n return null;\n }\n\n const group = q.slice(0, idx);\n const key = q.slice(idx + 1);\n\n if (!group || !key) {\n return null;\n }\n\n return {\n group,\n key,\n };\n}\n\nexport class ArtifactStorage {\n constructor(\n private readonly url: string,\n private readonly accessToken?: string,\n ) {}\n\n async getSignedUrl(ref: Ref): Promise<{\n url: string;\n method: string;\n }> {\n const url = `${this.url}/sign`;\n\n const res = await fetch(url, {\n method: \"POST\",\n body: JSON.stringify(ref),\n headers: {\n authorization: `Bearer ${this.accessToken}`,\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n },\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n const json = await res.json();\n\n return {\n url: json.url,\n method: json.method,\n };\n }\n\n // -----------------------\n // JSON UPLOAD\n // -----------------------\n\n async uploadJson(\n path: string,\n obj: Record<string, unknown>,\n ): Promise<{ ok: true }> {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"put\",\n contentType: \"application/json\",\n });\n\n const res = await fetch(url, {\n method,\n body: JSON.stringify(obj),\n headers: {\n \"content-type\": \"application/json\",\n },\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return { ok: true };\n }\n\n // -----------------------\n // FILE UPLOAD\n // -----------------------\n\n async uploadFile(\n localPath: string,\n remotePath: string,\n contentType = \"application/octet-stream\",\n ): Promise<{ ok: true }> {\n const ref = parse(remotePath);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"put\",\n contentType,\n });\n\n const stream = createReadStream(localPath);\n\n const res = await fetch(url, {\n method,\n body: stream as any,\n duplex: \"half\",\n headers: {\n \"content-type\": contentType,\n },\n } as any);\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return { ok: true };\n }\n\n // -----------------------\n // JSON DOWNLOAD\n // -----------------------\n\n async downloadJson<T = Record<string, unknown>>(path: string): Promise<T> {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"get\",\n });\n\n const res = await fetch(url, {\n method,\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return (await res.json()) as T;\n }\n\n // -----------------------\n // FILE DOWNLOAD\n // -----------------------\n\n async downloadFile(remotePath: string, localPath: string): Promise<void> {\n const ref = parse(remotePath);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"get\",\n });\n\n const res = await fetch(url, {\n method,\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n if (!res.body) {\n throw new Error(\"missing response body\");\n }\n\n const file = createWriteStream(localPath);\n\n await pipeline(res.body as any, file);\n }\n\n // -----------------------\n // EXISTS\n // -----------------------\n\n async exists(path: string): Promise<boolean> {\n try {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url } = await this.getSignedUrl({\n ...ref,\n method: \"get\",\n });\n\n const res = await fetch(url, {\n method: \"HEAD\",\n });\n\n return res.status < 400;\n } catch {\n return false;\n }\n }\n\n // -----------------------\n // DELETE\n // -----------------------\n\n async delete(path: string): Promise<{ ok: true }> {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url } = await this.getSignedUrl({\n group: ref.group,\n key: ref.key,\n method: \"delete\",\n });\n\n const res = await fetch(url, {\n method: \"delete\",\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return { ok: true };\n }\n\n // -----------------------\n // LIST\n // -----------------------\n\n async list(prefix: string): Promise<string[]> {\n const ref = parse(prefix);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const url = `${this.url}/list`;\n\n const res = await fetch(url, {\n method: \"POST\",\n body: JSON.stringify({\n group: ref.group,\n prefix: ref.key,\n }),\n headers: {\n authorization: `Bearer ${this.accessToken}`,\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n },\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return await res.json();\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import { createReadStream, createWriteStream } from \"node:fs\";\nimport { stat } from \"node:fs/promises\";\nimport { pipeline } from \"node:stream/promises\";\n\ntype Ref = {\n group: string;\n key: string;\n method: \"get\" | \"put\" | \"delete\";\n contentType?: string;\n};\n\nfunction parse(q: string): {\n group: string;\n key: string;\n} | null {\n const idx = q.indexOf(\":\");\n\n if (idx === -1) {\n return null;\n }\n\n const group = q.slice(0, idx);\n const key = q.slice(idx + 1);\n\n if (!group || !key) {\n return null;\n }\n\n return {\n group,\n key,\n };\n}\n\nexport class ArtifactStorage {\n constructor(\n private readonly url: string,\n private readonly accessToken?: string,\n ) {}\n\n async getSignedUrl(ref: Ref): Promise<{\n url: string;\n method: string;\n }> {\n const url = `${this.url}/sign`;\n\n const res = await fetch(url, {\n method: \"POST\",\n body: JSON.stringify(ref),\n headers: {\n authorization: `Bearer ${this.accessToken}`,\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n },\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n const json = await res.json();\n\n return {\n url: json.url,\n method: json.method,\n };\n }\n\n // -----------------------\n // JSON UPLOAD\n // -----------------------\n\n async uploadJson(\n path: string,\n obj: Record<string, unknown>,\n ): Promise<{ ok: true }> {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"put\",\n contentType: \"application/json\",\n });\n\n const res = await fetch(url, {\n method,\n body: JSON.stringify(obj),\n headers: {\n \"content-type\": \"application/json\",\n },\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return { ok: true };\n }\n\n // -----------------------\n // FILE UPLOAD\n // -----------------------\n\n async uploadFile(\n localPath: string,\n remotePath: string,\n contentType = \"application/octet-stream\",\n ): Promise<{ ok: true }> {\n const ref = parse(remotePath);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"put\",\n contentType,\n });\n\n const file = await stat(localPath);\n const stream = createReadStream(localPath);\n\n const res = await fetch(url, {\n method,\n body: stream as any,\n duplex: \"half\",\n headers: {\n \"content-type\": contentType,\n \"content-length\": file.size,\n },\n } as any);\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return { ok: true };\n }\n\n // -----------------------\n // JSON DOWNLOAD\n // -----------------------\n\n async downloadJson<T = Record<string, unknown>>(path: string): Promise<T> {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"get\",\n });\n\n const res = await fetch(url, {\n method,\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return (await res.json()) as T;\n }\n\n // -----------------------\n // FILE DOWNLOAD\n // -----------------------\n\n async downloadFile(remotePath: string, localPath: string): Promise<void> {\n const ref = parse(remotePath);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url, method } = await this.getSignedUrl({\n ...ref,\n method: \"get\",\n });\n\n const res = await fetch(url, {\n method,\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n if (!res.body) {\n throw new Error(\"missing response body\");\n }\n\n const file = createWriteStream(localPath);\n\n await pipeline(res.body as any, file);\n }\n\n // -----------------------\n // EXISTS\n // -----------------------\n\n async exists(path: string): Promise<boolean> {\n try {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url } = await this.getSignedUrl({\n ...ref,\n method: \"get\",\n });\n\n const res = await fetch(url, {\n method: \"HEAD\",\n });\n\n return res.status < 400;\n } catch {\n return false;\n }\n }\n\n // -----------------------\n // DELETE\n // -----------------------\n\n async delete(path: string): Promise<{ ok: true }> {\n const ref = parse(path);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const { url } = await this.getSignedUrl({\n group: ref.group,\n key: ref.key,\n method: \"delete\",\n });\n\n const res = await fetch(url, {\n method: \"delete\",\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return { ok: true };\n }\n\n // -----------------------\n // LIST\n // -----------------------\n\n async list(prefix: string): Promise<string[]> {\n const ref = parse(prefix);\n\n if (!ref) {\n throw new Error(\"invalid remote path\");\n }\n\n const url = `${this.url}/list`;\n\n const res = await fetch(url, {\n method: \"POST\",\n body: JSON.stringify({\n group: ref.group,\n prefix: ref.key,\n cache: false,\n }),\n headers: {\n authorization: `Bearer ${this.accessToken}`,\n \"content-type\": \"application/json\",\n accept: \"application/json\",\n },\n });\n\n if (res.status >= 400) {\n throw new Error(`http-${res.status}`);\n }\n\n return await res.json();\n }\n}\n"],"mappings":";AAAA,SAAS,kBAAkB,yBAAyB;AACpD,SAAS,YAAY;AACrB,SAAS,gBAAgB;AASzB,SAAS,MAAM,GAGN;AACP,QAAM,MAAM,EAAE,QAAQ,GAAG;AAEzB,MAAI,QAAQ,IAAI;AACd,WAAO;AAAA,EACT;AAEA,QAAM,QAAQ,EAAE,MAAM,GAAG,GAAG;AAC5B,QAAM,MAAM,EAAE,MAAM,MAAM,CAAC;AAE3B,MAAI,CAAC,SAAS,CAAC,KAAK;AAClB,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YACmB,KACA,aACjB;AAFiB;AACA;AAAA,EAChB;AAAA,EAFgB;AAAA,EACA;AAAA,EAGnB,MAAM,aAAa,KAGhB;AACD,UAAM,MAAM,GAAG,KAAK,GAAG;AAEvB,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU,GAAG;AAAA,MACxB,SAAS;AAAA,QACP,eAAe,UAAU,KAAK,WAAW;AAAA,QACzC,gBAAgB;AAAA,QAChB,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAED,QAAI,IAAI,UAAU,KAAK;AACrB,YAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAAA,IACtC;AAEA,UAAM,OAAO,MAAM,IAAI,KAAK;AAE5B,WAAO;AAAA,MACL,KAAK,KAAK;AAAA,MACV,QAAQ,KAAK;AAAA,IACf;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WACJ,MACA,KACuB;AACvB,UAAM,MAAM,MAAM,IAAI;AAEtB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,EAAE,KAAK,OAAO,IAAI,MAAM,KAAK,aAAa;AAAA,MAC9C,GAAG;AAAA,MACH,QAAQ;AAAA,MACR,aAAa;AAAA,IACf,CAAC;AAED,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B;AAAA,MACA,MAAM,KAAK,UAAU,GAAG;AAAA,MACxB,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,IACF,CAAC;AAED,QAAI,IAAI,UAAU,KAAK;AACrB,YAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAAA,IACtC;AAEA,WAAO,EAAE,IAAI,KAAK;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,WACJ,WACA,YACA,cAAc,4BACS;AACvB,UAAM,MAAM,MAAM,UAAU;AAE5B,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,EAAE,KAAK,OAAO,IAAI,MAAM,KAAK,aAAa;AAAA,MAC9C,GAAG;AAAA,MACH,QAAQ;AAAA,MACR;AAAA,IACF,CAAC;AAED,UAAM,OAAO,MAAM,KAAK,SAAS;AACjC,UAAM,SAAS,iBAAiB,SAAS;AAEzC,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,QAChB,kBAAkB,KAAK;AAAA,MACzB;AAAA,IACF,CAAQ;AAER,QAAI,IAAI,UAAU,KAAK;AACrB,YAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAAA,IACtC;AAEA,WAAO,EAAE,IAAI,KAAK;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAA0C,MAA0B;AACxE,UAAM,MAAM,MAAM,IAAI;AAEtB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,EAAE,KAAK,OAAO,IAAI,MAAM,KAAK,aAAa;AAAA,MAC9C,GAAG;AAAA,MACH,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,QAAI,IAAI,UAAU,KAAK;AACrB,YAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAAA,IACtC;AAEA,WAAQ,MAAM,IAAI,KAAK;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,aAAa,YAAoB,WAAkC;AACvE,UAAM,MAAM,MAAM,UAAU;AAE5B,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,EAAE,KAAK,OAAO,IAAI,MAAM,KAAK,aAAa;AAAA,MAC9C,GAAG;AAAA,MACH,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B;AAAA,IACF,CAAC;AAED,QAAI,IAAI,UAAU,KAAK;AACrB,YAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAAA,IACtC;AAEA,QAAI,CAAC,IAAI,MAAM;AACb,YAAM,IAAI,MAAM,uBAAuB;AAAA,IACzC;AAEA,UAAM,OAAO,kBAAkB,SAAS;AAExC,UAAM,SAAS,IAAI,MAAa,IAAI;AAAA,EACtC;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,MAAgC;AAC3C,QAAI;AACF,YAAM,MAAM,MAAM,IAAI;AAEtB,UAAI,CAAC,KAAK;AACR,cAAM,IAAI,MAAM,qBAAqB;AAAA,MACvC;AAEA,YAAM,EAAE,IAAI,IAAI,MAAM,KAAK,aAAa;AAAA,QACtC,GAAG;AAAA,QACH,QAAQ;AAAA,MACV,CAAC;AAED,YAAM,MAAM,MAAM,MAAM,KAAK;AAAA,QAC3B,QAAQ;AAAA,MACV,CAAC;AAED,aAAO,IAAI,SAAS;AAAA,IACtB,QAAQ;AACN,aAAO;AAAA,IACT;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,OAAO,MAAqC;AAChD,UAAM,MAAM,MAAM,IAAI;AAEtB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,EAAE,IAAI,IAAI,MAAM,KAAK,aAAa;AAAA,MACtC,OAAO,IAAI;AAAA,MACX,KAAK,IAAI;AAAA,MACT,QAAQ;AAAA,IACV,CAAC;AAED,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B,QAAQ;AAAA,IACV,CAAC;AAED,QAAI,IAAI,UAAU,KAAK;AACrB,YAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAAA,IACtC;AAEA,WAAO,EAAE,IAAI,KAAK;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,KAAK,QAAmC;AAC5C,UAAM,MAAM,MAAM,MAAM;AAExB,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,MAAM,qBAAqB;AAAA,IACvC;AAEA,UAAM,MAAM,GAAG,KAAK,GAAG;AAEvB,UAAM,MAAM,MAAM,MAAM,KAAK;AAAA,MAC3B,QAAQ;AAAA,MACR,MAAM,KAAK,UAAU;AAAA,QACnB,OAAO,IAAI;AAAA,QACX,QAAQ,IAAI;AAAA,QACZ,OAAO;AAAA,MACT,CAAC;AAAA,MACD,SAAS;AAAA,QACP,eAAe,UAAU,KAAK,WAAW;AAAA,QACzC,gBAAgB;AAAA,QAChB,QAAQ;AAAA,MACV;AAAA,IACF,CAAC;AAED,QAAI,IAAI,UAAU,KAAK;AACrB,YAAM,IAAI,MAAM,QAAQ,IAAI,MAAM,EAAE;AAAA,IACtC;AAEA,WAAO,MAAM,IAAI,KAAK;AAAA,EACxB;AACF;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xgsd/artifact-sdk",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "type": "module",