@kaumlaut/pure 0.1.14 → 0.1.16
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/dist/guard/index.d.ts +3 -0
- package/dist/guard/index.d.ts.map +1 -1
- package/dist/guard/index.js +5 -2
- package/dist/runtime/index.d.ts +2 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/persistence/localStorage/index.d.ts.map +1 -1
- package/dist/runtime/persistence/localStorage/index.js +3 -2
- package/dist/runtime/persistence/none/index.d.ts.map +1 -1
- package/dist/runtime/persistence/none/index.js +2 -1
- package/package.json +1 -1
package/dist/guard/index.d.ts
CHANGED
|
@@ -6,4 +6,7 @@ export declare function isInt(value: unknown): value is number;
|
|
|
6
6
|
export declare function isFloat(value: unknown): value is number;
|
|
7
7
|
export declare function isObjectWithKey<T extends object>(value: unknown, key: keyof T): value is T;
|
|
8
8
|
export declare function isObjectWithKeys<T extends object>(value: unknown, keys: (keyof T)[]): value is T;
|
|
9
|
+
export declare function isObjectWithKeysMatchingGuard<T extends object>(value: unknown, guards: {
|
|
10
|
+
[K in keyof T]: Guard<T[K]>;
|
|
11
|
+
}): value is T;
|
|
9
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guard/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAA;AAErD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAErE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAErD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAE1F;AACD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAE,MAAM,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAEhG"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guard/index.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK,IAAI,CAAC,CAAA;AAErD,wBAAgB,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAErE;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAExD;AACD,wBAAgB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAErD;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAEvD;AAED,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,IAAI,CAAC,CAE1F;AACD,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAC,CAAE,MAAM,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC,CAEhG;AACD,wBAAgB,6BAA6B,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE;KAAE,CAAC,IAAI,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CAAC,GAAG,KAAK,IAAI,CAAC,CAEjI"}
|
package/dist/guard/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { asFloat } from '@kaumlaut/pure/parse';
|
|
1
|
+
import { asFloat, asInt } from '@kaumlaut/pure/parse';
|
|
2
2
|
import { isOk } from '@kaumlaut/pure/result';
|
|
3
3
|
export function all(value, guards) {
|
|
4
4
|
return guards.every(guard => guard(value));
|
|
@@ -10,7 +10,7 @@ export function isNumber(value) {
|
|
|
10
10
|
return typeof value === "number";
|
|
11
11
|
}
|
|
12
12
|
export function isInt(value) {
|
|
13
|
-
return isNumber(value) &&
|
|
13
|
+
return isNumber(value) && isOk(asInt(value.toString()));
|
|
14
14
|
}
|
|
15
15
|
export function isFloat(value) {
|
|
16
16
|
return isNumber(value) && isOk(asFloat(value.toString()));
|
|
@@ -21,3 +21,6 @@ export function isObjectWithKey(value, key) {
|
|
|
21
21
|
export function isObjectWithKeys(value, keys) {
|
|
22
22
|
return typeof value === "object" && keys.every(key => key in value);
|
|
23
23
|
}
|
|
24
|
+
export function isObjectWithKeysMatchingGuard(value, guards) {
|
|
25
|
+
return typeof value === "object" && Object.keys(guards).every(key => key in value && guards[key](value[key]));
|
|
26
|
+
}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { Effect } from '@kaumlaut/pure/runtime/effect';
|
|
2
2
|
import { Cloneable } from '../clone';
|
|
3
|
+
import { Maybe } from '../maybe';
|
|
3
4
|
export type Message<N extends string = string, T = any> = {
|
|
4
5
|
value: T;
|
|
5
6
|
name: N;
|
|
6
7
|
};
|
|
7
8
|
export type Update<Model extends Cloneable, CustomMessage extends Message> = (model: Model, msg: CustomMessage) => [Model, Effect<CustomMessage>];
|
|
8
|
-
export type Init<Model extends Cloneable, CustomMessage extends Message> = () => [Model, Effect<CustomMessage>];
|
|
9
|
+
export type Init<Model extends Cloneable, CustomMessage extends Message> = (peristedModel: Maybe<Model>) => [Model, Effect<CustomMessage>];
|
|
9
10
|
export type Change<CustomMessage extends Message, Model> = [
|
|
10
11
|
CustomMessage | null,
|
|
11
12
|
model: Model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAA;AAEhC,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,GAAG,IAAI;IACxD,KAAK,EAAE,CAAC,CAAA;IACR,IAAI,EAAE,CAAC,CAAA;CACR,CAAA;AAED,MAAM,MAAM,MAAM,CAAC,KAAK,SAAS,SAAS,EAAE,aAAa,SAAS,OAAO,IAAI,CAC3E,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,aAAa,KACf,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AAEnC,MAAM,MAAM,IAAI,CAAC,KAAK,SAAS,SAAS,EAAE,aAAa,SAAS,OAAO,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AAE1I,MAAM,MAAM,MAAM,CAAC,aAAa,SAAS,OAAO,EAAE,KAAK,IAAI;IACzD,aAAa,GAAG,IAAI;IACpB,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAA;QACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;KACpB,GAAG,IAAI;CACT,CAAA;AAED,MAAM,MAAM,OAAO,CAAC,aAAa,SAAS,OAAO,EAAE,KAAK,SAAS,SAAS,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAA;AAE5G,wBAAgB,EAAE,CAAC,aAAa,SAAS,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,EACnE,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,OAAO,GACf,OAAO,IAAI,aAAa,CAE1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/persistence/localStorage/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/persistence/localStorage/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAChE,OAAO,EAAE,OAAO,EAAQ,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAIhD,eAAO,MAAM,uBAAuB,GAAI,KAAK,SAAS,SAAS,EAAE,aAAa,SAAS,OAAO,EAC5F,MAAM,MAAM,KACX,WAAW,CAAC,KAAK,EAAE,aAAa,CAwBjC,CAAA"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ok, err } from "@kaumlaut/pure/result";
|
|
2
|
+
import { just, nothing } from "@kaumlaut/pure/maybe";
|
|
2
3
|
export const localStoragePersistence = (name) => ({
|
|
3
4
|
persist(model) {
|
|
4
5
|
window.localStorage.setItem(name, btoa(JSON.stringify(model)));
|
|
@@ -6,13 +7,13 @@ export const localStoragePersistence = (name) => ({
|
|
|
6
7
|
read(guard, init) {
|
|
7
8
|
const record = window.localStorage.getItem(name);
|
|
8
9
|
if (record === null) {
|
|
9
|
-
return ok(init()[0]);
|
|
10
|
+
return ok(init(nothing())[0]);
|
|
10
11
|
}
|
|
11
12
|
try {
|
|
12
13
|
const json = atob(record);
|
|
13
14
|
const model = JSON.parse(json);
|
|
14
15
|
if (guard(model)) {
|
|
15
|
-
return ok(model);
|
|
16
|
+
return ok(init(just(model))[0]);
|
|
16
17
|
}
|
|
17
18
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
18
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/persistence/none/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAGhE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/persistence/none/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAA;AAGhE,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAGhD,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,SAAS,EAAE,aAAa,SAAS,OAAO,OAAK,WAAW,CAClG,KAAK,EACL,aAAa,CAOb,CAAA"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ok } from '@kaumlaut/pure/result';
|
|
2
|
+
import { nothing } from '@kaumlaut/pure/maybe';
|
|
2
3
|
export const noPersistence = () => ({
|
|
3
4
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
4
5
|
persist(model) { },
|
|
5
6
|
read(guard, init) {
|
|
6
|
-
return ok(init()[0]);
|
|
7
|
+
return ok(init(nothing())[0]);
|
|
7
8
|
},
|
|
8
9
|
});
|