@vendasta/billing 12.9.0 → 12.10.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.
Files changed (25) hide show
  1. package/esm2020/lib/_internal/enums/index.mjs +2 -1
  2. package/esm2020/lib/_internal/enums/subscription-relationship.enum.mjs +17 -0
  3. package/esm2020/lib/_internal/index.mjs +2 -1
  4. package/esm2020/lib/_internal/interfaces/billable-item.interface.mjs +1 -1
  5. package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
  6. package/esm2020/lib/_internal/interfaces/subscription-relationship.interface.mjs +2 -0
  7. package/esm2020/lib/_internal/objects/billable-item.mjs +4 -1
  8. package/esm2020/lib/_internal/objects/index.mjs +2 -1
  9. package/esm2020/lib/_internal/objects/subscription-relationship.mjs +271 -0
  10. package/esm2020/lib/_internal/subscription-relationship.api.service.mjs +51 -0
  11. package/fesm2015/vendasta-billing.mjs +486 -159
  12. package/fesm2015/vendasta-billing.mjs.map +1 -1
  13. package/fesm2020/vendasta-billing.mjs +486 -159
  14. package/fesm2020/vendasta-billing.mjs.map +1 -1
  15. package/lib/_internal/enums/index.d.ts +1 -0
  16. package/lib/_internal/enums/subscription-relationship.enum.d.ts +8 -0
  17. package/lib/_internal/index.d.ts +1 -0
  18. package/lib/_internal/interfaces/billable-item.interface.d.ts +1 -0
  19. package/lib/_internal/interfaces/index.d.ts +1 -0
  20. package/lib/_internal/interfaces/subscription-relationship.interface.d.ts +45 -0
  21. package/lib/_internal/objects/billable-item.d.ts +1 -0
  22. package/lib/_internal/objects/index.d.ts +1 -0
  23. package/lib/_internal/objects/subscription-relationship.d.ts +71 -0
  24. package/lib/_internal/subscription-relationship.api.service.d.ts +18 -0
  25. package/package.json +1 -1
@@ -0,0 +1,271 @@
1
+ import { PagedRequestOptions, PagedResponseMetadata } from './common';
2
+ import * as e from '../enums';
3
+ export function enumStringToValue(enumRef, value) {
4
+ if (typeof value === 'number') {
5
+ return value;
6
+ }
7
+ return enumRef[value];
8
+ }
9
+ export class ListSubscriptionRelationshipsRequestFilters {
10
+ static fromProto(proto) {
11
+ let m = new ListSubscriptionRelationshipsRequestFilters();
12
+ m = Object.assign(m, proto);
13
+ if (proto.originType) {
14
+ m.originType = enumStringToValue(e.EntityType, proto.originType);
15
+ }
16
+ if (proto.targetType) {
17
+ m.targetType = enumStringToValue(e.EntityType, proto.targetType);
18
+ }
19
+ if (proto.relationshipType) {
20
+ m.relationshipType = enumStringToValue(e.RelationshipType, proto.relationshipType);
21
+ }
22
+ return m;
23
+ }
24
+ constructor(kwargs) {
25
+ if (!kwargs) {
26
+ return;
27
+ }
28
+ Object.assign(this, kwargs);
29
+ }
30
+ toApiJson() {
31
+ const toReturn = {};
32
+ if (typeof this.merchantId !== 'undefined') {
33
+ toReturn['merchantId'] = this.merchantId;
34
+ }
35
+ if (typeof this.customerId !== 'undefined') {
36
+ toReturn['customerId'] = this.customerId;
37
+ }
38
+ if (typeof this.originId !== 'undefined') {
39
+ toReturn['originId'] = this.originId;
40
+ }
41
+ if (typeof this.originType !== 'undefined') {
42
+ toReturn['originType'] = this.originType;
43
+ }
44
+ if (typeof this.targetId !== 'undefined') {
45
+ toReturn['targetId'] = this.targetId;
46
+ }
47
+ if (typeof this.targetType !== 'undefined') {
48
+ toReturn['targetType'] = this.targetType;
49
+ }
50
+ if (typeof this.relationshipType !== 'undefined') {
51
+ toReturn['relationshipType'] = this.relationshipType;
52
+ }
53
+ return toReturn;
54
+ }
55
+ }
56
+ export class GetMultiSubscriptionRelationshipsRequest {
57
+ static fromProto(proto) {
58
+ let m = new GetMultiSubscriptionRelationshipsRequest();
59
+ m = Object.assign(m, proto);
60
+ return m;
61
+ }
62
+ constructor(kwargs) {
63
+ if (!kwargs) {
64
+ return;
65
+ }
66
+ Object.assign(this, kwargs);
67
+ }
68
+ toApiJson() {
69
+ const toReturn = {};
70
+ if (typeof this.subscriptionRelationshipIds !== 'undefined') {
71
+ toReturn['subscriptionRelationshipIds'] = this.subscriptionRelationshipIds;
72
+ }
73
+ return toReturn;
74
+ }
75
+ }
76
+ export class GetMultiSubscriptionRelationshipsResponse {
77
+ static fromProto(proto) {
78
+ let m = new GetMultiSubscriptionRelationshipsResponse();
79
+ m = Object.assign(m, proto);
80
+ if (proto.subscriptionRelationships) {
81
+ m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);
82
+ }
83
+ return m;
84
+ }
85
+ constructor(kwargs) {
86
+ if (!kwargs) {
87
+ return;
88
+ }
89
+ Object.assign(this, kwargs);
90
+ }
91
+ toApiJson() {
92
+ const toReturn = {};
93
+ if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {
94
+ toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;
95
+ }
96
+ return toReturn;
97
+ }
98
+ }
99
+ export class ListSubscriptionRelationshipsRequest {
100
+ static fromProto(proto) {
101
+ let m = new ListSubscriptionRelationshipsRequest();
102
+ m = Object.assign(m, proto);
103
+ if (proto.filters) {
104
+ m.filters = ListSubscriptionRelationshipsRequestFilters.fromProto(proto.filters);
105
+ }
106
+ if (proto.pagingOptions) {
107
+ m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
108
+ }
109
+ return m;
110
+ }
111
+ constructor(kwargs) {
112
+ if (!kwargs) {
113
+ return;
114
+ }
115
+ Object.assign(this, kwargs);
116
+ }
117
+ toApiJson() {
118
+ const toReturn = {};
119
+ if (typeof this.filters !== 'undefined' && this.filters !== null) {
120
+ toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;
121
+ }
122
+ if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
123
+ toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
124
+ }
125
+ return toReturn;
126
+ }
127
+ }
128
+ export class ListSubscriptionRelationshipsResponse {
129
+ static fromProto(proto) {
130
+ let m = new ListSubscriptionRelationshipsResponse();
131
+ m = Object.assign(m, proto);
132
+ if (proto.subscriptionRelationships) {
133
+ m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);
134
+ }
135
+ if (proto.pagingMetadata) {
136
+ m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);
137
+ }
138
+ return m;
139
+ }
140
+ constructor(kwargs) {
141
+ if (!kwargs) {
142
+ return;
143
+ }
144
+ Object.assign(this, kwargs);
145
+ }
146
+ toApiJson() {
147
+ const toReturn = {};
148
+ if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {
149
+ toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;
150
+ }
151
+ if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {
152
+ toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;
153
+ }
154
+ return toReturn;
155
+ }
156
+ }
157
+ export class ReplaceSubscriptionRelationshipsRequest {
158
+ static fromProto(proto) {
159
+ let m = new ReplaceSubscriptionRelationshipsRequest();
160
+ m = Object.assign(m, proto);
161
+ if (proto.toAdd) {
162
+ m.toAdd = proto.toAdd.map(SubscriptionRelationship.fromProto);
163
+ }
164
+ return m;
165
+ }
166
+ constructor(kwargs) {
167
+ if (!kwargs) {
168
+ return;
169
+ }
170
+ Object.assign(this, kwargs);
171
+ }
172
+ toApiJson() {
173
+ const toReturn = {};
174
+ if (typeof this.toAdd !== 'undefined' && this.toAdd !== null) {
175
+ toReturn['toAdd'] = 'toApiJson' in this.toAdd ? this.toAdd.toApiJson() : this.toAdd;
176
+ }
177
+ if (typeof this.toRemove !== 'undefined') {
178
+ toReturn['toRemove'] = this.toRemove;
179
+ }
180
+ return toReturn;
181
+ }
182
+ }
183
+ export class ReplaceSubscriptionRelationshipsResponse {
184
+ static fromProto(proto) {
185
+ let m = new ReplaceSubscriptionRelationshipsResponse();
186
+ m = Object.assign(m, proto);
187
+ return m;
188
+ }
189
+ constructor(kwargs) {
190
+ if (!kwargs) {
191
+ return;
192
+ }
193
+ Object.assign(this, kwargs);
194
+ }
195
+ toApiJson() {
196
+ const toReturn = {};
197
+ if (typeof this.addedSubscriptionRelationshipIds !== 'undefined') {
198
+ toReturn['addedSubscriptionRelationshipIds'] = this.addedSubscriptionRelationshipIds;
199
+ }
200
+ return toReturn;
201
+ }
202
+ }
203
+ export class SubscriptionRelationship {
204
+ static fromProto(proto) {
205
+ let m = new SubscriptionRelationship();
206
+ m = Object.assign(m, proto);
207
+ if (proto.originType) {
208
+ m.originType = enumStringToValue(e.EntityType, proto.originType);
209
+ }
210
+ if (proto.targetType) {
211
+ m.targetType = enumStringToValue(e.EntityType, proto.targetType);
212
+ }
213
+ if (proto.relationshipType) {
214
+ m.relationshipType = enumStringToValue(e.RelationshipType, proto.relationshipType);
215
+ }
216
+ if (proto.created) {
217
+ m.created = new Date(proto.created);
218
+ }
219
+ if (proto.updated) {
220
+ m.updated = new Date(proto.updated);
221
+ }
222
+ if (proto.deleted) {
223
+ m.deleted = new Date(proto.deleted);
224
+ }
225
+ return m;
226
+ }
227
+ constructor(kwargs) {
228
+ if (!kwargs) {
229
+ return;
230
+ }
231
+ Object.assign(this, kwargs);
232
+ }
233
+ toApiJson() {
234
+ const toReturn = {};
235
+ if (typeof this.subscriptionRelationshipId !== 'undefined') {
236
+ toReturn['subscriptionRelationshipId'] = this.subscriptionRelationshipId;
237
+ }
238
+ if (typeof this.merchantId !== 'undefined') {
239
+ toReturn['merchantId'] = this.merchantId;
240
+ }
241
+ if (typeof this.customerId !== 'undefined') {
242
+ toReturn['customerId'] = this.customerId;
243
+ }
244
+ if (typeof this.originId !== 'undefined') {
245
+ toReturn['originId'] = this.originId;
246
+ }
247
+ if (typeof this.originType !== 'undefined') {
248
+ toReturn['originType'] = this.originType;
249
+ }
250
+ if (typeof this.targetId !== 'undefined') {
251
+ toReturn['targetId'] = this.targetId;
252
+ }
253
+ if (typeof this.targetType !== 'undefined') {
254
+ toReturn['targetType'] = this.targetType;
255
+ }
256
+ if (typeof this.relationshipType !== 'undefined') {
257
+ toReturn['relationshipType'] = this.relationshipType;
258
+ }
259
+ if (typeof this.created !== 'undefined' && this.created !== null) {
260
+ toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;
261
+ }
262
+ if (typeof this.updated !== 'undefined' && this.updated !== null) {
263
+ toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;
264
+ }
265
+ if (typeof this.deleted !== 'undefined' && this.deleted !== null) {
266
+ toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;
267
+ }
268
+ return toReturn;
269
+ }
270
+ }
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLXJlbGF0aW9uc2hpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvc3Vic2NyaXB0aW9uLXJlbGF0aW9uc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEUsT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUIsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLDJDQUEyQztJQVNwRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSwyQ0FBMkMsRUFBRSxDQUFDO1FBQzFELENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFBQyxDQUFDLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFlLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQUM7UUFDdkcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBZSxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUFDO1FBQ3ZHLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFxQixDQUFD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QUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVycyBpbXBsZW1lbnRzIGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmlnaW5JZDogc3RyaW5nO1xuICAgIG9yaWdpblR5cGU6IGUuRW50aXR5VHlwZTtcbiAgICB0YXJnZXRJZDogc3RyaW5nO1xuICAgIHRhcmdldFR5cGU6IGUuRW50aXR5VHlwZTtcbiAgICByZWxhdGlvbnNoaXBUeXBlOiBlLlJlbGF0aW9uc2hpcFR5cGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RGaWx0ZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVycygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5vcmlnaW5UeXBlKSB7bS5vcmlnaW5UeXBlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5FbnRpdHlUeXBlPihlLkVudGl0eVR5cGUsIHByb3RvLm9yaWdpblR5cGUpO31cbiAgICAgICAgaWYgKHByb3RvLnRhcmdldFR5cGUpIHttLnRhcmdldFR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkVudGl0eVR5cGU+KGUuRW50aXR5VHlwZSwgcHJvdG8udGFyZ2V0VHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8ucmVsYXRpb25zaGlwVHlwZSkge20ucmVsYXRpb25zaGlwVHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUmVsYXRpb25zaGlwVHlwZT4oZS5SZWxhdGlvbnNoaXBUeXBlLCBwcm90by5yZWxhdGlvbnNoaXBUeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbklkJ10gPSB0aGlzLm9yaWdpbklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpblR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpblR5cGUnXSA9IHRoaXMub3JpZ2luVHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGFyZ2V0SWQnXSA9IHRoaXMudGFyZ2V0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFyZ2V0VHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGFyZ2V0VHlwZSddID0gdGhpcy50YXJnZXRUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlbGF0aW9uc2hpcFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlbGF0aW9uc2hpcFR5cGUnXSA9IHRoaXMucmVsYXRpb25zaGlwVHlwZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1YnNjcmlwdGlvblJlbGF0aW9uc2hpcElkcyddID0gdGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzOiBTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcykge20uc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcyA9IHByb3RvLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMubWFwKFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcyAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgPyAodGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGZpbHRlcnM6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEZpbHRlcnM7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5maWx0ZXJzKSB7bS5maWx0ZXJzID0gTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVycy5mcm9tUHJvdG8ocHJvdG8uZmlsdGVycyk7fVxuICAgICAgICBpZiAocHJvdG8ucGFnaW5nT3B0aW9ucykge20ucGFnaW5nT3B0aW9ucyA9IFBhZ2VkUmVxdWVzdE9wdGlvbnMuZnJvbVByb3RvKHByb3RvLnBhZ2luZ09wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5maWx0ZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZpbHRlcnMgIT09IG51bGwpIHt0b1JldHVyblsnZmlsdGVycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5maWx0ZXJzID8gKHRoaXMuZmlsdGVycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5maWx0ZXJzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdPcHRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBhZ2luZ09wdGlvbnMgPyAodGhpcy5wYWdpbmdPcHRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ09wdGlvbnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwczogU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwW107XG4gICAgcGFnaW5nTWV0YWRhdGE6IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMpIHttLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgPSBwcm90by5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzLm1hcChTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXAuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5wYWdpbmdNZXRhZGF0YSkge20ucGFnaW5nTWV0YWRhdGEgPSBQYWdlZFJlc3BvbnNlTWV0YWRhdGEuZnJvbVByb3RvKHByb3RvLnBhZ2luZ01ldGFkYXRhKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcyAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgPyAodGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nTWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nTWV0YWRhdGEgPyAodGhpcy5wYWdpbmdNZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdNZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QgaW1wbGVtZW50cyBpLlJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgdG9BZGQ6IFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcFtdO1xuICAgIHRvUmVtb3ZlOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50b0FkZCkge20udG9BZGQgPSBwcm90by50b0FkZC5tYXAoU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRvQWRkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRvQWRkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RvQWRkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRvQWRkID8gKHRoaXMudG9BZGQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudG9BZGQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG9SZW1vdmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RvUmVtb3ZlJ10gPSB0aGlzLnRvUmVtb3ZlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UgaW1wbGVtZW50cyBpLlJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGFkZGVkU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWRzOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWRkZWRTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FkZGVkU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWRzJ10gPSB0aGlzLmFkZGVkU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcCBpbXBsZW1lbnRzIGkuU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSW50ZXJmYWNlIHtcbiAgICBzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZDogc3RyaW5nO1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgb3JpZ2luSWQ6IHN0cmluZztcbiAgICBvcmlnaW5UeXBlOiBlLkVudGl0eVR5cGU7XG4gICAgdGFyZ2V0SWQ6IHN0cmluZztcbiAgICB0YXJnZXRUeXBlOiBlLkVudGl0eVR5cGU7XG4gICAgcmVsYXRpb25zaGlwVHlwZTogZS5SZWxhdGlvbnNoaXBUeXBlO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG4gICAgdXBkYXRlZDogRGF0ZTtcbiAgICBkZWxldGVkOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm9yaWdpblR5cGUpIHttLm9yaWdpblR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkVudGl0eVR5cGU+KGUuRW50aXR5VHlwZSwgcHJvdG8ub3JpZ2luVHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8udGFyZ2V0VHlwZSkge20udGFyZ2V0VHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuRW50aXR5VHlwZT4oZS5FbnRpdHlUeXBlLCBwcm90by50YXJnZXRUeXBlKTt9XG4gICAgICAgIGlmIChwcm90by5yZWxhdGlvbnNoaXBUeXBlKSB7bS5yZWxhdGlvbnNoaXBUeXBlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5SZWxhdGlvbnNoaXBUeXBlPihlLlJlbGF0aW9uc2hpcFR5cGUsIHByb3RvLnJlbGF0aW9uc2hpcFR5cGUpO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by51cGRhdGVkKSB7bS51cGRhdGVkID0gbmV3IERhdGUocHJvdG8udXBkYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8uZGVsZXRlZCkge20uZGVsZXRlZCA9IG5ldyBEYXRlKHByb3RvLmRlbGV0ZWQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWQnXSA9IHRoaXMuc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVySWQnXSA9IHRoaXMuY3VzdG9tZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luSWQnXSA9IHRoaXMub3JpZ2luSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luVHlwZSddID0gdGhpcy5vcmlnaW5UeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhcmdldElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0YXJnZXRJZCddID0gdGhpcy50YXJnZXRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0YXJnZXRUeXBlJ10gPSB0aGlzLnRhcmdldFR5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVsYXRpb25zaGlwVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVsYXRpb25zaGlwVHlwZSddID0gdGhpcy5yZWxhdGlvbnNoaXBUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlbGV0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnZGVsZXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kZWxldGVkID8gKHRoaXMuZGVsZXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kZWxldGVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
@@ -0,0 +1,51 @@
1
+ // *********************************
2
+ // Code generated by sdkgen
3
+ // DO NOT EDIT!.
4
+ //
5
+ // API Service.
6
+ // *********************************
7
+ import { Injectable } from '@angular/core';
8
+ import { GetMultiSubscriptionRelationshipsRequest, GetMultiSubscriptionRelationshipsResponse, ListSubscriptionRelationshipsRequest, ListSubscriptionRelationshipsResponse, ReplaceSubscriptionRelationshipsRequest, ReplaceSubscriptionRelationshipsResponse, } from './objects/';
9
+ import { HttpHeaders, HttpClient } from '@angular/common/http';
10
+ import { HostService } from '../_generated/host.service';
11
+ import { map } from 'rxjs/operators';
12
+ import * as i0 from "@angular/core";
13
+ import * as i1 from "@angular/common/http";
14
+ import * as i2 from "../_generated/host.service";
15
+ export class SubscriptionRelationshipApiService {
16
+ constructor(http, hostService) {
17
+ this.http = http;
18
+ this.hostService = hostService;
19
+ this._host = this.hostService.hostWithScheme;
20
+ }
21
+ apiOptions() {
22
+ return {
23
+ headers: new HttpHeaders({
24
+ 'Content-Type': 'application/json'
25
+ }),
26
+ withCredentials: true
27
+ };
28
+ }
29
+ replace(r) {
30
+ const request = (r.toApiJson) ? r : new ReplaceSubscriptionRelationshipsRequest(r);
31
+ return this.http.post(this._host + "/billing.v1.SubscriptionRelationshipService/Replace", request.toApiJson(), this.apiOptions())
32
+ .pipe(map(resp => ReplaceSubscriptionRelationshipsResponse.fromProto(resp)));
33
+ }
34
+ list(r) {
35
+ const request = (r.toApiJson) ? r : new ListSubscriptionRelationshipsRequest(r);
36
+ return this.http.post(this._host + "/billing.v1.SubscriptionRelationshipService/List", request.toApiJson(), this.apiOptions())
37
+ .pipe(map(resp => ListSubscriptionRelationshipsResponse.fromProto(resp)));
38
+ }
39
+ getMulti(r) {
40
+ const request = (r.toApiJson) ? r : new GetMultiSubscriptionRelationshipsRequest(r);
41
+ return this.http.post(this._host + "/billing.v1.SubscriptionRelationshipService/GetMulti", request.toApiJson(), this.apiOptions())
42
+ .pipe(map(resp => GetMultiSubscriptionRelationshipsResponse.fromProto(resp)));
43
+ }
44
+ }
45
+ SubscriptionRelationshipApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: SubscriptionRelationshipApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
46
+ SubscriptionRelationshipApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: SubscriptionRelationshipApiService, providedIn: 'root' });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: SubscriptionRelationshipApiService, decorators: [{
48
+ type: Injectable,
49
+ args: [{ providedIn: 'root' }]
50
+ }], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLXJlbGF0aW9uc2hpcC5hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL3N1YnNjcmlwdGlvbi1yZWxhdGlvbnNoaXAuYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsRUFBRTtBQUNGLGVBQWU7QUFDZixvQ0FBb0M7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0Msd0NBQXdDLEVBQ3hDLHlDQUF5QyxFQUN6QyxvQ0FBb0MsRUFDcEMscUNBQXFDLEVBQ3JDLHVDQUF1QyxFQUN2Qyx3Q0FBd0MsR0FDL0MsTUFBTSxZQUFZLENBQUM7QUFTcEIsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBR25DLE1BQU0sT0FBTyxrQ0FBa0M7SUFHM0MsWUFBb0IsSUFBZ0IsRUFBVSxXQUF3QjtRQUFsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFGOUQsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBR2hELENBQUM7SUFFTyxVQUFVO1FBQ2QsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsY0FBYyxFQUFFLGtCQUFrQjthQUNyQyxDQUFDO1lBQ0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBNkY7UUFDakcsTUFBTSxPQUFPLEdBQUcsQ0FBMkMsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBMkMsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQW9ELElBQUksQ0FBQyxLQUFLLEdBQUcscURBQXFELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMvSyxJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3hFLENBQUM7SUFDVixDQUFDO0lBQ0QsSUFBSSxDQUFDLENBQXVGO1FBQ3hGLE1BQU0sT0FBTyxHQUFHLENBQXdDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXdDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxvQ0FBb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFpRCxJQUFJLENBQUMsS0FBSyxHQUFHLGtEQUFrRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDekssSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyRSxDQUFDO0lBQ1YsQ0FBQztJQUNELFFBQVEsQ0FBQyxDQUErRjtRQUNwRyxNQUFNLE9BQU8sR0FBRyxDQUE0QyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0NBQXdDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUQsSUFBSSxDQUFDLEtBQUssR0FBRyxzREFBc0QsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2pMLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekUsQ0FBQztJQUNWLENBQUM7OytIQW5DUSxrQ0FBa0M7bUlBQWxDLGtDQUFrQyxjQUR0QixNQUFNOzJGQUNsQixrQ0FBa0M7a0JBRDlDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QsXG4gICAgICAgIEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlLFxuICAgICAgICBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QsXG4gICAgICAgIExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UsXG4gICAgICAgIFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCxcbiAgICAgICAgUmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2VJbnRlcmZhY2UsXG59IGZyb20gJy4vaW50ZXJmYWNlcy8nO1xuaW1wb3J0IHtIdHRwSGVhZGVycywgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0hvc3RTZXJ2aWNlfSBmcm9tICcuLi9fZ2VuZXJhdGVkL2hvc3Quc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwQXBpU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaG9zdCA9IHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgaG9zdFNlcnZpY2U6IEhvc3RTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcGlPcHRpb25zKCk6IHtoZWFkZXJzOiBIdHRwSGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFufSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmVwbGFjZShyOiBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QgfCBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3Q+cikgOiBuZXcgUmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwU2VydmljZS9SZXBsYWNlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gUmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0KHI6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB8IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdD5yKSA6IG5ldyBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5TdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBTZXJ2aWNlL0xpc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldE11bHRpKHI6IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QgfCBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwU2VydmljZS9HZXRNdWx0aVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIFxufVxuIl19