@fncts/base 0.0.19 → 0.0.20
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/_cjs/data/Environment/definition.cjs.map +1 -1
- package/_cjs/data/{Patch/api.cjs → EnvironmentPatch.cjs} +124 -32
- package/_cjs/data/EnvironmentPatch.cjs.map +1 -0
- package/_mjs/data/Environment/definition.mjs.map +1 -1
- package/_mjs/data/EnvironmentPatch.mjs +184 -0
- package/_mjs/data/EnvironmentPatch.mjs.map +1 -0
- package/_src/data/Environment/definition.ts +6 -0
- package/_src/data/EnvironmentPatch.ts +136 -0
- package/_src/data.ts +1 -1
- package/_src/global.ts +4 -0
- package/data/Environment/definition.d.ts +4 -0
- package/data/EnvironmentPatch.d.ts +73 -0
- package/data.d.ts +1 -1
- package/global.d.ts +4 -0
- package/package.json +1 -1
- package/_cjs/data/Patch/api.cjs.map +0 -1
- package/_cjs/data/Patch/definition.cjs +0 -88
- package/_cjs/data/Patch/definition.cjs.map +0 -1
- package/_cjs/data/Patch.cjs +0 -32
- package/_cjs/data/Patch.cjs.map +0 -1
- package/_mjs/data/Patch/api.mjs +0 -112
- package/_mjs/data/Patch/api.mjs.map +0 -1
- package/_mjs/data/Patch/definition.mjs +0 -61
- package/_mjs/data/Patch/definition.mjs.map +0 -1
- package/_mjs/data/Patch.mjs +0 -4
- package/_mjs/data/Patch.mjs.map +0 -1
- package/_src/data/Patch/api.ts +0 -75
- package/_src/data/Patch/definition.ts +0 -58
- package/_src/data/Patch.ts +0 -4
- package/data/Patch/api.d.ts +0 -24
- package/data/Patch/definition.d.ts +0 -44
- package/data/Patch.d.ts +0 -2
@@ -0,0 +1,73 @@
|
|
1
|
+
import { Has } from "@fncts/base/typeclass/Has";
|
2
|
+
import { Tag } from "@fncts/base/data/Tag/definition";
|
3
|
+
import { Environment } from "@fncts/base/data/Environment/definition";
|
4
|
+
import { List } from "@fncts/base/collection/immutable/List/definition";
|
5
|
+
export declare const enum EnvironmentPatchTag {
|
6
|
+
AddService = 0,
|
7
|
+
RemoveService = 1,
|
8
|
+
UpdateService = 2,
|
9
|
+
Combine = 3,
|
10
|
+
Empty = 4
|
11
|
+
}
|
12
|
+
export declare const EnvironmentPatchTypeId: unique symbol;
|
13
|
+
export type EnvironmentPatchTypeId = typeof EnvironmentPatchTypeId;
|
14
|
+
/**
|
15
|
+
* @tsplus type fncts.Environment.Patch
|
16
|
+
* @tsplus companion fncts.Environment.PatchOps
|
17
|
+
*/
|
18
|
+
export declare abstract class EnvironmentPatch<In, Out> {
|
19
|
+
readonly _typeId: EnvironmentPatchTypeId;
|
20
|
+
readonly _R: (_: In) => void;
|
21
|
+
readonly _A: () => Out;
|
22
|
+
}
|
23
|
+
export declare class AddService<Env, Service> extends EnvironmentPatch<Env, Env & Has<Service>> {
|
24
|
+
readonly service: Service;
|
25
|
+
readonly tag: Tag<Service>;
|
26
|
+
readonly _tag = EnvironmentPatchTag.AddService;
|
27
|
+
constructor(service: Service, tag: Tag<Service>);
|
28
|
+
}
|
29
|
+
export declare class Combine<In, Out, Out2> extends EnvironmentPatch<In, Out2> {
|
30
|
+
readonly first: EnvironmentPatch<In, Out>;
|
31
|
+
readonly second: EnvironmentPatch<Out, Out2>;
|
32
|
+
readonly _tag = EnvironmentPatchTag.Combine;
|
33
|
+
constructor(first: EnvironmentPatch<In, Out>, second: EnvironmentPatch<Out, Out2>);
|
34
|
+
}
|
35
|
+
export declare class Empty<Env> extends EnvironmentPatch<Env, Env> {
|
36
|
+
readonly _tag = EnvironmentPatchTag.Empty;
|
37
|
+
}
|
38
|
+
export declare class RemoveService<Env, Service> extends EnvironmentPatch<Env & Has<Service>, Env> {
|
39
|
+
readonly tag: Tag<Service>;
|
40
|
+
readonly _tag = EnvironmentPatchTag.RemoveService;
|
41
|
+
constructor(tag: Tag<Service>);
|
42
|
+
}
|
43
|
+
export declare class UpdateService<Env, Service> extends EnvironmentPatch<Env & Has<Service>, Env & Has<Service>> {
|
44
|
+
readonly update: (_: Service) => Service;
|
45
|
+
readonly tag: Tag<Service>;
|
46
|
+
readonly _tag = EnvironmentPatchTag.UpdateService;
|
47
|
+
constructor(update: (_: Service) => Service, tag: Tag<Service>);
|
48
|
+
}
|
49
|
+
export type Concrete = AddService<any, any> | Combine<any, any, any> | Empty<any> | RemoveService<any, any> | UpdateService<any, any>;
|
50
|
+
/**
|
51
|
+
* @tsplus macro remove
|
52
|
+
*/
|
53
|
+
export declare function concrete(_: EnvironmentPatch<any, any>): asserts _ is Concrete;
|
54
|
+
/**
|
55
|
+
* @tsplus fluent fncts.Environment.Patch __call
|
56
|
+
* @tsplus location "@fncts/base/data/EnvironmentPatch"
|
57
|
+
*/
|
58
|
+
export declare function apply<In, Out>(patch: EnvironmentPatch<In, Out>, environment: Environment<In>): Environment<Out>;
|
59
|
+
/**
|
60
|
+
* @tsplus fluent fncts.Environment.Patch combine
|
61
|
+
* @tsplus location "@fncts/base/data/EnvironmentPatch"
|
62
|
+
*/
|
63
|
+
export declare function combine<In, Out, Out2>(self: EnvironmentPatch<In, Out>, that: EnvironmentPatch<Out, Out2>): EnvironmentPatch<In, Out2>;
|
64
|
+
/**
|
65
|
+
* @tsplus static fncts.Environment.PatchOps diff
|
66
|
+
* @tsplus location "@fncts/base/data/EnvironmentPatch"
|
67
|
+
*/
|
68
|
+
export declare function diff<In, Out>(oldValue: Environment<In>, newValue: Environment<Out>): EnvironmentPatch<In, Out>;
|
69
|
+
/**
|
70
|
+
* @tsplus static fncts.Environment.PatchOps empty
|
71
|
+
* @tsplus location "@fncts/base/data/EnvironmentPatch"
|
72
|
+
*/
|
73
|
+
export declare function empty<A>(): EnvironmentPatch<A, A>;
|
package/data.d.ts
CHANGED
@@ -10,6 +10,7 @@ export type {} from "./data/Decoder.js";
|
|
10
10
|
export type {} from "./data/Duration.js";
|
11
11
|
export type {} from "./data/Either.js";
|
12
12
|
export type {} from "./data/Environment.js";
|
13
|
+
export type {} from "./data/EnvironmentPatch.js";
|
13
14
|
export type {} from "./data/exceptions.js";
|
14
15
|
export type {} from "./data/ExecutionStrategy.js";
|
15
16
|
export type {} from "./data/Exit.js";
|
@@ -22,7 +23,6 @@ export type {} from "./data/Maybe.js";
|
|
22
23
|
export type {} from "./data/Newtype.js";
|
23
24
|
export type {} from "./data/number.js";
|
24
25
|
export type {} from "./data/object.js";
|
25
|
-
export type {} from "./data/Patch.js";
|
26
26
|
export type {} from "./data/Predicate.js";
|
27
27
|
export type {} from "./data/Refinement.js";
|
28
28
|
export type {} from "./data/string.js";
|
package/global.d.ts
CHANGED
@@ -118,6 +118,10 @@ import { Either } from "@fncts/base/data/Either/definition";
|
|
118
118
|
* @tsplus global
|
119
119
|
*/
|
120
120
|
import { Environment } from "@fncts/base/data/Environment/definition";
|
121
|
+
/**
|
122
|
+
* @tsplus global
|
123
|
+
*/
|
124
|
+
import { EnvironmentPatch } from "@fncts/base/data/EnvironmentPatch";
|
121
125
|
/**
|
122
126
|
* @tsplus global
|
123
127
|
*/
|
package/package.json
CHANGED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"api.cjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAEA;;;;;;MAsCgBA,OAAO;;MA+BPC,KAAK;;;AAjErB;;;AAGA,SAASC,SAAT,CAAmBC,WAAnB,EAAkDC,OAAlD,EAAgF;sBAA7DD;MAAAE,YAA+BD;sBAA/BD;MAAAG,YAA+BF;;YAAkD;IAClG,IAAIG,kCAAJ,EAAuB;MACrB;IACD;;IACD,MAAMC,IAAI,GAAGH,UAAQG,IAArB;IACA,MAAMC,IAAI,GAAGJ,UAAQI,IAArB;IACA;;IACA,QAAQD,IAAI,CAACE,IAAb;MACE,KAAK,YAAL;wBACmBC,mCAAgBH,IAAI,CAACI,OAArB,EAA8BJ,IAAI,CAACK,GAAnC;oBAAyCJ;;;;;MAC5D,KAAK,SAAL;;oBACgCK,qBAAKN,IAAI,CAACO,KAAV,EAAiBD,qBAAKN,IAAI,CAACQ,MAAV,EAAkBP,IAAlB,CAAjB;;;;;MAChC,KAAK,OAAL;;oBACgCA;;;;;MAChC,KAAK,eAAL;;oBACgCA;;;;;MAChC,KAAK,eAAL;wBACmBE,sCAAmBH,IAAI,CAACS,MAAxB,EAAgCT,IAAI,CAACK,GAArC;oBAA2CJ;;;;IAVhE;EAYD;AAAA;AAED;;;;;AAGM,SAAUS,KAAV,CAAyBC,KAAzB,EAAgDhB,WAAhD,EAA4E;EAChF,OAAOD,SAAS,CAACC,WAAD,EAAcW,qBAAKK,KAAL,CAAd,CAAhB;AACD;AAED;;;;;AAGA,mBAAuCC,IAAvC,EAA6DC,IAA7D,EAAmF;EACjF,OAAO,IAAIC,oBAAJ,CAAYF,IAAZ,EAAkBC,IAAlB,CAAP;AACD;;AAED,MAAME,iBAAiB,gBAAGC,+CAAsBC,CAAD,IAA4DA,CAAC,CAAC,CAAD,CAAD,CAAK,CAAL,CAAjF,CAA1B;AAEA;;;;AAGM,SAAUC,IAAV,CAAwBC,QAAxB,EAAmDC,QAAnD,EAA6E;EACjF,MAAMC,MAAM,2BAAqBD,QAAQ,CAACE,GAA9B,CAAZ;EACA,MAAM,CAACC,eAAD,EAAkBZ,KAAlB,IAA2Ba,iCAC/B,+BAACL,QAAQ,CAACG,GAAV,GAA6BG,SAA7B,CAD+B,EAE/B,CAAC,CAACH,GAAD,EAAMX,KAAN,CAAD,EAAe,CAACN,GAAD,EAAMqB,UAAN,CAAf,KACEC,iDAAQtB,GAAR,GACE,MAAM,CAACuB,6BAAWvB,GAAX,CAAD,EAAkBwB,iBAAc,IAAIC,iBAAJ,CAAeJ,UAAf,EAA2BrB,GAA3B,CAAd,CAAlB,CADR,EAEG0B,UAAD,IAAe;IACb,IAAIA,UAAU,KAAKL,UAAnB,EAA+B;MAC7B,OAAO,CAACE,6BAAWvB,GAAX,CAAD,EAAkBM,KAAlB,CAAP;IACD,CAFD,MAEO;MACL,OAAO,CAACiB,6BAAWvB,GAAX,CAAD,EAAkBwB,iBAAc,IAAIG,oBAAJ,CAAmBf,CAAD,IAAYS,UAA9B,EAA0CrB,GAA1C,CAAd,CAAlB,CAAP;IACD;EACF,CARH,CAH6B,CAAjC;EAcA,OAAOuB,oDAAkCjB,KAAlC,EAAyC,CAACN,GAAD,EAAMM,KAAN,KAAgBkB,iBAAc,IAAII,oBAAJ,CAAkB5B,GAAlB,CAAd,CAAzD,CAAP;AACD;AAED;;;;;AAGA;EACE,OAAO,IAAI6B,kBAAJ,EAAP;AACD","names":["compose","empty","applyLoop","environment","patches","patches_1","patches_2","tsplus_module_1","head","tail","_tag","tsplus_module_2","service","tag","tsplus_module_3","first","second","update","apply","patch","self","that","Compose","OrdEnvironmentMap","tsplus_module_5","_","diff","oldValue","newValue","sorted","map","missingServices","tsplus_module_8","empty_1","newService","tsplus_module_7","tsplus_module_6","compose_1","AddService","oldService","UpdateService","RemoveService","Empty"],"sourceRoot":"","sources":["../../../_src/data/Patch/api.ts"],"sourcesContent":[null]}
|
@@ -1,88 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.UpdateService = exports.RemoveService = exports.PatchTypeId = exports.Patch = exports.Empty = exports.Compose = exports.AddService = void 0;
|
7
|
-
exports.concrete = concrete;
|
8
|
-
const PatchTypeId = /*#__PURE__*/Symbol.for("fncts.Patch");
|
9
|
-
/**
|
10
|
-
* @tsplus type fncts.Environment.Patch
|
11
|
-
* @tsplus companion fncts.Environment.PatchOps
|
12
|
-
*/
|
13
|
-
|
14
|
-
exports.PatchTypeId = PatchTypeId;
|
15
|
-
|
16
|
-
class Patch {
|
17
|
-
constructor() {
|
18
|
-
this._typeId = PatchTypeId;
|
19
|
-
}
|
20
|
-
|
21
|
-
}
|
22
|
-
|
23
|
-
exports.Patch = Patch;
|
24
|
-
|
25
|
-
class AddService extends Patch {
|
26
|
-
constructor(service, tag) {
|
27
|
-
super();
|
28
|
-
this.service = service;
|
29
|
-
this.tag = tag;
|
30
|
-
this._tag = "AddService";
|
31
|
-
}
|
32
|
-
|
33
|
-
}
|
34
|
-
|
35
|
-
exports.AddService = AddService;
|
36
|
-
|
37
|
-
class Compose extends Patch {
|
38
|
-
constructor(first, second) {
|
39
|
-
super();
|
40
|
-
this.first = first;
|
41
|
-
this.second = second;
|
42
|
-
this._tag = "Compose";
|
43
|
-
}
|
44
|
-
|
45
|
-
}
|
46
|
-
|
47
|
-
exports.Compose = Compose;
|
48
|
-
|
49
|
-
class Empty extends Patch {
|
50
|
-
constructor() {
|
51
|
-
super(...arguments);
|
52
|
-
this._tag = "Empty";
|
53
|
-
}
|
54
|
-
|
55
|
-
}
|
56
|
-
|
57
|
-
exports.Empty = Empty;
|
58
|
-
|
59
|
-
class RemoveService extends Patch {
|
60
|
-
constructor(tag) {
|
61
|
-
super();
|
62
|
-
this.tag = tag;
|
63
|
-
this._tag = "RemoveService";
|
64
|
-
}
|
65
|
-
|
66
|
-
}
|
67
|
-
|
68
|
-
exports.RemoveService = RemoveService;
|
69
|
-
|
70
|
-
class UpdateService extends Patch {
|
71
|
-
constructor(update, tag) {
|
72
|
-
super();
|
73
|
-
this.update = update;
|
74
|
-
this.tag = tag;
|
75
|
-
this._tag = "UpdateService";
|
76
|
-
}
|
77
|
-
|
78
|
-
}
|
79
|
-
/**
|
80
|
-
* @tsplus macro remove
|
81
|
-
*/
|
82
|
-
|
83
|
-
|
84
|
-
exports.UpdateService = UpdateService;
|
85
|
-
|
86
|
-
function concrete(_) {//
|
87
|
-
}
|
88
|
-
//# sourceMappingURL=definition.cjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"definition.cjs","mappings":";;;;;;;AAAO,MAAMA,WAAW,gBAAGC,MAAM,CAACC,GAAP,CAAW,aAAX,CAApB;AAGP;;;;;;;AAIM,MAAgBC,KAAhB,CAAqB;EAA3BC;IACW,eAAuBJ,WAAvB;EAGV;;AAJ0B;;;;AAMrB,MAAOK,UAAP,SAAwCF,KAAxC,CAAsE;EAE1EC,YAAqBE,OAArB,EAAgDC,GAAhD,EAAiE;IAC/D;IADmB;IAA2B;IADvC,YAAO,YAAP;EAGR;;AAJyE;;;;AAOtE,MAAOC,OAAP,SAAsCL,KAAtC,CAAqD;EAEzDC,YAAqBK,KAArB,EAAqDC,MAArD,EAA6E;IAC3E;IADmB;IAAgC;IAD5C,YAAO,SAAP;EAGR;;AAJwD;;;;AAOrD,MAAOC,KAAP,SAA0BR,KAA1B,CAAyC;EAA/CC;;IACW,YAAO,OAAP;EACV;;AAF8C;;;;AAIzC,MAAOQ,aAAP,SAA2CT,KAA3C,CAAyE;EAE7EC,YAAqBG,GAArB,EAAsC;IACpC;IADmB;IADZ,YAAO,eAAP;EAGR;;AAJ4E;;;;AAOzE,MAAOM,aAAP,SAA2CV,KAA3C,CAAwF;EAE5FC,YAAqBU,MAArB,EAA+DP,GAA/D,EAAgF;IAC9E;IADmB;IAA0C;IADtD,YAAO,eAAP;EAGR;;AAJ2F;AAc9F;;;;;;;AAGM,SAAUQ,QAAV,CAAmBC,CAAnB,EAAqC,CACzC;AACD","names":["PatchTypeId","Symbol","for","Patch","constructor","AddService","service","tag","Compose","first","second","Empty","RemoveService","UpdateService","update","concrete","_"],"sourceRoot":"","sources":["../../../_src/data/Patch/definition.ts"],"sourcesContent":[null]}
|
package/_cjs/data/Patch.cjs
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
|
7
|
-
var _api = /*#__PURE__*/require("./Patch/api.cjs");
|
8
|
-
|
9
|
-
Object.keys(_api).forEach(function (key) {
|
10
|
-
if (key === "default" || key === "__esModule") return;
|
11
|
-
if (key in exports && exports[key] === _api[key]) return;
|
12
|
-
Object.defineProperty(exports, key, {
|
13
|
-
enumerable: true,
|
14
|
-
get: function () {
|
15
|
-
return _api[key];
|
16
|
-
}
|
17
|
-
});
|
18
|
-
});
|
19
|
-
|
20
|
-
var _definition = /*#__PURE__*/require("./Patch/definition.cjs");
|
21
|
-
|
22
|
-
Object.keys(_definition).forEach(function (key) {
|
23
|
-
if (key === "default" || key === "__esModule") return;
|
24
|
-
if (key in exports && exports[key] === _definition[key]) return;
|
25
|
-
Object.defineProperty(exports, key, {
|
26
|
-
enumerable: true,
|
27
|
-
get: function () {
|
28
|
-
return _definition[key];
|
29
|
-
}
|
30
|
-
});
|
31
|
-
});
|
32
|
-
//# sourceMappingURL=Patch.cjs.map
|
package/_cjs/data/Patch.cjs.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"Patch.cjs","mappings":";;;;;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA;;AACA;;AAAA;EAAA;EAAA;EAAA;IAAA;IAAA;MAAA;IAAA;EAAA;AAAA","names":[],"sourceRoot":"","sources":["../../_src/data/Patch.ts"],"sourcesContent":[null]}
|
package/_mjs/data/Patch/api.mjs
DELETED
@@ -1,112 +0,0 @@
|
|
1
|
-
import * as tsplus_module_1 from "@fncts/base/collection/immutable/List/definition";
|
2
|
-
import * as tsplus_module_2 from "@fncts/base/data/Environment/api";
|
3
|
-
import * as tsplus_module_3 from "@fncts/base/collection/immutable/List/constructors";
|
4
|
-
import * as tsplus_module_4 from "@fncts/base/data/number/instances";
|
5
|
-
import * as tsplus_module_5 from "@fncts/base/typeclass/Ord/api/contramap";
|
6
|
-
import * as tsplus_module_6 from "@fncts/base/collection/immutable/HashMap/api";
|
7
|
-
import * as tsplus_module_7 from "@fncts/base/data/Maybe/destructors";
|
8
|
-
import * as tsplus_module_8 from "@fncts/base/collection/compat/Array/api";
|
9
|
-
export const compose = compose_1;
|
10
|
-
export const empty = empty_1;
|
11
|
-
import { Cons } from "@fncts/base/collection/immutable/List";
|
12
|
-
import { AddService, RemoveService, UpdateService } from "@fncts/base/data/Patch";
|
13
|
-
import { Empty } from "@fncts/base/data/Patch/definition";
|
14
|
-
import { Compose } from "@fncts/base/data/Patch/definition";
|
15
|
-
import { concrete } from "@fncts/base/data/Patch/definition";
|
16
|
-
/**
|
17
|
-
* @tsplus tailRec
|
18
|
-
*/
|
19
|
-
|
20
|
-
function applyLoop(environment, patches) {
|
21
|
-
var environment_1 = environment,
|
22
|
-
patches_1 = patches;
|
23
|
-
var environment_2 = environment,
|
24
|
-
patches_2 = patches;
|
25
|
-
|
26
|
-
while (1) {
|
27
|
-
if (tsplus_module_1.isEmpty(patches_1)) {
|
28
|
-
return environment_1;
|
29
|
-
}
|
30
|
-
|
31
|
-
const head = patches_1.head;
|
32
|
-
const tail = patches_1.tail;
|
33
|
-
void 0;
|
34
|
-
|
35
|
-
switch (head._tag) {
|
36
|
-
case "AddService":
|
37
|
-
environment_2 = tsplus_module_2.add(environment_1, head.service, head.tag);
|
38
|
-
patches_2 = tail;
|
39
|
-
environment_1 = environment_2;
|
40
|
-
patches_1 = patches_2;
|
41
|
-
continue;
|
42
|
-
|
43
|
-
case "Compose":
|
44
|
-
environment_2 = environment_1;
|
45
|
-
patches_2 = tsplus_module_3.cons(head.first, tsplus_module_3.cons(head.second, tail));
|
46
|
-
environment_1 = environment_2;
|
47
|
-
patches_1 = patches_2;
|
48
|
-
continue;
|
49
|
-
|
50
|
-
case "Empty":
|
51
|
-
environment_2 = environment_1;
|
52
|
-
patches_2 = tail;
|
53
|
-
environment_1 = environment_2;
|
54
|
-
patches_1 = patches_2;
|
55
|
-
continue;
|
56
|
-
|
57
|
-
case "RemoveService":
|
58
|
-
environment_2 = environment_1;
|
59
|
-
patches_2 = tail;
|
60
|
-
environment_1 = environment_2;
|
61
|
-
patches_1 = patches_2;
|
62
|
-
continue;
|
63
|
-
|
64
|
-
case "UpdateService":
|
65
|
-
environment_2 = tsplus_module_2.update(environment_1, head.update, head.tag);
|
66
|
-
patches_2 = tail;
|
67
|
-
environment_1 = environment_2;
|
68
|
-
patches_1 = patches_2;
|
69
|
-
continue;
|
70
|
-
}
|
71
|
-
}
|
72
|
-
}
|
73
|
-
/**
|
74
|
-
* @tsplus fluent fncts.Environment.Patch __call
|
75
|
-
*/
|
76
|
-
|
77
|
-
|
78
|
-
export function apply(patch, environment) {
|
79
|
-
return applyLoop(environment, tsplus_module_3.cons(patch));
|
80
|
-
}
|
81
|
-
/**
|
82
|
-
* @tsplus fluent fncts.Environment.Patch compose
|
83
|
-
*/
|
84
|
-
|
85
|
-
function compose_1(self, that) {
|
86
|
-
return new Compose(self, that);
|
87
|
-
}
|
88
|
-
|
89
|
-
const OrdEnvironmentMap = /*#__PURE__*/tsplus_module_5.contramap(tsplus_module_4.Ord, _ => _[1][1]);
|
90
|
-
/**
|
91
|
-
* @tsplus static fncts.Environment.PatchOps diff
|
92
|
-
*/
|
93
|
-
|
94
|
-
export function diff(oldValue, newValue) {
|
95
|
-
const sorted = tsplus_module_6.toArray(newValue.map);
|
96
|
-
const [missingServices, patch] = tsplus_module_8.foldLeft(sorted, [tsplus_module_6.beginMutation(oldValue.map), empty_1()], ([map, patch], [tag, newService]) => tsplus_module_7.match_(tsplus_module_6.get_(map, tag), () => [tsplus_module_6.remove_(map, tag), compose_1(patch, new AddService(newService, tag))], oldService => {
|
97
|
-
if (oldService === newService) {
|
98
|
-
return [tsplus_module_6.remove_(map, tag), patch];
|
99
|
-
} else {
|
100
|
-
return [tsplus_module_6.remove_(map, tag), compose_1(patch, new UpdateService(_ => newService, tag))];
|
101
|
-
}
|
102
|
-
}));
|
103
|
-
return tsplus_module_6.foldLeftWithIndex_(missingServices, patch, (tag, patch) => compose_1(patch, new RemoveService(tag)));
|
104
|
-
}
|
105
|
-
/**
|
106
|
-
* @tsplus static fncts.Environment.PatchOps empty
|
107
|
-
*/
|
108
|
-
|
109
|
-
function empty_1() {
|
110
|
-
return new Empty();
|
111
|
-
}
|
112
|
-
//# sourceMappingURL=api.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"api.mjs","mappings":";;;;;;;;aAyCgBA,OAAO;aA+BPC,KAAK;AAxErB,SAASC,IAAT,QAAqB,uCAArB;AACA,SAASC,UAAT,EAAqBC,aAArB,EAAoCC,aAApC,QAAyD,wBAAzD;AAEA,SAASC,KAAT,QAAsB,mCAAtB;AACA,SAASC,OAAT,QAAwB,mCAAxB;AACA,SAASC,QAAT,QAAyB,mCAAzB;AAEA;;;;AAGA,SAASC,SAAT,CAAmBC,WAAnB,EAAkDC,OAAlD,EAAgF;sBAA7DD;MAAAE,YAA+BD;sBAA/BD;MAAAG,YAA+BF;;YAAkD;IAClG,IAAIG,kCAAJ,EAAuB;MACrB;IACD;;IACD,MAAMC,IAAI,GAAGH,UAAQG,IAArB;IACA,MAAMC,IAAI,GAAGJ,UAAQI,IAArB;IACA;;IACA,QAAQD,IAAI,CAACE,IAAb;MACE,KAAK,YAAL;wBACmBC,mCAAgBH,IAAI,CAACI,OAArB,EAA8BJ,IAAI,CAACK,GAAnC;oBAAyCJ;;;;;MAC5D,KAAK,SAAL;;oBACgCK,qBAAKN,IAAI,CAACO,KAAV,EAAiBD,qBAAKN,IAAI,CAACQ,MAAV,EAAkBP,IAAlB,CAAjB;;;;;MAChC,KAAK,OAAL;;oBACgCA;;;;;MAChC,KAAK,eAAL;;oBACgCA;;;;;MAChC,KAAK,eAAL;wBACmBE,sCAAmBH,IAAI,CAACS,MAAxB,EAAgCT,IAAI,CAACK,GAArC;oBAA2CJ;;;;IAVhE;EAYD;AAAA;AAED;;;;;AAGA,OAAM,SAAUS,KAAV,CAAyBC,KAAzB,EAAgDhB,WAAhD,EAA4E;EAChF,OAAOD,SAAS,CAACC,WAAD,EAAcW,qBAAKK,KAAL,CAAd,CAAhB;AACD;AAED;;;;AAGA,mBAAuCC,IAAvC,EAA6DC,IAA7D,EAAmF;EACjF,OAAO,IAAIrB,OAAJ,CAAYoB,IAAZ,EAAkBC,IAAlB,CAAP;AACD;;AAED,MAAMC,iBAAiB,gBAAGC,+CAAsBC,CAAD,IAA4DA,CAAC,CAAC,CAAD,CAAD,CAAK,CAAL,CAAjF,CAA1B;AAEA;;;;AAGA,OAAM,SAAUC,IAAV,CAAwBC,QAAxB,EAAmDC,QAAnD,EAA6E;EACjF,MAAMC,MAAM,2BAAqBD,QAAQ,CAACE,GAA9B,CAAZ;EACA,MAAM,CAACC,eAAD,EAAkBX,KAAlB,IAA2BY,iCAC/B,+BAACL,QAAQ,CAACG,GAAV,GAA6BG,SAA7B,CAD+B,EAE/B,CAAC,CAACH,GAAD,EAAMV,KAAN,CAAD,EAAe,CAACN,GAAD,EAAMoB,UAAN,CAAf,KACEC,iDAAQrB,GAAR,GACE,MAAM,CAACsB,6BAAWtB,GAAX,CAAD,EAAkBuB,iBAAc,IAAIxC,UAAJ,CAAeqC,UAAf,EAA2BpB,GAA3B,CAAd,CAAlB,CADR,EAEGwB,UAAD,IAAe;IACb,IAAIA,UAAU,KAAKJ,UAAnB,EAA+B;MAC7B,OAAO,CAACE,6BAAWtB,GAAX,CAAD,EAAkBM,KAAlB,CAAP;IACD,CAFD,MAEO;MACL,OAAO,CAACgB,6BAAWtB,GAAX,CAAD,EAAkBuB,iBAAc,IAAItC,aAAJ,CAAmB0B,CAAD,IAAYS,UAA9B,EAA0CpB,GAA1C,CAAd,CAAlB,CAAP;IACD;EACF,CARH,CAH6B,CAAjC;EAcA,OAAOsB,oDAAkChB,KAAlC,EAAyC,CAACN,GAAD,EAAMM,KAAN,KAAgBiB,iBAAc,IAAIvC,aAAJ,CAAkBgB,GAAlB,CAAd,CAAzD,CAAP;AACD;AAED;;;;AAGA;EACE,OAAO,IAAId,KAAJ,EAAP;AACD","names":["compose","empty","Cons","AddService","RemoveService","UpdateService","Empty","Compose","concrete","applyLoop","environment","patches","patches_1","patches_2","tsplus_module_1","head","tail","_tag","tsplus_module_2","service","tag","tsplus_module_3","first","second","update","apply","patch","self","that","OrdEnvironmentMap","tsplus_module_5","_","diff","oldValue","newValue","sorted","map","missingServices","tsplus_module_8","empty_1","newService","tsplus_module_7","tsplus_module_6","compose_1","oldService"],"sourceRoot":"","sources":["../../../_src/data/Patch/api.ts"],"sourcesContent":[null]}
|
@@ -1,61 +0,0 @@
|
|
1
|
-
export const PatchTypeId = /*#__PURE__*/Symbol.for("fncts.Patch");
|
2
|
-
/**
|
3
|
-
* @tsplus type fncts.Environment.Patch
|
4
|
-
* @tsplus companion fncts.Environment.PatchOps
|
5
|
-
*/
|
6
|
-
|
7
|
-
export class Patch {
|
8
|
-
constructor() {
|
9
|
-
this._typeId = PatchTypeId;
|
10
|
-
}
|
11
|
-
|
12
|
-
}
|
13
|
-
export class AddService extends Patch {
|
14
|
-
constructor(service, tag) {
|
15
|
-
super();
|
16
|
-
this.service = service;
|
17
|
-
this.tag = tag;
|
18
|
-
this._tag = "AddService";
|
19
|
-
}
|
20
|
-
|
21
|
-
}
|
22
|
-
export class Compose extends Patch {
|
23
|
-
constructor(first, second) {
|
24
|
-
super();
|
25
|
-
this.first = first;
|
26
|
-
this.second = second;
|
27
|
-
this._tag = "Compose";
|
28
|
-
}
|
29
|
-
|
30
|
-
}
|
31
|
-
export class Empty extends Patch {
|
32
|
-
constructor() {
|
33
|
-
super(...arguments);
|
34
|
-
this._tag = "Empty";
|
35
|
-
}
|
36
|
-
|
37
|
-
}
|
38
|
-
export class RemoveService extends Patch {
|
39
|
-
constructor(tag) {
|
40
|
-
super();
|
41
|
-
this.tag = tag;
|
42
|
-
this._tag = "RemoveService";
|
43
|
-
}
|
44
|
-
|
45
|
-
}
|
46
|
-
export class UpdateService extends Patch {
|
47
|
-
constructor(update, tag) {
|
48
|
-
super();
|
49
|
-
this.update = update;
|
50
|
-
this.tag = tag;
|
51
|
-
this._tag = "UpdateService";
|
52
|
-
}
|
53
|
-
|
54
|
-
}
|
55
|
-
/**
|
56
|
-
* @tsplus macro remove
|
57
|
-
*/
|
58
|
-
|
59
|
-
export function concrete(_) {//
|
60
|
-
}
|
61
|
-
//# sourceMappingURL=definition.mjs.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"definition.mjs","mappings":"AAAA,OAAO,MAAMA,WAAW,gBAAGC,MAAM,CAACC,GAAP,CAAW,aAAX,CAApB;AAGP;;;;;AAIA,OAAM,MAAgBC,KAAhB,CAAqB;EAA3BC;IACW,eAAuBJ,WAAvB;EAGV;;AAJ0B;AAM3B,OAAM,MAAOK,UAAP,SAAwCF,KAAxC,CAAsE;EAE1EC,YAAqBE,OAArB,EAAgDC,GAAhD,EAAiE;IAC/D;IADmB;IAA2B;IADvC,YAAO,YAAP;EAGR;;AAJyE;AAO5E,OAAM,MAAOC,OAAP,SAAsCL,KAAtC,CAAqD;EAEzDC,YAAqBK,KAArB,EAAqDC,MAArD,EAA6E;IAC3E;IADmB;IAAgC;IAD5C,YAAO,SAAP;EAGR;;AAJwD;AAO3D,OAAM,MAAOC,KAAP,SAA0BR,KAA1B,CAAyC;EAA/CC;;IACW,YAAO,OAAP;EACV;;AAF8C;AAI/C,OAAM,MAAOQ,aAAP,SAA2CT,KAA3C,CAAyE;EAE7EC,YAAqBG,GAArB,EAAsC;IACpC;IADmB;IADZ,YAAO,eAAP;EAGR;;AAJ4E;AAO/E,OAAM,MAAOM,aAAP,SAA2CV,KAA3C,CAAwF;EAE5FC,YAAqBU,MAArB,EAA+DP,GAA/D,EAAgF;IAC9E;IADmB;IAA0C;IADtD,YAAO,eAAP;EAGR;;AAJ2F;AAc9F;;;;AAGA,OAAM,SAAUQ,QAAV,CAAmBC,CAAnB,EAAqC,CACzC;AACD","names":["PatchTypeId","Symbol","for","Patch","constructor","AddService","service","tag","Compose","first","second","Empty","RemoveService","UpdateService","update","concrete","_"],"sourceRoot":"","sources":["../../../_src/data/Patch/definition.ts"],"sourcesContent":[null]}
|
package/_mjs/data/Patch.mjs
DELETED
package/_mjs/data/Patch.mjs.map
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"Patch.mjs","mappings":"AAAA;AACA,cAAc,iBAAd;AACA,cAAc,wBAAd","names":[],"sourceRoot":"","sources":["../../_src/data/Patch.ts"],"sourcesContent":[null]}
|
package/_src/data/Patch/api.ts
DELETED
@@ -1,75 +0,0 @@
|
|
1
|
-
import { Cons } from "@fncts/base/collection/immutable/List";
|
2
|
-
import { AddService, RemoveService, UpdateService } from "@fncts/base/data/Patch";
|
3
|
-
import { Patch } from "@fncts/base/data/Patch/definition";
|
4
|
-
import { Empty } from "@fncts/base/data/Patch/definition";
|
5
|
-
import { Compose } from "@fncts/base/data/Patch/definition";
|
6
|
-
import { concrete } from "@fncts/base/data/Patch/definition";
|
7
|
-
|
8
|
-
/**
|
9
|
-
* @tsplus tailRec
|
10
|
-
*/
|
11
|
-
function applyLoop(environment: Environment<any>, patches: List<Patch<any, any>>): Environment<any> {
|
12
|
-
if (patches.isEmpty()) {
|
13
|
-
return environment;
|
14
|
-
}
|
15
|
-
const head = patches.head;
|
16
|
-
const tail = patches.tail;
|
17
|
-
concrete(head);
|
18
|
-
switch (head._tag) {
|
19
|
-
case "AddService":
|
20
|
-
return applyLoop(environment.add(head.service, head.tag), tail);
|
21
|
-
case "Compose":
|
22
|
-
return applyLoop(environment, Cons(head.first, Cons(head.second, tail)));
|
23
|
-
case "Empty":
|
24
|
-
return applyLoop(environment, tail);
|
25
|
-
case "RemoveService":
|
26
|
-
return applyLoop(environment, tail);
|
27
|
-
case "UpdateService":
|
28
|
-
return applyLoop(environment.update(head.update, head.tag), tail);
|
29
|
-
}
|
30
|
-
}
|
31
|
-
|
32
|
-
/**
|
33
|
-
* @tsplus fluent fncts.Environment.Patch __call
|
34
|
-
*/
|
35
|
-
export function apply<In, Out>(patch: Patch<In, Out>, environment: Environment<In>): Environment<Out> {
|
36
|
-
return applyLoop(environment, Cons(patch));
|
37
|
-
}
|
38
|
-
|
39
|
-
/**
|
40
|
-
* @tsplus fluent fncts.Environment.Patch compose
|
41
|
-
*/
|
42
|
-
export function compose<In, Out, Out2>(self: Patch<In, Out>, that: Patch<Out, Out2>): Patch<In, Out2> {
|
43
|
-
return new Compose(self, that);
|
44
|
-
}
|
45
|
-
|
46
|
-
const OrdEnvironmentMap = Number.Ord.contramap((_: readonly [Tag<unknown>, readonly [unknown, number]]) => _[1][1]);
|
47
|
-
|
48
|
-
/**
|
49
|
-
* @tsplus static fncts.Environment.PatchOps diff
|
50
|
-
*/
|
51
|
-
export function diff<In, Out>(oldValue: Environment<In>, newValue: Environment<Out>): Patch<In, Out> {
|
52
|
-
const sorted = newValue.map.toArray;
|
53
|
-
const [missingServices, patch] = sorted.foldLeft(
|
54
|
-
[oldValue.map.beginMutation, Patch.empty() as Patch<any, any>],
|
55
|
-
([map, patch], [tag, newService]) =>
|
56
|
-
map.get(tag).match(
|
57
|
-
() => [map.remove(tag), patch.compose(new AddService(newService, tag))],
|
58
|
-
(oldService) => {
|
59
|
-
if (oldService === newService) {
|
60
|
-
return [map.remove(tag), patch];
|
61
|
-
} else {
|
62
|
-
return [map.remove(tag), patch.compose(new UpdateService((_: any) => newService, tag))];
|
63
|
-
}
|
64
|
-
},
|
65
|
-
),
|
66
|
-
);
|
67
|
-
return missingServices.foldLeftWithIndex(patch, (tag, patch) => patch.compose(new RemoveService(tag)));
|
68
|
-
}
|
69
|
-
|
70
|
-
/**
|
71
|
-
* @tsplus static fncts.Environment.PatchOps empty
|
72
|
-
*/
|
73
|
-
export function empty<A>(): Patch<A, A> {
|
74
|
-
return new Empty();
|
75
|
-
}
|
@@ -1,58 +0,0 @@
|
|
1
|
-
export const PatchTypeId = Symbol.for("fncts.Patch");
|
2
|
-
export type PatchTypeId = typeof PatchTypeId;
|
3
|
-
|
4
|
-
/**
|
5
|
-
* @tsplus type fncts.Environment.Patch
|
6
|
-
* @tsplus companion fncts.Environment.PatchOps
|
7
|
-
*/
|
8
|
-
export abstract class Patch<In, Out> {
|
9
|
-
readonly _typeId: PatchTypeId = PatchTypeId;
|
10
|
-
readonly _R!: (_: In) => void;
|
11
|
-
readonly _A!: () => Out;
|
12
|
-
}
|
13
|
-
|
14
|
-
export class AddService<Env, Service> extends Patch<Env, Env & Has<Service>> {
|
15
|
-
readonly _tag = "AddService";
|
16
|
-
constructor(readonly service: Service, readonly tag: Tag<Service>) {
|
17
|
-
super();
|
18
|
-
}
|
19
|
-
}
|
20
|
-
|
21
|
-
export class Compose<In, Out, Out2> extends Patch<In, Out2> {
|
22
|
-
readonly _tag = "Compose";
|
23
|
-
constructor(readonly first: Patch<In, Out>, readonly second: Patch<Out, Out2>) {
|
24
|
-
super();
|
25
|
-
}
|
26
|
-
}
|
27
|
-
|
28
|
-
export class Empty<Env> extends Patch<Env, Env> {
|
29
|
-
readonly _tag = "Empty";
|
30
|
-
}
|
31
|
-
|
32
|
-
export class RemoveService<Env, Service> extends Patch<Env & Has<Service>, Env> {
|
33
|
-
readonly _tag = "RemoveService";
|
34
|
-
constructor(readonly tag: Tag<Service>) {
|
35
|
-
super();
|
36
|
-
}
|
37
|
-
}
|
38
|
-
|
39
|
-
export class UpdateService<Env, Service> extends Patch<Env & Has<Service>, Env & Has<Service>> {
|
40
|
-
readonly _tag = "UpdateService";
|
41
|
-
constructor(readonly update: (_: Service) => Service, readonly tag: Tag<Service>) {
|
42
|
-
super();
|
43
|
-
}
|
44
|
-
}
|
45
|
-
|
46
|
-
export type Concrete =
|
47
|
-
| AddService<any, any>
|
48
|
-
| Compose<any, any, any>
|
49
|
-
| Empty<any>
|
50
|
-
| RemoveService<any, any>
|
51
|
-
| UpdateService<any, any>;
|
52
|
-
|
53
|
-
/**
|
54
|
-
* @tsplus macro remove
|
55
|
-
*/
|
56
|
-
export function concrete(_: Patch<any, any>): asserts _ is Concrete {
|
57
|
-
//
|
58
|
-
}
|
package/_src/data/Patch.ts
DELETED
package/data/Patch/api.d.ts
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
import { Environment } from "@fncts/base/data/Environment/definition";
|
2
|
-
import { List } from "@fncts/base/collection/immutable/List/definition";
|
3
|
-
import { Tag } from "@fncts/base/data/Tag/definition";
|
4
|
-
import { Patch } from "@fncts/base/data/Patch/definition";
|
5
|
-
/**
|
6
|
-
* @tsplus fluent fncts.Environment.Patch __call
|
7
|
-
* @tsplus location "@fncts/base/data/Patch/api"
|
8
|
-
*/
|
9
|
-
export declare function apply<In, Out>(patch: Patch<In, Out>, environment: Environment<In>): Environment<Out>;
|
10
|
-
/**
|
11
|
-
* @tsplus fluent fncts.Environment.Patch compose
|
12
|
-
* @tsplus location "@fncts/base/data/Patch/api"
|
13
|
-
*/
|
14
|
-
export declare function compose<In, Out, Out2>(self: Patch<In, Out>, that: Patch<Out, Out2>): Patch<In, Out2>;
|
15
|
-
/**
|
16
|
-
* @tsplus static fncts.Environment.PatchOps diff
|
17
|
-
* @tsplus location "@fncts/base/data/Patch/api"
|
18
|
-
*/
|
19
|
-
export declare function diff<In, Out>(oldValue: Environment<In>, newValue: Environment<Out>): Patch<In, Out>;
|
20
|
-
/**
|
21
|
-
* @tsplus static fncts.Environment.PatchOps empty
|
22
|
-
* @tsplus location "@fncts/base/data/Patch/api"
|
23
|
-
*/
|
24
|
-
export declare function empty<A>(): Patch<A, A>;
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import { Has } from "@fncts/base/typeclass/Has";
|
2
|
-
import { Tag } from "@fncts/base/data/Tag/definition";
|
3
|
-
export declare const PatchTypeId: unique symbol;
|
4
|
-
export type PatchTypeId = typeof PatchTypeId;
|
5
|
-
/**
|
6
|
-
* @tsplus type fncts.Environment.Patch
|
7
|
-
* @tsplus companion fncts.Environment.PatchOps
|
8
|
-
*/
|
9
|
-
export declare abstract class Patch<In, Out> {
|
10
|
-
readonly _typeId: PatchTypeId;
|
11
|
-
readonly _R: (_: In) => void;
|
12
|
-
readonly _A: () => Out;
|
13
|
-
}
|
14
|
-
export declare class AddService<Env, Service> extends Patch<Env, Env & Has<Service>> {
|
15
|
-
readonly service: Service;
|
16
|
-
readonly tag: Tag<Service>;
|
17
|
-
readonly _tag = "AddService";
|
18
|
-
constructor(service: Service, tag: Tag<Service>);
|
19
|
-
}
|
20
|
-
export declare class Compose<In, Out, Out2> extends Patch<In, Out2> {
|
21
|
-
readonly first: Patch<In, Out>;
|
22
|
-
readonly second: Patch<Out, Out2>;
|
23
|
-
readonly _tag = "Compose";
|
24
|
-
constructor(first: Patch<In, Out>, second: Patch<Out, Out2>);
|
25
|
-
}
|
26
|
-
export declare class Empty<Env> extends Patch<Env, Env> {
|
27
|
-
readonly _tag = "Empty";
|
28
|
-
}
|
29
|
-
export declare class RemoveService<Env, Service> extends Patch<Env & Has<Service>, Env> {
|
30
|
-
readonly tag: Tag<Service>;
|
31
|
-
readonly _tag = "RemoveService";
|
32
|
-
constructor(tag: Tag<Service>);
|
33
|
-
}
|
34
|
-
export declare class UpdateService<Env, Service> extends Patch<Env & Has<Service>, Env & Has<Service>> {
|
35
|
-
readonly update: (_: Service) => Service;
|
36
|
-
readonly tag: Tag<Service>;
|
37
|
-
readonly _tag = "UpdateService";
|
38
|
-
constructor(update: (_: Service) => Service, tag: Tag<Service>);
|
39
|
-
}
|
40
|
-
export type Concrete = AddService<any, any> | Compose<any, any, any> | Empty<any> | RemoveService<any, any> | UpdateService<any, any>;
|
41
|
-
/**
|
42
|
-
* @tsplus macro remove
|
43
|
-
*/
|
44
|
-
export declare function concrete(_: Patch<any, any>): asserts _ is Concrete;
|
package/data/Patch.d.ts
DELETED