@bgord/tools 1.1.9 → 1.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/slug.service.d.ts +4 -0
- package/dist/slug.service.js +15 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/readme.md +1 -0
- package/src/index.ts +1 -0
- package/src/slug.service.ts +18 -0
package/dist/index.d.ts
CHANGED
|
@@ -75,6 +75,7 @@ export * from "./rounding.adapter";
|
|
|
75
75
|
export * from "./rounding.port";
|
|
76
76
|
export * from "./size.vo";
|
|
77
77
|
export * from "./size-bytes.vo";
|
|
78
|
+
export * from "./slug.service";
|
|
78
79
|
export * from "./stopwatch.service";
|
|
79
80
|
export * from "./sum.service";
|
|
80
81
|
export * from "./thousands-separator.service";
|
package/dist/index.js
CHANGED
|
@@ -75,6 +75,7 @@ export * from "./rounding.adapter";
|
|
|
75
75
|
export * from "./rounding.port";
|
|
76
76
|
export * from "./size.vo";
|
|
77
77
|
export * from "./size-bytes.vo";
|
|
78
|
+
export * from "./slug.service";
|
|
78
79
|
export * from "./stopwatch.service";
|
|
79
80
|
export * from "./sum.service";
|
|
80
81
|
export * from "./thousands-separator.service";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class Slug {
|
|
2
|
+
// Any letter or any number
|
|
3
|
+
static WHITELIST = /[\p{L}\p{N}]/u;
|
|
4
|
+
static generate(input, separator = "-") {
|
|
5
|
+
return (input
|
|
6
|
+
.split("")
|
|
7
|
+
.map((character) => (Slug.WHITELIST.test(character) ? character : separator))
|
|
8
|
+
.join("")
|
|
9
|
+
// Collapse multiple consecutive separators
|
|
10
|
+
.replace(new RegExp(`\\${separator}+`, "g"), separator)
|
|
11
|
+
// Trim leading and trailing separators
|
|
12
|
+
.replace(new RegExp(`^\\${separator}|\\${separator}$`, "g"), "")
|
|
13
|
+
.toLocaleLowerCase());
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/age-years.vo.ts","../src/age.vo.ts","../src/api-key.vo.ts","../src/basename.vo.ts","../src/clock-format.service.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/day-iso-id.vo.ts","../src/day.vo.ts","../src/directory-path-absolute.vo.ts","../src/directory-path-relative.vo.ts","../src/division-factor.vo.ts","../src/dll.service.ts","../src/duration-ms.vo.ts","../src/duration.service.ts","../src/email-mask.service.ts","../src/etags.vo.ts","../src/extension.vo.ts","../src/feature-flag-value.vo.ts","../src/feature-flag.vo.ts","../src/file-path-absolute-schema.vo.ts","../src/file-path-relative-schema.vo.ts","../src/file-path.vo.ts","../src/filename-affix.vo.ts","../src/filename-from-string.vo.ts","../src/filename.vo.ts","../src/height-milimiters.vo.ts","../src/height.vo.ts","../src/hour-format.service.ts","../src/hour-schema.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban-schema.vo.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/language.vo.ts","../src/linear-regression.service.ts","../src/mean.service.ts","../src/mime-types.vo.ts","../src/mime-value.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute-schema.vo.ts","../src/minute.vo.ts","../src/money-amount.vo.ts","../src/money.vo.ts","../src/month-iso-id.vo.ts","../src/month.vo.ts","../src/multiplication-factor.vo.ts","../src/noop.service.ts","../src/notification-template.vo.ts","../src/object-key.vo.ts","../src/outlier-detector.service.ts","../src/package-version-schema.vo.ts","../src/package-version.vo.ts","../src/pagination-page.vo.ts","../src/pagination-skip.vo.ts","../src/pagination-take.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/quarter-iso-id.vo.ts","../src/quarter.vo.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering-item-position-value.vo.ts","../src/reordering.service.ts","../src/revision-value.vo.ts","../src/revision.vo.ts","../src/rounding.adapter.ts","../src/rounding.port.ts","../src/size-bytes.vo.ts","../src/size.vo.ts","../src/stopwatch.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/timestamp-value.vo.ts","../src/timestamp.vo.ts","../src/timezone.vo.ts","../src/ts-utils.ts","../src/visually-unambiguous-characters-generator.service.ts","../src/week-iso-id.vo.ts","../src/week.vo.ts","../src/weekday.vo.ts","../src/weight-grams.vo.ts","../src/weight.vo.ts","../src/year-iso-id.vo.ts","../src/year.vo.ts","../src/z-score.service.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/age-years.vo.ts","../src/age.vo.ts","../src/api-key.vo.ts","../src/basename.vo.ts","../src/clock-format.service.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/day-iso-id.vo.ts","../src/day.vo.ts","../src/directory-path-absolute.vo.ts","../src/directory-path-relative.vo.ts","../src/division-factor.vo.ts","../src/dll.service.ts","../src/duration-ms.vo.ts","../src/duration.service.ts","../src/email-mask.service.ts","../src/etags.vo.ts","../src/extension.vo.ts","../src/feature-flag-value.vo.ts","../src/feature-flag.vo.ts","../src/file-path-absolute-schema.vo.ts","../src/file-path-relative-schema.vo.ts","../src/file-path.vo.ts","../src/filename-affix.vo.ts","../src/filename-from-string.vo.ts","../src/filename.vo.ts","../src/height-milimiters.vo.ts","../src/height.vo.ts","../src/hour-format.service.ts","../src/hour-schema.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban-schema.vo.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/language.vo.ts","../src/linear-regression.service.ts","../src/mean.service.ts","../src/mime-types.vo.ts","../src/mime-value.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute-schema.vo.ts","../src/minute.vo.ts","../src/money-amount.vo.ts","../src/money.vo.ts","../src/month-iso-id.vo.ts","../src/month.vo.ts","../src/multiplication-factor.vo.ts","../src/noop.service.ts","../src/notification-template.vo.ts","../src/object-key.vo.ts","../src/outlier-detector.service.ts","../src/package-version-schema.vo.ts","../src/package-version.vo.ts","../src/pagination-page.vo.ts","../src/pagination-skip.vo.ts","../src/pagination-take.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/quarter-iso-id.vo.ts","../src/quarter.vo.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering-item-position-value.vo.ts","../src/reordering.service.ts","../src/revision-value.vo.ts","../src/revision.vo.ts","../src/rounding.adapter.ts","../src/rounding.port.ts","../src/size-bytes.vo.ts","../src/size.vo.ts","../src/slug.service.ts","../src/stopwatch.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/timestamp-value.vo.ts","../src/timestamp.vo.ts","../src/timezone.vo.ts","../src/ts-utils.ts","../src/visually-unambiguous-characters-generator.service.ts","../src/week-iso-id.vo.ts","../src/week.vo.ts","../src/weekday.vo.ts","../src/weight-grams.vo.ts","../src/weight.vo.ts","../src/year-iso-id.vo.ts","../src/year.vo.ts","../src/z-score.service.ts"],"version":"5.9.3"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bgord/tools",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.11",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Bartosz Gordon",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@types/mime-types": "3.0.1",
|
|
29
29
|
"cspell": "9.4.0",
|
|
30
30
|
"knip": "5.71.0",
|
|
31
|
-
"lefthook": "2.0.
|
|
31
|
+
"lefthook": "2.0.7",
|
|
32
32
|
"only-allow": "1.2.2",
|
|
33
33
|
"shellcheck": "4.1.0",
|
|
34
34
|
"typescript": "5.9.3",
|
package/readme.md
CHANGED
package/src/index.ts
CHANGED
|
@@ -75,6 +75,7 @@ export * from "./rounding.adapter";
|
|
|
75
75
|
export * from "./rounding.port";
|
|
76
76
|
export * from "./size.vo";
|
|
77
77
|
export * from "./size-bytes.vo";
|
|
78
|
+
export * from "./slug.service";
|
|
78
79
|
export * from "./stopwatch.service";
|
|
79
80
|
export * from "./sum.service";
|
|
80
81
|
export * from "./thousands-separator.service";
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export class Slug {
|
|
2
|
+
// Any letter or any number
|
|
3
|
+
private static WHITELIST = /[\p{L}\p{N}]/u;
|
|
4
|
+
|
|
5
|
+
static generate(input: string, separator = "-"): string {
|
|
6
|
+
return (
|
|
7
|
+
input
|
|
8
|
+
.split("")
|
|
9
|
+
.map((character) => (Slug.WHITELIST.test(character) ? character : separator))
|
|
10
|
+
.join("")
|
|
11
|
+
// Collapse multiple consecutive separators
|
|
12
|
+
.replace(new RegExp(`\\${separator}+`, "g"), separator)
|
|
13
|
+
// Trim leading and trailing separators
|
|
14
|
+
.replace(new RegExp(`^\\${separator}|\\${separator}$`, "g"), "")
|
|
15
|
+
.toLocaleLowerCase()
|
|
16
|
+
);
|
|
17
|
+
}
|
|
18
|
+
}
|