drapcode-utility 2.4.8 → 2.5.0-preview

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.
@@ -40,4 +40,8 @@ export declare const removeProjectFromFile: (project: Project) => void;
40
40
  * @throws {ProjectError} If file operations fail
41
41
  */
42
42
  export declare const clearProjectSubfolder: (projectId: string, subfolder: string) => void;
43
+ export declare const clearProjectFilesInSubfolder: (projectId: string, subfolder: string, files: {
44
+ uuid: string;
45
+ slug?: string;
46
+ }[]) => void;
43
47
  export {};
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.clearProjectSubfolder = exports.removeProjectFromFile = exports.findProjectFromFile = exports.saveProjectToFile = void 0;
6
+ exports.clearProjectFilesInSubfolder = exports.clearProjectSubfolder = exports.removeProjectFromFile = exports.findProjectFromFile = exports.saveProjectToFile = void 0;
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = __importDefault(require("path"));
9
9
  const file_util_1 = require("./file-util");
@@ -146,7 +146,7 @@ const clearProjectSubfolder = (projectId, subfolder) => {
146
146
  throw new ProjectError("Sub Folder is required");
147
147
  }
148
148
  try {
149
- if ((0, file_util_1.verifyProjectSettingFolder)(projectId)) {
149
+ if (!(0, file_util_1.verifyProjectSettingFolder)(projectId)) {
150
150
  return;
151
151
  }
152
152
  const projectPath = path_1.default.join(filePath, `${PROJECT_PREFIX}${projectId}`, subfolder);
@@ -159,6 +159,59 @@ const clearProjectSubfolder = (projectId, subfolder) => {
159
159
  }
160
160
  };
161
161
  exports.clearProjectSubfolder = clearProjectSubfolder;
162
+ const clearProjectFilesInSubfolder = (projectId, subfolder, files) => {
163
+ if (!projectId) {
164
+ throw new ProjectError("Project ID is required");
165
+ }
166
+ if (!subfolder) {
167
+ throw new ProjectError("Sub Folder is required");
168
+ }
169
+ if (!Array.isArray(files)) {
170
+ throw new ProjectError("Files must be an array");
171
+ }
172
+ try {
173
+ if (!(0, file_util_1.verifyProjectSettingFolder)(projectId)) {
174
+ console.log("Project settings folder does not exist — skipping delete.");
175
+ return;
176
+ }
177
+ const projectPath = path_1.default.join(filePath, `${PROJECT_PREFIX}${projectId}`, subfolder);
178
+ const useSlug = subfolder === "pages";
179
+ deleteFilesInTheSubFolder(projectPath, files, useSlug);
180
+ }
181
+ catch (error) {
182
+ const message = error instanceof Error ? error.message : "Unknown error";
183
+ console.error("Failed to delete files:", message);
184
+ throw new ProjectError(`Failed to delete files: ${message}`);
185
+ }
186
+ };
187
+ exports.clearProjectFilesInSubfolder = clearProjectFilesInSubfolder;
188
+ const deleteFilesInTheSubFolder = (folderPath, files, useSlug = false) => {
189
+ for (const file of files) {
190
+ let fileName;
191
+ if (useSlug) {
192
+ fileName = file.name ? `${file.name}.json`.toLowerCase() : undefined;
193
+ }
194
+ else {
195
+ fileName = file.uuid ? `${file.uuid}.json` : undefined;
196
+ }
197
+ if (!fileName) {
198
+ console.log("Invalid file, skipping:", file);
199
+ continue;
200
+ }
201
+ const filePathToDelete = path_1.default.join(folderPath, fileName);
202
+ if ((0, fs_1.existsSync)(filePathToDelete)) {
203
+ try {
204
+ (0, fs_1.unlinkSync)(filePathToDelete);
205
+ }
206
+ catch (err) {
207
+ console.error("Failed to delete file:", filePathToDelete, err);
208
+ }
209
+ }
210
+ else {
211
+ console.log("File not found, skipping:", filePathToDelete);
212
+ }
213
+ }
214
+ };
162
215
  // Helper functions
163
216
  const verifyProjectsFolder = () => {
164
217
  const projectPath = path_1.default.join(filePath, PROJECTS_FOLDER);
@@ -408,19 +408,21 @@ const parseJsonString = (str) => {
408
408
  exports.parseJsonString = parseJsonString;
409
409
  const parseValueFromData = (data, fieldName) => {
410
410
  let value = "";
411
+ let valueIndex = "";
412
+ let valueIndexFieldName = "";
411
413
  if (fieldName && fieldName.includes(".")) {
412
414
  let fullNameParts = fieldName.split(".");
413
415
  let prefix = "";
414
- let stack = data || "";
416
+ let stack = data || {};
415
417
  for (let k = 0; k < fullNameParts.length; k++) {
416
418
  prefix = fullNameParts[k];
417
- if (Array.isArray(stack)) {
419
+ if (stack && Array.isArray(stack)) {
418
420
  stack[prefix] = stack.map((item) => {
419
421
  if (item[prefix])
420
422
  return item[prefix];
421
423
  });
422
424
  }
423
- if (stack && stack[prefix] === undefined) {
425
+ if (stack && !stack[prefix]) {
424
426
  stack[prefix] = "";
425
427
  }
426
428
  stack = stack[prefix];
@@ -430,14 +432,57 @@ const parseValueFromData = (data, fieldName) => {
430
432
  value = value.filter(() => true);
431
433
  }
432
434
  }
435
+ else if (fieldName && fieldName.includes("[")) {
436
+ //Todo: Need to Refactor
437
+ let fullNameParts = fieldName.split("[");
438
+ let prefix = "";
439
+ let stack = data || {};
440
+ for (let k = 0; k < fullNameParts.length - 1; k++) {
441
+ const cValue = fullNameParts[k];
442
+ const nValue = fullNameParts[k + 1];
443
+ prefix = cValue ? (!cValue.includes("]") ? cValue : "") : "";
444
+ valueIndex = nValue
445
+ ? nValue.includes("]")
446
+ ? nValue.split("]")[0]
447
+ : nValue
448
+ : "";
449
+ if (stack && Array.isArray(stack)) {
450
+ stack[prefix] = stack.map((item) => {
451
+ if (item[prefix])
452
+ return item[prefix];
453
+ });
454
+ }
455
+ if (stack && !stack[prefix]) {
456
+ stack[prefix] = "";
457
+ }
458
+ stack = valueIndex ? stack[prefix][valueIndex] : stack[prefix];
459
+ if (fieldName.includes("]:")) {
460
+ valueIndexFieldName = nValue.split("]:")[1];
461
+ if (valueIndexFieldName) {
462
+ stack = stack[valueIndexFieldName];
463
+ }
464
+ }
465
+ }
466
+ value = stack ? stack : "";
467
+ if (Array.isArray(value)) {
468
+ value = value.filter(() => true);
469
+ }
470
+ }
433
471
  else {
434
472
  value = data ? data[fieldName] : "";
435
473
  }
474
+ if (value && Array.isArray(value) && value.length === 1)
475
+ return value[0];
436
476
  if (value && Array.isArray(value) && typeof value[0] === "string") {
437
- return value.join(", ");
477
+ return value.join(",");
438
478
  }
439
- if (typeof value !== undefined && typeof value === "number") {
440
- return value.toString();
479
+ if (!value || value == "undefined" || value === "undefined") {
480
+ if (value === 0) {
481
+ value = "0";
482
+ }
483
+ else {
484
+ value = "";
485
+ }
441
486
  }
442
487
  return value;
443
488
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "drapcode-utility",
3
- "version": "2.4.8",
3
+ "version": "2.5.0-preview",
4
4
  "description": "DrapCode Utility",
5
5
  "main": "build/index.js",
6
6
  "types": "build/index.d.ts",
@@ -42,9 +42,9 @@
42
42
  "axios": "^1.1.2",
43
43
  "date-fns": "^4.1.0",
44
44
  "dompurify": "^3.1.7",
45
- "drapcode-constant": "^2.0.1",
46
- "drapcode-logger": "^1.3.5",
47
- "drapcode-redis": "^1.4.8",
45
+ "drapcode-constant": "^2.0.2-preview",
46
+ "drapcode-logger": "^1.3.5-preview",
47
+ "drapcode-redis": "^1.4.9-preview",
48
48
  "exiftool-vendored": "^28.2.1",
49
49
  "express": "^4.17.1",
50
50
  "gm": "^1.25.0",