@7365admin1/layer-common 4.2.5-staging.272 → 4.2.5

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 (39) hide show
  1. package/CHANGELOG.md +19 -4
  2. package/components/AddPassKeyToVisitor.vue +1 -0
  3. package/components/AttendanceCheckInOutDialog.vue +1 -0
  4. package/components/AttendanceMain.vue +1 -0
  5. package/components/BtnUploadFile.vue +3 -1
  6. package/components/BuildingForm.vue +1 -0
  7. package/components/BuildingUnitFormEdit.vue +1 -0
  8. package/components/BulletinBoardManagement.vue +1 -1
  9. package/components/CameraForm.vue +1 -0
  10. package/components/CameraMain.vue +1 -0
  11. package/components/Carousel.vue +1 -0
  12. package/components/Chat/Information.vue +1 -1
  13. package/components/Chat/Message.vue +1 -2
  14. package/components/DrawImage.vue +1 -0
  15. package/components/Facility/BookingSetup.vue +2 -1
  16. package/components/FeedbackDetail.vue +2 -1
  17. package/components/FeedbackMain.vue +2 -0
  18. package/components/Input/File.vue +6 -1
  19. package/components/PasswordConfirmation.vue +1 -1
  20. package/components/ScanVisitorQRCode.vue +2 -0
  21. package/components/ServiceProviderMain.vue +2 -0
  22. package/components/SiteSettings.vue +2 -0
  23. package/components/VisitorForm.vue +18 -2
  24. package/components/VisitorManagement.vue +1 -1
  25. package/components/VisitorPassKeyQRScanner.vue +1 -0
  26. package/components/WorkOrder/Detail.vue +2 -1
  27. package/components/WorkOrder/Main.vue +1 -1
  28. package/composables/useComment.ts +1 -1
  29. package/composables/useKey.ts +3 -0
  30. package/composables/usePassKey.ts +1 -0
  31. package/composables/useRole.ts +1 -1
  32. package/composables/useUploadFiles.ts +1 -1
  33. package/composables/useUtils.ts +2 -1
  34. package/composables/useVerification.ts +1 -0
  35. package/composables/useWebUsb.ts +10 -0
  36. package/middleware/01.auth.ts +1 -0
  37. package/middleware/02.org.ts +2 -0
  38. package/package.json +1 -1
  39. package/plugins/vuetify.ts +2 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # @iservice365/layer-common
2
2
 
3
+ ## 4.2.5
4
+
5
+ ### Patch Changes
6
+
7
+ - 7a6cc0f: Vehicle form: name a block/level/unit the picker cannot offer, instead of showing its id.
8
+
9
+ The Season Pass edit dialog fetches its record with a plain findOne, so block,
10
+ level and unit arrive as raw ids. The vehicle LIST already resolves those names
11
+ server-side, so the list row's names are handed down to the dialog. A value that
12
+ is no longer selectable now reads "Tower Ten (no longer selectable)"; a value no
13
+ name exists for reads a plain sentence and logs the id for support. A Mongo id
14
+ is never rendered. The stored value is untouched.
15
+
16
+ - bc4355f: Vehicle form: closing the "Matching Records" picker with the header X no longer clears a Unit the user had already chosen. Block / Level / Unit no longer render a raw Mongo ObjectId when the id is not in the site's list — a deleted building unit now says so instead. Also removes a stray `console.log` from the bulletin board form that shipped to the browser on every render.
17
+
3
18
  ## 4.2.4
4
19
 
5
20
  ### Patch Changes
@@ -492,11 +507,11 @@
492
507
  `utils/console-tier.ts` + `composables/useConsoleTier.ts` mirror the server's
493
508
  own rule from two endpoints the console already calls, unprojected:
494
509
 
495
- GET /api/members/user/:user/app/admin the Seven365 staff membership
496
- GET /api/roles/id/:role that membership's role document
510
+ GET /api/members/user/:user/app/admin the Seven365 staff membership
511
+ GET /api/roles/id/:role that membership's role document
497
512
 
498
- owner = member.type === "admin" && role.type === "admin" && role.default === true
499
- staff = member.type === "admin" && role.type === "admin"
513
+ owner = member.type === "admin" && role.type === "admin" && role.default === true
514
+ staff = member.type === "admin" && role.type === "admin"
500
515
 
501
516
  `role.default` is the marker because it is the only property of a platform
502
517
  staff role no API caller can set - `role.controller.ts` validates create and
@@ -355,6 +355,7 @@ watch(
355
355
  );
356
356
 
357
357
  keyItems.value = [...filteredRawKeys, ...manuallyRemovedKeys];
358
+ console.log("keyItems: ", keyItems.value);
358
359
  },
359
360
  { deep: true, immediate: true }
360
361
  );
@@ -189,6 +189,7 @@ const openCamera = async () => {
189
189
 
190
190
  try {
191
191
  await videoElement.value.play();
192
+ console.log("Camera preview started successfully");
192
193
  } catch (playErr) {
193
194
  console.error("Error playing video:", playErr);
194
195
  throw playErr;
@@ -154,6 +154,7 @@ async function handleRowClick(data: any) {
154
154
  }
155
155
 
156
156
  const onSettingsSaved = async (payload: any) => {
157
+ console.log("Settings saved:", payload);
157
158
  // TODO: Implement API call to save settings
158
159
  await getAttendancesRefresh();
159
160
  };
@@ -104,8 +104,10 @@ async function uploadAttachment(e: Event) {
104
104
  value.value = res.id as string;
105
105
  await emit("upload", res);
106
106
  } catch (error) {
107
- console.error(error);
107
+ console.log(error);
108
108
  }
109
+ } else {
110
+ console.log("No file selected");
109
111
  }
110
112
  loading.value = false;
111
113
  }
@@ -414,6 +414,7 @@ async function submit() {
414
414
 
415
415
  if (prop.mode === "edit") {
416
416
 
417
+ console.log('Updating building with levels:', building.value.levels);
417
418
 
418
419
  if (JSON.stringify(initialBuildingLevels.value) !== JSON.stringify(building.value.levels)) {
419
420
  await batchUpdateLevels(building.value.levels as { _id: string; name: string }[]);
@@ -535,6 +535,7 @@ async function submit() {
535
535
  const handleUpdateOwner = async ({ person, isOwner }: { person: TPeople; isOwner: boolean }) => {
536
536
  const owners = peopleItems.value.filter(p => p.isOwner)
537
537
  message.value = ""
538
+ // console.log('Updating owner status for', person._id, 'to', isOwner)
538
539
 
539
540
  const userId = person._id ?? null;
540
541
 
@@ -304,7 +304,7 @@ async function handleProceedDeleteAnnouncement() {
304
304
  }
305
305
  } catch (error: any) {
306
306
  const errorMessage = error?.response?._data?.message;
307
- console.error("[ERROR]", error);
307
+ console.log("[ERROR]", error);
308
308
  showMessage(
309
309
  errorMessage || "Something went wrong. Please try again later.",
310
310
  "error"
@@ -288,6 +288,7 @@ camera.value.site = prop.site;
288
288
  if (prop.mode === "edit") {
289
289
  camera.value = JSON.parse(JSON.stringify(prop.camera));
290
290
  }
291
+ console.log("prop.camera", prop?.camera);
291
292
  camera.value.site = prop.site;
292
293
  camera.value.type = prop.type;
293
294
  camera.value.category =
@@ -521,6 +521,7 @@ const camera = ref<TSiteCamera>({
521
521
  });
522
522
 
523
523
  function handleRowClick(_: any, data: any) {
524
+ console.log("row clicked", data.item);
524
525
  dialogPreview.value = true;
525
526
  camera.value = JSON.parse(JSON.stringify(data.item));
526
527
  }
@@ -305,6 +305,7 @@ watchEffect(async (onCleanup) => {
305
305
  isConverting.value = false;
306
306
  // Replace the entire array at once to avoid "doubling" or partial updates
307
307
  mediaItems.value = newMediaItems;
308
+ console.log("watchEffect mediaItems updated:", mediaItems.value);
308
309
  }
309
310
  });
310
311
 
@@ -354,7 +354,7 @@ async function deleteFile(value: string) {
354
354
  (file) => file !== value
355
355
  );
356
356
  } catch (error) {
357
- console.error(error);
357
+ console.log(error);
358
358
  showMessage("Failed to delete file", "error");
359
359
  }
360
360
  }
@@ -154,9 +154,8 @@ const quickChatOptions = [
154
154
  "We are here to help.",
155
155
  ];
156
156
 
157
- // Placeholder: choosing a quick-chat option is not wired to anything yet.
158
157
  const selectQuickChat = (msg: string) => {
159
- void msg;
158
+ console.log("Quick Chat Selected:", msg);
160
159
  };
161
160
  </script>
162
161
 
@@ -152,6 +152,7 @@ async function draw(e: any) {
152
152
  const submit = () => {
153
153
  canvas.toBlob((blob: any) => {
154
154
  const url = URL.createObjectURL(blob);
155
+ console.log("URL", url);
155
156
 
156
157
  emit("onSubmit", url, props.imageIdx!);
157
158
  });
@@ -939,7 +939,7 @@ const upsertChecklist = () => {
939
939
  } else if (Array.isArray(facility.value.securityCheckList)) {
940
940
  facility.value.securityCheckList.push(newItem);
941
941
  } else {
942
- console.error("Error in adding security checklist");
942
+ console.log("Error in adding security checklist");
943
943
  }
944
944
  } else {
945
945
  isEditing.value = false;
@@ -981,6 +981,7 @@ const confirmRemarks = () => {
981
981
  };
982
982
 
983
983
  const deleteChecklist = (index: string) => {
984
+ console.log("delete checklist", index);
984
985
  selectedIndex.value = index;
985
986
  isDeleteItem.value = true;
986
987
  };
@@ -330,6 +330,7 @@ async function handleCompletionFileAdded(file: File) {
330
330
  // }
331
331
  // }
332
332
 
333
+ console.log("completionAttachments.value", completionAttachments.value);
333
334
  } catch (error) {
334
335
  console.error("Error uploading completion file:", error);
335
336
  showMessage("Failed to upload file", "error");
@@ -346,7 +347,7 @@ async function handleCompletionFileDeleted(value: string) {
346
347
  (file) => file !== value
347
348
  );
348
349
  } catch (error) {
349
- console.error(error);
350
+ console.log(error);
350
351
  showMessage("Failed to delete file", "error");
351
352
  }
352
353
  }
@@ -927,6 +927,7 @@ const { addFile, deleteFile: _deleteFile } = useFile();
927
927
  // (file) => file !== value
928
928
  // );
929
929
  // } catch (error) {
930
+ // console.log(error);
930
931
  // showMessage("Failed to delete file", "error");
931
932
  // }
932
933
  // }
@@ -942,6 +943,7 @@ const categories = computed(() =>
942
943
  );
943
944
 
944
945
  function tableRowClickHandler(_: any, data: any) {
946
+ // console.log(data.item);
945
947
  selectedFeedback.value = data.item;
946
948
  dialogPreview.value = true;
947
949
  }
@@ -168,6 +168,10 @@ function selectAttachment() {
168
168
 
169
169
  function onFileChange() {
170
170
  if (files.value.length) {
171
+ console.log(
172
+ "onFileChange triggered with files:",
173
+ files.value.map((f) => f.name)
174
+ );
171
175
 
172
176
  const maxFiles = props.maxFiles || 5;
173
177
  if (files.value.length > maxFiles) {
@@ -177,6 +181,7 @@ function onFileChange() {
177
181
  }
178
182
 
179
183
  files.value.forEach((file) => {
184
+ console.log(`Emitting 'add' event for file: ${file.name}`);
180
185
  // For each file, we'll also need to store its original name
181
186
  // This will be associated with the file URL in the parent component
182
187
  emit("add", file);
@@ -187,7 +192,7 @@ function onFileChange() {
187
192
  }
188
193
 
189
194
  function onImageError(file: string) {
190
- console.error(`Image error for file: ${file}`);
195
+ console.log(`Image error for file: ${file}`);
191
196
  emit("errored", file);
192
197
  }
193
198
 
@@ -97,7 +97,7 @@ async function handleConfirm() {
97
97
 
98
98
  } catch (err: any) {
99
99
  const errMessage = err?.response?._data?.message || 'Something went wrong. Please try again.';
100
- console.error('[ERROR]', err)
100
+ console.log('[ERROR]', err)
101
101
  errorMessage.value = errMessage;
102
102
  } finally {
103
103
  processingPassword.value = false;
@@ -77,6 +77,8 @@ const showNotFoundMessage = ref<boolean>(false);
77
77
  const errorMessage = ref<string>("");
78
78
 
79
79
  const handleScanVisitorQRCode = async () => {
80
+ console.log("startScanner cameraFacingMode", cameraFacingMode.value);
81
+ console.log("STARTING QR Code Scanner...");
80
82
  if (html5QrCodeInstance.value) return;
81
83
  const config = { fps: 10, qrbox: { width: 250, height: 250 } };
82
84
  html5QrCodeInstance.value = new $Html5Qrcode("reader");
@@ -929,6 +929,7 @@ if (!user?._id) return;
929
929
  siteId: props.siteId,
930
930
  });
931
931
 
932
+ console.log("serviceProviders", serviceProviders);
932
933
 
933
934
  if (serviceProviders?.length) {
934
935
  messageServiceProvider.value =
@@ -979,6 +980,7 @@ const canSubmitInvite = computed(() => {
979
980
  watch(
980
981
  () => serviceProviderInvite.value.email,
981
982
  async (value) => {
983
+ console.log("typing:", value);
982
984
  await checkExistingAccount(value);
983
985
  }
984
986
  );
@@ -410,6 +410,7 @@ await useLazyAsyncData(`anpr-settings-${props.siteId}`, async () => {
410
410
  site: props.siteId,
411
411
  userType: "site",
412
412
  });
413
+ console.log("data", data);
413
414
  if (typeof data?.ANPRSwitches == "object") {
414
415
  ANPRSwitches.value = data?.ANPRSwitches;
415
416
  }
@@ -430,6 +431,7 @@ const saveANPRSettings = async () => {
430
431
  updatedBy: props.createdBy,
431
432
  userType: "site",
432
433
  };
434
+ console.log("saveANPRSettings data:", data);
433
435
  await createUpdateANPRSettings(data);
434
436
  show("Saved successfully", "success");
435
437
  } catch (error) {
@@ -1397,7 +1397,7 @@ async function proceedNonCheckedOutCheckout(visitorId: string) {
1397
1397
  }
1398
1398
  } catch (error: any) {
1399
1399
  const checkoutErrorMessage = error?.response?._data?.message;
1400
- console.error("[ERROR]", error);
1400
+ console.log("[ERROR]", error);
1401
1401
  errorMessage.value =
1402
1402
  checkoutErrorMessage || "An error occurred while checking out the vehicle.";
1403
1403
  } finally {
@@ -1425,7 +1425,7 @@ async function handleNfcReturnCheckout() {
1425
1425
  }
1426
1426
  } catch (error: any) {
1427
1427
  const checkoutErrorMessage = error?.response?._data?.message;
1428
- console.error("[ERROR]", error);
1428
+ console.log("[ERROR]", error);
1429
1429
  errorMessage.value =
1430
1430
  checkoutErrorMessage || "An error occurred while returning the NFC card.";
1431
1431
  } finally {
@@ -2085,6 +2085,12 @@ async function submit(options: { skipNonCheckedOutCheck?: boolean } = {}) {
2085
2085
  );
2086
2086
  continue;
2087
2087
  }
2088
+ console.log(
2089
+ "[QR Print] Sending to printer — accessLevel:",
2090
+ qrCode.accessLevel,
2091
+ "liftLevel:",
2092
+ qrCode.liftAccessLevel
2093
+ );
2088
2094
  const printResult = await testConnection(
2089
2095
  vendorId,
2090
2096
  productId,
@@ -2095,6 +2101,12 @@ async function submit(options: { skipNonCheckedOutCheck?: boolean } = {}) {
2095
2101
  companyName,
2096
2102
  address
2097
2103
  );
2104
+ console.log(
2105
+ "[QR Print] Print result for card",
2106
+ qrCode._id,
2107
+ ":",
2108
+ printResult
2109
+ );
2098
2110
  }
2099
2111
  }
2100
2112
  }
@@ -2383,6 +2395,10 @@ onMounted(() => {
2383
2395
  currentAutofillSource.value = null;
2384
2396
 
2385
2397
  if (prop.mode === "register" && prop.visitorData) {
2398
+ console.log(
2399
+ "Register mode, prefill visitor data",
2400
+ prop.visitorData?.plateNumber
2401
+ );
2386
2402
  visitor.plateNumber = prop.visitorData?.plateNumber || "";
2387
2403
  }
2388
2404
  });
@@ -2370,7 +2370,7 @@ async function proceedCheckout() {
2370
2370
  }
2371
2371
  } catch (error: any) {
2372
2372
  const errorMessage = error?.response?._data?.message;
2373
- console.error("[ERROR]", error);
2373
+ console.log("[ERROR]", error);
2374
2374
  showMessage(
2375
2375
  errorMessage || "Something went wrong. Please try again later.",
2376
2376
  "error"
@@ -72,6 +72,7 @@ const handleScanVisitorQRCode = async () => {
72
72
  async (qrCodeMessage: string) => {
73
73
  showNotFoundMessage.value = false;
74
74
  scannedValue.value = qrCodeMessage;
75
+ console.log(`QR Code scanned: ${qrCodeMessage}`);
75
76
  setTimeout(() => {
76
77
  closeDialog();
77
78
  }, 100);
@@ -199,7 +199,7 @@ async function deleteFile(value: string) {
199
199
  (file) => file !== value
200
200
  );
201
201
  } catch (error) {
202
- console.error(error);
202
+ console.log(error);
203
203
  showMessage("Failed to delete file", "error");
204
204
  }
205
205
  }
@@ -227,6 +227,7 @@ async function submitWorkOrder() {
227
227
  let res: Record<string, any> = {};
228
228
 
229
229
  if (isEditMode.value) {
230
+ console.log("updating...");
230
231
  res = await updateWorkOrder(workOrder.value._id as string, payload);
231
232
  } else {
232
233
  res = await createWorkOrder(payload);
@@ -458,7 +458,7 @@ async function deleteFile(value: string) {
458
458
  (file) => file !== value
459
459
  );
460
460
  } catch (error) {
461
- console.error(error);
461
+ console.log(error);
462
462
  showMessage("Failed to delete file", "error");
463
463
  }
464
464
  }
@@ -114,7 +114,7 @@ export default function useComment() {
114
114
  const seenBy = await updateSeenBy(updateSeenIds, currentUser.value?._id);
115
115
  }
116
116
  } catch (error) {
117
- console.error("error :", error);
117
+ console.log("error :", error);
118
118
  } finally {
119
119
  isCommentsLoaded.value = false;
120
120
  }
@@ -129,6 +129,7 @@ export default function useKey() {
129
129
  }
130
130
 
131
131
  function setKey(data?: TKeyLog) {
132
+ console.log("data", data);
132
133
  keyLog.value = data || new MKeyLog();
133
134
  }
134
135
 
@@ -328,6 +329,7 @@ export default function useKey() {
328
329
  },
329
330
  });
330
331
  keyList.value = response;
332
+ console.log("keyList", keyList.value);
331
333
  return response;
332
334
  }
333
335
 
@@ -349,6 +351,7 @@ export default function useKey() {
349
351
  },
350
352
  });
351
353
  keyList.value = response;
354
+ console.log("keyList", keyList.value);
352
355
  return response;
353
356
  }
354
357
  return {
@@ -100,6 +100,7 @@ export default function usePassKey() {
100
100
  statuses,
101
101
  }) as any;
102
102
 
103
+ console.log("_passKeys.items", _passKeys.items);
103
104
 
104
105
  passKeys.value = _passKeys.items as TPassKey[];
105
106
  pageRange.value = _passKeys.pageRange;
@@ -111,7 +111,7 @@ export default function useRole() {
111
111
  const _role = await getRoleById(res.role);
112
112
  Object.assign(role.value, _role);
113
113
  } catch (error) {
114
- console.error(error);
114
+ console.log(error);
115
115
  }
116
116
  }
117
117
 
@@ -69,7 +69,7 @@ export default function useUploadFiles() {
69
69
  results.push(fileId); // Collect the file ID
70
70
  files.value = [];
71
71
  } catch (e) {
72
- console.error("Error occurred while attaching images.", e);
72
+ console.log("Error occurred while attaching images.", e);
73
73
  }
74
74
  }
75
75
 
@@ -407,6 +407,7 @@ export default function useUtils() {
407
407
  const desiredDurationInSeconds = 24 * 60 * 60;
408
408
  const remainingTimeInSeconds =
409
409
  desiredDurationInSeconds - differenceInSeconds;
410
+ console.log(remainingTimeInSeconds);
410
411
  return remainingTimeInSeconds;
411
412
  }
412
413
 
@@ -496,7 +497,7 @@ export default function useUtils() {
496
497
  const response = await fetch(url, { method: "GET" });
497
498
  return response.blob();
498
499
  } catch (error: any) {
499
- console.error(error);
500
+ console.log(error);
500
501
  }
501
502
  }
502
503
 
@@ -21,6 +21,7 @@ export default function useVerification() {
21
21
  }
22
22
 
23
23
  function cancelUserInvitation(id: string) {
24
+ console.log("Calling API to cancel:", id);
24
25
  return useNuxtApp().$api<Record<string, any>>(
25
26
  `/api/verifications/${id}/cancel`,
26
27
  {
@@ -191,15 +191,19 @@ export default function useWebUsb() {
191
191
  }
192
192
  try {
193
193
  let devices = await navigator.usb.getDevices();
194
+ console.log("[WebUSB] Available devices:", devices.map((d: USBDevice) => `${d.vendorId}:${d.productId}`));
194
195
  let device = devices.find(
195
196
  (d: USBDevice) => d.vendorId === vendorId && d.productId === productId,
196
197
  );
197
198
  if (!device) {
199
+ console.log("[WebUSB] Device not in granted list, requesting permission for", vendorId, productId);
198
200
  device = await navigator.usb.requestDevice({
199
201
  filters: [{ vendorId, productId }],
200
202
  });
201
203
  }
204
+ console.log("[WebUSB] Opening device:", device.vendorId, device.productId);
202
205
  await preparePrinterDevice(device);
206
+ console.log("[WebUSB] Device opened and interface claimed.");
203
207
  return device;
204
208
  } catch (error: unknown) {
205
209
  console.error("Error connecting to USB device:", error);
@@ -507,7 +511,9 @@ export default function useWebUsb() {
507
511
  qrSubText?: string,
508
512
  ) => {
509
513
  try {
514
+ console.log("[WebUSB] printQrCode start — doorLevel:", doorLevel, "liftLevel:", liftLevel, "company:", companyName, "address:", address);
510
515
  const { endpointNumber } = getPrinterConnection(device);
516
+ console.log("[WebUSB] Using endpoint:", endpointNumber);
511
517
 
512
518
  const canvas = await createReceiptLayout(
513
519
  urlImage,
@@ -518,12 +524,16 @@ export default function useWebUsb() {
518
524
  qrHeader,
519
525
  qrSubText,
520
526
  );
527
+ console.log("[WebUSB] Canvas created:", canvas.width, "x", canvas.height);
521
528
  const rasterData = canvasToRaster(canvas);
529
+ console.log("[WebUSB] Raster data size:", rasterData.byteLength, "bytes");
522
530
 
523
531
  await device.transferOut(endpointNumber, rasterData.buffer);
532
+ console.log("[WebUSB] Raster data sent.");
524
533
 
525
534
  const CUT = new Uint8Array([0x1d, 0x56, 0x41, 0x10]);
526
535
  await device.transferOut(endpointNumber, CUT.buffer);
536
+ console.log("[WebUSB] Cut command sent.");
527
537
 
528
538
  return { success: true, message: "QR print sent successfully" };
529
539
  } catch (error: unknown) {
@@ -6,6 +6,7 @@ export default defineNuxtRouteMiddleware(async (route) => {
6
6
 
7
7
  const serviceProviderEmail = (route.query.email as string) ?? "";
8
8
 
9
+ console.log(serviceProviderEmail);
9
10
 
10
11
  if (serviceProviderEmail) {
11
12
  useCookie("service-provider-email", cookieConfig).value =
@@ -9,8 +9,10 @@ export default defineNuxtRouteMiddleware(async (to, from) => {
9
9
 
10
10
  const { organization, org } = to.params;
11
11
 
12
+ // console.log('org-aut-middleware running', hexSchema.safeParse(organization).success)
12
13
 
13
14
  if (!hexSchema.safeParse(organization || org).success) {
15
+ console.log('[02.org] middleware run')
14
16
  return navigateTo(
15
17
  { name: "require-organization-membership" },
16
18
  { replace: true }
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@7365admin1/layer-common",
3
3
  "license": "MIT",
4
4
  "type": "module",
5
- "version": "4.2.5-staging.272",
5
+ "version": "4.2.5",
6
6
  "author": "7365admin1",
7
7
  "main": "./nuxt.config.ts",
8
8
  "//files": "What a consumer extending this layer actually loads. Without this npm ships the whole working tree - the changesets, the CI workflows, the render harness in tools/ and any scratch directory that happened to exist at publish time. Nuxt resolves a layer by directory, so every runtime directory below has to stay listed; adding a new top-level runtime directory means adding it here too.",
@@ -234,7 +234,9 @@ export default defineNuxtPlugin((app) => {
234
234
  // hiddenTabs: ['upload'],
235
235
  divider: true,
236
236
  // upload(file: File) {
237
+ // console.log("file :>> ", file);
237
238
  // const url = URL.createObjectURL(file);
239
+ // console.log("mock upload api :>> ", url);
238
240
  // return Promise.resolve(url);
239
241
  // },
240
242
  upload(file: File) {