@kaumlaut/pure 0.1.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/dist/Effect-D-qvMy9v.d.ts +45 -0
- package/dist/Fetch-zaXtHpL6.d.ts +27 -0
- package/dist/None-g_xS4PsO.d.ts +10 -0
- package/dist/chunk-CRFP5NKQ.js +22 -0
- package/dist/chunk-CRFP5NKQ.js.map +1 -0
- package/dist/chunk-HC7XIT3Z.js +82 -0
- package/dist/chunk-HC7XIT3Z.js.map +1 -0
- package/dist/chunk-PZ5AY32C.js +10 -0
- package/dist/chunk-PZ5AY32C.js.map +1 -0
- package/dist/chunk-TTN3VURH.js +23 -0
- package/dist/chunk-TTN3VURH.js.map +1 -0
- package/dist/chunk-UICXER2N.js +48 -0
- package/dist/chunk-UICXER2N.js.map +1 -0
- package/dist/effect/Effect.d.ts +2 -0
- package/dist/effect/Effect.js +8 -0
- package/dist/effect/Effect.js.map +1 -0
- package/dist/effect/Fetch.d.ts +4 -0
- package/dist/effect/Fetch.js +18 -0
- package/dist/effect/Fetch.js.map +1 -0
- package/dist/effect/None.d.ts +3 -0
- package/dist/effect/None.js +9 -0
- package/dist/effect/None.js.map +1 -0
- package/dist/guard/Guard.d.ts +3 -0
- package/dist/guard/Guard.js +1 -0
- package/dist/guard/Guard.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/maybe/Maybe.d.ts +18 -0
- package/dist/maybe/Maybe.js +52 -0
- package/dist/maybe/Maybe.js.map +1 -0
- package/dist/parse/Number.d.ts +6 -0
- package/dist/parse/Number.js +26 -0
- package/dist/parse/Number.js.map +1 -0
- package/dist/result/Result.d.ts +18 -0
- package/dist/result/Result.js +20 -0
- package/dist/result/Result.js.map +1 -0
- package/dist/runtime/Runtime.d.ts +2 -0
- package/dist/runtime/Runtime.js +10 -0
- package/dist/runtime/Runtime.js.map +1 -0
- package/dist/runtime/persistence/LocalStorage.d.ts +8 -0
- package/dist/runtime/persistence/LocalStorage.js +32 -0
- package/dist/runtime/persistence/LocalStorage.js.map +1 -0
- package/dist/runtime/persistence/None.d.ts +8 -0
- package/dist/runtime/persistence/None.js +18 -0
- package/dist/runtime/persistence/None.js.map +1 -0
- package/dist/runtime/persistence/Persistence.d.ts +10 -0
- package/dist/runtime/persistence/Persistence.js +1 -0
- package/dist/runtime/persistence/Persistence.js.map +1 -0
- package/package.json +21 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Result } from './result/Result.js';
|
|
2
|
+
|
|
3
|
+
type Message<N extends string = string, T = any> = {
|
|
4
|
+
value: T;
|
|
5
|
+
name: N;
|
|
6
|
+
};
|
|
7
|
+
type Update<Model, CustomMessage extends Message> = (model: Model, msg: CustomMessage) => [Model, Effect<CustomMessage>];
|
|
8
|
+
type Init<Model, CustomMessage extends Message> = () => [Model, Effect<CustomMessage>];
|
|
9
|
+
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
|
+
type Changes<CustomMessage extends Message, Model> = Change<CustomMessage, Model>[];
|
|
18
|
+
declare function is<CustomMessage extends Message<A>, A extends string>(name: A, message: Message): message is CustomMessage;
|
|
19
|
+
|
|
20
|
+
type AsyncEffect<T extends Message> = () => Promise<T>;
|
|
21
|
+
type SyncEffect<T extends Message> = () => T;
|
|
22
|
+
type NullEffect = () => null;
|
|
23
|
+
type AsyncNullEffect = () => Promise<null>;
|
|
24
|
+
type EffectType<T extends Message> = AsyncEffect<T> | SyncEffect<T> | NullEffect | AsyncNullEffect;
|
|
25
|
+
type Effect<T extends Message> = {
|
|
26
|
+
effectType: EffectType<T>;
|
|
27
|
+
name: string;
|
|
28
|
+
meta: object | null;
|
|
29
|
+
};
|
|
30
|
+
declare function withName<T extends Message>(name: string, effect: EffectType<T>, meta?: object | null): Effect<T>;
|
|
31
|
+
type ReceiveEffectResult<T, E, R> = (result: Result<T, E>) => R;
|
|
32
|
+
|
|
33
|
+
type Effect$1_AsyncEffect<T extends Message> = AsyncEffect<T>;
|
|
34
|
+
type Effect$1_AsyncNullEffect = AsyncNullEffect;
|
|
35
|
+
type Effect$1_Effect<T extends Message> = Effect<T>;
|
|
36
|
+
type Effect$1_EffectType<T extends Message> = EffectType<T>;
|
|
37
|
+
type Effect$1_NullEffect = NullEffect;
|
|
38
|
+
type Effect$1_ReceiveEffectResult<T, E, R> = ReceiveEffectResult<T, E, R>;
|
|
39
|
+
type Effect$1_SyncEffect<T extends Message> = SyncEffect<T>;
|
|
40
|
+
declare const Effect$1_withName: typeof withName;
|
|
41
|
+
declare namespace Effect$1 {
|
|
42
|
+
export { type Effect$1_AsyncEffect as AsyncEffect, type Effect$1_AsyncNullEffect as AsyncNullEffect, type Effect$1_Effect as Effect, type Effect$1_EffectType as EffectType, type Effect$1_NullEffect as NullEffect, type Effect$1_ReceiveEffectResult as ReceiveEffectResult, type Effect$1_SyncEffect as SyncEffect, Effect$1_withName as withName };
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export { type AsyncEffect as A, type Change as C, Effect$1 as E, type Init as I, type Message as M, type NullEffect as N, type ReceiveEffectResult as R, type SyncEffect as S, type Update as U, type Effect as a, type Changes as b, type AsyncNullEffect as c, type EffectType as d, is as i, withName as w };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { Guard } from './guard/Guard.js';
|
|
2
|
+
import { M as Message, R as ReceiveEffectResult, a as Effect } from './Effect-D-qvMy9v.js';
|
|
3
|
+
|
|
4
|
+
type HttpError = {
|
|
5
|
+
code: number;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
type MalformedPayloadError = {
|
|
9
|
+
message: string;
|
|
10
|
+
};
|
|
11
|
+
type FetchError = HttpError | MalformedPayloadError;
|
|
12
|
+
declare function isNotFound(error: FetchError): boolean;
|
|
13
|
+
declare function isHttp(error: FetchError): error is HttpError;
|
|
14
|
+
declare function isClient(error: FetchError): boolean;
|
|
15
|
+
declare function isServer(error: FetchError): boolean;
|
|
16
|
+
declare function fetchJson<T, M extends Message>(url: string, headers: [string, string][], method: string, guard: Guard<T>, receiver: ReceiveEffectResult<T, FetchError, M>): Effect<M>;
|
|
17
|
+
|
|
18
|
+
declare const Fetch_fetchJson: typeof fetchJson;
|
|
19
|
+
declare const Fetch_isClient: typeof isClient;
|
|
20
|
+
declare const Fetch_isHttp: typeof isHttp;
|
|
21
|
+
declare const Fetch_isNotFound: typeof isNotFound;
|
|
22
|
+
declare const Fetch_isServer: typeof isServer;
|
|
23
|
+
declare namespace Fetch {
|
|
24
|
+
export { Fetch_fetchJson as fetchJson, Fetch_isClient as isClient, Fetch_isHttp as isHttp, Fetch_isNotFound as isNotFound, Fetch_isServer as isServer };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export { Fetch as F, isHttp as a, isClient as b, isServer as c, fetchJson as f, isNotFound as i };
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkPZ5AY32Cjs = require('./chunk-PZ5AY32C.js');
|
|
4
|
+
|
|
5
|
+
// src/effect/Effect.ts
|
|
6
|
+
var Effect_exports = {};
|
|
7
|
+
_chunkPZ5AY32Cjs.__export.call(void 0, Effect_exports, {
|
|
8
|
+
withName: () => withName
|
|
9
|
+
});
|
|
10
|
+
function withName(name, effect, meta = null) {
|
|
11
|
+
return {
|
|
12
|
+
name,
|
|
13
|
+
effectType: effect,
|
|
14
|
+
meta
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
exports.withName = withName; exports.Effect_exports = Effect_exports;
|
|
22
|
+
//# sourceMappingURL=chunk-CRFP5NKQ.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-CRFP5NKQ.js","../src/effect/Effect.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACJA,IAAA,eAAA,EAAA,CAAA,CAAA;AAAA,uCAAA,cAAA,EAAA;AAAA,EAAA,QAAA,EAAA,CAAA,EAAA,GAAA;AAAA,CAAA,CAAA;AAkBO,SAAS,QAAA,CACd,IAAA,EACA,MAAA,EACA,KAAA,EAAsB,IAAA,EACX;AACX,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,UAAA,EAAY,MAAA;AAAA,IACZ;AAAA,EACF,CAAA;AACF;ADZA;AACA;AACE;AACA;AACF,qEAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-CRFP5NKQ.js","sourcesContent":[null,"import type { Result } from '../result/Result'\nimport type { Message } from '../runtime/Runtime'\n\nexport type AsyncEffect<T extends Message> = () => Promise<T>\nexport type SyncEffect<T extends Message> = () => T\nexport type NullEffect = () => null\nexport type AsyncNullEffect = () => Promise<null>\nexport type EffectType<T extends Message> =\n | AsyncEffect<T>\n | SyncEffect<T>\n | NullEffect\n | AsyncNullEffect\nexport type Effect<T extends Message> = {\n effectType: EffectType<T>\n name: string\n meta: object | null\n}\n\nexport function withName<T extends Message>(\n name: string,\n effect: EffectType<T>,\n meta: object | null = null,\n): Effect<T> {\n return {\n name,\n effectType: effect,\n meta,\n }\n}\n\nexport type ReceiveEffectResult<T, E, R> = (result: Result<T, E>) => R\n"]}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkCRFP5NKQjs = require('./chunk-CRFP5NKQ.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkUICXER2Njs = require('./chunk-UICXER2N.js');
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
var _chunkPZ5AY32Cjs = require('./chunk-PZ5AY32C.js');
|
|
11
|
+
|
|
12
|
+
// src/effect/Fetch.ts
|
|
13
|
+
var Fetch_exports = {};
|
|
14
|
+
_chunkPZ5AY32Cjs.__export.call(void 0, Fetch_exports, {
|
|
15
|
+
fetchJson: () => fetchJson,
|
|
16
|
+
isClient: () => isClient,
|
|
17
|
+
isHttp: () => isHttp,
|
|
18
|
+
isNotFound: () => isNotFound,
|
|
19
|
+
isServer: () => isServer
|
|
20
|
+
});
|
|
21
|
+
function isNotFound(error) {
|
|
22
|
+
return isHttp(error) && error.code === 404;
|
|
23
|
+
}
|
|
24
|
+
function isHttp(error) {
|
|
25
|
+
return Object.keys(error).includes("message") && Object.keys(error).includes("code");
|
|
26
|
+
}
|
|
27
|
+
function isClient(error) {
|
|
28
|
+
return isHttp(error) && error.code > 399 && error.code < 500;
|
|
29
|
+
}
|
|
30
|
+
function isServer(error) {
|
|
31
|
+
return isHttp(error) && error.code > 499;
|
|
32
|
+
}
|
|
33
|
+
function fetchJson(url, headers, method, guard, receiver) {
|
|
34
|
+
return _chunkCRFP5NKQjs.withName.call(void 0,
|
|
35
|
+
"fetchJson",
|
|
36
|
+
async () => {
|
|
37
|
+
try {
|
|
38
|
+
const result = await fetch(url, {
|
|
39
|
+
method,
|
|
40
|
+
headers
|
|
41
|
+
});
|
|
42
|
+
if (result.status > 199 && result.status < 300) {
|
|
43
|
+
const payload = await result.json();
|
|
44
|
+
if (guard(payload)) {
|
|
45
|
+
return receiver(_chunkUICXER2Njs.ok.call(void 0, payload));
|
|
46
|
+
} else {
|
|
47
|
+
return receiver(
|
|
48
|
+
_chunkUICXER2Njs.err.call(void 0, {
|
|
49
|
+
message: "Malformed Payload. Your Guard does not pass."
|
|
50
|
+
})
|
|
51
|
+
);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return receiver(
|
|
55
|
+
_chunkUICXER2Njs.err.call(void 0, {
|
|
56
|
+
code: result.status,
|
|
57
|
+
message: await result.text()
|
|
58
|
+
})
|
|
59
|
+
);
|
|
60
|
+
} catch (e) {
|
|
61
|
+
return receiver(
|
|
62
|
+
_chunkUICXER2Njs.err.call(void 0, {
|
|
63
|
+
message: "Malformed Payload. Invalid JSON."
|
|
64
|
+
})
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
url
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
exports.isNotFound = isNotFound; exports.isHttp = isHttp; exports.isClient = isClient; exports.isServer = isServer; exports.fetchJson = fetchJson; exports.Fetch_exports = Fetch_exports;
|
|
82
|
+
//# sourceMappingURL=chunk-HC7XIT3Z.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-HC7XIT3Z.js","../src/effect/Fetch.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACXA,IAAA,cAAA,EAAA,CAAA,CAAA;AAAA,uCAAA,aAAA,EAAA;AAAA,EAAA,SAAA,EAAA,CAAA,EAAA,GAAA,SAAA;AAAA,EAAA,QAAA,EAAA,CAAA,EAAA,GAAA,QAAA;AAAA,EAAA,MAAA,EAAA,CAAA,EAAA,GAAA,MAAA;AAAA,EAAA,UAAA,EAAA,CAAA,EAAA,GAAA,UAAA;AAAA,EAAA,QAAA,EAAA,CAAA,EAAA,GAAA;AAAA,CAAA,CAAA;AAgBO,SAAS,UAAA,CAAW,KAAA,EAA4B;AACrD,EAAA,OAAO,MAAA,CAAO,KAAK,EAAA,GAAK,KAAA,CAAM,KAAA,IAAS,GAAA;AACzC;AAEO,SAAS,MAAA,CAAO,KAAA,EAAuC;AAC5D,EAAA,OAAO,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,QAAA,CAAS,SAAS,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,KAAK,CAAA,CAAE,QAAA,CAAS,MAAM,CAAA;AACrF;AAEO,SAAS,QAAA,CAAS,KAAA,EAA4B;AACnD,EAAA,OAAO,MAAA,CAAO,KAAK,EAAA,GAAK,KAAA,CAAM,KAAA,EAAO,IAAA,GAAO,KAAA,CAAM,KAAA,EAAO,GAAA;AAC3D;AAEO,SAAS,QAAA,CAAS,KAAA,EAA4B;AACnD,EAAA,OAAO,MAAA,CAAO,KAAK,EAAA,GAAK,KAAA,CAAM,KAAA,EAAO,GAAA;AACvC;AAEO,SAAS,SAAA,CACd,GAAA,EACA,OAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,EACW;AACX,EAAA,OAAO,uCAAA;AAAA,IACL,WAAA;AAAA,IACA,MAAA,CAAA,EAAA,GAAY;AACV,MAAA,IAAI;AACF,QAAA,MAAM,OAAA,EAAS,MAAM,KAAA,CAAM,GAAA,EAAK;AAAA,UAC9B,MAAA;AAAA,UACA;AAAA,QACF,CAAC,CAAA;AACD,QAAA,GAAA,CAAI,MAAA,CAAO,OAAA,EAAS,IAAA,GAAO,MAAA,CAAO,OAAA,EAAS,GAAA,EAAK;AAC9C,UAAA,MAAM,QAAA,EAAU,MAAM,MAAA,CAAO,IAAA,CAAK,CAAA;AAElC,UAAA,GAAA,CAAI,KAAA,CAAM,OAAO,CAAA,EAAG;AAClB,YAAA,OAAO,QAAA,CAAS,iCAAA,OAAU,CAAC,CAAA;AAAA,UAC7B,EAAA,KAAO;AACL,YAAA,OAAO,QAAA;AAAA,cACL,kCAAA;AAAI,gBACF,OAAA,EAAS;AAAA,cACX,CAAC;AAAA,YACH,CAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,OAAO,QAAA;AAAA,UACL,kCAAA;AAAI,YACF,IAAA,EAAM,MAAA,CAAO,MAAA;AAAA,YACb,OAAA,EAAS,MAAM,MAAA,CAAO,IAAA,CAAK;AAAA,UAC7B,CAAC;AAAA,QACH,CAAA;AAAA,MAEF,EAAA,MAAA,CAAS,CAAA,EAAY;AACnB,QAAA,OAAO,QAAA;AAAA,UACL,kCAAA;AAAI,YACF,OAAA,EAAS;AAAA,UACX,CAAC;AAAA,QACH,CAAA;AAAA,MACF;AAAA,IACF,CAAA;AAAA,IACA;AAAA,MACE;AAAA,IACF;AAAA,EACF,CAAA;AACF;ADRA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACF,yLAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-HC7XIT3Z.js","sourcesContent":[null,"import type { Guard } from '../guard/Guard'\nimport { err, ok } from '../result/Result'\nimport type { Message } from '../runtime/Runtime'\nimport { withName, type Effect, type ReceiveEffectResult } from './Effect'\n\ntype HttpError = {\n code: number\n message: string\n}\n\ntype MalformedPayloadError = {\n message: string\n}\n\ntype FetchError = HttpError | MalformedPayloadError\n\nexport function isNotFound(error: FetchError): boolean {\n return isHttp(error) && error.code === 404\n}\n\nexport function isHttp(error: FetchError): error is HttpError {\n return Object.keys(error).includes('message') && Object.keys(error).includes('code')\n}\n\nexport function isClient(error: FetchError): boolean {\n return isHttp(error) && error.code > 399 && error.code < 500\n}\n\nexport function isServer(error: FetchError): boolean {\n return isHttp(error) && error.code > 499\n}\n\nexport function fetchJson<T, M extends Message>(\n url: string,\n headers: [string, string][],\n method: string,\n guard: Guard<T>,\n receiver: ReceiveEffectResult<T, FetchError, M>,\n): Effect<M> {\n return withName(\n 'fetchJson',\n async () => {\n try {\n const result = await fetch(url, {\n method,\n headers,\n })\n if (result.status > 199 && result.status < 300) {\n const payload = await result.json()\n\n if (guard(payload)) {\n return receiver(ok(payload))\n } else {\n return receiver(\n err({\n message: 'Malformed Payload. Your Guard does not pass.',\n }),\n )\n }\n }\n\n return receiver(\n err({\n code: result.status,\n message: await result.text(),\n }),\n )\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e: unknown) {\n return receiver(\n err({\n message: 'Malformed Payload. Invalid JSON.',\n }),\n )\n }\n },\n {\n url,\n },\n )\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});var __defProp = Object.defineProperty;
|
|
2
|
+
var __export = (target, all) => {
|
|
3
|
+
for (var name in all)
|
|
4
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
5
|
+
};
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.__export = __export;
|
|
10
|
+
//# sourceMappingURL=chunk-PZ5AY32C.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-PZ5AY32C.js"],"names":[],"mappings":"AAAA,6EAAI,UAAU,EAAE,MAAM,CAAC,cAAc;AACrC,IAAI,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG;AAChC,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG;AACtB,IAAI,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;AACjE,CAAC;AACD;AACA;AACE;AACF,4BAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-PZ5AY32C.js"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkCRFP5NKQjs = require('./chunk-CRFP5NKQ.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkPZ5AY32Cjs = require('./chunk-PZ5AY32C.js');
|
|
7
|
+
|
|
8
|
+
// src/effect/None.ts
|
|
9
|
+
var None_exports = {};
|
|
10
|
+
_chunkPZ5AY32Cjs.__export.call(void 0, None_exports, {
|
|
11
|
+
none: () => none
|
|
12
|
+
});
|
|
13
|
+
function none() {
|
|
14
|
+
return _chunkCRFP5NKQjs.withName.call(void 0, "none", () => {
|
|
15
|
+
return null;
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
exports.none = none; exports.None_exports = None_exports;
|
|
23
|
+
//# sourceMappingURL=chunk-TTN3VURH.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-TTN3VURH.js","../src/effect/None.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACA;ACPA,IAAA,aAAA,EAAA,CAAA,CAAA;AAAA,uCAAA,YAAA,EAAA;AAAA,EAAA,IAAA,EAAA,CAAA,EAAA,GAAA;AAAA,CAAA,CAAA;AAGO,SAAS,IAAA,CAAA,EAAoB;AAClC,EAAA,OAAO,uCAAA,MAAS,EAAQ,CAAA,EAAA,GAAM;AAC5B,IAAA,OAAO,IAAA;AAAA,EACT,CAAC,CAAA;AACH;ADUA;AACA;AACE;AACA;AACF,yDAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-TTN3VURH.js","sourcesContent":[null,"import { withName, type Effect } from './Effect'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function none(): Effect<any> {\n return withName('none', () => {\n return null\n })\n}\n"]}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});// src/result/Result.ts
|
|
2
|
+
function isOk(result) {
|
|
3
|
+
return result.type === "ok-result";
|
|
4
|
+
}
|
|
5
|
+
function isErr(result) {
|
|
6
|
+
return result.type === "error-result";
|
|
7
|
+
}
|
|
8
|
+
function ok(value) {
|
|
9
|
+
return {
|
|
10
|
+
type: "ok-result",
|
|
11
|
+
value
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
function err(error) {
|
|
15
|
+
return {
|
|
16
|
+
type: "error-result",
|
|
17
|
+
error
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function map(result, func) {
|
|
21
|
+
if (isOk(result)) {
|
|
22
|
+
return ok(func(result.value));
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
function mapErr(result, func) {
|
|
27
|
+
if (isErr(result)) {
|
|
28
|
+
return err(func(result.error));
|
|
29
|
+
}
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
function withDefault(result, defaultValue) {
|
|
33
|
+
if (isErr(result)) {
|
|
34
|
+
return defaultValue;
|
|
35
|
+
}
|
|
36
|
+
return result.value;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
exports.isOk = isOk; exports.isErr = isErr; exports.ok = ok; exports.err = err; exports.map = map; exports.mapErr = mapErr; exports.withDefault = withDefault;
|
|
48
|
+
//# sourceMappingURL=chunk-UICXER2N.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-UICXER2N.js","../src/result/Result.ts"],"names":[],"mappings":"AAAA;ACUO,SAAS,IAAA,CAAW,MAAA,EAAuC;AAChE,EAAA,OAAO,MAAA,CAAO,KAAA,IAAS,WAAA;AACzB;AAEO,SAAS,KAAA,CAAY,MAAA,EAAwC;AAClE,EAAA,OAAO,MAAA,CAAO,KAAA,IAAS,cAAA;AACzB;AAEO,SAAS,EAAA,CAAM,KAAA,EAAiB;AACrC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,WAAA;AAAA,IACN;AAAA,EACF,CAAA;AACF;AAEO,SAAS,GAAA,CAAO,KAAA,EAAkB;AACvC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,cAAA;AAAA,IACN;AAAA,EACF,CAAA;AACF;AAIO,SAAS,GAAA,CAAa,MAAA,EAAsB,IAAA,EAAqC;AACtF,EAAA,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,EAAG;AAChB,IAAA,OAAO,EAAA,CAAG,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAC9B;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,MAAA,CAAgB,MAAA,EAAsB,IAAA,EAAqC;AACzF,EAAA,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,EAAG;AACjB,IAAA,OAAO,GAAA,CAAI,IAAA,CAAK,MAAA,CAAO,KAAK,CAAC,CAAA;AAAA,EAC/B;AAEA,EAAA,OAAO,MAAA;AACT;AAEO,SAAS,WAAA,CAAkB,MAAA,EAAsB,YAAA,EAAoB;AAC1E,EAAA,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,EAAG;AACjB,IAAA,OAAO,YAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA,CAAO,KAAA;AAChB;ADnBA;AACA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,8JAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/chunk-UICXER2N.js","sourcesContent":[null,"export type Ok<T> = {\n type: 'ok-result'\n value: T\n}\n\nexport type Err<T> = {\n type: 'error-result'\n error: T\n}\n\nexport function isOk<T, E>(result: Result<T, E>): result is Ok<T> {\n return result.type === 'ok-result'\n}\n\nexport function isErr<T, E>(result: Result<T, E>): result is Err<E> {\n return result.type === 'error-result'\n}\n\nexport function ok<T>(value: T): Ok<T> {\n return {\n type: 'ok-result',\n value,\n }\n}\n\nexport function err<E>(error: E): Err<E> {\n return {\n type: 'error-result',\n error,\n }\n}\n\nexport type Result<T, E> = Ok<T> | Err<E>\n\nexport function map<T, E, R>(result: Result<T, E>, func: (value: T) => R): Result<R, E> {\n if (isOk(result)) {\n return ok(func(result.value))\n }\n\n return result\n}\n\nexport function mapErr<T, E, R>(result: Result<T, E>, func: (value: E) => R): Result<T, R> {\n if (isErr(result)) {\n return err(func(result.error))\n }\n\n return result\n}\n\nexport function withDefault<T, E>(result: Result<T, E>, defaultValue: T): T {\n if (isErr(result)) {\n return defaultValue\n }\n\n return result.value\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/effect/Effect.js"],"names":[],"mappings":"AAAA;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,6CAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/effect/Effect.js"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
var _chunkHC7XIT3Zjs = require('../chunk-HC7XIT3Z.js');
|
|
8
|
+
require('../chunk-CRFP5NKQ.js');
|
|
9
|
+
require('../chunk-UICXER2N.js');
|
|
10
|
+
require('../chunk-PZ5AY32C.js');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
exports.fetchJson = _chunkHC7XIT3Zjs.fetchJson; exports.isClient = _chunkHC7XIT3Zjs.isClient; exports.isHttp = _chunkHC7XIT3Zjs.isHttp; exports.isNotFound = _chunkHC7XIT3Zjs.isNotFound; exports.isServer = _chunkHC7XIT3Zjs.isServer;
|
|
18
|
+
//# sourceMappingURL=Fetch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/effect/Fetch.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACF,uOAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/effect/Fetch.js"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkTTN3VURHjs = require('../chunk-TTN3VURH.js');
|
|
4
|
+
require('../chunk-CRFP5NKQ.js');
|
|
5
|
+
require('../chunk-PZ5AY32C.js');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
exports.none = _chunkTTN3VURHjs.none;
|
|
9
|
+
//# sourceMappingURL=None.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/effect/None.js"],"names":[],"mappings":"AAAA;AACE;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACF,qCAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/effect/None.js"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=Guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/guard/Guard.js"],"names":[],"mappings":"AAAA","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/guard/Guard.js"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { E as Effect } from './Effect-D-qvMy9v.js';
|
|
2
|
+
import { F as Fetch } from './Fetch-zaXtHpL6.js';
|
|
3
|
+
import { N as None } from './None-g_xS4PsO.js';
|
|
4
|
+
import './result/Result.js';
|
|
5
|
+
import './guard/Guard.js';
|
|
6
|
+
|
|
7
|
+
declare const _default: {
|
|
8
|
+
Effect: typeof Effect;
|
|
9
|
+
Fetch: typeof Fetch;
|
|
10
|
+
None: typeof None;
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export { _default as default };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkHC7XIT3Zjs = require('./chunk-HC7XIT3Z.js');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
var _chunkTTN3VURHjs = require('./chunk-TTN3VURH.js');
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkCRFP5NKQjs = require('./chunk-CRFP5NKQ.js');
|
|
10
|
+
require('./chunk-UICXER2N.js');
|
|
11
|
+
require('./chunk-PZ5AY32C.js');
|
|
12
|
+
|
|
13
|
+
// src/index.ts
|
|
14
|
+
var index_default = {
|
|
15
|
+
Effect: _chunkCRFP5NKQjs.Effect_exports,
|
|
16
|
+
Fetch: _chunkHC7XIT3Zjs.Fetch_exports,
|
|
17
|
+
None: _chunkTTN3VURHjs.None_exports
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
exports.default = index_default;
|
|
22
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/index.js","../src/index.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACRA,IAAO,cAAA,EAAQ;AAAA,EACX,MAAA,EAAA,+BAAA;AAAA,EACA,KAAA,EAAA,8BAAA;AAAA,EACA,IAAA,EAAA;AACJ,CAAA;ADUA;AACE;AACF,gCAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/index.js","sourcesContent":[null,"import * as Effect from \"./effect/Effect\"\nimport * as Fetch from \"./effect/Fetch\"\nimport * as None from \"./effect/None\"\n\nexport default {\n Effect,\n Fetch,\n None\n}"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type Just<T> = {
|
|
2
|
+
type: 'maybe-just';
|
|
3
|
+
value: T;
|
|
4
|
+
};
|
|
5
|
+
type Nothing = {
|
|
6
|
+
type: 'maybe-nothing';
|
|
7
|
+
};
|
|
8
|
+
type Maybe<T> = Just<T> | Nothing;
|
|
9
|
+
declare function nothing(): Nothing;
|
|
10
|
+
declare function just<T>(value: T): Just<T>;
|
|
11
|
+
declare function isNothing<T>(maybe: Maybe<T>): maybe is Nothing;
|
|
12
|
+
declare function isJust<T>(maybe: Maybe<T>): maybe is Just<T>;
|
|
13
|
+
declare function isMaybe<T>(value: unknown): value is Maybe<T>;
|
|
14
|
+
declare function map<T, R>(maybe: Maybe<T>, func: (value: T) => R): Maybe<R>;
|
|
15
|
+
declare function filter<T>(maybe: Maybe<T>, func: (value: T) => boolean): Maybe<T>;
|
|
16
|
+
declare function withDefault<T>(maybe: Maybe<T>, defaultValue: T): T;
|
|
17
|
+
|
|
18
|
+
export { type Just, type Maybe, type Nothing, filter, isJust, isMaybe, isNothing, just, map, nothing, withDefault };
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-PZ5AY32C.js');
|
|
2
|
+
|
|
3
|
+
// src/maybe/Maybe.ts
|
|
4
|
+
function nothing() {
|
|
5
|
+
return {
|
|
6
|
+
type: "maybe-nothing"
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
function just(value) {
|
|
10
|
+
return {
|
|
11
|
+
type: "maybe-just",
|
|
12
|
+
value
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function isNothing(maybe) {
|
|
16
|
+
return maybe.type === "maybe-nothing";
|
|
17
|
+
}
|
|
18
|
+
function isJust(maybe) {
|
|
19
|
+
return maybe.type === "maybe-just";
|
|
20
|
+
}
|
|
21
|
+
function isMaybe(value) {
|
|
22
|
+
return value.type === "maybe-just" || value.type === "maybe-nothing";
|
|
23
|
+
}
|
|
24
|
+
function map(maybe, func) {
|
|
25
|
+
if (isJust(maybe)) {
|
|
26
|
+
return just(func(maybe.value));
|
|
27
|
+
}
|
|
28
|
+
return maybe;
|
|
29
|
+
}
|
|
30
|
+
function filter(maybe, func) {
|
|
31
|
+
if (isJust(maybe) && func(maybe.value)) {
|
|
32
|
+
return maybe;
|
|
33
|
+
}
|
|
34
|
+
return nothing();
|
|
35
|
+
}
|
|
36
|
+
function withDefault(maybe, defaultValue) {
|
|
37
|
+
if (isJust(maybe)) {
|
|
38
|
+
return maybe.value;
|
|
39
|
+
}
|
|
40
|
+
return defaultValue;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
exports.filter = filter; exports.isJust = isJust; exports.isMaybe = isMaybe; exports.isNothing = isNothing; exports.just = just; exports.map = map; exports.nothing = nothing; exports.withDefault = withDefault;
|
|
52
|
+
//# sourceMappingURL=Maybe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/maybe/Maybe.js","../../src/maybe/Maybe.ts"],"names":[],"mappings":"AAAA,yGAA6B;AAC7B;AACA;ACSO,SAAS,OAAA,CAAA,EAAmB;AACjC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM;AAAA,EACR,CAAA;AACF;AAEO,SAAS,IAAA,CAAQ,KAAA,EAAmB;AACzC,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,YAAA;AAAA,IACN;AAAA,EACF,CAAA;AACF;AAEO,SAAS,SAAA,CAAa,KAAA,EAAmC;AAC9D,EAAA,OAAO,KAAA,CAAM,KAAA,IAAS,eAAA;AACxB;AAEO,SAAS,MAAA,CAAU,KAAA,EAAmC;AAC3D,EAAA,OAAO,KAAA,CAAM,KAAA,IAAS,YAAA;AACxB;AAEO,SAAS,OAAA,CAAW,KAAA,EAAmC;AAE5D,EAAA,OAAO,KAAA,CAAM,KAAA,IAAS,aAAA,GAAgB,KAAA,CAAM,KAAA,IAAS,eAAA;AACvD;AAEO,SAAS,GAAA,CAAU,KAAA,EAAiB,IAAA,EAAiC;AAC1E,EAAA,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AACjB,IAAA,OAAO,IAAA,CAAK,IAAA,CAAK,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,EAC/B;AAEA,EAAA,OAAO,KAAA;AACT;AAEO,SAAS,MAAA,CAAU,KAAA,EAAiB,IAAA,EAAuC;AAChF,EAAA,GAAA,CAAI,MAAA,CAAO,KAAK,EAAA,GAAK,IAAA,CAAK,KAAA,CAAM,KAAK,CAAA,EAAG;AACtC,IAAA,OAAO,KAAA;AAAA,EACT;AAEA,EAAA,OAAO,OAAA,CAAQ,CAAA;AACjB;AAEO,SAAS,WAAA,CAAe,KAAA,EAAiB,YAAA,EAAoB;AAClE,EAAA,GAAA,CAAI,MAAA,CAAO,KAAK,CAAA,EAAG;AACjB,IAAA,OAAO,KAAA,CAAM,KAAA;AAAA,EACf;AAEA,EAAA,OAAO,YAAA;AACT;ADlBA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACF,iNAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/maybe/Maybe.js","sourcesContent":[null,"export type Just<T> = {\n type: 'maybe-just'\n value: T\n}\n\nexport type Nothing = {\n type: 'maybe-nothing'\n}\n\nexport type Maybe<T> = Just<T> | Nothing\n\nexport function nothing(): Nothing {\n return {\n type: 'maybe-nothing',\n }\n}\n\nexport function just<T>(value: T): Just<T> {\n return {\n type: 'maybe-just',\n value,\n }\n}\n\nexport function isNothing<T>(maybe: Maybe<T>): maybe is Nothing {\n return maybe.type === 'maybe-nothing'\n}\n\nexport function isJust<T>(maybe: Maybe<T>): maybe is Just<T> {\n return maybe.type === 'maybe-just'\n}\n\nexport function isMaybe<T>(value: unknown): value is Maybe<T> {\n //@ts-expect-error is validated\n return value.type === 'maybe-just' || value.type === 'maybe-nothing'\n}\n\nexport function map<T, R>(maybe: Maybe<T>, func: (value: T) => R): Maybe<R> {\n if (isJust(maybe)) {\n return just(func(maybe.value))\n }\n\n return maybe\n}\n\nexport function filter<T>(maybe: Maybe<T>, func: (value: T) => boolean): Maybe<T> {\n if (isJust(maybe) && func(maybe.value)) {\n return maybe\n }\n\n return nothing()\n}\n\nexport function withDefault<T>(maybe: Maybe<T>, defaultValue: T): T {\n if (isJust(maybe)) {\n return maybe.value\n }\n\n return defaultValue\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkUICXER2Njs = require('../chunk-UICXER2N.js');
|
|
5
|
+
require('../chunk-PZ5AY32C.js');
|
|
6
|
+
|
|
7
|
+
// src/parse/Number.ts
|
|
8
|
+
function asInt(value) {
|
|
9
|
+
const parsed = parseInt(value, 10);
|
|
10
|
+
if (Number.isNaN(parsed)) {
|
|
11
|
+
return _chunkUICXER2Njs.err.call(void 0, "Number is NaN");
|
|
12
|
+
}
|
|
13
|
+
return _chunkUICXER2Njs.ok.call(void 0, parsed);
|
|
14
|
+
}
|
|
15
|
+
function asFloat(value) {
|
|
16
|
+
const parsed = parseFloat(value);
|
|
17
|
+
if (Number.isNaN(parsed)) {
|
|
18
|
+
return _chunkUICXER2Njs.err.call(void 0, "Number is NaN");
|
|
19
|
+
}
|
|
20
|
+
return _chunkUICXER2Njs.ok.call(void 0, parsed);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
exports.asFloat = asFloat; exports.asInt = asInt;
|
|
26
|
+
//# sourceMappingURL=Number.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/parse/Number.js","../../src/parse/Number.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACA;ACJO,SAAS,KAAA,CAAM,KAAA,EAAuC;AAC3D,EAAA,MAAM,OAAA,EAAS,QAAA,CAAS,KAAA,EAAO,EAAE,CAAA;AAEjC,EAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACxB,IAAA,OAAO,kCAAA,eAAmB,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,iCAAA,MAAS,CAAA;AAClB;AAEO,SAAS,OAAA,CAAQ,KAAA,EAAuC;AAC7D,EAAA,MAAM,OAAA,EAAS,UAAA,CAAW,KAAK,CAAA;AAE/B,EAAA,GAAA,CAAI,MAAA,CAAO,KAAA,CAAM,MAAM,CAAA,EAAG;AACxB,IAAA,OAAO,kCAAA,eAAmB,CAAA;AAAA,EAC5B;AAEA,EAAA,OAAO,iCAAA,MAAS,CAAA;AAClB;ADCA;AACE;AACA;AACF,iDAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/parse/Number.js","sourcesContent":[null,"import { err, ok, type Result } from '../result/Result'\n\nexport function asInt(value: string): Result<number, string> {\n const parsed = parseInt(value, 10)\n\n if (Number.isNaN(parsed)) {\n return err('Number is NaN')\n }\n\n return ok(parsed)\n}\n\nexport function asFloat(value: string): Result<number, string> {\n const parsed = parseFloat(value)\n\n if (Number.isNaN(parsed)) {\n return err('Number is NaN')\n }\n\n return ok(parsed)\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
type Ok<T> = {
|
|
2
|
+
type: 'ok-result';
|
|
3
|
+
value: T;
|
|
4
|
+
};
|
|
5
|
+
type Err<T> = {
|
|
6
|
+
type: 'error-result';
|
|
7
|
+
error: T;
|
|
8
|
+
};
|
|
9
|
+
declare function isOk<T, E>(result: Result<T, E>): result is Ok<T>;
|
|
10
|
+
declare function isErr<T, E>(result: Result<T, E>): result is Err<E>;
|
|
11
|
+
declare function ok<T>(value: T): Ok<T>;
|
|
12
|
+
declare function err<E>(error: E): Err<E>;
|
|
13
|
+
type Result<T, E> = Ok<T> | Err<E>;
|
|
14
|
+
declare function map<T, E, R>(result: Result<T, E>, func: (value: T) => R): Result<R, E>;
|
|
15
|
+
declare function mapErr<T, E, R>(result: Result<T, E>, func: (value: E) => R): Result<T, R>;
|
|
16
|
+
declare function withDefault<T, E>(result: Result<T, E>, defaultValue: T): T;
|
|
17
|
+
|
|
18
|
+
export { type Err, type Ok, type Result, err, isErr, isOk, map, mapErr, ok, withDefault };
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
var _chunkUICXER2Njs = require('../chunk-UICXER2N.js');
|
|
10
|
+
require('../chunk-PZ5AY32C.js');
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
exports.err = _chunkUICXER2Njs.err; exports.isErr = _chunkUICXER2Njs.isErr; exports.isOk = _chunkUICXER2Njs.isOk; exports.map = _chunkUICXER2Njs.map; exports.mapErr = _chunkUICXER2Njs.mapErr; exports.ok = _chunkUICXER2Njs.ok; exports.withDefault = _chunkUICXER2Njs.withDefault;
|
|
20
|
+
//# sourceMappingURL=Result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/result/Result.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,uDAA6B;AAC7B,gCAA6B;AAC7B;AACE;AACA;AACA;AACA;AACA;AACA;AACA;AACF,qRAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/result/Result.js"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});require('../chunk-PZ5AY32C.js');
|
|
2
|
+
|
|
3
|
+
// src/runtime/Runtime.ts
|
|
4
|
+
function is(name, message) {
|
|
5
|
+
return message.name === name;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports.is = is;
|
|
10
|
+
//# sourceMappingURL=Runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/Runtime.js","../../src/runtime/Runtime.ts"],"names":[],"mappings":"AAAA,yGAA6B;AAC7B;AACA;ACwBO,SAAS,EAAA,CACd,IAAA,EACA,OAAA,EAC0B;AAC1B,EAAA,OAAO,OAAA,CAAQ,KAAA,IAAS,IAAA;AAC1B;ADzBA;AACE;AACF,gBAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/Runtime.js","sourcesContent":[null,"import type { Effect } from '../effect/Effect'\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type Message<N extends string = string, T = any> = {\n value: T\n name: N\n}\n\nexport type Update<Model, CustomMessage extends Message> = (\n model: Model,\n msg: CustomMessage,\n) => [Model, Effect<CustomMessage>]\n\nexport type Init<Model, CustomMessage extends Message> = () => [Model, Effect<CustomMessage>]\n\nexport type Change<CustomMessage extends Message, Model> = [\n CustomMessage | null,\n model: Model,\n effect: {\n name: string\n meta: object | null\n } | null,\n]\n\nexport type Changes<CustomMessage extends Message, Model> = Change<CustomMessage, Model>[]\n\nexport function is<CustomMessage extends Message<A>, A extends string>(\n name: A,\n message: Message,\n): message is CustomMessage {\n return message.name === name\n}"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { M as Message } from '../../Effect-D-qvMy9v.js';
|
|
2
|
+
import { Persistence } from './Persistence.js';
|
|
3
|
+
import '../../result/Result.js';
|
|
4
|
+
import '../../guard/Guard.js';
|
|
5
|
+
|
|
6
|
+
declare const localStoragePersistence: <Model, CustomMessage extends Message>(name: string) => Persistence<Model, CustomMessage>;
|
|
7
|
+
|
|
8
|
+
export { localStoragePersistence };
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
var _chunkUICXER2Njs = require('../../chunk-UICXER2N.js');
|
|
5
|
+
require('../../chunk-PZ5AY32C.js');
|
|
6
|
+
|
|
7
|
+
// src/runtime/persistence/LocalStorage.ts
|
|
8
|
+
var localStoragePersistence = (name) => ({
|
|
9
|
+
persist(model) {
|
|
10
|
+
window.localStorage.setItem(name, btoa(JSON.stringify(model)));
|
|
11
|
+
},
|
|
12
|
+
read(guard, init) {
|
|
13
|
+
const record = window.localStorage.getItem(name);
|
|
14
|
+
if (record === null) {
|
|
15
|
+
return _chunkUICXER2Njs.ok.call(void 0, init()[0]);
|
|
16
|
+
}
|
|
17
|
+
try {
|
|
18
|
+
const json = atob(record);
|
|
19
|
+
const model = JSON.parse(json);
|
|
20
|
+
if (guard(model)) {
|
|
21
|
+
return _chunkUICXER2Njs.ok.call(void 0, model);
|
|
22
|
+
}
|
|
23
|
+
} catch (e) {
|
|
24
|
+
return _chunkUICXER2Njs.err.call(void 0, "Could not decode stored model");
|
|
25
|
+
}
|
|
26
|
+
return _chunkUICXER2Njs.err.call(void 0, "Your guard did not match the retrieved model");
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
exports.localStoragePersistence = localStoragePersistence;
|
|
32
|
+
//# sourceMappingURL=LocalStorage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/persistence/LocalStorage.js","../../../src/runtime/persistence/LocalStorage.ts"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,0DAAgC;AAChC,mCAAgC;AAChC;AACA;ACDO,IAAM,wBAAA,EAA0B,CACrC,IAAA,EAAA,GAAA,CACuC;AAAA,EACvC,OAAA,CAAQ,KAAA,EAAc;AACpB,IAAA,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,IAAA,EAAM,IAAA,CAAK,IAAA,CAAK,SAAA,CAAU,KAAK,CAAC,CAAC,CAAA;AAAA,EAC/D,CAAA;AAAA,EACA,IAAA,CAAK,KAAA,EAAqB,IAAA,EAAyD;AACjF,IAAA,MAAM,OAAA,EAAS,MAAA,CAAO,YAAA,CAAa,OAAA,CAAQ,IAAI,CAAA;AAC/C,IAAA,GAAA,CAAI,OAAA,IAAW,IAAA,EAAM;AACnB,MAAA,OAAO,iCAAA,IAAG,CAAK,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,IACrB;AAEA,IAAA,IAAI;AACF,MAAA,MAAM,KAAA,EAAO,IAAA,CAAK,MAAM,CAAA;AACxB,MAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAE7B,MAAA,GAAA,CAAI,KAAA,CAAM,KAAK,CAAA,EAAG;AAChB,QAAA,OAAO,iCAAA,KAAQ,CAAA;AAAA,MACjB;AAAA,IAEF,EAAA,MAAA,CAAS,CAAA,EAAG;AACV,MAAA,OAAO,kCAAA,+BAAmC,CAAA;AAAA,IAC5C;AAEA,IAAA,OAAO,kCAAA,8CAAkD,CAAA;AAAA,EAC3D;AACF,CAAA,CAAA;ADHA;AACE;AACF,0DAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/persistence/LocalStorage.js","sourcesContent":[null,"import type { Guard } from '../../guard/Guard'\nimport { err, ok, type Result } from '../../result/Result'\nimport type { Init, Message } from '../Runtime'\nimport type { Persistence } from './Persistence'\n\nexport const localStoragePersistence = <Model, CustomMessage extends Message>(\n name: string,\n): Persistence<Model, CustomMessage> => ({\n persist(model: Model) {\n window.localStorage.setItem(name, btoa(JSON.stringify(model)))\n },\n read(guard: Guard<Model>, init: Init<Model, CustomMessage>): Result<Model, string> {\n const record = window.localStorage.getItem(name)\n if (record === null) {\n return ok(init()[0])\n }\n\n try {\n const json = atob(record)\n const model = JSON.parse(json)\n\n if (guard(model)) {\n return ok(model)\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (e) {\n return err('Could not decode stored model')\n }\n\n return err('Your guard did not match the retrieved model')\n },\n})\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { M as Message } from '../../Effect-D-qvMy9v.js';
|
|
2
|
+
import { Persistence } from './Persistence.js';
|
|
3
|
+
import '../../result/Result.js';
|
|
4
|
+
import '../../guard/Guard.js';
|
|
5
|
+
|
|
6
|
+
declare const noPersistence: <Model, CustomMessage extends Message>() => Persistence<Model, CustomMessage>;
|
|
7
|
+
|
|
8
|
+
export { noPersistence };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
|
+
|
|
3
|
+
var _chunkUICXER2Njs = require('../../chunk-UICXER2N.js');
|
|
4
|
+
require('../../chunk-PZ5AY32C.js');
|
|
5
|
+
|
|
6
|
+
// src/runtime/persistence/None.ts
|
|
7
|
+
var noPersistence = () => ({
|
|
8
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
9
|
+
persist(model) {
|
|
10
|
+
},
|
|
11
|
+
read(guard, init) {
|
|
12
|
+
return _chunkUICXER2Njs.ok.call(void 0, init()[0]);
|
|
13
|
+
}
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
exports.noPersistence = noPersistence;
|
|
18
|
+
//# sourceMappingURL=None.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/persistence/None.js","../../../src/runtime/persistence/None.ts"],"names":[],"mappings":"AAAA;AACE;AACF,0DAAgC;AAChC,mCAAgC;AAChC;AACA;ACAO,IAAM,cAAA,EAAgB,CAAA,EAAA,GAAA,CAGvB;AAAA;AAAA,EAEJ,OAAA,CAAQ,KAAA,EAAc;AAAA,EAAE,CAAA;AAAA,EACxB,IAAA,CAAK,KAAA,EAAqB,IAAA,EAAyD;AACjF,IAAA,OAAO,iCAAA,IAAG,CAAK,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,EACrB;AACF,CAAA,CAAA;ADAA;AACE;AACF,sCAAC","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/persistence/None.js","sourcesContent":[null,"import type { Guard } from '../../guard/Guard'\nimport { ok, type Result } from '../../result/Result'\nimport type { Init, Message } from '../Runtime'\nimport type { Persistence } from './Persistence'\n\nexport const noPersistence = <Model, CustomMessage extends Message>(): Persistence<\n Model,\n CustomMessage\n> => ({\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n persist(model: Model) { },\n read(guard: Guard<Model>, init: Init<Model, CustomMessage>): Result<Model, string> {\n return ok(init()[0])\n },\n})\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Guard } from '../../guard/Guard.js';
|
|
2
|
+
import { Result } from '../../result/Result.js';
|
|
3
|
+
import { M as Message, I as Init } from '../../Effect-D-qvMy9v.js';
|
|
4
|
+
|
|
5
|
+
type Persistence<Model, CustomMessage extends Message> = {
|
|
6
|
+
persist(model: Model): void;
|
|
7
|
+
read(guard: Guard<Model>, init: Init<Model, CustomMessage>): Result<Model, string>;
|
|
8
|
+
};
|
|
9
|
+
|
|
10
|
+
export type { Persistence };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";//# sourceMappingURL=Persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/persistence/Persistence.js"],"names":[],"mappings":"AAAA","file":"/home/kaumlaut/code/pure-vue-poc/pure/dist/runtime/persistence/Persistence.js"}
|
package/package.json
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@kaumlaut/pure",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Types and functions for state management inspired by Elm and functional programming",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsup --dts",
|
|
12
|
+
"test": "vitest"
|
|
13
|
+
},
|
|
14
|
+
"author": "Max Kaemmerer",
|
|
15
|
+
"license": "MIT",
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"tsup": "^8.4.0",
|
|
18
|
+
"typescript": "^5.8.2",
|
|
19
|
+
"vitest": "^3.0.8"
|
|
20
|
+
}
|
|
21
|
+
}
|