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.
@@ -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
- * A fluent context builder.
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;AAEpC,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;;;;;;;;;GASG;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
+ {"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
- * A fluent context builder.
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
- function contextBuilder(init, transformers) {
30
+ /* eslint-disable */
31
+ function contextBuilder(init, extenders) {
33
32
  return {
34
- extend: function (transformer) {
35
- return contextBuilder(init, transformers.concat(transformer));
33
+ extend: function (extender) {
34
+ return contextBuilder(init, extenders.concat([[extender]]));
36
35
  },
37
36
  build: function () {
38
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
39
- return transformers.reduce(function (p, t) { return (__assign(__assign({}, p), t(p))); }, init);
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;;;;;;;;;GASG;AACH,SAAgB,OAAO,CAGrB,IAA0B;IAC1B,+DAA+D;IAC/D,OAAO,OAAO,IAAI,KAAK,UAAU;QAC/B,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,cAAc,CAAC,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,EAAE,EAAE,EAAE,CAAQ,CAAA;AAC3C,CAAC;AARD,0BAQC;AAED,SAAS,cAAc,CAAC,IAAsB,EAAE,YAAyC;IACvF,OAAO;QACL,MAAM,YAAC,WAAsC;YAC3C,OAAO,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,CAAC;QACD,KAAK;YACH,+DAA+D;YAC/D,OAAO,YAAY,CAAC,MAAM,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,uBAAM,CAAC,GAAK,CAAC,CAAC,CAAC,CAAC,EAAG,EAAnB,CAAmB,EAAE,IAAI,CAAC,CAAA;QACjE,CAAC;KACF,CAAA;AACH,CAAC"}
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":";;AAAA,uCAAuC;AACvC,wCAA6C;AAE7C,QAAQ,CAAC,UAAG,kBAAO,CAAC,IAAI,OAAI,EAAE;IAC5B,EAAE,CAAC,iBAAiB,EAAE;QACpB,IAAM,CAAC,GAAG,IAAA,kBAAO,GAAE,CAAC,KAAK,EAAE,CAAA;QAC3B,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE;QACrC,IAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,CAAA;QACnC,iBAAM,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;QAC3B,IAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,cAAM,OAAA,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAV,CAAU,CAAC,CAAC,KAAK,EAAE,CAAA;QAC3C,iBAAM,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;QACvC,IAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACxB,MAAM,CAAC,UAAA,GAAG;YACT,iBAAM,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,iBAAM,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;QAC1D,IAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACxB,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAlB,CAAkB,CAAC;aACjC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,EAAtB,CAAsB,CAAC;aACrC,KAAK,EAAE,CAAA;QAEV,iBAAM,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;QACzD,SAAS,GAAG,CAAC,GAAkB;YAC7B,OAAO,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;QACzB,CAAC;QACD,IAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAA;QAErD,iBAAM,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;QAC9C,IAAM,CAAC,GAAG,IAAA,kBAAO,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACxB,MAAM,CAA4B,UAAA,GAAG,IAAI,OAAA,CAAC,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAlB,CAAkB,CAAC;aAC5D,KAAK,EAAE,CAAA;QAEV,iBAAM,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;IAEF,EAAE,CAAC,gCAAgC,EAAE;QACnC,IAAM,CAAC,GAAG,IAAI,uBAAW,CAAC,CAAC,CAAC,CAAA;QAC5B,IAAM,EAAE,GAAG,IAAA,kBAAO,EAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACzB,MAAM,CAAC;YACN,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACT,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACnB,CAAC,CAAC;aACD,MAAM,CAAC;YACN,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACT,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QAEJ,IAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACT,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QACF,IAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YACT,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;QAEF,IAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;QACrB,IAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;QACrB,IAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAA;QAErB,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAC9C,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QAExC,CAAC,CAAC,GAAG,EAAE,CAAA;IACT,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -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
- * A fluent context builder.
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;AAEpC,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;;;;;;;;;GASG;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
+ {"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
- * A fluent context builder.
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
- function contextBuilder(init, transformers) {
15
+ /* eslint-disable */
16
+ function contextBuilder(init, extenders) {
18
17
  return {
19
- extend(transformer) {
20
- return contextBuilder(init, transformers.concat(transformer));
18
+ extend(extender) {
19
+ return contextBuilder(init, extenders.concat([[extender]]));
21
20
  },
22
21
  build() {
23
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
24
- return transformers.reduce((p, t) => ({ ...p, ...t(p) }), init);
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;;;;;;;;;GASG;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,IAAI,CAAC,CAAC;QAC5B,CAAC,CAAC,cAAc,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,CAAQ,CAAA;AAC3C,CAAC;AAED,SAAS,cAAc,CAAC,IAAsB,EAAE,YAAyC;IACvF,OAAO;QACL,MAAM,CAAC,WAAsC;YAC3C,OAAO,cAAc,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAA;QAC/D,CAAC;QACD,KAAK;YACH,+DAA+D;YAC/D,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;QACjE,CAAC;KACF,CAAA;AACH,CAAC"}
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":"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"}
1
+ {"version":3,"file":"context.spec.js","sourceRoot":"","sources":["../../ts/functional/context.spec.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "type-plus",
3
- "version": "5.5.0",
3
+ "version": "5.5.1",
4
4
  "description": "Provides additional types for TypeScript.",
5
5
  "homepage": "https://github.com/unional/type-plus",
6
6
  "bugs": {
@@ -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
- * A fluent context builder.
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
- function contextBuilder(init: ContextBaseShape, transformers: ContextExtender<any, any>[]) {
62
+ /* eslint-disable */
63
+ function contextBuilder(init: ContextBaseShape, extenders: Array<[ContextExtender<any, any> | any]>) {
65
64
  return {
66
- extend(transformer: ContextExtender<any, any>) {
67
- return contextBuilder(init, transformers.concat(transformer))
65
+ extend(extender: ContextExtender<any, any>) {
66
+ return contextBuilder(init, extenders.concat([[extender]]))
68
67
  },
69
68
  build() {
70
- // eslint-disable-next-line @typescript-eslint/no-unsafe-return
71
- return transformers.reduce((p, t) => ({ ...p, ...t(p) }), init)
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 */