@sanvika/cloudinary 0.2.2 → 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.
Files changed (2) hide show
  1. package/dist/index.js +13 -4
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -228,6 +228,13 @@ async function getAppName() {
228
228
  await ensureConfigured();
229
229
  return _appName;
230
230
  }
231
+ function stripAppPrefix(folder, appName) {
232
+ if (!folder || !appName) return folder || "";
233
+ const prefix = `${appName}/`;
234
+ if (folder === appName) return "";
235
+ if (folder.startsWith(prefix)) return folder.slice(prefix.length);
236
+ return folder;
237
+ }
231
238
  async function uploadImage(fileOrBuffer, options = {}) {
232
239
  await ensureConfigured();
233
240
  const {
@@ -247,8 +254,9 @@ async function uploadImage(fileOrBuffer, options = {}) {
247
254
  maxAttempts = 3
248
255
  } = options;
249
256
  const eagerValue = eager || transforms;
257
+ const normalizedFolder = stripAppPrefix(folder || "", _appName);
250
258
  const uploadOptions = {
251
- folder: folder || "",
259
+ folder: normalizedFolder,
252
260
  resourceType,
253
261
  tags: [_appName, ...tags],
254
262
  eager: eagerValue,
@@ -268,7 +276,7 @@ async function uploadImage(fileOrBuffer, options = {}) {
268
276
  });
269
277
  }
270
278
  const cloudinary = await loadLegacyCloudinary();
271
- const uploadFolder = getFolderPath(_appName, folder);
279
+ const uploadFolder = getFolderPath(_appName, normalizedFolder);
272
280
  const uploadOpts = {
273
281
  folder: uploadFolder,
274
282
  resource_type: resourceType,
@@ -321,14 +329,15 @@ async function uploadRawFile(buffer, options = {}) {
321
329
  const { folder, filename, tags = [] } = options;
322
330
  if (!buffer || !Buffer.isBuffer(buffer)) throw new Error("Buffer is required for uploadRawFile");
323
331
  const baseName = filename ? filename.replace(/\.[^.]+$/, "") : "file";
332
+ const normalizedFolder = stripAppPrefix(folder || "", _appName);
324
333
  if (isProxyMode()) {
325
334
  return withRetry(
326
- () => gatewayUpload(buffer, { folder: folder || "", resourceType: "raw", tags: ["raw", _appName, ...tags], publicId: baseName, overwrite: true, filename }),
335
+ () => gatewayUpload(buffer, { folder: normalizedFolder, resourceType: "raw", tags: ["raw", _appName, ...tags], publicId: baseName, overwrite: true, filename }),
327
336
  { operationName: "uploadRawFile", maxAttempts: 3 }
328
337
  );
329
338
  }
330
339
  const cloudinary = await loadLegacyCloudinary();
331
- const uploadFolder = getFolderPath(_appName, folder);
340
+ const uploadFolder = getFolderPath(_appName, normalizedFolder);
332
341
  return withRetry(
333
342
  () => new Promise((resolve, reject) => {
334
343
  const stream = cloudinary.uploader.upload_stream(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sanvika/cloudinary",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "Centralized Cloudinary SDK for the Sanvika ecosystem — proxy gateway mode (zero credentials) + legacy direct mode",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",