type-plus 5.5.0 → 5.5.1
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/functional/context.d.ts +2 -4
- package/cjs/functional/context.d.ts.map +1 -1
- package/cjs/functional/context.js +12 -9
- package/cjs/functional/context.js.map +1 -1
- package/cjs/functional/context.spec.js +28 -0
- package/cjs/functional/context.spec.js.map +1 -1
- package/esm/functional/context.d.ts +2 -4
- package/esm/functional/context.d.ts.map +1 -1
- package/esm/functional/context.js +11 -9
- package/esm/functional/context.js.map +1 -1
- package/esm/functional/context.spec.js +28 -0
- package/esm/functional/context.spec.js.map +1 -1
- package/package.json +1 -1
- package/ts/functional/context.ts +12 -10
|
@@ -5,7 +5,7 @@ export type ContextBaseShape = Record<string | symbol, any>;
|
|
|
5
5
|
* @param context the current context.
|
|
6
6
|
* @return an additional context with new properties.
|
|
7
7
|
*/
|
|
8
|
-
export type ContextExtender<Current, Additional> = (context: Current) => Additional;
|
|
8
|
+
export type ContextExtender<Current, Additional> = ((context: Current) => Additional);
|
|
9
9
|
export type ContextBuilder<Init extends ContextBaseShape, Ctx extends ContextBaseShape> = {
|
|
10
10
|
/**
|
|
11
11
|
* Extends the context using an extender.
|
|
@@ -29,9 +29,7 @@ export type ContextBuilder<Init extends ContextBaseShape, Ctx extends ContextBas
|
|
|
29
29
|
build(): Ctx;
|
|
30
30
|
};
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* The initializer and transformer
|
|
32
|
+
* Creates a context builder.
|
|
35
33
|
*
|
|
36
34
|
* @param init The initial context or an context initializer.
|
|
37
35
|
* @return the context builder where you can
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;AAE3D;;;;GAIG;AACH,MAAM,MAAM,eAAe,CACzB,OAAO,EACP,UAAU,IACR,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;AAE3D;;;;GAIG;AACH,MAAM,MAAM,eAAe,CACzB,OAAO,EACP,UAAU,IACR,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,CAAA;AAEtC,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,gBAAgB,EAC7B,GAAG,SAAS,gBAAgB,IAC1B;IACF;;;;;;;;;;;;;;OAcG;IACH,MAAM,CACJ,UAAU,SAAS,gBAAgB,GAAG,gBAAgB,EACtD,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,GACxC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IACpD;;OAEG;IACH,KAAK,IAAI,GAAG,CAAA;CACb,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,IAAI,SAAS,gBAAgB,EAC7B,GAAG,SAAS,gBAAgB,GAAG,IAAI,EACnC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAKvD"}
|
|
@@ -13,9 +13,7 @@ var __assign = (this && this.__assign) || function () {
|
|
|
13
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
14
|
exports.context = void 0;
|
|
15
15
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* The initializer and transformer
|
|
16
|
+
* Creates a context builder.
|
|
19
17
|
*
|
|
20
18
|
* @param init The initial context or an context initializer.
|
|
21
19
|
* @return the context builder where you can
|
|
@@ -25,19 +23,24 @@ exports.context = void 0;
|
|
|
25
23
|
function context(init) {
|
|
26
24
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
27
25
|
return typeof init === 'function'
|
|
28
|
-
? contextBuilder({}, [init])
|
|
26
|
+
? contextBuilder({}, [[init]])
|
|
29
27
|
: contextBuilder(init !== null && init !== void 0 ? init : {}, []);
|
|
30
28
|
}
|
|
31
29
|
exports.context = context;
|
|
32
|
-
|
|
30
|
+
/* eslint-disable */
|
|
31
|
+
function contextBuilder(init, extenders) {
|
|
33
32
|
return {
|
|
34
|
-
extend: function (
|
|
35
|
-
return contextBuilder(init,
|
|
33
|
+
extend: function (extender) {
|
|
34
|
+
return contextBuilder(init, extenders.concat([[extender]]));
|
|
36
35
|
},
|
|
37
36
|
build: function () {
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
return extenders.reduce(function (p, _a, i) {
|
|
38
|
+
var t = _a[0];
|
|
39
|
+
var v = typeof t === 'function' ? extenders[i][0] = t(p) : t;
|
|
40
|
+
return __assign(__assign({}, p), v);
|
|
41
|
+
}, init);
|
|
40
42
|
}
|
|
41
43
|
};
|
|
42
44
|
}
|
|
45
|
+
/* eslint-enable */
|
|
43
46
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AA2CA
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AA2CA;;;;;;;GAOG;AACH,SAAgB,OAAO,CAGrB,IAA0B;IAC1B,+DAA+D;IAC/D,OAAO,OAAO,IAAI,KAAK,UAAU;QAC/B,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,cAAc,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,EAAE,CAAQ,CAAA;AAC3C,CAAC;AARD,0BAQC;AAED,oBAAoB;AACpB,SAAS,cAAc,CAAC,IAAsB,EAAE,SAAmD;IACjG,OAAO;QACL,MAAM,YAAC,QAAmC;YACxC,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,KAAK;YACH,OAAO,SAAS,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,EAAG,EAAE,CAAC;oBAAL,CAAC,QAAA;gBAC5B,IAAM,CAAC,GAAG,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC9D,6BAAY,CAAC,GAAK,CAAC,EAAE;YACvB,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC;KACF,CAAA;AACH,CAAC;AACD,mBAAmB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var assertron_1 = require("assertron");
|
|
3
4
|
var index_js_1 = require("../index.js");
|
|
4
5
|
describe("".concat(index_js_1.context.name, "()"), function () {
|
|
5
6
|
it('allows no param', function () {
|
|
@@ -50,5 +51,32 @@ describe("".concat(index_js_1.context.name, "()"), function () {
|
|
|
50
51
|
index_js_1.isType.equal();
|
|
51
52
|
expect(r).toEqual({ a: 1, b: 2 });
|
|
52
53
|
});
|
|
54
|
+
it('invoke each extender only once', function () {
|
|
55
|
+
var o = new assertron_1.AssertOrder(4);
|
|
56
|
+
var c1 = (0, index_js_1.context)({ a: 1 })
|
|
57
|
+
.extend(function () {
|
|
58
|
+
o.once(1);
|
|
59
|
+
return ({ b: 2 });
|
|
60
|
+
})
|
|
61
|
+
.extend(function () {
|
|
62
|
+
o.once(2);
|
|
63
|
+
return ({ c: 3 });
|
|
64
|
+
});
|
|
65
|
+
var c2 = c1.extend(function () {
|
|
66
|
+
o.once(3);
|
|
67
|
+
return ({ d: 4 });
|
|
68
|
+
});
|
|
69
|
+
var c3 = c1.extend(function () {
|
|
70
|
+
o.once(4);
|
|
71
|
+
return ({ e: 5 });
|
|
72
|
+
});
|
|
73
|
+
var r2 = c2.build();
|
|
74
|
+
var r3 = c3.build();
|
|
75
|
+
var r1 = c1.build();
|
|
76
|
+
expect(r2).toEqual({ a: 1, b: 2, c: 3, d: 4 });
|
|
77
|
+
expect(r3).toEqual({ a: 1, b: 2, c: 3, e: 5 });
|
|
78
|
+
expect(r1).toEqual({ a: 1, b: 2, c: 3 });
|
|
79
|
+
o.end();
|
|
80
|
+
});
|
|
53
81
|
});
|
|
54
82
|
//# sourceMappingURL=context.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.spec.js","sourceRoot":"","sources":["../../ts/functional/context.spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"context.spec.js","sourceRoot":"","sources":["../../ts/functional/context.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export type ContextBaseShape = Record<string | symbol, any>;
|
|
|
5
5
|
* @param context the current context.
|
|
6
6
|
* @return an additional context with new properties.
|
|
7
7
|
*/
|
|
8
|
-
export type ContextExtender<Current, Additional> = (context: Current) => Additional;
|
|
8
|
+
export type ContextExtender<Current, Additional> = ((context: Current) => Additional);
|
|
9
9
|
export type ContextBuilder<Init extends ContextBaseShape, Ctx extends ContextBaseShape> = {
|
|
10
10
|
/**
|
|
11
11
|
* Extends the context using an extender.
|
|
@@ -29,9 +29,7 @@ export type ContextBuilder<Init extends ContextBaseShape, Ctx extends ContextBas
|
|
|
29
29
|
build(): Ctx;
|
|
30
30
|
};
|
|
31
31
|
/**
|
|
32
|
-
*
|
|
33
|
-
*
|
|
34
|
-
* The initializer and transformer
|
|
32
|
+
* Creates a context builder.
|
|
35
33
|
*
|
|
36
34
|
* @param init The initial context or an context initializer.
|
|
37
35
|
* @return the context builder where you can
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;AAE3D;;;;GAIG;AACH,MAAM,MAAM,eAAe,CACzB,OAAO,EACP,UAAU,IACR,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAElD,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;AAE3D;;;;GAIG;AACH,MAAM,MAAM,eAAe,CACzB,OAAO,EACP,UAAU,IACR,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,CAAA;AAEtC,MAAM,MAAM,cAAc,CACxB,IAAI,SAAS,gBAAgB,EAC7B,GAAG,SAAS,gBAAgB,IAC1B;IACF;;;;;;;;;;;;;;OAcG;IACH,MAAM,CACJ,UAAU,SAAS,gBAAgB,GAAG,gBAAgB,EACtD,QAAQ,EAAE,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,GACxC,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IACpD;;OAEG;IACH,KAAK,IAAI,GAAG,CAAA;CACb,CAAA;AAED;;;;;;;GAOG;AACH,wBAAgB,OAAO,CACrB,IAAI,SAAS,gBAAgB,EAC7B,GAAG,SAAS,gBAAgB,GAAG,IAAI,EACnC,IAAI,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAKvD"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* The initializer and transformer
|
|
2
|
+
* Creates a context builder.
|
|
5
3
|
*
|
|
6
4
|
* @param init The initial context or an context initializer.
|
|
7
5
|
* @return the context builder where you can
|
|
@@ -11,18 +9,22 @@
|
|
|
11
9
|
export function context(init) {
|
|
12
10
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
13
11
|
return typeof init === 'function'
|
|
14
|
-
? contextBuilder({}, [init])
|
|
12
|
+
? contextBuilder({}, [[init]])
|
|
15
13
|
: contextBuilder(init ?? {}, []);
|
|
16
14
|
}
|
|
17
|
-
|
|
15
|
+
/* eslint-disable */
|
|
16
|
+
function contextBuilder(init, extenders) {
|
|
18
17
|
return {
|
|
19
|
-
extend(
|
|
20
|
-
return contextBuilder(init,
|
|
18
|
+
extend(extender) {
|
|
19
|
+
return contextBuilder(init, extenders.concat([[extender]]));
|
|
21
20
|
},
|
|
22
21
|
build() {
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
return extenders.reduce((p, [t], i) => {
|
|
23
|
+
const v = typeof t === 'function' ? extenders[i][0] = t(p) : t;
|
|
24
|
+
return { ...p, ...v };
|
|
25
|
+
}, init);
|
|
25
26
|
}
|
|
26
27
|
};
|
|
27
28
|
}
|
|
29
|
+
/* eslint-enable */
|
|
28
30
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":"AA2CA
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../ts/functional/context.ts"],"names":[],"mappings":"AA2CA;;;;;;;GAOG;AACH,MAAM,UAAU,OAAO,CAGrB,IAA0B;IAC1B,+DAA+D;IAC/D,OAAO,OAAO,IAAI,KAAK,UAAU;QAC/B,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAQ,CAAA;AAC3C,CAAC;AAED,oBAAoB;AACpB,SAAS,cAAc,CAAC,IAAsB,EAAE,SAAmD;IACjG,OAAO;QACL,MAAM,CAAC,QAAmC;YACxC,OAAO,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QAC7D,CAAC;QACD,KAAK;YACH,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBACpC,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC9D,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;YACvB,CAAC,EAAE,IAAI,CAAC,CAAA;QACV,CAAC;KACF,CAAA;AACH,CAAC;AACD,mBAAmB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { AssertOrder } from 'assertron';
|
|
1
2
|
import { context, isType } from '../index.js';
|
|
2
3
|
describe(`${context.name}()`, () => {
|
|
3
4
|
it('allows no param', () => {
|
|
@@ -48,5 +49,32 @@ describe(`${context.name}()`, () => {
|
|
|
48
49
|
isType.equal();
|
|
49
50
|
expect(r).toEqual({ a: 1, b: 2 });
|
|
50
51
|
});
|
|
52
|
+
it('invoke each extender only once', () => {
|
|
53
|
+
const o = new AssertOrder(4);
|
|
54
|
+
const c1 = context({ a: 1 })
|
|
55
|
+
.extend(() => {
|
|
56
|
+
o.once(1);
|
|
57
|
+
return ({ b: 2 });
|
|
58
|
+
})
|
|
59
|
+
.extend(() => {
|
|
60
|
+
o.once(2);
|
|
61
|
+
return ({ c: 3 });
|
|
62
|
+
});
|
|
63
|
+
const c2 = c1.extend(() => {
|
|
64
|
+
o.once(3);
|
|
65
|
+
return ({ d: 4 });
|
|
66
|
+
});
|
|
67
|
+
const c3 = c1.extend(() => {
|
|
68
|
+
o.once(4);
|
|
69
|
+
return ({ e: 5 });
|
|
70
|
+
});
|
|
71
|
+
const r2 = c2.build();
|
|
72
|
+
const r3 = c3.build();
|
|
73
|
+
const r1 = c1.build();
|
|
74
|
+
expect(r2).toEqual({ a: 1, b: 2, c: 3, d: 4 });
|
|
75
|
+
expect(r3).toEqual({ a: 1, b: 2, c: 3, e: 5 });
|
|
76
|
+
expect(r1).toEqual({ a: 1, b: 2, c: 3 });
|
|
77
|
+
o.end();
|
|
78
|
+
});
|
|
51
79
|
});
|
|
52
80
|
//# sourceMappingURL=context.spec.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.spec.js","sourceRoot":"","sources":["../../ts/functional/context.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAE7C,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC,KAAK,EAAE,CAAA;QAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QACnC,MAAM,CAAC,KAAK,EAAiC,CAAA;QAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;QAChC,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAA;QAC3C,MAAM,CAAC,KAAK,EAAiC,CAAA;QAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACxB,MAAM,CAAC,GAAG,CAAC,EAAE;YACZ,MAAM,CAAC,KAAK,EAAmC,CAAA;YAC/C,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;QACzB,CAAC,CAAC;aACD,KAAK,EAAE,CAAA;QAEV,MAAM,CAAC,KAAK,EAA4C,CAAA;QACxD,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACxB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aACjC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;aACrC,KAAK,EAAE,CAAA;QAEV,MAAM,CAAC,KAAK,EAAuD,CAAA;QACnE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,SAAS,GAAG,CAAC,GAAkB;YAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;QACzB,CAAC;QACD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;QAErD,MAAM,CAAC,KAAK,EAAuD,CAAA;QACnE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACzC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACxB,MAAM,CAA4B,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;aAC5D,KAAK,EAAE,CAAA;QAEV,MAAM,CAAC,KAAK,EAAwD,CAAA;QACpE,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"context.spec.js","sourceRoot":"","sources":["../../ts/functional/context.spec.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/ts/functional/context.ts
CHANGED
|
@@ -10,7 +10,7 @@ export type ContextBaseShape = Record<string | symbol, any>
|
|
|
10
10
|
export type ContextExtender<
|
|
11
11
|
Current,
|
|
12
12
|
Additional
|
|
13
|
-
> = (context: Current) => Additional
|
|
13
|
+
> = ((context: Current) => Additional)
|
|
14
14
|
|
|
15
15
|
export type ContextBuilder<
|
|
16
16
|
Init extends ContextBaseShape,
|
|
@@ -42,9 +42,7 @@ export type ContextBuilder<
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* The initializer and transformer
|
|
45
|
+
* Creates a context builder.
|
|
48
46
|
*
|
|
49
47
|
* @param init The initial context or an context initializer.
|
|
50
48
|
* @return the context builder where you can
|
|
@@ -57,18 +55,22 @@ export function context<
|
|
|
57
55
|
>(init?: Init | (() => Init)): ContextBuilder<Init, Ctx> {
|
|
58
56
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-return
|
|
59
57
|
return typeof init === 'function'
|
|
60
|
-
? contextBuilder({}, [init])
|
|
58
|
+
? contextBuilder({}, [[init]])
|
|
61
59
|
: contextBuilder(init ?? {}, []) as any
|
|
62
60
|
}
|
|
63
61
|
|
|
64
|
-
|
|
62
|
+
/* eslint-disable */
|
|
63
|
+
function contextBuilder(init: ContextBaseShape, extenders: Array<[ContextExtender<any, any> | any]>) {
|
|
65
64
|
return {
|
|
66
|
-
extend(
|
|
67
|
-
return contextBuilder(init,
|
|
65
|
+
extend(extender: ContextExtender<any, any>) {
|
|
66
|
+
return contextBuilder(init, extenders.concat([[extender]]))
|
|
68
67
|
},
|
|
69
68
|
build() {
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
return extenders.reduce((p, [t], i) => {
|
|
70
|
+
const v = typeof t === 'function' ? extenders[i][0] = t(p) : t
|
|
71
|
+
return { ...p, ...v }
|
|
72
|
+
}, init)
|
|
72
73
|
}
|
|
73
74
|
}
|
|
74
75
|
}
|
|
76
|
+
/* eslint-enable */
|