@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.
@@ -1 +1 @@
1
- {"version":3,"file":"definition.cjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;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;;;;AAiBlB,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]}
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.compose = void 0;
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/data/number/instances"));
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/typeclass/Ord/api/contramap"));
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/immutable/HashMap/api"));
23
+ var tsplus_module_6 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/compat/Array/api"));
22
24
 
23
- var tsplus_module_7 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/data/Maybe/destructors"));
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 tsplus_module_8 = /*#__PURE__*/_interopRequireWildcard( /*#__PURE__*/require("@fncts/base/collection/compat/Array/api"));
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
- var _List = /*#__PURE__*/require("@fncts/base/collection/immutable/List");
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
- var _Patch = /*#__PURE__*/require("@fncts/base/data/Patch");
39
+ exports.EnvironmentPatchTypeId = EnvironmentPatchTypeId;
30
40
 
31
- var _definition2 = /*#__PURE__*/require("@fncts/base/data/Patch/definition");
41
+ class EnvironmentPatch {
42
+ constructor() {
43
+ this._typeId = EnvironmentPatchTypeId;
44
+ }
32
45
 
33
- 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); }
46
+ }
34
47
 
35
- 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; }
48
+ exports.EnvironmentPatch = EnvironmentPatch;
36
49
 
37
- const compose = compose_1;
38
- exports.compose = compose;
39
- const empty = empty_1;
40
- exports.empty = empty;
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 "AddService":
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 "Compose":
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 "Empty":
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 "RemoveService":
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 "UpdateService":
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 compose
200
+ * @tsplus fluent fncts.Environment.Patch combine
108
201
  */
109
202
 
110
203
 
111
- function compose_1(self, that) {
112
- return new _definition2.Compose(self, that);
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 = tsplus_module_6.toArray(newValue.map);
122
- 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 _Patch.AddService(newService, tag))], oldService => {
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 [tsplus_module_6.remove_(map, tag), patch];
216
+ return [tsplus_module_4.remove_(map, tag), patch];
125
217
  } else {
126
- return [tsplus_module_6.remove_(map, tag), compose_1(patch, new _Patch.UpdateService(_ => newService, tag))];
218
+ return [tsplus_module_4.remove_(map, tag), combine_1(patch, new UpdateService(_ => newService, tag))];
127
219
  }
128
220
  }));
129
- return tsplus_module_6.foldLeftWithIndex_(missingServices, patch, (tag, patch) => compose_1(patch, new _Patch.RemoveService(tag)));
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 _definition2.Empty();
229
+ return new Empty();
138
230
  }
139
- //# sourceMappingURL=api.cjs.map
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":";;;;;;AAAA;;;;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;AAiBxB,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]}
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>;