next-tinacms-dos 0.0.0-8eeb2df-20241010045955 → 0.0.0-8f121d7-20250516044444

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/README.md CHANGED
@@ -92,7 +92,7 @@ Call `createMediaHandler` to set up routes and connect your instance of the Medi
92
92
 
93
93
  Import `isAuthorized` from [`@tinacms/auth`](https://github.com/tinacms/tinacms/tree/main/packages/%40tinacms/auth).
94
94
 
95
- The `authorized` key will make it so only authorized users within Tina Cloud can upload and make media edits.
95
+ The `authorized` key will make it so only authorized users within TinaCloud can upload and make media edits.
96
96
 
97
97
 
98
98
  ```
package/dist/handlers.js CHANGED
@@ -17,6 +17,10 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
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.
20
24
  isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
21
25
  mod
22
26
  ));
@@ -51,7 +55,7 @@ var createMediaHandler = (config, options) => {
51
55
  mediaRoot = mediaRoot.substr(1);
52
56
  }
53
57
  }
54
- let cdnUrl = (options == null ? void 0 : options.cdnUrl) || config.config.endpoint.toString().replace(/http(s|):\/\//i, `https://${bucket}.`);
58
+ let cdnUrl = options?.cdnUrl || config.config.endpoint.toString().replace(/http(s|):\/\//i, `https://${bucket}.`);
55
59
  cdnUrl = cdnUrl + (cdnUrl.endsWith("/") ? "" : "/");
56
60
  return async (req, res) => {
57
61
  const isAuthorized = await config.authorized(req, res);
@@ -72,10 +76,11 @@ var createMediaHandler = (config, options) => {
72
76
  };
73
77
  };
74
78
  async function uploadMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
75
- var _a;
76
79
  const upload = (0, import_util.promisify)(
77
80
  (0, import_multer.default)({
78
81
  storage: import_multer.default.diskStorage({
82
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
83
+ // @ts-ignore
79
84
  directory: (req2, file, cb) => {
80
85
  cb(null, "/tmp");
81
86
  },
@@ -88,10 +93,9 @@ async function uploadMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
88
93
  await upload(req, res);
89
94
  const { directory } = req.body;
90
95
  let prefix = directory.replace(/^\//, "").replace(/\/$/, "");
91
- if (prefix)
92
- prefix = prefix + "/";
96
+ if (prefix) prefix = prefix + "/";
93
97
  const filePath = req.file.path;
94
- const fileType = (_a = req.file) == null ? void 0 : _a.mimetype;
98
+ const fileType = req.file?.mimetype;
95
99
  const blob = import_fs.default.readFileSync(filePath);
96
100
  const filename = import_path.default.basename(filePath);
97
101
  const params = {
@@ -140,7 +144,6 @@ function stripMediaRoot(mediaRoot, key) {
140
144
  return keyParts.join("/");
141
145
  }
142
146
  async function listMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
143
- var _a;
144
147
  try {
145
148
  const {
146
149
  directory = "",
@@ -148,18 +151,17 @@ async function listMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
148
151
  offset
149
152
  } = req.query;
150
153
  let prefix = directory.replace(/^\//, "").replace(/\/$/, "");
151
- if (prefix)
152
- prefix = prefix + "/";
154
+ if (prefix) prefix = prefix + "/";
153
155
  const params = {
154
156
  Bucket: bucket,
155
157
  Delimiter: "/",
156
158
  Prefix: mediaRoot ? import_path.default.join(mediaRoot, prefix) : prefix,
157
- Marker: offset == null ? void 0 : offset.toString(),
159
+ Marker: offset?.toString(),
158
160
  MaxKeys: directory && !offset ? +limit + 1 : +limit
159
161
  };
160
162
  const response = await client.send(new import_client_s3.ListObjectsCommand(params));
161
163
  const items = [];
162
- (_a = response.CommonPrefixes) == null ? void 0 : _a.forEach(({ Prefix }) => {
164
+ response.CommonPrefixes?.forEach(({ Prefix }) => {
163
165
  const strippedPrefix = stripMediaRoot(mediaRoot, Prefix);
164
166
  if (!strippedPrefix) {
165
167
  return;
@@ -190,17 +192,18 @@ async function listMedia(req, res, client, bucket, mediaRoot, cdnUrl) {
190
192
  }
191
193
  }
192
194
  var findErrorMessage = (e) => {
193
- if (typeof e == "string")
194
- return e;
195
- if (e.message)
196
- return e.message;
197
- if (e.error && e.error.message)
198
- return e.error.message;
195
+ if (typeof e == "string") return e;
196
+ if (e.message) return e.message;
197
+ if (e.error && e.error.message) return e.error.message;
199
198
  return "an error occurred";
200
199
  };
201
200
  async function deleteAsset(req, res, client, bucket) {
202
201
  const { media } = req.query;
203
- const [, objectKey] = media;
202
+ let [, objectKey] = media;
203
+ const objectKeyIsSplit = media && media.length > 2 && typeof media !== "string";
204
+ if (objectKeyIsSplit) {
205
+ objectKey = media.slice(1).join("/");
206
+ }
204
207
  const params = {
205
208
  Bucket: bucket,
206
209
  Key: objectKey
package/dist/index.js CHANGED
@@ -131,3 +131,4 @@
131
131
  exports2.TinaCloudDOSMediaStore = TinaCloudDOSMediaStore;
132
132
  Object.defineProperty(exports2, Symbol.toStringTag, { value: "Module" });
133
133
  });
134
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../src/errors.ts","../src/dos-media-store.ts","../src/dos-tina-cloud-media-store.ts"],"sourcesContent":["/**\n\n*/\n\ninterface MediaListErrorConfig {\n title: string;\n message: string;\n docsLink: string;\n}\n\nclass MediaListError extends Error {\n public ERR_TYPE = 'MediaListError';\n public title: string;\n public docsLink: string;\n\n constructor(config: MediaListErrorConfig) {\n super(config.message);\n this.title = config.title;\n this.docsLink = config.docsLink;\n }\n}\nexport const E_DEFAULT = new MediaListError({\n title: 'An Error Occurred',\n message: 'Something went wrong fetching your media from Digital Ocean Space.',\n docsLink: 'https://tina.io/packages/next-tinacms-dos',\n});\n\nexport const E_UNAUTHORIZED = new MediaListError({\n title: 'Unauthorized',\n message: \"You don't have access to this resource.\",\n docsLink: 'https://tina.io/packages/next-tinacms-dos',\n});\n\nexport const E_CONFIG = new MediaListError({\n title: 'Missing Credentials',\n message:\n 'Unable to connect to Digital Ocean Space because one or more environment variables are missing.',\n docsLink: 'https://tina.io/docs/media-dos/',\n});\n\nexport const E_KEY_FAIL = new MediaListError({\n title: 'Bad Credentials',\n message:\n 'Unable to connect to Digital Ocean Space because one or more environment variables are misconfigured.',\n docsLink: 'https://tina.io/docs/media-dos/',\n});\n\nexport const E_BAD_ROUTE = new MediaListError({\n title: 'Bad Route',\n message: 'The Digital Ocean Space API route is missing or misconfigured.',\n docsLink: 'https://tina.io/packages/next-tinacms-dos/#set-up-api-routes',\n});\n\nexport const interpretErrorMessage = (message: string) => {\n switch (message) {\n case 'Must supply cloud_name':\n case 'Must supply api_key':\n case 'Must supply api_secret':\n return E_CONFIG;\n case 'unknown api_key':\n return E_KEY_FAIL;\n default:\n return E_DEFAULT;\n }\n};\n","import type {\n Media,\n MediaList,\n MediaListOptions,\n MediaStore,\n MediaUploadOptions,\n} from 'tinacms';\nimport { DEFAULT_MEDIA_UPLOAD_TYPES } from 'tinacms';\n\nimport { E_UNAUTHORIZED, E_BAD_ROUTE, interpretErrorMessage } from './errors';\n\nexport class DOSMediaStore implements MediaStore {\n fetchFunction = (input: RequestInfo, init?: RequestInit) => {\n return fetch(input, init);\n };\n accept = DEFAULT_MEDIA_UPLOAD_TYPES;\n\n async persist(media: MediaUploadOptions[]): Promise<Media[]> {\n const newFiles: Media[] = [];\n\n for (const item of media) {\n const { file, directory } = item;\n const formData = new FormData();\n formData.append('file', file);\n formData.append('directory', directory);\n formData.append('filename', file.name);\n\n const res = await this.fetchFunction(`/api/dos/media`, {\n method: 'POST',\n body: formData,\n });\n\n if (res.status != 200) {\n const responseData = await res.json();\n throw new Error(responseData.message);\n }\n const fileRes = await res.json();\n /**\n * Images uploaded to Digital Ocean Space aren't instantly available via the API;\n * waiting a couple seconds here seems to ensure they show up in the next fetch.\n */\n await new Promise((resolve) => {\n setTimeout(resolve, 2000);\n });\n /**\n * Format the response from Digital Ocean Space to match Media interface\n * Valid Digital Ocean Space `resource_type` values: `image`, `video`, `raw` and `auto`\n * uploading a directory is not supported as such, type is defaulted to `file`\n * https://dos.com/documentation/upload_images#uploading_with_a_direct_call_to_the_rest_api\n */\n\n newFiles.push(fileRes);\n }\n return newFiles;\n }\n async delete(media: Media) {\n await this.fetchFunction(`/api/dos/media/${encodeURIComponent(media.id)}`, {\n method: 'DELETE',\n });\n }\n async list(options: MediaListOptions): Promise<MediaList> {\n const query = this.buildQuery(options);\n const response = await this.fetchFunction('/api/dos/media' + query);\n\n if (response.status == 401) {\n throw E_UNAUTHORIZED;\n }\n if (response.status == 404) {\n throw E_BAD_ROUTE;\n }\n if (response.status >= 500) {\n const { e } = await response.json();\n const error = interpretErrorMessage(e);\n throw error;\n }\n const { items, offset } = await response.json();\n return {\n items: items.map((item) => item),\n nextOffset: offset,\n };\n }\n\n parse = (img) => {\n return img.src;\n };\n\n private buildQuery(options: MediaListOptions) {\n const params = Object.keys(options)\n .filter((key) => options[key] !== '' && options[key] !== undefined)\n .map((key) => `${key}=${options[key]}`)\n .join('&');\n\n return `?${params}`;\n }\n}\n","/**\n\n*/\n\nimport { DOSMediaStore } from './dos-media-store';\nimport type { Client } from 'tinacms';\n\nexport class TinaCloudDOSMediaStore extends DOSMediaStore {\n client: Client;\n constructor(client: Client) {\n super();\n this.client = client;\n this.fetchFunction = async (input: RequestInfo, init?: RequestInit) => {\n try {\n const url = input.toString();\n const query = `${url.includes('?') ? '&' : '?'}clientID=${\n client.clientId\n }`;\n\n const res = client.authProvider.fetchWithToken(url + query, init);\n return res;\n } catch (error) {\n console.error(error);\n }\n };\n }\n}\n"],"names":["DEFAULT_MEDIA_UPLOAD_TYPES"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -128,3 +128,4 @@ export {
128
128
  DOSMediaStore,
129
129
  TinaCloudDOSMediaStore
130
130
  };
131
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../src/errors.ts","../src/dos-media-store.ts","../src/dos-tina-cloud-media-store.ts"],"sourcesContent":["/**\n\n*/\n\ninterface MediaListErrorConfig {\n title: string;\n message: string;\n docsLink: string;\n}\n\nclass MediaListError extends Error {\n public ERR_TYPE = 'MediaListError';\n public title: string;\n public docsLink: string;\n\n constructor(config: MediaListErrorConfig) {\n super(config.message);\n this.title = config.title;\n this.docsLink = config.docsLink;\n }\n}\nexport const E_DEFAULT = new MediaListError({\n title: 'An Error Occurred',\n message: 'Something went wrong fetching your media from Digital Ocean Space.',\n docsLink: 'https://tina.io/packages/next-tinacms-dos',\n});\n\nexport const E_UNAUTHORIZED = new MediaListError({\n title: 'Unauthorized',\n message: \"You don't have access to this resource.\",\n docsLink: 'https://tina.io/packages/next-tinacms-dos',\n});\n\nexport const E_CONFIG = new MediaListError({\n title: 'Missing Credentials',\n message:\n 'Unable to connect to Digital Ocean Space because one or more environment variables are missing.',\n docsLink: 'https://tina.io/docs/media-dos/',\n});\n\nexport const E_KEY_FAIL = new MediaListError({\n title: 'Bad Credentials',\n message:\n 'Unable to connect to Digital Ocean Space because one or more environment variables are misconfigured.',\n docsLink: 'https://tina.io/docs/media-dos/',\n});\n\nexport const E_BAD_ROUTE = new MediaListError({\n title: 'Bad Route',\n message: 'The Digital Ocean Space API route is missing or misconfigured.',\n docsLink: 'https://tina.io/packages/next-tinacms-dos/#set-up-api-routes',\n});\n\nexport const interpretErrorMessage = (message: string) => {\n switch (message) {\n case 'Must supply cloud_name':\n case 'Must supply api_key':\n case 'Must supply api_secret':\n return E_CONFIG;\n case 'unknown api_key':\n return E_KEY_FAIL;\n default:\n return E_DEFAULT;\n }\n};\n","import type {\n Media,\n MediaList,\n MediaListOptions,\n MediaStore,\n MediaUploadOptions,\n} from 'tinacms';\nimport { DEFAULT_MEDIA_UPLOAD_TYPES } from 'tinacms';\n\nimport { E_UNAUTHORIZED, E_BAD_ROUTE, interpretErrorMessage } from './errors';\n\nexport class DOSMediaStore implements MediaStore {\n fetchFunction = (input: RequestInfo, init?: RequestInit) => {\n return fetch(input, init);\n };\n accept = DEFAULT_MEDIA_UPLOAD_TYPES;\n\n async persist(media: MediaUploadOptions[]): Promise<Media[]> {\n const newFiles: Media[] = [];\n\n for (const item of media) {\n const { file, directory } = item;\n const formData = new FormData();\n formData.append('file', file);\n formData.append('directory', directory);\n formData.append('filename', file.name);\n\n const res = await this.fetchFunction(`/api/dos/media`, {\n method: 'POST',\n body: formData,\n });\n\n if (res.status != 200) {\n const responseData = await res.json();\n throw new Error(responseData.message);\n }\n const fileRes = await res.json();\n /**\n * Images uploaded to Digital Ocean Space aren't instantly available via the API;\n * waiting a couple seconds here seems to ensure they show up in the next fetch.\n */\n await new Promise((resolve) => {\n setTimeout(resolve, 2000);\n });\n /**\n * Format the response from Digital Ocean Space to match Media interface\n * Valid Digital Ocean Space `resource_type` values: `image`, `video`, `raw` and `auto`\n * uploading a directory is not supported as such, type is defaulted to `file`\n * https://dos.com/documentation/upload_images#uploading_with_a_direct_call_to_the_rest_api\n */\n\n newFiles.push(fileRes);\n }\n return newFiles;\n }\n async delete(media: Media) {\n await this.fetchFunction(`/api/dos/media/${encodeURIComponent(media.id)}`, {\n method: 'DELETE',\n });\n }\n async list(options: MediaListOptions): Promise<MediaList> {\n const query = this.buildQuery(options);\n const response = await this.fetchFunction('/api/dos/media' + query);\n\n if (response.status == 401) {\n throw E_UNAUTHORIZED;\n }\n if (response.status == 404) {\n throw E_BAD_ROUTE;\n }\n if (response.status >= 500) {\n const { e } = await response.json();\n const error = interpretErrorMessage(e);\n throw error;\n }\n const { items, offset } = await response.json();\n return {\n items: items.map((item) => item),\n nextOffset: offset,\n };\n }\n\n parse = (img) => {\n return img.src;\n };\n\n private buildQuery(options: MediaListOptions) {\n const params = Object.keys(options)\n .filter((key) => options[key] !== '' && options[key] !== undefined)\n .map((key) => `${key}=${options[key]}`)\n .join('&');\n\n return `?${params}`;\n }\n}\n","/**\n\n*/\n\nimport { DOSMediaStore } from './dos-media-store';\nimport type { Client } from 'tinacms';\n\nexport class TinaCloudDOSMediaStore extends DOSMediaStore {\n client: Client;\n constructor(client: Client) {\n super();\n this.client = client;\n this.fetchFunction = async (input: RequestInfo, init?: RequestInit) => {\n try {\n const url = input.toString();\n const query = `${url.includes('?') ? '&' : '?'}clientID=${\n client.clientId\n }`;\n\n const res = client.authProvider.fetchWithToken(url + query, init);\n return res;\n } catch (error) {\n console.error(error);\n }\n };\n }\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-tinacms-dos",
3
- "version": "0.0.0-8eeb2df-20241010045955",
3
+ "version": "0.0.0-8f121d7-20250516044444",
4
4
  "main": "dist/index.js",
5
5
  "module": "dist/index.mjs",
6
6
  "files": [
@@ -18,18 +18,18 @@
18
18
  ]
19
19
  },
20
20
  "peerDependencies": {
21
- "tinacms": "0.0.0-8eeb2df-20241010045955"
21
+ "tinacms": "0.0.0-8f121d7-20250516044444"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/crypto-js": "^3.1.47",
25
25
  "@types/js-cookie": "^2.2.7",
26
- "@types/node": "^22.7.4",
26
+ "@types/node": "^22.13.1",
27
27
  "next": "14.2.10",
28
28
  "react": "^18.3.1",
29
29
  "react-dom": "^18.3.1",
30
- "typescript": "^5.6.2",
31
- "@tinacms/scripts": "0.0.0-8eeb2df-20241010045955",
32
- "tinacms": "0.0.0-8eeb2df-20241010045955"
30
+ "typescript": "^5.7.3",
31
+ "@tinacms/scripts": "0.0.0-8f121d7-20250516044444",
32
+ "tinacms": "0.0.0-8f121d7-20250516044444"
33
33
  },
34
34
  "publishConfig": {
35
35
  "registry": "https://registry.npmjs.org"
@@ -39,7 +39,7 @@
39
39
  "directory": "packages/next-tinacms-dos"
40
40
  },
41
41
  "dependencies": {
42
- "@aws-sdk/client-s3": "^3.658.1",
42
+ "@aws-sdk/client-s3": "^3.744.0",
43
43
  "multer": "1.4.5-lts.1"
44
44
  },
45
45
  "scripts": {