@workwell-global/toolkit 1.1.45 → 1.1.47

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 (151) hide show
  1. package/dist/models/schemas/api/_entityTools/CreateEntityTools.d.ts +11 -9
  2. package/dist/models/schemas/api/_entityTools/CreateEntityTools.d.ts.map +1 -1
  3. package/dist/models/schemas/api/_entityTools/CreateEntityTools.js +8 -8
  4. package/dist/models/schemas/api/_entityTools/CreateEntityTools.js.map +1 -1
  5. package/dist/models/schemas/api/_entityTools/MappersEntityTools.d.ts +2 -2
  6. package/dist/models/schemas/api/_entityTools/MappersEntityTools.d.ts.map +1 -1
  7. package/dist/models/schemas/api/_entityTools/MappersEntityTools.js +78 -70
  8. package/dist/models/schemas/api/_entityTools/MappersEntityTools.js.map +1 -1
  9. package/dist/models/schemas/api/_entityTools/SchemasEntityTools.d.ts.map +1 -1
  10. package/dist/models/schemas/api/_entityTools/SchemasEntityTools.js +4 -1
  11. package/dist/models/schemas/api/_entityTools/SchemasEntityTools.js.map +1 -1
  12. package/dist/models/schemas/api/account/DAccountAPI.js +1 -1
  13. package/dist/models/schemas/api/account/DAccountAPI.js.map +1 -1
  14. package/dist/models/schemas/api/account/TAccountAPI.d.ts +229 -229
  15. package/dist/models/schemas/api/account/index.d.ts +229 -229
  16. package/dist/models/schemas/api/activityMimeAttachment/TActivityMimeAttachmentAPI.d.ts +60 -60
  17. package/dist/models/schemas/api/activityMimeAttachment/index.d.ts +60 -60
  18. package/dist/models/schemas/api/activityParty/DActivityPartyAPI.d.ts +5 -5
  19. package/dist/models/schemas/api/activityParty/DActivityPartyAPI.js +5 -5
  20. package/dist/models/schemas/api/activityParty/DActivityPartyAPI.js.map +1 -1
  21. package/dist/models/schemas/api/activityParty/TActivityPartyAPI.d.ts +134 -134
  22. package/dist/models/schemas/api/activityParty/index.d.ts +134 -134
  23. package/dist/models/schemas/api/activityPointer/DActivityPointerAPI.js +1 -1
  24. package/dist/models/schemas/api/activityPointer/DActivityPointerAPI.js.map +1 -1
  25. package/dist/models/schemas/api/activityPointer/TActivityPointerAPI.d.ts +58 -58
  26. package/dist/models/schemas/api/activityPointer/index.d.ts +58 -58
  27. package/dist/models/schemas/api/assignment/DAssignmentAPI.js +1 -1
  28. package/dist/models/schemas/api/assignment/DAssignmentAPI.js.map +1 -1
  29. package/dist/models/schemas/api/assignment/TAssignmentAPI.d.ts +304 -304
  30. package/dist/models/schemas/api/assignment/index.d.ts +304 -304
  31. package/dist/models/schemas/api/assignmentLog/TAssignmentLogAPI.d.ts +66 -66
  32. package/dist/models/schemas/api/assignmentLog/index.d.ts +66 -66
  33. package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.d.ts +1 -1
  34. package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.d.ts.map +1 -1
  35. package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.js +2 -2
  36. package/dist/models/schemas/api/caseManagement/DCaseManagementAPI.js.map +1 -1
  37. package/dist/models/schemas/api/caseManagement/TCaseManagementAPI.d.ts +176 -176
  38. package/dist/models/schemas/api/caseManagement/index.d.ts +176 -176
  39. package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.d.ts +4 -4
  40. package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.d.ts.map +1 -1
  41. package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.js +5 -4
  42. package/dist/models/schemas/api/changeRequest/DChangeRequestAPI.js.map +1 -1
  43. package/dist/models/schemas/api/changeRequest/TChangeRequestAPI.d.ts +143 -143
  44. package/dist/models/schemas/api/changeRequest/index.d.ts +143 -143
  45. package/dist/models/schemas/api/companyDocument/TCompanyDocumentAPI.d.ts +116 -116
  46. package/dist/models/schemas/api/companyDocument/index.d.ts +116 -116
  47. package/dist/models/schemas/api/contact/DContactAPI.js +1 -1
  48. package/dist/models/schemas/api/contact/DContactAPI.js.map +1 -1
  49. package/dist/models/schemas/api/contact/TContactAPI.d.ts +264 -264
  50. package/dist/models/schemas/api/contact/index.d.ts +264 -264
  51. package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.d.ts +11 -0
  52. package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.d.ts.map +1 -1
  53. package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.js +12 -1
  54. package/dist/models/schemas/api/contractorDocument/DContractorDocumentAPI.js.map +1 -1
  55. package/dist/models/schemas/api/contractorDocument/TContractorDocumentAPI.d.ts +170 -150
  56. package/dist/models/schemas/api/contractorDocument/TContractorDocumentAPI.d.ts.map +1 -1
  57. package/dist/models/schemas/api/contractorDocument/index.d.ts +174 -150
  58. package/dist/models/schemas/api/contractorDocument/index.d.ts.map +1 -1
  59. package/dist/models/schemas/api/country/TCountryAPI.d.ts +70 -70
  60. package/dist/models/schemas/api/country/index.d.ts +70 -70
  61. package/dist/models/schemas/api/countryOffering/TCountryOfferingAPI.d.ts +50 -50
  62. package/dist/models/schemas/api/countryOffering/index.d.ts +50 -50
  63. package/dist/models/schemas/api/currency/TCurrencyAPI.d.ts +50 -50
  64. package/dist/models/schemas/api/currency/index.d.ts +50 -50
  65. package/dist/models/schemas/api/customerAddress/TCustomerAddressAPI.d.ts +80 -80
  66. package/dist/models/schemas/api/customerAddress/index.d.ts +80 -80
  67. package/dist/models/schemas/api/disqualificationReason/TDisqualificationAPI.d.ts +50 -50
  68. package/dist/models/schemas/api/disqualificationReason/index.d.ts +50 -50
  69. package/dist/models/schemas/api/email/DEmailAPI.d.ts.map +1 -1
  70. package/dist/models/schemas/api/email/DEmailAPI.js +1 -1
  71. package/dist/models/schemas/api/email/DEmailAPI.js.map +1 -1
  72. package/dist/models/schemas/api/email/TEmailAPI.d.ts +99 -99
  73. package/dist/models/schemas/api/email/index.d.ts +99 -99
  74. package/dist/models/schemas/api/enquiry/DEnquiryAPI.d.ts.map +1 -1
  75. package/dist/models/schemas/api/enquiry/DEnquiryAPI.js +1 -1
  76. package/dist/models/schemas/api/enquiry/DEnquiryAPI.js.map +1 -1
  77. package/dist/models/schemas/api/enquiry/TEnquiryAPI.d.ts +86 -86
  78. package/dist/models/schemas/api/enquiry/index.d.ts +86 -86
  79. package/dist/models/schemas/api/margin/TMarginAPI.d.ts +78 -78
  80. package/dist/models/schemas/api/margin/index.d.ts +78 -78
  81. package/dist/models/schemas/api/nationality/TNationalityAPI.d.ts +56 -56
  82. package/dist/models/schemas/api/nationality/index.d.ts +56 -56
  83. package/dist/models/schemas/api/note/DNoteAPI.d.ts +2 -2
  84. package/dist/models/schemas/api/note/DNoteAPI.d.ts.map +1 -1
  85. package/dist/models/schemas/api/note/DNoteAPI.js +2 -2
  86. package/dist/models/schemas/api/note/DNoteAPI.js.map +1 -1
  87. package/dist/models/schemas/api/referral/DReferralAPI.d.ts.map +1 -1
  88. package/dist/models/schemas/api/referral/DReferralAPI.js +1 -1
  89. package/dist/models/schemas/api/referral/DReferralAPI.js.map +1 -1
  90. package/dist/models/schemas/api/referral/TReferralAPI.d.ts +244 -244
  91. package/dist/models/schemas/api/referral/index.d.ts +244 -244
  92. package/dist/models/schemas/api/referralLog/TReferralLogAPI.d.ts +65 -65
  93. package/dist/models/schemas/api/referralLog/index.d.ts +65 -65
  94. package/dist/models/schemas/api/role/TRoleAPI.d.ts +50 -50
  95. package/dist/models/schemas/api/role/index.d.ts +50 -50
  96. package/dist/models/schemas/api/simulation/DSimulationAPI.js +1 -1
  97. package/dist/models/schemas/api/simulation/DSimulationAPI.js.map +1 -1
  98. package/dist/models/schemas/api/simulation/TSimulationAPI.d.ts +134 -134
  99. package/dist/models/schemas/api/simulation/index.d.ts +134 -134
  100. package/dist/models/schemas/api/solution/TSolutionAPI.d.ts +134 -134
  101. package/dist/models/schemas/api/solution/index.d.ts +134 -134
  102. package/dist/models/schemas/api/systemUser/TSystemUserAPI.d.ts +160 -160
  103. package/dist/models/schemas/api/systemUser/index.d.ts +160 -160
  104. package/dist/models/schemas/api/webMessage/DWebMessageAPI.d.ts +6 -6
  105. package/dist/models/schemas/api/webMessage/DWebMessageAPI.d.ts.map +1 -1
  106. package/dist/models/schemas/api/webMessage/DWebMessageAPI.js +3 -5
  107. package/dist/models/schemas/api/webMessage/DWebMessageAPI.js.map +1 -1
  108. package/dist/models/schemas/api/webMessage/TWebMessageAPI.d.ts +62 -62
  109. package/dist/models/schemas/api/webMessage/index.d.ts +62 -62
  110. package/dist/models/schemas/bff/caseDetail/SGetCaseEmailBFF.d.ts +5 -5
  111. package/dist/models/schemas/bff/caseDetail/SGetCaseEmailPartiesBFF.d.ts +5 -5
  112. package/dist/models/schemas/bff/caseDetail/SPostCaseBFF.d.ts +3 -3
  113. package/dist/models/schemas/bff/caseDetail/SPostCaseResponseBFF.d.ts +1 -1
  114. package/dist/models/schemas/bff/casesSummary/SGetCaseEmailPartiesBFF.d.ts +5 -5
  115. package/dist/models/schemas/bff/casesSummary/SGetCasesSummaryEmailBFF.d.ts +5 -5
  116. package/dist/models/schemas/bff/changeRequest/SGetChangeRequestBFF.d.ts +8 -1
  117. package/dist/models/schemas/bff/changeRequest/SGetChangeRequestBFF.d.ts.map +1 -1
  118. package/dist/models/schemas/bff/changeRequest/SGetChangeRequestDocumentBFF.d.ts +7 -0
  119. package/dist/models/schemas/bff/changeRequest/SGetChangeRequestDocumentBFF.d.ts.map +1 -1
  120. package/dist/models/schemas/bff/changeRequest/SPostExtensionBFF.d.ts +1 -1
  121. package/dist/models/schemas/bff/contractorDocuments/SGetContractorDocumentBFF.d.ts +7 -0
  122. package/dist/models/schemas/bff/contractorDocuments/SGetContractorDocumentBFF.d.ts.map +1 -1
  123. package/dist/models/schemas/bff/contractorDocuments/SPostContractorDocumentBFF.d.ts +14 -0
  124. package/dist/models/schemas/bff/contractorDocuments/SPostContractorDocumentBFF.d.ts.map +1 -1
  125. package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsAssignmentDocumentBFF.d.ts +7 -0
  126. package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsAssignmentDocumentBFF.d.ts.map +1 -1
  127. package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsReferralDocumentBFF.d.ts +7 -0
  128. package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsReferralDocumentBFF.d.ts.map +1 -1
  129. package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsWorkerSummaryBFF.d.ts +84 -0
  130. package/dist/models/schemas/bff/engagementsSummary/SGetEngagementsWorkerSummaryBFF.d.ts.map +1 -1
  131. package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.d.ts +15 -8
  132. package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.d.ts.map +1 -1
  133. package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.js +2 -2
  134. package/dist/models/schemas/bff/engagementsSummary/SPostEngagementsWorkerSummaryBFF.js.map +1 -1
  135. package/dist/models/schemas/bff/enquiryDetail/SGetEnquiryBFF.d.ts +7 -0
  136. package/dist/models/schemas/bff/enquiryDetail/SGetEnquiryBFF.d.ts.map +1 -1
  137. package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimBFF.d.ts +7 -0
  138. package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimBFF.d.ts.map +1 -1
  139. package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimDocumentBFF.d.ts +7 -0
  140. package/dist/models/schemas/bff/enquiryDetail/SGetEnquirySimDocumentBFF.d.ts.map +1 -1
  141. package/dist/models/schemas/bff/personalDetails/SGetPersonalDetails.d.ts +7 -0
  142. package/dist/models/schemas/bff/personalDetails/SGetPersonalDetails.d.ts.map +1 -1
  143. package/dist/models/schemas/bff/personalDetails/SPostPersonalDetails.d.ts +7 -0
  144. package/dist/models/schemas/bff/personalDetails/SPostPersonalDetails.d.ts.map +1 -1
  145. package/dist/utils/strings/manipulate.d.ts +11 -1
  146. package/dist/utils/strings/manipulate.d.ts.map +1 -1
  147. package/dist/utils/strings/manipulate.js +47 -42
  148. package/dist/utils/strings/manipulate.js.map +1 -1
  149. package/dist/utils/strings/manipulate.test.js +42 -0
  150. package/dist/utils/strings/manipulate.test.js.map +1 -1
  151. package/package.json +1 -1
@@ -1,57 +1,62 @@
1
- const isAsciiAlphaNumericCode = (code) => {
2
- return (code >= 48 && code <= 57) || (code >= 97 && code <= 122);
3
- };
4
- const isSeparatorCode = (code) => !isAsciiAlphaNumericCode(code);
5
- export const wordsToCamelCase = (str) => {
1
+ /**
2
+ * A "word" character is any Unicode letter, number, or combining mark.
3
+ * Combining marks (e.g. U+0308 in the decomposed form of "ä") must stay
4
+ * attached to the letter before them, otherwise they split a word in two.
5
+ * Anything else (space, hyphen, apostrophe, punctuation) is a separator and
6
+ * is emitted unchanged.
7
+ */
8
+ const WORD_CHAR = /^[\p{L}\p{N}\p{M}]$/u;
9
+ const isWordChar = (ch) => WORD_CHAR.test(ch);
10
+ /**
11
+ * Upper-cases the first character of every word and lower-cases the rest.
12
+ * Separators are preserved and each starts a new word, so hyphenated and
13
+ * apostrophised names keep their inner capital:
14
+ * "KERRI-ANNE O'BRIEN" -> "Kerri-Anne O'Brien", "TÄNZER" -> "Tänzer".
15
+ */
16
+ export const wordsToTitleCase = (str) => {
6
17
  if (str.length === 0)
7
18
  return '';
8
- const lowercase = str.toLowerCase();
19
+ // Lower-case the whole string first so context-sensitive rules
20
+ // (e.g. Greek final sigma) are applied correctly.
9
21
  let output = '';
10
- let tokenIndex = 0;
11
- let i = 0;
12
- while (i < lowercase.length) {
13
- const code = lowercase.charCodeAt(i);
14
- if (isSeparatorCode(code)) {
15
- output += lowercase.charAt(i);
16
- i++;
17
- continue;
22
+ let atWordStart = true;
23
+ for (const ch of str.toLowerCase()) {
24
+ if (isWordChar(ch)) {
25
+ output += atWordStart ? ch.toUpperCase() : ch;
26
+ atWordStart = false;
18
27
  }
19
- let j = i;
20
- while (j < lowercase.length &&
21
- isAsciiAlphaNumericCode(lowercase.charCodeAt(j)))
22
- j++;
23
- const token = lowercase.slice(i, j);
24
- if (token.length > 0) {
25
- output +=
26
- tokenIndex === 0
27
- ? token
28
- : token.charAt(0).toUpperCase() + token.slice(1);
29
- tokenIndex++;
28
+ else {
29
+ output += ch;
30
+ atWordStart = true;
30
31
  }
31
- i = j;
32
32
  }
33
33
  return output;
34
34
  };
35
- export const wordsToTitleCase = (str) => {
35
+ /**
36
+ * Lower-cases the first word, title-cases every later word, and preserves
37
+ * separators: "V2-API.js" -> "v2-Api.Js".
38
+ */
39
+ export const wordsToCamelCase = (str) => {
36
40
  if (str.length === 0)
37
41
  return '';
38
- const lowercase = str.toLowerCase();
39
42
  let output = '';
40
- let i = 0;
41
- while (i < lowercase.length) {
42
- const code = lowercase.charCodeAt(i);
43
- if (isSeparatorCode(code)) {
44
- output += lowercase.charAt(i);
45
- i++;
46
- continue;
43
+ let atWordStart = true;
44
+ let wordIndex = 0;
45
+ for (const ch of str.toLowerCase()) {
46
+ if (isWordChar(ch)) {
47
+ if (atWordStart) {
48
+ output += wordIndex === 0 ? ch : ch.toUpperCase();
49
+ wordIndex++;
50
+ }
51
+ else {
52
+ output += ch;
53
+ }
54
+ atWordStart = false;
55
+ }
56
+ else {
57
+ output += ch;
58
+ atWordStart = true;
47
59
  }
48
- let j = i;
49
- while (j < lowercase.length &&
50
- isAsciiAlphaNumericCode(lowercase.charCodeAt(j)))
51
- j++;
52
- const token = lowercase.slice(i, j);
53
- output += token.charAt(0).toUpperCase() + token.slice(1);
54
- i = j;
55
60
  }
56
61
  return output;
57
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"manipulate.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manipulate.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,SAAS,GAAG,sBAAsB,CAAA;AAExC,MAAM,UAAU,GAAG,CAAC,EAAU,EAAW,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAE9D;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,+DAA+D;IAC/D,kDAAkD;IAClD,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,WAAW,GAAG,IAAI,CAAA;IAEtB,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;YAC7C,WAAW,GAAG,KAAK,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,EAAE,CAAA;YACZ,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAU,EAAE;IACtD,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAE/B,IAAI,MAAM,GAAG,EAAE,CAAA;IACf,IAAI,WAAW,GAAG,IAAI,CAAA;IACtB,IAAI,SAAS,GAAG,CAAC,CAAA;IAEjB,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YACnB,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,IAAI,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAA;gBACjD,SAAS,EAAE,CAAA;YACb,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,EAAE,CAAA;YACd,CAAC;YACD,WAAW,GAAG,KAAK,CAAA;QACrB,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,EAAE,CAAA;YACZ,WAAW,GAAG,IAAI,CAAA;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
@@ -21,6 +21,44 @@ describe('wordsToTitleCase', () => {
21
21
  expect(wordsToTitleCase('hELLo')).toBe('Hello');
22
22
  expect(wordsToTitleCase('')).toBe('');
23
23
  });
24
+ it('keeps accented letters inside a word', () => {
25
+ expect(wordsToTitleCase('TÄNZER')).toBe('Tänzer');
26
+ expect(wordsToTitleCase('MÜLLER')).toBe('Müller');
27
+ expect(wordsToTitleCase('FRANÇOIS')).toBe('François');
28
+ expect(wordsToTitleCase('NUÑEZ')).toBe('Nuñez');
29
+ expect(wordsToTitleCase('GROß')).toBe('Groß');
30
+ expect(wordsToTitleCase('SØRENSEN')).toBe('Sørensen');
31
+ expect(wordsToTitleCase('ŁUKASZ')).toBe('Łukasz');
32
+ });
33
+ it('upper-cases an accented first letter', () => {
34
+ expect(wordsToTitleCase('ÉMILE ZOLA')).toBe('Émile Zola');
35
+ expect(wordsToTitleCase('émile')).toBe('Émile');
36
+ expect(wordsToTitleCase('ÅSA ÖSTLUND')).toBe('Åsa Östlund');
37
+ });
38
+ it('keeps combining marks attached to the preceding letter', () => {
39
+ // "TÄNZER" in decomposed (NFD) form: the diaeresis is a separate code point
40
+ const decomposed = 'TÄNZER'.normalize('NFD');
41
+ expect(wordsToTitleCase(decomposed)).toBe('Tänzer'.normalize('NFD'));
42
+ });
43
+ it('handles non-Latin scripts', () => {
44
+ expect(wordsToTitleCase('ИВАН ПЕТРОВ')).toBe('Иван Петров');
45
+ expect(wordsToTitleCase('ΓΙΩΡΓΟΣ')).toBe('Γιωργος');
46
+ // scripts without case are returned unchanged
47
+ expect(wordsToTitleCase('田中 太郎')).toBe('田中 太郎');
48
+ expect(wordsToTitleCase('محمد')).toBe('محمد');
49
+ });
50
+ it('title-cases each part of hyphenated and apostrophised names', () => {
51
+ expect(wordsToTitleCase("O'BRIEN")).toBe("O'Brien");
52
+ expect(wordsToTitleCase('O’BRIEN')).toBe('O’Brien');
53
+ expect(wordsToTitleCase("D'ANGELO")).toBe("D'Angelo");
54
+ expect(wordsToTitleCase('KERRI-ANNE')).toBe('Kerri-Anne');
55
+ expect(wordsToTitleCase('JEAN-LUC PICARD')).toBe('Jean-Luc Picard');
56
+ expect(wordsToTitleCase('MARY‑KATE')).toBe('Mary‑Kate'); // non-breaking hyphen
57
+ });
58
+ it('preserves surrounding and repeated whitespace', () => {
59
+ expect(wordsToTitleCase(' JOHN DOE ')).toBe(' John Doe ');
60
+ expect(wordsToTitleCase('JOHN\tDOE')).toBe('John\tDoe');
61
+ });
24
62
  });
25
63
  describe('wordsToCamelCase', () => {
26
64
  it('keeps first token lowercase and title-cases later tokens', () => {
@@ -42,5 +80,9 @@ describe('wordsToCamelCase', () => {
42
80
  expect(wordsToCamelCase('hELLo')).toBe('hello');
43
81
  expect(wordsToCamelCase('')).toBe('');
44
82
  });
83
+ it('keeps accented letters inside a word', () => {
84
+ expect(wordsToCamelCase('ÉMILE TÄNZER')).toBe('émile Tänzer');
85
+ expect(wordsToCamelCase('MÜLLER-LÜDENSCHEIDT')).toBe('müller-Lüdenscheidt');
86
+ });
45
87
  });
46
88
  //# sourceMappingURL=manipulate.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manipulate.test.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manipulate.test.js","sourceRoot":"","sources":["../../../src/utils/strings/manipulate.test.ts"],"names":[],"mappings":"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"}
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.45",
10
+ "version": "1.1.47",
11
11
  "files": [
12
12
  "dist"
13
13
  ],