next-tinacms-dos 0.0.0-fd664d8-20250407054012 → 0.0.0-fd7d6a8-20251202025033

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/handlers.js CHANGED
@@ -1,50 +1,21 @@
1
- var __create = Object.create;
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __getProtoOf = Object.getPrototypeOf;
6
- var __hasOwnProp = Object.prototype.hasOwnProperty;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
20
- // If the importer is in node compatibility mode or this is not an ESM
21
- // file that has been converted to a CommonJS file using a Babel-
22
- // compatible transform (i.e. "__esModule" has not been set), then set
23
- // "default" to the CommonJS "module.exports" for node compatibility.
24
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
25
- mod
26
- ));
27
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
28
-
29
1
  // src/handlers.ts
30
- var handlers_exports = {};
31
- __export(handlers_exports, {
32
- createMediaHandler: () => createMediaHandler,
33
- mediaHandlerConfig: () => mediaHandlerConfig
34
- });
35
- module.exports = __toCommonJS(handlers_exports);
36
- var import_client_s3 = require("@aws-sdk/client-s3");
37
- var import_path = __toESM(require("path"));
38
- var import_fs = __toESM(require("fs"));
39
- var import_multer = __toESM(require("multer"));
40
- var import_util = require("util");
2
+ import {
3
+ S3Client,
4
+ ListObjectsCommand,
5
+ PutObjectCommand,
6
+ DeleteObjectCommand
7
+ } from "@aws-sdk/client-s3";
8
+ import path from "path";
9
+ import fs from "fs";
10
+ import multer from "multer";
11
+ import { promisify } from "util";
41
12
  var mediaHandlerConfig = {
42
13
  api: {
43
14
  bodyParser: false
44
15
  }
45
16
  };
46
17
  var createMediaHandler = (config, options) => {
47
- const client = new import_client_s3.S3Client(config.config);
18
+ const client = new S3Client(config.config);
48
19
  const bucket = config.bucket;
49
20
  let mediaRoot = config.mediaRoot || "";
50
21
  if (mediaRoot) {
@@ -55,7 +26,7 @@ var createMediaHandler = (config, options) => {
55
26
  mediaRoot = mediaRoot.substr(1);
56
27
  }
57
28
  }
58
- let cdnUrl = (options == null ? void 0 : options.cdnUrl) || config.config.endpoint.toString().replace(/http(s|):\/\//i, `https://${bucket}.`);
29
+ let cdnUrl = options?.cdnUrl || config.config.endpoint.toString().replace(/http(s|):\/\//i, `https://${bucket}.`);
59
30
  cdnUrl = cdnUrl + (cdnUrl.endsWith("/") ? "" : "/");
60
31
  return async (req, res) => {
61
32
  const isAuthorized = await config.authorized(req, res);
@@ -76,10 +47,9 @@ var createMediaHandler = (config, options) => {
76
47
  };
77
48
  };
78
49
  async function uploadMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
79
- var _a;
80
- const upload = (0, import_util.promisify)(
81
- (0, import_multer.default)({
82
- storage: import_multer.default.diskStorage({
50
+ const upload = promisify(
51
+ multer({
52
+ storage: multer.diskStorage({
83
53
  // eslint-disable-next-line @typescript-eslint/ban-ts-comment
84
54
  // @ts-ignore
85
55
  directory: (req2, file, cb) => {
@@ -96,17 +66,17 @@ async function uploadMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
96
66
  let prefix = directory.replace(/^\//, "").replace(/\/$/, "");
97
67
  if (prefix) prefix = prefix + "/";
98
68
  const filePath = req.file.path;
99
- const fileType = (_a = req.file) == null ? void 0 : _a.mimetype;
100
- const blob = import_fs.default.readFileSync(filePath);
101
- const filename = import_path.default.basename(filePath);
69
+ const fileType = req.file?.mimetype;
70
+ const blob = fs.readFileSync(filePath);
71
+ const filename = path.basename(filePath);
102
72
  const params = {
103
73
  Bucket: bucket,
104
- Key: mediaRoot ? import_path.default.join(mediaRoot, prefix + filename) : prefix + filename,
74
+ Key: mediaRoot ? path.join(mediaRoot, prefix + filename) : prefix + filename,
105
75
  Body: blob,
106
76
  ACL: "public-read",
107
77
  ContentType: fileType || "application/octet-stream"
108
78
  };
109
- const command = new import_client_s3.PutObjectCommand(params);
79
+ const command = new PutObjectCommand(params);
110
80
  try {
111
81
  const src = cdnUrl + prefix + filename;
112
82
  await client.send(command);
@@ -120,7 +90,7 @@ async function uploadMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
120
90
  "400x400": src,
121
91
  "1000x1000": src
122
92
  },
123
- src: cdnUrl + (mediaRoot ? import_path.default.join(mediaRoot, prefix + filename) : prefix + filename)
93
+ src: cdnUrl + (mediaRoot ? path.join(mediaRoot, prefix + filename) : prefix + filename)
124
94
  });
125
95
  } catch (e) {
126
96
  console.error("Error uploading media");
@@ -145,7 +115,6 @@ function stripMediaRoot(mediaRoot, key) {
145
115
  return keyParts.join("/");
146
116
  }
147
117
  async function listMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
148
- var _a;
149
118
  try {
150
119
  const {
151
120
  directory = "",
@@ -157,13 +126,13 @@ async function listMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
157
126
  const params = {
158
127
  Bucket: bucket,
159
128
  Delimiter: "/",
160
- Prefix: mediaRoot ? import_path.default.join(mediaRoot, prefix) : prefix,
161
- Marker: offset == null ? void 0 : offset.toString(),
129
+ Prefix: mediaRoot ? path.join(mediaRoot, prefix) : prefix,
130
+ Marker: offset?.toString(),
162
131
  MaxKeys: directory && !offset ? +limit + 1 : +limit
163
132
  };
164
- const response = await client.send(new import_client_s3.ListObjectsCommand(params));
133
+ const response = await client.send(new ListObjectsCommand(params));
165
134
  const items = [];
166
- (_a = response.CommonPrefixes) == null ? void 0 : _a.forEach(({ Prefix }) => {
135
+ response.CommonPrefixes?.forEach(({ Prefix }) => {
167
136
  const strippedPrefix = stripMediaRoot(mediaRoot, Prefix);
168
137
  if (!strippedPrefix) {
169
138
  return;
@@ -171,8 +140,8 @@ async function listMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
171
140
  items.push({
172
141
  id: Prefix,
173
142
  type: "dir",
174
- filename: import_path.default.basename(strippedPrefix),
175
- directory: import_path.default.dirname(strippedPrefix)
143
+ filename: path.basename(strippedPrefix),
144
+ directory: path.dirname(strippedPrefix)
176
145
  });
177
146
  });
178
147
  items.push(
@@ -211,7 +180,7 @@ async function deleteAsset(req, res, client, bucket) {
211
180
  Key: objectKey
212
181
  };
213
182
  try {
214
- const data = await client.send(new import_client_s3.DeleteObjectCommand(params));
183
+ const data = await client.send(new DeleteObjectCommand(params));
215
184
  res.json(data);
216
185
  } catch (err) {
217
186
  console.error("Error deleting media");
@@ -224,8 +193,8 @@ async function deleteAsset(req, res, client, bucket) {
224
193
  function getDOSToTinaFunc(cdnUrl, mediaRoot) {
225
194
  return function dosToTina(file) {
226
195
  const strippedKey = stripMediaRoot(mediaRoot, file.Key);
227
- const filename = import_path.default.basename(strippedKey);
228
- const directory = import_path.default.dirname(strippedKey) + "/";
196
+ const filename = path.basename(strippedKey);
197
+ const directory = path.dirname(strippedKey) + "/";
229
198
  const src = cdnUrl + file.Key;
230
199
  return {
231
200
  id: file.Key,
@@ -241,8 +210,7 @@ function getDOSToTinaFunc(cdnUrl, mediaRoot) {
241
210
  };
242
211
  };
243
212
  }
244
- // Annotate the CommonJS export names for ESM import in node:
245
- 0 && (module.exports = {
213
+ export {
246
214
  createMediaHandler,
247
215
  mediaHandlerConfig
248
- });
216
+ };
package/dist/index.js CHANGED
@@ -1,133 +1,130 @@
1
- (function(global, factory) {
2
- typeof exports === "object" && typeof module !== "undefined" ? factory(exports, require("tinacms")) : typeof define === "function" && define.amd ? define(["exports", "tinacms"], factory) : (global = typeof globalThis !== "undefined" ? globalThis : global || self, factory(global["next-tinacms-dos"] = {}, global.NOOP));
3
- })(this, function(exports2, tinacms) {
4
- "use strict";
5
- class MediaListError extends Error {
6
- constructor(config) {
7
- super(config.message);
8
- this.ERR_TYPE = "MediaListError";
9
- this.title = config.title;
10
- this.docsLink = config.docsLink;
11
- }
1
+ import { DEFAULT_MEDIA_UPLOAD_TYPES } from "tinacms";
2
+ class MediaListError extends Error {
3
+ constructor(config) {
4
+ super(config.message);
5
+ this.ERR_TYPE = "MediaListError";
6
+ this.title = config.title;
7
+ this.docsLink = config.docsLink;
12
8
  }
13
- const E_DEFAULT = new MediaListError({
14
- title: "An Error Occurred",
15
- message: "Something went wrong fetching your media from Digital Ocean Space.",
16
- docsLink: "https://tina.io/packages/next-tinacms-dos"
17
- });
18
- const E_UNAUTHORIZED = new MediaListError({
19
- title: "Unauthorized",
20
- message: "You don't have access to this resource.",
21
- docsLink: "https://tina.io/packages/next-tinacms-dos"
22
- });
23
- const E_CONFIG = new MediaListError({
24
- title: "Missing Credentials",
25
- message: "Unable to connect to Digital Ocean Space because one or more environment variables are missing.",
26
- docsLink: "https://tina.io/docs/media-dos/"
27
- });
28
- const E_KEY_FAIL = new MediaListError({
29
- title: "Bad Credentials",
30
- message: "Unable to connect to Digital Ocean Space because one or more environment variables are misconfigured.",
31
- docsLink: "https://tina.io/docs/media-dos/"
32
- });
33
- const E_BAD_ROUTE = new MediaListError({
34
- title: "Bad Route",
35
- message: "The Digital Ocean Space API route is missing or misconfigured.",
36
- docsLink: "https://tina.io/packages/next-tinacms-dos/#set-up-api-routes"
37
- });
38
- const interpretErrorMessage = (message) => {
39
- switch (message) {
40
- case "Must supply cloud_name":
41
- case "Must supply api_key":
42
- case "Must supply api_secret":
43
- return E_CONFIG;
44
- case "unknown api_key":
45
- return E_KEY_FAIL;
46
- default:
47
- return E_DEFAULT;
48
- }
49
- };
50
- class DOSMediaStore {
51
- constructor() {
52
- this.fetchFunction = (input, init) => {
53
- return fetch(input, init);
54
- };
55
- this.accept = tinacms.DEFAULT_MEDIA_UPLOAD_TYPES;
56
- this.parse = (img) => {
57
- return img.src;
58
- };
59
- }
60
- async persist(media) {
61
- const newFiles = [];
62
- for (const item of media) {
63
- const { file, directory } = item;
64
- const formData = new FormData();
65
- formData.append("file", file);
66
- formData.append("directory", directory);
67
- formData.append("filename", file.name);
68
- const res = await this.fetchFunction(`/api/dos/media`, {
69
- method: "POST",
70
- body: formData
71
- });
72
- if (res.status != 200) {
73
- const responseData = await res.json();
74
- throw new Error(responseData.message);
75
- }
76
- const fileRes = await res.json();
77
- await new Promise((resolve) => {
78
- setTimeout(resolve, 2e3);
79
- });
80
- newFiles.push(fileRes);
9
+ }
10
+ const E_DEFAULT = new MediaListError({
11
+ title: "An Error Occurred",
12
+ message: "Something went wrong fetching your media from Digital Ocean Space.",
13
+ docsLink: "https://tina.io/docs/r/digital-ocean-spaces"
14
+ });
15
+ const E_UNAUTHORIZED = new MediaListError({
16
+ title: "Unauthorized",
17
+ message: "You don't have access to this resource.",
18
+ docsLink: "https://tina.io/docs/r/digital-ocean-spaces"
19
+ });
20
+ const E_CONFIG = new MediaListError({
21
+ title: "Missing Credentials",
22
+ message: "Unable to connect to Digital Ocean Space because one or more environment variables are missing.",
23
+ docsLink: "https://tina.io/docs/r/digital-ocean-spaces/"
24
+ });
25
+ const E_KEY_FAIL = new MediaListError({
26
+ title: "Bad Credentials",
27
+ message: "Unable to connect to Digital Ocean Space because one or more environment variables are misconfigured.",
28
+ docsLink: "https://tina.io/docs/r/digital-ocean-spaces/"
29
+ });
30
+ const E_BAD_ROUTE = new MediaListError({
31
+ title: "Bad Route",
32
+ message: "The Digital Ocean Space API route is missing or misconfigured.",
33
+ docsLink: "https://tina.io/docs/r/digital-ocean-spaces/#set-up-api-routes"
34
+ });
35
+ const interpretErrorMessage = (message) => {
36
+ switch (message) {
37
+ case "Must supply cloud_name":
38
+ case "Must supply api_key":
39
+ case "Must supply api_secret":
40
+ return E_CONFIG;
41
+ case "unknown api_key":
42
+ return E_KEY_FAIL;
43
+ default:
44
+ return E_DEFAULT;
45
+ }
46
+ };
47
+ class DOSMediaStore {
48
+ constructor() {
49
+ this.fetchFunction = (input, init) => {
50
+ return fetch(input, init);
51
+ };
52
+ this.accept = DEFAULT_MEDIA_UPLOAD_TYPES;
53
+ this.parse = (img) => {
54
+ return img.src;
55
+ };
56
+ }
57
+ async persist(media) {
58
+ const newFiles = [];
59
+ for (const item of media) {
60
+ const { file, directory } = item;
61
+ const formData = new FormData();
62
+ formData.append("file", file);
63
+ formData.append("directory", directory);
64
+ formData.append("filename", file.name);
65
+ const res = await this.fetchFunction(`/api/dos/media`, {
66
+ method: "POST",
67
+ body: formData
68
+ });
69
+ if (res.status != 200) {
70
+ const responseData = await res.json();
71
+ throw new Error(responseData.message);
81
72
  }
82
- return newFiles;
83
- }
84
- async delete(media) {
85
- await this.fetchFunction(`/api/dos/media/${encodeURIComponent(media.id)}`, {
86
- method: "DELETE"
73
+ const fileRes = await res.json();
74
+ await new Promise((resolve) => {
75
+ setTimeout(resolve, 2e3);
87
76
  });
77
+ newFiles.push(fileRes);
88
78
  }
89
- async list(options) {
90
- const query = this.buildQuery(options);
91
- const response = await this.fetchFunction("/api/dos/media" + query);
92
- if (response.status == 401) {
93
- throw E_UNAUTHORIZED;
94
- }
95
- if (response.status == 404) {
96
- throw E_BAD_ROUTE;
97
- }
98
- if (response.status >= 500) {
99
- const { e } = await response.json();
100
- const error = interpretErrorMessage(e);
101
- throw error;
102
- }
103
- const { items, offset } = await response.json();
104
- return {
105
- items: items.map((item) => item),
106
- nextOffset: offset
107
- };
79
+ return newFiles;
80
+ }
81
+ async delete(media) {
82
+ await this.fetchFunction(`/api/dos/media/${encodeURIComponent(media.id)}`, {
83
+ method: "DELETE"
84
+ });
85
+ }
86
+ async list(options) {
87
+ const query = this.buildQuery(options);
88
+ const response = await this.fetchFunction("/api/dos/media" + query);
89
+ if (response.status == 401) {
90
+ throw E_UNAUTHORIZED;
108
91
  }
109
- buildQuery(options) {
110
- const params = Object.keys(options).filter((key) => options[key] !== "" && options[key] !== void 0).map((key) => `${key}=${options[key]}`).join("&");
111
- return `?${params}`;
92
+ if (response.status == 404) {
93
+ throw E_BAD_ROUTE;
112
94
  }
113
- }
114
- class TinaCloudDOSMediaStore extends DOSMediaStore {
115
- constructor(client) {
116
- super();
117
- this.client = client;
118
- this.fetchFunction = async (input, init) => {
119
- try {
120
- const url = input.toString();
121
- const query = `${url.includes("?") ? "&" : "?"}clientID=${client.clientId}`;
122
- const res = client.authProvider.fetchWithToken(url + query, init);
123
- return res;
124
- } catch (error) {
125
- console.error(error);
126
- }
127
- };
95
+ if (response.status >= 500) {
96
+ const { e } = await response.json();
97
+ const error = interpretErrorMessage(e);
98
+ throw error;
128
99
  }
100
+ const { items, offset } = await response.json();
101
+ return {
102
+ items: items.map((item) => item),
103
+ nextOffset: offset
104
+ };
129
105
  }
130
- exports2.DOSMediaStore = DOSMediaStore;
131
- exports2.TinaCloudDOSMediaStore = TinaCloudDOSMediaStore;
132
- Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
133
- });
106
+ buildQuery(options) {
107
+ const params = Object.keys(options).filter((key) => options[key] !== "" && options[key] !== void 0).map((key) => `${key}=${options[key]}`).join("&");
108
+ return `?${params}`;
109
+ }
110
+ }
111
+ class TinaCloudDOSMediaStore extends DOSMediaStore {
112
+ constructor(client) {
113
+ super();
114
+ this.client = client;
115
+ this.fetchFunction = async (input, init) => {
116
+ try {
117
+ const url = input.toString();
118
+ const query = `${url.includes("?") ? "&" : "?"}clientID=${client.clientId}`;
119
+ const res = client.authProvider.fetchWithToken(url + query, init);
120
+ return res;
121
+ } catch (error) {
122
+ console.error(error);
123
+ }
124
+ };
125
+ }
126
+ }
127
+ export {
128
+ DOSMediaStore,
129
+ TinaCloudDOSMediaStore
130
+ };
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "next-tinacms-dos",
3
- "version": "0.0.0-fd664d8-20250407054012",
3
+ "version": "0.0.0-fd7d6a8-20251202025033",
4
4
  "main": "dist/index.js",
5
- "module": "dist/index.mjs",
5
+ "module": "./dist/index.js",
6
6
  "files": [
7
7
  "dist"
8
8
  ],
@@ -18,7 +18,7 @@
18
18
  ]
19
19
  },
20
20
  "peerDependencies": {
21
- "tinacms": "0.0.0-fd664d8-20250407054012"
21
+ "tinacms": "0.0.0-fd7d6a8-20251202025033"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/crypto-js": "^3.1.47",
@@ -28,8 +28,8 @@
28
28
  "react": "^18.3.1",
29
29
  "react-dom": "^18.3.1",
30
30
  "typescript": "^5.7.3",
31
- "@tinacms/scripts": "0.0.0-fd664d8-20250407054012",
32
- "tinacms": "0.0.0-fd664d8-20250407054012"
31
+ "@tinacms/scripts": "1.4.1",
32
+ "tinacms": "0.0.0-fd7d6a8-20251202025033"
33
33
  },
34
34
  "publishConfig": {
35
35
  "registry": "https://registry.npmjs.org"
package/dist/index.mjs DELETED
@@ -1,130 +0,0 @@
1
- import { DEFAULT_MEDIA_UPLOAD_TYPES } from "tinacms";
2
- class MediaListError extends Error {
3
- constructor(config) {
4
- super(config.message);
5
- this.ERR_TYPE = "MediaListError";
6
- this.title = config.title;
7
- this.docsLink = config.docsLink;
8
- }
9
- }
10
- const E_DEFAULT = new MediaListError({
11
- title: "An Error Occurred",
12
- message: "Something went wrong fetching your media from Digital Ocean Space.",
13
- docsLink: "https://tina.io/packages/next-tinacms-dos"
14
- });
15
- const E_UNAUTHORIZED = new MediaListError({
16
- title: "Unauthorized",
17
- message: "You don't have access to this resource.",
18
- docsLink: "https://tina.io/packages/next-tinacms-dos"
19
- });
20
- const E_CONFIG = new MediaListError({
21
- title: "Missing Credentials",
22
- message: "Unable to connect to Digital Ocean Space because one or more environment variables are missing.",
23
- docsLink: "https://tina.io/docs/media-dos/"
24
- });
25
- const E_KEY_FAIL = new MediaListError({
26
- title: "Bad Credentials",
27
- message: "Unable to connect to Digital Ocean Space because one or more environment variables are misconfigured.",
28
- docsLink: "https://tina.io/docs/media-dos/"
29
- });
30
- const E_BAD_ROUTE = new MediaListError({
31
- title: "Bad Route",
32
- message: "The Digital Ocean Space API route is missing or misconfigured.",
33
- docsLink: "https://tina.io/packages/next-tinacms-dos/#set-up-api-routes"
34
- });
35
- const interpretErrorMessage = (message) => {
36
- switch (message) {
37
- case "Must supply cloud_name":
38
- case "Must supply api_key":
39
- case "Must supply api_secret":
40
- return E_CONFIG;
41
- case "unknown api_key":
42
- return E_KEY_FAIL;
43
- default:
44
- return E_DEFAULT;
45
- }
46
- };
47
- class DOSMediaStore {
48
- constructor() {
49
- this.fetchFunction = (input, init) => {
50
- return fetch(input, init);
51
- };
52
- this.accept = DEFAULT_MEDIA_UPLOAD_TYPES;
53
- this.parse = (img) => {
54
- return img.src;
55
- };
56
- }
57
- async persist(media) {
58
- const newFiles = [];
59
- for (const item of media) {
60
- const { file, directory } = item;
61
- const formData = new FormData();
62
- formData.append("file", file);
63
- formData.append("directory", directory);
64
- formData.append("filename", file.name);
65
- const res = await this.fetchFunction(`/api/dos/media`, {
66
- method: "POST",
67
- body: formData
68
- });
69
- if (res.status != 200) {
70
- const responseData = await res.json();
71
- throw new Error(responseData.message);
72
- }
73
- const fileRes = await res.json();
74
- await new Promise((resolve) => {
75
- setTimeout(resolve, 2e3);
76
- });
77
- newFiles.push(fileRes);
78
- }
79
- return newFiles;
80
- }
81
- async delete(media) {
82
- await this.fetchFunction(`/api/dos/media/${encodeURIComponent(media.id)}`, {
83
- method: "DELETE"
84
- });
85
- }
86
- async list(options) {
87
- const query = this.buildQuery(options);
88
- const response = await this.fetchFunction("/api/dos/media" + query);
89
- if (response.status == 401) {
90
- throw E_UNAUTHORIZED;
91
- }
92
- if (response.status == 404) {
93
- throw E_BAD_ROUTE;
94
- }
95
- if (response.status >= 500) {
96
- const { e } = await response.json();
97
- const error = interpretErrorMessage(e);
98
- throw error;
99
- }
100
- const { items, offset } = await response.json();
101
- return {
102
- items: items.map((item) => item),
103
- nextOffset: offset
104
- };
105
- }
106
- buildQuery(options) {
107
- const params = Object.keys(options).filter((key) => options[key] !== "" && options[key] !== void 0).map((key) => `${key}=${options[key]}`).join("&");
108
- return `?${params}`;
109
- }
110
- }
111
- class TinaCloudDOSMediaStore extends DOSMediaStore {
112
- constructor(client) {
113
- super();
114
- this.client = client;
115
- this.fetchFunction = async (input, init) => {
116
- try {
117
- const url = input.toString();
118
- const query = `${url.includes("?") ? "&" : "?"}clientID=${client.clientId}`;
119
- const res = client.authProvider.fetchWithToken(url + query, init);
120
- return res;
121
- } catch (error) {
122
- console.error(error);
123
- }
124
- };
125
- }
126
- }
127
- export {
128
- DOSMediaStore,
129
- TinaCloudDOSMediaStore
130
- };