@workwell-global/toolkit 1.1.4 → 1.1.7
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/dist/date-and-time/calculate.d.ts.map +1 -0
- package/dist/date-and-time/calculate.js +12 -0
- package/dist/date-and-time/calculate.js.map +1 -0
- package/dist/date-and-time/format.d.ts.map +1 -0
- package/dist/date-and-time/format.js +2 -0
- package/dist/date-and-time/format.js.map +1 -0
- package/dist/date-and-time/index.d.ts.map +1 -0
- package/dist/date-and-time/index.js +4 -0
- package/dist/date-and-time/index.js.map +1 -0
- package/dist/encoding/index.d.ts.map +1 -0
- package/dist/encoding/index.js +2 -0
- package/dist/encoding/index.js.map +1 -0
- package/dist/encoding/stringBySecret.d.ts.map +1 -0
- package/dist/encoding/stringBySecret.js +30 -0
- package/dist/encoding/stringBySecret.js.map +1 -0
- package/dist/enums/RequestOrigin.d.ts +1 -1
- package/dist/enums/RequestOrigin.js +1 -1
- package/dist/enums/RequestOrigin.js.map +1 -1
- package/dist/{types/services → strings}/index.d.ts.map +1 -1
- package/dist/strings/index.js +5 -0
- package/dist/strings/index.js.map +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +5 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/date-and-time/calculate.test.d.ts +2 -0
- package/dist/utils/date-and-time/calculate.test.d.ts.map +1 -0
- package/dist/utils/date-and-time/calculate.test.js +69 -0
- package/dist/utils/date-and-time/calculate.test.js.map +1 -0
- package/dist/utils/date-and-time/format.test.d.ts +2 -0
- package/dist/utils/date-and-time/format.test.d.ts.map +1 -0
- package/dist/utils/date-and-time/format.test.js +30 -0
- package/dist/utils/date-and-time/format.test.js.map +1 -0
- package/dist/utils/encoding/stringBySecret.test.d.ts +2 -0
- package/dist/utils/encoding/stringBySecret.test.d.ts.map +1 -0
- package/dist/utils/encoding/stringBySecret.test.js +69 -0
- package/dist/utils/encoding/stringBySecret.test.js.map +1 -0
- package/dist/utils/strings/manipulate.d.ts.map +1 -1
- package/dist/utils/strings/manipulate.js +41 -20
- package/dist/utils/strings/manipulate.js.map +1 -1
- package/dist/utils/strings/manipulate.test.d.ts +2 -0
- package/dist/utils/strings/manipulate.test.d.ts.map +1 -0
- package/dist/utils/strings/manipulate.test.js +46 -0
- package/dist/utils/strings/manipulate.test.js.map +1 -0
- package/dist/utils/strings/sanitize.test.d.ts +2 -0
- package/dist/utils/strings/sanitize.test.d.ts.map +1 -0
- package/dist/utils/strings/sanitize.test.js +20 -0
- package/dist/utils/strings/sanitize.test.js.map +1 -0
- package/package.json +8 -3
- package/dist/models/crm-dynamics/TChangeRequest.d.ts +0 -67
- package/dist/models/crm-dynamics/TChangeRequest.d.ts.map +0 -1
- package/dist/models/crm-dynamics/TChangeRequest.js +0 -2
- package/dist/models/crm-dynamics/TChangeRequest.js.map +0 -1
- package/dist/models/crm-dynamics/TEnquiry.d.ts +0 -68
- package/dist/models/crm-dynamics/TEnquiry.d.ts.map +0 -1
- package/dist/models/crm-dynamics/TEnquiry.js +0 -2
- package/dist/models/crm-dynamics/TEnquiry.js.map +0 -1
- package/dist/models/event/TEvent.d.ts +0 -49
- package/dist/models/event/TEvent.d.ts.map +0 -1
- package/dist/models/event/TEvent.js +0 -9
- package/dist/models/event/TEvent.js.map +0 -1
- package/dist/models/event/TEventBase.d.ts +0 -15
- package/dist/models/event/TEventBase.d.ts.map +0 -1
- package/dist/models/event/TEventBase.js +0 -8
- package/dist/models/event/TEventBase.js.map +0 -1
- package/dist/models/event/TEventCategories.d.ts +0 -738
- package/dist/models/event/TEventCategories.d.ts.map +0 -1
- package/dist/models/event/TEventCategories.js +0 -268
- package/dist/models/event/TEventCategories.js.map +0 -1
- package/dist/models/event/TEventRequest.d.ts +0 -37
- package/dist/models/event/TEventRequest.d.ts.map +0 -1
- package/dist/models/event/TEventRequest.js +0 -10
- package/dist/models/event/TEventRequest.js.map +0 -1
- package/dist/models/event/index.d.ts +0 -5
- package/dist/models/event/index.d.ts.map +0 -1
- package/dist/models/event/index.js +0 -5
- package/dist/models/event/index.js.map +0 -1
- package/dist/models/notification/TNotification.d.ts +0 -389
- package/dist/models/notification/TNotification.d.ts.map +0 -1
- package/dist/models/notification/TNotification.js +0 -13
- package/dist/models/notification/TNotification.js.map +0 -1
- package/dist/models/notification/TNotificationRequest.d.ts +0 -361
- package/dist/models/notification/TNotificationRequest.d.ts.map +0 -1
- package/dist/models/notification/TNotificationRequest.js +0 -19
- package/dist/models/notification/TNotificationRequest.js.map +0 -1
- package/dist/models/notification/TNotificationsHandlerResponse.d.ts +0 -5
- package/dist/models/notification/TNotificationsHandlerResponse.d.ts.map +0 -1
- package/dist/models/notification/TNotificationsHandlerResponse.js +0 -2
- package/dist/models/notification/TNotificationsHandlerResponse.js.map +0 -1
- package/dist/models/notification/index.d.ts +0 -4
- package/dist/models/notification/index.d.ts.map +0 -1
- package/dist/models/notification/index.js +0 -4
- package/dist/models/notification/index.js.map +0 -1
- package/dist/models/objects/ICombinedAssignmetnSCL.d.ts +0 -58
- package/dist/models/objects/ICombinedAssignmetnSCL.d.ts.map +0 -1
- package/dist/models/objects/ICombinedAssignmetnSCL.js +0 -2
- package/dist/models/objects/ICombinedAssignmetnSCL.js.map +0 -1
- package/dist/models/objects/TChangeRequest.d.ts +0 -65
- package/dist/models/objects/TChangeRequest.d.ts.map +0 -1
- package/dist/models/objects/TChangeRequest.js +0 -2
- package/dist/models/objects/TChangeRequest.js.map +0 -1
- package/dist/models/objects/TEnquiry.d.ts +0 -75
- package/dist/models/objects/TEnquiry.d.ts.map +0 -1
- package/dist/models/objects/TEnquiry.js +0 -2
- package/dist/models/objects/TEnquiry.js.map +0 -1
- package/dist/models/objects/TNotificationsHandlerResponse.d.ts +0 -5
- package/dist/models/objects/TNotificationsHandlerResponse.d.ts.map +0 -1
- package/dist/models/objects/TNotificationsHandlerResponse.js +0 -2
- package/dist/models/objects/TNotificationsHandlerResponse.js.map +0 -1
- package/dist/models/schemas/TEvent.d.ts +0 -48
- package/dist/models/schemas/TEvent.d.ts.map +0 -1
- package/dist/models/schemas/TEvent.js +0 -9
- package/dist/models/schemas/TEvent.js.map +0 -1
- package/dist/models/schemas/TEventBase.d.ts +0 -15
- package/dist/models/schemas/TEventBase.d.ts.map +0 -1
- package/dist/models/schemas/TEventBase.js +0 -7
- package/dist/models/schemas/TEventBase.js.map +0 -1
- package/dist/models/schemas/TEventCategories.d.ts +0 -737
- package/dist/models/schemas/TEventCategories.d.ts.map +0 -1
- package/dist/models/schemas/TEventCategories.js +0 -268
- package/dist/models/schemas/TEventCategories.js.map +0 -1
- package/dist/models/schemas/TEventRequest.d.ts +0 -36
- package/dist/models/schemas/TEventRequest.d.ts.map +0 -1
- package/dist/models/schemas/TEventRequest.js +0 -10
- package/dist/models/schemas/TEventRequest.js.map +0 -1
- package/dist/models/schemas/TNotification.d.ts +0 -388
- package/dist/models/schemas/TNotification.d.ts.map +0 -1
- package/dist/models/schemas/TNotification.js +0 -12
- package/dist/models/schemas/TNotification.js.map +0 -1
- package/dist/models/schemas/TNotificationRequest.d.ts +0 -360
- package/dist/models/schemas/TNotificationRequest.d.ts.map +0 -1
- package/dist/models/schemas/TNotificationRequest.js +0 -19
- package/dist/models/schemas/TNotificationRequest.js.map +0 -1
- package/dist/models/schemas/TNotificationsHandlerResponse.d.ts +0 -5
- package/dist/models/schemas/TNotificationsHandlerResponse.d.ts.map +0 -1
- package/dist/models/schemas/TNotificationsHandlerResponse.js +0 -2
- package/dist/models/schemas/TNotificationsHandlerResponse.js.map +0 -1
- package/dist/models/schemas/notification/index.d.ts.map +0 -1
- package/dist/models/schemas/notification/index.js +0 -2
- package/dist/models/schemas/notification/index.js.map +0 -1
- package/dist/models/types/TCommon.d.ts +0 -16
- package/dist/models/types/TCommon.d.ts.map +0 -1
- package/dist/models/types/TCommon.js +0 -2
- package/dist/models/types/TCommon.js.map +0 -1
- package/dist/models/types/TStages.d.ts +0 -16
- package/dist/models/types/TStages.d.ts.map +0 -1
- package/dist/models/types/TStages.js +0 -2
- package/dist/models/types/TStages.js.map +0 -1
- package/dist/models/user-settings/TServiceUserSettings.d.ts +0 -118
- package/dist/models/user-settings/TServiceUserSettings.d.ts.map +0 -1
- package/dist/models/user-settings/TServiceUserSettings.js +0 -80
- package/dist/models/user-settings/TServiceUserSettings.js.map +0 -1
- package/dist/models/user-settings/index.d.ts +0 -2
- package/dist/models/user-settings/index.d.ts.map +0 -1
- package/dist/models/user-settings/index.js +0 -2
- package/dist/models/user-settings/index.js.map +0 -1
- package/dist/types/enums/LinkedRoles.d.ts +0 -5
- package/dist/types/enums/LinkedRoles.d.ts.map +0 -1
- package/dist/types/enums/RBACPermissions.d.ts +0 -33
- package/dist/types/enums/RBACPermissions.d.ts.map +0 -1
- package/dist/types/enums/Regions.d.ts +0 -10
- package/dist/types/enums/Regions.d.ts.map +0 -1
- package/dist/types/enums/SCLASNStages.d.ts +0 -26
- package/dist/types/enums/SCLASNStages.d.ts.map +0 -1
- package/dist/types/enums/SCLASNStatus.d.ts +0 -13
- package/dist/types/enums/SCLASNStatus.d.ts.map +0 -1
- package/dist/types/enums/SolutionCategories.d.ts +0 -7
- package/dist/types/enums/SolutionCategories.d.ts.map +0 -1
- package/dist/types/enums/SolutionTypes.d.ts +0 -6
- package/dist/types/enums/SolutionTypes.d.ts.map +0 -1
- package/dist/types/enums/index.d.ts +0 -8
- package/dist/types/enums/index.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IAccount.d.ts +0 -276
- package/dist/types/models/crm-dynamics/IAccount.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IAddresses.d.ts +0 -52
- package/dist/types/models/crm-dynamics/IAddresses.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IApplication.d.ts +0 -27
- package/dist/types/models/crm-dynamics/IApplication.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IBankAccounts.d.ts +0 -42
- package/dist/types/models/crm-dynamics/IBankAccounts.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/ICRMPicklist.d.ts +0 -10
- package/dist/types/models/crm-dynamics/ICRMPicklist.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/ICompanyDocument.d.ts +0 -14
- package/dist/types/models/crm-dynamics/ICompanyDocument.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IContact.d.ts +0 -311
- package/dist/types/models/crm-dynamics/IContact.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IContractorDocument.d.ts +0 -27
- package/dist/types/models/crm-dynamics/IContractorDocument.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IDocumentBase.d.ts +0 -41
- package/dist/types/models/crm-dynamics/IDocumentBase.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/ISystemUser.d.ts +0 -151
- package/dist/types/models/crm-dynamics/ISystemUser.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/IWebPortalLogin.d.ts +0 -9
- package/dist/types/models/crm-dynamics/IWebPortalLogin.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/TChangeRequest.d.ts +0 -67
- package/dist/types/models/crm-dynamics/TChangeRequest.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/TEnquiry.d.ts +0 -68
- package/dist/types/models/crm-dynamics/TEnquiry.d.ts.map +0 -1
- package/dist/types/models/crm-dynamics/index.d.ts +0 -14
- package/dist/types/models/crm-dynamics/index.d.ts.map +0 -1
- package/dist/types/models/event/TEvent.d.ts +0 -49
- package/dist/types/models/event/TEvent.d.ts.map +0 -1
- package/dist/types/models/event/TEventBase.d.ts +0 -15
- package/dist/types/models/event/TEventBase.d.ts.map +0 -1
- package/dist/types/models/event/TEventCategories.d.ts +0 -738
- package/dist/types/models/event/TEventCategories.d.ts.map +0 -1
- package/dist/types/models/event/TEventRequest.d.ts +0 -37
- package/dist/types/models/event/TEventRequest.d.ts.map +0 -1
- package/dist/types/models/event/index.d.ts +0 -5
- package/dist/types/models/event/index.d.ts.map +0 -1
- package/dist/types/models/integration-auth0/IAuthUser.d.ts +0 -37
- package/dist/types/models/integration-auth0/IAuthUser.d.ts.map +0 -1
- package/dist/types/models/notification/TNotification.d.ts +0 -389
- package/dist/types/models/notification/TNotification.d.ts.map +0 -1
- package/dist/types/models/notification/TNotificationRequest.d.ts +0 -361
- package/dist/types/models/notification/TNotificationRequest.d.ts.map +0 -1
- package/dist/types/models/notification/TNotificationsHandlerResponse.d.ts +0 -5
- package/dist/types/models/notification/TNotificationsHandlerResponse.d.ts.map +0 -1
- package/dist/types/models/notification/index.d.ts +0 -4
- package/dist/types/models/notification/index.d.ts.map +0 -1
- package/dist/types/models/objects/IAccount.d.ts +0 -58
- package/dist/types/models/objects/IAccount.d.ts.map +0 -1
- package/dist/types/models/objects/IAddress.d.ts +0 -27
- package/dist/types/models/objects/IAddress.d.ts.map +0 -1
- package/dist/types/models/objects/IApplication.d.ts +0 -14
- package/dist/types/models/objects/IApplication.d.ts.map +0 -1
- package/dist/types/models/objects/IBankAccounts.d.ts +0 -38
- package/dist/types/models/objects/IBankAccounts.d.ts.map +0 -1
- package/dist/types/models/objects/ICompany.d.ts +0 -16
- package/dist/types/models/objects/ICompany.d.ts.map +0 -1
- package/dist/types/models/objects/ICompanyDocument.d.ts +0 -61
- package/dist/types/models/objects/ICompanyDocument.d.ts.map +0 -1
- package/dist/types/models/objects/ICompanyPosition.d.ts +0 -6
- package/dist/types/models/objects/ICompanyPosition.d.ts.map +0 -1
- package/dist/types/models/objects/IContact.d.ts +0 -147
- package/dist/types/models/objects/IContact.d.ts.map +0 -1
- package/dist/types/models/objects/IContactMethod.d.ts +0 -9
- package/dist/types/models/objects/IContactMethod.d.ts.map +0 -1
- package/dist/types/models/objects/IContract.d.ts +0 -38
- package/dist/types/models/objects/IContract.d.ts.map +0 -1
- package/dist/types/models/objects/IContractor.d.ts +0 -4
- package/dist/types/models/objects/IContractor.d.ts.map +0 -1
- package/dist/types/models/objects/IContractorDocument.d.ts +0 -60
- package/dist/types/models/objects/IContractorDocument.d.ts.map +0 -1
- package/dist/types/models/objects/ICurrency.d.ts +0 -9
- package/dist/types/models/objects/ICurrency.d.ts.map +0 -1
- package/dist/types/models/objects/IEmployee.d.ts +0 -4
- package/dist/types/models/objects/IEmployee.d.ts.map +0 -1
- package/dist/types/models/objects/INote.d.ts +0 -7
- package/dist/types/models/objects/INote.d.ts.map +0 -1
- package/dist/types/models/objects/IOrganisation.d.ts +0 -31
- package/dist/types/models/objects/IOrganisation.d.ts.map +0 -1
- package/dist/types/models/objects/IPerson.d.ts +0 -14
- package/dist/types/models/objects/IPerson.d.ts.map +0 -1
- package/dist/types/models/objects/ISystemUser.d.ts +0 -15
- package/dist/types/models/objects/ISystemUser.d.ts.map +0 -1
- package/dist/types/models/objects/IUser.d.ts +0 -8
- package/dist/types/models/objects/IUser.d.ts.map +0 -1
- package/dist/types/models/objects/IWebPortalLogin.d.ts +0 -9
- package/dist/types/models/objects/IWebPortalLogin.d.ts.map +0 -1
- package/dist/types/models/objects/TChangeRequest.d.ts +0 -65
- package/dist/types/models/objects/TChangeRequest.d.ts.map +0 -1
- package/dist/types/models/objects/TEnquiry.d.ts +0 -75
- package/dist/types/models/objects/TEnquiry.d.ts.map +0 -1
- package/dist/types/models/objects/index.d.ts +0 -23
- package/dist/types/models/objects/index.d.ts.map +0 -1
- package/dist/types/models/types/TCommon.d.ts +0 -12
- package/dist/types/models/types/TCommon.d.ts.map +0 -1
- package/dist/types/models/types/index.d.ts +0 -2
- package/dist/types/models/types/index.d.ts.map +0 -1
- package/dist/types/models/user-settings/TServiceUserSettings.d.ts +0 -118
- package/dist/types/models/user-settings/TServiceUserSettings.d.ts.map +0 -1
- package/dist/types/services/index.d.ts +0 -2
- package/dist/types/utils/date-and-time/calculate.d.ts.map +0 -1
- package/dist/types/utils/date-and-time/format.d.ts.map +0 -1
- package/dist/types/utils/date-and-time/index.d.ts.map +0 -1
- package/dist/types/utils/encoding/index.d.ts.map +0 -1
- package/dist/types/utils/encoding/stringBySecret.d.ts.map +0 -1
- package/dist/types/utils/strings/index.d.ts +0 -2
- package/dist/types/utils/strings/index.d.ts.map +0 -1
- package/dist/utils/strings/strings.d.ts +0 -11
- package/dist/utils/strings/strings.d.ts.map +0 -1
- package/dist/utils/strings/strings.js +0 -34
- package/dist/utils/strings/strings.js.map +0 -1
- /package/dist/{types/utils/date-and-time → date-and-time}/calculate.d.ts +0 -0
- /package/dist/{types/utils/date-and-time → date-and-time}/format.d.ts +0 -0
- /package/dist/{types/utils/date-and-time → date-and-time}/index.d.ts +0 -0
- /package/dist/{types/utils/encoding → encoding}/index.d.ts +0 -0
- /package/dist/{types/utils/encoding → encoding}/stringBySecret.d.ts +0 -0
- /package/dist/{models/schemas/notification → strings}/index.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate.d.ts","sourceRoot":"","sources":["../../src/date-and-time/calculate.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,SAAS,cAIrB,CAAA;AAED,eAAO,MAAM,QAAQ,cAIpB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
//local timezone by default
|
|
2
|
+
export const yesterday = () => {
|
|
3
|
+
//block scopes current Date
|
|
4
|
+
const currentDate = new Date();
|
|
5
|
+
return currentDate.setDate(currentDate.getDate() - 1);
|
|
6
|
+
};
|
|
7
|
+
export const tomorrow = () => {
|
|
8
|
+
//block scopes current Date
|
|
9
|
+
const currentDate = new Date();
|
|
10
|
+
return currentDate.setDate(currentDate.getDate() + 1);
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=calculate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate.js","sourceRoot":"","sources":["../../src/date-and-time/calculate.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAE3B,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE;IAC5B,2BAA2B;IAC3B,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;IAC9B,OAAO,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,GAAG,EAAE;IAC3B,2BAA2B;IAC3B,MAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAA;IAC9B,OAAO,WAAW,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/date-and-time/format.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/date-and-time/format.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/date-and-time/index.ts"],"names":[],"mappings":"AACA,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/date-and-time/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,cAAc,aAAa,CAAA;AAC3B,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/encoding/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encoding/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringBySecret.d.ts","sourceRoot":"","sources":["../../src/encoding/stringBySecret.ts"],"names":[],"mappings":"AAIA,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,UAczC;AAED,wBAAgB,aAAa,CAAC,aAAa,EAAE,MAAM,UAmBlD"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import CryptoJS from 'crypto-js';
|
|
2
|
+
const secretKey = process.env.URL_ENCODE_SECRET_KEY || '';
|
|
3
|
+
export function encryptString(data) {
|
|
4
|
+
const iv = CryptoJS.lib.WordArray.random(16); // Generate a random IV
|
|
5
|
+
const encrypted = CryptoJS.AES.encrypt(data, CryptoJS.enc.Utf8.parse(secretKey), {
|
|
6
|
+
iv: iv,
|
|
7
|
+
mode: CryptoJS.mode.CBC,
|
|
8
|
+
padding: CryptoJS.pad.Pkcs7,
|
|
9
|
+
});
|
|
10
|
+
// Prepend the IV to the ciphertext
|
|
11
|
+
const result = iv.concat(encrypted.ciphertext);
|
|
12
|
+
return encodeURIComponent(result.toString(CryptoJS.enc.Base64));
|
|
13
|
+
}
|
|
14
|
+
export function decryptString(encryptedData) {
|
|
15
|
+
// First, replace any spaces that might have been converted from + signs
|
|
16
|
+
const fixedEncryptedData = encryptedData.replace(/ /g, '+');
|
|
17
|
+
const decodedData = decodeURIComponent(fixedEncryptedData);
|
|
18
|
+
const bytes = CryptoJS.enc.Base64.parse(decodedData);
|
|
19
|
+
const iv = bytes.clone();
|
|
20
|
+
iv.sigBytes = 16;
|
|
21
|
+
iv.clamp();
|
|
22
|
+
bytes.words.splice(0, 4); // remove IV from the ciphertext
|
|
23
|
+
bytes.sigBytes -= 16;
|
|
24
|
+
// console.log({ encryptedData })
|
|
25
|
+
const decrypted = CryptoJS.AES.decrypt(
|
|
26
|
+
// @ts-expect-error as this works fine
|
|
27
|
+
{ ciphertext: bytes, salt: null }, CryptoJS.enc.Utf8.parse(secretKey), { iv: iv });
|
|
28
|
+
return decrypted.toString(CryptoJS.enc.Utf8);
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=stringBySecret.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringBySecret.js","sourceRoot":"","sources":["../../src/encoding/stringBySecret.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,WAAW,CAAA;AAEhC,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAA;AAEzD,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA,CAAC,uBAAuB;IACpE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CACpC,IAAI,EACJ,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAClC;QACE,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,GAAG;QACvB,OAAO,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK;KAC5B,CACF,CAAA;IACD,mCAAmC;IACnC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;IAC9C,OAAO,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,aAAqB;IACjD,wEAAwE;IACxE,MAAM,kBAAkB,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IAC3D,MAAM,WAAW,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;IAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACpD,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAA;IACxB,EAAE,CAAC,QAAQ,GAAG,EAAE,CAAA;IAChB,EAAE,CAAC,KAAK,EAAE,CAAA;IACV,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,gCAAgC;IACzD,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAA;IACpB,iCAAiC;IAEjC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO;IACpC,sCAAsC;IACtC,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EACjC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAClC,EAAE,EAAE,EAAE,EAAE,EAAE,CACX,CAAA;IACD,OAAO,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;AAC9C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestOrigin.js","sourceRoot":"","sources":["../../src/enums/RequestOrigin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,SAAS;IACf,SAAS,
|
|
1
|
+
{"version":3,"file":"RequestOrigin.js","sourceRoot":"","sources":["../../src/enums/RequestOrigin.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,QAAQ,EAAE,SAAS;IACnB,IAAI,EAAE,SAAS;IACf,SAAS,EAAE,SAAS;IACpB,SAAS,EAAE,SAAS;IACpB,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,SAAS;IACjB,QAAQ,EAAE,SAAS;IACnB,UAAU,EAAE,SAAS;IACrB,YAAY,EAAC,SAAS;CACvB,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/strings/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/strings/index.ts"],"names":[],"mappings":";AAAA,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate.test.d.ts","sourceRoot":"","sources":["../../../src/utils/date-and-time/calculate.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
2
|
+
import { getTimeOfDay, tomorrow, tomorrowUTC, yesterday, yesterdayUTC } from './calculate.js';
|
|
3
|
+
const useSystemTime = (iso) => {
|
|
4
|
+
vi.useFakeTimers();
|
|
5
|
+
vi.setSystemTime(new Date(iso));
|
|
6
|
+
};
|
|
7
|
+
const expectedTimeOfDayFromLocalHour = (hour) => {
|
|
8
|
+
if (hour >= 5 && hour < 12)
|
|
9
|
+
return 'morning';
|
|
10
|
+
if (hour >= 12 && hour < 18)
|
|
11
|
+
return 'afternoon';
|
|
12
|
+
return 'evening';
|
|
13
|
+
};
|
|
14
|
+
describe('getTimeOfDay', () => {
|
|
15
|
+
afterEach(() => {
|
|
16
|
+
vi.useRealTimers();
|
|
17
|
+
});
|
|
18
|
+
it('matches expected timestamp for a fixed instant (local time aware)', () => {
|
|
19
|
+
useSystemTime('2026-04-10T11:59:59.999Z');
|
|
20
|
+
const localHour = new Date().getHours();
|
|
21
|
+
expect(getTimeOfDay()).toBe(expectedTimeOfDayFromLocalHour(localHour));
|
|
22
|
+
});
|
|
23
|
+
it('matches expected timestamp for another fixed instant (local time aware)', () => {
|
|
24
|
+
useSystemTime('2026-04-10T17:59:59.999Z');
|
|
25
|
+
const localHour = new Date().getHours();
|
|
26
|
+
expect(getTimeOfDay()).toBe(expectedTimeOfDayFromLocalHour(localHour));
|
|
27
|
+
});
|
|
28
|
+
it('matches expected timestamp for early/late instants (local time aware)', () => {
|
|
29
|
+
useSystemTime('2026-04-10T04:59:59.999Z');
|
|
30
|
+
expect(getTimeOfDay()).toBe(expectedTimeOfDayFromLocalHour(new Date().getHours()));
|
|
31
|
+
useSystemTime('2026-04-10T18:00:00.000Z');
|
|
32
|
+
expect(getTimeOfDay()).toBe(expectedTimeOfDayFromLocalHour(new Date().getHours()));
|
|
33
|
+
});
|
|
34
|
+
});
|
|
35
|
+
describe('local date helpers', () => {
|
|
36
|
+
afterEach(() => {
|
|
37
|
+
vi.useRealTimers();
|
|
38
|
+
});
|
|
39
|
+
it('yesterday returns timestamp for local date -1 day', () => {
|
|
40
|
+
useSystemTime('2026-04-10T12:00:00.000Z');
|
|
41
|
+
const expected = new Date();
|
|
42
|
+
expected.setDate(expected.getDate() - 1);
|
|
43
|
+
expect(yesterday()).toBe(expected.getTime());
|
|
44
|
+
});
|
|
45
|
+
it('tomorrow returns timestamp for local date +1 day', () => {
|
|
46
|
+
useSystemTime('2026-04-10T12:00:00.000Z');
|
|
47
|
+
const expected = new Date();
|
|
48
|
+
expected.setDate(expected.getDate() + 1);
|
|
49
|
+
expect(tomorrow()).toBe(expected.getTime());
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
describe('UTC date helpers', () => {
|
|
53
|
+
afterEach(() => {
|
|
54
|
+
vi.useRealTimers();
|
|
55
|
+
});
|
|
56
|
+
it('yesterdayUTC returns timestamp for UTC date -1 day', () => {
|
|
57
|
+
useSystemTime('2026-04-10T12:00:00.000Z');
|
|
58
|
+
const expected = new Date();
|
|
59
|
+
expected.setUTCDate(expected.getUTCDate() - 1);
|
|
60
|
+
expect(yesterdayUTC()).toBe(expected.getTime());
|
|
61
|
+
});
|
|
62
|
+
it('tomorrowUTC returns timestamp for UTC date +1 day', () => {
|
|
63
|
+
useSystemTime('2026-04-10T12:00:00.000Z');
|
|
64
|
+
const expected = new Date();
|
|
65
|
+
expected.setUTCDate(expected.getUTCDate() + 1);
|
|
66
|
+
expect(tomorrowUTC()).toBe(expected.getTime());
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=calculate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculate.test.js","sourceRoot":"","sources":["../../../src/utils/date-and-time/calculate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.test.d.ts","sourceRoot":"","sources":["../../../src/utils/date-and-time/format.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { dateFromISO, humanisedDateFromISO } from './format.js';
|
|
3
|
+
describe('dateFromISO', () => {
|
|
4
|
+
it('returns locale date string from ISO input', () => {
|
|
5
|
+
const iso = '2026-04-10T12:34:56.000Z';
|
|
6
|
+
const expected = new Date(iso).toLocaleDateString();
|
|
7
|
+
expect(dateFromISO(iso)).toBe(expected);
|
|
8
|
+
});
|
|
9
|
+
});
|
|
10
|
+
describe('humanisedDateFromISO', () => {
|
|
11
|
+
it('returns en-GB humanised date (day short-month year)', () => {
|
|
12
|
+
const iso = '2026-04-10T12:34:56.000Z';
|
|
13
|
+
const expected = new Date(iso).toLocaleDateString('en-GB', {
|
|
14
|
+
day: 'numeric',
|
|
15
|
+
month: 'short',
|
|
16
|
+
year: 'numeric'
|
|
17
|
+
});
|
|
18
|
+
expect(humanisedDateFromISO(iso)).toBe(expected);
|
|
19
|
+
});
|
|
20
|
+
it('formats another date consistently', () => {
|
|
21
|
+
const iso = '2026-12-01T00:00:00.000Z';
|
|
22
|
+
const expected = new Date(iso).toLocaleDateString('en-GB', {
|
|
23
|
+
day: 'numeric',
|
|
24
|
+
month: 'short',
|
|
25
|
+
year: 'numeric'
|
|
26
|
+
});
|
|
27
|
+
expect(humanisedDateFromISO(iso)).toBe(expected);
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
//# sourceMappingURL=format.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.test.js","sourceRoot":"","sources":["../../../src/utils/date-and-time/format.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAA;AAE/D,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,GAAG,GAAG,0BAA0B,CAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,CAAA;QAEnD,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,GAAG,GAAG,0BAA0B,CAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACzD,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QAEF,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,GAAG,GAAG,0BAA0B,CAAA;QACtC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;YACzD,GAAG,EAAE,SAAS;YACd,KAAK,EAAE,OAAO;YACd,IAAI,EAAE,SAAS;SAChB,CAAC,CAAA;QAEF,MAAM,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringBySecret.test.d.ts","sourceRoot":"","sources":["../../../src/utils/encoding/stringBySecret.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { decryptString, detectMimeType, encryptString } from './stringBySecret.js';
|
|
3
|
+
describe('encryptString / decryptString', () => {
|
|
4
|
+
it('round-trips plain text', () => {
|
|
5
|
+
const input = 'hello world';
|
|
6
|
+
const encrypted = encryptString(input);
|
|
7
|
+
const decrypted = decryptString(encrypted);
|
|
8
|
+
expect(typeof encrypted).toBe('string');
|
|
9
|
+
expect(encrypted.length).toBeGreaterThan(0);
|
|
10
|
+
expect(decrypted).toBe(input);
|
|
11
|
+
});
|
|
12
|
+
it('round-trips unicode and symbols', () => {
|
|
13
|
+
const input = 'Olá-مرحبا-你好-😀-123_ABC';
|
|
14
|
+
const encrypted = encryptString(input);
|
|
15
|
+
const decrypted = decryptString(encrypted);
|
|
16
|
+
expect(decrypted).toBe(input);
|
|
17
|
+
});
|
|
18
|
+
it('decrypts when + chars were converted to spaces', () => {
|
|
19
|
+
const input = 'value with plus compatibility';
|
|
20
|
+
const encrypted = encryptString(input);
|
|
21
|
+
// Simulate transport layers that convert '+' into spaces.
|
|
22
|
+
const withSpaces = encrypted.replace(/\+/g, ' ');
|
|
23
|
+
const decrypted = decryptString(withSpaces);
|
|
24
|
+
expect(decrypted).toBe(input);
|
|
25
|
+
});
|
|
26
|
+
it('produces different ciphertexts for same plaintext because IV is random', () => {
|
|
27
|
+
const input = 'same payload';
|
|
28
|
+
const first = encryptString(input);
|
|
29
|
+
const second = encryptString(input);
|
|
30
|
+
expect(first).not.toBe(second);
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
describe('detectMimeType', () => {
|
|
34
|
+
it('returns undefined when file content is missing', () => {
|
|
35
|
+
expect(detectMimeType({ file: undefined, filename: 'a.pdf' })).toBeUndefined();
|
|
36
|
+
});
|
|
37
|
+
it('detects known binary signatures', () => {
|
|
38
|
+
expect(detectMimeType({ file: 'JVBERi0xxxx', filename: 'a.pdf' })).toBe('application/pdf');
|
|
39
|
+
expect(detectMimeType({ file: 'R0lGODdhxxxx', filename: 'a.gif' })).toBe('image/gif');
|
|
40
|
+
expect(detectMimeType({ file: 'iVBORw0KGgoxxxx', filename: 'a.png' })).toBe('image/png');
|
|
41
|
+
expect(detectMimeType({ file: '/9j/xxxx', filename: 'a.jpg' })).toBe('image/jpg');
|
|
42
|
+
expect(detectMimeType({ file: 'PKxxxx', filename: 'a.zip' })).toBe('application/zip');
|
|
43
|
+
});
|
|
44
|
+
it('maps Office PK/UEs signatures based on extension prefix', () => {
|
|
45
|
+
expect(detectMimeType({ file: 'PKxxxx', filename: 'deck.pptx' }))
|
|
46
|
+
.toBe('application/zippresentationml.presentation');
|
|
47
|
+
expect(detectMimeType({ file: 'UEsxxxx', filename: 'sheet.xlsx' }))
|
|
48
|
+
.toBe('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
49
|
+
expect(detectMimeType({ file: 'UEsxxxx', filename: 'doc.docx' }))
|
|
50
|
+
.toBe('application/vnd.openxmlformats-officedocument.wordprocessingml.document');
|
|
51
|
+
});
|
|
52
|
+
it('falls back to extension-based mapping when signature is unknown', () => {
|
|
53
|
+
expect(detectMimeType({ file: 'unknownpayload', filename: 'legacy.doc' }))
|
|
54
|
+
.toBe('application/msword');
|
|
55
|
+
expect(detectMimeType({ file: 'unknownpayload', filename: 'legacy.ppt' }))
|
|
56
|
+
.toBe('application/vnd.ms-powerpoint');
|
|
57
|
+
expect(detectMimeType({ file: 'unknownpayload', filename: 'legacy.xls' }))
|
|
58
|
+
.toBe('application/vnd.ms-excel');
|
|
59
|
+
expect(detectMimeType({ file: 'unknownpayload', filename: 'a.xml' }))
|
|
60
|
+
.toBe('text/xml');
|
|
61
|
+
expect(detectMimeType({ file: 'unknownpayload', filename: 'a.txt' }))
|
|
62
|
+
.toBe('text/plain');
|
|
63
|
+
});
|
|
64
|
+
it('uses bin when extension is absent and returns unknown when no match', () => {
|
|
65
|
+
expect(detectMimeType({ file: 'notsignature', filename: 'noextension' })).toBe('unknown');
|
|
66
|
+
expect(detectMimeType({ file: 'notsignature', filename: '' })).toBe('unknown');
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=stringBySecret.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stringBySecret.test.js","sourceRoot":"","sources":["../../../src/utils/encoding/stringBySecret.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manipulate.d.ts","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manipulate.d.ts","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MA8B9C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAyB9C,CAAA"}
|
|
@@ -1,33 +1,54 @@
|
|
|
1
|
+
const isAsciiAlphaNumericCode = (code) => {
|
|
2
|
+
return ((code >= 48 && code <= 57) ||
|
|
3
|
+
(code >= 97 && code <= 122));
|
|
4
|
+
};
|
|
5
|
+
const isSeparatorCode = (code) => !isAsciiAlphaNumericCode(code);
|
|
1
6
|
export const wordsToCamelCase = (str) => {
|
|
2
|
-
if (
|
|
7
|
+
if (str.length === 0)
|
|
3
8
|
return '';
|
|
4
9
|
const lowercase = str.toLowerCase();
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
10
|
+
let output = '';
|
|
11
|
+
let tokenIndex = 0;
|
|
12
|
+
let i = 0;
|
|
13
|
+
while (i < lowercase.length) {
|
|
14
|
+
const code = lowercase.charCodeAt(i);
|
|
15
|
+
if (isSeparatorCode(code)) {
|
|
16
|
+
output += lowercase.charAt(i);
|
|
17
|
+
i++;
|
|
12
18
|
continue;
|
|
13
|
-
|
|
19
|
+
}
|
|
20
|
+
let j = i;
|
|
21
|
+
while (j < lowercase.length && isAsciiAlphaNumericCode(lowercase.charCodeAt(j)))
|
|
22
|
+
j++;
|
|
23
|
+
const token = lowercase.slice(i, j);
|
|
24
|
+
if (token.length > 0) {
|
|
25
|
+
output += tokenIndex === 0 ? token : token.charAt(0).toUpperCase() + token.slice(1);
|
|
26
|
+
tokenIndex++;
|
|
27
|
+
}
|
|
28
|
+
i = j;
|
|
14
29
|
}
|
|
15
|
-
return
|
|
30
|
+
return output;
|
|
16
31
|
};
|
|
17
32
|
export const wordsToTitleCase = (str) => {
|
|
18
|
-
if (
|
|
33
|
+
if (str.length === 0)
|
|
19
34
|
return '';
|
|
20
35
|
const lowercase = str.toLowerCase();
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
36
|
+
let output = '';
|
|
37
|
+
let i = 0;
|
|
38
|
+
while (i < lowercase.length) {
|
|
39
|
+
const code = lowercase.charCodeAt(i);
|
|
40
|
+
if (isSeparatorCode(code)) {
|
|
41
|
+
output += lowercase.charAt(i);
|
|
42
|
+
i++;
|
|
28
43
|
continue;
|
|
29
|
-
|
|
44
|
+
}
|
|
45
|
+
let j = i;
|
|
46
|
+
while (j < lowercase.length && isAsciiAlphaNumericCode(lowercase.charCodeAt(j)))
|
|
47
|
+
j++;
|
|
48
|
+
const token = lowercase.slice(i, j);
|
|
49
|
+
output += token.charAt(0).toUpperCase() + token.slice(1);
|
|
50
|
+
i = j;
|
|
30
51
|
}
|
|
31
|
-
return
|
|
52
|
+
return output;
|
|
32
53
|
};
|
|
33
54
|
//# sourceMappingURL=manipulate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manipulate.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"manipulate.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manipulate.test.d.ts","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { wordsToCamelCase, wordsToTitleCase } from './manipulate.js';
|
|
3
|
+
describe('wordsToTitleCase', () => {
|
|
4
|
+
it('normalizes mixed casing', () => {
|
|
5
|
+
expect(wordsToTitleCase('john doe')).toBe('John Doe');
|
|
6
|
+
expect(wordsToTitleCase('John doe')).toBe('John Doe');
|
|
7
|
+
expect(wordsToTitleCase('JOHN DOE')).toBe('John Doe');
|
|
8
|
+
expect(wordsToTitleCase('jOhn dOE')).toBe('John Doe');
|
|
9
|
+
});
|
|
10
|
+
it('treats non-alphanumeric chars as separators', () => {
|
|
11
|
+
expect(wordsToTitleCase('john-doe')).toBe('John-Doe');
|
|
12
|
+
expect(wordsToTitleCase('john_doe')).toBe('John_Doe');
|
|
13
|
+
expect(wordsToTitleCase('john.doe')).toBe('John.Doe');
|
|
14
|
+
expect(wordsToTitleCase('john@doe')).toBe('John@Doe');
|
|
15
|
+
});
|
|
16
|
+
it('preserves repeated separators and digits', () => {
|
|
17
|
+
expect(wordsToTitleCase('john--doe')).toBe('John--Doe');
|
|
18
|
+
expect(wordsToTitleCase('v2-api')).toBe('V2-Api');
|
|
19
|
+
});
|
|
20
|
+
it('handles single words and empty input', () => {
|
|
21
|
+
expect(wordsToTitleCase('hELLo')).toBe('Hello');
|
|
22
|
+
expect(wordsToTitleCase('')).toBe('');
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
describe('wordsToCamelCase', () => {
|
|
26
|
+
it('keeps first token lowercase and title-cases later tokens', () => {
|
|
27
|
+
expect(wordsToCamelCase('john doe')).toBe('john Doe');
|
|
28
|
+
expect(wordsToCamelCase('JOHN DOE')).toBe('john Doe');
|
|
29
|
+
expect(wordsToCamelCase('jOhn dOE thIRD')).toBe('john Doe Third');
|
|
30
|
+
});
|
|
31
|
+
it('treats non-alphanumeric chars as separators', () => {
|
|
32
|
+
expect(wordsToCamelCase('john-doe')).toBe('john-Doe');
|
|
33
|
+
expect(wordsToCamelCase('john_doe')).toBe('john_Doe');
|
|
34
|
+
expect(wordsToCamelCase('john.doe')).toBe('john.Doe');
|
|
35
|
+
expect(wordsToCamelCase('john@doe')).toBe('john@Doe');
|
|
36
|
+
});
|
|
37
|
+
it('preserves repeated separators and digits', () => {
|
|
38
|
+
expect(wordsToCamelCase('john--doe')).toBe('john--Doe');
|
|
39
|
+
expect(wordsToCamelCase('V2-API')).toBe('v2-Api');
|
|
40
|
+
});
|
|
41
|
+
it('handles single words and empty input', () => {
|
|
42
|
+
expect(wordsToCamelCase('hELLo')).toBe('hello');
|
|
43
|
+
expect(wordsToCamelCase('')).toBe('');
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=manipulate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manipulate.test.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.test.d.ts","sourceRoot":"","sources":["../../../src/utils/strings/sanitize.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { sanitizeFileName } from './sanitize.js';
|
|
3
|
+
describe('sanitizeFileName', () => {
|
|
4
|
+
it('returns original name when all chars are Latin-1', () => {
|
|
5
|
+
expect(sanitizeFileName('invoice-2026.pdf', 'fallback.pdf')).toBe('invoice-2026.pdf');
|
|
6
|
+
expect(sanitizeFileName('name-ÿ.txt', 'fallback.txt')).toBe('name-ÿ.txt');
|
|
7
|
+
});
|
|
8
|
+
it('returns substitute when any char is outside Latin-1', () => {
|
|
9
|
+
expect(sanitizeFileName('report-Ā.txt', 'fallback.txt')).toBe('fallback.txt');
|
|
10
|
+
expect(sanitizeFileName('合同.pdf', 'fallback.pdf')).toBe('fallback.pdf');
|
|
11
|
+
expect(sanitizeFileName('emoji-😀.png', 'fallback.png')).toBe('fallback.png');
|
|
12
|
+
});
|
|
13
|
+
it('returns empty string for empty fileName', () => {
|
|
14
|
+
expect(sanitizeFileName('', 'fallback.txt')).toBe('');
|
|
15
|
+
});
|
|
16
|
+
it('returns substitute even if only one character is invalid', () => {
|
|
17
|
+
expect(sanitizeFileName('ok-name-then-漢字.txt', 'fallback.txt')).toBe('fallback.txt');
|
|
18
|
+
});
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=sanitize.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.test.js","sourceRoot":"","sources":["../../../src/utils/strings/sanitize.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEhD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;QACrF,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;IAC3E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QAC7E,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACvE,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IAC/E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;QAClE,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;IACtF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"name": "@workwell-global/toolkit",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"types": "dist/index.d.ts",
|
|
10
|
-
"version": "1.1.
|
|
10
|
+
"version": "1.1.7",
|
|
11
11
|
"files": [
|
|
12
12
|
"dist"
|
|
13
13
|
],
|
|
@@ -64,7 +64,10 @@
|
|
|
64
64
|
},
|
|
65
65
|
"scripts": {
|
|
66
66
|
"build": "tsc -p tsconfig.json && tsc-alias -p tsconfig.json",
|
|
67
|
-
"prepare": "npm run build"
|
|
67
|
+
"prepare": "npm run build",
|
|
68
|
+
"test": "vitest run",
|
|
69
|
+
"test:watch": "vitest",
|
|
70
|
+
"test:coverage": "vitest run --coverage"
|
|
68
71
|
},
|
|
69
72
|
"exports": {
|
|
70
73
|
".": {
|
|
@@ -160,7 +163,9 @@
|
|
|
160
163
|
"devDependencies": {
|
|
161
164
|
"@types/crypto-js": "^4.2.2",
|
|
162
165
|
"@types/node": "^22.0.0",
|
|
166
|
+
"@vitest/coverage-v8": "^2.1.8",
|
|
163
167
|
"tsc-alias": "^1.8.16",
|
|
164
|
-
"typescript": "^5.9.3"
|
|
168
|
+
"typescript": "^5.9.3",
|
|
169
|
+
"vitest": "^2.1.9"
|
|
165
170
|
}
|
|
166
171
|
}
|