@sprucelabs/schema 28.2.0 → 28.2.1

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.
@@ -1,6 +1,32 @@
1
- export default function assertOptions<Options extends Record<string, any>, Key extends Join<PathsToStringProps<Options>, '.'> = Join<PathsToStringProps<Options>, '.'>>(options: Options, toCheck: Key[], friendlyMessage?: string): Options & Required<Pick<Options, Key>>;
2
- export declare type PathsToStringProps<T> = T extends Record<string, any> ? {
3
- [K in keyof T]: [K, ...PathsToStringProps<T[K]>];
4
- }[keyof T] : [];
5
- declare type Join<T extends string[], D extends string> = T extends [] ? never : T extends [infer F] ? F : T extends [infer F, ...infer R] ? F extends string ? `${F}${D}${Join<Extract<R, string[]>, D>}` : never : string;
1
+ declare type ForceRequired<Options, Key extends Paths<Options>> = Required<Pick<Options, Extract<Key, keyof Options>>>;
2
+ export default function assertOptions<Options, Key extends Paths<Options> = Paths<Options>>(options: Options, toCheck: Key[], friendlyMessage?: string): Options & ForceRequired<Options, Key>;
3
+ declare type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${'' extends P ? '' : '.'}${P}` : never : never;
4
+ declare type Prev = [
5
+ never,
6
+ 0,
7
+ 1,
8
+ 2,
9
+ 3,
10
+ 4,
11
+ 5,
12
+ 6,
13
+ 7,
14
+ 8,
15
+ 9,
16
+ 10,
17
+ 11,
18
+ 12,
19
+ 13,
20
+ 14,
21
+ 15,
22
+ 16,
23
+ 17,
24
+ 18,
25
+ 19,
26
+ 20,
27
+ ...0[]
28
+ ];
29
+ declare type Paths<T, D extends number = 10> = [D] extends [never] ? never : T extends object ? {
30
+ [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K], Prev[D]>> : never;
31
+ }[keyof T] : '';
6
32
  export {};
@@ -1,5 +1,6 @@
1
1
  import get from 'just-safe-get';
2
2
  import SpruceError from '../errors/SpruceError.js';
3
+ //@ts-ignore
3
4
  export default function assertOptions(options, toCheck, friendlyMessage) {
4
5
  const missing = [];
5
6
  for (const check of toCheck) {
@@ -1,6 +1,32 @@
1
- export default function assertOptions<Options extends Record<string, any>, Key extends Join<PathsToStringProps<Options>, '.'> = Join<PathsToStringProps<Options>, '.'>>(options: Options, toCheck: Key[], friendlyMessage?: string): Options & Required<Pick<Options, Key>>;
2
- export declare type PathsToStringProps<T> = T extends Record<string, any> ? {
3
- [K in keyof T]: [K, ...PathsToStringProps<T[K]>];
4
- }[keyof T] : [];
5
- declare type Join<T extends string[], D extends string> = T extends [] ? never : T extends [infer F] ? F : T extends [infer F, ...infer R] ? F extends string ? `${F}${D}${Join<Extract<R, string[]>, D>}` : never : string;
1
+ declare type ForceRequired<Options, Key extends Paths<Options>> = Required<Pick<Options, Extract<Key, keyof Options>>>;
2
+ export default function assertOptions<Options, Key extends Paths<Options> = Paths<Options>>(options: Options, toCheck: Key[], friendlyMessage?: string): Options & ForceRequired<Options, Key>;
3
+ declare type Join<K, P> = K extends string | number ? P extends string | number ? `${K}${'' extends P ? '' : '.'}${P}` : never : never;
4
+ declare type Prev = [
5
+ never,
6
+ 0,
7
+ 1,
8
+ 2,
9
+ 3,
10
+ 4,
11
+ 5,
12
+ 6,
13
+ 7,
14
+ 8,
15
+ 9,
16
+ 10,
17
+ 11,
18
+ 12,
19
+ 13,
20
+ 14,
21
+ 15,
22
+ 16,
23
+ 17,
24
+ 18,
25
+ 19,
26
+ 20,
27
+ ...0[]
28
+ ];
29
+ declare type Paths<T, D extends number = 10> = [D] extends [never] ? never : T extends object ? {
30
+ [K in keyof T]-?: K extends string | number ? `${K}` | Join<K, Paths<T[K], Prev[D]>> : never;
31
+ }[keyof T] : '';
6
32
  export {};
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const just_safe_get_1 = __importDefault(require("just-safe-get"));
7
7
  const SpruceError_1 = __importDefault(require("../errors/SpruceError"));
8
+ //@ts-ignore
8
9
  function assertOptions(options, toCheck, friendlyMessage) {
9
10
  const missing = [];
10
11
  for (const check of toCheck) {
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "!build/__tests__",
9
9
  "esm"
10
10
  ],
11
- "version": "28.2.0",
11
+ "version": "28.2.1",
12
12
  "main": "./build/index.js",
13
13
  "types": "./build/index.d.ts",
14
14
  "module": "./build/esm/index.js",
@@ -70,7 +70,8 @@
70
70
  "@sprucelabs/test": "^7.7.314",
71
71
  "email-validator": "^2.0.4",
72
72
  "just-safe-get": "^4.0.1",
73
- "lodash": "^4.17.21"
73
+ "lodash": "^4.17.21",
74
+ "ts-toolbelt": "^9.6.0"
74
75
  },
75
76
  "devDependencies": {
76
77
  "@sprucelabs/esm-postbuild": "^1.0.424",