@fncts/base 0.0.19 → 0.0.20
Sign up to get free protection for your applications and to get access to all the features.
- 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