@kaumlaut/pure 0.1.10 → 0.1.12

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 ADDED
@@ -0,0 +1,7 @@
1
+ # @kaumlaut/pure
2
+
3
+ Types and functions for a state runtime inspired by Elm and functional programming
4
+
5
+ ## Maybe
6
+
7
+ A Simple implementation of the Maybe type and associated functions.
@@ -0,0 +1,5 @@
1
+ export type Cloneable = string | number | boolean | null | Cloneable[] | {
2
+ [key: string]: Cloneable;
3
+ };
4
+ export declare function clone(value: Cloneable): Cloneable;
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/clone/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACf,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnC,wBAAgB,KAAK,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAiBjD"}
@@ -0,0 +1,15 @@
1
+ export function clone(value) {
2
+ if (value === null || typeof value !== "object") {
3
+ return value;
4
+ }
5
+ if (Array.isArray(value)) {
6
+ return value.map(item => clone(item));
7
+ }
8
+ const clonedObj = {};
9
+ for (const key in value) {
10
+ if (Object.prototype.hasOwnProperty.call(value, key)) {
11
+ clonedObj[key] = clone(value[key]);
12
+ }
13
+ }
14
+ return clonedObj;
15
+ }
@@ -1,7 +1,24 @@
1
+ /**
2
+ * @example
3
+ * ```ts
4
+ * if (isJust(maybe)) {
5
+ * // the isJust guard tells typescript that maybe has a value of type number
6
+ * console.log("Something here: " + maybe.value)
7
+ * }
8
+ * ```
9
+ */
1
10
  export type Just<T> = {
2
11
  type: 'maybe-just';
3
12
  value: T;
4
13
  };
14
+ /**
15
+ * @public
16
+ * @example
17
+ if (isNothing(maybe)) {
18
+ // no value property exists on maybe
19
+ console.log("Nothing here")
20
+ }
21
+ */
5
22
  export type Nothing = {
6
23
  type: 'maybe-nothing';
7
24
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/maybe/index.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IACpB,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AAED,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;AAExC,wBAAgB,OAAO,IAAI,OAAO,CAIjC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAKzC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,CAE9D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAE3D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAG5D;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAM1E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAMhF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAMlE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/maybe/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,IAAI,CAAC,CAAC,IAAI;IACpB,IAAI,EAAE,YAAY,CAAA;IAClB,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,GAAG,OAAO,CAAA;AAExC,wBAAgB,OAAO,IAAI,OAAO,CAIjC;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAKzC;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,CAE9D;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAE3D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,CAG5D;AAED,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAM1E;AAED,wBAAgB,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAMhF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,GAAG,CAAC,CAMlE"}
@@ -1,4 +1,4 @@
1
- import { type Result } from '../result';
1
+ import { type Result } from '@kaumlaut/pure/result';
2
2
  export declare function asInt(value: string): Result<number, string>;
3
3
  export declare function asFloat(value: string): Result<number, string>;
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,WAAW,CAAA;AAEhD,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ3D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ7D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/parse/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAE5D,wBAAgB,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ3D;AAED,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAQ7D"}
@@ -1,4 +1,4 @@
1
- import { err, ok } from '../result';
1
+ import { err, ok } from '@kaumlaut/pure/result';
2
2
  export function asInt(value) {
3
3
  const parsed = parseInt(value, 10);
4
4
  if (Number.isNaN(parsed)) {
@@ -1,6 +1,6 @@
1
- import { Message } from '../../index';
2
- import { Guard } from '../../../guard';
3
- import { Effect, ReceiveEffectResult } from '../index';
1
+ import { Guard } from "@kaumlaut/pure/guard";
2
+ import { ReceiveEffectResult, Effect } from "@kaumlaut/pure/runtime/effect";
3
+ import { Message } from "@kaumlaut/pure/runtime";
4
4
  type HttpError = {
5
5
  code: number;
6
6
  message: string;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/effect/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AACrC,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAEtC,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAY,MAAM,UAAU,CAAA;AAEhE,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,UAAU,GAAG,SAAS,GAAG,qBAAqB,CAAA;AAEnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAErD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,IAAI,SAAS,CAE5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,EAC5C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,GAC9C,MAAM,CAAC,CAAC,CAAC,CA0CX"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/effect/fetch/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAY,MAAM,+BAA+B,CAAA;AACrF,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,KAAK,SAAS,GAAG;IACf,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,KAAK,UAAU,GAAG,SAAS,GAAG,qBAAqB,CAAA;AAEnD,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAErD;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,IAAI,SAAS,CAE5D;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAEnD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,CAAC,SAAS,OAAO,EAC5C,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EACf,QAAQ,EAAE,mBAAmB,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,GAC9C,MAAM,CAAC,CAAC,CAAC,CA0CX"}
@@ -1,5 +1,5 @@
1
- import { err, ok } from '../../../result';
2
- import { withName } from '../index';
1
+ import { ok, err } from "@kaumlaut/pure/result";
2
+ import { withName } from "@kaumlaut/pure/runtime/effect";
3
3
  export function isNotFound(error) {
4
4
  return isHttp(error) && error.code === 404;
5
5
  }
@@ -1,5 +1,5 @@
1
- import { Message } from '../index';
2
- import { Result } from '../../result';
1
+ import { Result } from "@kaumlaut/pure/result";
2
+ import { Message } from "@kaumlaut/pure/runtime";
3
3
  export type AsyncEffect<T extends Message> = () => Promise<T>;
4
4
  export type SyncEffect<T extends Message> = () => T;
5
5
  export type NullEffect = () => null;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;AAC7D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,IAAI,MAAM,CAAC,CAAA;AACnD,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAA;AACnC,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AACjD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,IACpC,WAAW,CAAC,CAAC,CAAC,GACd,UAAU,CAAC,CAAC,CAAC,GACb,UAAU,GACV,eAAe,CAAA;AACnB,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,IAAI;IACtC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB,CAAA;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,IAAI,GAAE,MAAM,GAAG,IAAW,GACzB,MAAM,CAAC,CAAC,CAAC,CAMX;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/effect/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,OAAO,IAAI,MAAM,OAAO,CAAC,CAAC,CAAC,CAAA;AAC7D,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,IAAI,MAAM,CAAC,CAAA;AACnD,MAAM,MAAM,UAAU,GAAG,MAAM,IAAI,CAAA;AACnC,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;AACjD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,OAAO,IACpC,WAAW,CAAC,CAAC,CAAC,GACd,UAAU,CAAC,CAAC,CAAC,GACb,UAAU,GACV,eAAe,CAAA;AACnB,MAAM,MAAM,MAAM,CAAC,CAAC,SAAS,OAAO,IAAI;IACtC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CACpB,CAAA;AAED,wBAAgB,QAAQ,CAAC,CAAC,SAAS,OAAO,EACxC,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,IAAI,GAAE,MAAM,GAAG,IAAW,GACzB,MAAM,CAAC,CAAC,CAAC,CAMX;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA"}
@@ -1,3 +1,3 @@
1
- import { Effect } from '../index';
1
+ import { Effect } from "@kaumlaut/pure/runtime/effect";
2
2
  export declare function none(): Effect<any>;
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/effect/none/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAY,MAAM,UAAU,CAAA;AAE3C,wBAAgB,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAIlC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/effect/none/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAY,MAAM,+BAA+B,CAAA;AAEhE,wBAAgB,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,CAIlC"}
@@ -1,5 +1,4 @@
1
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
2
- import { withName } from '../index';
1
+ import { withName } from "@kaumlaut/pure/runtime/effect";
3
2
  export function none() {
4
3
  return withName('none', () => {
5
4
  return null;
@@ -1,10 +1,11 @@
1
- import { Effect } from './effect';
1
+ import { Effect } from '@kaumlaut/pure/runtime/effect';
2
+ import { Cloneable } from '../clone';
2
3
  export type Message<N extends string = string, T = any> = {
3
4
  value: T;
4
5
  name: N;
5
6
  };
6
- export type Update<Model, CustomMessage extends Message> = (model: Model, msg: CustomMessage) => [Model, Effect<CustomMessage>];
7
- export type Init<Model, CustomMessage extends Message> = () => [Model, Effect<CustomMessage>];
7
+ 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>];
8
9
  export type Change<CustomMessage extends Message, Model> = [
9
10
  CustomMessage | null,
10
11
  model: Model,
@@ -13,6 +14,6 @@ export type Change<CustomMessage extends Message, Model> = [
13
14
  meta: object | null;
14
15
  } | null
15
16
  ];
16
- export type Changes<CustomMessage extends Message, Model> = Change<CustomMessage, Model>[];
17
+ export type Changes<CustomMessage extends Message, Model extends Cloneable> = Change<CustomMessage, Model>[];
17
18
  export declare function is<CustomMessage extends Message<A>, A extends string>(name: A, message: Message): message is CustomMessage;
18
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAEjC,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,EAAE,aAAa,SAAS,OAAO,IAAI,CACzD,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,aAAa,KACf,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AAEnC,MAAM,MAAM,IAAI,CAAC,KAAK,EAAE,aAAa,SAAS,OAAO,IAAI,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AAE7F,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,IAAI,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,CAAA;AAE1F,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
+ {"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;AAEpC,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,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;AAE/G,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,7 +1,8 @@
1
- import { Init, Message } from '../index';
2
- import { Guard } from '../../guard';
3
- import { Result } from '../../result';
4
- export type Persistence<Model, CustomMessage extends Message> = {
1
+ import { Init, Message } from '@kaumlaut/pure/runtime';
2
+ import { Guard } from '@kaumlaut/pure/guard';
3
+ import { Result } from '@kaumlaut/pure/result';
4
+ import { Cloneable } from '@kaumlaut/pure/clone';
5
+ export type Persistence<Model extends Cloneable, CustomMessage extends Message> = {
5
6
  persist(model: Model): void;
6
7
  read(guard: Guard<Model>, init: Init<Model, CustomMessage>): Result<Model, string>;
7
8
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAErC,MAAM,MAAM,WAAW,CAAC,KAAK,EAAE,aAAa,SAAS,OAAO,IAAI;IAC9D,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;CACnF,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/runtime/persistence/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAEhD,MAAM,MAAM,WAAW,CAAC,KAAK,SAAS,SAAS,EAAE,aAAa,SAAS,OAAO,IAAI;IAChF,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IAC3B,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;CACnF,CAAA"}
@@ -1,4 +1,5 @@
1
- import { Persistence } from '../index';
2
- import { Message } from '../../index';
3
- export declare const localStoragePersistence: <Model, CustomMessage extends Message>(name: string) => Persistence<Model, CustomMessage>;
1
+ import { Persistence } from "@kaumlaut/pure/runtime/persistence";
2
+ import { Message } from "@kaumlaut/pure/runtime";
3
+ import { Cloneable } from "@kaumlaut/pure/clone";
4
+ export declare const localStoragePersistence: <Model extends Cloneable, CustomMessage extends Message>(name: string) => Persistence<Model, CustomMessage>;
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/runtime/persistence/localStorage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAQ,OAAO,EAAE,MAAM,aAAa,CAAA;AAI3C,eAAO,MAAM,uBAAuB,GAAI,KAAK,EAAE,aAAa,SAAS,OAAO,EAC1E,MAAM,MAAM,KACX,WAAW,CAAC,KAAK,EAAE,aAAa,CAwBjC,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;AAGhD,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,4 @@
1
- import { err, ok } from '../../../result';
1
+ import { ok, err } from "@kaumlaut/pure/result";
2
2
  export const localStoragePersistence = (name) => ({
3
3
  persist(model) {
4
4
  window.localStorage.setItem(name, btoa(JSON.stringify(model)));
@@ -1,4 +1,5 @@
1
- import { Message } from '../../index';
2
- import { Persistence } from '../index';
3
- export declare const noPersistence: <Model, CustomMessage extends Message>() => Persistence<Model, CustomMessage>;
1
+ import { Message } from '@kaumlaut/pure/runtime';
2
+ import { Persistence } from '@kaumlaut/pure/runtime/persistence';
3
+ import { Cloneable } from '@kaumlaut/pure/clone';
4
+ export declare const noPersistence: <Model extends Cloneable, CustomMessage extends Message>() => Persistence<Model, CustomMessage>;
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -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,aAAa,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAItC,eAAO,MAAM,aAAa,GAAI,KAAK,EAAE,aAAa,SAAS,OAAO,OAAK,WAAW,CAChF,KAAK,EACL,aAAa,CAOb,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;AAEhD,eAAO,MAAM,aAAa,GAAI,KAAK,SAAS,SAAS,EAAE,aAAa,SAAS,OAAO,OAAK,WAAW,CAClG,KAAK,EACL,aAAa,CAOb,CAAA"}
@@ -1,4 +1,4 @@
1
- import { ok } from '../../../result';
1
+ import { ok } from '@kaumlaut/pure/result';
2
2
  export const noPersistence = () => ({
3
3
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
4
4
  persist(model) { },
package/package.json CHANGED
@@ -1,6 +1,9 @@
1
1
  {
2
2
  "name": "@kaumlaut/pure",
3
- "version": "0.1.10",
3
+ "version": "0.1.12",
4
+ "description": "Types and functions for a state runtime inspired by Elm and functional programming",
5
+ "author": "Max Kaemmerer",
6
+ "license": "MIT",
4
7
  "main": "dist/index.js",
5
8
  "types": "dist/index.d.ts",
6
9
  "module": "dist/index.js",
@@ -12,6 +15,7 @@
12
15
  },
13
16
  "scripts": {
14
17
  "build": "tsc",
18
+ "docs": "typedoc",
15
19
  "test": "vitest",
16
20
  "release": "npm run build && npm publish --access public"
17
21
  },
@@ -20,6 +24,8 @@
20
24
  ],
21
25
  "type": "module",
22
26
  "devDependencies": {
27
+ "typedoc": "^0.27.9",
28
+ "typedoc-plugin-markdown": "^4.4.2",
23
29
  "typescript": "^5.8.2",
24
30
  "vitest": "^3.0.8"
25
31
  }