@tko/provider.multi 4.0.0-beta1.3 → 4.0.0

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.
@@ -1,20 +1,20 @@
1
- // @tko/provider.multi 🥊 4.0.0-beta1.3 ESM
2
- import {
3
- Provider
4
- } from "@tko/provider";
1
+ // @tko/provider.multi 🥊 4.0.0 ESM
2
+ "use strict";
3
+ import { Provider } from "@tko/provider";
5
4
  export default class MultiProvider extends Provider {
6
5
  get FOR_NODE_TYPES() {
7
6
  return this.nodeTypes;
8
7
  }
9
- constructor(params = {}) {
8
+ constructor(params) {
10
9
  super(params);
11
- const providers = params.providers || [];
10
+ const providers = params?.providers || [];
12
11
  this.nodeTypeMap = {};
13
12
  this.nodeTypes = [];
14
13
  this.providers = [];
15
14
  providers.forEach((p) => this.addProvider(p));
16
15
  }
17
16
  setGlobals(globals) {
17
+ ;
18
18
  [this, ...this.providers].forEach((p) => p.globals = globals);
19
19
  }
20
20
  addProvider(provider) {
@@ -24,7 +24,7 @@ export default class MultiProvider extends Provider {
24
24
  const nodeTypeMap = this.nodeTypeMap;
25
25
  for (const nodeType of provider.FOR_NODE_TYPES) {
26
26
  if (!nodeTypeMap[nodeType]) {
27
- nodeTypeMap[nodeType] = [];
27
+ nodeTypeMap[nodeType] = new Array();
28
28
  }
29
29
  nodeTypeMap[nodeType].push(provider);
30
30
  }
@@ -33,7 +33,7 @@ export default class MultiProvider extends Provider {
33
33
  providersFor(node) {
34
34
  return this.nodeTypeMap[node.nodeType] || [];
35
35
  }
36
- nodeHasBindings(node) {
36
+ nodeHasBindings(node, context) {
37
37
  return this.providersFor(node).some((p) => p.nodeHasBindings(node));
38
38
  }
39
39
  preprocessNode(node) {
@@ -43,10 +43,11 @@ export default class MultiProvider extends Provider {
43
43
  return newNodes;
44
44
  }
45
45
  }
46
+ return null;
46
47
  }
47
- *enumerateProviderBindings(node, ctx) {
48
+ *enumerateProviderBindings(node, context) {
48
49
  for (const provider of this.providersFor(node)) {
49
- const bindings = provider.getBindingAccessors(node, ctx);
50
+ const bindings = provider.getBindingAccessors(node, context);
50
51
  if (!bindings) {
51
52
  continue;
52
53
  }
@@ -56,9 +57,9 @@ export default class MultiProvider extends Provider {
56
57
  }
57
58
  }
58
59
  }
59
- getBindingAccessors(node, ctx) {
60
+ getBindingAccessors(node, context) {
60
61
  const bindings = {};
61
- for (const [key, accessor] of this.enumerateProviderBindings(node, ctx)) {
62
+ for (const [key, accessor] of this.enumerateProviderBindings(node, context)) {
62
63
  if (key in bindings) {
63
64
  throw new Error(`The binding "${key}" is duplicated by multiple providers`);
64
65
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/MultiProvider.ts"],
4
- "sourcesContent": ["\nimport {\n Provider\n} from '@tko/provider'\n\nexport default class MultiProvider extends Provider {\n get FOR_NODE_TYPES () { return this.nodeTypes }\n\n constructor (params = {}) {\n super(params)\n const providers = params.providers || []\n this.nodeTypeMap = {}\n this.nodeTypes = []\n this.providers = []\n providers.forEach(p => this.addProvider(p))\n }\n\n setGlobals (globals) {\n [this, ...this.providers].forEach(p => (p.globals = globals))\n }\n\n addProvider (provider) {\n this.providers.push(provider)\n provider.bindingHandlers = this.bindingHandlers\n provider.globals = this.globals\n const nodeTypeMap = this.nodeTypeMap\n for (const nodeType of provider.FOR_NODE_TYPES) {\n if (!nodeTypeMap[nodeType]) { nodeTypeMap[nodeType] = [] }\n nodeTypeMap[nodeType].push(provider)\n }\n this.nodeTypes = Object.keys(this.nodeTypeMap).map(k => parseInt(k, 10))\n }\n\n providersFor (node) {\n return this.nodeTypeMap[node.nodeType] || []\n }\n\n nodeHasBindings (node) {\n return this.providersFor(node).some(p => p.nodeHasBindings(node))\n }\n\n preprocessNode (node) {\n for (const provider of this.providersFor(node)) {\n const newNodes = provider.preprocessNode(node)\n if (newNodes) { return newNodes }\n }\n }\n\n * enumerateProviderBindings (node, ctx) {\n for (const provider of this.providersFor(node)) {\n const bindings = provider.getBindingAccessors(node, ctx)\n if (!bindings) { continue }\n yield * Object.entries(bindings || {})\n if (provider.preemptive) { return }\n }\n }\n\n getBindingAccessors (node, ctx) {\n const bindings = {}\n for (const [key, accessor] of this.enumerateProviderBindings(node, ctx)) {\n if (key in bindings) {\n throw new Error(`The binding \"${key}\" is duplicated by multiple providers`)\n }\n bindings[key] = accessor\n }\n return bindings\n }\n}\n"],
5
- "mappings": ";AACA;AAAA;AAAA;AAIA,qBAAqB,sBAAsB,SAAS;AAAA,MAC9C,iBAAkB;AAAE,WAAO,KAAK;AAAA,EAAU;AAAA,EAE9C,YAAa,SAAS,CAAC,GAAG;AACxB,UAAM,MAAM;AACZ,UAAM,YAAY,OAAO,aAAa,CAAC;AACvC,SAAK,cAAc,CAAC;AACpB,SAAK,YAAY,CAAC;AAClB,SAAK,YAAY,CAAC;AAClB,cAAU,QAAQ,OAAK,KAAK,YAAY,CAAC,CAAC;AAAA,EAC5C;AAAA,EAEA,WAAY,SAAS;AACnB,KAAC,MAAM,GAAG,KAAK,SAAS,EAAE,QAAQ,OAAM,EAAE,UAAU,OAAQ;AAAA,EAC9D;AAAA,EAEA,YAAa,UAAU;AACrB,SAAK,UAAU,KAAK,QAAQ;AAC5B,aAAS,kBAAkB,KAAK;AAChC,aAAS,UAAU,KAAK;AACxB,UAAM,cAAc,KAAK;AACzB,eAAW,YAAY,SAAS,gBAAgB;AAC9C,UAAI,CAAC,YAAY,WAAW;AAAE,oBAAY,YAAY,CAAC;AAAA,MAAE;AACzD,kBAAY,UAAU,KAAK,QAAQ;AAAA,IACrC;AACA,SAAK,YAAY,OAAO,KAAK,KAAK,WAAW,EAAE,IAAI,OAAK,SAAS,GAAG,EAAE,CAAC;AAAA,EACzE;AAAA,EAEA,aAAc,MAAM;AAClB,WAAO,KAAK,YAAY,KAAK,aAAa,CAAC;AAAA,EAC7C;AAAA,EAEA,gBAAiB,MAAM;AACrB,WAAO,KAAK,aAAa,IAAI,EAAE,KAAK,OAAK,EAAE,gBAAgB,IAAI,CAAC;AAAA,EAClE;AAAA,EAEA,eAAgB,MAAM;AACpB,eAAW,YAAY,KAAK,aAAa,IAAI,GAAG;AAC9C,YAAM,WAAW,SAAS,eAAe,IAAI;AAC7C,UAAI,UAAU;AAAE,eAAO;AAAA,MAAS;AAAA,IAClC;AAAA,EACF;AAAA,GAEE,0BAA2B,MAAM,KAAK;AACtC,eAAW,YAAY,KAAK,aAAa,IAAI,GAAG;AAC9C,YAAM,WAAW,SAAS,oBAAoB,MAAM,GAAG;AACvD,UAAI,CAAC,UAAU;AAAE;AAAA,MAAS;AAC1B,aAAQ,OAAO,QAAQ,YAAY,CAAC,CAAC;AACrC,UAAI,SAAS,YAAY;AAAE;AAAA,MAAO;AAAA,IACpC;AAAA,EACF;AAAA,EAEA,oBAAqB,MAAM,KAAK;AAC9B,UAAM,WAAW,CAAC;AAClB,eAAW,CAAC,KAAK,aAAa,KAAK,0BAA0B,MAAM,GAAG,GAAG;AACvE,UAAI,OAAO,UAAU;AACnB,cAAM,IAAI,MAAM,gBAAgB,0CAA0C;AAAA,MAC5E;AACA,eAAS,OAAO;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACF;",
4
+ "sourcesContent": ["import { Provider } from '@tko/provider'\n\nimport type { ProviderParamsInput } from '@tko/provider'\n\nimport type { BindingContext } from '@tko/bind'\n\nexport default class MultiProvider extends Provider {\n nodeTypes: number[]\n nodeTypeMap: Record<string, any[]>\n providers: any[]\n\n override get FOR_NODE_TYPES() {\n return this.nodeTypes\n }\n\n constructor(params?: ProviderParamsInput | null) {\n super(params)\n const providers = params?.providers || []\n this.nodeTypeMap = {}\n this.nodeTypes = []\n this.providers = []\n providers.forEach(p => this.addProvider(p))\n }\n\n override setGlobals(globals) {\n ;[this, ...this.providers].forEach(p => (p.globals = globals))\n }\n\n addProvider(provider: Provider) {\n this.providers.push(provider)\n provider.bindingHandlers = this.bindingHandlers\n provider.globals = this.globals\n const nodeTypeMap = this.nodeTypeMap\n for (const nodeType of provider.FOR_NODE_TYPES) {\n if (!nodeTypeMap[nodeType]) {\n nodeTypeMap[nodeType] = new Array()\n }\n nodeTypeMap[nodeType].push(provider)\n }\n this.nodeTypes = Object.keys(this.nodeTypeMap).map(k => parseInt(k, 10))\n }\n\n providersFor(node: Node): any[] {\n return this.nodeTypeMap[node.nodeType] || []\n }\n\n override nodeHasBindings(node: Node, context?: BindingContext): boolean {\n return this.providersFor(node).some(p => p.nodeHasBindings(node))\n }\n\n override preprocessNode(node: Node): Node[] | null {\n for (const provider of this.providersFor(node)) {\n const newNodes = provider.preprocessNode(node)\n if (newNodes) {\n return newNodes\n }\n }\n return null\n }\n\n *enumerateProviderBindings(node: Node, context) {\n for (const provider of this.providersFor(node)) {\n const bindings = provider.getBindingAccessors(node, context)\n if (!bindings) {\n continue\n }\n yield* Object.entries(bindings || {})\n if (provider.preemptive) {\n return\n }\n }\n }\n\n override getBindingAccessors(node: Node, context?: BindingContext) {\n const bindings = {}\n for (const [key, accessor] of this.enumerateProviderBindings(node, context)) {\n if (key in bindings) {\n throw new Error(`The binding \"${key}\" is duplicated by multiple providers`)\n }\n bindings[key] = accessor\n }\n return bindings\n }\n}\n"],
5
+ "mappings": ";;AAAA,SAAS,gBAAgB;AAMzB,qBAAqB,sBAAsB,SAAS;AAAA,EAKlD,IAAa,iBAAiB;AAC5B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAAY,QAAqC;AAC/C,UAAM,MAAM;AACZ,UAAM,YAAY,QAAQ,aAAa,CAAC;AACxC,SAAK,cAAc,CAAC;AACpB,SAAK,YAAY,CAAC;AAClB,SAAK,YAAY,CAAC;AAClB,cAAU,QAAQ,OAAK,KAAK,YAAY,CAAC,CAAC;AAAA,EAC5C;AAAA,EAES,WAAW,SAAS;AAC3B;AAAC,KAAC,MAAM,GAAG,KAAK,SAAS,EAAE,QAAQ,OAAM,EAAE,UAAU,OAAQ;AAAA,EAC/D;AAAA,EAEA,YAAY,UAAoB;AAC9B,SAAK,UAAU,KAAK,QAAQ;AAC5B,aAAS,kBAAkB,KAAK;AAChC,aAAS,UAAU,KAAK;AACxB,UAAM,cAAc,KAAK;AACzB,eAAW,YAAY,SAAS,gBAAgB;AAC9C,UAAI,CAAC,YAAY,QAAQ,GAAG;AAC1B,oBAAY,QAAQ,IAAI,IAAI,MAAM;AAAA,MACpC;AACA,kBAAY,QAAQ,EAAE,KAAK,QAAQ;AAAA,IACrC;AACA,SAAK,YAAY,OAAO,KAAK,KAAK,WAAW,EAAE,IAAI,OAAK,SAAS,GAAG,EAAE,CAAC;AAAA,EACzE;AAAA,EAEA,aAAa,MAAmB;AAC9B,WAAO,KAAK,YAAY,KAAK,QAAQ,KAAK,CAAC;AAAA,EAC7C;AAAA,EAES,gBAAgB,MAAY,SAAmC;AACtE,WAAO,KAAK,aAAa,IAAI,EAAE,KAAK,OAAK,EAAE,gBAAgB,IAAI,CAAC;AAAA,EAClE;AAAA,EAES,eAAe,MAA2B;AACjD,eAAW,YAAY,KAAK,aAAa,IAAI,GAAG;AAC9C,YAAM,WAAW,SAAS,eAAe,IAAI;AAC7C,UAAI,UAAU;AACZ,eAAO;AAAA,MACT;AAAA,IACF;AACA,WAAO;AAAA,EACT;AAAA,EAEA,CAAC,0BAA0B,MAAY,SAAS;AAC9C,eAAW,YAAY,KAAK,aAAa,IAAI,GAAG;AAC9C,YAAM,WAAW,SAAS,oBAAoB,MAAM,OAAO;AAC3D,UAAI,CAAC,UAAU;AACb;AAAA,MACF;AACA,aAAO,OAAO,QAAQ,YAAY,CAAC,CAAC;AACpC,UAAI,SAAS,YAAY;AACvB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AAAA,EAES,oBAAoB,MAAY,SAA0B;AACjE,UAAM,WAAW,CAAC;AAClB,eAAW,CAAC,KAAK,QAAQ,KAAK,KAAK,0BAA0B,MAAM,OAAO,GAAG;AAC3E,UAAI,OAAO,UAAU;AACnB,cAAM,IAAI,MAAM,gBAAgB,GAAG,uCAAuC;AAAA,MAC5E;AACA,eAAS,GAAG,IAAI;AAAA,IAClB;AACA,WAAO;AAAA,EACT;AACF;",
6
6
  "names": []
7
7
  }