diginext-utils 2.0.32 → 2.0.35

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 (304) hide show
  1. package/README.md +162 -162
  2. package/package.json +66 -66
  3. package/src/Checker.ts +29 -29
  4. package/src/EventDispatcher.ts +62 -62
  5. package/src/FileUpload.ts +66 -66
  6. package/src/Slug.ts +365 -365
  7. package/src/Timer.ts +7 -7
  8. package/src/Validation.ts +36 -36
  9. package/src/array.ts +285 -285
  10. package/src/color.ts +87 -87
  11. package/src/console/enableConsole.ts +8 -8
  12. package/src/console/index.ts +17 -17
  13. package/src/console/log.ts +39 -39
  14. package/src/device/browser.ts +29 -29
  15. package/src/device/camera.ts +207 -207
  16. package/src/device/index.ts +230 -230
  17. package/src/device/os.ts +29 -29
  18. package/src/file/createDir.ts +14 -14
  19. package/src/file/fileMove.ts +32 -32
  20. package/src/file/findFilesByExt.ts +46 -46
  21. package/src/file/index.ts +7 -7
  22. package/src/images/index.ts +3 -3
  23. package/src/images/loadImage.ts +16 -0
  24. package/src/images/resize.ts +35 -35
  25. package/src/images/upload.ts +24 -24
  26. package/src/index.ts +39 -39
  27. package/src/json.ts +29 -29
  28. package/src/math/diffDate.ts +10 -10
  29. package/src/math/index.ts +90 -90
  30. package/src/math/positiveNumber.ts +12 -12
  31. package/src/name/en.ts +27 -27
  32. package/src/name/index.ts +8 -8
  33. package/src/name/vi.ts +23 -23
  34. package/src/object.ts +72 -72
  35. package/src/permission/index.ts +6 -6
  36. package/src/permission/requestCamera.ts +43 -43
  37. package/src/permission/requestDeviceOrientationControl.ts +33 -33
  38. package/src/response/index.ts +45 -45
  39. package/src/string/formatNumber.ts +12 -12
  40. package/src/string/generatePassword.ts +18 -18
  41. package/src/string/generateUUID.ts +37 -37
  42. package/src/string/index.ts +180 -180
  43. package/src/string/makeDaySlug.ts +40 -40
  44. package/src/string/random.ts +24 -24
  45. package/src/string/trimNull.ts +16 -16
  46. package/src/string/url.ts +116 -116
  47. package/dist/Checker.d.ts +0 -8
  48. package/dist/Checker.js +0 -32
  49. package/dist/Checker.js.map +0 -1
  50. package/dist/EventDispatcher.d.ts +0 -13
  51. package/dist/EventDispatcher.js +0 -52
  52. package/dist/EventDispatcher.js.map +0 -1
  53. package/dist/FileUpload.d.ts +0 -12
  54. package/dist/FileUpload.js +0 -65
  55. package/dist/FileUpload.js.map +0 -1
  56. package/dist/Slug.d.ts +0 -9
  57. package/dist/Slug.js +0 -334
  58. package/dist/Slug.js.map +0 -1
  59. package/dist/Timer.d.ts +0 -4
  60. package/dist/Timer.js +0 -9
  61. package/dist/Timer.js.map +0 -1
  62. package/dist/Validation.d.ts +0 -5
  63. package/dist/Validation.js +0 -39
  64. package/dist/Validation.js.map +0 -1
  65. package/dist/array.d.ts +0 -113
  66. package/dist/array.js +0 -297
  67. package/dist/array.js.map +0 -1
  68. package/dist/color.d.ts +0 -23
  69. package/dist/color.js +0 -89
  70. package/dist/color.js.map +0 -1
  71. package/dist/console/enableConsole.d.ts +0 -2
  72. package/dist/console/enableConsole.js +0 -14
  73. package/dist/console/enableConsole.js.map +0 -1
  74. package/dist/console/index.d.ts +0 -11
  75. package/dist/console/index.js +0 -18
  76. package/dist/console/index.js.map +0 -1
  77. package/dist/console/log.d.ts +0 -15
  78. package/dist/console/log.js +0 -45
  79. package/dist/console/log.js.map +0 -1
  80. package/dist/device/browser.d.ts +0 -5
  81. package/dist/device/browser.js +0 -38
  82. package/dist/device/browser.js.map +0 -1
  83. package/dist/device/camera.d.ts +0 -7
  84. package/dist/device/camera.js +0 -172
  85. package/dist/device/camera.js.map +0 -1
  86. package/dist/device/index.d.ts +0 -5
  87. package/dist/device/index.js +0 -225
  88. package/dist/device/index.js.map +0 -1
  89. package/dist/device/os.d.ts +0 -11
  90. package/dist/device/os.js +0 -38
  91. package/dist/device/os.js.map +0 -1
  92. package/dist/file/createDir.d.ts +0 -5
  93. package/dist/file/createDir.js +0 -16
  94. package/dist/file/createDir.js.map +0 -1
  95. package/dist/file/fileMove.d.ts +0 -4
  96. package/dist/file/fileMove.js +0 -33
  97. package/dist/file/fileMove.js.map +0 -1
  98. package/dist/file/findFilesByExt.d.ts +0 -13
  99. package/dist/file/findFilesByExt.js +0 -50
  100. package/dist/file/findFilesByExt.js.map +0 -1
  101. package/dist/file/index.d.ts +0 -9
  102. package/dist/file/index.js +0 -11
  103. package/dist/file/index.js.map +0 -1
  104. package/dist/images/index.d.ts +0 -2
  105. package/dist/images/index.js +0 -9
  106. package/dist/images/index.js.map +0 -1
  107. package/dist/images/resize.d.ts +0 -2
  108. package/dist/images/resize.js +0 -38
  109. package/dist/images/resize.js.map +0 -1
  110. package/dist/images/upload.d.ts +0 -10
  111. package/dist/images/upload.js +0 -27
  112. package/dist/images/upload.js.map +0 -1
  113. package/dist/index.d.ts +0 -37
  114. package/dist/index.js +0 -63
  115. package/dist/index.js.map +0 -1
  116. package/dist/json.d.ts +0 -8
  117. package/dist/json.js +0 -32
  118. package/dist/json.js.map +0 -1
  119. package/dist/math/diffDate.d.ts +0 -5
  120. package/dist/math/diffDate.js +0 -14
  121. package/dist/math/diffDate.js.map +0 -1
  122. package/dist/math/index.d.ts +0 -30
  123. package/dist/math/index.js +0 -93
  124. package/dist/math/index.js.map +0 -1
  125. package/dist/math/positiveNumber.d.ts +0 -2
  126. package/dist/math/positiveNumber.js +0 -17
  127. package/dist/math/positiveNumber.js.map +0 -1
  128. package/dist/name/en.d.ts +0 -5
  129. package/dist/name/en.js +0 -26
  130. package/dist/name/en.js.map +0 -1
  131. package/dist/name/index.d.ts +0 -12
  132. package/dist/name/index.js +0 -13
  133. package/dist/name/index.js.map +0 -1
  134. package/dist/name/vi.d.ts +0 -5
  135. package/dist/name/vi.js +0 -28
  136. package/dist/name/vi.js.map +0 -1
  137. package/dist/object.d.ts +0 -59
  138. package/dist/object.js +0 -80
  139. package/dist/object.js.map +0 -1
  140. package/dist/permission/index.d.ts +0 -8
  141. package/dist/permission/index.js +0 -7
  142. package/dist/permission/index.js.map +0 -1
  143. package/dist/permission/requestCamera.d.ts +0 -5
  144. package/dist/permission/requestCamera.js +0 -43
  145. package/dist/permission/requestCamera.js.map +0 -1
  146. package/dist/permission/requestDeviceOrientationControl.d.ts +0 -2
  147. package/dist/permission/requestDeviceOrientationControl.js +0 -39
  148. package/dist/permission/requestDeviceOrientationControl.js.map +0 -1
  149. package/dist/response/index.d.ts +0 -49
  150. package/dist/response/index.js +0 -52
  151. package/dist/response/index.js.map +0 -1
  152. package/dist/string/formatNumber.d.ts +0 -6
  153. package/dist/string/formatNumber.js +0 -15
  154. package/dist/string/formatNumber.js.map +0 -1
  155. package/dist/string/generatePassword.d.ts +0 -9
  156. package/dist/string/generatePassword.js +0 -24
  157. package/dist/string/generatePassword.js.map +0 -1
  158. package/dist/string/generateUUID.d.ts +0 -2
  159. package/dist/string/generateUUID.js +0 -37
  160. package/dist/string/generateUUID.js.map +0 -1
  161. package/dist/string/index.d.ts +0 -65
  162. package/dist/string/index.js +0 -161
  163. package/dist/string/index.js.map +0 -1
  164. package/dist/string/makeDaySlug.d.ts +0 -31
  165. package/dist/string/makeDaySlug.js +0 -23
  166. package/dist/string/makeDaySlug.js.map +0 -1
  167. package/dist/string/random.d.ts +0 -14
  168. package/dist/string/random.js +0 -25
  169. package/dist/string/random.js.map +0 -1
  170. package/dist/string/trimNull.d.ts +0 -2
  171. package/dist/string/trimNull.js +0 -21
  172. package/dist/string/trimNull.js.map +0 -1
  173. package/dist/string/url.d.ts +0 -36
  174. package/dist/string/url.js +0 -108
  175. package/dist/string/url.js.map +0 -1
  176. package/esm/Checker.d.ts +0 -8
  177. package/esm/Checker.js +0 -28
  178. package/esm/Checker.js.map +0 -1
  179. package/esm/EventDispatcher.d.ts +0 -13
  180. package/esm/EventDispatcher.js +0 -49
  181. package/esm/EventDispatcher.js.map +0 -1
  182. package/esm/FileUpload.d.ts +0 -12
  183. package/esm/FileUpload.js +0 -62
  184. package/esm/FileUpload.js.map +0 -1
  185. package/esm/Slug.d.ts +0 -9
  186. package/esm/Slug.js +0 -330
  187. package/esm/Slug.js.map +0 -1
  188. package/esm/Timer.d.ts +0 -4
  189. package/esm/Timer.js +0 -7
  190. package/esm/Timer.js.map +0 -1
  191. package/esm/Validation.d.ts +0 -5
  192. package/esm/Validation.js +0 -37
  193. package/esm/Validation.js.map +0 -1
  194. package/esm/array.d.ts +0 -113
  195. package/esm/array.js +0 -275
  196. package/esm/array.js.map +0 -1
  197. package/esm/color.d.ts +0 -23
  198. package/esm/color.js +0 -80
  199. package/esm/color.js.map +0 -1
  200. package/esm/console/enableConsole.d.ts +0 -2
  201. package/esm/console/enableConsole.js +0 -7
  202. package/esm/console/enableConsole.js.map +0 -1
  203. package/esm/console/index.d.ts +0 -11
  204. package/esm/console/index.js +0 -13
  205. package/esm/console/index.js.map +0 -1
  206. package/esm/console/log.d.ts +0 -15
  207. package/esm/console/log.js +0 -33
  208. package/esm/console/log.js.map +0 -1
  209. package/esm/device/browser.d.ts +0 -5
  210. package/esm/device/browser.js +0 -30
  211. package/esm/device/browser.js.map +0 -1
  212. package/esm/device/camera.d.ts +0 -7
  213. package/esm/device/camera.js +0 -168
  214. package/esm/device/camera.js.map +0 -1
  215. package/esm/device/index.d.ts +0 -5
  216. package/esm/device/index.js +0 -217
  217. package/esm/device/index.js.map +0 -1
  218. package/esm/device/os.d.ts +0 -11
  219. package/esm/device/os.js +0 -28
  220. package/esm/device/os.js.map +0 -1
  221. package/esm/file/createDir.d.ts +0 -5
  222. package/esm/file/createDir.js +0 -13
  223. package/esm/file/createDir.js.map +0 -1
  224. package/esm/file/fileMove.d.ts +0 -4
  225. package/esm/file/fileMove.js +0 -29
  226. package/esm/file/fileMove.js.map +0 -1
  227. package/esm/file/findFilesByExt.d.ts +0 -13
  228. package/esm/file/findFilesByExt.js +0 -46
  229. package/esm/file/findFilesByExt.js.map +0 -1
  230. package/esm/file/index.d.ts +0 -9
  231. package/esm/file/index.js +0 -6
  232. package/esm/file/index.js.map +0 -1
  233. package/esm/images/index.d.ts +0 -2
  234. package/esm/images/index.js +0 -4
  235. package/esm/images/index.js.map +0 -1
  236. package/esm/images/resize.d.ts +0 -2
  237. package/esm/images/resize.js +0 -31
  238. package/esm/images/resize.js.map +0 -1
  239. package/esm/images/upload.d.ts +0 -10
  240. package/esm/images/upload.js +0 -20
  241. package/esm/images/upload.js.map +0 -1
  242. package/esm/index.d.ts +0 -37
  243. package/esm/index.js +0 -38
  244. package/esm/index.js.map +0 -1
  245. package/esm/json.d.ts +0 -8
  246. package/esm/json.js +0 -28
  247. package/esm/json.js.map +0 -1
  248. package/esm/math/diffDate.d.ts +0 -5
  249. package/esm/math/diffDate.js +0 -10
  250. package/esm/math/diffDate.js.map +0 -1
  251. package/esm/math/index.d.ts +0 -30
  252. package/esm/math/index.js +0 -78
  253. package/esm/math/index.js.map +0 -1
  254. package/esm/math/positiveNumber.d.ts +0 -2
  255. package/esm/math/positiveNumber.js +0 -13
  256. package/esm/math/positiveNumber.js.map +0 -1
  257. package/esm/name/en.d.ts +0 -5
  258. package/esm/name/en.js +0 -22
  259. package/esm/name/en.js.map +0 -1
  260. package/esm/name/index.d.ts +0 -12
  261. package/esm/name/index.js +0 -6
  262. package/esm/name/index.js.map +0 -1
  263. package/esm/name/vi.d.ts +0 -5
  264. package/esm/name/vi.js +0 -24
  265. package/esm/name/vi.js.map +0 -1
  266. package/esm/object.d.ts +0 -59
  267. package/esm/object.js +0 -70
  268. package/esm/object.js.map +0 -1
  269. package/esm/permission/index.d.ts +0 -8
  270. package/esm/permission/index.js +0 -5
  271. package/esm/permission/index.js.map +0 -1
  272. package/esm/permission/requestCamera.d.ts +0 -5
  273. package/esm/permission/requestCamera.js +0 -39
  274. package/esm/permission/requestCamera.js.map +0 -1
  275. package/esm/permission/requestDeviceOrientationControl.d.ts +0 -2
  276. package/esm/permission/requestDeviceOrientationControl.js +0 -35
  277. package/esm/permission/requestDeviceOrientationControl.js.map +0 -1
  278. package/esm/response/index.d.ts +0 -49
  279. package/esm/response/index.js +0 -46
  280. package/esm/response/index.js.map +0 -1
  281. package/esm/string/formatNumber.d.ts +0 -6
  282. package/esm/string/formatNumber.js +0 -11
  283. package/esm/string/formatNumber.js.map +0 -1
  284. package/esm/string/generatePassword.d.ts +0 -9
  285. package/esm/string/generatePassword.js +0 -20
  286. package/esm/string/generatePassword.js.map +0 -1
  287. package/esm/string/generateUUID.d.ts +0 -2
  288. package/esm/string/generateUUID.js +0 -33
  289. package/esm/string/generateUUID.js.map +0 -1
  290. package/esm/string/index.d.ts +0 -65
  291. package/esm/string/index.js +0 -150
  292. package/esm/string/index.js.map +0 -1
  293. package/esm/string/makeDaySlug.d.ts +0 -31
  294. package/esm/string/makeDaySlug.js +0 -16
  295. package/esm/string/makeDaySlug.js.map +0 -1
  296. package/esm/string/random.d.ts +0 -14
  297. package/esm/string/random.js +0 -20
  298. package/esm/string/random.js.map +0 -1
  299. package/esm/string/trimNull.d.ts +0 -2
  300. package/esm/string/trimNull.js +0 -14
  301. package/esm/string/trimNull.js.map +0 -1
  302. package/esm/string/url.d.ts +0 -36
  303. package/esm/string/url.js +0 -98
  304. package/esm/string/url.js.map +0 -1
package/src/Slug.ts CHANGED
@@ -1,365 +1,365 @@
1
- /**
2
- * Create a web friendly URL slug from a string.
3
- *
4
- * Requires XRegExp (http://xregexp.com) with unicode add-ons for UTF-8 support.
5
- *
6
- * Although supported, transliteration is discouraged because
7
- * 1) most web browsers support UTF-8 characters in URLs
8
- * 2) transliteration causes a loss of information
9
- *
10
- * @author Sean Murphy <sean@iamseanmurphy.com>
11
- * @copyright Copyright 2012 Sean Murphy. All rights reserved.
12
- * @license http://creativecommons.org/publicdomain/zero/1.0/
13
- *
14
- */
15
- declare var XRegExp: any;
16
-
17
- export const makeSlug = (s: string, opt: { [key: string]: any } = {}) => {
18
- // s = String(s);
19
- // opt = Object(opt);
20
-
21
- var defaults: { [key: string]: any } = {
22
- delimiter: "-",
23
- lowercase: true,
24
- replacements: {},
25
- transliterate: typeof XRegExp === "undefined" ? true : false,
26
- };
27
-
28
- // Merge options
29
- for (var k in defaults) {
30
- if (!opt.hasOwnProperty(k)) {
31
- opt[k] = defaults[k];
32
- }
33
- }
34
-
35
- var char_map: { [key: string]: any } = {
36
- // Latin
37
- À: "A",
38
- Á: "A",
39
- Â: "A",
40
- Ã: "A",
41
- Ä: "A",
42
- Å: "A",
43
- Æ: "AE",
44
- Ç: "C",
45
- È: "E",
46
- É: "E",
47
- Ê: "E",
48
- Ë: "E",
49
- Ì: "I",
50
- Í: "I",
51
- Î: "I",
52
- Ï: "I",
53
- Ð: "D",
54
- Ñ: "N",
55
- Ò: "O",
56
- Ó: "O",
57
- Ô: "O",
58
- Õ: "O",
59
- Ö: "O",
60
- Ő: "O",
61
- Ø: "O",
62
- Ù: "U",
63
- Ú: "U",
64
- Û: "U",
65
- Ü: "U",
66
- Ű: "U",
67
- Ý: "Y",
68
- Þ: "TH",
69
- ß: "ss",
70
- à: "a",
71
- á: "a",
72
- â: "a",
73
- ã: "a",
74
- ä: "a",
75
- å: "a",
76
- æ: "ae",
77
- ç: "c",
78
- è: "e",
79
- é: "e",
80
- ê: "e",
81
- ë: "e",
82
- ì: "i",
83
- í: "i",
84
- î: "i",
85
- ï: "i",
86
- ð: "d",
87
- ñ: "n",
88
- ò: "o",
89
- ó: "o",
90
- ô: "o",
91
- õ: "o",
92
- ö: "o",
93
- ő: "o",
94
- ø: "o",
95
- ù: "u",
96
- ú: "u",
97
- û: "u",
98
- ü: "u",
99
- ű: "u",
100
- ý: "y",
101
- þ: "th",
102
- ÿ: "y",
103
-
104
- // Latin symbols
105
- "©": "(c)",
106
-
107
- // Greek
108
- Α: "A",
109
- Β: "B",
110
- Γ: "G",
111
- Δ: "D",
112
- Ε: "E",
113
- Ζ: "Z",
114
- Η: "H",
115
- Θ: "8",
116
- Ι: "I",
117
- Κ: "K",
118
- Λ: "L",
119
- Μ: "M",
120
- Ν: "N",
121
- Ξ: "3",
122
- Ο: "O",
123
- Π: "P",
124
- Ρ: "R",
125
- Σ: "S",
126
- Τ: "T",
127
- Υ: "Y",
128
- Φ: "F",
129
- Χ: "X",
130
- Ψ: "PS",
131
- Ω: "W",
132
- Ά: "A",
133
- Έ: "E",
134
- Ί: "I",
135
- Ό: "O",
136
- Ύ: "Y",
137
- Ή: "H",
138
- Ώ: "W",
139
- Ϊ: "I",
140
- Ϋ: "Y",
141
- α: "a",
142
- β: "b",
143
- γ: "g",
144
- δ: "d",
145
- ε: "e",
146
- ζ: "z",
147
- η: "h",
148
- θ: "8",
149
- ι: "i",
150
- κ: "k",
151
- λ: "l",
152
- μ: "m",
153
- ν: "n",
154
- ξ: "3",
155
- ο: "o",
156
- π: "p",
157
- ρ: "r",
158
- σ: "s",
159
- τ: "t",
160
- υ: "y",
161
- φ: "f",
162
- χ: "x",
163
- ψ: "ps",
164
- ω: "w",
165
- ά: "a",
166
- έ: "e",
167
- ί: "i",
168
- ό: "o",
169
- ύ: "y",
170
- ή: "h",
171
- ώ: "w",
172
- ς: "s",
173
- ϊ: "i",
174
- ΰ: "y",
175
- ϋ: "y",
176
- ΐ: "i",
177
-
178
- // Turkish
179
- Ş: "S",
180
- İ: "I",
181
- Ğ: "G",
182
- ş: "s",
183
- ı: "i",
184
- ğ: "g",
185
-
186
- // Russian
187
- А: "A",
188
- Б: "B",
189
- В: "V",
190
- Г: "G",
191
- Д: "D",
192
- Е: "E",
193
- Ё: "Yo",
194
- Ж: "Zh",
195
- З: "Z",
196
- И: "I",
197
- Й: "J",
198
- К: "K",
199
- Л: "L",
200
- М: "M",
201
- Н: "N",
202
- О: "O",
203
- П: "P",
204
- Р: "R",
205
- С: "S",
206
- Т: "T",
207
- У: "U",
208
- Ф: "F",
209
- Х: "H",
210
- Ц: "C",
211
- Ч: "Ch",
212
- Ш: "Sh",
213
- Щ: "Sh",
214
- Ъ: "",
215
- Ы: "Y",
216
- Ь: "",
217
- Э: "E",
218
- Ю: "Yu",
219
- Я: "Ya",
220
- а: "a",
221
- б: "b",
222
- в: "v",
223
- г: "g",
224
- д: "d",
225
- е: "e",
226
- ё: "yo",
227
- ж: "zh",
228
- з: "z",
229
- и: "i",
230
- й: "j",
231
- к: "k",
232
- л: "l",
233
- м: "m",
234
- н: "n",
235
- о: "o",
236
- п: "p",
237
- р: "r",
238
- с: "s",
239
- т: "t",
240
- у: "u",
241
- ф: "f",
242
- х: "h",
243
- ц: "c",
244
- ч: "ch",
245
- ш: "sh",
246
- щ: "sh",
247
- ъ: "",
248
- ы: "y",
249
- ь: "",
250
- э: "e",
251
- ю: "yu",
252
- я: "ya",
253
-
254
- // Ukrainian
255
- Є: "Ye",
256
- І: "I",
257
- Ї: "Yi",
258
- Ґ: "G",
259
- є: "ye",
260
- і: "i",
261
- ї: "yi",
262
- ґ: "g",
263
-
264
- // Czech
265
- Č: "C",
266
- Ď: "D",
267
- Ě: "E",
268
- Ň: "N",
269
- Ř: "R",
270
- Š: "S",
271
- Ť: "T",
272
- Ů: "U",
273
- Ž: "Z",
274
- č: "c",
275
- ď: "d",
276
- ě: "e",
277
- ň: "n",
278
- ř: "r",
279
- š: "s",
280
- ť: "t",
281
- ů: "u",
282
- ž: "z",
283
-
284
- // Polish
285
- Ą: "A",
286
- Ć: "C",
287
- Ę: "e",
288
- Ł: "L",
289
- Ń: "N",
290
- Ś: "S",
291
- Ź: "Z",
292
- Ż: "Z",
293
- ą: "a",
294
- ć: "c",
295
- ę: "e",
296
- ł: "l",
297
- ń: "n",
298
- ś: "s",
299
- ź: "z",
300
- ż: "z",
301
-
302
- // Latvian
303
- Ā: "A",
304
- Ē: "E",
305
- Ģ: "G",
306
- Ī: "i",
307
- Ķ: "k",
308
- Ļ: "L",
309
- Ņ: "N",
310
- Ū: "u",
311
- ā: "a",
312
- ē: "e",
313
- ģ: "g",
314
- ī: "i",
315
- ķ: "k",
316
- ļ: "l",
317
- ņ: "n",
318
- ū: "u",
319
- };
320
-
321
- // Vietnamese
322
- s = s.replace(/á|à|ả|ạ|ã|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ/gi, "a");
323
- s = s.replace(/é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ/gi, "e");
324
- s = s.replace(/i|í|ì|ỉ|ĩ|ị/gi, "i");
325
- s = s.replace(/ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ/gi, "o");
326
- s = s.replace(/ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự/gi, "u");
327
- s = s.replace(/ý|ỳ|ỷ|ỹ|ỵ/gi, "y");
328
- s = s.replace(/đ/gi, "d");
329
- s = s.replace(/\-\-\-\-\-/gi, "-");
330
- s = s.replace(/\-\-\-\-/gi, "-");
331
- s = s.replace(/\-\-\-/gi, "-");
332
- s = s.replace(/\-\-/gi, "-");
333
- s = "@" + s + "@";
334
- s = s.replace(/\@\-|\-\@|\@/gi, "");
335
-
336
- // Make custom replacements
337
- for (var k in opt.replacements) {
338
- s = s.replace(RegExp(k, "g"), opt.replacements[k]);
339
- }
340
-
341
- // Transliterate characters to ASCII
342
- if (opt.transliterate) {
343
- for (var k in char_map) {
344
- s = s.replace(RegExp(k, "g"), char_map[k]);
345
- }
346
- }
347
-
348
- // Replace non-alphanumeric characters with our delimiter
349
- var alnum = typeof XRegExp === "undefined" ? RegExp("[^a-z0-9]+", "ig") : XRegExp("[^\\p{L}\\p{N}]+", "ig");
350
- s = s.replace(alnum, opt.delimiter);
351
-
352
- // Remove duplicate delimiters
353
- s = s.replace(RegExp("[" + opt.delimiter + "]{2,}", "g"), opt.delimiter);
354
-
355
- // Truncate slug to max. characters
356
- s = s.substring(0, opt.limit);
357
-
358
- // Remove delimiter from ends
359
- s = s.replace(RegExp("(^" + opt.delimiter + "|" + opt.delimiter + "$)", "g"), "");
360
-
361
- return opt.lowercase ? s.toLowerCase() : s;
362
- };
363
-
364
- const slug = { makeSlug };
365
- export default slug;
1
+ /**
2
+ * Create a web friendly URL slug from a string.
3
+ *
4
+ * Requires XRegExp (http://xregexp.com) with unicode add-ons for UTF-8 support.
5
+ *
6
+ * Although supported, transliteration is discouraged because
7
+ * 1) most web browsers support UTF-8 characters in URLs
8
+ * 2) transliteration causes a loss of information
9
+ *
10
+ * @author Sean Murphy <sean@iamseanmurphy.com>
11
+ * @copyright Copyright 2012 Sean Murphy. All rights reserved.
12
+ * @license http://creativecommons.org/publicdomain/zero/1.0/
13
+ *
14
+ */
15
+ declare var XRegExp: any;
16
+
17
+ export const makeSlug = (s: string, opt: { [key: string]: any } = {}) => {
18
+ // s = String(s);
19
+ // opt = Object(opt);
20
+
21
+ var defaults: { [key: string]: any } = {
22
+ delimiter: "-",
23
+ lowercase: true,
24
+ replacements: {},
25
+ transliterate: typeof XRegExp === "undefined" ? true : false,
26
+ };
27
+
28
+ // Merge options
29
+ for (var k in defaults) {
30
+ if (!opt.hasOwnProperty(k)) {
31
+ opt[k] = defaults[k];
32
+ }
33
+ }
34
+
35
+ var char_map: { [key: string]: any } = {
36
+ // Latin
37
+ À: "A",
38
+ Á: "A",
39
+ Â: "A",
40
+ Ã: "A",
41
+ Ä: "A",
42
+ Å: "A",
43
+ Æ: "AE",
44
+ Ç: "C",
45
+ È: "E",
46
+ É: "E",
47
+ Ê: "E",
48
+ Ë: "E",
49
+ Ì: "I",
50
+ Í: "I",
51
+ Î: "I",
52
+ Ï: "I",
53
+ Ð: "D",
54
+ Ñ: "N",
55
+ Ò: "O",
56
+ Ó: "O",
57
+ Ô: "O",
58
+ Õ: "O",
59
+ Ö: "O",
60
+ Ő: "O",
61
+ Ø: "O",
62
+ Ù: "U",
63
+ Ú: "U",
64
+ Û: "U",
65
+ Ü: "U",
66
+ Ű: "U",
67
+ Ý: "Y",
68
+ Þ: "TH",
69
+ ß: "ss",
70
+ à: "a",
71
+ á: "a",
72
+ â: "a",
73
+ ã: "a",
74
+ ä: "a",
75
+ å: "a",
76
+ æ: "ae",
77
+ ç: "c",
78
+ è: "e",
79
+ é: "e",
80
+ ê: "e",
81
+ ë: "e",
82
+ ì: "i",
83
+ í: "i",
84
+ î: "i",
85
+ ï: "i",
86
+ ð: "d",
87
+ ñ: "n",
88
+ ò: "o",
89
+ ó: "o",
90
+ ô: "o",
91
+ õ: "o",
92
+ ö: "o",
93
+ ő: "o",
94
+ ø: "o",
95
+ ù: "u",
96
+ ú: "u",
97
+ û: "u",
98
+ ü: "u",
99
+ ű: "u",
100
+ ý: "y",
101
+ þ: "th",
102
+ ÿ: "y",
103
+
104
+ // Latin symbols
105
+ "©": "(c)",
106
+
107
+ // Greek
108
+ Α: "A",
109
+ Β: "B",
110
+ Γ: "G",
111
+ Δ: "D",
112
+ Ε: "E",
113
+ Ζ: "Z",
114
+ Η: "H",
115
+ Θ: "8",
116
+ Ι: "I",
117
+ Κ: "K",
118
+ Λ: "L",
119
+ Μ: "M",
120
+ Ν: "N",
121
+ Ξ: "3",
122
+ Ο: "O",
123
+ Π: "P",
124
+ Ρ: "R",
125
+ Σ: "S",
126
+ Τ: "T",
127
+ Υ: "Y",
128
+ Φ: "F",
129
+ Χ: "X",
130
+ Ψ: "PS",
131
+ Ω: "W",
132
+ Ά: "A",
133
+ Έ: "E",
134
+ Ί: "I",
135
+ Ό: "O",
136
+ Ύ: "Y",
137
+ Ή: "H",
138
+ Ώ: "W",
139
+ Ϊ: "I",
140
+ Ϋ: "Y",
141
+ α: "a",
142
+ β: "b",
143
+ γ: "g",
144
+ δ: "d",
145
+ ε: "e",
146
+ ζ: "z",
147
+ η: "h",
148
+ θ: "8",
149
+ ι: "i",
150
+ κ: "k",
151
+ λ: "l",
152
+ μ: "m",
153
+ ν: "n",
154
+ ξ: "3",
155
+ ο: "o",
156
+ π: "p",
157
+ ρ: "r",
158
+ σ: "s",
159
+ τ: "t",
160
+ υ: "y",
161
+ φ: "f",
162
+ χ: "x",
163
+ ψ: "ps",
164
+ ω: "w",
165
+ ά: "a",
166
+ έ: "e",
167
+ ί: "i",
168
+ ό: "o",
169
+ ύ: "y",
170
+ ή: "h",
171
+ ώ: "w",
172
+ ς: "s",
173
+ ϊ: "i",
174
+ ΰ: "y",
175
+ ϋ: "y",
176
+ ΐ: "i",
177
+
178
+ // Turkish
179
+ Ş: "S",
180
+ İ: "I",
181
+ Ğ: "G",
182
+ ş: "s",
183
+ ı: "i",
184
+ ğ: "g",
185
+
186
+ // Russian
187
+ А: "A",
188
+ Б: "B",
189
+ В: "V",
190
+ Г: "G",
191
+ Д: "D",
192
+ Е: "E",
193
+ Ё: "Yo",
194
+ Ж: "Zh",
195
+ З: "Z",
196
+ И: "I",
197
+ Й: "J",
198
+ К: "K",
199
+ Л: "L",
200
+ М: "M",
201
+ Н: "N",
202
+ О: "O",
203
+ П: "P",
204
+ Р: "R",
205
+ С: "S",
206
+ Т: "T",
207
+ У: "U",
208
+ Ф: "F",
209
+ Х: "H",
210
+ Ц: "C",
211
+ Ч: "Ch",
212
+ Ш: "Sh",
213
+ Щ: "Sh",
214
+ Ъ: "",
215
+ Ы: "Y",
216
+ Ь: "",
217
+ Э: "E",
218
+ Ю: "Yu",
219
+ Я: "Ya",
220
+ а: "a",
221
+ б: "b",
222
+ в: "v",
223
+ г: "g",
224
+ д: "d",
225
+ е: "e",
226
+ ё: "yo",
227
+ ж: "zh",
228
+ з: "z",
229
+ и: "i",
230
+ й: "j",
231
+ к: "k",
232
+ л: "l",
233
+ м: "m",
234
+ н: "n",
235
+ о: "o",
236
+ п: "p",
237
+ р: "r",
238
+ с: "s",
239
+ т: "t",
240
+ у: "u",
241
+ ф: "f",
242
+ х: "h",
243
+ ц: "c",
244
+ ч: "ch",
245
+ ш: "sh",
246
+ щ: "sh",
247
+ ъ: "",
248
+ ы: "y",
249
+ ь: "",
250
+ э: "e",
251
+ ю: "yu",
252
+ я: "ya",
253
+
254
+ // Ukrainian
255
+ Є: "Ye",
256
+ І: "I",
257
+ Ї: "Yi",
258
+ Ґ: "G",
259
+ є: "ye",
260
+ і: "i",
261
+ ї: "yi",
262
+ ґ: "g",
263
+
264
+ // Czech
265
+ Č: "C",
266
+ Ď: "D",
267
+ Ě: "E",
268
+ Ň: "N",
269
+ Ř: "R",
270
+ Š: "S",
271
+ Ť: "T",
272
+ Ů: "U",
273
+ Ž: "Z",
274
+ č: "c",
275
+ ď: "d",
276
+ ě: "e",
277
+ ň: "n",
278
+ ř: "r",
279
+ š: "s",
280
+ ť: "t",
281
+ ů: "u",
282
+ ž: "z",
283
+
284
+ // Polish
285
+ Ą: "A",
286
+ Ć: "C",
287
+ Ę: "e",
288
+ Ł: "L",
289
+ Ń: "N",
290
+ Ś: "S",
291
+ Ź: "Z",
292
+ Ż: "Z",
293
+ ą: "a",
294
+ ć: "c",
295
+ ę: "e",
296
+ ł: "l",
297
+ ń: "n",
298
+ ś: "s",
299
+ ź: "z",
300
+ ż: "z",
301
+
302
+ // Latvian
303
+ Ā: "A",
304
+ Ē: "E",
305
+ Ģ: "G",
306
+ Ī: "i",
307
+ Ķ: "k",
308
+ Ļ: "L",
309
+ Ņ: "N",
310
+ Ū: "u",
311
+ ā: "a",
312
+ ē: "e",
313
+ ģ: "g",
314
+ ī: "i",
315
+ ķ: "k",
316
+ ļ: "l",
317
+ ņ: "n",
318
+ ū: "u",
319
+ };
320
+
321
+ // Vietnamese
322
+ s = s.replace(/á|à|ả|ạ|ã|ă|ắ|ằ|ẳ|ẵ|ặ|â|ấ|ầ|ẩ|ẫ|ậ/gi, "a");
323
+ s = s.replace(/é|è|ẻ|ẽ|ẹ|ê|ế|ề|ể|ễ|ệ/gi, "e");
324
+ s = s.replace(/i|í|ì|ỉ|ĩ|ị/gi, "i");
325
+ s = s.replace(/ó|ò|ỏ|õ|ọ|ô|ố|ồ|ổ|ỗ|ộ|ơ|ớ|ờ|ở|ỡ|ợ/gi, "o");
326
+ s = s.replace(/ú|ù|ủ|ũ|ụ|ư|ứ|ừ|ử|ữ|ự/gi, "u");
327
+ s = s.replace(/ý|ỳ|ỷ|ỹ|ỵ/gi, "y");
328
+ s = s.replace(/đ/gi, "d");
329
+ s = s.replace(/\-\-\-\-\-/gi, "-");
330
+ s = s.replace(/\-\-\-\-/gi, "-");
331
+ s = s.replace(/\-\-\-/gi, "-");
332
+ s = s.replace(/\-\-/gi, "-");
333
+ s = "@" + s + "@";
334
+ s = s.replace(/\@\-|\-\@|\@/gi, "");
335
+
336
+ // Make custom replacements
337
+ for (var k in opt.replacements) {
338
+ s = s.replace(RegExp(k, "g"), opt.replacements[k]);
339
+ }
340
+
341
+ // Transliterate characters to ASCII
342
+ if (opt.transliterate) {
343
+ for (var k in char_map) {
344
+ s = s.replace(RegExp(k, "g"), char_map[k]);
345
+ }
346
+ }
347
+
348
+ // Replace non-alphanumeric characters with our delimiter
349
+ var alnum = typeof XRegExp === "undefined" ? RegExp("[^a-z0-9]+", "ig") : XRegExp("[^\\p{L}\\p{N}]+", "ig");
350
+ s = s.replace(alnum, opt.delimiter);
351
+
352
+ // Remove duplicate delimiters
353
+ s = s.replace(RegExp("[" + opt.delimiter + "]{2,}", "g"), opt.delimiter);
354
+
355
+ // Truncate slug to max. characters
356
+ s = s.substring(0, opt.limit);
357
+
358
+ // Remove delimiter from ends
359
+ s = s.replace(RegExp("(^" + opt.delimiter + "|" + opt.delimiter + "$)", "g"), "");
360
+
361
+ return opt.lowercase ? s.toLowerCase() : s;
362
+ };
363
+
364
+ const slug = { makeSlug };
365
+ export default slug;