backless-onedrive 0.1.0 → 0.2.3

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
@@ -108,14 +108,24 @@ var OneDriveApi = class {
108
108
  return items.filter((item) => item.folder).map(toDriveFile);
109
109
  }
110
110
  async uploadJsonFile(folderId, name, data) {
111
- const resp = await this.request(
111
+ const h = await this.headers();
112
+ const resp = await fetch(
112
113
  `${GRAPH_API}/me/drive/items/${folderId}:/${name}:/content`,
113
114
  {
114
115
  method: "PUT",
115
- headers: { "Content-Type": "application/json" },
116
+ headers: { ...h, "Content-Type": "application/json" },
116
117
  body: JSON.stringify(data)
117
118
  }
118
119
  );
120
+ if (resp.status === 409) {
121
+ const body = await resp.json();
122
+ if (body.error?.code === "nameAlreadyExists") return "";
123
+ throw new Error(`Graph API 409: ${JSON.stringify(body)}`);
124
+ }
125
+ if (!resp.ok) {
126
+ const body = await resp.text();
127
+ throw new Error(`Graph API ${resp.status}: ${body}`);
128
+ }
119
129
  const item = await resp.json();
120
130
  return item.id;
121
131
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/onedrive-api.ts"],"sourcesContent":["import type { CloudStorageApi, DriveFile } from \"backless-core\";\n\nconst GRAPH_API = \"https://graph.microsoft.com/v1.0\";\n\ninterface GraphItem {\n id: string;\n name: string;\n file?: { mimeType: string };\n folder?: object;\n lastModifiedDateTime: string;\n}\n\ninterface GraphList {\n value: GraphItem[];\n \"@odata.nextLink\"?: string;\n}\n\nfunction toDriveFile(item: GraphItem): DriveFile {\n return {\n id: item.id,\n name: item.name,\n mimeType: item.file?.mimeType ?? \"\",\n modifiedTime: item.lastModifiedDateTime,\n };\n}\n\nexport class OneDriveApi implements CloudStorageApi {\n private readonly folderCache = new Map<string, string>();\n\n constructor(private getToken: () => Promise<string | null>) {}\n\n private async headers(): Promise<HeadersInit> {\n const token = await this.getToken();\n if (!token) throw new Error(\"Not authenticated\");\n return { Authorization: `Bearer ${token}` };\n }\n\n private async request(url: string, init?: RequestInit): Promise<Response> {\n const h = await this.headers();\n const resp = await fetch(url, {\n ...init,\n headers: { ...h, ...init?.headers },\n });\n if (!resp.ok) {\n const body = await resp.text();\n throw new Error(`Graph API ${resp.status}: ${body}`);\n }\n return resp;\n }\n\n async getOrCreateAppFolder(name: string): Promise<string> {\n const cacheKey = `root:${name}`;\n const cached = this.folderCache.get(cacheKey);\n if (cached) return cached;\n\n const h = await this.headers();\n const checkResp = await fetch(\n `${GRAPH_API}/me/drive/root:/${encodeURIComponent(name)}:`,\n { headers: h }\n );\n\n let folderId: string;\n if (checkResp.ok) {\n const item = await checkResp.json() as GraphItem;\n folderId = item.id;\n } else {\n if (checkResp.status !== 404) {\n const body = await checkResp.text();\n throw new Error(`Graph API ${checkResp.status}: ${body}`);\n }\n const resp = await this.request(`${GRAPH_API}/me/drive/root/children`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ name, folder: {} }),\n });\n const item = await resp.json() as GraphItem;\n folderId = item.id;\n }\n\n this.folderCache.set(cacheKey, folderId);\n return folderId;\n }\n\n async ensureFolder(parentId: string, name: string): Promise<string> {\n const cacheKey = `${parentId}:${name}`;\n const cached = this.folderCache.get(cacheKey);\n if (cached) return cached;\n\n const h = await this.headers();\n const checkResp = await fetch(\n `${GRAPH_API}/me/drive/items/${parentId}:/${encodeURIComponent(name)}:`,\n { headers: h }\n );\n\n let folderId: string;\n if (checkResp.ok) {\n const item = await checkResp.json() as GraphItem;\n folderId = item.id;\n } else {\n if (checkResp.status !== 404) {\n const body = await checkResp.text();\n throw new Error(`Graph API ${checkResp.status}: ${body}`);\n }\n const resp = await this.request(`${GRAPH_API}/me/drive/items/${parentId}/children`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ name, folder: {} }),\n });\n const item = await resp.json() as GraphItem;\n folderId = item.id;\n }\n\n this.folderCache.set(cacheKey, folderId);\n return folderId;\n }\n\n private async listAllChildren(folderId: string): Promise<GraphItem[]> {\n const items: GraphItem[] = [];\n let url: string | undefined =\n `${GRAPH_API}/me/drive/items/${folderId}/children?$top=200&$orderby=name`;\n\n while (url) {\n const resp = await this.request(url);\n const data = await resp.json() as GraphList;\n items.push(...data.value);\n url = data[\"@odata.nextLink\"];\n }\n\n return items;\n }\n\n async listFiles(folderId: string): Promise<DriveFile[]> {\n const items = await this.listAllChildren(folderId);\n return items.filter((item) => item.file).map(toDriveFile);\n }\n\n async listFolders(parentId: string): Promise<DriveFile[]> {\n const items = await this.listAllChildren(parentId);\n return items.filter((item) => item.folder).map(toDriveFile);\n }\n\n async uploadJsonFile(folderId: string, name: string, data: unknown): Promise<string> {\n const resp = await this.request(\n `${GRAPH_API}/me/drive/items/${folderId}:/${name}:/content`,\n {\n method: \"PUT\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n }\n );\n const item = await resp.json() as GraphItem;\n return item.id;\n }\n\n async downloadJsonFile<T = unknown>(fileId: string): Promise<T> {\n const resp = await this.request(`${GRAPH_API}/me/drive/items/${fileId}/content`);\n return resp.json();\n }\n\n async uploadBinaryFile(folderId: string, name: string, mimeType: string, data: Blob): Promise<string> {\n const resp = await this.request(\n `${GRAPH_API}/me/drive/items/${folderId}:/${name}:/content`,\n {\n method: \"PUT\",\n headers: { \"Content-Type\": mimeType },\n body: data,\n }\n );\n const item = await resp.json() as GraphItem;\n return item.id;\n }\n\n async downloadBinaryFile(fileId: string): Promise<Blob> {\n const resp = await this.request(`${GRAPH_API}/me/drive/items/${fileId}/content`);\n return resp.blob();\n }\n\n async deleteFile(fileId: string): Promise<void> {\n await this.request(`${GRAPH_API}/me/drive/items/${fileId}`, { method: \"DELETE\" });\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/onedrive-api.ts"],"sourcesContent":["import type { CloudStorageApi, DriveFile } from \"backless-core\";\n\nconst GRAPH_API = \"https://graph.microsoft.com/v1.0\";\n\ninterface GraphItem {\n id: string;\n name: string;\n file?: { mimeType: string };\n folder?: object;\n lastModifiedDateTime: string;\n}\n\ninterface GraphList {\n value: GraphItem[];\n \"@odata.nextLink\"?: string;\n}\n\nfunction toDriveFile(item: GraphItem): DriveFile {\n return {\n id: item.id,\n name: item.name,\n mimeType: item.file?.mimeType ?? \"\",\n modifiedTime: item.lastModifiedDateTime,\n };\n}\n\nexport class OneDriveApi implements CloudStorageApi {\n private readonly folderCache = new Map<string, string>();\n\n constructor(private getToken: () => Promise<string | null>) {}\n\n private async headers(): Promise<HeadersInit> {\n const token = await this.getToken();\n if (!token) throw new Error(\"Not authenticated\");\n return { Authorization: `Bearer ${token}` };\n }\n\n private async request(url: string, init?: RequestInit): Promise<Response> {\n const h = await this.headers();\n const resp = await fetch(url, {\n ...init,\n headers: { ...h, ...init?.headers },\n });\n if (!resp.ok) {\n const body = await resp.text();\n throw new Error(`Graph API ${resp.status}: ${body}`);\n }\n return resp;\n }\n\n async getOrCreateAppFolder(name: string): Promise<string> {\n const cacheKey = `root:${name}`;\n const cached = this.folderCache.get(cacheKey);\n if (cached) return cached;\n\n const h = await this.headers();\n const checkResp = await fetch(\n `${GRAPH_API}/me/drive/root:/${encodeURIComponent(name)}:`,\n { headers: h }\n );\n\n let folderId: string;\n if (checkResp.ok) {\n const item = await checkResp.json() as GraphItem;\n folderId = item.id;\n } else {\n if (checkResp.status !== 404) {\n const body = await checkResp.text();\n throw new Error(`Graph API ${checkResp.status}: ${body}`);\n }\n const resp = await this.request(`${GRAPH_API}/me/drive/root/children`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ name, folder: {} }),\n });\n const item = await resp.json() as GraphItem;\n folderId = item.id;\n }\n\n this.folderCache.set(cacheKey, folderId);\n return folderId;\n }\n\n async ensureFolder(parentId: string, name: string): Promise<string> {\n const cacheKey = `${parentId}:${name}`;\n const cached = this.folderCache.get(cacheKey);\n if (cached) return cached;\n\n const h = await this.headers();\n const checkResp = await fetch(\n `${GRAPH_API}/me/drive/items/${parentId}:/${encodeURIComponent(name)}:`,\n { headers: h }\n );\n\n let folderId: string;\n if (checkResp.ok) {\n const item = await checkResp.json() as GraphItem;\n folderId = item.id;\n } else {\n if (checkResp.status !== 404) {\n const body = await checkResp.text();\n throw new Error(`Graph API ${checkResp.status}: ${body}`);\n }\n const resp = await this.request(`${GRAPH_API}/me/drive/items/${parentId}/children`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ name, folder: {} }),\n });\n const item = await resp.json() as GraphItem;\n folderId = item.id;\n }\n\n this.folderCache.set(cacheKey, folderId);\n return folderId;\n }\n\n private async listAllChildren(folderId: string): Promise<GraphItem[]> {\n const items: GraphItem[] = [];\n let url: string | undefined =\n `${GRAPH_API}/me/drive/items/${folderId}/children?$top=200&$orderby=name`;\n\n while (url) {\n const resp = await this.request(url);\n const data = await resp.json() as GraphList;\n items.push(...data.value);\n url = data[\"@odata.nextLink\"];\n }\n\n return items;\n }\n\n async listFiles(folderId: string): Promise<DriveFile[]> {\n const items = await this.listAllChildren(folderId);\n return items.filter((item) => item.file).map(toDriveFile);\n }\n\n async listFolders(parentId: string): Promise<DriveFile[]> {\n const items = await this.listAllChildren(parentId);\n return items.filter((item) => item.folder).map(toDriveFile);\n }\n\n async uploadJsonFile(folderId: string, name: string, data: unknown): Promise<string> {\n const h = await this.headers();\n const resp = await fetch(\n `${GRAPH_API}/me/drive/items/${folderId}:/${name}:/content`,\n {\n method: \"PUT\",\n headers: { ...h, \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n }\n );\n // 409 nameAlreadyExists: file was already uploaded (e.g. previous sync attempt\n // uploaded it but the response was lost, or two tabs pushed concurrently).\n // Changeset and snapshot files are immutable per-device, so the existing file\n // has the correct content — treat as success.\n if (resp.status === 409) {\n const body = await resp.json() as { error?: { code?: string } };\n if (body.error?.code === \"nameAlreadyExists\") return \"\";\n throw new Error(`Graph API 409: ${JSON.stringify(body)}`);\n }\n if (!resp.ok) {\n const body = await resp.text();\n throw new Error(`Graph API ${resp.status}: ${body}`);\n }\n const item = await resp.json() as GraphItem;\n return item.id;\n }\n\n async downloadJsonFile<T = unknown>(fileId: string): Promise<T> {\n const resp = await this.request(`${GRAPH_API}/me/drive/items/${fileId}/content`);\n return resp.json();\n }\n\n async uploadBinaryFile(folderId: string, name: string, mimeType: string, data: Blob): Promise<string> {\n const resp = await this.request(\n `${GRAPH_API}/me/drive/items/${folderId}:/${name}:/content`,\n {\n method: \"PUT\",\n headers: { \"Content-Type\": mimeType },\n body: data,\n }\n );\n const item = await resp.json() as GraphItem;\n return item.id;\n }\n\n async downloadBinaryFile(fileId: string): Promise<Blob> {\n const resp = await this.request(`${GRAPH_API}/me/drive/items/${fileId}/content`);\n return resp.blob();\n }\n\n async deleteFile(fileId: string): Promise<void> {\n await this.request(`${GRAPH_API}/me/drive/items/${fileId}`, { method: \"DELETE\" });\n }\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "backless-onedrive",
3
- "version": "0.1.0",
3
+ "version": "0.2.3",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/mikocot/backless.git"
@@ -24,7 +24,7 @@
24
24
  "test:watch": "vitest"
25
25
  },
26
26
  "dependencies": {
27
- "backless-core": "^0.1.0"
27
+ "backless-core": "^0.2.3"
28
28
  },
29
29
  "devDependencies": {
30
30
  "tsup": "^8.0.0",