@e280/strata 0.0.0-3 → 0.0.0-4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@e280/strata",
3
- "version": "0.0.0-3",
3
+ "version": "0.0.0-4",
4
4
  "description": "state management",
5
5
  "license": "MIT",
6
6
  "author": "Chase Moskal <chasemoskal@gmail.com>",
@@ -2,13 +2,13 @@
2
2
  import {Substrata} from "./substrata.js"
3
3
  import {Chronicle, Mutator, Options, Selector, Stratum, Substate} from "./types.js"
4
4
 
5
- export class Chronstrata<ParentState extends Substate, S extends Substate> implements Stratum<S> {
6
- #substrata: Substrata<ParentState, Chronicle<S>>
5
+ export class Chronstrata<S extends Substate, ParentState extends Substate = any> implements Stratum<S> {
6
+ #substrata: Substrata<Chronicle<S>, ParentState>
7
7
 
8
8
  constructor(
9
9
  public limit: number,
10
10
  public parent: Stratum<ParentState>,
11
- public selector: Selector<ParentState, Chronicle<S>>,
11
+ public selector: Selector<Chronicle<S>, ParentState>,
12
12
  public options: Options,
13
13
  ) {
14
14
  this.#substrata = parent.substrata(selector)
@@ -77,7 +77,7 @@ export class Chronstrata<ParentState extends Substate, S extends Substate> imple
77
77
  })
78
78
  }
79
79
 
80
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub> {
80
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S> {
81
81
  return new Substrata(this, selector, this.options)
82
82
  }
83
83
  }
package/s/parts/strata.ts CHANGED
@@ -51,13 +51,13 @@ export class Strata<S extends State> implements Stratum<S> {
51
51
  await this.#dispatchMutation()
52
52
  }
53
53
 
54
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub> {
54
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S> {
55
55
  return new Substrata(this, selector, this.options)
56
56
  }
57
57
 
58
58
  chronstrata<Sub extends Substate>(
59
59
  limit: number,
60
- selector: Selector<S, Chronicle<Sub>>,
60
+ selector: Selector<Chronicle<Sub>, S>,
61
61
  ) {
62
62
  return new Chronstrata(limit, this, selector, this.options)
63
63
  }
@@ -3,7 +3,7 @@ import {debounce, deep, sub} from "@e280/stz"
3
3
  import {Chronstrata} from "./chronstrata.js"
4
4
  import {Chronicle, Mutator, Options, Selector, Stratum, Substate} from "./types.js"
5
5
 
6
- export class Substrata<ParentState extends Substate, S extends Substate> implements Stratum<S> {
6
+ export class Substrata<S extends Substate, ParentState extends Substate = any> implements Stratum<S> {
7
7
  dispose: () => void
8
8
  watch = sub<[state: S]>()
9
9
 
@@ -12,7 +12,7 @@ export class Substrata<ParentState extends Substate, S extends Substate> impleme
12
12
 
13
13
  constructor(
14
14
  private parent: Stratum<ParentState>,
15
- private selector: Selector<ParentState, S>,
15
+ private selector: Selector<S, ParentState>,
16
16
  private options: Options,
17
17
  ) {
18
18
 
@@ -44,13 +44,13 @@ export class Substrata<ParentState extends Substate, S extends Substate> impleme
44
44
  return this.#immutable
45
45
  }
46
46
 
47
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub> {
47
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S> {
48
48
  return new Substrata(this, selector, this.options)
49
49
  }
50
50
 
51
51
  chronstrata<Sub extends Substate>(
52
52
  limit: number,
53
- selector: Selector<S, Chronicle<Sub>>,
53
+ selector: Selector<Chronicle<Sub>, S>,
54
54
  ) {
55
55
  return new Chronstrata(limit, this, selector, this.options)
56
56
  }
package/s/parts/types.ts CHANGED
@@ -5,7 +5,7 @@ export type Options = {
5
5
  clone: <X>(x: X) => X
6
6
  }
7
7
 
8
- export type Selector<S, Sub> = (state: S) => Sub
8
+ export type Selector<Sub, S> = (state: S) => Sub
9
9
  export type Mutator<S> = (state: S) => void
10
10
 
11
11
  export type State = {}
@@ -20,7 +20,7 @@ export type Stratum<S extends Substate> = {
20
20
  readonly state: S
21
21
  watch(fn: (s: S) => void): () => void
22
22
  mutate(mutator: Mutator<S>): Promise<S>
23
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub>
23
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S>
24
24
  }
25
25
 
26
26
  export type SetupOptions<S extends State> = {
@@ -2,6 +2,6 @@
2
2
  import {Options} from "../types.js"
3
3
 
4
4
  export const processOptions = (options: Partial<Options>): Options => ({
5
- clone: options.clone ?? structuredClone,
5
+ clone: options.clone ?? (<X>(x: X) => structuredClone(x)),
6
6
  })
7
7
 
@@ -1,12 +1,12 @@
1
1
  import { Substrata } from "./substrata.js";
2
2
  import { Chronicle, Mutator, Options, Selector, Stratum, Substate } from "./types.js";
3
- export declare class Chronstrata<ParentState extends Substate, S extends Substate> implements Stratum<S> {
3
+ export declare class Chronstrata<S extends Substate, ParentState extends Substate = any> implements Stratum<S> {
4
4
  #private;
5
5
  limit: number;
6
6
  parent: Stratum<ParentState>;
7
- selector: Selector<ParentState, Chronicle<S>>;
7
+ selector: Selector<Chronicle<S>, ParentState>;
8
8
  options: Options;
9
- constructor(limit: number, parent: Stratum<ParentState>, selector: Selector<ParentState, Chronicle<S>>, options: Options);
9
+ constructor(limit: number, parent: Stratum<ParentState>, selector: Selector<Chronicle<S>, ParentState>, options: Options);
10
10
  get state(): S;
11
11
  get undoable(): number;
12
12
  get redoable(): number;
@@ -19,5 +19,5 @@ export declare class Chronstrata<ParentState extends Substate, S extends Substat
19
19
  redo(n?: number): Promise<void>;
20
20
  /** wipe past and future snapshots */
21
21
  wipe(): Promise<void>;
22
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub>;
22
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S>;
23
23
  }
@@ -12,6 +12,6 @@ export declare class Strata<S extends State> implements Stratum<S> {
12
12
  get state(): S;
13
13
  mutate(mutator: Mutator<S>): Promise<S>;
14
14
  overwrite(state: S): Promise<void>;
15
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub>;
16
- chronstrata<Sub extends Substate>(limit: number, selector: Selector<S, Chronicle<Sub>>): Chronstrata<S, Sub>;
15
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S>;
16
+ chronstrata<Sub extends Substate>(limit: number, selector: Selector<Chronicle<Sub>, S>): Chronstrata<Sub, S>;
17
17
  }
@@ -1,15 +1,15 @@
1
1
  import { Chronstrata } from "./chronstrata.js";
2
2
  import { Chronicle, Mutator, Options, Selector, Stratum, Substate } from "./types.js";
3
- export declare class Substrata<ParentState extends Substate, S extends Substate> implements Stratum<S> {
3
+ export declare class Substrata<S extends Substate, ParentState extends Substate = any> implements Stratum<S> {
4
4
  #private;
5
5
  private parent;
6
6
  private selector;
7
7
  private options;
8
8
  dispose: () => void;
9
9
  watch: import("@e280/stz").Sub<[state: S]>;
10
- constructor(parent: Stratum<ParentState>, selector: Selector<ParentState, S>, options: Options);
10
+ constructor(parent: Stratum<ParentState>, selector: Selector<S, ParentState>, options: Options);
11
11
  get state(): S;
12
12
  mutate(mutator: Mutator<S>): Promise<S>;
13
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub>;
14
- chronstrata<Sub extends Substate>(limit: number, selector: Selector<S, Chronicle<Sub>>): Chronstrata<S, Sub>;
13
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S>;
14
+ chronstrata<Sub extends Substate>(limit: number, selector: Selector<Chronicle<Sub>, S>): Chronstrata<Sub, S>;
15
15
  }
@@ -2,7 +2,7 @@ import { Substrata } from "./substrata.js";
2
2
  export type Options = {
3
3
  clone: <X>(x: X) => X;
4
4
  };
5
- export type Selector<S, Sub> = (state: S) => Sub;
5
+ export type Selector<Sub, S> = (state: S) => Sub;
6
6
  export type Mutator<S> = (state: S) => void;
7
7
  export type State = {};
8
8
  export type Substate = {} | null | undefined;
@@ -14,7 +14,7 @@ export type Stratum<S extends Substate> = {
14
14
  readonly state: S;
15
15
  watch(fn: (s: S) => void): () => void;
16
16
  mutate(mutator: Mutator<S>): Promise<S>;
17
- substrata<Sub extends Substate>(selector: Selector<S, Sub>): Substrata<S, Sub>;
17
+ substrata<Sub extends Substate>(selector: Selector<Sub, S>): Substrata<Sub, S>;
18
18
  };
19
19
  export type SetupOptions<S extends State> = {
20
20
  version: number;
@@ -1,4 +1,4 @@
1
1
  export const processOptions = (options) => ({
2
- clone: options.clone ?? structuredClone,
2
+ clone: options.clone ?? ((x) => structuredClone(x)),
3
3
  });
4
4
  //# sourceMappingURL=process-options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"process-options.js","sourceRoot":"","sources":["../../../s/parts/utils/process-options.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAyB,EAAW,EAAE,CAAC,CAAC;IACtE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,eAAe;CACvC,CAAC,CAAA"}
1
+ {"version":3,"file":"process-options.js","sourceRoot":"","sources":["../../../s/parts/utils/process-options.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAyB,EAAW,EAAE,CAAC,CAAC;IACtE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAI,CAAI,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;CACzD,CAAC,CAAA"}