@xgsd/artifact-sdk 0.0.3 → 0.0.4

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.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  type Ref = {
2
2
  group: string;
3
3
  key: string;
4
- method: "get" | "put";
4
+ method: "get" | "put" | "delete";
5
5
  contentType?: string;
6
6
  };
7
7
  declare class ArtifactStorage {
8
8
  private readonly url;
9
9
  private readonly accessToken?;
10
10
  constructor(url: string, accessToken?: string | undefined);
11
- protected getSignedUrl(ref: Ref): Promise<{
11
+ getSignedUrl(ref: Ref): Promise<{
12
12
  url: string;
13
13
  method: string;
14
14
  }>;
package/dist/index.js CHANGED
@@ -168,15 +168,13 @@ var ArtifactStorage = class {
168
168
  if (!ref) {
169
169
  throw new Error("invalid remote path");
170
170
  }
171
- const url = `${this.url}/delete`;
171
+ const { url } = await this.getSignedUrl({
172
+ group: ref.group,
173
+ key: ref.key,
174
+ method: "delete"
175
+ });
172
176
  const res = await fetch(url, {
173
- method: "POST",
174
- body: JSON.stringify(ref),
175
- headers: {
176
- authorization: `Bearer ${this.accessToken}`,
177
- "content-type": "application/json",
178
- accept: "application/json"
179
- }
177
+ method: "delete"
180
178
  });
181
179
  if (res.status >= 400) {
182
180
  throw new Error(`http-${res.status}`);
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\";\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 protected 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 = `${this.url}/delete`;\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 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 { 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":[]}
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@xgsd/artifact-sdk",
3
- "version": "0.0.3",
3
+ "version": "0.0.4",
4
4
  "main": "dist/index.js",
5
5
  "license": "MIT",
6
6
  "type": "module",
7
7
  "scripts": {
8
- "build": "tsup"
8
+ "build": "rm -rf ./dist && tsup"
9
9
  },
10
10
  "devDependencies": {
11
11
  "@types/node": "^25.9.1",