@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
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"definition.cjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;
|
1
|
+
{"version":3,"file":"definition.cjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAEA;;;AAGO,MAAMA,2BAAYC,MAAM,CAACC,GAAP,CAAW,WAAX,CAAlB;MAAMC,SAAS;AAItB;;;;;;;AAIM,MAAOC,WAAP,CAAkB;EAGtBC,YACWC,GADX,EAESC,QAAoCC,6BAF7C,EAEkE;IADvD;IACF;IAJA,eAAOR,WAAP;EAKL;;EAEA,mCAAa;IACf,OAAOS,4BAAiB,KAAKF,KAAtB,CAAP;EACD;;EAED,+BAAgBG,IAAhB,EAA6B;IAC3B,OAAOC,aAAa,CAACD,IAAD,CAAb,GAAqBE,6BAAC,KAAKN,GAAN,EAAaI,IAAI,CAACJ,GAAlB,CAArB,GAA6C,KAApD;EACD;;AAdqB;;;;AAqBlB,SAAUK,aAAV,CAAwBE,CAAxB,EAAkC;EACtC,OAAOC,0BAAUD,CAAV,EAAWb,WAAX,CAAP;AACD","names":["EnvSymbol_1","Symbol","for","EnvSymbol","Environment","constructor","map","cache","tsplus_module_1","tsplus_module_3","that","isEnvironment","tsplus_module_5","u","tsplus_module_6"],"sourceRoot":"","sources":["../../../_src/data/Environment/definition.ts"],"sourcesContent":[null]}
|
@@ -3,8 +3,10 @@
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
4
4
|
value: true
|
5
5
|
});
|
6
|
+
exports.UpdateService = exports.RemoveService = exports.EnvironmentPatchTypeId = exports.EnvironmentPatch = exports.Empty = exports.Combine = exports.AddService = void 0;
|
6
7
|
exports.apply = apply;
|
7
|
-
exports.
|
8
|
+
exports.combine = void 0;
|
9
|
+
exports.concrete = concrete;
|
8
10
|
exports.diff = diff;
|
9
11
|
exports.empty = void 0;
|
10
12
|
|
@@ -14,34 +16,115 @@ var tsplus_module_2 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require
|
|
14
16
|
|
15
17
|
var tsplus_module_3 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/immutable/List/constructors"));
|
16
18
|
|
17
|
-
var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/
|
19
|
+
var tsplus_module_4 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/immutable/HashMap/api"));
|
18
20
|
|
19
|
-
var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/
|
21
|
+
var tsplus_module_5 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/destructors"));
|
20
22
|
|
21
|
-
var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/
|
23
|
+
var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/compat/Array/api"));
|
22
24
|
|
23
|
-
var
|
25
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
24
26
|
|
25
|
-
var
|
27
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
26
28
|
|
27
|
-
|
29
|
+
const combine = combine_1;
|
30
|
+
exports.combine = combine;
|
31
|
+
const empty = empty_1;
|
32
|
+
exports.empty = empty;
|
33
|
+
const EnvironmentPatchTypeId = /*#__PURE__*/Symbol.for("fncts.Environment.Patch");
|
34
|
+
/**
|
35
|
+
* @tsplus type fncts.Environment.Patch
|
36
|
+
* @tsplus companion fncts.Environment.PatchOps
|
37
|
+
*/
|
28
38
|
|
29
|
-
|
39
|
+
exports.EnvironmentPatchTypeId = EnvironmentPatchTypeId;
|
30
40
|
|
31
|
-
|
41
|
+
class EnvironmentPatch {
|
42
|
+
constructor() {
|
43
|
+
this._typeId = EnvironmentPatchTypeId;
|
44
|
+
}
|
32
45
|
|
33
|
-
|
46
|
+
}
|
34
47
|
|
35
|
-
|
48
|
+
exports.EnvironmentPatch = EnvironmentPatch;
|
36
49
|
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
50
|
+
class AddService extends EnvironmentPatch {
|
51
|
+
constructor(service, tag) {
|
52
|
+
super();
|
53
|
+
this.service = service;
|
54
|
+
this.tag = tag;
|
55
|
+
this._tag = 0
|
56
|
+
/* EnvironmentPatchTag.AddService */
|
57
|
+
;
|
58
|
+
}
|
59
|
+
|
60
|
+
}
|
61
|
+
|
62
|
+
exports.AddService = AddService;
|
63
|
+
|
64
|
+
class Combine extends EnvironmentPatch {
|
65
|
+
constructor(first, second) {
|
66
|
+
super();
|
67
|
+
this.first = first;
|
68
|
+
this.second = second;
|
69
|
+
this._tag = 3
|
70
|
+
/* EnvironmentPatchTag.Combine */
|
71
|
+
;
|
72
|
+
}
|
73
|
+
|
74
|
+
}
|
75
|
+
|
76
|
+
exports.Combine = Combine;
|
77
|
+
|
78
|
+
class Empty extends EnvironmentPatch {
|
79
|
+
constructor() {
|
80
|
+
super(...arguments);
|
81
|
+
this._tag = 4
|
82
|
+
/* EnvironmentPatchTag.Empty */
|
83
|
+
;
|
84
|
+
}
|
85
|
+
|
86
|
+
}
|
87
|
+
|
88
|
+
exports.Empty = Empty;
|
89
|
+
|
90
|
+
class RemoveService extends EnvironmentPatch {
|
91
|
+
constructor(tag) {
|
92
|
+
super();
|
93
|
+
this.tag = tag;
|
94
|
+
this._tag = 1
|
95
|
+
/* EnvironmentPatchTag.RemoveService */
|
96
|
+
;
|
97
|
+
}
|
98
|
+
|
99
|
+
}
|
100
|
+
|
101
|
+
exports.RemoveService = RemoveService;
|
102
|
+
|
103
|
+
class UpdateService extends EnvironmentPatch {
|
104
|
+
constructor(update, tag) {
|
105
|
+
super();
|
106
|
+
this.update = update;
|
107
|
+
this.tag = tag;
|
108
|
+
this._tag = 2
|
109
|
+
/* EnvironmentPatchTag.UpdateService */
|
110
|
+
;
|
111
|
+
}
|
41
112
|
|
113
|
+
}
|
114
|
+
/**
|
115
|
+
* @tsplus macro remove
|
116
|
+
*/
|
117
|
+
|
118
|
+
|
119
|
+
exports.UpdateService = UpdateService;
|
120
|
+
|
121
|
+
function concrete(_) {//
|
122
|
+
}
|
42
123
|
/**
|
43
124
|
* @tsplus tailRec
|
44
125
|
*/
|
126
|
+
|
127
|
+
|
45
128
|
function applyLoop(environment, patches) {
|
46
129
|
var environment_1 = environment,
|
47
130
|
patches_1 = patches;
|
@@ -58,35 +141,45 @@ function applyLoop(environment, patches) {
|
|
58
141
|
void 0;
|
59
142
|
|
60
143
|
switch (head._tag) {
|
61
|
-
case
|
144
|
+
case 0
|
145
|
+
/* EnvironmentPatchTag.AddService */
|
146
|
+
:
|
62
147
|
environment_2 = tsplus_module_2.add(environment_1, head.service, head.tag);
|
63
148
|
patches_2 = tail;
|
64
149
|
environment_1 = environment_2;
|
65
150
|
patches_1 = patches_2;
|
66
151
|
continue;
|
67
152
|
|
68
|
-
case
|
153
|
+
case 3
|
154
|
+
/* EnvironmentPatchTag.Combine */
|
155
|
+
:
|
69
156
|
environment_2 = environment_1;
|
70
157
|
patches_2 = tsplus_module_3.cons(head.first, tsplus_module_3.cons(head.second, tail));
|
71
158
|
environment_1 = environment_2;
|
72
159
|
patches_1 = patches_2;
|
73
160
|
continue;
|
74
161
|
|
75
|
-
case
|
162
|
+
case 4
|
163
|
+
/* EnvironmentPatchTag.Empty */
|
164
|
+
:
|
76
165
|
environment_2 = environment_1;
|
77
166
|
patches_2 = tail;
|
78
167
|
environment_1 = environment_2;
|
79
168
|
patches_1 = patches_2;
|
80
169
|
continue;
|
81
170
|
|
82
|
-
case
|
171
|
+
case 1
|
172
|
+
/* EnvironmentPatchTag.RemoveService */
|
173
|
+
:
|
83
174
|
environment_2 = environment_1;
|
84
175
|
patches_2 = tail;
|
85
176
|
environment_1 = environment_2;
|
86
177
|
patches_1 = patches_2;
|
87
178
|
continue;
|
88
179
|
|
89
|
-
case
|
180
|
+
case 2
|
181
|
+
/* EnvironmentPatchTag.UpdateService */
|
182
|
+
:
|
90
183
|
environment_2 = tsplus_module_2.update(environment_1, head.update, head.tag);
|
91
184
|
patches_2 = tail;
|
92
185
|
environment_1 = environment_2;
|
@@ -104,29 +197,28 @@ function apply(patch, environment) {
|
|
104
197
|
return applyLoop(environment, tsplus_module_3.cons(patch));
|
105
198
|
}
|
106
199
|
/**
|
107
|
-
* @tsplus fluent fncts.Environment.Patch
|
200
|
+
* @tsplus fluent fncts.Environment.Patch combine
|
108
201
|
*/
|
109
202
|
|
110
203
|
|
111
|
-
function
|
112
|
-
return new
|
204
|
+
function combine_1(self, that) {
|
205
|
+
return new Combine(self, that);
|
113
206
|
}
|
114
|
-
|
115
|
-
const OrdEnvironmentMap = /*#__PURE__*/tsplus_module_5.contramap(tsplus_module_4.Ord, _ => _[1][1]);
|
116
207
|
/**
|
117
208
|
* @tsplus static fncts.Environment.PatchOps diff
|
118
209
|
*/
|
119
210
|
|
211
|
+
|
120
212
|
function diff(oldValue, newValue) {
|
121
|
-
const sorted =
|
122
|
-
const [missingServices, patch] =
|
213
|
+
const sorted = tsplus_module_4.toArray(newValue.map);
|
214
|
+
const [missingServices, patch] = tsplus_module_6.foldLeft(sorted, [tsplus_module_4.beginMutation(oldValue.map), empty_1()], ([map, patch], [tag, newService]) => tsplus_module_5.match_(tsplus_module_4.get_(map, tag), () => [tsplus_module_4.remove_(map, tag), combine_1(patch, new AddService(newService, tag))], oldService => {
|
123
215
|
if (oldService === newService) {
|
124
|
-
return [
|
216
|
+
return [tsplus_module_4.remove_(map, tag), patch];
|
125
217
|
} else {
|
126
|
-
return [
|
218
|
+
return [tsplus_module_4.remove_(map, tag), combine_1(patch, new UpdateService(_ => newService, tag))];
|
127
219
|
}
|
128
220
|
}));
|
129
|
-
return
|
221
|
+
return tsplus_module_4.foldLeftWithIndex_(missingServices, patch, (tag, patch) => combine_1(patch, new RemoveService(tag)));
|
130
222
|
}
|
131
223
|
/**
|
132
224
|
* @tsplus static fncts.Environment.PatchOps empty
|
@@ -134,6 +226,6 @@ function diff(oldValue, newValue) {
|
|
134
226
|
|
135
227
|
|
136
228
|
function empty_1() {
|
137
|
-
return new
|
229
|
+
return new Empty();
|
138
230
|
}
|
139
|
-
//# sourceMappingURL=
|
231
|
+
//# sourceMappingURL=EnvironmentPatch.cjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"EnvironmentPatch.cjs","mappings":"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","names":["combine","empty","EnvironmentPatchTypeId","Symbol","for","EnvironmentPatch","constructor","AddService","service","tag","Combine","first","second","Empty","RemoveService","UpdateService","update","concrete","_","applyLoop","environment","patches","patches_1","patches_2","tsplus_module_1","head","tail","_tag","tsplus_module_2","tsplus_module_3","apply","patch","self","that","diff","oldValue","newValue","sorted","map","missingServices","tsplus_module_6","empty_1","newService","tsplus_module_5","tsplus_module_4","combine_1","oldService"],"sourceRoot":"","sources":["../../_src/data/EnvironmentPatch.ts"],"sourcesContent":[null]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"definition.mjs","mappings":";;;;;;
|
1
|
+
{"version":3,"file":"definition.mjs","mappings":";;;;;;AAEA;;;;AAGO,MAAMA,2BAAYC,MAAM,CAACC,GAAP,CAAW,WAAX,CAAlB;aAAMC,SAAS;AAItB;;;;;AAIA,OAAM,MAAOC,WAAP,CAAkB;EAGtBC,YACWC,GADX,EAESC,QAAoCC,6BAF7C,EAEkE;IADvD;IACF;IAJA,eAAOR,WAAP;EAKL;;EAEA,mCAAa;IACf,OAAOS,4BAAiB,KAAKF,KAAtB,CAAP;EACD;;EAED,+BAAgBG,IAAhB,EAA6B;IAC3B,OAAOC,aAAa,CAACD,IAAD,CAAb,GAAqBE,6BAAC,KAAKN,GAAN,EAAaI,IAAI,CAACJ,GAAlB,CAArB,GAA6C,KAApD;EACD;;AAdqB;AAqBxB,OAAM,SAAUK,aAAV,CAAwBE,CAAxB,EAAkC;EACtC,OAAOC,0BAAUD,CAAV,EAAWb,WAAX,CAAP;AACD","names":["EnvSymbol_1","Symbol","for","EnvSymbol","Environment","constructor","map","cache","tsplus_module_1","tsplus_module_3","that","isEnvironment","tsplus_module_5","u","tsplus_module_6"],"sourceRoot":"","sources":["../../../_src/data/Environment/definition.ts"],"sourcesContent":[null]}
|
@@ -0,0 +1,184 @@
|
|
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/collection/immutable/HashMap/api";
|
5
|
+
import * as tsplus_module_5 from "@fncts/base/data/Maybe/destructors";
|
6
|
+
import * as tsplus_module_6 from "@fncts/base/collection/compat/Array/api";
|
7
|
+
export const combine = combine_1;
|
8
|
+
export const empty = empty_1;
|
9
|
+
export const EnvironmentPatchTypeId = /*#__PURE__*/Symbol.for("fncts.Environment.Patch");
|
10
|
+
/**
|
11
|
+
* @tsplus type fncts.Environment.Patch
|
12
|
+
* @tsplus companion fncts.Environment.PatchOps
|
13
|
+
*/
|
14
|
+
|
15
|
+
export class EnvironmentPatch {
|
16
|
+
constructor() {
|
17
|
+
this._typeId = EnvironmentPatchTypeId;
|
18
|
+
}
|
19
|
+
|
20
|
+
}
|
21
|
+
export class AddService extends EnvironmentPatch {
|
22
|
+
constructor(service, tag) {
|
23
|
+
super();
|
24
|
+
this.service = service;
|
25
|
+
this.tag = tag;
|
26
|
+
this._tag = 0
|
27
|
+
/* EnvironmentPatchTag.AddService */
|
28
|
+
;
|
29
|
+
}
|
30
|
+
|
31
|
+
}
|
32
|
+
export class Combine extends EnvironmentPatch {
|
33
|
+
constructor(first, second) {
|
34
|
+
super();
|
35
|
+
this.first = first;
|
36
|
+
this.second = second;
|
37
|
+
this._tag = 3
|
38
|
+
/* EnvironmentPatchTag.Combine */
|
39
|
+
;
|
40
|
+
}
|
41
|
+
|
42
|
+
}
|
43
|
+
export class Empty extends EnvironmentPatch {
|
44
|
+
constructor() {
|
45
|
+
super(...arguments);
|
46
|
+
this._tag = 4
|
47
|
+
/* EnvironmentPatchTag.Empty */
|
48
|
+
;
|
49
|
+
}
|
50
|
+
|
51
|
+
}
|
52
|
+
export class RemoveService extends EnvironmentPatch {
|
53
|
+
constructor(tag) {
|
54
|
+
super();
|
55
|
+
this.tag = tag;
|
56
|
+
this._tag = 1
|
57
|
+
/* EnvironmentPatchTag.RemoveService */
|
58
|
+
;
|
59
|
+
}
|
60
|
+
|
61
|
+
}
|
62
|
+
export class UpdateService extends EnvironmentPatch {
|
63
|
+
constructor(update, tag) {
|
64
|
+
super();
|
65
|
+
this.update = update;
|
66
|
+
this.tag = tag;
|
67
|
+
this._tag = 2
|
68
|
+
/* EnvironmentPatchTag.UpdateService */
|
69
|
+
;
|
70
|
+
}
|
71
|
+
|
72
|
+
}
|
73
|
+
/**
|
74
|
+
* @tsplus macro remove
|
75
|
+
*/
|
76
|
+
|
77
|
+
export function concrete(_) {//
|
78
|
+
}
|
79
|
+
/**
|
80
|
+
* @tsplus tailRec
|
81
|
+
*/
|
82
|
+
|
83
|
+
function applyLoop(environment, patches) {
|
84
|
+
var environment_1 = environment,
|
85
|
+
patches_1 = patches;
|
86
|
+
var environment_2 = environment,
|
87
|
+
patches_2 = patches;
|
88
|
+
|
89
|
+
while (1) {
|
90
|
+
if (tsplus_module_1.isEmpty(patches_1)) {
|
91
|
+
return environment_1;
|
92
|
+
}
|
93
|
+
|
94
|
+
const head = patches_1.head;
|
95
|
+
const tail = patches_1.tail;
|
96
|
+
void 0;
|
97
|
+
|
98
|
+
switch (head._tag) {
|
99
|
+
case 0
|
100
|
+
/* EnvironmentPatchTag.AddService */
|
101
|
+
:
|
102
|
+
environment_2 = tsplus_module_2.add(environment_1, head.service, head.tag);
|
103
|
+
patches_2 = tail;
|
104
|
+
environment_1 = environment_2;
|
105
|
+
patches_1 = patches_2;
|
106
|
+
continue;
|
107
|
+
|
108
|
+
case 3
|
109
|
+
/* EnvironmentPatchTag.Combine */
|
110
|
+
:
|
111
|
+
environment_2 = environment_1;
|
112
|
+
patches_2 = tsplus_module_3.cons(head.first, tsplus_module_3.cons(head.second, tail));
|
113
|
+
environment_1 = environment_2;
|
114
|
+
patches_1 = patches_2;
|
115
|
+
continue;
|
116
|
+
|
117
|
+
case 4
|
118
|
+
/* EnvironmentPatchTag.Empty */
|
119
|
+
:
|
120
|
+
environment_2 = environment_1;
|
121
|
+
patches_2 = tail;
|
122
|
+
environment_1 = environment_2;
|
123
|
+
patches_1 = patches_2;
|
124
|
+
continue;
|
125
|
+
|
126
|
+
case 1
|
127
|
+
/* EnvironmentPatchTag.RemoveService */
|
128
|
+
:
|
129
|
+
environment_2 = environment_1;
|
130
|
+
patches_2 = tail;
|
131
|
+
environment_1 = environment_2;
|
132
|
+
patches_1 = patches_2;
|
133
|
+
continue;
|
134
|
+
|
135
|
+
case 2
|
136
|
+
/* EnvironmentPatchTag.UpdateService */
|
137
|
+
:
|
138
|
+
environment_2 = tsplus_module_2.update(environment_1, head.update, head.tag);
|
139
|
+
patches_2 = tail;
|
140
|
+
environment_1 = environment_2;
|
141
|
+
patches_1 = patches_2;
|
142
|
+
continue;
|
143
|
+
}
|
144
|
+
}
|
145
|
+
}
|
146
|
+
/**
|
147
|
+
* @tsplus fluent fncts.Environment.Patch __call
|
148
|
+
*/
|
149
|
+
|
150
|
+
|
151
|
+
export function apply(patch, environment) {
|
152
|
+
return applyLoop(environment, tsplus_module_3.cons(patch));
|
153
|
+
}
|
154
|
+
/**
|
155
|
+
* @tsplus fluent fncts.Environment.Patch combine
|
156
|
+
*/
|
157
|
+
|
158
|
+
function combine_1(self, that) {
|
159
|
+
return new Combine(self, that);
|
160
|
+
}
|
161
|
+
/**
|
162
|
+
* @tsplus static fncts.Environment.PatchOps diff
|
163
|
+
*/
|
164
|
+
|
165
|
+
|
166
|
+
export function diff(oldValue, newValue) {
|
167
|
+
const sorted = tsplus_module_4.toArray(newValue.map);
|
168
|
+
const [missingServices, patch] = tsplus_module_6.foldLeft(sorted, [tsplus_module_4.beginMutation(oldValue.map), empty_1()], ([map, patch], [tag, newService]) => tsplus_module_5.match_(tsplus_module_4.get_(map, tag), () => [tsplus_module_4.remove_(map, tag), combine_1(patch, new AddService(newService, tag))], oldService => {
|
169
|
+
if (oldService === newService) {
|
170
|
+
return [tsplus_module_4.remove_(map, tag), patch];
|
171
|
+
} else {
|
172
|
+
return [tsplus_module_4.remove_(map, tag), combine_1(patch, new UpdateService(_ => newService, tag))];
|
173
|
+
}
|
174
|
+
}));
|
175
|
+
return tsplus_module_4.foldLeftWithIndex_(missingServices, patch, (tag, patch) => combine_1(patch, new RemoveService(tag)));
|
176
|
+
}
|
177
|
+
/**
|
178
|
+
* @tsplus static fncts.Environment.PatchOps empty
|
179
|
+
*/
|
180
|
+
|
181
|
+
function empty_1() {
|
182
|
+
return new Empty();
|
183
|
+
}
|
184
|
+
//# sourceMappingURL=EnvironmentPatch.mjs.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"EnvironmentPatch.mjs","mappings":"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","names":["combine","empty","EnvironmentPatchTypeId","Symbol","for","EnvironmentPatch","constructor","AddService","service","tag","Combine","first","second","Empty","RemoveService","UpdateService","update","concrete","_","applyLoop","environment","patches","patches_1","patches_2","tsplus_module_1","head","tail","_tag","tsplus_module_2","tsplus_module_3","apply","patch","self","that","diff","oldValue","newValue","sorted","map","missingServices","tsplus_module_6","empty_1","newService","tsplus_module_5","tsplus_module_4","combine_1","oldService"],"sourceRoot":"","sources":["../../_src/data/EnvironmentPatch.ts"],"sourcesContent":[null]}
|
@@ -1,3 +1,5 @@
|
|
1
|
+
import type { EnvironmentPatch } from "@fncts/base/data/EnvironmentPatch";
|
2
|
+
|
1
3
|
/**
|
2
4
|
* @tsplus static fncts.prelude.builtin.SymbolOps env
|
3
5
|
*/
|
@@ -26,6 +28,10 @@ export class Environment<R> implements Hashable, Equatable {
|
|
26
28
|
}
|
27
29
|
}
|
28
30
|
|
31
|
+
export declare namespace Environment {
|
32
|
+
type Patch<In, Out> = EnvironmentPatch<In, Out>;
|
33
|
+
}
|
34
|
+
|
29
35
|
export function isEnvironment(u: unknown): u is Environment<unknown> {
|
30
36
|
return hasTypeId(u, EnvSymbol);
|
31
37
|
}
|
@@ -0,0 +1,136 @@
|
|
1
|
+
export const enum EnvironmentPatchTag {
|
2
|
+
AddService,
|
3
|
+
RemoveService,
|
4
|
+
UpdateService,
|
5
|
+
Combine,
|
6
|
+
Empty,
|
7
|
+
}
|
8
|
+
|
9
|
+
export const EnvironmentPatchTypeId = Symbol.for("fncts.Environment.Patch");
|
10
|
+
export type EnvironmentPatchTypeId = typeof EnvironmentPatchTypeId;
|
11
|
+
|
12
|
+
/**
|
13
|
+
* @tsplus type fncts.Environment.Patch
|
14
|
+
* @tsplus companion fncts.Environment.PatchOps
|
15
|
+
*/
|
16
|
+
export abstract class EnvironmentPatch<In, Out> {
|
17
|
+
readonly _typeId: EnvironmentPatchTypeId = EnvironmentPatchTypeId;
|
18
|
+
readonly _R!: (_: In) => void;
|
19
|
+
readonly _A!: () => Out;
|
20
|
+
}
|
21
|
+
|
22
|
+
export class AddService<Env, Service> extends EnvironmentPatch<Env, Env & Has<Service>> {
|
23
|
+
readonly _tag = EnvironmentPatchTag.AddService;
|
24
|
+
constructor(readonly service: Service, readonly tag: Tag<Service>) {
|
25
|
+
super();
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
export class Combine<In, Out, Out2> extends EnvironmentPatch<In, Out2> {
|
30
|
+
readonly _tag = EnvironmentPatchTag.Combine;
|
31
|
+
constructor(readonly first: EnvironmentPatch<In, Out>, readonly second: EnvironmentPatch<Out, Out2>) {
|
32
|
+
super();
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
export class Empty<Env> extends EnvironmentPatch<Env, Env> {
|
37
|
+
readonly _tag = EnvironmentPatchTag.Empty;
|
38
|
+
}
|
39
|
+
|
40
|
+
export class RemoveService<Env, Service> extends EnvironmentPatch<Env & Has<Service>, Env> {
|
41
|
+
readonly _tag = EnvironmentPatchTag.RemoveService;
|
42
|
+
constructor(readonly tag: Tag<Service>) {
|
43
|
+
super();
|
44
|
+
}
|
45
|
+
}
|
46
|
+
|
47
|
+
export class UpdateService<Env, Service> extends EnvironmentPatch<Env & Has<Service>, Env & Has<Service>> {
|
48
|
+
readonly _tag = EnvironmentPatchTag.UpdateService;
|
49
|
+
constructor(readonly update: (_: Service) => Service, readonly tag: Tag<Service>) {
|
50
|
+
super();
|
51
|
+
}
|
52
|
+
}
|
53
|
+
|
54
|
+
export type Concrete =
|
55
|
+
| AddService<any, any>
|
56
|
+
| Combine<any, any, any>
|
57
|
+
| Empty<any>
|
58
|
+
| RemoveService<any, any>
|
59
|
+
| UpdateService<any, any>;
|
60
|
+
|
61
|
+
/**
|
62
|
+
* @tsplus macro remove
|
63
|
+
*/
|
64
|
+
export function concrete(_: EnvironmentPatch<any, any>): asserts _ is Concrete {
|
65
|
+
//
|
66
|
+
}
|
67
|
+
|
68
|
+
/**
|
69
|
+
* @tsplus tailRec
|
70
|
+
*/
|
71
|
+
function applyLoop(environment: Environment<any>, patches: List<EnvironmentPatch<any, any>>): Environment<any> {
|
72
|
+
if (patches.isEmpty()) {
|
73
|
+
return environment;
|
74
|
+
}
|
75
|
+
const head = patches.head;
|
76
|
+
const tail = patches.tail;
|
77
|
+
concrete(head);
|
78
|
+
switch (head._tag) {
|
79
|
+
case EnvironmentPatchTag.AddService:
|
80
|
+
return applyLoop(environment.add(head.service, head.tag), tail);
|
81
|
+
case EnvironmentPatchTag.Combine:
|
82
|
+
return applyLoop(environment, Cons(head.first, Cons(head.second, tail)));
|
83
|
+
case EnvironmentPatchTag.Empty:
|
84
|
+
return applyLoop(environment, tail);
|
85
|
+
case EnvironmentPatchTag.RemoveService:
|
86
|
+
return applyLoop(environment, tail);
|
87
|
+
case EnvironmentPatchTag.UpdateService:
|
88
|
+
return applyLoop(environment.update(head.update, head.tag), tail);
|
89
|
+
}
|
90
|
+
}
|
91
|
+
|
92
|
+
/**
|
93
|
+
* @tsplus fluent fncts.Environment.Patch __call
|
94
|
+
*/
|
95
|
+
export function apply<In, Out>(patch: EnvironmentPatch<In, Out>, environment: Environment<In>): Environment<Out> {
|
96
|
+
return applyLoop(environment, Cons(patch));
|
97
|
+
}
|
98
|
+
|
99
|
+
/**
|
100
|
+
* @tsplus fluent fncts.Environment.Patch combine
|
101
|
+
*/
|
102
|
+
export function combine<In, Out, Out2>(
|
103
|
+
self: EnvironmentPatch<In, Out>,
|
104
|
+
that: EnvironmentPatch<Out, Out2>,
|
105
|
+
): EnvironmentPatch<In, Out2> {
|
106
|
+
return new Combine(self, that);
|
107
|
+
}
|
108
|
+
|
109
|
+
/**
|
110
|
+
* @tsplus static fncts.Environment.PatchOps diff
|
111
|
+
*/
|
112
|
+
export function diff<In, Out>(oldValue: Environment<In>, newValue: Environment<Out>): EnvironmentPatch<In, Out> {
|
113
|
+
const sorted = newValue.map.toArray;
|
114
|
+
const [missingServices, patch] = sorted.foldLeft(
|
115
|
+
[oldValue.map.beginMutation, EnvironmentPatch.empty() as EnvironmentPatch<any, any>],
|
116
|
+
([map, patch], [tag, newService]) =>
|
117
|
+
map.get(tag).match(
|
118
|
+
() => [map.remove(tag), patch.combine(new AddService(newService, tag))],
|
119
|
+
(oldService) => {
|
120
|
+
if (oldService === newService) {
|
121
|
+
return [map.remove(tag), patch];
|
122
|
+
} else {
|
123
|
+
return [map.remove(tag), patch.combine(new UpdateService((_: any) => newService, tag))];
|
124
|
+
}
|
125
|
+
},
|
126
|
+
),
|
127
|
+
);
|
128
|
+
return missingServices.foldLeftWithIndex(patch, (tag, patch) => patch.combine(new RemoveService(tag)));
|
129
|
+
}
|
130
|
+
|
131
|
+
/**
|
132
|
+
* @tsplus static fncts.Environment.PatchOps empty
|
133
|
+
*/
|
134
|
+
export function empty<A>(): EnvironmentPatch<A, A> {
|
135
|
+
return new Empty();
|
136
|
+
}
|
package/_src/data.ts
CHANGED
@@ -11,6 +11,7 @@ export type {} from "./data/Decoder.js";
|
|
11
11
|
export type {} from "./data/Duration.js";
|
12
12
|
export type {} from "./data/Either.js";
|
13
13
|
export type {} from "./data/Environment.js";
|
14
|
+
export type {} from "./data/EnvironmentPatch.js";
|
14
15
|
export type {} from "./data/exceptions.js";
|
15
16
|
export type {} from "./data/ExecutionStrategy.js";
|
16
17
|
export type {} from "./data/Exit.js";
|
@@ -23,7 +24,6 @@ export type {} from "./data/Maybe.js";
|
|
23
24
|
export type {} from "./data/Newtype.js";
|
24
25
|
export type {} from "./data/number.js";
|
25
26
|
export type {} from "./data/object.js";
|
26
|
-
export type {} from "./data/Patch.js";
|
27
27
|
export type {} from "./data/Predicate.js";
|
28
28
|
export type {} from "./data/Refinement.js";
|
29
29
|
export type {} from "./data/string.js";
|
package/_src/global.ts
CHANGED
@@ -123,6 +123,10 @@ import { Either } from "@fncts/base/data/Either/definition";
|
|
123
123
|
* @tsplus global
|
124
124
|
*/
|
125
125
|
import { Environment } from "@fncts/base/data/Environment/definition";
|
126
|
+
/**
|
127
|
+
* @tsplus global
|
128
|
+
*/
|
129
|
+
import { EnvironmentPatch } from "@fncts/base/data/EnvironmentPatch";
|
126
130
|
/**
|
127
131
|
* @tsplus global
|
128
132
|
*/
|
@@ -2,6 +2,7 @@ import { Hashable } from "@fncts/base/typeclass/Hashable";
|
|
2
2
|
import { Equatable } from "@fncts/base/typeclass/Equatable";
|
3
3
|
import { HashMap } from "@fncts/base/collection/immutable/HashMap/definition";
|
4
4
|
import { Tag } from "@fncts/base/data/Tag/definition";
|
5
|
+
import type { EnvironmentPatch } from "@fncts/base/data/EnvironmentPatch";
|
5
6
|
/**
|
6
7
|
* @tsplus static fncts.prelude.builtin.SymbolOps env
|
7
8
|
* @tsplus location "@fncts/base/data/Environment/definition"
|
@@ -21,4 +22,7 @@ export declare class Environment<R> implements Hashable, Equatable {
|
|
21
22
|
get [Symbol.hash](): number;
|
22
23
|
[Symbol.equals](that: unknown): boolean;
|
23
24
|
}
|
25
|
+
export declare namespace Environment {
|
26
|
+
type Patch<In, Out> = EnvironmentPatch<In, Out>;
|
27
|
+
}
|
24
28
|
export declare function isEnvironment(u: unknown): u is Environment<unknown>;
|