@antelopejs/interface-database-decorators 0.1.11 → 0.2.0
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/README.md +17 -13
- package/dist/antelope.test.js +1 -1
- package/dist/common.d.ts +48 -2
- package/dist/common.js +51 -5
- package/dist/common.js.map +1 -1
- package/dist/database.js +18 -3
- package/dist/database.js.map +1 -1
- package/dist/internal/bound-schema.d.ts +8 -0
- package/dist/internal/bound-schema.js +14 -0
- package/dist/internal/bound-schema.js.map +1 -0
- package/dist/model.d.ts +21 -8
- package/dist/model.js +34 -15
- package/dist/model.js.map +1 -1
- package/dist/modifiers/autodate.d.ts +2 -2
- package/dist/modifiers/autodate.js.map +1 -1
- package/dist/modifiers/common.d.ts +37 -20
- package/dist/modifiers/common.js +81 -68
- package/dist/modifiers/common.js.map +1 -1
- package/dist/modifiers/encryption.js +26 -14
- package/dist/modifiers/encryption.js.map +1 -1
- package/dist/modifiers/hash.d.ts +46 -4
- package/dist/modifiers/hash.js +175 -14
- package/dist/modifiers/hash.js.map +1 -1
- package/dist/modifiers/internal/kinds.d.ts +15 -1
- package/dist/modifiers/internal/kinds.js +35 -0
- package/dist/modifiers/internal/kinds.js.map +1 -1
- package/dist/modifiers/internal/records.d.ts +40 -5
- package/dist/modifiers/internal/records.js +70 -1
- package/dist/modifiers/internal/records.js.map +1 -1
- package/dist/modifiers/localization.js +12 -7
- package/dist/modifiers/localization.js.map +1 -1
- package/dist/relation.d.ts +5 -0
- package/dist/relation.js +11 -0
- package/dist/relation.js.map +1 -1
- package/dist/schema.js +5 -6
- package/dist/schema.js.map +1 -1
- package/dist/table.d.ts +3 -2
- package/dist/table.js +29 -13
- package/dist/table.js.map +1 -1
- package/dist/tests/cross_instance.test.js +5 -2
- package/dist/tests/cross_instance.test.js.map +1 -1
- package/dist/tests/database.test.js +42 -2
- package/dist/tests/database.test.js.map +1 -1
- package/dist/tests/hash_upgrade.test.d.ts +1 -0
- package/dist/tests/hash_upgrade.test.js +132 -0
- package/dist/tests/hash_upgrade.test.js.map +1 -0
- package/dist/tests/helpers/hash-rows.d.ts +40 -0
- package/dist/tests/helpers/hash-rows.js +41 -0
- package/dist/tests/helpers/hash-rows.js.map +1 -0
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/integration.test.js +15 -4
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/metadata_inheritance.test.d.ts +1 -0
- package/dist/tests/metadata_inheritance.test.js +212 -0
- package/dist/tests/metadata_inheritance.test.js.map +1 -0
- package/dist/tests/modifiers/encryption_date_marker.test.d.ts +1 -0
- package/dist/tests/modifiers/encryption_date_marker.test.js +78 -0
- package/dist/tests/modifiers/encryption_date_marker.test.js.map +1 -0
- package/dist/tests/modifiers/hash.test.js +295 -0
- package/dist/tests/modifiers/hash.test.js.map +1 -1
- package/dist/tests/modifiers/inherited_names.test.d.ts +1 -0
- package/dist/tests/modifiers/inherited_names.test.js +96 -0
- package/dist/tests/modifiers/inherited_names.test.js.map +1 -0
- package/dist/tests/own_key_lookups.test.d.ts +1 -0
- package/dist/tests/own_key_lookups.test.js +49 -0
- package/dist/tests/own_key_lookups.test.js.map +1 -0
- package/dist/tests/partial_update.test.d.ts +1 -0
- package/dist/tests/partial_update.test.js +55 -0
- package/dist/tests/partial_update.test.js.map +1 -0
- package/dist/tests/row_forms.test.d.ts +1 -0
- package/dist/tests/row_forms.test.js +59 -0
- package/dist/tests/row_forms.test.js.map +1 -0
- package/dist/tests/stored_metadata.test.d.ts +1 -0
- package/dist/tests/stored_metadata.test.js +91 -0
- package/dist/tests/stored_metadata.test.js.map +1 -0
- package/dist/tests/subclass_schema_binding.test.d.ts +1 -0
- package/dist/tests/subclass_schema_binding.test.js +115 -0
- package/dist/tests/subclass_schema_binding.test.js.map +1 -0
- package/dist/tests/table.test.js +16 -0
- package/dist/tests/table.test.js.map +1 -1
- package/docs/1.introduction.md +24 -20
- package/docs/2.table-definitions.md +63 -41
- package/docs/3.table-modifiers.md +128 -98
- package/docs/4.data-models.md +63 -52
- package/docs/5.parameter-decoration.md +28 -24
- package/docs/tsconfig.json +3 -0
- package/package.json +10 -9
- package/skills/database-decorators-interface/SKILL.md +6 -3
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type * as DatabaseDev from "@antelopejs/interface-database";
|
|
2
|
-
import { type Constructible } from "../common";
|
|
2
|
+
import { type Constructible, type PlainData, type PlainRow } from "../common";
|
|
3
|
+
import { type InternalHolder, type InternalRecord, type ModifierState } from "./internal/records";
|
|
3
4
|
export declare const MixinSymbol: unique symbol;
|
|
4
5
|
export type MixinType<T> = T extends {
|
|
5
6
|
[MixinSymbol]: infer A;
|
|
@@ -26,21 +27,35 @@ export declare class ContainerModifier<Meta extends object = object, Options ext
|
|
|
26
27
|
unlock(locked_value: Record<string, unknown>, key: string): unknown;
|
|
27
28
|
unlockrequest(data: DatabaseDev.ValueProxy<Record<string, unknown>>, _meta: DatabaseDev.ValueProxy<Meta>, key: DatabaseDev.ValueProxyOrValue<string>): DatabaseDev.ValueProxy<unknown>;
|
|
28
29
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
/**
|
|
31
|
+
* A table row as the database stores it: the fields of `T` that are set, with
|
|
32
|
+
* no prototype, and its modified fields locked in `_internal` instead of at the
|
|
33
|
+
* top level.
|
|
34
|
+
*/
|
|
35
|
+
export type StoredRow<T> = Partial<T> & InternalHolder;
|
|
36
|
+
/**
|
|
37
|
+
* A modifier method run for an event of the table instance (`insert`,
|
|
38
|
+
* `toDatabase`, ...), with the modifier as `this`.
|
|
39
|
+
*/
|
|
40
|
+
export type ModifierEvent = (this: Modifier, object: {
|
|
41
|
+
constructor: any;
|
|
42
|
+
}, field: PropertyKey, ...args: unknown[]) => void;
|
|
33
43
|
interface ModifiedField {
|
|
34
44
|
id: string;
|
|
35
45
|
modifier: Modifier;
|
|
36
46
|
metaRef: {
|
|
37
|
-
_ref:
|
|
47
|
+
_ref: ModifierState | undefined;
|
|
38
48
|
};
|
|
39
49
|
}
|
|
40
50
|
export declare class ModifiersStaticMetadata {
|
|
41
51
|
static key: symbol;
|
|
52
|
+
/**
|
|
53
|
+
* The metadata of a subclass of a table: a copy of its parent's lists, so
|
|
54
|
+
* modifiers attached on the subclass never reach the parent or its siblings.
|
|
55
|
+
*/
|
|
56
|
+
static inherit(parent: ModifiersStaticMetadata): ModifiersStaticMetadata;
|
|
42
57
|
fields: Record<string, Array<ModifiedField>>;
|
|
43
|
-
events: Map<string, [field: string, modified: ModifiedField][]>;
|
|
58
|
+
events: Map<string, [field: string, modified: ModifiedField, handler: ModifierEvent][]>;
|
|
44
59
|
}
|
|
45
60
|
export declare class ModifiersDynamicMetadata {
|
|
46
61
|
static key: symbol;
|
|
@@ -49,26 +64,30 @@ export declare class ModifiersDynamicMetadata {
|
|
|
49
64
|
* Values assigned to a field before its modifiers could lock them, by field
|
|
50
65
|
* name. Reads return them; `unlock` and `lock` assign them again.
|
|
51
66
|
*/
|
|
52
|
-
floating: Record<string,
|
|
53
|
-
|
|
67
|
+
floating: Record<string, unknown>;
|
|
68
|
+
/**
|
|
69
|
+
* The arguments each modifier of a field was unlocked or locked with, by
|
|
70
|
+
* field name, then by modifier name.
|
|
71
|
+
*/
|
|
72
|
+
fields: Record<string, Record<string, unknown[]>>;
|
|
54
73
|
constructor(target: any);
|
|
55
74
|
canGet(field: PropertyKey): boolean;
|
|
56
|
-
get(field: PropertyKey, internal:
|
|
75
|
+
get(field: PropertyKey, internal: InternalRecord): unknown;
|
|
57
76
|
canSet(field: PropertyKey): boolean;
|
|
58
|
-
set(field: PropertyKey, internal:
|
|
77
|
+
set(field: PropertyKey, internal: InternalRecord, value: unknown): void;
|
|
59
78
|
}
|
|
60
79
|
/**
|
|
61
80
|
* Builds a table instance from unlocked plain data: each key is assigned, so
|
|
62
81
|
* modifiers lock the fields they can. Then runs the `fromPlainData` event.
|
|
63
82
|
*/
|
|
64
|
-
export declare function fromPlainData<T extends
|
|
83
|
+
export declare function fromPlainData<T extends object>(rawObject: PlainData<T>, TableClass: Constructible<T>): T;
|
|
65
84
|
/**
|
|
66
85
|
* Converts a table instance to unlocked plain data, without `_internal`. A
|
|
67
86
|
* field still locked comes out `undefined`. Then runs the `toPlainData` event.
|
|
68
87
|
*/
|
|
69
88
|
export declare function toPlainData<T extends {
|
|
70
89
|
constructor: any;
|
|
71
|
-
}>(object: T):
|
|
90
|
+
}>(object: T): PlainRow<T>;
|
|
72
91
|
/**
|
|
73
92
|
* Builds a table instance from a stored record, its modified fields still
|
|
74
93
|
* locked in `_internal`. Then runs the `fromDatabase` event.
|
|
@@ -78,23 +97,21 @@ export declare function fromDatabase<T extends Constructible>(rawObject: any, Ta
|
|
|
78
97
|
* Converts a table instance to the locked record to store, `_internal`
|
|
79
98
|
* included and floating values left out. Then runs the `toDatabase` event.
|
|
80
99
|
*/
|
|
81
|
-
export declare function toDatabase<T extends
|
|
82
|
-
constructor: any;
|
|
83
|
-
}>(object: T): Record<string, any>;
|
|
100
|
+
export declare function toDatabase<T extends InternalHolder>(object: T): T & InternalHolder;
|
|
84
101
|
type ExtractModifierOptions<T> = T extends Modifier<any, infer Options> ? Options : undefined;
|
|
85
102
|
type ExtractModifierArgs<T> = T extends OneWayModifier<any, infer Args> ? Args : [];
|
|
86
|
-
export declare function attachModifier<
|
|
103
|
+
export declare function attachModifier<M extends Constructible<Modifier>>(TableClass: Function, Modifier: M, field: PropertyKey, options: ExtractModifierOptions<InstanceType<M>>): void;
|
|
87
104
|
export declare function getModifiedFields<T extends {
|
|
88
105
|
constructor: any;
|
|
89
|
-
}
|
|
106
|
+
}>(object: T, Modifier: Constructible<Modifier>): (keyof T)[];
|
|
90
107
|
export declare function unlock<T extends {
|
|
91
108
|
constructor: any;
|
|
92
109
|
}, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>>): void;
|
|
93
110
|
type ModifierWithProxyArgs = {
|
|
94
111
|
modifier: Constructible<TwoWayModifier<any, any[], any, any>>;
|
|
95
|
-
args:
|
|
112
|
+
args: unknown[];
|
|
96
113
|
};
|
|
97
|
-
export declare function unlockrequest<T extends {}, K extends keyof T>(table: Constructible
|
|
114
|
+
export declare function unlockrequest<T extends {}, K extends keyof T>(table: Constructible, object: DatabaseDev.ValueProxy<T>, field: K, modifiers: ModifierWithProxyArgs[]): DatabaseDev.ValueProxy<T[K]>;
|
|
98
115
|
export declare function lock<T extends {
|
|
99
116
|
constructor: any;
|
|
100
117
|
}, M extends Constructible<Modifier>>(object: T, Modifier: M, fields: Array<keyof T> | undefined, ...args: ExtractModifierArgs<InstanceType<M>> | []): void;
|
package/dist/modifiers/common.js
CHANGED
|
@@ -22,15 +22,20 @@ class Modifier {
|
|
|
22
22
|
}
|
|
23
23
|
exports.Modifier = Modifier;
|
|
24
24
|
class OneWayModifier extends Modifier {
|
|
25
|
-
lock(_locked_value,
|
|
25
|
+
lock(_locked_value,
|
|
26
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- the published override point of every modifier; a modified field's value has its table class's type, which the shared modifier chain cannot name
|
|
27
|
+
_value, ..._args) {
|
|
26
28
|
throw new Error("Unimplemented");
|
|
27
29
|
}
|
|
28
|
-
test(locked_value,
|
|
30
|
+
test(locked_value,
|
|
31
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- a modified field's value has its table class's type, which the shared modifier chain cannot name
|
|
32
|
+
value, ...args) {
|
|
29
33
|
return this.lock(undefined, value, ...args) === locked_value;
|
|
30
34
|
}
|
|
31
35
|
}
|
|
32
36
|
exports.OneWayModifier = OneWayModifier;
|
|
33
37
|
class TwoWayModifier extends OneWayModifier {
|
|
38
|
+
// oxlint-disable-next-line anti-slop/no-unknown-returns -- the unlocked value has its table class's type, which the shared modifier chain cannot name
|
|
34
39
|
unlock(_locked_value, ..._args) {
|
|
35
40
|
throw new Error("Unimplemented");
|
|
36
41
|
}
|
|
@@ -40,8 +45,14 @@ class TwoWayModifier extends OneWayModifier {
|
|
|
40
45
|
}
|
|
41
46
|
exports.TwoWayModifier = TwoWayModifier;
|
|
42
47
|
class ContainerModifier extends TwoWayModifier {
|
|
43
|
-
lock(
|
|
48
|
+
lock(
|
|
49
|
+
// oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
|
|
50
|
+
locked_value,
|
|
51
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- a modified field's value has its table class's type, which the shared modifier chain cannot name
|
|
52
|
+
value, key) {
|
|
44
53
|
if (key === "*") {
|
|
54
|
+
// SAFETY: the "*" key addresses the whole container, which the table class declares as the record of values per key; a non-record value is stored as given.
|
|
55
|
+
// oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
|
|
45
56
|
return value;
|
|
46
57
|
}
|
|
47
58
|
return locked_value
|
|
@@ -51,16 +62,29 @@ class ContainerModifier extends TwoWayModifier {
|
|
|
51
62
|
}
|
|
52
63
|
: { [key]: value };
|
|
53
64
|
}
|
|
65
|
+
// oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
|
|
54
66
|
unlock(locked_value, key) {
|
|
55
|
-
|
|
67
|
+
if (key === "*") {
|
|
68
|
+
return locked_value;
|
|
69
|
+
}
|
|
70
|
+
return Object.hasOwn(locked_value, key) ? locked_value[key] : undefined;
|
|
56
71
|
}
|
|
57
|
-
unlockrequest(
|
|
72
|
+
unlockrequest(
|
|
73
|
+
// oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the container holds the field's values by key, typed by the table class, not by the modifier
|
|
74
|
+
data, _meta, key) {
|
|
58
75
|
return data.key(key);
|
|
59
76
|
}
|
|
60
77
|
}
|
|
61
78
|
exports.ContainerModifier = ContainerModifier;
|
|
62
79
|
class ModifiersStaticMetadata {
|
|
63
80
|
static key = Symbol.for("@antelopejs/interface-database-decorators/ModifiersStaticMetadata@1");
|
|
81
|
+
/**
|
|
82
|
+
* The metadata of a subclass of a table: a copy of its parent's lists, so
|
|
83
|
+
* modifiers attached on the subclass never reach the parent or its siblings.
|
|
84
|
+
*/
|
|
85
|
+
static inherit(parent) {
|
|
86
|
+
return (0, records_1.copyModifierLists)(new ModifiersStaticMetadata(), parent);
|
|
87
|
+
}
|
|
64
88
|
fields = {};
|
|
65
89
|
events = new Map();
|
|
66
90
|
}
|
|
@@ -72,7 +96,12 @@ class ModifiersDynamicMetadata {
|
|
|
72
96
|
* Values assigned to a field before its modifiers could lock them, by field
|
|
73
97
|
* name. Reads return them; `unlock` and `lock` assign them again.
|
|
74
98
|
*/
|
|
99
|
+
// oxlint-disable-next-line anti-slop/no-unsafe-dictionary-type -- the values assigned before modifiers could lock them, by field name, have their table class's types
|
|
75
100
|
floating = {};
|
|
101
|
+
/**
|
|
102
|
+
* The arguments each modifier of a field was unlocked or locked with, by
|
|
103
|
+
* field name, then by modifier name.
|
|
104
|
+
*/
|
|
76
105
|
fields = {};
|
|
77
106
|
constructor(target) {
|
|
78
107
|
this.staticMeta = (0, common_1.getMetadata)(target.constructor, ModifiersStaticMetadata);
|
|
@@ -92,7 +121,7 @@ class ModifiersDynamicMetadata {
|
|
|
92
121
|
!(id in (0, records_1.unlockArgsOf)(this, field))));
|
|
93
122
|
}
|
|
94
123
|
get(field, internal) {
|
|
95
|
-
if (
|
|
124
|
+
if (Object.hasOwn(this.floating, field)) {
|
|
96
125
|
return (0, records_1.floatingByKey)(this)[field];
|
|
97
126
|
}
|
|
98
127
|
if (!this.canGet(field)) {
|
|
@@ -118,6 +147,7 @@ class ModifiersDynamicMetadata {
|
|
|
118
147
|
"lock" in modifier &&
|
|
119
148
|
!(id in (0, records_1.unlockArgsOf)(this, field)));
|
|
120
149
|
}
|
|
150
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- a modified field's value has its table class's type, which the shared modifier chain cannot name
|
|
121
151
|
set(field, internal, value) {
|
|
122
152
|
if (!this.canSet(field)) {
|
|
123
153
|
(0, records_1.floatingByKey)(this)[field] = value;
|
|
@@ -153,38 +183,33 @@ class ModifiersDynamicMetadata {
|
|
|
153
183
|
}
|
|
154
184
|
}
|
|
155
185
|
exports.ModifiersDynamicMetadata = ModifiersDynamicMetadata;
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
return object._internal;
|
|
186
|
+
/** The names of the modified fields of a table instance. */
|
|
187
|
+
function fieldNamesOf(object) {
|
|
188
|
+
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
189
|
+
// SAFETY: the names attachModifier recorded are keys of the table class of object, so keys of T; Object.keys types them string.
|
|
190
|
+
return Object.keys(metaTable.fields);
|
|
164
191
|
}
|
|
165
192
|
/**
|
|
166
193
|
* Builds a table instance from unlocked plain data: each key is assigned, so
|
|
167
194
|
* modifiers lock the fields they can. Then runs the `fromPlainData` event.
|
|
168
195
|
*/
|
|
169
196
|
function fromPlainData(rawObject, TableClass) {
|
|
170
|
-
const
|
|
171
|
-
Object.setPrototypeOf(
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
return shallowCopy;
|
|
197
|
+
const instance = {};
|
|
198
|
+
Object.setPrototypeOf(instance, (0, kinds_1.prototypeOf)(TableClass));
|
|
199
|
+
Object.assign(instance, Object.fromEntries(Object.entries(rawObject)));
|
|
200
|
+
triggerEvent(instance, "fromPlainData", rawObject);
|
|
201
|
+
// SAFETY: instance gets the prototype of TableClass and the fields of rawObject, so it is a T, as fromPlainData returns; setPrototypeOf types no result.
|
|
202
|
+
return instance;
|
|
177
203
|
}
|
|
178
204
|
/**
|
|
179
205
|
* Converts a table instance to unlocked plain data, without `_internal`. A
|
|
180
206
|
* field still locked comes out `undefined`. Then runs the `toPlainData` event.
|
|
181
207
|
*/
|
|
182
208
|
function toPlainData(object) {
|
|
183
|
-
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
184
209
|
const result = { ...object };
|
|
185
210
|
if ("_internal" in result)
|
|
186
211
|
delete result._internal;
|
|
187
|
-
for (const field of
|
|
212
|
+
for (const field of fieldNamesOf(object)) {
|
|
188
213
|
result[field] = object[field];
|
|
189
214
|
}
|
|
190
215
|
triggerEvent(object, "toPlainData", result);
|
|
@@ -195,9 +220,11 @@ function toPlainData(object) {
|
|
|
195
220
|
* locked in `_internal`. Then runs the `fromDatabase` event.
|
|
196
221
|
*/
|
|
197
222
|
function fromDatabase(rawObject, TableClass) {
|
|
223
|
+
// oxlint-disable-next-line typescript/no-unsafe-assignment -- rawObject is a stored row, typed any by the published fromDatabase signature; typing it T breaks consumers
|
|
198
224
|
const shallowCopy = { ...rawObject };
|
|
199
|
-
Object.setPrototypeOf(shallowCopy,
|
|
225
|
+
Object.setPrototypeOf(shallowCopy, (0, kinds_1.prototypeOf)(TableClass));
|
|
200
226
|
triggerEvent(shallowCopy, "fromDatabase", rawObject);
|
|
227
|
+
// oxlint-disable-next-line typescript/no-unsafe-return -- shallowCopy is a copy of the any-typed rawObject
|
|
201
228
|
return shallowCopy;
|
|
202
229
|
}
|
|
203
230
|
/**
|
|
@@ -210,29 +237,12 @@ function toDatabase(object) {
|
|
|
210
237
|
return result;
|
|
211
238
|
}
|
|
212
239
|
function attachModifier(TableClass, Modifier, field, options) {
|
|
213
|
-
const entry =
|
|
214
|
-
id: Modifier.name,
|
|
215
|
-
modifier: new Modifier(),
|
|
216
|
-
metaRef: { _ref: {} },
|
|
217
|
-
};
|
|
218
|
-
Object.assign(entry.modifier, {
|
|
219
|
-
meta: new Proxy(entry.metaRef, {
|
|
220
|
-
get: (self, p) => {
|
|
221
|
-
if (!self._ref)
|
|
222
|
-
return undefined;
|
|
223
|
-
return self._ref[p];
|
|
224
|
-
},
|
|
225
|
-
set: (self, p, v) => {
|
|
226
|
-
if (!self._ref)
|
|
227
|
-
self._ref = {};
|
|
228
|
-
return Reflect.set(self._ref, p, v, self._ref);
|
|
229
|
-
},
|
|
230
|
-
}),
|
|
231
|
-
});
|
|
240
|
+
const entry = (0, records_1.newModifiedField)(Modifier);
|
|
232
241
|
Object.assign(entry.modifier, { options });
|
|
233
242
|
const metaTable = (0, common_1.getMetadata)(TableClass, ModifiersStaticMetadata);
|
|
234
243
|
if (!(0, kinds_1.isOnlyEvents)(entry.modifier)) {
|
|
235
|
-
|
|
244
|
+
(0, records_1.assertModifiableField)(TableClass.name, entry.id, field);
|
|
245
|
+
if (Object.hasOwn(metaTable.fields, field)) {
|
|
236
246
|
const list = (0, records_1.fieldsByKey)(metaTable)[field];
|
|
237
247
|
const last = list[list.length - 1];
|
|
238
248
|
if ((0, kinds_1.isWriteOnly)(last.modifier)) {
|
|
@@ -251,10 +261,10 @@ function attachModifier(TableClass, Modifier, field, options) {
|
|
|
251
261
|
(0, records_1.fieldsByKey)(metaTable)[field] = [entry];
|
|
252
262
|
Object.defineProperty(TableClass.prototype, field, {
|
|
253
263
|
get: function () {
|
|
254
|
-
return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, getInternal(this));
|
|
264
|
+
return (0, common_1.getMetadata)(this, ModifiersDynamicMetadata).get(field, (0, records_1.getInternal)(this));
|
|
255
265
|
},
|
|
256
266
|
set: function (value) {
|
|
257
|
-
(0, common_1.getMetadata)(this, ModifiersDynamicMetadata).set(field, getInternal(this), value);
|
|
267
|
+
(0, common_1.getMetadata)(this, ModifiersDynamicMetadata).set(field, (0, records_1.getInternal)(this), value);
|
|
258
268
|
},
|
|
259
269
|
});
|
|
260
270
|
}
|
|
@@ -267,45 +277,45 @@ function attachModifier(TableClass, Modifier, field, options) {
|
|
|
267
277
|
});
|
|
268
278
|
}
|
|
269
279
|
for (const event of Object.getOwnPropertyNames(Modifier.prototype)) {
|
|
270
|
-
|
|
271
|
-
|
|
280
|
+
const handler = Modifier.prototype[event];
|
|
281
|
+
if (!Object.hasOwn(kinds_1.ignoredEventNames, event) && (0, kinds_1.isEventHandler)(handler)) {
|
|
272
282
|
if (!metaTable.events.has(event)) {
|
|
273
283
|
metaTable.events.set(event, []);
|
|
274
284
|
}
|
|
275
|
-
(0, records_1.eventsByKey)(metaTable).get(event)?.push([field, entry]);
|
|
285
|
+
(0, records_1.eventsByKey)(metaTable).get(event)?.push([field, entry, handler]);
|
|
276
286
|
}
|
|
277
287
|
}
|
|
278
288
|
}
|
|
279
|
-
function
|
|
289
|
+
function fieldsModifiedBy(object, modifierClass, fields) {
|
|
280
290
|
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
281
|
-
return
|
|
291
|
+
return (fields ?? fieldNamesOf(object)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === modifierClass.name));
|
|
292
|
+
}
|
|
293
|
+
function getModifiedFields(object, Modifier) {
|
|
294
|
+
return fieldsModifiedBy(object, Modifier);
|
|
282
295
|
}
|
|
283
296
|
function unlock(object, Modifier, fields, ...args) {
|
|
284
|
-
const
|
|
285
|
-
const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === Modifier.name));
|
|
297
|
+
const usedFields = fieldsModifiedBy(object, Modifier, fields);
|
|
286
298
|
const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
|
|
287
299
|
for (const field of usedFields) {
|
|
288
300
|
(0, records_1.unlockArgsOf)(meta, field)[Modifier.name] = args;
|
|
289
301
|
if (field in meta.floating) {
|
|
290
|
-
object[field]
|
|
302
|
+
Object.assign(object, { [field]: (0, records_1.floatingOf)(meta, field) });
|
|
291
303
|
}
|
|
292
304
|
}
|
|
293
305
|
}
|
|
294
306
|
function unlockrequest(table, object, field, modifiers) {
|
|
295
307
|
const args = Object.fromEntries(modifiers.map(({ modifier, args: modArgs }) => [modifier.name, modArgs]));
|
|
296
|
-
const
|
|
308
|
+
const stored = object.cast();
|
|
309
|
+
const meta = stored.key("_internal").key("meta");
|
|
297
310
|
const metaTable = (0, common_1.getMetadata)(table, ModifiersStaticMetadata);
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
return data;
|
|
304
|
-
}, object.key("_internal").key("data").key(field)) || object.key(field));
|
|
311
|
+
const name = String(field);
|
|
312
|
+
const unlocked = (0, records_1.fieldsByKey)(metaTable)[field]?.reduce((data, { id, modifier }) => (0, kinds_1.isWriteOnly)(modifier) || !(0, kinds_1.isTwoWay)(modifier)
|
|
313
|
+
? data
|
|
314
|
+
: modifier.unlockrequest(data, meta.key(id), ...args[id]), stored.key("_internal").key("data").key(name));
|
|
315
|
+
return (unlocked ?? object.cast().key(name)).cast();
|
|
305
316
|
}
|
|
306
317
|
function lock(object, Modifier, fields, ...args) {
|
|
307
|
-
const
|
|
308
|
-
const usedFields = (fields ?? Object.keys(metaTable.fields)).filter((field) => (0, records_1.fieldsByKey)(metaTable)[field]?.find(({ id }) => id === Modifier.name));
|
|
318
|
+
const usedFields = fieldsModifiedBy(object, Modifier, fields);
|
|
309
319
|
const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
|
|
310
320
|
for (const field of usedFields) {
|
|
311
321
|
const val = object[field];
|
|
@@ -316,7 +326,7 @@ function lock(object, Modifier, fields, ...args) {
|
|
|
316
326
|
function testValue(object, field, value) {
|
|
317
327
|
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
318
328
|
const meta = (0, common_1.getMetadata)(object, ModifiersDynamicMetadata);
|
|
319
|
-
const internal = getInternal(object);
|
|
329
|
+
const internal = (0, records_1.getInternal)(object);
|
|
320
330
|
const val = (0, records_1.dataByKey)(internal)[field];
|
|
321
331
|
for (const { id, modifier, metaRef } of (0, records_1.fieldsByKey)(metaTable)[field]) {
|
|
322
332
|
const args = (0, records_1.unlockArgsOf)(meta, field)[id] ||
|
|
@@ -332,17 +342,20 @@ function testValue(object, field, value) {
|
|
|
332
342
|
}
|
|
333
343
|
return val === value;
|
|
334
344
|
}
|
|
345
|
+
// oxlint-disable-next-line typescript/no-unnecessary-type-parameters -- exported; removing the parameter changes the published signature
|
|
335
346
|
function triggerEvent(object, event, ...args) {
|
|
336
347
|
const metaTable = (0, common_1.getMetadata)(object.constructor, ModifiersStaticMetadata);
|
|
337
348
|
if (!metaTable.events.has(event)) {
|
|
338
349
|
return;
|
|
339
350
|
}
|
|
340
|
-
const internal = getInternal(object);
|
|
351
|
+
const internal = (0, records_1.getInternal)(object);
|
|
341
352
|
const eventEntries = metaTable.events.get(event);
|
|
342
353
|
if (!eventEntries)
|
|
343
354
|
return;
|
|
344
|
-
for (const [field, { id, modifier, metaRef }] of eventEntries) {
|
|
345
|
-
(0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) =>
|
|
355
|
+
for (const [field, { id, modifier, metaRef }, handler] of eventEntries) {
|
|
356
|
+
(0, records_1.withRef)(internal, id, modifier, metaRef, (modifier) => {
|
|
357
|
+
handler.call(modifier, object, field, ...args);
|
|
358
|
+
});
|
|
346
359
|
}
|
|
347
360
|
}
|
|
348
361
|
//# sourceMappingURL=common.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/modifiers/common.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/modifiers/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,29 +4,39 @@ exports.Encrypted = exports.EncryptionModifier = void 0;
|
|
|
4
4
|
const decorators_1 = require("@antelopejs/interface-core/decorators");
|
|
5
5
|
const node_crypto_1 = require("node:crypto");
|
|
6
6
|
const common_1 = require("./common");
|
|
7
|
+
const kinds_1 = require("./internal/kinds");
|
|
7
8
|
function date_encoder(key) {
|
|
8
|
-
|
|
9
|
+
const held = this[key];
|
|
10
|
+
return held instanceof Date
|
|
9
11
|
? {
|
|
10
|
-
value:
|
|
12
|
+
value: held.toUTCString(),
|
|
11
13
|
type: "Date",
|
|
12
14
|
}
|
|
13
|
-
:
|
|
15
|
+
: held;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The Date a stored marker `{ type: "Date", value }` stands for, when `value`
|
|
19
|
+
* is a text `toUTCString` produces, as `date_encoder` writes it. Any other
|
|
20
|
+
* object was stored by the caller.
|
|
21
|
+
*/
|
|
22
|
+
function dateOfMarker(candidate) {
|
|
23
|
+
if (!(0, kinds_1.isRecord)(candidate) ||
|
|
24
|
+
Object.keys(candidate).length !== 2 ||
|
|
25
|
+
candidate.type !== "Date" ||
|
|
26
|
+
!(0, kinds_1.isString)(candidate.value)) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const date = new Date(candidate.value);
|
|
30
|
+
return date.toUTCString() === candidate.value ? date : undefined;
|
|
14
31
|
}
|
|
15
32
|
function date_decoder(_key, value) {
|
|
16
|
-
return value
|
|
17
|
-
typeof value === "object" &&
|
|
18
|
-
Object.keys(value).length === 2 &&
|
|
19
|
-
Object.keys(value).includes("type") &&
|
|
20
|
-
Object.keys(value).includes("value") &&
|
|
21
|
-
value.type === "Date"
|
|
22
|
-
? new Date(value.value)
|
|
23
|
-
: value;
|
|
33
|
+
return dateOfMarker(value) ?? value;
|
|
24
34
|
}
|
|
25
35
|
function hasAuthTag(cipher) {
|
|
26
|
-
return "getAuthTag" in cipher;
|
|
36
|
+
return "getAuthTag" in cipher && (0, kinds_1.isCallable)(cipher.getAuthTag);
|
|
27
37
|
}
|
|
28
38
|
function acceptsAuthTag(decipher) {
|
|
29
|
-
return "setAuthTag" in decipher;
|
|
39
|
+
return "setAuthTag" in decipher && (0, kinds_1.isCallable)(decipher.setAuthTag);
|
|
30
40
|
}
|
|
31
41
|
/**
|
|
32
42
|
* Encryption modifier. enables the use of {@link Encrypted} on table fields.
|
|
@@ -35,7 +45,9 @@ function acceptsAuthTag(decipher) {
|
|
|
35
45
|
*/
|
|
36
46
|
class EncryptionModifier extends common_1.TwoWayModifier {
|
|
37
47
|
autolock = true;
|
|
38
|
-
lock(_locked_value,
|
|
48
|
+
lock(_locked_value,
|
|
49
|
+
// oxlint-disable-next-line anti-slop/no-unknown-parameters -- overrides OneWayModifier.lock; a modified field's value has its table class's type, which the shared modifier chain cannot name
|
|
50
|
+
value) {
|
|
39
51
|
const iv = (0, node_crypto_1.randomBytes)(this.options.ivSize || 16);
|
|
40
52
|
const cipher = (0, node_crypto_1.createCipheriv)(this.options.algorithm || "aes-256-gcm", this.options.secretKey, iv);
|
|
41
53
|
const encrypted = Buffer.concat([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/modifiers/encryption.ts"],"names":[],"mappings":";;;AACA,sEAA8E;AAC9E,6CAQqB;AAErB,qCAAuE;
|
|
1
|
+
{"version":3,"file":"encryption.js","sourceRoot":"","sources":["../../src/modifiers/encryption.ts"],"names":[],"mappings":";;;AACA,sEAA8E;AAC9E,6CAQqB;AAErB,qCAAuE;AACvE,4CAAkE;AAalE,SAAS,YAAY,CAAY,GAAW;IAC1C,MAAM,IAAI,GAAY,IAAI,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,IAAI,YAAY,IAAI;QACzB,CAAC,CAAC;YACE,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE;YACzB,IAAI,EAAE,MAAM;SACb;QACH,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAWD;;;;GAIG;AACH,SAAS,YAAY,CAAC,SAAsB;IAC1C,IACE,CAAC,IAAA,gBAAQ,EAAC,SAAS,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,KAAK,CAAC;QACnC,SAAS,CAAC,IAAI,KAAK,MAAM;QACzB,CAAC,IAAA,gBAAQ,EAAC,SAAS,CAAC,KAAK,CAAC,EAC1B,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,KAAkB;IACpD,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACtC,CAAC;AAED,SAAS,UAAU,CACjB,MAAc;IAEd,OAAO,YAAY,IAAI,MAAM,IAAI,IAAA,kBAAU,EAAC,MAAM,CAAC,UAAU,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,cAAc,CACrB,QAAkB;IAElB,OAAO,YAAY,IAAI,QAAQ,IAAI,IAAA,kBAAU,EAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAa,kBAAmB,SAAQ,uBAKvC;IACU,QAAQ,GAAG,IAAI,CAAC;IAET,IAAI,CAClB,aAAqC;IACrC,8LAA8L;IAC9L,KAAc;QAEd,MAAM,EAAE,GAAG,IAAA,yBAAW,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAClD,MAAM,MAAM,GAAG,IAAA,4BAAc,EAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,aAAa,EACvC,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,EAAE,CACH,CAAC;QACF,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YAC9B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,EAAE;SACf,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEtB,IAAI,OAA2B,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC1B,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACxC,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QAEV,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAEQ,UAAU,GAAG,IAAI,CAAC;IAEX,MAAM,CAAC,CAAC,YAAY,EAAE,MAAM,EAAE,OAAO,CAAa;QAChE,MAAM,QAAQ,GAAG,IAAA,8BAAgB,EAC/B,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,aAAa,EACvC,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAC9B,CAAC;QAEF,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,OAAO,EAAE,CAAC;YACxC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,OAAO,GAAY,IAAI,CAAC,KAAK,CACjC,MAAM,CAAC,MAAM,CAAC;YACZ,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACpD,QAAQ,CAAC,KAAK,EAAE;SACjB,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EACnB,YAAY,CACb,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEe,aAAa,CAC3B,IAAwC;QAExC,kMAAkM;QAClM,OAAO,IAAuC,CAAC;IACjD,CAAC;IAED,CAAC,oBAAW,CAAC,GAAG;KAAQ,CAAC;CAC1B;AAjED,gDAiEC;AAED;;;;;;GAMG;AACU,QAAA,SAAS,GAAG,IAAA,kCAAqB,EAC5C,CAAC,MAAM,EAAE,WAAW,EAAE,OAAgB,EAAE,EAAE;IACxC,IAAA,uBAAc,EACZ,MAAM,CAAC,WAAW,EAClB,kBAAkB,EAClB,WAAW,EACX,OAAO,CACR,CAAC;AACJ,CAAC,CACF,CAAC"}
|
package/dist/modifiers/hash.d.ts
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { MixinSymbol, OneWayModifier } from "./common";
|
|
2
2
|
type Options = {
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Digest to store instead of the default scrypt hash (for supported names
|
|
5
|
+
* refer to {@link createHash}). A digest is fast to guess: set this only for
|
|
6
|
+
* non-secret fingerprints, never for credentials.
|
|
7
|
+
*/
|
|
4
8
|
algorithm?: string;
|
|
5
9
|
};
|
|
10
|
+
type HashInput = Parameters<OneWayModifier<string | undefined>["test"]>[1];
|
|
6
11
|
/**
|
|
7
12
|
* Hash modifier. enables the use of {@link Hashed} on table fields.
|
|
8
13
|
*
|
|
9
|
-
* Hashed fields only contain a hash of the inserted value
|
|
14
|
+
* Hashed fields only contain a hash of the inserted value, by default a scrypt
|
|
15
|
+
* hash in the self-describing form `$scrypt$ln=15,r=8,p=3$<salt>$<key>`.
|
|
10
16
|
* Because of this, you lose the ability to query the information directly.
|
|
11
17
|
* You can test equality using {@link testHash}
|
|
12
18
|
*/
|
|
@@ -15,11 +21,28 @@ export declare class HashModifier extends OneWayModifier<string | undefined, [
|
|
|
15
21
|
salt?: string;
|
|
16
22
|
}, Options> {
|
|
17
23
|
readonly autolock = true;
|
|
18
|
-
|
|
24
|
+
/**
|
|
25
|
+
* Hashes a new value. Assigning the stored hash back keeps it as it is.
|
|
26
|
+
* Blocks the event loop for one scrypt run: a setter and the conversions
|
|
27
|
+
* behind `insert` and `update` are synchronous.
|
|
28
|
+
*/
|
|
29
|
+
lock(locked_value: string | undefined, value: unknown): string | undefined;
|
|
30
|
+
test(locked_value: string | undefined, value: HashInput): boolean;
|
|
31
|
+
/** {@link test} on the thread pool, without blocking the event loop. */
|
|
32
|
+
testAsync(locked_value: string, value: HashInput): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* @returns Whether a stored hash differs from what this field writes today. A
|
|
35
|
+
* field with an explicit `algorithm` never reports one: hashing again would
|
|
36
|
+
* give the same digest, or weaken a scrypt hash.
|
|
37
|
+
*/
|
|
38
|
+
isOutdated(locked_value: string): boolean;
|
|
39
|
+
/** Reads the salt now: `this.meta` is bound to a row only synchronously. */
|
|
40
|
+
private plan;
|
|
19
41
|
[MixinSymbol]: {
|
|
20
42
|
new (): {
|
|
21
43
|
/**
|
|
22
|
-
* Test a value against the stored hash.
|
|
44
|
+
* Test a value against the stored hash. Blocks the event loop for one
|
|
45
|
+
* scrypt run: on a server, prefer {@link testHashAsync}.
|
|
23
46
|
*
|
|
24
47
|
* @param field - Name of the field to test against.
|
|
25
48
|
* @param value - Value to hash and test.
|
|
@@ -27,6 +50,25 @@ export declare class HashModifier extends OneWayModifier<string | undefined, [
|
|
|
27
50
|
* @returns Whether the new value is identical to the original or not.
|
|
28
51
|
*/
|
|
29
52
|
testHash<This extends {}, F extends keyof This>(this: This, field: F, value: This[F]): unknown;
|
|
53
|
+
/**
|
|
54
|
+
* Test a value against the stored hash on the thread pool.
|
|
55
|
+
*
|
|
56
|
+
* @param field - Name of the field to test against.
|
|
57
|
+
* @param value - Value to hash and test.
|
|
58
|
+
*
|
|
59
|
+
* @returns Whether the new value is identical to the original or not.
|
|
60
|
+
*/
|
|
61
|
+
testHashAsync<This extends {}, F extends keyof This>(this: This, field: F, value: This[F]): Promise<boolean>;
|
|
62
|
+
/**
|
|
63
|
+
* Tell whether a stored hash needs writing again: it uses an older format
|
|
64
|
+
* or cost. After a successful test, assign the tested value to the field
|
|
65
|
+
* and save the row.
|
|
66
|
+
*
|
|
67
|
+
* @param field - Name of the field to inspect.
|
|
68
|
+
*
|
|
69
|
+
* @returns Whether the stored hash is outdated. False when nothing is stored.
|
|
70
|
+
*/
|
|
71
|
+
isHashOutdated<This extends {}>(this: This, field: keyof This): boolean;
|
|
30
72
|
};
|
|
31
73
|
};
|
|
32
74
|
}
|