vr-commons 1.0.140 → 1.0.142

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.
@@ -56,4 +56,14 @@ export declare const stockUtil: {
56
56
  transaction?: Transaction;
57
57
  actorId?: string;
58
58
  }): Promise<StockChangeResult>;
59
+ /**
60
+ * Generate serial number from pair ID and dedication
61
+ * Format: VIBERIDE-{RIDER|PASSENGER}-{pairId}
62
+ */
63
+ generateSerialNumber(pairId: string, dedication: string): Promise<string>;
64
+ /**
65
+ * Validate pair ID format
66
+ * No letter 'O' to avoid confusion with 0
67
+ */
68
+ validatePairIdFormat(pairId: string): Promise<boolean>;
59
69
  };
@@ -4,6 +4,7 @@ exports.stockUtil = void 0;
4
4
  // src/utils/stock.util.ts
5
5
  const vr_models_1 = require("vr-models");
6
6
  const eventLog_utils_1 = require("./eventLog.utils");
7
+ const admin_devices_validations_1 = require("vr-commons/validations/admin.devices.validations");
7
8
  exports.stockUtil = {
8
9
  /**
9
10
  * Increment stock when devices are added/created
@@ -228,4 +229,18 @@ exports.stockUtil = {
228
229
  actorType: actorType,
229
230
  });
230
231
  },
232
+ /**
233
+ * Generate serial number from pair ID and dedication
234
+ * Format: VIBERIDE-{RIDER|PASSENGER}-{pairId}
235
+ */
236
+ async generateSerialNumber(pairId, dedication) {
237
+ return `VIBERIDE-${dedication}-${pairId}`;
238
+ },
239
+ /**
240
+ * Validate pair ID format
241
+ * No letter 'O' to avoid confusion with 0
242
+ */
243
+ async validatePairIdFormat(pairId) {
244
+ return admin_devices_validations_1.PAIR_ID_REGEX.test(pairId);
245
+ },
231
246
  };
@@ -1,46 +1,36 @@
1
1
  import { z } from "zod";
2
- export declare const createDeviceSchema: z.ZodObject<{
2
+ export declare const PAIR_ID_REGEX: RegExp;
3
+ export declare const validateUniquePairIds: (pairIds: string[]) => boolean;
4
+ export declare const createDevicePairsSchema: z.ZodEffects<z.ZodObject<{
3
5
  body: z.ZodObject<{
4
- serialNumber: z.ZodString;
5
6
  productId: z.ZodString;
7
+ pairIds: z.ZodArray<z.ZodString, "many">;
6
8
  }, "strip", z.ZodTypeAny, {
7
9
  productId: string;
8
- serialNumber: string;
10
+ pairIds: string[];
9
11
  }, {
10
12
  productId: string;
11
- serialNumber: string;
13
+ pairIds: string[];
12
14
  }>;
13
15
  }, "strip", z.ZodTypeAny, {
14
16
  body: {
15
17
  productId: string;
16
- serialNumber: string;
18
+ pairIds: string[];
17
19
  };
18
20
  }, {
19
21
  body: {
20
22
  productId: string;
21
- serialNumber: string;
23
+ pairIds: string[];
22
24
  };
23
- }>;
24
- export declare const bulkCreateDevicesSchema: z.ZodObject<{
25
- body: z.ZodObject<{
26
- productId: z.ZodString;
27
- serialNumbers: z.ZodArray<z.ZodString, "many">;
28
- }, "strip", z.ZodTypeAny, {
29
- productId: string;
30
- serialNumbers: string[];
31
- }, {
32
- productId: string;
33
- serialNumbers: string[];
34
- }>;
35
- }, "strip", z.ZodTypeAny, {
25
+ }>, {
36
26
  body: {
37
27
  productId: string;
38
- serialNumbers: string[];
28
+ pairIds: string[];
39
29
  };
40
30
  }, {
41
31
  body: {
42
32
  productId: string;
43
- serialNumbers: string[];
33
+ pairIds: string[];
44
34
  };
45
35
  }>;
46
36
  export declare const updateDeviceSchema: z.ZodObject<{
@@ -65,23 +55,23 @@ export declare const updateDeviceSchema: z.ZodObject<{
65
55
  dedicatedUser?: "PASSENGER" | "RIDER" | "N/A" | null | undefined;
66
56
  }>;
67
57
  }, "strip", z.ZodTypeAny, {
58
+ params: {
59
+ id: string;
60
+ };
68
61
  body: {
69
62
  status?: "locked" | "unlocked" | "disabled" | undefined;
70
63
  serialNumber?: string | undefined;
71
64
  dedicatedUser?: "PASSENGER" | "RIDER" | "N/A" | null | undefined;
72
65
  };
66
+ }, {
73
67
  params: {
74
68
  id: string;
75
69
  };
76
- }, {
77
70
  body: {
78
71
  status?: "locked" | "unlocked" | "disabled" | undefined;
79
72
  serialNumber?: string | undefined;
80
73
  dedicatedUser?: "PASSENGER" | "RIDER" | "N/A" | null | undefined;
81
74
  };
82
- params: {
83
- id: string;
84
- };
85
75
  }>;
86
76
  export declare const getDeviceSchema: z.ZodObject<{
87
77
  params: z.ZodObject<{
@@ -113,53 +103,53 @@ export declare const getDevicesSchema: z.ZodObject<{
113
103
  sortBy: z.ZodOptional<z.ZodEnum<["serialNumber", "status", "createdAt", "updatedAt"]>>;
114
104
  sortOrder: z.ZodOptional<z.ZodEnum<["ASC", "DESC"]>>;
115
105
  }, "strip", z.ZodTypeAny, {
116
- search?: string | undefined;
117
- limit?: number | undefined;
118
106
  status?: "locked" | "unlocked" | "disabled" | undefined;
119
- page?: number | undefined;
120
- sortBy?: "createdAt" | "updatedAt" | "status" | "serialNumber" | undefined;
121
- sortOrder?: "DESC" | "ASC" | undefined;
122
107
  productId?: string | undefined;
123
108
  dedicatedUser?: "PASSENGER" | "RIDER" | "N/A" | undefined;
109
+ page?: number | undefined;
110
+ limit?: number | undefined;
124
111
  isPermanentlyUnlocked?: "true" | "false" | undefined;
125
112
  isAssigned?: "true" | "false" | undefined;
126
- }, {
127
113
  search?: string | undefined;
128
- limit?: string | undefined;
114
+ sortBy?: "status" | "serialNumber" | "createdAt" | "updatedAt" | undefined;
115
+ sortOrder?: "ASC" | "DESC" | undefined;
116
+ }, {
129
117
  status?: "locked" | "unlocked" | "disabled" | undefined;
130
- page?: string | undefined;
131
- sortBy?: "createdAt" | "updatedAt" | "status" | "serialNumber" | undefined;
132
- sortOrder?: "DESC" | "ASC" | undefined;
133
118
  productId?: string | undefined;
134
119
  dedicatedUser?: "PASSENGER" | "RIDER" | "N/A" | undefined;
120
+ page?: string | undefined;
121
+ limit?: string | undefined;
135
122
  isPermanentlyUnlocked?: "true" | "false" | undefined;
136
123
  isAssigned?: "true" | "false" | undefined;
124
+ search?: string | undefined;
125
+ sortBy?: "status" | "serialNumber" | "createdAt" | "updatedAt" | undefined;
126
+ sortOrder?: "ASC" | "DESC" | undefined;
137
127
  }>;
138
128
  }, "strip", z.ZodTypeAny, {
139
129
  query: {
140
- search?: string | undefined;
141
- limit?: number | undefined;
142
130
  status?: "locked" | "unlocked" | "disabled" | undefined;
143
- page?: number | undefined;
144
- sortBy?: "createdAt" | "updatedAt" | "status" | "serialNumber" | undefined;
145
- sortOrder?: "DESC" | "ASC" | undefined;
146
131
  productId?: string | undefined;
147
132
  dedicatedUser?: "PASSENGER" | "RIDER" | "N/A" | undefined;
133
+ page?: number | undefined;
134
+ limit?: number | undefined;
148
135
  isPermanentlyUnlocked?: "true" | "false" | undefined;
149
136
  isAssigned?: "true" | "false" | undefined;
137
+ search?: string | undefined;
138
+ sortBy?: "status" | "serialNumber" | "createdAt" | "updatedAt" | undefined;
139
+ sortOrder?: "ASC" | "DESC" | undefined;
150
140
  };
151
141
  }, {
152
142
  query: {
153
- search?: string | undefined;
154
- limit?: string | undefined;
155
143
  status?: "locked" | "unlocked" | "disabled" | undefined;
156
- page?: string | undefined;
157
- sortBy?: "createdAt" | "updatedAt" | "status" | "serialNumber" | undefined;
158
- sortOrder?: "DESC" | "ASC" | undefined;
159
144
  productId?: string | undefined;
160
145
  dedicatedUser?: "PASSENGER" | "RIDER" | "N/A" | undefined;
146
+ page?: string | undefined;
147
+ limit?: string | undefined;
161
148
  isPermanentlyUnlocked?: "true" | "false" | undefined;
162
149
  isAssigned?: "true" | "false" | undefined;
150
+ search?: string | undefined;
151
+ sortBy?: "status" | "serialNumber" | "createdAt" | "updatedAt" | undefined;
152
+ sortOrder?: "ASC" | "DESC" | undefined;
163
153
  };
164
154
  }>;
165
155
  export declare const deleteDeviceSchema: z.ZodObject<{
@@ -242,19 +232,19 @@ export declare const disableDeviceSchema: z.ZodObject<{
242
232
  reason: string;
243
233
  }>;
244
234
  }, "strip", z.ZodTypeAny, {
245
- body: {
246
- reason: string;
247
- };
248
235
  params: {
249
236
  id: string;
250
237
  };
251
- }, {
252
238
  body: {
253
239
  reason: string;
254
240
  };
241
+ }, {
255
242
  params: {
256
243
  id: string;
257
244
  };
245
+ body: {
246
+ reason: string;
247
+ };
258
248
  }>;
259
249
  export declare const makePermanentSchema: z.ZodObject<{
260
250
  params: z.ZodObject<{
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.checkAvailabilitySchema = exports.makePermanentSchema = exports.disableDeviceSchema = exports.adminUnlockDeviceSchema = exports.adminLockDeviceSchema = exports.deleteDeviceSchema = exports.getDevicesSchema = exports.getDeviceSchema = exports.updateDeviceSchema = exports.bulkCreateDevicesSchema = exports.createDeviceSchema = void 0;
3
+ exports.checkAvailabilitySchema = exports.makePermanentSchema = exports.disableDeviceSchema = exports.adminUnlockDeviceSchema = exports.adminLockDeviceSchema = exports.deleteDeviceSchema = exports.getDevicesSchema = exports.getDeviceSchema = exports.updateDeviceSchema = exports.createDevicePairsSchema = exports.validateUniquePairIds = exports.PAIR_ID_REGEX = void 0;
4
4
  const zod_1 = require("zod");
5
5
  const vr_models_1 = require("vr-models");
6
6
  // Constants
@@ -16,28 +16,38 @@ const deviceBaseSchema = {
16
16
  isPermanentlyUnlocked: zod_1.z.boolean().optional(),
17
17
  dedicatedUser: zod_1.z.enum(vr_models_1.DEVICE_DEDICATION).nullable().optional(),
18
18
  };
19
- // Create device schema (admin adds new stock)
20
- exports.createDeviceSchema = zod_1.z.object({
21
- body: zod_1.z.object({
22
- serialNumber: deviceBaseSchema.serialNumber,
23
- productId: deviceBaseSchema.productId,
24
- // Status defaults to "locked" in model
25
- // dedicatedUser starts as null
26
- }),
27
- });
28
- // Bulk create devices schema
29
- exports.bulkCreateDevicesSchema = zod_1.z.object({
19
+ // ✅ Pair ID format: 2 letters + 3 numbers + 1 letter
20
+ // Example: AA001A, AB123B, XZ999Z
21
+ // No letter 'O' to avoid confusion with 0
22
+ exports.PAIR_ID_REGEX = /^[A-NP-Z]{2}[0-9]{3}[A-NP-Z]{1}$/;
23
+ const PAIR_ID_ERROR = "Pair ID must be 6 characters: 2 letters (A-Z, excluding O) + 3 digits + 1 letter (A-Z, excluding O). Example: AA001A";
24
+ // ✅ Helper to validate pair IDs are unique in body
25
+ const validateUniquePairIds = (pairIds) => {
26
+ const unique = new Set(pairIds);
27
+ return unique.size === pairIds.length;
28
+ };
29
+ exports.validateUniquePairIds = validateUniquePairIds;
30
+ // ✅ ONLY bulk create - no single device creation
31
+ exports.createDevicePairsSchema = zod_1.z
32
+ .object({
30
33
  body: zod_1.z.object({
31
- productId: deviceBaseSchema.productId,
32
- serialNumbers: zod_1.z
33
- .array(zod_1.z
34
- .string()
35
- .min(5, "Serial number must be at least 5 characters")
36
- .max(64, "Serial number too long")
37
- .regex(/^[A-Z0-9-]+$/, "Serial number must contain only uppercase letters, numbers, and hyphens"))
38
- .min(1, "At least one serial number required")
39
- .max(100, "Cannot create more than 100 devices at once"),
34
+ productId: zod_1.z.string().uuid("Invalid product ID"),
35
+ pairIds: zod_1.z
36
+ .array(zod_1.z.string().regex(exports.PAIR_ID_REGEX, PAIR_ID_ERROR))
37
+ .min(1, "At least one pair ID required")
38
+ .max(50, "Cannot create more than 50 pairs at once"),
40
39
  }),
40
+ })
41
+ .superRefine((data, ctx) => {
42
+ const { pairIds } = data.body;
43
+ // ✅ Ensure no duplicate pair IDs in the request body
44
+ if (!(0, exports.validateUniquePairIds)(pairIds)) {
45
+ ctx.addIssue({
46
+ code: zod_1.z.ZodIssueCode.custom,
47
+ message: `Duplicate pair IDs found. Please ensure all pair IDs are unique.`,
48
+ path: ["pairIds"],
49
+ });
50
+ }
41
51
  });
42
52
  // Update device schema
43
53
  exports.updateDeviceSchema = zod_1.z.object({
@@ -10,6 +10,6 @@ export { updateProfileSchema, requestPhoneChangeSchema, verifyPhoneChangeSchema,
10
10
  export { updateAdminSchema, updateRiderSchema, deleteUserSchema, getUserSchema, getUsersSchema, hireAdminSchema, promoteAdminSchema, demoteAdminSchema, fireEmployeeSchema, upgradeToRiderSchema, resetPasswordSchema, } from "./users.admin.validations";
11
11
  export { createProductSchema, updateProductSchema, getProductSchema, getProductsSchema, deactivateProductSchema, activateProductSchema, deleteProductSchema, updateStockSchema, } from "./product.validations";
12
12
  export { createPricingSchema, updatePricingSchema, getPricingSchema, getPricingsSchema, deletePricingSchema, } from "./pricings.validations";
13
- export { checkAvailabilitySchema, bulkCreateDevicesSchema, adminLockDeviceSchema, adminUnlockDeviceSchema, updateDeviceSchema, getDeviceSchema, getDevicesSchema, deleteDeviceSchema, disableDeviceSchema, makePermanentSchema, createDeviceSchema, } from "./admin.devices.validations";
13
+ export { checkAvailabilitySchema, createDevicePairsSchema, adminLockDeviceSchema, adminUnlockDeviceSchema, updateDeviceSchema, getDeviceSchema, getDevicesSchema, deleteDeviceSchema, disableDeviceSchema, makePermanentSchema, } from "./admin.devices.validations";
14
14
  export { createPlanSchema, limitedUpdateSchema, getDevicePlanSchema, getPlanSchema, getUserPlansSchema, listPlansSchema, recordPaymentSchema, deletePlanSchema, } from "./admin.devicePayment.validations";
15
15
  export { listEventLogsSchema, getEventLogSchema, } from "./eventlogs.admin.validations";
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAppSpecsSchema = exports.activateAppSpecsSchema = exports.getActiveAppSpecsSchema = exports.listAppSpecsSchema = exports.updateAppSpecsSchema = exports.createAppSpecsSchema = exports.exportBansSchema = exports.createSuspensionSchema = exports.createBanSchema = exports.extendSuspensionSchema = exports.revokeSuspensionSchema = exports.revokeBanSchema = exports.reviewAppealSchema = exports.listSuspensionsSchema = exports.listPendingAppealsSchema = exports.listBansSchema = exports.getUserBansSchema = exports.getUserSuspensionsSchema = exports.getSuspensionSchema = exports.getUserRestrictionsSchema = exports.getBanSchema = exports.submitSuspensionAppealSchema = exports.submitBanAppealSchema = exports.deactivateAccountSchema = exports.createRiderSchema = exports.updateRiderProfileSchema = exports.updatePassengerProfileSchema = exports.passengerSignupSchema = exports.viewProfileSchema = exports.getAllUsersSchema = exports.updateUserProfileSchema = exports.getUserByIdSchema = exports.createUserSchema = exports.googleLoginSchema = exports.completePassengerProfileSchema = exports.checkRiderAccountSchema = exports.setRiderPasswordSchema = exports.riderPasswordRegex = exports.passwordRegex = exports.emailRegex = exports.phoneRegex = exports.requestOtpSchema = exports.resendOtpSchema = exports.verifyOtpSchema = exports.registerSchema = exports.refreshTokenSchema = exports.userLoginSchema = exports.forgotPasswordSchema = exports.riderLoginSchema = exports.validate = void 0;
4
- exports.makePermanentSchema = exports.disableDeviceSchema = exports.deleteDeviceSchema = exports.getDevicesSchema = exports.getDeviceSchema = exports.updateDeviceSchema = exports.adminUnlockDeviceSchema = exports.adminLockDeviceSchema = exports.bulkCreateDevicesSchema = exports.checkAvailabilitySchema = exports.deletePricingSchema = exports.getPricingsSchema = exports.getPricingSchema = exports.updatePricingSchema = exports.createPricingSchema = exports.updateStockSchema = exports.deleteProductSchema = exports.activateProductSchema = exports.deactivateProductSchema = exports.getProductsSchema = exports.getProductSchema = exports.updateProductSchema = exports.createProductSchema = exports.resetPasswordSchema = exports.upgradeToRiderSchema = exports.fireEmployeeSchema = exports.demoteAdminSchema = exports.promoteAdminSchema = exports.hireAdminSchema = exports.getUsersSchema = exports.getUserSchema = exports.deleteUserSchema = exports.updateRiderSchema = exports.updateAdminSchema = exports.registerRiderSchema = exports.riderPasswordSchema = exports.changePasswordSchema = exports.strongPasswordRegex = exports.deleteAccountSchema = exports.verifyPhoneChangeSchema = exports.requestPhoneChangeSchema = exports.updateProfileSchema = exports.getInstallmentsSchema = exports.getInstallmentByIdSchema = exports.payInstallmentSchema = exports.serialRegex = exports.extendSessionSchema = exports.unlockDeviceSchema = exports.getUserPaymentPlanSchema = exports.listUserPaymentPlansSchema = void 0;
5
- exports.getEventLogSchema = exports.listEventLogsSchema = exports.deletePlanSchema = exports.recordPaymentSchema = exports.listPlansSchema = exports.getUserPlansSchema = exports.getPlanSchema = exports.getDevicePlanSchema = exports.limitedUpdateSchema = exports.createPlanSchema = exports.createDeviceSchema = void 0;
4
+ exports.makePermanentSchema = exports.disableDeviceSchema = exports.deleteDeviceSchema = exports.getDevicesSchema = exports.getDeviceSchema = exports.updateDeviceSchema = exports.adminUnlockDeviceSchema = exports.adminLockDeviceSchema = exports.createDevicePairsSchema = exports.checkAvailabilitySchema = exports.deletePricingSchema = exports.getPricingsSchema = exports.getPricingSchema = exports.updatePricingSchema = exports.createPricingSchema = exports.updateStockSchema = exports.deleteProductSchema = exports.activateProductSchema = exports.deactivateProductSchema = exports.getProductsSchema = exports.getProductSchema = exports.updateProductSchema = exports.createProductSchema = exports.resetPasswordSchema = exports.upgradeToRiderSchema = exports.fireEmployeeSchema = exports.demoteAdminSchema = exports.promoteAdminSchema = exports.hireAdminSchema = exports.getUsersSchema = exports.getUserSchema = exports.deleteUserSchema = exports.updateRiderSchema = exports.updateAdminSchema = exports.registerRiderSchema = exports.riderPasswordSchema = exports.changePasswordSchema = exports.strongPasswordRegex = exports.deleteAccountSchema = exports.verifyPhoneChangeSchema = exports.requestPhoneChangeSchema = exports.updateProfileSchema = exports.getInstallmentsSchema = exports.getInstallmentByIdSchema = exports.payInstallmentSchema = exports.serialRegex = exports.extendSessionSchema = exports.unlockDeviceSchema = exports.getUserPaymentPlanSchema = exports.listUserPaymentPlansSchema = void 0;
5
+ exports.getEventLogSchema = exports.listEventLogsSchema = exports.deletePlanSchema = exports.recordPaymentSchema = exports.listPlansSchema = exports.getUserPlansSchema = exports.getPlanSchema = exports.getDevicePlanSchema = exports.limitedUpdateSchema = exports.createPlanSchema = void 0;
6
6
  var validate_validations_1 = require("./validate.validations");
7
7
  Object.defineProperty(exports, "validate", { enumerable: true, get: function () { return validate_validations_1.validate; } });
8
8
  var auth_validations_1 = require("./auth.validations");
@@ -115,7 +115,7 @@ Object.defineProperty(exports, "getPricingsSchema", { enumerable: true, get: fun
115
115
  Object.defineProperty(exports, "deletePricingSchema", { enumerable: true, get: function () { return pricings_validations_1.deletePricingSchema; } });
116
116
  var admin_devices_validations_1 = require("./admin.devices.validations");
117
117
  Object.defineProperty(exports, "checkAvailabilitySchema", { enumerable: true, get: function () { return admin_devices_validations_1.checkAvailabilitySchema; } });
118
- Object.defineProperty(exports, "bulkCreateDevicesSchema", { enumerable: true, get: function () { return admin_devices_validations_1.bulkCreateDevicesSchema; } });
118
+ Object.defineProperty(exports, "createDevicePairsSchema", { enumerable: true, get: function () { return admin_devices_validations_1.createDevicePairsSchema; } });
119
119
  Object.defineProperty(exports, "adminLockDeviceSchema", { enumerable: true, get: function () { return admin_devices_validations_1.adminLockDeviceSchema; } });
120
120
  Object.defineProperty(exports, "adminUnlockDeviceSchema", { enumerable: true, get: function () { return admin_devices_validations_1.adminUnlockDeviceSchema; } });
121
121
  Object.defineProperty(exports, "updateDeviceSchema", { enumerable: true, get: function () { return admin_devices_validations_1.updateDeviceSchema; } });
@@ -124,7 +124,6 @@ Object.defineProperty(exports, "getDevicesSchema", { enumerable: true, get: func
124
124
  Object.defineProperty(exports, "deleteDeviceSchema", { enumerable: true, get: function () { return admin_devices_validations_1.deleteDeviceSchema; } });
125
125
  Object.defineProperty(exports, "disableDeviceSchema", { enumerable: true, get: function () { return admin_devices_validations_1.disableDeviceSchema; } });
126
126
  Object.defineProperty(exports, "makePermanentSchema", { enumerable: true, get: function () { return admin_devices_validations_1.makePermanentSchema; } });
127
- Object.defineProperty(exports, "createDeviceSchema", { enumerable: true, get: function () { return admin_devices_validations_1.createDeviceSchema; } });
128
127
  var admin_devicePayment_validations_1 = require("./admin.devicePayment.validations");
129
128
  Object.defineProperty(exports, "createPlanSchema", { enumerable: true, get: function () { return admin_devicePayment_validations_1.createPlanSchema; } });
130
129
  Object.defineProperty(exports, "limitedUpdateSchema", { enumerable: true, get: function () { return admin_devicePayment_validations_1.limitedUpdateSchema; } });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vr-commons",
3
- "version": "1.0.140",
3
+ "version": "1.0.142",
4
4
  "description": "Shared functions package",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",