@workwell-global/toolkit 1.1.6 → 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.
Files changed (286) hide show
  1. package/dist/date-and-time/calculate.d.ts.map +1 -0
  2. package/dist/date-and-time/calculate.js +12 -0
  3. package/dist/date-and-time/calculate.js.map +1 -0
  4. package/dist/date-and-time/format.d.ts.map +1 -0
  5. package/dist/date-and-time/format.js +2 -0
  6. package/dist/date-and-time/format.js.map +1 -0
  7. package/dist/date-and-time/index.d.ts.map +1 -0
  8. package/dist/date-and-time/index.js +4 -0
  9. package/dist/date-and-time/index.js.map +1 -0
  10. package/dist/encoding/index.d.ts.map +1 -0
  11. package/dist/encoding/index.js +2 -0
  12. package/dist/encoding/index.js.map +1 -0
  13. package/dist/encoding/stringBySecret.d.ts.map +1 -0
  14. package/dist/encoding/stringBySecret.js +30 -0
  15. package/dist/encoding/stringBySecret.js.map +1 -0
  16. package/dist/{types/services → strings}/index.d.ts.map +1 -1
  17. package/dist/strings/index.js +5 -0
  18. package/dist/strings/index.js.map +1 -0
  19. package/dist/types/index.d.ts.map +1 -1
  20. package/dist/types/index.js +5 -0
  21. package/dist/types/index.js.map +1 -0
  22. package/dist/utils/date-and-time/calculate.test.d.ts +2 -0
  23. package/dist/utils/date-and-time/calculate.test.d.ts.map +1 -0
  24. package/dist/utils/date-and-time/calculate.test.js +69 -0
  25. package/dist/utils/date-and-time/calculate.test.js.map +1 -0
  26. package/dist/utils/date-and-time/format.test.d.ts +2 -0
  27. package/dist/utils/date-and-time/format.test.d.ts.map +1 -0
  28. package/dist/utils/date-and-time/format.test.js +30 -0
  29. package/dist/utils/date-and-time/format.test.js.map +1 -0
  30. package/dist/utils/encoding/stringBySecret.test.d.ts +2 -0
  31. package/dist/utils/encoding/stringBySecret.test.d.ts.map +1 -0
  32. package/dist/utils/encoding/stringBySecret.test.js +69 -0
  33. package/dist/utils/encoding/stringBySecret.test.js.map +1 -0
  34. package/dist/utils/strings/manipulate.d.ts.map +1 -1
  35. package/dist/utils/strings/manipulate.js +41 -20
  36. package/dist/utils/strings/manipulate.js.map +1 -1
  37. package/dist/utils/strings/manipulate.test.d.ts +2 -0
  38. package/dist/utils/strings/manipulate.test.d.ts.map +1 -0
  39. package/dist/utils/strings/manipulate.test.js +46 -0
  40. package/dist/utils/strings/manipulate.test.js.map +1 -0
  41. package/dist/utils/strings/sanitize.test.d.ts +2 -0
  42. package/dist/utils/strings/sanitize.test.d.ts.map +1 -0
  43. package/dist/utils/strings/sanitize.test.js +20 -0
  44. package/dist/utils/strings/sanitize.test.js.map +1 -0
  45. package/package.json +8 -3
  46. package/dist/models/crm-dynamics/TChangeRequest.d.ts +0 -67
  47. package/dist/models/crm-dynamics/TChangeRequest.d.ts.map +0 -1
  48. package/dist/models/crm-dynamics/TChangeRequest.js +0 -2
  49. package/dist/models/crm-dynamics/TChangeRequest.js.map +0 -1
  50. package/dist/models/crm-dynamics/TEnquiry.d.ts +0 -68
  51. package/dist/models/crm-dynamics/TEnquiry.d.ts.map +0 -1
  52. package/dist/models/crm-dynamics/TEnquiry.js +0 -2
  53. package/dist/models/crm-dynamics/TEnquiry.js.map +0 -1
  54. package/dist/models/event/TEvent.d.ts +0 -49
  55. package/dist/models/event/TEvent.d.ts.map +0 -1
  56. package/dist/models/event/TEvent.js +0 -9
  57. package/dist/models/event/TEvent.js.map +0 -1
  58. package/dist/models/event/TEventBase.d.ts +0 -15
  59. package/dist/models/event/TEventBase.d.ts.map +0 -1
  60. package/dist/models/event/TEventBase.js +0 -8
  61. package/dist/models/event/TEventBase.js.map +0 -1
  62. package/dist/models/event/TEventCategories.d.ts +0 -738
  63. package/dist/models/event/TEventCategories.d.ts.map +0 -1
  64. package/dist/models/event/TEventCategories.js +0 -268
  65. package/dist/models/event/TEventCategories.js.map +0 -1
  66. package/dist/models/event/TEventRequest.d.ts +0 -37
  67. package/dist/models/event/TEventRequest.d.ts.map +0 -1
  68. package/dist/models/event/TEventRequest.js +0 -10
  69. package/dist/models/event/TEventRequest.js.map +0 -1
  70. package/dist/models/event/index.d.ts +0 -5
  71. package/dist/models/event/index.d.ts.map +0 -1
  72. package/dist/models/event/index.js +0 -5
  73. package/dist/models/event/index.js.map +0 -1
  74. package/dist/models/notification/TNotification.d.ts +0 -389
  75. package/dist/models/notification/TNotification.d.ts.map +0 -1
  76. package/dist/models/notification/TNotification.js +0 -13
  77. package/dist/models/notification/TNotification.js.map +0 -1
  78. package/dist/models/notification/TNotificationRequest.d.ts +0 -361
  79. package/dist/models/notification/TNotificationRequest.d.ts.map +0 -1
  80. package/dist/models/notification/TNotificationRequest.js +0 -19
  81. package/dist/models/notification/TNotificationRequest.js.map +0 -1
  82. package/dist/models/notification/TNotificationsHandlerResponse.d.ts +0 -5
  83. package/dist/models/notification/TNotificationsHandlerResponse.d.ts.map +0 -1
  84. package/dist/models/notification/TNotificationsHandlerResponse.js +0 -2
  85. package/dist/models/notification/TNotificationsHandlerResponse.js.map +0 -1
  86. package/dist/models/notification/index.d.ts +0 -4
  87. package/dist/models/notification/index.d.ts.map +0 -1
  88. package/dist/models/notification/index.js +0 -4
  89. package/dist/models/notification/index.js.map +0 -1
  90. package/dist/models/objects/ICombinedAssignmetnSCL.d.ts +0 -58
  91. package/dist/models/objects/ICombinedAssignmetnSCL.d.ts.map +0 -1
  92. package/dist/models/objects/ICombinedAssignmetnSCL.js +0 -2
  93. package/dist/models/objects/ICombinedAssignmetnSCL.js.map +0 -1
  94. package/dist/models/objects/TChangeRequest.d.ts +0 -65
  95. package/dist/models/objects/TChangeRequest.d.ts.map +0 -1
  96. package/dist/models/objects/TChangeRequest.js +0 -2
  97. package/dist/models/objects/TChangeRequest.js.map +0 -1
  98. package/dist/models/objects/TEnquiry.d.ts +0 -75
  99. package/dist/models/objects/TEnquiry.d.ts.map +0 -1
  100. package/dist/models/objects/TEnquiry.js +0 -2
  101. package/dist/models/objects/TEnquiry.js.map +0 -1
  102. package/dist/models/objects/TNotificationsHandlerResponse.d.ts +0 -5
  103. package/dist/models/objects/TNotificationsHandlerResponse.d.ts.map +0 -1
  104. package/dist/models/objects/TNotificationsHandlerResponse.js +0 -2
  105. package/dist/models/objects/TNotificationsHandlerResponse.js.map +0 -1
  106. package/dist/models/schemas/TEvent.d.ts +0 -48
  107. package/dist/models/schemas/TEvent.d.ts.map +0 -1
  108. package/dist/models/schemas/TEvent.js +0 -9
  109. package/dist/models/schemas/TEvent.js.map +0 -1
  110. package/dist/models/schemas/TEventBase.d.ts +0 -15
  111. package/dist/models/schemas/TEventBase.d.ts.map +0 -1
  112. package/dist/models/schemas/TEventBase.js +0 -7
  113. package/dist/models/schemas/TEventBase.js.map +0 -1
  114. package/dist/models/schemas/TEventCategories.d.ts +0 -737
  115. package/dist/models/schemas/TEventCategories.d.ts.map +0 -1
  116. package/dist/models/schemas/TEventCategories.js +0 -268
  117. package/dist/models/schemas/TEventCategories.js.map +0 -1
  118. package/dist/models/schemas/TEventRequest.d.ts +0 -36
  119. package/dist/models/schemas/TEventRequest.d.ts.map +0 -1
  120. package/dist/models/schemas/TEventRequest.js +0 -10
  121. package/dist/models/schemas/TEventRequest.js.map +0 -1
  122. package/dist/models/schemas/TNotification.d.ts +0 -388
  123. package/dist/models/schemas/TNotification.d.ts.map +0 -1
  124. package/dist/models/schemas/TNotification.js +0 -12
  125. package/dist/models/schemas/TNotification.js.map +0 -1
  126. package/dist/models/schemas/TNotificationRequest.d.ts +0 -360
  127. package/dist/models/schemas/TNotificationRequest.d.ts.map +0 -1
  128. package/dist/models/schemas/TNotificationRequest.js +0 -19
  129. package/dist/models/schemas/TNotificationRequest.js.map +0 -1
  130. package/dist/models/schemas/TNotificationsHandlerResponse.d.ts +0 -5
  131. package/dist/models/schemas/TNotificationsHandlerResponse.d.ts.map +0 -1
  132. package/dist/models/schemas/TNotificationsHandlerResponse.js +0 -2
  133. package/dist/models/schemas/TNotificationsHandlerResponse.js.map +0 -1
  134. package/dist/models/schemas/notification/index.d.ts.map +0 -1
  135. package/dist/models/schemas/notification/index.js +0 -2
  136. package/dist/models/schemas/notification/index.js.map +0 -1
  137. package/dist/models/types/TCommon.d.ts +0 -16
  138. package/dist/models/types/TCommon.d.ts.map +0 -1
  139. package/dist/models/types/TCommon.js +0 -2
  140. package/dist/models/types/TCommon.js.map +0 -1
  141. package/dist/models/types/TStages.d.ts +0 -16
  142. package/dist/models/types/TStages.d.ts.map +0 -1
  143. package/dist/models/types/TStages.js +0 -2
  144. package/dist/models/types/TStages.js.map +0 -1
  145. package/dist/models/user-settings/TServiceUserSettings.d.ts +0 -118
  146. package/dist/models/user-settings/TServiceUserSettings.d.ts.map +0 -1
  147. package/dist/models/user-settings/TServiceUserSettings.js +0 -80
  148. package/dist/models/user-settings/TServiceUserSettings.js.map +0 -1
  149. package/dist/models/user-settings/index.d.ts +0 -2
  150. package/dist/models/user-settings/index.d.ts.map +0 -1
  151. package/dist/models/user-settings/index.js +0 -2
  152. package/dist/models/user-settings/index.js.map +0 -1
  153. package/dist/types/enums/LinkedRoles.d.ts +0 -5
  154. package/dist/types/enums/LinkedRoles.d.ts.map +0 -1
  155. package/dist/types/enums/RBACPermissions.d.ts +0 -33
  156. package/dist/types/enums/RBACPermissions.d.ts.map +0 -1
  157. package/dist/types/enums/Regions.d.ts +0 -10
  158. package/dist/types/enums/Regions.d.ts.map +0 -1
  159. package/dist/types/enums/SCLASNStages.d.ts +0 -26
  160. package/dist/types/enums/SCLASNStages.d.ts.map +0 -1
  161. package/dist/types/enums/SCLASNStatus.d.ts +0 -13
  162. package/dist/types/enums/SCLASNStatus.d.ts.map +0 -1
  163. package/dist/types/enums/SolutionCategories.d.ts +0 -7
  164. package/dist/types/enums/SolutionCategories.d.ts.map +0 -1
  165. package/dist/types/enums/SolutionTypes.d.ts +0 -6
  166. package/dist/types/enums/SolutionTypes.d.ts.map +0 -1
  167. package/dist/types/enums/index.d.ts +0 -8
  168. package/dist/types/enums/index.d.ts.map +0 -1
  169. package/dist/types/models/crm-dynamics/IAccount.d.ts +0 -276
  170. package/dist/types/models/crm-dynamics/IAccount.d.ts.map +0 -1
  171. package/dist/types/models/crm-dynamics/IAddresses.d.ts +0 -52
  172. package/dist/types/models/crm-dynamics/IAddresses.d.ts.map +0 -1
  173. package/dist/types/models/crm-dynamics/IApplication.d.ts +0 -27
  174. package/dist/types/models/crm-dynamics/IApplication.d.ts.map +0 -1
  175. package/dist/types/models/crm-dynamics/IBankAccounts.d.ts +0 -42
  176. package/dist/types/models/crm-dynamics/IBankAccounts.d.ts.map +0 -1
  177. package/dist/types/models/crm-dynamics/ICRMPicklist.d.ts +0 -10
  178. package/dist/types/models/crm-dynamics/ICRMPicklist.d.ts.map +0 -1
  179. package/dist/types/models/crm-dynamics/ICompanyDocument.d.ts +0 -14
  180. package/dist/types/models/crm-dynamics/ICompanyDocument.d.ts.map +0 -1
  181. package/dist/types/models/crm-dynamics/IContact.d.ts +0 -311
  182. package/dist/types/models/crm-dynamics/IContact.d.ts.map +0 -1
  183. package/dist/types/models/crm-dynamics/IContractorDocument.d.ts +0 -27
  184. package/dist/types/models/crm-dynamics/IContractorDocument.d.ts.map +0 -1
  185. package/dist/types/models/crm-dynamics/IDocumentBase.d.ts +0 -41
  186. package/dist/types/models/crm-dynamics/IDocumentBase.d.ts.map +0 -1
  187. package/dist/types/models/crm-dynamics/ISystemUser.d.ts +0 -151
  188. package/dist/types/models/crm-dynamics/ISystemUser.d.ts.map +0 -1
  189. package/dist/types/models/crm-dynamics/IWebPortalLogin.d.ts +0 -9
  190. package/dist/types/models/crm-dynamics/IWebPortalLogin.d.ts.map +0 -1
  191. package/dist/types/models/crm-dynamics/TChangeRequest.d.ts +0 -67
  192. package/dist/types/models/crm-dynamics/TChangeRequest.d.ts.map +0 -1
  193. package/dist/types/models/crm-dynamics/TEnquiry.d.ts +0 -68
  194. package/dist/types/models/crm-dynamics/TEnquiry.d.ts.map +0 -1
  195. package/dist/types/models/crm-dynamics/index.d.ts +0 -14
  196. package/dist/types/models/crm-dynamics/index.d.ts.map +0 -1
  197. package/dist/types/models/event/TEvent.d.ts +0 -49
  198. package/dist/types/models/event/TEvent.d.ts.map +0 -1
  199. package/dist/types/models/event/TEventBase.d.ts +0 -15
  200. package/dist/types/models/event/TEventBase.d.ts.map +0 -1
  201. package/dist/types/models/event/TEventCategories.d.ts +0 -738
  202. package/dist/types/models/event/TEventCategories.d.ts.map +0 -1
  203. package/dist/types/models/event/TEventRequest.d.ts +0 -37
  204. package/dist/types/models/event/TEventRequest.d.ts.map +0 -1
  205. package/dist/types/models/event/index.d.ts +0 -5
  206. package/dist/types/models/event/index.d.ts.map +0 -1
  207. package/dist/types/models/integration-auth0/IAuthUser.d.ts +0 -37
  208. package/dist/types/models/integration-auth0/IAuthUser.d.ts.map +0 -1
  209. package/dist/types/models/notification/TNotification.d.ts +0 -389
  210. package/dist/types/models/notification/TNotification.d.ts.map +0 -1
  211. package/dist/types/models/notification/TNotificationRequest.d.ts +0 -361
  212. package/dist/types/models/notification/TNotificationRequest.d.ts.map +0 -1
  213. package/dist/types/models/notification/TNotificationsHandlerResponse.d.ts +0 -5
  214. package/dist/types/models/notification/TNotificationsHandlerResponse.d.ts.map +0 -1
  215. package/dist/types/models/notification/index.d.ts +0 -4
  216. package/dist/types/models/notification/index.d.ts.map +0 -1
  217. package/dist/types/models/objects/IAccount.d.ts +0 -58
  218. package/dist/types/models/objects/IAccount.d.ts.map +0 -1
  219. package/dist/types/models/objects/IAddress.d.ts +0 -27
  220. package/dist/types/models/objects/IAddress.d.ts.map +0 -1
  221. package/dist/types/models/objects/IApplication.d.ts +0 -14
  222. package/dist/types/models/objects/IApplication.d.ts.map +0 -1
  223. package/dist/types/models/objects/IBankAccounts.d.ts +0 -38
  224. package/dist/types/models/objects/IBankAccounts.d.ts.map +0 -1
  225. package/dist/types/models/objects/ICompany.d.ts +0 -16
  226. package/dist/types/models/objects/ICompany.d.ts.map +0 -1
  227. package/dist/types/models/objects/ICompanyDocument.d.ts +0 -61
  228. package/dist/types/models/objects/ICompanyDocument.d.ts.map +0 -1
  229. package/dist/types/models/objects/ICompanyPosition.d.ts +0 -6
  230. package/dist/types/models/objects/ICompanyPosition.d.ts.map +0 -1
  231. package/dist/types/models/objects/IContact.d.ts +0 -147
  232. package/dist/types/models/objects/IContact.d.ts.map +0 -1
  233. package/dist/types/models/objects/IContactMethod.d.ts +0 -9
  234. package/dist/types/models/objects/IContactMethod.d.ts.map +0 -1
  235. package/dist/types/models/objects/IContract.d.ts +0 -38
  236. package/dist/types/models/objects/IContract.d.ts.map +0 -1
  237. package/dist/types/models/objects/IContractor.d.ts +0 -4
  238. package/dist/types/models/objects/IContractor.d.ts.map +0 -1
  239. package/dist/types/models/objects/IContractorDocument.d.ts +0 -60
  240. package/dist/types/models/objects/IContractorDocument.d.ts.map +0 -1
  241. package/dist/types/models/objects/ICurrency.d.ts +0 -9
  242. package/dist/types/models/objects/ICurrency.d.ts.map +0 -1
  243. package/dist/types/models/objects/IEmployee.d.ts +0 -4
  244. package/dist/types/models/objects/IEmployee.d.ts.map +0 -1
  245. package/dist/types/models/objects/INote.d.ts +0 -7
  246. package/dist/types/models/objects/INote.d.ts.map +0 -1
  247. package/dist/types/models/objects/IOrganisation.d.ts +0 -31
  248. package/dist/types/models/objects/IOrganisation.d.ts.map +0 -1
  249. package/dist/types/models/objects/IPerson.d.ts +0 -14
  250. package/dist/types/models/objects/IPerson.d.ts.map +0 -1
  251. package/dist/types/models/objects/ISystemUser.d.ts +0 -15
  252. package/dist/types/models/objects/ISystemUser.d.ts.map +0 -1
  253. package/dist/types/models/objects/IUser.d.ts +0 -8
  254. package/dist/types/models/objects/IUser.d.ts.map +0 -1
  255. package/dist/types/models/objects/IWebPortalLogin.d.ts +0 -9
  256. package/dist/types/models/objects/IWebPortalLogin.d.ts.map +0 -1
  257. package/dist/types/models/objects/TChangeRequest.d.ts +0 -65
  258. package/dist/types/models/objects/TChangeRequest.d.ts.map +0 -1
  259. package/dist/types/models/objects/TEnquiry.d.ts +0 -75
  260. package/dist/types/models/objects/TEnquiry.d.ts.map +0 -1
  261. package/dist/types/models/objects/index.d.ts +0 -23
  262. package/dist/types/models/objects/index.d.ts.map +0 -1
  263. package/dist/types/models/types/TCommon.d.ts +0 -12
  264. package/dist/types/models/types/TCommon.d.ts.map +0 -1
  265. package/dist/types/models/types/index.d.ts +0 -2
  266. package/dist/types/models/types/index.d.ts.map +0 -1
  267. package/dist/types/models/user-settings/TServiceUserSettings.d.ts +0 -118
  268. package/dist/types/models/user-settings/TServiceUserSettings.d.ts.map +0 -1
  269. package/dist/types/services/index.d.ts +0 -2
  270. package/dist/types/utils/date-and-time/calculate.d.ts.map +0 -1
  271. package/dist/types/utils/date-and-time/format.d.ts.map +0 -1
  272. package/dist/types/utils/date-and-time/index.d.ts.map +0 -1
  273. package/dist/types/utils/encoding/index.d.ts.map +0 -1
  274. package/dist/types/utils/encoding/stringBySecret.d.ts.map +0 -1
  275. package/dist/types/utils/strings/index.d.ts +0 -2
  276. package/dist/types/utils/strings/index.d.ts.map +0 -1
  277. package/dist/utils/strings/strings.d.ts +0 -11
  278. package/dist/utils/strings/strings.d.ts.map +0 -1
  279. package/dist/utils/strings/strings.js +0 -34
  280. package/dist/utils/strings/strings.js.map +0 -1
  281. /package/dist/{types/utils/date-and-time → date-and-time}/calculate.d.ts +0 -0
  282. /package/dist/{types/utils/date-and-time → date-and-time}/format.d.ts +0 -0
  283. /package/dist/{types/utils/date-and-time → date-and-time}/index.d.ts +0 -0
  284. /package/dist/{types/utils/encoding → encoding}/index.d.ts +0 -0
  285. /package/dist/{types/utils/encoding → encoding}/stringBySecret.d.ts +0 -0
  286. /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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=format.js.map
@@ -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,4 @@
1
+ // imports must be js files, but will auto map to ts files during build
2
+ export * from './format.js';
3
+ export * from './calculate.js';
4
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export * from './stringBySecret.js';
2
+ //# sourceMappingURL=index.js.map
@@ -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":"index.d.ts","sourceRoot":"","sources":["../../../src/services/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/strings/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ export {};
2
+ // export * from './format';
3
+ // export * from './parse';
4
+ // export * from './diff';
5
+ //# sourceMappingURL=index.js.map
@@ -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,5 @@
1
+ export {};
2
+ // export * from './format';
3
+ // export * from './parse';
4
+ // export * from './diff';
5
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=calculate.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=format.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=stringBySecret.test.d.ts.map
@@ -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":"AAAA,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAiB9C,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,KAAK,MAAM,KAAG,MAiB9C,CAAA"}
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 (!str || str.length === 0)
7
+ if (str.length === 0)
3
8
  return '';
4
9
  const lowercase = str.toLowerCase();
5
- const words = lowercase.split(' ');
6
- if (words.length === 1) {
7
- return lowercase.charAt(0).toUpperCase() + lowercase.slice(1);
8
- }
9
- for (let i = 1; i < str.length; i++) {
10
- const word = words[i];
11
- if (!word || word.length === 0)
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
- words[i] = word.charAt(0).toUpperCase() + words.slice(1);
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 words.join(' ');
30
+ return output;
16
31
  };
17
32
  export const wordsToTitleCase = (str) => {
18
- if (!str || str.length === 0)
33
+ if (str.length === 0)
19
34
  return '';
20
35
  const lowercase = str.toLowerCase();
21
- const words = lowercase.split(' ');
22
- if (words.length === 1) {
23
- return lowercase.charAt(0).toUpperCase() + lowercase.slice(1);
24
- }
25
- for (let i = 0; i < words.length; i++) {
26
- const word = words[i];
27
- if (!word || word.length === 0)
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
- words[i] = word.charAt(0).toUpperCase() + words.slice(1);
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 words.join(' ');
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,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QACxC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEvC,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,EAAE,CAAA;IACnC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAElC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC/D,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QACxC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AACxB,CAAC,CAAA"}
1
+ {"version":3,"file":"manipulate.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=manipulate.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sanitize.test.d.ts.map
@@ -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.6",
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
  }