@kaumlaut/pure 0.1.7 → 0.1.8
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/effect/Fetch.d.ts +3 -3
- package/dist/effect/Fetch.js +2 -2
- package/dist/effect/None.d.ts +1 -1
- package/dist/effect/None.js +1 -1
- package/dist/effect/index.d.ts +14 -2
- package/dist/effect/index.js +7 -1
- package/dist/guard/index.d.ts +1 -2
- package/dist/guard/index.js +1 -1
- package/dist/maybe/index.d.ts +16 -2
- package/dist/maybe/index.js +39 -1
- package/dist/parse/index.d.ts +3 -1
- package/dist/parse/index.js +15 -1
- package/dist/result/index.d.ts +16 -2
- package/dist/result/index.js +36 -1
- package/dist/runtime/index.d.ts +18 -2
- package/dist/runtime/index.js +9 -1
- package/dist/runtime/persistence/LocalStorage.d.ts +2 -2
- package/dist/runtime/persistence/LocalStorage.js +1 -1
- package/dist/runtime/persistence/None.d.ts +2 -2
- package/dist/runtime/persistence/None.js +1 -1
- package/dist/runtime/persistence/Persistence.d.ts +1 -1
- package/dist/runtime/persistence/index.d.ts +7 -1
- package/package.json +9 -24
package/dist/effect/Fetch.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import
|
|
2
|
-
import type {
|
|
3
|
-
import
|
|
1
|
+
import { ReceiveEffectResult, Effect } from '.';
|
|
2
|
+
import type { Guard } from '../guard';
|
|
3
|
+
import type { Message } from '../runtime';
|
|
4
4
|
type HttpError = {
|
|
5
5
|
code: number;
|
|
6
6
|
message: string;
|
package/dist/effect/Fetch.js
CHANGED
package/dist/effect/None.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { type Effect } from '
|
|
1
|
+
import { type Effect } from '.';
|
|
2
2
|
export declare function none(): Effect<any>;
|
package/dist/effect/None.js
CHANGED
package/dist/effect/index.d.ts
CHANGED
|
@@ -1,4 +1,16 @@
|
|
|
1
|
-
export * from "./Effect";
|
|
2
1
|
export * from "./Fetch";
|
|
3
2
|
export * from "./None";
|
|
4
|
-
|
|
3
|
+
import type { Result } from '../result';
|
|
4
|
+
import type { Message } from '../runtime';
|
|
5
|
+
export type AsyncEffect<T extends Message> = () => Promise<T>;
|
|
6
|
+
export type SyncEffect<T extends Message> = () => T;
|
|
7
|
+
export type NullEffect = () => null;
|
|
8
|
+
export type AsyncNullEffect = () => Promise<null>;
|
|
9
|
+
export type EffectType<T extends Message> = AsyncEffect<T> | SyncEffect<T> | NullEffect | AsyncNullEffect;
|
|
10
|
+
export type Effect<T extends Message> = {
|
|
11
|
+
effectType: EffectType<T>;
|
|
12
|
+
name: string;
|
|
13
|
+
meta: object | null;
|
|
14
|
+
};
|
|
15
|
+
export declare function effectWithName<T extends Message>(name: string, effect: EffectType<T>, meta?: object | null): Effect<T>;
|
|
16
|
+
export type ReceiveEffectResult<T, E, R> = (result: Result<T, E>) => R;
|
package/dist/effect/index.js
CHANGED
package/dist/guard/index.d.ts
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
export
|
|
2
|
-
export type { Guard } from "./Guard";
|
|
1
|
+
export type Guard<T> = (value: unknown) => value is T;
|
package/dist/guard/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export
|
|
1
|
+
export {};
|
package/dist/maybe/index.d.ts
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export type Just<T> = {
|
|
2
|
+
type: 'maybe-just';
|
|
3
|
+
value: T;
|
|
4
|
+
};
|
|
5
|
+
export type Nothing = {
|
|
6
|
+
type: 'maybe-nothing';
|
|
7
|
+
};
|
|
8
|
+
export type Maybe<T> = Just<T> | Nothing;
|
|
9
|
+
export declare function nothing(): Nothing;
|
|
10
|
+
export declare function just<T>(value: T): Just<T>;
|
|
11
|
+
export declare function isNothing<T>(maybe: Maybe<T>): maybe is Nothing;
|
|
12
|
+
export declare function isJust<T>(maybe: Maybe<T>): maybe is Just<T>;
|
|
13
|
+
export declare function isMaybe<T>(value: unknown): value is Maybe<T>;
|
|
14
|
+
export declare function mapMaybe<T, R>(maybe: Maybe<T>, func: (value: T) => R): Maybe<R>;
|
|
15
|
+
export declare function filterMaybe<T>(maybe: Maybe<T>, func: (value: T) => boolean): Maybe<T>;
|
|
16
|
+
export declare function maybeWithDefault<T>(maybe: Maybe<T>, defaultValue: T): T;
|
package/dist/maybe/index.js
CHANGED
|
@@ -1 +1,39 @@
|
|
|
1
|
-
export
|
|
1
|
+
export function nothing() {
|
|
2
|
+
return {
|
|
3
|
+
type: 'maybe-nothing',
|
|
4
|
+
};
|
|
5
|
+
}
|
|
6
|
+
export function just(value) {
|
|
7
|
+
return {
|
|
8
|
+
type: 'maybe-just',
|
|
9
|
+
value,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function isNothing(maybe) {
|
|
13
|
+
return maybe.type === 'maybe-nothing';
|
|
14
|
+
}
|
|
15
|
+
export function isJust(maybe) {
|
|
16
|
+
return maybe.type === 'maybe-just';
|
|
17
|
+
}
|
|
18
|
+
export function isMaybe(value) {
|
|
19
|
+
//@ts-expect-error is validated
|
|
20
|
+
return value.type === 'maybe-just' || value.type === 'maybe-nothing';
|
|
21
|
+
}
|
|
22
|
+
export function mapMaybe(maybe, func) {
|
|
23
|
+
if (isJust(maybe)) {
|
|
24
|
+
return just(func(maybe.value));
|
|
25
|
+
}
|
|
26
|
+
return maybe;
|
|
27
|
+
}
|
|
28
|
+
export function filterMaybe(maybe, func) {
|
|
29
|
+
if (isJust(maybe) && func(maybe.value)) {
|
|
30
|
+
return maybe;
|
|
31
|
+
}
|
|
32
|
+
return nothing();
|
|
33
|
+
}
|
|
34
|
+
export function maybeWithDefault(maybe, defaultValue) {
|
|
35
|
+
if (isJust(maybe)) {
|
|
36
|
+
return maybe.value;
|
|
37
|
+
}
|
|
38
|
+
return defaultValue;
|
|
39
|
+
}
|
package/dist/parse/index.d.ts
CHANGED
package/dist/parse/index.js
CHANGED
|
@@ -1 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
import { err, ok } from '../result';
|
|
2
|
+
export function asInt(value) {
|
|
3
|
+
const parsed = parseInt(value, 10);
|
|
4
|
+
if (Number.isNaN(parsed)) {
|
|
5
|
+
return err('Number is NaN');
|
|
6
|
+
}
|
|
7
|
+
return ok(parsed);
|
|
8
|
+
}
|
|
9
|
+
export function asFloat(value) {
|
|
10
|
+
const parsed = parseFloat(value);
|
|
11
|
+
if (Number.isNaN(parsed)) {
|
|
12
|
+
return err('Number is NaN');
|
|
13
|
+
}
|
|
14
|
+
return ok(parsed);
|
|
15
|
+
}
|
package/dist/result/index.d.ts
CHANGED
|
@@ -1,2 +1,16 @@
|
|
|
1
|
-
export
|
|
2
|
-
|
|
1
|
+
export type Ok<T> = {
|
|
2
|
+
type: 'ok-result';
|
|
3
|
+
value: T;
|
|
4
|
+
};
|
|
5
|
+
export type Err<T> = {
|
|
6
|
+
type: 'error-result';
|
|
7
|
+
error: T;
|
|
8
|
+
};
|
|
9
|
+
export type Result<T, E> = Ok<T> | Err<E>;
|
|
10
|
+
export declare function isOk<T, E>(result: Result<T, E>): result is Ok<T>;
|
|
11
|
+
export declare function isErr<T, E>(result: Result<T, E>): result is Err<E>;
|
|
12
|
+
export declare function ok<T>(value: T): Ok<T>;
|
|
13
|
+
export declare function err<E>(error: E): Err<E>;
|
|
14
|
+
export declare function map<T, E, R>(result: Result<T, E>, func: (value: T) => R): Result<R, E>;
|
|
15
|
+
export declare function mapErr<T, E, R>(result: Result<T, E>, func: (value: E) => R): Result<T, R>;
|
|
16
|
+
export declare function withDefault<T, E>(result: Result<T, E>, defaultValue: T): T;
|
package/dist/result/index.js
CHANGED
|
@@ -1 +1,36 @@
|
|
|
1
|
-
export
|
|
1
|
+
export function isOk(result) {
|
|
2
|
+
return result.type === 'ok-result';
|
|
3
|
+
}
|
|
4
|
+
export function isErr(result) {
|
|
5
|
+
return result.type === 'error-result';
|
|
6
|
+
}
|
|
7
|
+
export function ok(value) {
|
|
8
|
+
return {
|
|
9
|
+
type: 'ok-result',
|
|
10
|
+
value,
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export function err(error) {
|
|
14
|
+
return {
|
|
15
|
+
type: 'error-result',
|
|
16
|
+
error,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function map(result, func) {
|
|
20
|
+
if (isOk(result)) {
|
|
21
|
+
return ok(func(result.value));
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
export function mapErr(result, func) {
|
|
26
|
+
if (isErr(result)) {
|
|
27
|
+
return err(func(result.error));
|
|
28
|
+
}
|
|
29
|
+
return result;
|
|
30
|
+
}
|
|
31
|
+
export function withDefault(result, defaultValue) {
|
|
32
|
+
if (isErr(result)) {
|
|
33
|
+
return defaultValue;
|
|
34
|
+
}
|
|
35
|
+
return result.value;
|
|
36
|
+
}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Effect } from '../effect';
|
|
2
2
|
export * from "./persistence";
|
|
3
|
-
export type
|
|
3
|
+
export type Message<N extends string = string, T = any> = {
|
|
4
|
+
value: T;
|
|
5
|
+
name: N;
|
|
6
|
+
};
|
|
7
|
+
export type Update<Model, CustomMessage extends Message> = (model: Model, msg: CustomMessage) => [Model, Effect<CustomMessage>];
|
|
8
|
+
export type Init<Model, CustomMessage extends Message> = () => [Model, Effect<CustomMessage>];
|
|
9
|
+
export type Change<CustomMessage extends Message, Model> = [
|
|
10
|
+
CustomMessage | null,
|
|
11
|
+
model: Model,
|
|
12
|
+
effect: {
|
|
13
|
+
name: string;
|
|
14
|
+
meta: object | null;
|
|
15
|
+
} | null
|
|
16
|
+
];
|
|
17
|
+
export type Changes<CustomMessage extends Message, Model> = Change<CustomMessage, Model>[];
|
|
18
|
+
export declare function is<CustomMessage extends Message<A>, A extends string>(name: A, message: Message): message is CustomMessage;
|
|
19
|
+
export declare function create<MN extends string, T>(name: MN, value: T): Message<MN, T>;
|
package/dist/runtime/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Message } from '
|
|
2
|
-
import type { Persistence } from '
|
|
1
|
+
import type { Message } from '..';
|
|
2
|
+
import type { Persistence } from '.';
|
|
3
3
|
export declare const localStoragePersistence: <Model, CustomMessage extends Message>(name: string) => Persistence<Model, CustomMessage>;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import type { Message } from '
|
|
2
|
-
import type { Persistence } from '
|
|
1
|
+
import type { Message } from '..';
|
|
2
|
+
import type { Persistence } from '.';
|
|
3
3
|
export declare const noPersistence: <Model, CustomMessage extends Message>() => Persistence<Model, CustomMessage>;
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
import { Guard } from "../../guard";
|
|
2
|
+
import { Result } from "../../result";
|
|
3
|
+
import { Message, Init } from "..";
|
|
1
4
|
export * from "./LocalStorage";
|
|
2
5
|
export * from "./None";
|
|
3
|
-
export type
|
|
6
|
+
export type Persistence<Model, CustomMessage extends Message> = {
|
|
7
|
+
persist(model: Model): void;
|
|
8
|
+
read(guard: Guard<Model>, init: Init<Model, CustomMessage>): Result<Model, string>;
|
|
9
|
+
};
|
package/package.json
CHANGED
|
@@ -1,48 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaumlaut/pure",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Types and functions for state management inspired by Elm and functional programming",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"module": "dist/index.js",
|
|
8
|
+
"markdown": "standard",
|
|
9
|
+
"readme": "docs/README.md",
|
|
8
10
|
"scripts": {
|
|
9
11
|
"build": "tsc",
|
|
10
12
|
"test": "vitest",
|
|
13
|
+
"typedoc": "typedoc",
|
|
11
14
|
"release": "npm run build && npm publish --access public"
|
|
12
15
|
},
|
|
13
16
|
"files": [
|
|
14
17
|
"dist"
|
|
15
18
|
],
|
|
16
19
|
"exports": {
|
|
17
|
-
"
|
|
18
|
-
"import": "./dist
|
|
19
|
-
"types": "./dist
|
|
20
|
-
},
|
|
21
|
-
"./result": {
|
|
22
|
-
"import": "./dist/result/index.js",
|
|
23
|
-
"types": "./dist/result/index.d.ts"
|
|
24
|
-
},
|
|
25
|
-
"./runtime": {
|
|
26
|
-
"import": "./dist/runtime/index.js",
|
|
27
|
-
"types": "./dist/runtime/index.d.ts"
|
|
28
|
-
},
|
|
29
|
-
"./maybe": {
|
|
30
|
-
"import": "./dist/maybe/index.js",
|
|
31
|
-
"types": "./dist/maybe/index.d.ts"
|
|
32
|
-
},
|
|
33
|
-
"./guard": {
|
|
34
|
-
"import": "./dist/guard/index.js",
|
|
35
|
-
"types": "./dist/guard/index.d.ts"
|
|
36
|
-
},
|
|
37
|
-
"./parse": {
|
|
38
|
-
"import": "./dist/parse/index.js",
|
|
39
|
-
"types": "./dist/parse/index.d.ts"
|
|
20
|
+
"./*": {
|
|
21
|
+
"import": "./dist/*/index.js",
|
|
22
|
+
"types": "./dist/*/index.d.ts"
|
|
40
23
|
}
|
|
41
24
|
},
|
|
42
25
|
"type": "module",
|
|
43
26
|
"author": "Max Kaemmerer",
|
|
44
27
|
"license": "MIT",
|
|
45
28
|
"devDependencies": {
|
|
29
|
+
"typedoc": "^0.27.9",
|
|
30
|
+
"typedoc-plugin-markdown": "^4.4.2",
|
|
46
31
|
"typescript": "^5.8.2",
|
|
47
32
|
"vitest": "^3.0.8"
|
|
48
33
|
}
|