valtio-history 0.3.2 → 0.3.5
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 +3 -3
- package/src/index.d.ts +5 -36
- package/src/index.js +8 -4
- package/src/index.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "valtio-history",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.5",
|
|
4
4
|
"author": "Daishi Kato",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"valtio-utility"
|
|
17
17
|
],
|
|
18
18
|
"dependencies": {
|
|
19
|
-
"tslib": "^2.3
|
|
19
|
+
"tslib": "^2.6.3"
|
|
20
20
|
},
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"valtio": ">=1.0.0"
|
|
@@ -25,4 +25,4 @@
|
|
|
25
25
|
"main": "./src/index.js",
|
|
26
26
|
"typings": "./src/index.d.ts",
|
|
27
27
|
"module": "./src/index.js"
|
|
28
|
-
}
|
|
28
|
+
}
|
package/src/index.d.ts
CHANGED
|
@@ -14,11 +14,12 @@ export type HistoryNode<T> = {
|
|
|
14
14
|
*/
|
|
15
15
|
updatedAt?: Date;
|
|
16
16
|
};
|
|
17
|
+
declare const EMPTY_WIP: unique symbol;
|
|
17
18
|
export type History<T> = {
|
|
18
19
|
/**
|
|
19
20
|
* field for holding sandbox changes; used to avoid infinite loops
|
|
20
21
|
*/
|
|
21
|
-
wip
|
|
22
|
+
wip: Snapshot<T> | typeof EMPTY_WIP;
|
|
22
23
|
/**
|
|
23
24
|
* the nodes of the history for each change
|
|
24
25
|
*/
|
|
@@ -103,44 +104,11 @@ export declare function proxyWithHistory<V>(initialValue: V, options?: HistoryOp
|
|
|
103
104
|
* @param index
|
|
104
105
|
* @returns historyNode
|
|
105
106
|
*/
|
|
106
|
-
getNode: (index: number) =>
|
|
107
|
-
snapshot: V extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
108
|
-
$$valtioRef: true;
|
|
109
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? V : V extends Promise<unknown> ? Awaited<V> : V extends object ? { readonly [K in keyof V]: V[K] extends infer T ? T extends V[K] ? T extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
110
|
-
$$valtioRef: true;
|
|
111
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T : T extends Promise<unknown> ? Awaited<T> : T extends object ? { readonly [K_1 in keyof T]: T[K_1] extends infer T_1 ? T_1 extends T[K_1] ? T_1 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
112
|
-
$$valtioRef: true;
|
|
113
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_1 : T_1 extends Promise<unknown> ? Awaited<T_1> : T_1 extends object ? { readonly [K_2 in keyof T_1]: T_1[K_2] extends infer T_2 ? T_2 extends T_1[K_2] ? T_2 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
114
|
-
$$valtioRef: true;
|
|
115
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_2 : T_2 extends Promise<unknown> ? Awaited<T_2> : T_2 extends object ? { readonly [K_3 in keyof T_2]: T_2[K_3] extends infer T_3 ? T_3 extends T_2[K_3] ? T_3 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
116
|
-
$$valtioRef: true;
|
|
117
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_3 : T_3 extends Promise<unknown> ? Awaited<T_3> : T_3 extends object ? { readonly [K_4 in keyof T_3]: T_3[K_4] extends infer T_4 ? T_4 extends T_3[K_4] ? T_4 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
118
|
-
$$valtioRef: true;
|
|
119
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_4 : T_4 extends Promise<unknown> ? Awaited<T_4> : T_4 extends object ? { readonly [K_5 in keyof T_4]: T_4[K_5] extends infer T_5 ? T_5 extends T_4[K_5] ? T_5 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
120
|
-
$$valtioRef: true;
|
|
121
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_5 : T_5 extends Promise<unknown> ? Awaited<T_5> : T_5 extends object ? { readonly [K_6 in keyof T_5]: T_5[K_6] extends infer T_6 ? T_6 extends T_5[K_6] ? T_6 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
122
|
-
$$valtioRef: true;
|
|
123
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_6 : T_6 extends Promise<unknown> ? Awaited<T_6> : T_6 extends object ? { readonly [K_7 in keyof T_6]: T_6[K_7] extends infer T_7 ? T_7 extends T_6[K_7] ? T_7 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
124
|
-
$$valtioRef: true;
|
|
125
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_7 : T_7 extends Promise<unknown> ? Awaited<T_7> : T_7 extends object ? { readonly [K_8 in keyof T_7]: T_7[K_8] extends infer T_8 ? T_8 extends T_7[K_8] ? T_8 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
126
|
-
$$valtioRef: true;
|
|
127
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_8 : T_8 extends Promise<unknown> ? Awaited<T_8> : T_8 extends object ? { readonly [K_9 in keyof T_8]: T_8[K_9] extends infer T_9 ? T_9 extends T_8[K_9] ? T_9 extends RegExp | Date | Map<any, any> | Set<any> | WeakMap<any, any> | WeakSet<any> | {
|
|
128
|
-
$$valtioRef: true;
|
|
129
|
-
} | Error | ((...args: any[]) => any) | (string | number | bigint | boolean | symbol | null | undefined) ? T_9 : T_9 extends Promise<unknown> ? Awaited<T_9> : T_9 extends object ? { readonly [K_10 in keyof T_9]: any; } : T_9 : never : never; } : T_8 : never : never; } : T_7 : never : never; } : T_6 : never : never; } : T_5 : never : never; } : T_4 : never : never; } : T_3 : never : never; } : T_2 : never : never; } : T_1 : never : never; } : T : never : never; } : V;
|
|
130
|
-
/**
|
|
131
|
-
* The date when the node was created
|
|
132
|
-
*/
|
|
133
|
-
createdAt: Date;
|
|
134
|
-
/**
|
|
135
|
-
* The date when the node was updated. Will be undefined if
|
|
136
|
-
* the node was never updated.
|
|
137
|
-
*/
|
|
138
|
-
updatedAt?: Date | undefined;
|
|
139
|
-
} | undefined;
|
|
107
|
+
getNode: (index: number) => HistoryNode<V> | undefined;
|
|
140
108
|
/**
|
|
141
109
|
* utility to clone a snapshot
|
|
142
110
|
*/
|
|
143
|
-
clone: <
|
|
111
|
+
clone: <T>(value: T) => T;
|
|
144
112
|
/**
|
|
145
113
|
* a function to go to a specific index in history
|
|
146
114
|
*/
|
|
@@ -221,3 +189,4 @@ export declare function proxyWithHistory<V>(initialValue: V, options?: HistoryOp
|
|
|
221
189
|
*/
|
|
222
190
|
replace: (index: number, value: Snapshot<V>) => void;
|
|
223
191
|
};
|
|
192
|
+
export {};
|
package/src/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { unstable_buildProxyFunction as buildProxyFunction, proxy, ref, snapshot, subscribe, } from 'valtio/vanilla';
|
|
2
|
+
const EMPTY_WIP = Symbol('valtio-history-wip-empty');
|
|
2
3
|
const isObject = (value) => !!value && typeof value === 'object';
|
|
3
4
|
let refSet;
|
|
4
5
|
const deepClone = (value) => {
|
|
@@ -74,7 +75,7 @@ export function proxyWithHistory(initialValue, options) {
|
|
|
74
75
|
* - history.wip: field for holding sandbox changes; used to avoid infinite loops<br>
|
|
75
76
|
*/
|
|
76
77
|
history: ref({
|
|
77
|
-
wip:
|
|
78
|
+
wip: EMPTY_WIP, // to avoid infinite loop
|
|
78
79
|
nodes: [],
|
|
79
80
|
index: -1,
|
|
80
81
|
}),
|
|
@@ -167,7 +168,8 @@ export function proxyWithHistory(initialValue, options) {
|
|
|
167
168
|
*/
|
|
168
169
|
undo: () => {
|
|
169
170
|
if (proxyObject.canUndo()) {
|
|
170
|
-
proxyObject.history.wip =
|
|
171
|
+
proxyObject.history.wip =
|
|
172
|
+
proxyObject.clone(proxyObject.history.nodes[--proxyObject.history.index]?.snapshot) ?? EMPTY_WIP;
|
|
171
173
|
proxyObject.value = proxyObject.history.wip;
|
|
172
174
|
}
|
|
173
175
|
},
|
|
@@ -183,7 +185,8 @@ export function proxyWithHistory(initialValue, options) {
|
|
|
183
185
|
*/
|
|
184
186
|
redo: () => {
|
|
185
187
|
if (proxyObject.canRedo()) {
|
|
186
|
-
proxyObject.history.wip =
|
|
188
|
+
proxyObject.history.wip =
|
|
189
|
+
proxyObject.clone(proxyObject.history.nodes[++proxyObject.history.index]?.snapshot) ?? EMPTY_WIP;
|
|
187
190
|
proxyObject.value = proxyObject.history.wip;
|
|
188
191
|
}
|
|
189
192
|
},
|
|
@@ -234,7 +237,8 @@ export function proxyWithHistory(initialValue, options) {
|
|
|
234
237
|
if (isCurrentIndex) {
|
|
235
238
|
const resolvedIndex = isLastIndex ? index - 1 : index + 1;
|
|
236
239
|
const resolvedNode = proxyObject.history.nodes[resolvedIndex];
|
|
237
|
-
proxyObject.history.wip =
|
|
240
|
+
proxyObject.history.wip =
|
|
241
|
+
proxyObject.clone(resolvedNode?.snapshot) ?? EMPTY_WIP;
|
|
238
242
|
proxyObject.value = proxyObject.history.wip;
|
|
239
243
|
if (isLastIndex)
|
|
240
244
|
proxyObject.history.index--;
|
package/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/history-utility/src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,2BAA2B,IAAI,kBAAkB,EACjD,KAAK,EACL,GAAG,EACH,QAAQ,EACR,SAAS,GACV,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/history-utility/src/index.ts"],"names":[],"mappings":"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"}
|