cross-state 0.9.2 → 0.9.3

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 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../../../src/immer/immerMethods.ts"],"sourcesContent":["import type { Draft } from 'immer';\nimport { produce } from 'immer';\nimport type { Store } from '@core/store';\nimport { type Path, type Value } from '@lib/path';\n\ntype Recipe<T> = (draft: Draft<T>) => void;\n\nfunction update<T>(this: Store<T>, recipe: Recipe<T>): void;\n\nfunction update<T, P extends Path<T>>(this: Store<T>, path: P, recipe: Recipe<Value<T, P>>): void;\n\nfunction update<T, P extends Path<T>>(\n this: Store<T>,\n ...args: [recipe: Recipe<T>] | [P: P, recipe: Recipe<Value<T, P>>]\n) {\n if (args.length === 1) {\n this.set((value) =>\n produce(value, (draft) => {\n args[0](draft);\n }),\n );\n } else {\n this.set(args[0], (value) =>\n produce(value, (draft) => {\n args[1](draft);\n }),\n );\n }\n}\n\nexport const immerMethods = {\n update,\n};\n"],"names":["produce"],"mappings":";;;AAWA,SAAS,UAEJ,MACH;AACI,MAAA,KAAK,WAAW,GAAG;AAChB,SAAA;AAAA,MAAI,CAAC,UACRA,MAAAA,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EACH,OACK;AACA,SAAA;AAAA,MAAI,KAAK,CAAC;AAAA,MAAG,CAAC,UACjBA,MAAAA,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL;AACF;AAEO,MAAM,eAAe;AAAA,EAC1B;AACF;;"}
1
+ {"version":3,"file":"index.cjs","sources":["../../../src/immer/immerMethods.ts"],"sourcesContent":["import type { Draft } from 'immer';\nimport { produce } from 'immer';\nimport type { Store } from '@core/store';\nimport { type Path, type Value } from '@lib/path';\n\ntype Recipe<T> = (draft: Draft<T>) => void;\n\nfunction update<T>(this: Store<T>, recipe: Recipe<T>): void;\n\nfunction update<T, const P extends Path<T>>(\n this: Store<T>,\n path: P,\n recipe: Recipe<Value<T, P>>,\n): void;\n\nfunction update<T, P extends Path<T>>(\n this: Store<T>,\n ...args: [recipe: Recipe<T>] | [P: P, recipe: Recipe<Value<T, P>>]\n) {\n if (args.length === 1) {\n this.set((value) =>\n produce(value, (draft) => {\n args[0](draft);\n }),\n );\n } else {\n this.set(args[0], (value) =>\n produce(value, (draft) => {\n args[1](draft);\n }),\n );\n }\n}\n\nexport const immerMethods = {\n update,\n};\n"],"names":["produce"],"mappings":";;;AAeA,SAAS,UAEJ,MACH;AACI,MAAA,KAAK,WAAW,GAAG;AAChB,SAAA;AAAA,MAAI,CAAC,UACRA,MAAAA,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EACH,OACK;AACA,SAAA;AAAA,MAAI,KAAK,CAAC;AAAA,MAAG,CAAC,UACjBA,MAAAA,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL;AACF;AAEO,MAAM,eAAe;AAAA,EAC1B;AACF;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/immer/immerMethods.ts"],"sourcesContent":["import type { Draft } from 'immer';\nimport { produce } from 'immer';\nimport type { Store } from '@core/store';\nimport { type Path, type Value } from '@lib/path';\n\ntype Recipe<T> = (draft: Draft<T>) => void;\n\nfunction update<T>(this: Store<T>, recipe: Recipe<T>): void;\n\nfunction update<T, P extends Path<T>>(this: Store<T>, path: P, recipe: Recipe<Value<T, P>>): void;\n\nfunction update<T, P extends Path<T>>(\n this: Store<T>,\n ...args: [recipe: Recipe<T>] | [P: P, recipe: Recipe<Value<T, P>>]\n) {\n if (args.length === 1) {\n this.set((value) =>\n produce(value, (draft) => {\n args[0](draft);\n }),\n );\n } else {\n this.set(args[0], (value) =>\n produce(value, (draft) => {\n args[1](draft);\n }),\n );\n }\n}\n\nexport const immerMethods = {\n update,\n};\n"],"names":[],"mappings":";AAWA,SAAS,UAEJ,MACH;AACI,MAAA,KAAK,WAAW,GAAG;AAChB,SAAA;AAAA,MAAI,CAAC,UACR,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EACH,OACK;AACA,SAAA;AAAA,MAAI,KAAK,CAAC;AAAA,MAAG,CAAC,UACjB,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL;AACF;AAEO,MAAM,eAAe;AAAA,EAC1B;AACF;"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/immer/immerMethods.ts"],"sourcesContent":["import type { Draft } from 'immer';\nimport { produce } from 'immer';\nimport type { Store } from '@core/store';\nimport { type Path, type Value } from '@lib/path';\n\ntype Recipe<T> = (draft: Draft<T>) => void;\n\nfunction update<T>(this: Store<T>, recipe: Recipe<T>): void;\n\nfunction update<T, const P extends Path<T>>(\n this: Store<T>,\n path: P,\n recipe: Recipe<Value<T, P>>,\n): void;\n\nfunction update<T, P extends Path<T>>(\n this: Store<T>,\n ...args: [recipe: Recipe<T>] | [P: P, recipe: Recipe<Value<T, P>>]\n) {\n if (args.length === 1) {\n this.set((value) =>\n produce(value, (draft) => {\n args[0](draft);\n }),\n );\n } else {\n this.set(args[0], (value) =>\n produce(value, (draft) => {\n args[1](draft);\n }),\n );\n }\n}\n\nexport const immerMethods = {\n update,\n};\n"],"names":[],"mappings":";AAeA,SAAS,UAEJ,MACH;AACI,MAAA,KAAK,WAAW,GAAG;AAChB,SAAA;AAAA,MAAI,CAAC,UACR,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EACH,OACK;AACA,SAAA;AAAA,MAAI,KAAK,CAAC;AAAA,MAAG,CAAC,UACjB,QAAQ,OAAO,CAAC,UAAU;AACnB,aAAA,CAAC,EAAE,KAAK;AAAA,MAAA,CACd;AAAA,IAAA;AAAA,EAEL;AACF;AAEO,MAAM,eAAe;AAAA,EAC1B;AACF;"}
@@ -3,7 +3,7 @@ import type { Store } from '../core/store';
3
3
  import { type Path, type Value } from '../lib/path';
4
4
  type Recipe<T> = (draft: Draft<T>) => void;
5
5
  declare function update<T>(this: Store<T>, recipe: Recipe<T>): void;
6
- declare function update<T, P extends Path<T>>(this: Store<T>, path: P, recipe: Recipe<Value<T, P>>): void;
6
+ declare function update<T, const P extends Path<T>>(this: Store<T>, path: P, recipe: Recipe<Value<T, P>>): void;
7
7
  export declare const immerMethods: {
8
8
  update: typeof update;
9
9
  };
@@ -1,13 +1,13 @@
1
1
  import type { ArrayToStringPath, Array_, IsAny, IsNever, Object_, OptionalPropertyOf, StringToArrayPath, StringToNumber } from './typeHelpers';
2
2
  export type KeyType = string | number | symbol;
3
3
  export type GetKeys<T extends Object_ | Array_> = T extends Array_ ? T extends readonly [] ? never : '0' extends keyof T ? StringToNumber<keyof T> : number : keyof T;
4
- export type _PathAsArray<T, Optional, MaxDepth, Depth extends 1[]> = true extends IsAny<T> ? KeyType[] : T extends never ? never : T extends Object_ ? Depth['length'] extends MaxDepth ? string[] : T extends Map<infer K extends KeyType, infer V> ? [K] | [K, ..._PathAsArray<V, Optional, MaxDepth, [...Depth, 1]>] : T extends Set<any> ? [number] : {
5
- [K in GetKeys<T>]: (Optional extends true ? (K extends OptionalPropertyOf<T> ? [K] : never) : [K]) | [K, ..._PathAsArray<T[K], Optional, MaxDepth, [...Depth, 1]>];
4
+ export type _PathAsArray<T, Optional, MaxDepth, Depth extends 1[]> = true extends IsAny<T> ? readonly KeyType[] : T extends never ? never : T extends Object_ ? Depth['length'] extends MaxDepth ? readonly string[] : T extends Map<infer K extends KeyType, infer V> ? readonly [K] | readonly [K, ..._PathAsArray<V, Optional, MaxDepth, [...Depth, 1]>] : T extends Set<any> ? readonly [number] : {
5
+ [K in GetKeys<T>]: (Optional extends true ? K extends OptionalPropertyOf<T> ? readonly [K] : never : readonly [K]) | readonly [K, ..._PathAsArray<T[K], Optional, MaxDepth, [...Depth, 1]>];
6
6
  }[GetKeys<T>] : never;
7
7
  export type PathAsArray<T, Optional extends boolean = false, MaxDepth extends number = 5> = _PathAsArray<T, Optional, MaxDepth, []>;
8
8
  export type PathAsString<T, Optional extends boolean = false, MaxDepth extends number = 5> = ArrayToStringPath<PathAsArray<T, Optional, MaxDepth>>;
9
- export type Path<T, Optional extends boolean = false, MaxDepth extends number = 5> = (PathAsString<T, Optional, MaxDepth> & string) | PathAsArray<T, Optional, MaxDepth>;
10
- export type Value<T, P> = true extends IsAny<T> | IsAny<P> ? any : true extends IsNever<T> | IsNever<P> ? never : P extends string ? Value<T, StringToArrayPath<P>> : P extends [infer First extends KeyType, ...infer Rest extends KeyType[]] ? T extends Map<any, infer V> | Set<infer V> ? Value<V, Rest> | undefined : T extends Array_ ? any[] extends T ? Value<T[First & keyof T], Rest> | undefined : Value<T[First & keyof T], Rest> : T extends Object_ ? Record<any, any> extends T ? Value<T[First], Rest> | undefined : Value<T[First], Rest> : never : T;
9
+ export type Path<T, Optional extends boolean = false, MaxDepth extends number = 5> = PathAsString<T, Optional, MaxDepth> | PathAsArray<T, Optional, MaxDepth>;
10
+ export type Value<T, P> = true extends IsAny<T> | IsAny<P> ? any : true extends IsNever<T> | IsNever<P> ? never : P extends string ? Value<T, StringToArrayPath<P>> : P extends readonly [infer First extends KeyType, ...infer Rest extends KeyType[]] ? T extends Map<any, infer V> | Set<infer V> ? Value<V, Rest> | undefined : T extends Array_ ? any[] extends T ? Value<T[First & keyof T], Rest> | undefined : Value<T[First & keyof T], Rest> : T extends Object_ ? Record<any, any> extends T ? Value<T[First], Rest> | undefined : Value<T[First], Rest> : never : T;
11
11
  export type _WildcardPathAsArray<T, MaxDepth, Depth extends 1[]> = [] | (0 extends 1 & T ? KeyType[] : T extends never ? never : T extends Object_ ? Depth['length'] extends MaxDepth ? string[] : T extends Map<infer K extends KeyType, infer V> ? ['*'] | [K] | [K, ..._WildcardPathAsArray<V, MaxDepth, [...Depth, 1]>] : T extends Set<any> ? ['*'] | [number] : {
12
12
  [K in GetKeys<T>]: ['*'] | [K] | [K, ..._WildcardPathAsArray<T[K], MaxDepth, [...Depth, 1]>];
13
13
  }[GetKeys<T>] : never);
@@ -15,5 +15,8 @@ export type WildcardPathAsArray<T, MaxDepth extends number = 5> = _WildcardPathA
15
15
  ]>;
16
16
  export type WildcardPathAsString<T, MaxDepth extends number = 5> = ArrayToStringPath<_WildcardPathAsArray<T, MaxDepth, []>>;
17
17
  export type WildcardPath<T, MaxDepth extends number = 5> = WildcardPathAsString<T, MaxDepth> | WildcardPathAsArray<T, MaxDepth>;
18
- export type WildcardValue<T, P> = true extends IsAny<T> | IsAny<P> ? any : true extends IsNever<T> | IsNever<P> ? never : P extends string ? WildcardValue<T, StringToArrayPath<P>> : P extends [infer First extends KeyType, ...infer Rest extends KeyType[]] ? T extends Map<any, infer V> | Set<infer V> ? WildcardValue<V, Rest> | (First extends '*' ? never : undefined) : T extends Array_ ? First extends '*' ? T[number] : any[] extends T ? WildcardValue<T[First & keyof T], Rest> | undefined : First extends keyof T ? WildcardValue<T[First], Rest> : undefined : T extends Object_ ? First extends '*' ? T[keyof T] : Record<any, any> extends T ? WildcardValue<T[First], Rest> | undefined : WildcardValue<T[First], Rest> : never : T;
19
- export type WildcardMatch<S, W> = S extends string ? WildcardMatch<StringToArrayPath<S>, W> : W extends string ? WildcardMatch<S, StringToArrayPath<W>> : [S, W] extends [[], []] ? true : [S, W] extends [[infer SFirst, ...infer SRest], [infer WFirst, ...infer WRest]] ? [WFirst, WRest['length']] extends ['*' | SFirst, SRest['length']] ? WildcardMatch<SRest, WRest> : false : false;
18
+ export type WildcardValue<T, P> = true extends IsAny<T> | IsAny<P> ? any : true extends IsNever<T> | IsNever<P> ? never : P extends string ? WildcardValue<T, StringToArrayPath<P>> : P extends readonly [infer First extends KeyType, ...infer Rest extends KeyType[]] ? T extends Map<any, infer V> | Set<infer V> ? WildcardValue<V, Rest> | (First extends '*' ? never : undefined) : T extends Array_ ? First extends '*' ? T[number] : any[] extends T ? WildcardValue<T[First & keyof T], Rest> | undefined : First extends keyof T ? WildcardValue<T[First], Rest> : undefined : T extends Object_ ? First extends '*' ? T[keyof T] : Record<any, any> extends T ? WildcardValue<T[First], Rest> | undefined : WildcardValue<T[First], Rest> : never : T;
19
+ export type WildcardMatch<S, W> = S extends string ? WildcardMatch<StringToArrayPath<S>, W> : W extends string ? WildcardMatch<S, StringToArrayPath<W>> : [S, W] extends [readonly [], readonly []] ? true : [S, W] extends [
20
+ readonly [infer SFirst, ...infer SRest],
21
+ readonly [infer WFirst, ...infer WRest]
22
+ ] ? [WFirst, WRest['length']] extends ['*' | SFirst, SRest['length']] ? WildcardMatch<SRest, WRest> : false : false;
@@ -2,8 +2,8 @@ import { type KeyType } from './path';
2
2
  export type Object_ = Record<string | number | symbol, any>;
3
3
  export type Array_ = readonly any[];
4
4
  export type StringToNumber<T> = T extends `${infer K extends number}` ? K : never;
5
- export type ArrayToStringPath<T> = T extends [] ? '' : T extends [infer First extends string | number, ...infer Rest] ? First extends `${string}.${string}` ? never : Rest extends [] ? `${First}` : `${First}.${ArrayToStringPath<Rest>}` : T extends KeyType[] ? string : never;
6
- export type StringToArrayPath<T> = T extends '' ? [] : T extends `${infer First}.${infer Rest}` ? [First, ...StringToArrayPath<Rest>] : [T];
5
+ export type ArrayToStringPath<T> = T extends readonly [] ? '' : T extends readonly [infer First extends string | number, ...infer Rest] ? First extends `${string}.${string}` ? never : Rest extends readonly [] ? `${First}` : `${First}.${ArrayToStringPath<Rest>}` : T extends readonly KeyType[] ? string : never;
6
+ export type StringToArrayPath<T> = T extends '' ? readonly [] : T extends `${infer First}.${infer Rest}` ? readonly [First, ...StringToArrayPath<Rest>] : readonly [T];
7
7
  export type OptionalPropertyOf<T> = Exclude<{
8
8
  [K in keyof T]: T extends Record<K, T[K]> ? never : K;
9
9
  }[keyof T], undefined>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cross-state",
3
- "version": "0.9.2",
3
+ "version": "0.9.3",
4
4
  "description": "(React) state library",
5
5
  "license": "ISC",
6
6
  "repository": "schummar/schummar-state",
@@ -112,36 +112,36 @@
112
112
  "@schummar/runp": "1.12.0",
113
113
  "@size-limit/preset-small-lib": "^8.2.4",
114
114
  "@testing-library/react": "14.0.0",
115
- "@types/react": "18.2.6",
115
+ "@types/react": "18.2.11",
116
116
  "@types/react-dom": "18.2.4",
117
117
  "@types/seedrandom": "3.0.5",
118
118
  "@types/use-sync-external-store": "0.0.3",
119
- "@types/ws": "^8.5.4",
119
+ "@types/ws": "^8.5.5",
120
120
  "@vitejs/plugin-react": "4.0.0",
121
- "@vitest/coverage-c8": "0.31.1",
122
- "eslint": "8.41.0",
121
+ "@vitest/coverage-v8": "^0.32.0",
122
+ "eslint": "8.42.0",
123
123
  "happy-dom": "9.20.3",
124
124
  "immer": "10.0.2",
125
- "jsdom": "22.0.0",
125
+ "jsdom": "22.1.0",
126
126
  "prettier": "2.8.8",
127
127
  "publint": "^0.1.12",
128
128
  "react": "18.2.0",
129
129
  "react-dom": "18.2.0",
130
130
  "rimraf": "5.0.1",
131
131
  "seedrandom": "3.0.5",
132
- "semantic-release": "21.0.2",
132
+ "semantic-release": "21.0.5",
133
133
  "size-limit": "^8.2.4",
134
134
  "tsc-alias": "1.8.6",
135
- "typescript": "5.0.4",
135
+ "typescript": "5.1.3",
136
136
  "use-sync-external-store": "1.2.0",
137
- "vite": "4.3.8",
137
+ "vite": "4.3.9",
138
138
  "vite-tsconfig-paths": "4.2.0",
139
- "vitest": "0.31.1",
139
+ "vitest": "0.32.0",
140
140
  "ws": "^8.13.0"
141
141
  },
142
142
  "volta": {
143
143
  "node": "18.16.0",
144
- "pnpm": "8.2.0"
144
+ "pnpm": "8.6.1"
145
145
  },
146
146
  "eslintConfig": {
147
147
  "extends": [