@bgord/tools 0.12.17 → 0.12.18

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 CHANGED
@@ -36,6 +36,7 @@ export * from "./minute.vo";
36
36
  export * from "./money.vo";
37
37
  export * from "./noop.service";
38
38
  export * from "./notification-template.vo";
39
+ export * from "./object-key.vo";
39
40
  export * from "./outlier-detector.service";
40
41
  export * from "./package-version.vo";
41
42
  export * from "./pagination.service";
package/dist/index.js CHANGED
@@ -36,6 +36,7 @@ export * from "./minute.vo";
36
36
  export * from "./money.vo";
37
37
  export * from "./noop.service";
38
38
  export * from "./notification-template.vo";
39
+ export * from "./object-key.vo";
39
40
  export * from "./outlier-detector.service";
40
41
  export * from "./package-version.vo";
41
42
  export * from "./pagination.service";
@@ -0,0 +1,3 @@
1
+ import { z } from "zod/v4";
2
+ export declare const ObjectKey: z.core.$ZodBranded<z.ZodString, "object_key">;
3
+ export type ObjectKeyType = z.infer<typeof ObjectKey>;
@@ -0,0 +1,11 @@
1
+ import { z } from "zod/v4";
2
+ export const ObjectKey = z
3
+ .string()
4
+ .trim()
5
+ .refine((v) => !v.startsWith("/"), "obj_key_must_not_start_with_slash")
6
+ .refine((v) => !v.includes("\\"), "obj_key_backslash_forbidden")
7
+ // biome-ignore lint: lint/suspicious/noControlCharactersInRegex
8
+ .refine((v) => !/[\u0000-\u001F\u007F]/.test(v), "obj_key_control_chars_forbidden")
9
+ .refine((v) => v.length > 0, "obj_key_empty")
10
+ .refine((v) => v.split("/").every((s) => /^[a-z0-9._-]+$/.test(s) && s !== "." && s !== ".."), "obj_key_bad_segments")
11
+ .brand("object_key");
@@ -1 +1 @@
1
- {"root":["../src/api-key.vo.ts","../src/basename.vo.ts","../src/build-version.vo.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/dates-of-the-week.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/dll.service.ts","../src/email-mask.service.ts","../src/etags.vo.ts","../src/extension.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-from-string.vo.ts","../src/filename-suffix.vo.ts","../src/filename.vo.ts","../src/filter.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/language.vo.ts","../src/leap-year-checker.service.ts","../src/mean.service.ts","../src/mime-types.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute.vo.ts","../src/money.vo.ts","../src/noop.service.ts","../src/notification-template.vo.ts","../src/outlier-detector.service.ts","../src/package-version.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering.service.ts","../src/revision.vo.ts","../src/rounding.service.ts","../src/simple-linear-regression.service.ts","../src/size.vo.ts","../src/stepper.service.ts","../src/stopwatch.service.ts","../src/streak-calculator.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/time.service.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/z-score.service.ts"],"version":"5.9.2"}
1
+ {"root":["../src/api-key.vo.ts","../src/basename.vo.ts","../src/build-version.vo.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/dates-of-the-week.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/dll.service.ts","../src/email-mask.service.ts","../src/etags.vo.ts","../src/extension.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-from-string.vo.ts","../src/filename-suffix.vo.ts","../src/filename.vo.ts","../src/filter.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/language.vo.ts","../src/leap-year-checker.service.ts","../src/mean.service.ts","../src/mime-types.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute.vo.ts","../src/money.vo.ts","../src/noop.service.ts","../src/notification-template.vo.ts","../src/object-key.vo.ts","../src/outlier-detector.service.ts","../src/package-version.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering.service.ts","../src/revision.vo.ts","../src/rounding.service.ts","../src/simple-linear-regression.service.ts","../src/size.vo.ts","../src/stepper.service.ts","../src/stopwatch.service.ts","../src/streak-calculator.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/time.service.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/z-score.service.ts"],"version":"5.9.2"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgord/tools",
3
- "version": "0.12.17",
3
+ "version": "0.12.18",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Bartosz Gordon",
package/readme.md CHANGED
@@ -62,6 +62,7 @@ src/
62
62
  ├── money.vo.ts
63
63
  ├── noop.service.ts
64
64
  ├── notification-template.vo.ts
65
+ ├── object-key.vo.ts
65
66
  ├── outlier-detector.service.ts
66
67
  ├── package-version.vo.ts
67
68
  ├── pagination.service.ts
package/src/index.ts CHANGED
@@ -36,6 +36,7 @@ export * from "./minute.vo";
36
36
  export * from "./money.vo";
37
37
  export * from "./noop.service";
38
38
  export * from "./notification-template.vo";
39
+ export * from "./object-key.vo";
39
40
  export * from "./outlier-detector.service";
40
41
  export * from "./package-version.vo";
41
42
  export * from "./pagination.service";
@@ -0,0 +1,17 @@
1
+ import { z } from "zod/v4";
2
+
3
+ export const ObjectKey = z
4
+ .string()
5
+ .trim()
6
+ .refine((v) => !v.startsWith("/"), "obj_key_must_not_start_with_slash")
7
+ .refine((v) => !v.includes("\\"), "obj_key_backslash_forbidden")
8
+ // biome-ignore lint: lint/suspicious/noControlCharactersInRegex
9
+ .refine((v) => !/[\u0000-\u001F\u007F]/.test(v), "obj_key_control_chars_forbidden")
10
+ .refine((v) => v.length > 0, "obj_key_empty")
11
+ .refine(
12
+ (v) => v.split("/").every((s) => /^[a-z0-9._-]+$/.test(s) && s !== "." && s !== ".."),
13
+ "obj_key_bad_segments",
14
+ )
15
+ .brand("object_key");
16
+
17
+ export type ObjectKeyType = z.infer<typeof ObjectKey>;