@lynxwall/cucumber-tsflow 5.0.6 → 5.0.7

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.
Files changed (50) hide show
  1. package/README.md +8 -8
  2. package/lib/behave.js +5 -15
  3. package/lib/cli/argv-parser.js +97 -107
  4. package/lib/cli/index.js +81 -91
  5. package/lib/cli/load-configuration.js +78 -89
  6. package/lib/cli/run.js +37 -47
  7. package/lib/cucumber/binding-decorator.js +163 -173
  8. package/lib/cucumber/binding-registry.js +198 -208
  9. package/lib/cucumber/hook-decorators.js +99 -109
  10. package/lib/cucumber/managed-scenario-context.js +71 -81
  11. package/lib/cucumber/message-collector.js +115 -125
  12. package/lib/cucumber/step-definition-decorators.js +86 -96
  13. package/lib/cucumber/utils.js +73 -83
  14. package/lib/esnode.js +3 -4
  15. package/lib/esvue.js +35 -46
  16. package/lib/formatters/behave-json-formatter.js +47 -58
  17. package/lib/formatters/tsflow-snippet-syntax.js +89 -99
  18. package/lib/gherkin/configuration.js +26 -36
  19. package/lib/gherkin/gherkin-feature.js +285 -295
  20. package/lib/gherkin/gherkin-manager.js +93 -103
  21. package/lib/gherkin/models.js +2 -12
  22. package/lib/index.js +9 -19
  23. package/lib/snippet.js +5 -15
  24. package/lib/transpilers/esbuild-transpiler.js +19 -29
  25. package/lib/transpilers/esbuild.js +51 -62
  26. package/lib/transpilers/vue-sfc/compiler.js +20 -30
  27. package/lib/transpilers/vue-sfc/index.d.ts +0 -2
  28. package/lib/transpilers/vue-sfc/index.js +44 -61
  29. package/lib/transpilers/vue-sfc/main.js +223 -235
  30. package/lib/transpilers/vue-sfc/script.js +40 -51
  31. package/lib/transpilers/vue-sfc/template.js +94 -105
  32. package/lib/transpilers/vue-sfc/types.js +2 -12
  33. package/lib/transpilers/vue-sfc/utils/descriptorCache.d.ts +1 -1
  34. package/lib/transpilers/vue-sfc/utils/descriptorCache.js +52 -62
  35. package/lib/transpilers/vue-sfc/utils/error.js +22 -32
  36. package/lib/transpilers/vue-sfc/utils/query.js +32 -42
  37. package/lib/tsnode.js +3 -4
  38. package/lib/tsvue.js +34 -45
  39. package/lib/types/scenario-context.js +4 -14
  40. package/lib/types/scenario-info.js +18 -28
  41. package/lib/types/step-binding-flags.js +57 -67
  42. package/lib/types/step-binding.js +4 -14
  43. package/lib/types/types.js +2 -12
  44. package/lib/utils/helpers.js +17 -27
  45. package/lib/utils/logger.js +7 -17
  46. package/lib/utils/our-callsite.d.ts +1 -0
  47. package/lib/utils/our-callsite.js +43 -50
  48. package/lib/version.d.ts +1 -1
  49. package/lib/version.js +6 -16
  50. package/package.json +11 -13
@@ -1,228 +1,218 @@
1
+ "use strict";
1
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
2
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
3
4
  };
4
- (function (factory) {
5
- if (typeof module === "object" && typeof module.exports === "object") {
6
- var v = factory(require, exports);
7
- if (v !== undefined) module.exports = v;
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BindingRegistry = exports.DEFAULT_TAG = exports.DEFAULT_STEP_PATTERN = void 0;
7
+ const underscore_1 = __importDefault(require("underscore"));
8
+ const step_binding_1 = require("../types/step-binding");
9
+ /**
10
+ * Represents the default step pattern.
11
+ */
12
+ exports.DEFAULT_STEP_PATTERN = '/.*/';
13
+ /**
14
+ * Represents the default tag.
15
+ */
16
+ exports.DEFAULT_TAG = '*';
17
+ /**
18
+ * A metadata registry that captures information about bindings and their bound step bindings.
19
+ */
20
+ class BindingRegistry {
21
+ constructor() {
22
+ this._bindings = new Map();
23
+ this._targetBindings = new Map();
24
+ /**
25
+ * Updates the SupportCodeLibrary from Cucumber with
26
+ * callsite information from tsflow bindings
27
+ * @param library
28
+ * @returns
29
+ */
30
+ this.updateSupportCodeLibrary = (library) => {
31
+ this._targetBindings.forEach(binding => {
32
+ binding.stepBindings.forEach(stepBinding => {
33
+ let cucumberDefinition = undefined;
34
+ switch (stepBinding.bindingType) {
35
+ case step_binding_1.StepBindingFlags.beforeAll:
36
+ cucumberDefinition = library.beforeTestRunHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
37
+ break;
38
+ case step_binding_1.StepBindingFlags.before:
39
+ cucumberDefinition = library.beforeTestCaseHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
40
+ break;
41
+ case step_binding_1.StepBindingFlags.beforeStep:
42
+ cucumberDefinition = library.beforeTestStepHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
43
+ break;
44
+ case step_binding_1.StepBindingFlags.given:
45
+ cucumberDefinition = library.stepDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
46
+ break;
47
+ case step_binding_1.StepBindingFlags.when:
48
+ cucumberDefinition = library.stepDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
49
+ break;
50
+ case step_binding_1.StepBindingFlags.then:
51
+ cucumberDefinition = library.stepDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
52
+ break;
53
+ case step_binding_1.StepBindingFlags.afterStep:
54
+ cucumberDefinition = library.afterTestStepHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
55
+ break;
56
+ case step_binding_1.StepBindingFlags.after:
57
+ cucumberDefinition = library.afterTestCaseHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
58
+ break;
59
+ case step_binding_1.StepBindingFlags.afterAll:
60
+ cucumberDefinition = library.afterTestRunHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
61
+ break;
62
+ }
63
+ if (cucumberDefinition) {
64
+ cucumberDefinition.line = stepBinding.callsite.lineNumber;
65
+ cucumberDefinition.uri = stepBinding.callsite.filename;
66
+ }
67
+ });
68
+ });
69
+ return library;
70
+ };
8
71
  }
9
- else if (typeof define === "function" && define.amd) {
10
- define(["require", "exports", "underscore", "../types/step-binding"], factory);
72
+ /**
73
+ * Gets the binding registry singleton.
74
+ *
75
+ * @returns A [[BindingRegistry]].
76
+ */
77
+ static get instance() {
78
+ const BINDING_REGISTRY_SLOTNAME = '__CUCUMBER_TSFLOW_BINDINGREGISTRY';
79
+ const registry = global[BINDING_REGISTRY_SLOTNAME];
80
+ if (!registry) {
81
+ global[BINDING_REGISTRY_SLOTNAME] = new BindingRegistry();
82
+ }
83
+ return registry || global[BINDING_REGISTRY_SLOTNAME];
11
84
  }
12
- })(function (require, exports) {
13
- "use strict";
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.BindingRegistry = exports.DEFAULT_TAG = exports.DEFAULT_STEP_PATTERN = void 0;
16
- const underscore_1 = __importDefault(require("underscore"));
17
- const step_binding_1 = require("../types/step-binding");
18
85
  /**
19
- * Represents the default step pattern.
86
+ * Updates the binding registry with information about the context types required by a
87
+ * binding class.
88
+ *
89
+ * @param targetPrototype The class representing the binding (constructor function).
90
+ * @param contextTypes An array of [[ContextType]] that define the types of objects that
91
+ * should be injected into the binding class during a scenario execution.
20
92
  */
21
- exports.DEFAULT_STEP_PATTERN = '/.*/';
93
+ registerContextTypesForTarget(targetPrototype, contextTypes) {
94
+ if (!contextTypes) {
95
+ return;
96
+ }
97
+ let targetDecorations = this._targetBindings.get(targetPrototype);
98
+ if (!targetDecorations) {
99
+ targetDecorations = {
100
+ stepBindings: [],
101
+ contextTypes: []
102
+ };
103
+ this._targetBindings.set(targetPrototype, targetDecorations);
104
+ }
105
+ targetDecorations.contextTypes = contextTypes;
106
+ }
22
107
  /**
23
- * Represents the default tag.
108
+ * Retrieves the context types that have been registered for a given binding class.
109
+ *
110
+ * @param targetPrototype The class representing the binding (constructor function).
111
+ *
112
+ * @returns An array of [[ContextType]] that have been registered for the specified
113
+ * binding class.
24
114
  */
25
- exports.DEFAULT_TAG = '*';
115
+ getContextTypesForTarget(targetPrototype) {
116
+ const targetBinding = this._targetBindings.get(targetPrototype);
117
+ if (!targetBinding) {
118
+ return [];
119
+ }
120
+ return targetBinding.contextTypes;
121
+ }
26
122
  /**
27
- * A metadata registry that captures information about bindings and their bound step bindings.
123
+ * Updates the binding registry indexes with a step binding.
124
+ *
125
+ * @param stepBinding The step binding that is to be registered with the binding registry.
28
126
  */
29
- class BindingRegistry {
30
- constructor() {
31
- this._bindings = new Map();
32
- this._targetBindings = new Map();
33
- /**
34
- * Updates the SupportCodeLibrary from Cucumber with
35
- * callsite information from tsflow bindings
36
- * @param library
37
- * @returns
38
- */
39
- this.updateSupportCodeLibrary = (library) => {
40
- this._targetBindings.forEach(binding => {
41
- binding.stepBindings.forEach(stepBinding => {
42
- let cucumberDefinition = undefined;
43
- switch (stepBinding.bindingType) {
44
- case step_binding_1.StepBindingFlags.beforeAll:
45
- cucumberDefinition = library.beforeTestRunHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
46
- break;
47
- case step_binding_1.StepBindingFlags.before:
48
- cucumberDefinition = library.beforeTestCaseHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
49
- break;
50
- case step_binding_1.StepBindingFlags.beforeStep:
51
- cucumberDefinition = library.beforeTestStepHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
52
- break;
53
- case step_binding_1.StepBindingFlags.given:
54
- cucumberDefinition = library.stepDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
55
- break;
56
- case step_binding_1.StepBindingFlags.when:
57
- cucumberDefinition = library.stepDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
58
- break;
59
- case step_binding_1.StepBindingFlags.then:
60
- cucumberDefinition = library.stepDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
61
- break;
62
- case step_binding_1.StepBindingFlags.afterStep:
63
- cucumberDefinition = library.afterTestStepHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
64
- break;
65
- case step_binding_1.StepBindingFlags.after:
66
- cucumberDefinition = library.afterTestCaseHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
67
- break;
68
- case step_binding_1.StepBindingFlags.afterAll:
69
- cucumberDefinition = library.afterTestRunHookDefinitions.find(s => s.options.cucumberKey === stepBinding.cucumberKey);
70
- break;
71
- }
72
- if (cucumberDefinition) {
73
- cucumberDefinition.line = stepBinding.callsite.lineNumber;
74
- cucumberDefinition.uri = stepBinding.callsite.filename;
75
- }
76
- });
77
- });
78
- return library;
79
- };
127
+ registerStepBinding(stepBinding) {
128
+ if (!stepBinding.tags) {
129
+ stepBinding.tags = exports.DEFAULT_TAG;
80
130
  }
81
- /**
82
- * Gets the binding registry singleton.
83
- *
84
- * @returns A [[BindingRegistry]].
85
- */
86
- static get instance() {
87
- const BINDING_REGISTRY_SLOTNAME = '__CUCUMBER_TSFLOW_BINDINGREGISTRY';
88
- const registry = global[BINDING_REGISTRY_SLOTNAME];
89
- if (!registry) {
90
- global[BINDING_REGISTRY_SLOTNAME] = new BindingRegistry();
91
- }
92
- return registry || global[BINDING_REGISTRY_SLOTNAME];
131
+ if (stepBinding.tags !== exports.DEFAULT_TAG && !stepBinding.tags.startsWith('@')) {
132
+ // tslint:disable-next-line:no-console
133
+ console.log('tag should start with @; tsflow has stopped to automatically prepend @ for you.');
93
134
  }
94
- /**
95
- * Updates the binding registry with information about the context types required by a
96
- * binding class.
97
- *
98
- * @param targetPrototype The class representing the binding (constructor function).
99
- * @param contextTypes An array of [[ContextType]] that define the types of objects that
100
- * should be injected into the binding class during a scenario execution.
101
- */
102
- registerContextTypesForTarget(targetPrototype, contextTypes) {
103
- if (!contextTypes) {
104
- return;
105
- }
106
- let targetDecorations = this._targetBindings.get(targetPrototype);
107
- if (!targetDecorations) {
108
- targetDecorations = {
109
- stepBindings: [],
110
- contextTypes: []
111
- };
112
- this._targetBindings.set(targetPrototype, targetDecorations);
113
- }
114
- targetDecorations.contextTypes = contextTypes;
135
+ const stepPattern = stepBinding.stepPattern
136
+ ? stepBinding.stepPattern.toString()
137
+ : exports.DEFAULT_STEP_PATTERN;
138
+ let tagMap = this._bindings.get(stepPattern);
139
+ if (!tagMap) {
140
+ tagMap = new Map();
141
+ this._bindings.set(stepPattern, tagMap);
115
142
  }
116
- /**
117
- * Retrieves the context types that have been registered for a given binding class.
118
- *
119
- * @param targetPrototype The class representing the binding (constructor function).
120
- *
121
- * @returns An array of [[ContextType]] that have been registered for the specified
122
- * binding class.
123
- */
124
- getContextTypesForTarget(targetPrototype) {
125
- const targetBinding = this._targetBindings.get(targetPrototype);
126
- if (!targetBinding) {
127
- return [];
128
- }
129
- return targetBinding.contextTypes;
143
+ let stepBindings = tagMap.get(stepBinding.tags);
144
+ if (!stepBindings) {
145
+ stepBindings = [];
146
+ tagMap.set(stepBinding.tags, stepBindings);
130
147
  }
131
- /**
132
- * Updates the binding registry indexes with a step binding.
133
- *
134
- * @param stepBinding The step binding that is to be registered with the binding registry.
135
- */
136
- registerStepBinding(stepBinding) {
137
- if (!stepBinding.tags) {
138
- stepBinding.tags = exports.DEFAULT_TAG;
139
- }
140
- if (stepBinding.tags !== exports.DEFAULT_TAG && !stepBinding.tags.startsWith('@')) {
141
- // tslint:disable-next-line:no-console
142
- console.log('tag should start with @; tsflow has stopped to automatically prepend @ for you.');
143
- }
144
- const stepPattern = stepBinding.stepPattern
145
- ? stepBinding.stepPattern.toString()
146
- : exports.DEFAULT_STEP_PATTERN;
147
- let tagMap = this._bindings.get(stepPattern);
148
- if (!tagMap) {
149
- tagMap = new Map();
150
- this._bindings.set(stepPattern, tagMap);
151
- }
152
- let stepBindings = tagMap.get(stepBinding.tags);
153
- if (!stepBindings) {
154
- stepBindings = [];
155
- tagMap.set(stepBinding.tags, stepBindings);
156
- }
157
- if (!stepBindings.some(b => isSameStepBinding(stepBinding, b))) {
158
- stepBindings.push(stepBinding);
159
- }
160
- // Index the step binding for the target
161
- let targetBinding = this._targetBindings.get(stepBinding.targetPrototype);
162
- if (!targetBinding) {
163
- targetBinding = {
164
- stepBindings: [],
165
- contextTypes: []
166
- };
167
- this._targetBindings.set(stepBinding.targetPrototype, targetBinding);
168
- }
169
- if (!targetBinding.stepBindings.some(b => isSameStepBinding(stepBinding, b))) {
170
- targetBinding.stepBindings.push(stepBinding);
171
- }
172
- function isSameStepBinding(a, b) {
173
- return (a.callsite.filename === b.callsite.filename &&
174
- a.callsite.lineNumber === b.callsite.lineNumber &&
175
- String(a.tags) === String(b.tags) &&
176
- String(a.stepPattern) === String(b.stepPattern));
177
- }
148
+ if (!stepBindings.some(b => isSameStepBinding(stepBinding, b))) {
149
+ stepBindings.push(stepBinding);
178
150
  }
179
- /**
180
- * Retrieves the step bindings that have been registered for a given binding class.
181
- *
182
- * @param targetPrototype The class representing the binding (constructor function).
183
- *
184
- * @returns An array of [[StepBinding]] objects that have been registered for the specified
185
- * binding class.
186
- */
187
- getStepBindingsForTarget(targetPrototype) {
188
- const targetBinding = this._targetBindings.get(targetPrototype);
189
- if (!targetBinding) {
190
- return [];
191
- }
192
- return targetBinding.stepBindings;
151
+ // Index the step binding for the target
152
+ let targetBinding = this._targetBindings.get(stepBinding.targetPrototype);
153
+ if (!targetBinding) {
154
+ targetBinding = {
155
+ stepBindings: [],
156
+ contextTypes: []
157
+ };
158
+ this._targetBindings.set(stepBinding.targetPrototype, targetBinding);
193
159
  }
194
- /**
195
- * Retrieves the step bindings for a given step pattern and collection of tag names.
196
- *
197
- * @param stepPattern The step pattern to search.
198
- * @param tags An array of [[TagName]] to search.
199
- *
200
- * @returns An array of [[StepBinding]] that map to the given step pattern and set of tag names.
201
- */
202
- getStepBindings(stepPattern, tags) {
203
- const tagMap = this._bindings.get(stepPattern);
204
- if (!tagMap) {
205
- return [];
206
- }
207
- const matchingStepBindings = this.mapTagNamesToStepBindings(tags, tagMap);
208
- if (matchingStepBindings.length > 0) {
209
- return matchingStepBindings;
210
- }
211
- return this.mapTagNamesToStepBindings(['*'], tagMap);
160
+ if (!targetBinding.stepBindings.some(b => isSameStepBinding(stepBinding, b))) {
161
+ targetBinding.stepBindings.push(stepBinding);
212
162
  }
213
- /**
214
- * Maps an array of tag names to an array of associated step bindings.
215
- *
216
- * @param tags An array of [[TagName]].
217
- * @param tagMap The map of [[TagName]] -> [[StepBinding]] to use when mapping.
218
- *
219
- * @returns An array of [[StepBinding]].
220
- */
221
- mapTagNamesToStepBindings(tags, tagMap) {
222
- const matchingStepBindings = underscore_1.default.flatten(underscore_1.default.map(tags, tag => tagMap.get(tag)));
223
- return underscore_1.default.reject(matchingStepBindings, stepBinding => stepBinding === undefined);
163
+ function isSameStepBinding(a, b) {
164
+ return (a.callsite.filename === b.callsite.filename &&
165
+ a.callsite.lineNumber === b.callsite.lineNumber &&
166
+ String(a.tags) === String(b.tags) &&
167
+ String(a.stepPattern) === String(b.stepPattern));
168
+ }
169
+ }
170
+ /**
171
+ * Retrieves the step bindings that have been registered for a given binding class.
172
+ *
173
+ * @param targetPrototype The class representing the binding (constructor function).
174
+ *
175
+ * @returns An array of [[StepBinding]] objects that have been registered for the specified
176
+ * binding class.
177
+ */
178
+ getStepBindingsForTarget(targetPrototype) {
179
+ const targetBinding = this._targetBindings.get(targetPrototype);
180
+ if (!targetBinding) {
181
+ return [];
182
+ }
183
+ return targetBinding.stepBindings;
184
+ }
185
+ /**
186
+ * Retrieves the step bindings for a given step pattern and collection of tag names.
187
+ *
188
+ * @param stepPattern The step pattern to search.
189
+ * @param tags An array of [[TagName]] to search.
190
+ *
191
+ * @returns An array of [[StepBinding]] that map to the given step pattern and set of tag names.
192
+ */
193
+ getStepBindings(stepPattern, tags) {
194
+ const tagMap = this._bindings.get(stepPattern);
195
+ if (!tagMap) {
196
+ return [];
197
+ }
198
+ const matchingStepBindings = this.mapTagNamesToStepBindings(tags, tagMap);
199
+ if (matchingStepBindings.length > 0) {
200
+ return matchingStepBindings;
224
201
  }
202
+ return this.mapTagNamesToStepBindings(['*'], tagMap);
203
+ }
204
+ /**
205
+ * Maps an array of tag names to an array of associated step bindings.
206
+ *
207
+ * @param tags An array of [[TagName]].
208
+ * @param tagMap The map of [[TagName]] -> [[StepBinding]] to use when mapping.
209
+ *
210
+ * @returns An array of [[StepBinding]].
211
+ */
212
+ mapTagNamesToStepBindings(tags, tagMap) {
213
+ const matchingStepBindings = underscore_1.default.flatten(underscore_1.default.map(tags, tag => tagMap.get(tag)));
214
+ return underscore_1.default.reject(matchingStepBindings, stepBinding => stepBinding === undefined);
225
215
  }
226
- exports.BindingRegistry = BindingRegistry;
227
- });
228
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdWN1bWJlci9iaW5kaW5nLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztJQUNBLDREQUEyQjtJQUMzQix3REFBc0U7SUFrQnRFOztPQUVHO0lBQ1UsUUFBQSxvQkFBb0IsR0FBRyxNQUFNLENBQUM7SUFFM0M7O09BRUc7SUFDVSxRQUFBLFdBQVcsR0FBRyxHQUFHLENBQUM7SUFFL0I7O09BRUc7SUFDSCxNQUFhLGVBQWU7UUFBNUI7WUFDUyxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQTRDLENBQUM7WUFDaEUsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztZQTRLeEQ7Ozs7O2VBS0c7WUFDSSw2QkFBd0IsR0FBRyxDQUFDLE9BQTRCLEVBQXVCLEVBQUU7Z0JBQ3ZGLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO29CQUN0QyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTt3QkFDMUMsSUFBSSxrQkFBa0IsR0FBb0IsU0FBUyxDQUFDO3dCQUNwRCxRQUFRLFdBQVcsQ0FBQyxXQUFXLEVBQUU7NEJBQ2hDLEtBQUssK0JBQWdCLENBQUMsU0FBUztnQ0FDOUIsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLDRCQUE0QixDQUFDLElBQUksQ0FDN0QsQ0FBQyxDQUFDLEVBQUUsQ0FBRSxDQUFDLENBQUMsT0FBZSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUMsV0FBVyxDQUMvRCxDQUFDO2dDQUNGLE1BQU07NEJBQ1AsS0FBSywrQkFBZ0IsQ0FBQyxNQUFNO2dDQUMzQixrQkFBa0IsR0FBRyxPQUFPLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUM5RCxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUMsQ0FBQyxPQUFlLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FB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
216
+ }
217
+ exports.BindingRegistry = BindingRegistry;
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluZGluZy1yZWdpc3RyeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jdWN1bWJlci9iaW5kaW5nLXJlZ2lzdHJ5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDREQUEyQjtBQUMzQix3REFBc0U7QUFrQnRFOztHQUVHO0FBQ1UsUUFBQSxvQkFBb0IsR0FBRyxNQUFNLENBQUM7QUFFM0M7O0dBRUc7QUFDVSxRQUFBLFdBQVcsR0FBRyxHQUFHLENBQUM7QUFFL0I7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFBNUI7UUFDUyxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQTRDLENBQUM7UUFDaEUsb0JBQWUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQTRLeEQ7Ozs7O1dBS0c7UUFDSSw2QkFBd0IsR0FBRyxDQUFDLE9BQTRCLEVBQXVCLEVBQUU7WUFDdkYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxFQUFFO29CQUMxQyxJQUFJLGtCQUFrQixHQUFvQixTQUFTLENBQUM7b0JBQ3BELFFBQVEsV0FBVyxDQUFDLFdBQVcsRUFBRTt3QkFDaEMsS0FBSywrQkFBZ0IsQ0FBQyxTQUFTOzRCQUM5QixrQkFBa0IsR0FBRyxPQUFPLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUM3RCxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUMsQ0FBQyxPQUFlLENBQUMsV0FBVyxLQUFLLFdBQVcsQ0FBQyxXQUFXLENBQy9ELENBQUM7NEJBQ0YsTUFBTTt3QkFDUCxLQUFLLCtCQUFnQixDQUFDLE1BQU07NEJBQzNCLGtCQUFrQixHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQzlELENBQUMsQ0FBQyxFQUFFLENBQUUsQ0FBQyxDQUFDLE9BQWUsQ0FBQyxXQUFXLEtBQUssV0FBVyxDQUFDLFdBQVcsQ0FD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