@kaspernj/api-maker 1.0.2094 → 1.0.2095

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.
@@ -6,12 +6,17 @@ export default class ApiMakerCanCan {
6
6
  abilitiesGeneration: number;
7
7
  cacheKey: number;
8
8
  loadingCount: number;
9
+ missingAbilities: Map<any, any>;
10
+ missingAbilitiesTimeout: any;
9
11
  reloadPromises: Map<any, any>;
10
12
  resetPromise: any;
11
13
  resettingGeneration: any;
12
14
  events: EventEmitter<string | symbol, any>;
13
15
  lock: ReadersWriterLock;
14
- can(ability: any, subject: any): any;
16
+ can(ability: any, subject: any, options?: {}): any;
17
+ recordMissingAbility(ability: any, subject: any): void;
18
+ queueMissingAbilitiesLoad(): void;
19
+ loadMissingAbilities: () => void;
15
20
  findAbility(ability: any, subject: any): any;
16
21
  isAbilityLoaded(ability: any, subject: any): boolean;
17
22
  isReloading(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"can-can.d.ts","sourceRoot":"/src/","sources":["can-can.js"],"names":[],"mappings":"AASA;IAaE,sBAIC;IAhBD,iBAAc;IACd,uBAAoB;IACpB,2BAAwB;IACxB,4BAAuB;IACvB,iBAAY;IACZ,qBAAgB;IAChB,8BAA0B;IAC1B,kBAAmB;IACnB,yBAA0B;IAC1B,2CAA2B;IAC3B,wBAA8B;IAQ9B,qCAoBC;IAED,6CAuBC;IAED,qDAQC;IAED,uBAEC;IAED,sBAEC;IAED,6CA4BC;IAED,sDAsBC;IAED,8BAMC;IADC,6CAA4E;IAG9E,+BAkBC;IAED,8DAiBC;IAED,0CA4CC;CACF;6BA7O0B,eAAe;kCACV,YAAY"}
1
+ {"version":3,"file":"can-can.d.ts","sourceRoot":"/src/","sources":["can-can.js"],"names":[],"mappings":"AASA;IAeE,sBAIC;IAlBD,iBAAc;IACd,uBAAoB;IACpB,2BAAwB;IACxB,4BAAuB;IACvB,iBAAY;IACZ,qBAAgB;IAChB,gCAA4B;IAC5B,6BAA8B;IAC9B,8BAA0B;IAC1B,kBAAmB;IACnB,yBAA0B;IAC1B,2CAA2B;IAC3B,wBAA8B;IAQ9B,mDAsBC;IAED,uDAYC;IAED,kCAIC;IAED,iCAeC;IAED,6CAuBC;IAED,qDAQC;IAED,uBAEC;IAED,sBAEC;IAED,6CA4BC;IAED,sDAsBC;IAED,8BAIC;IADC,6CAA4E;IAG9E,+BAkBC;IAED,8DAiBC;IAED,0CA6CC;CACF;6BArR0B,eAAe;kCACV,YAAY"}
package/build/can-can.js CHANGED
@@ -12,6 +12,8 @@ export default class ApiMakerCanCan {
12
12
  abilitiesGeneration = 0;
13
13
  cacheKey = 0;
14
14
  loadingCount = 0;
15
+ missingAbilities = new Map();
16
+ missingAbilitiesTimeout = null;
15
17
  reloadPromises = new Map();
16
18
  resetPromise = null;
17
19
  resettingGeneration = null;
@@ -22,24 +24,53 @@ export default class ApiMakerCanCan {
22
24
  shared.currentApiMakerCanCan = new ApiMakerCanCan();
23
25
  return shared.currentApiMakerCanCan;
24
26
  }
25
- can(ability, subject) {
27
+ can(ability, subject, options = {}) {
26
28
  let abilityToUse = inflection.underscore(ability);
27
29
  const foundAbility = this.findAbility(abilityToUse, subject);
28
30
  if (foundAbility === undefined) {
29
- if (this.isReloading())
30
- return false;
31
- let subjectLabel = subject;
32
- // Translate resource-models into class name strings
33
- if (typeof subject == "function" && subject.modelClassData) {
34
- subjectLabel = digg(subject.modelClassData(), "name");
31
+ this.recordMissingAbility(abilityToUse, subject);
32
+ if (options.debug) {
33
+ let subjectLabel = subject;
34
+ // Translate resource-models into class name strings
35
+ if (typeof subject == "function" && subject.modelClassData) {
36
+ subjectLabel = digg(subject.modelClassData(), "name");
37
+ }
38
+ console.error(`Ability not loaded ${subjectLabel}#${abilityToUse}`, { abilities: this.abilities, ability, subject });
35
39
  }
36
- console.error(`Ability not loaded ${subjectLabel}#${abilityToUse}`, { abilities: this.abilities, ability, subject });
37
- return false;
40
+ return null;
38
41
  }
39
42
  else {
40
43
  return digg(foundAbility, "can");
41
44
  }
42
45
  }
46
+ recordMissingAbility(ability, subject) {
47
+ let missingAbilitySet = this.missingAbilities.get(subject);
48
+ if (!missingAbilitySet) {
49
+ missingAbilitySet = new Set();
50
+ this.missingAbilities.set(subject, missingAbilitySet);
51
+ }
52
+ if (missingAbilitySet.has(ability))
53
+ return;
54
+ missingAbilitySet.add(ability);
55
+ this.queueMissingAbilitiesLoad();
56
+ }
57
+ queueMissingAbilitiesLoad() {
58
+ if (this.missingAbilitiesTimeout)
59
+ return;
60
+ this.missingAbilitiesTimeout = setTimeout(this.loadMissingAbilities, 0);
61
+ }
62
+ loadMissingAbilities = () => {
63
+ const missingAbilities = this.missingAbilities;
64
+ this.missingAbilities = new Map();
65
+ this.missingAbilitiesTimeout = null;
66
+ const abilitiesToLoad = [];
67
+ for (const [subject, abilities] of missingAbilities.entries()) {
68
+ abilitiesToLoad.push([subject, Array.from(abilities)]);
69
+ }
70
+ if (abilitiesToLoad.length > 0) {
71
+ this.loadAbilities(abilitiesToLoad);
72
+ }
73
+ };
43
74
  findAbility(ability, subject) {
44
75
  return this.abilities.find((abilityData) => {
45
76
  const abilityDataSubject = digg(abilityData, "subject");
@@ -120,9 +151,8 @@ export default class ApiMakerCanCan {
120
151
  });
121
152
  }
122
153
  queueAbilitiesRequest() {
123
- if (this.queueAbilitiesRequestTimeout) {
124
- clearTimeout(this.queueAbilitiesRequestTimeout);
125
- }
154
+ if (this.queueAbilitiesRequestTimeout)
155
+ return;
126
156
  this.queueAbilitiesRequestTimeout = setTimeout(this.sendAbilitiesRequest, 0);
127
157
  }
128
158
  async resetAbilities() {
@@ -163,6 +193,7 @@ export default class ApiMakerCanCan {
163
193
  }
164
194
  }
165
195
  sendAbilitiesRequest = async () => {
196
+ this.queueAbilitiesRequestTimeout = null;
166
197
  const generation = this.abilitiesGeneration;
167
198
  const abilitiesToLoad = this.abilitiesToLoad;
168
199
  const abilitiesToLoadData = this.abilitiesToLoadData;
@@ -174,7 +205,7 @@ export default class ApiMakerCanCan {
174
205
  try {
175
206
  const result = await Services.current().sendRequest("CanCan::LoadAbilities", {
176
207
  request: abilitiesToLoadData
177
- });
208
+ }, { instant: true });
178
209
  const responseAbilities = digg(result, "abilities");
179
210
  if (Array.isArray(responseAbilities))
180
211
  abilities = responseAbilities;
@@ -202,4 +233,4 @@ export default class ApiMakerCanCan {
202
233
  }
203
234
  };
204
235
  }
205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWNhbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FuLWNhbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUE7QUFFcEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO0FBRWpCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQyxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBQ2QsZUFBZSxHQUFHLEVBQUUsQ0FBQTtJQUNwQixtQkFBbUIsR0FBRyxFQUFFLENBQUE7SUFDeEIsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZCLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDWixZQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQzFCLFlBQVksR0FBRyxJQUFJLENBQUE7SUFDbkIsbUJBQW1CLEdBQUcsSUFBSSxDQUFBO0lBQzFCLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO0lBQzNCLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUE7SUFFOUIsTUFBTSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQjtZQUFFLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1FBRXRGLE9BQU8sTUFBTSxDQUFDLHFCQUFxQixDQUFBO0lBQ3JDLENBQUM7SUFFRCxHQUFHLENBQUUsT0FBTyxFQUFFLE9BQU87UUFDbkIsSUFBSSxZQUFZLEdBQUcsVUFBVSxDQUFDLFVBQVUs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QUFDO1lBQ3ZELEtBQUssTUFBTSxXQUFXLElBQUksZUFBZSxFQUFFLENBQUM7Z0JBQzFDLEtBQUssTUFBTSxRQUFRLElBQUksV0FBVyxDQUFDLFNBQVMsRUFBRSxDQUFDO29CQUM3QyxRQUFRLEVBQUUsQ0FBQTtnQkFDWixDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU07UUFDUixDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUE7UUFFbEIsMEVBQTBFO1FBQzFFLEtBQUssTUFBTSxXQUFXLElBQUksZUFBZSxFQUFFLENBQUM7WUFDMUMsS0FBSyxNQUFNLFFBQVEsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQzdDLFFBQVEsRUFBRSxDQUFBO1lBQ1osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLENBQUE7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQge0V2ZW50RW1pdHRlcn0gZnJvbSBcImV2ZW50ZW1pdHRlcjNcIlxuaW1wb3J0IHtSZWFkZXJzV3JpdGVyTG9ja30gZnJvbSBcImVwaWMtbG9ja3NcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlcy5qc1wiXG5cbmNvbnN0IHNoYXJlZCA9IHt9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyQ2FuQ2FuIHtcbiAgYWJpbGl0aWVzID0gW11cbiAgYWJpbGl0aWVzVG9Mb2FkID0gW11cbiAgYWJpbGl0aWVzVG9Mb2FkRGF0YSA9IFtdXG4gIGFiaWxpdGllc0dlbmVyYXRpb24gPSAwXG4gIGNhY2hlS2V5ID0gMFxuICBsb2FkaW5nQ291bnQgPSAwXG4gIHJlbG9hZFByb21pc2VzID0gbmV3IE1hcCgpXG4gIHJlc2V0UHJvbWlzZSA9IG51bGxcbiAgcmVzZXR0aW5nR2VuZXJhdGlvbiA9IG51bGxcbiAgZXZlbnRzID0gbmV3IEV2ZW50RW1pdHRlcigpXG4gIGxvY2sgPSBuZXcgUmVhZGVyc1dyaXRlckxvY2soKVxuXG4gIHN0YXRpYyBjdXJyZW50ICgpIHtcbiAgICBpZiAoIXNoYXJlZC5jdXJyZW50QXBpTWFrZXJDYW5DYW4pIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJDYW5DYW4gPSBuZXcgQXBpTWFrZXJDYW5DYW4oKVxuXG4gICAgcmV0dXJuIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJDYW5DYW5cbiAgfVxuXG4gIGNhbiAoYWJpbGl0eSwgc3ViamVjdCkge1xuICAgIGxldCBhYmlsaXR5VG9Vc2UgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYWJpbGl0eSlcbiAgICBjb25zdCBmb3VuZEFiaWxpdHkgPSB0aGlzLmZpbmRBYmlsaXR5KGFiaWxpdHlUb1VzZSwgc3ViamVjdClcblxuICAgIGlmIChmb3VuZEFiaWxpdHkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHRoaXMuaXNSZWxvYWRpbmcoKSkgcmV0dXJuIGZhbHNlXG5cbiAgICAgIGxldCBzdWJqZWN0TGFiZWwgPSBzdWJqZWN0XG5cbiAgICAgIC8vIFRyYW5zbGF0ZSByZXNvdXJjZS1tb2RlbHMgaW50byBjbGFzcyBuYW1lIHN0cmluZ3NcbiAgICAgIGlmICh0eXBlb2Ygc3ViamVjdCA9PSBcImZ1bmN0aW9uXCIgJiYgc3ViamVjdC5tb2RlbENsYXNzRGF0YSkge1xuICAgICAgICBzdWJqZWN0TGFiZWwgPSBkaWdnKHN1YmplY3QubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpXG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZXJyb3IoYEFiaWxpdHkgbm90IGxvYWRlZCAke3N1YmplY3RMYWJlbH0jJHthYmlsaXR5VG9Vc2V9YCwge2FiaWxpdGllczogdGhpcy5hYmlsaXRpZXMsIGFiaWxpdHksIHN1YmplY3R9KVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGRpZ2coZm91bmRBYmlsaXR5LCBcImNhblwiKVxuICAgIH1cbiAgfVxuXG4gIGZpbmRBYmlsaXR5IChhYmlsaXR5LCBzdWJqZWN0KSB7XG4gICAgcmV0dXJuIHRoaXMuYWJpbGl0aWVzLmZpbmQoKGFiaWxpdHlEYXRhKSA9PiB7XG4gICAgICBjb25zdCBhYmlsaXR5RGF0YVN1YmplY3QgPSBkaWdnKGFiaWxpdHlEYXRhLCBcInN1YmplY3RcIilcbiAgICAgIGNvbnN0IGFiaWxpdHlEYXRhQWJpbGl0eSA9IGRpZ2coYWJpbGl0eURhdGEsIFwiYWJpbGl0eVwiKVxuXG4gICAgICBpZiAoYWJpbGl0eURhdGFBYmlsaXR5ID09IGFiaWxpdHkpIHtcbiAgICAgICAgLy8gSWYgYWN0dWFsbHkgc2FtZSBjbGFzc1xuICAgICAgICBpZiAoYWJpbGl0eURhdGFTdWJqZWN0ID09IHN1YmplY3QpIHJldHVybiB0cnVlXG5cbiAgICAgICAgLy8gU29tZXRpbWVzIGluIGRldiB3aGVuIHVzaW5nIGxpbmtpbmcgaXQgd2lsbCBhY3R1YWxseSBiZSB0d28gZGlmZmVyZW50IGJ1dCBpZGVudGljYWwgcmVzb3VyY2UgY2xhc3Nlc1xuICAgICAgICBpZiAoXG4gICAgICAgICAgdHlwZW9mIHN1YmplY3QgPT0gXCJmdW5jdGlvblwiICYmXG4gICAgICAgICAgc3ViamVjdC5tb2RlbENsYXNzRGF0YSAmJlxuICAgICAgICAgIHR5cGVvZiBhYmlsaXR5RGF0YVN1YmplY3QgPT0gXCJmdW5jdGlvblwiICYmXG4gICAgICAgICAgYWJpbGl0eURhdGFTdWJqZWN0Lm1vZGVsQ2xhc3NEYXRhICYmXG4gICAgICAgICAgZGlnZyhzdWJqZWN0Lm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKSA9PSBkaWdnKGFiaWxpdHlEYXRhU3ViamVjdC5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcbiAgICAgICAgKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICB9XG5cbiAgaXNBYmlsaXR5TG9hZGVkIChhYmlsaXR5LCBzdWJqZWN0KSB7XG4gICAgY29uc3QgZm91bmRBYmlsaXR5ID0gdGhpcy5maW5kQWJpbGl0eShhYmlsaXR5LCBzdWJqZWN0KVxuXG4gICAgaWYgKGZvdW5kQWJpbGl0eSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaXNSZWxvYWRpbmcgKCkge1xuICAgIHJldHVybiB0aGlzLmxvYWRpbmdDb3VudCA+IDAgfHwgdGhpcy5yZXNldHRpbmdHZW5lcmF0aW9uICE9PSBudWxsXG4gIH1cblxuICBnZXRDYWNoZUtleSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGVLZXlcbiAgfVxuXG4gIGFzeW5jIGxvYWRBYmlsaXRpZXMgKGFiaWxpdGllcykge1xuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLmFiaWxpdGllc0dlbmVyYXRpb25cblxuICAgIHRoaXMubG9hZGluZ0NvdW50ICs9IDFcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmxvY2sucmVhZChhc3luYyAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gW11cblxuICAgICAgICBmb3IgKGNvbnN0IGFiaWxpdHlEYXRhIG9mIGFiaWxpdGllcykge1xuICAgICAgICAgIGNvbnN0IHN1YmplY3QgPSBhYmlsaXR5RGF0YVswXVxuXG4gICAgICAgICAgaWYgKCFzdWJqZWN0KSB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc3ViamVjdCBnaXZlbiBpbiBhYmlsaXRpZXM6ICR7c3ViamVjdH0gLSAke0pTT04uc3RyaW5naWZ5KGFiaWxpdGllcyl9YClcbiAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoYWJpbGl0eURhdGFbMV0pKSB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkIGFuIGFycmF5IG9mIGFiaWxpdGllcyBidXQgZ290OiAke3R5cGVvZiBhYmlsaXR5RGF0YVsxXX06ICR7YWJpbGl0eURhdGFbMV19YClcblxuICAgICAgICAgIGZvciAoY29uc3QgYWJpbGl0eSBvZiBhYmlsaXR5RGF0YVsxXSkge1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMubG9hZEFiaWxpdHkoYWJpbGl0eSwgc3ViamVjdClcblxuICAgICAgICAgICAgcHJvbWlzZXMucHVzaChwcm9taXNlKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKVxuICAgICAgfSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHRoaXMubG9hZGluZ0NvdW50ID4gMCkgdGhpcy5sb2FkaW5nQ291bnQgLT0gMVxuICAgICAgaWYgKHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiA9PT0gZ2VuZXJhdGlvbikgdGhpcy5yZXNldHRpbmdHZW5lcmF0aW9uID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGxvYWRBYmlsaXR5IChhYmlsaXR5LCBzdWJqZWN0KSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICBjb25zdCBub3JtYWxpemVkQWJpbGl0eSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShhYmlsaXR5KVxuXG4gICAgICBpZiAodGhpcy5pc0FiaWxpdHlMb2FkZWQobm9ybWFsaXplZEFiaWxpdHksIHN1YmplY3QpKSB7XG4gICAgICAgIHJlc29sdmUoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgZm91bmRBYmlsaXR5ID0gdGhpcy5hYmlsaXRpZXNUb0xvYWQuZmluZCgoYWJpbGl0eVRvTG9hZCkgPT4gZGlnZyhhYmlsaXR5VG9Mb2FkLCBcImFiaWxpdHlcIikgPT0gbm9ybWFsaXplZEFiaWxpdHkgJiZcbiAgICAgICAgZGlnZyhhYmlsaXR5VG9Mb2FkLCBcInN1YmplY3RcIikgPT0gc3ViamVjdFxuICAgICAgKVxuXG4gICAgICBpZiAoZm91bmRBYmlsaXR5KSB7XG4gICAgICAgIGZvdW5kQWJpbGl0eS5jYWxsYmFja3MucHVzaChyZXNvbHZlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNUb0xvYWQucHVzaCh7YWJpbGl0eTogbm9ybWFsaXplZEFiaWxpdHksIGNhbGxiYWNrczogW3Jlc29sdmVdLCBzdWJqZWN0fSlcbiAgICAgICAgdGhpcy5hYmlsaXRpZXNUb0xvYWREYXRhLnB1c2goe2FiaWxpdHk6IG5vcm1hbGl6ZWRBYmlsaXR5LCBzdWJqZWN0fSlcblxuICAgICAgICB0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdCgpXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIHF1ZXVlQWJpbGl0aWVzUmVxdWVzdCAoKSB7XG4gICAgaWYgKHRoaXMucXVldWVBYmlsaXRpZXNSZXF1ZXN0VGltZW91dCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMucXVldWVBYmlsaXRpZXNSZXF1ZXN0VGltZW91dClcbiAgICB9XG5cbiAgICB0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdFRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMuc2VuZEFiaWxpdGllc1JlcXVlc3QsIDApXG4gIH1cblxuICBhc3luYyByZXNldEFiaWxpdGllcyAoKSB7XG4gICAgaWYgKHRoaXMucmVzZXRQcm9taXNlKSByZXR1cm4gdGhpcy5yZXNldFByb21pc2VcblxuICAgIHRoaXMucmVzZXRQcm9taXNlID0gKGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IHRoaXMubG9jay53cml0ZSgoKSA9PiB7XG4gICAgICAgIHRoaXMuYWJpbGl0aWVzID0gW11cbiAgICAgICAgdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uICs9IDFcbiAgICAgICAgdGhpcy5yZXNldHRpbmdHZW5lcmF0aW9uID0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uXG4gICAgICAgIHRoaXMuY2FjaGVLZXkgKz0gMVxuICAgICAgfSlcbiAgICAgIHRoaXMuZXZlbnRzLmVtaXQoXCJvblJlc2V0QWJpbGl0aWVzXCIpXG4gICAgfSkoKVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucmVzZXRQcm9taXNlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHRoaXMucmVzZXRQcm9taXNlID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHJlbG9hZEFiaWxpdGllcyAoYWJpbGl0aWVzLCByZWxvYWRLZXkpIHtcbiAgICBpZiAocmVsb2FkS2V5ICYmIHRoaXMucmVsb2FkUHJvbWlzZXMuaGFzKHJlbG9hZEtleSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlbG9hZFByb21pc2VzLmdldChyZWxvYWRLZXkpXG4gICAgfVxuXG4gICAgY29uc3QgcHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLnJlc2V0QWJpbGl0aWVzKClcbiAgICAgIGF3YWl0IHRoaXMubG9hZEFiaWxpdGllcyhhYmlsaXRpZXMpXG4gICAgfSkoKVxuXG4gICAgaWYgKHJlbG9hZEtleSkgdGhpcy5yZWxvYWRQcm9taXNlcy5zZXQocmVsb2FkS2V5LCBwcm9taXNlKVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHByb21pc2VcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHJlbG9hZEtleSkgdGhpcy5yZWxvYWRQcm9taXNlcy5kZWxldGUocmVsb2FkS2V5KVxuICAgIH1cbiAgfVxuXG4gIHNlbmRBYmlsaXRpZXNSZXF1ZXN0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGdlbmVyYXRpb24gPSB0aGlzLmFiaWxpdGllc0dlbmVyYXRpb25cbiAgICBjb25zdCBhYmlsaXRpZXNUb0xvYWQgPSB0aGlzLmFiaWxpdGllc1RvTG9hZFxuICAgIGNvbnN0IGFiaWxpdGllc1RvTG9hZERhdGEgPSB0aGlzLmFiaWxpdGllc1RvTG9hZERhdGFcblxuICAgIHRoaXMuYWJpbGl0aWVzVG9Mb2FkID0gW11cbiAgICB0aGlzLmFiaWxpdGllc1RvTG9hZERhdGEgPSBbXVxuXG4gICAgbGV0IGFiaWxpdGllcyA9IFtdXG4gICAgbGV0IGRpZEZhaWwgPSBmYWxzZVxuXG4gICAgLy8gTG9hZCBhYmlsaXRpZXMgZnJvbSBiYWNrZW5kXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IFNlcnZpY2VzLmN1cnJlbnQoKS5zZW5kUmVxdWVzdChcIkNhbkNhbjo6TG9hZEFiaWxpdGllc1wiLCB7XG4gICAgICAgIHJlcXVlc3Q6IGFiaWxpdGllc1RvTG9hZERhdGFcbiAgICAgIH0pXG4gICAgICBjb25zdCByZXNwb25zZUFiaWxpdGllcyA9IGRpZ2cocmVzdWx0LCBcImFiaWxpdGllc1wiKVxuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNwb25zZUFiaWxpdGllcykpIGFiaWxpdGllcyA9IHJlc3BvbnNlQWJpbGl0aWVzXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGRpZEZhaWwgPSB0cnVlXG4gICAgICBjb25zb2xlLmVycm9yKFwiRmFpbGVkIHRvIGxvYWQgYWJpbGl0aWVzXCIsIGVycm9yKVxuICAgIH1cblxuICAgIGlmIChnZW5lcmF0aW9uICE9PSB0aGlzLmFiaWxpdGllc0dlbmVyYXRpb24gfHwgZGlkRmFpbCkge1xuICAgICAgZm9yIChjb25zdCBhYmlsaXR5RGF0YSBvZiBhYmlsaXRpZXNUb0xvYWQpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBhYmlsaXR5RGF0YS5jYWxsYmFja3MpIHtcbiAgICAgICAgICBjYWxsYmFjaygpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBsb2FkZWQgYWJpbGl0aWVzXG4gICAgdGhpcy5hYmlsaXRpZXMgPSB0aGlzLmFiaWxpdGllcy5jb25jYXQoYWJpbGl0aWVzKVxuICAgIHRoaXMuY2FjaGVLZXkgKz0gMVxuXG4gICAgLy8gQ2FsbCB0aGUgY2FsbGJhY2tzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIHRoZSBhYmlsaXR5IHRvIGhhdmUgYmVlbiBsb2FkZWRcbiAgICBmb3IgKGNvbnN0IGFiaWxpdHlEYXRhIG9mIGFiaWxpdGllc1RvTG9hZCkge1xuICAgICAgZm9yIChjb25zdCBjYWxsYmFjayBvZiBhYmlsaXR5RGF0YS5jYWxsYmFja3MpIHtcbiAgICAgICAgY2FsbGJhY2soKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19
236
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FuLWNhbi5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FuLWNhbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxpQ0FBaUM7QUFDakMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLGVBQWUsQ0FBQTtBQUMxQyxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFDLElBQUksRUFBQyxNQUFNLFdBQVcsQ0FBQTtBQUM5QixPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUE7QUFFcEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFBO0FBRWpCLE1BQU0sQ0FBQyxPQUFPLE9BQU8sY0FBYztJQUNqQyxTQUFTLEdBQUcsRUFBRSxDQUFBO0lBQ2QsZUFBZSxHQUFHLEVBQUUsQ0FBQTtJQUNwQixtQkFBbUIsR0FBRyxFQUFFLENBQUE7SUFDeEIsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO0lBQ3ZCLFFBQVEsR0FBRyxDQUFDLENBQUE7SUFDWixZQUFZLEdBQUcsQ0FBQyxDQUFBO0lBQ2hCLGdCQUFnQixHQUFHLElBQUksR0FBRyxFQUFFLENBQUE7SUFDNUIsdUJBQXVCLEdBQUcsSUFBSSxDQUFBO0lBQzlCLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFBO0lBQzFCLFlBQVksR0FBRyxJQUFJLENBQUE7SUFDbkIsbUJBQW1CLEdBQUcsSUFBSSxDQUFBO0lBQzFCLE1BQU0sR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFBO0lBQzNCLElBQUksR0FBRyxJQUFJLGlCQUFpQixFQUFFLENBQUE7SUFFOUIsTUFBTSxDQUFDLE9BQU87UUFDWixJQUFJLENBQUMsTUFBTSxDQUFDLHFCQUFxQjtZQUFFLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsRUFBRSxDQUFBO1FBRXRGLE9BQU8sTUFBTSxDQUFDLHFCQUFxQixDQUFBO0lBQ3JDLENBQUM7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LENBQUE7WUFFbkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDO2dCQUFFLFNBQVMsR0FBRyxpQkFBaUIsQ0FBQTtRQUNyRSxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLE9BQU8sR0FBRyxJQUFJLENBQUE7WUFDZCxPQUFPLENBQUMsS0FBSyxDQUFDLDBCQUEwQixFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ2xELENBQUM7UUFFRCxJQUFJLFVBQVUsS0FBSyxJQUFJLENBQUMsbUJBQW1CLElBQUksT0FBTyxFQUFFLENBQUM7WUFDdkQsS0FBSyxNQUFNLFdBQVcsSUFBSSxlQUFlLEVBQUUsQ0FBQztnQkFDMUMsS0FBSyxNQUFNLFFBQVEsSUFBSSxXQUFXLENBQUMsU0FBUyxFQUFFLENBQUM7b0JBQzdDLFFBQVEsRUFBRSxDQUFBO2dCQUNaLENBQUM7WUFDSCxDQUFDO1lBRUQsT0FBTTtRQUNSLENBQUM7UUFFRCwyQkFBMkI7UUFDM0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUNqRCxJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsQ0FBQTtRQUVsQiwwRUFBMEU7UUFDMUUsS0FBSyxNQUFNLFdBQVcsSUFBSSxlQUFlLEVBQUUsQ0FBQztZQUMxQyxLQUFLLE1BQU0sUUFBUSxJQUFJLFdBQVcsQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDN0MsUUFBUSxFQUFFLENBQUE7WUFDWixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUMsQ0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCB7RXZlbnRFbWl0dGVyfSBmcm9tIFwiZXZlbnRlbWl0dGVyM1wiXG5pbXBvcnQge1JlYWRlcnNXcml0ZXJMb2NrfSBmcm9tIFwiZXBpYy1sb2Nrc1wiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IFNlcnZpY2VzIGZyb20gXCIuL3NlcnZpY2VzLmpzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDYW5DYW4ge1xuICBhYmlsaXRpZXMgPSBbXVxuICBhYmlsaXRpZXNUb0xvYWQgPSBbXVxuICBhYmlsaXRpZXNUb0xvYWREYXRhID0gW11cbiAgYWJpbGl0aWVzR2VuZXJhdGlvbiA9IDBcbiAgY2FjaGVLZXkgPSAwXG4gIGxvYWRpbmdDb3VudCA9IDBcbiAgbWlzc2luZ0FiaWxpdGllcyA9IG5ldyBNYXAoKVxuICBtaXNzaW5nQWJpbGl0aWVzVGltZW91dCA9IG51bGxcbiAgcmVsb2FkUHJvbWlzZXMgPSBuZXcgTWFwKClcbiAgcmVzZXRQcm9taXNlID0gbnVsbFxuICByZXNldHRpbmdHZW5lcmF0aW9uID0gbnVsbFxuICBldmVudHMgPSBuZXcgRXZlbnRFbWl0dGVyKClcbiAgbG9jayA9IG5ldyBSZWFkZXJzV3JpdGVyTG9jaygpXG5cbiAgc3RhdGljIGN1cnJlbnQgKCkge1xuICAgIGlmICghc2hhcmVkLmN1cnJlbnRBcGlNYWtlckNhbkNhbikgc2hhcmVkLmN1cnJlbnRBcGlNYWtlckNhbkNhbiA9IG5ldyBBcGlNYWtlckNhbkNhbigpXG5cbiAgICByZXR1cm4gc2hhcmVkLmN1cnJlbnRBcGlNYWtlckNhbkNhblxuICB9XG5cbiAgY2FuIChhYmlsaXR5LCBzdWJqZWN0LCBvcHRpb25zID0ge30pIHtcbiAgICBsZXQgYWJpbGl0eVRvVXNlID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGFiaWxpdHkpXG4gICAgY29uc3QgZm91bmRBYmlsaXR5ID0gdGhpcy5maW5kQWJpbGl0eShhYmlsaXR5VG9Vc2UsIHN1YmplY3QpXG5cbiAgICBpZiAoZm91bmRBYmlsaXR5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMucmVjb3JkTWlzc2luZ0FiaWxpdHkoYWJpbGl0eVRvVXNlLCBzdWJqZWN0KVxuXG4gICAgICBpZiAob3B0aW9ucy5kZWJ1Zykge1xuICAgICAgICBsZXQgc3ViamVjdExhYmVsID0gc3ViamVjdFxuXG4gICAgICAgIC8vIFRyYW5zbGF0ZSByZXNvdXJjZS1tb2RlbHMgaW50byBjbGFzcyBuYW1lIHN0cmluZ3NcbiAgICAgICAgaWYgKHR5cGVvZiBzdWJqZWN0ID09IFwiZnVuY3Rpb25cIiAmJiBzdWJqZWN0Lm1vZGVsQ2xhc3NEYXRhKSB7XG4gICAgICAgICAgc3ViamVjdExhYmVsID0gZGlnZyhzdWJqZWN0Lm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5lcnJvcihgQWJpbGl0eSBub3QgbG9hZGVkICR7c3ViamVjdExhYmVsfSMke2FiaWxpdHlUb1VzZX1gLCB7YWJpbGl0aWVzOiB0aGlzLmFiaWxpdGllcywgYWJpbGl0eSwgc3ViamVjdH0pXG4gICAgICB9XG5cbiAgICAgIHJldHVybiBudWxsXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkaWdnKGZvdW5kQWJpbGl0eSwgXCJjYW5cIilcbiAgICB9XG4gIH1cblxuICByZWNvcmRNaXNzaW5nQWJpbGl0eSAoYWJpbGl0eSwgc3ViamVjdCkge1xuICAgIGxldCBtaXNzaW5nQWJpbGl0eVNldCA9IHRoaXMubWlzc2luZ0FiaWxpdGllcy5nZXQoc3ViamVjdClcblxuICAgIGlmICghbWlzc2luZ0FiaWxpdHlTZXQpIHtcbiAgICAgIG1pc3NpbmdBYmlsaXR5U2V0ID0gbmV3IFNldCgpXG4gICAgICB0aGlzLm1pc3NpbmdBYmlsaXRpZXMuc2V0KHN1YmplY3QsIG1pc3NpbmdBYmlsaXR5U2V0KVxuICAgIH1cblxuICAgIGlmIChtaXNzaW5nQWJpbGl0eVNldC5oYXMoYWJpbGl0eSkpIHJldHVyblxuXG4gICAgbWlzc2luZ0FiaWxpdHlTZXQuYWRkKGFiaWxpdHkpXG4gICAgdGhpcy5xdWV1ZU1pc3NpbmdBYmlsaXRpZXNMb2FkKClcbiAgfVxuXG4gIHF1ZXVlTWlzc2luZ0FiaWxpdGllc0xvYWQgKCkge1xuICAgIGlmICh0aGlzLm1pc3NpbmdBYmlsaXRpZXNUaW1lb3V0KSByZXR1cm5cblxuICAgIHRoaXMubWlzc2luZ0FiaWxpdGllc1RpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMubG9hZE1pc3NpbmdBYmlsaXRpZXMsIDApXG4gIH1cblxuICBsb2FkTWlzc2luZ0FiaWxpdGllcyA9ICgpID0+IHtcbiAgICBjb25zdCBtaXNzaW5nQWJpbGl0aWVzID0gdGhpcy5taXNzaW5nQWJpbGl0aWVzXG5cbiAgICB0aGlzLm1pc3NpbmdBYmlsaXRpZXMgPSBuZXcgTWFwKClcbiAgICB0aGlzLm1pc3NpbmdBYmlsaXRpZXNUaW1lb3V0ID0gbnVsbFxuXG4gICAgY29uc3QgYWJpbGl0aWVzVG9Mb2FkID0gW11cblxuICAgIGZvciAoY29uc3QgW3N1YmplY3QsIGFiaWxpdGllc10gb2YgbWlzc2luZ0FiaWxpdGllcy5lbnRyaWVzKCkpIHtcbiAgICAgIGFiaWxpdGllc1RvTG9hZC5wdXNoKFtzdWJqZWN0LCBBcnJheS5mcm9tKGFiaWxpdGllcyldKVxuICAgIH1cblxuICAgIGlmIChhYmlsaXRpZXNUb0xvYWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5sb2FkQWJpbGl0aWVzKGFiaWxpdGllc1RvTG9hZClcbiAgICB9XG4gIH1cblxuICBmaW5kQWJpbGl0eSAoYWJpbGl0eSwgc3ViamVjdCkge1xuICAgIHJldHVybiB0aGlzLmFiaWxpdGllcy5maW5kKChhYmlsaXR5RGF0YSkgPT4ge1xuICAgICAgY29uc3QgYWJpbGl0eURhdGFTdWJqZWN0ID0gZGlnZyhhYmlsaXR5RGF0YSwgXCJzdWJqZWN0XCIpXG4gICAgICBjb25zdCBhYmlsaXR5RGF0YUFiaWxpdHkgPSBkaWdnKGFiaWxpdHlEYXRhLCBcImFiaWxpdHlcIilcblxuICAgICAgaWYgKGFiaWxpdHlEYXRhQWJpbGl0eSA9PSBhYmlsaXR5KSB7XG4gICAgICAgIC8vIElmIGFjdHVhbGx5IHNhbWUgY2xhc3NcbiAgICAgICAgaWYgKGFiaWxpdHlEYXRhU3ViamVjdCA9PSBzdWJqZWN0KSByZXR1cm4gdHJ1ZVxuXG4gICAgICAgIC8vIFNvbWV0aW1lcyBpbiBkZXYgd2hlbiB1c2luZyBsaW5raW5nIGl0IHdpbGwgYWN0dWFsbHkgYmUgdHdvIGRpZmZlcmVudCBidXQgaWRlbnRpY2FsIHJlc291cmNlIGNsYXNzZXNcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR5cGVvZiBzdWJqZWN0ID09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICAgIHN1YmplY3QubW9kZWxDbGFzc0RhdGEgJiZcbiAgICAgICAgICB0eXBlb2YgYWJpbGl0eURhdGFTdWJqZWN0ID09IFwiZnVuY3Rpb25cIiAmJlxuICAgICAgICAgIGFiaWxpdHlEYXRhU3ViamVjdC5tb2RlbENsYXNzRGF0YSAmJlxuICAgICAgICAgIGRpZ2coc3ViamVjdC5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIikgPT0gZGlnZyhhYmlsaXR5RGF0YVN1YmplY3QubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgfVxuXG4gIGlzQWJpbGl0eUxvYWRlZCAoYWJpbGl0eSwgc3ViamVjdCkge1xuICAgIGNvbnN0IGZvdW5kQWJpbGl0eSA9IHRoaXMuZmluZEFiaWxpdHkoYWJpbGl0eSwgc3ViamVjdClcblxuICAgIGlmIChmb3VuZEFiaWxpdHkgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlzUmVsb2FkaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5sb2FkaW5nQ291bnQgPiAwIHx8IHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiAhPT0gbnVsbFxuICB9XG5cbiAgZ2V0Q2FjaGVLZXkgKCkge1xuICAgIHJldHVybiB0aGlzLmNhY2hlS2V5XG4gIH1cblxuICBhc3luYyBsb2FkQWJpbGl0aWVzIChhYmlsaXRpZXMpIHtcbiAgICBjb25zdCBnZW5lcmF0aW9uID0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uXG5cbiAgICB0aGlzLmxvYWRpbmdDb3VudCArPSAxXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5sb2NrLnJlYWQoYXN5bmMgKCkgPT4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IFtdXG5cbiAgICAgICAgZm9yIChjb25zdCBhYmlsaXR5RGF0YSBvZiBhYmlsaXRpZXMpIHtcbiAgICAgICAgICBjb25zdCBzdWJqZWN0ID0gYWJpbGl0eURhdGFbMF1cblxuICAgICAgICAgIGlmICghc3ViamVjdCkgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHN1YmplY3QgZ2l2ZW4gaW4gYWJpbGl0aWVzOiAke3N1YmplY3R9IC0gJHtKU09OLnN0cmluZ2lmeShhYmlsaXRpZXMpfWApXG4gICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGFiaWxpdHlEYXRhWzFdKSkgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCBhbiBhcnJheSBvZiBhYmlsaXRpZXMgYnV0IGdvdDogJHt0eXBlb2YgYWJpbGl0eURhdGFbMV19OiAke2FiaWxpdHlEYXRhWzFdfWApXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGFiaWxpdHkgb2YgYWJpbGl0eURhdGFbMV0pIHtcbiAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLmxvYWRBYmlsaXR5KGFiaWxpdHksIHN1YmplY3QpXG5cbiAgICAgICAgICAgIHByb21pc2VzLnB1c2gocHJvbWlzZSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcylcbiAgICAgIH0pXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmICh0aGlzLmxvYWRpbmdDb3VudCA+IDApIHRoaXMubG9hZGluZ0NvdW50IC09IDFcbiAgICAgIGlmICh0aGlzLnJlc2V0dGluZ0dlbmVyYXRpb24gPT09IGdlbmVyYXRpb24pIHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiA9IG51bGxcbiAgICB9XG4gIH1cblxuICBsb2FkQWJpbGl0eSAoYWJpbGl0eSwgc3ViamVjdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xuICAgICAgY29uc3Qgbm9ybWFsaXplZEFiaWxpdHkgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYWJpbGl0eSlcblxuICAgICAgaWYgKHRoaXMuaXNBYmlsaXR5TG9hZGVkKG5vcm1hbGl6ZWRBYmlsaXR5LCBzdWJqZWN0KSkge1xuICAgICAgICByZXNvbHZlKClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZvdW5kQWJpbGl0eSA9IHRoaXMuYWJpbGl0aWVzVG9Mb2FkLmZpbmQoKGFiaWxpdHlUb0xvYWQpID0+IGRpZ2coYWJpbGl0eVRvTG9hZCwgXCJhYmlsaXR5XCIpID09IG5vcm1hbGl6ZWRBYmlsaXR5ICYmXG4gICAgICAgIGRpZ2coYWJpbGl0eVRvTG9hZCwgXCJzdWJqZWN0XCIpID09IHN1YmplY3RcbiAgICAgIClcblxuICAgICAgaWYgKGZvdW5kQWJpbGl0eSkge1xuICAgICAgICBmb3VuZEFiaWxpdHkuY2FsbGJhY2tzLnB1c2gocmVzb2x2ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuYWJpbGl0aWVzVG9Mb2FkLnB1c2goe2FiaWxpdHk6IG5vcm1hbGl6ZWRBYmlsaXR5LCBjYWxsYmFja3M6IFtyZXNvbHZlXSwgc3ViamVjdH0pXG4gICAgICAgIHRoaXMuYWJpbGl0aWVzVG9Mb2FkRGF0YS5wdXNoKHthYmlsaXR5OiBub3JtYWxpemVkQWJpbGl0eSwgc3ViamVjdH0pXG5cbiAgICAgICAgdGhpcy5xdWV1ZUFiaWxpdGllc1JlcXVlc3QoKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBxdWV1ZUFiaWxpdGllc1JlcXVlc3QgKCkge1xuICAgIGlmICh0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdFRpbWVvdXQpIHJldHVyblxuXG4gICAgdGhpcy5xdWV1ZUFiaWxpdGllc1JlcXVlc3RUaW1lb3V0ID0gc2V0VGltZW91dCh0aGlzLnNlbmRBYmlsaXRpZXNSZXF1ZXN0LCAwKVxuICB9XG5cbiAgYXN5bmMgcmVzZXRBYmlsaXRpZXMgKCkge1xuICAgIGlmICh0aGlzLnJlc2V0UHJvbWlzZSkgcmV0dXJuIHRoaXMucmVzZXRQcm9taXNlXG5cbiAgICB0aGlzLnJlc2V0UHJvbWlzZSA9IChhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCB0aGlzLmxvY2sud3JpdGUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFiaWxpdGllcyA9IFtdXG4gICAgICAgIHRoaXMuYWJpbGl0aWVzR2VuZXJhdGlvbiArPSAxXG4gICAgICAgIHRoaXMucmVzZXR0aW5nR2VuZXJhdGlvbiA9IHRoaXMuYWJpbGl0aWVzR2VuZXJhdGlvblxuICAgICAgICB0aGlzLmNhY2hlS2V5ICs9IDFcbiAgICAgIH0pXG4gICAgICB0aGlzLmV2ZW50cy5lbWl0KFwib25SZXNldEFiaWxpdGllc1wiKVxuICAgIH0pKClcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnJlc2V0UHJvbWlzZVxuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnJlc2V0UHJvbWlzZSA9IG51bGxcbiAgICB9XG4gIH1cblxuICBhc3luYyByZWxvYWRBYmlsaXRpZXMgKGFiaWxpdGllcywgcmVsb2FkS2V5KSB7XG4gICAgaWYgKHJlbG9hZEtleSAmJiB0aGlzLnJlbG9hZFByb21pc2VzLmhhcyhyZWxvYWRLZXkpKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWxvYWRQcm9taXNlcy5nZXQocmVsb2FkS2V5KVxuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2UgPSAoYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgdGhpcy5yZXNldEFiaWxpdGllcygpXG4gICAgICBhd2FpdCB0aGlzLmxvYWRBYmlsaXRpZXMoYWJpbGl0aWVzKVxuICAgIH0pKClcblxuICAgIGlmIChyZWxvYWRLZXkpIHRoaXMucmVsb2FkUHJvbWlzZXMuc2V0KHJlbG9hZEtleSwgcHJvbWlzZSlcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBwcm9taXNlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyZWxvYWRLZXkpIHRoaXMucmVsb2FkUHJvbWlzZXMuZGVsZXRlKHJlbG9hZEtleSlcbiAgICB9XG4gIH1cblxuICBzZW5kQWJpbGl0aWVzUmVxdWVzdCA9IGFzeW5jICgpID0+IHtcbiAgICB0aGlzLnF1ZXVlQWJpbGl0aWVzUmVxdWVzdFRpbWVvdXQgPSBudWxsXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHRoaXMuYWJpbGl0aWVzR2VuZXJhdGlvblxuICAgIGNvbnN0IGFiaWxpdGllc1RvTG9hZCA9IHRoaXMuYWJpbGl0aWVzVG9Mb2FkXG4gICAgY29uc3QgYWJpbGl0aWVzVG9Mb2FkRGF0YSA9IHRoaXMuYWJpbGl0aWVzVG9Mb2FkRGF0YVxuXG4gICAgdGhpcy5hYmlsaXRpZXNUb0xvYWQgPSBbXVxuICAgIHRoaXMuYWJpbGl0aWVzVG9Mb2FkRGF0YSA9IFtdXG5cbiAgICBsZXQgYWJpbGl0aWVzID0gW11cbiAgICBsZXQgZGlkRmFpbCA9IGZhbHNlXG5cbiAgICAvLyBMb2FkIGFiaWxpdGllcyBmcm9tIGJhY2tlbmRcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiQ2FuQ2FuOjpMb2FkQWJpbGl0aWVzXCIsIHtcbiAgICAgICAgcmVxdWVzdDogYWJpbGl0aWVzVG9Mb2FkRGF0YVxuICAgICAgfSwge2luc3RhbnQ6IHRydWV9KVxuICAgICAgY29uc3QgcmVzcG9uc2VBYmlsaXRpZXMgPSBkaWdnKHJlc3VsdCwgXCJhYmlsaXRpZXNcIilcblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVzcG9uc2VBYmlsaXRpZXMpKSBhYmlsaXRpZXMgPSByZXNwb25zZUFiaWxpdGllc1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBkaWRGYWlsID0gdHJ1ZVxuICAgICAgY29uc29sZS5lcnJvcihcIkZhaWxlZCB0byBsb2FkIGFiaWxpdGllc1wiLCBlcnJvcilcbiAgICB9XG5cbiAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gdGhpcy5hYmlsaXRpZXNHZW5lcmF0aW9uIHx8IGRpZEZhaWwpIHtcbiAgICAgIGZvciAoY29uc3QgYWJpbGl0eURhdGEgb2YgYWJpbGl0aWVzVG9Mb2FkKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgYWJpbGl0eURhdGEuY2FsbGJhY2tzKSB7XG4gICAgICAgICAgY2FsbGJhY2soKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIC8vIFNldCB0aGUgbG9hZGVkIGFiaWxpdGllc1xuICAgIHRoaXMuYWJpbGl0aWVzID0gdGhpcy5hYmlsaXRpZXMuY29uY2F0KGFiaWxpdGllcylcbiAgICB0aGlzLmNhY2hlS2V5ICs9IDFcblxuICAgIC8vIENhbGwgdGhlIGNhbGxiYWNrcyB0aGF0IGFyZSB3YWl0aW5nIGZvciB0aGUgYWJpbGl0eSB0byBoYXZlIGJlZW4gbG9hZGVkXG4gICAgZm9yIChjb25zdCBhYmlsaXR5RGF0YSBvZiBhYmlsaXRpZXNUb0xvYWQpIHtcbiAgICAgIGZvciAoY29uc3QgY2FsbGJhY2sgb2YgYWJpbGl0eURhdGEuY2FsbGJhY2tzKSB7XG4gICAgICAgIGNhbGxiYWNrKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"devise.d.ts","sourceRoot":"/src/","sources":["devise.js"],"names":[],"mappings":"AAqBA;IACE,yCAEC;IAED,gCAAgC;IAChC,kBADc,cAAc,CAO3B;IAED,4EAEC;IAED,iDAYC;IAED,iCAKC;IAED;;;OAcC;IAED,kDAMC;IAQD,qCAEC;IAED,wCAgBC;IA1BD,qCAIC;IAyBC,aAAkB;IAGpB,iCAMC;IAED,2CAMC;IAED,kCAkBC;CACF"}
1
+ {"version":3,"file":"devise.d.ts","sourceRoot":"/src/","sources":["devise.js"],"names":[],"mappings":"AAqBA;IACE,yCAEC;IAED,gCAAgC;IAChC,kBADc,cAAc,CAO3B;IAED,4EAEC;IAED,iDAYC;IAED,iCAKC;IAED;;;OAcC;IAED,kDAMC;IAQD,qCAEC;IAED,wCAeC;IAzBD,qCAIC;IAwBC,aAAkB;IAGpB,iCAMC;IAED,2CAMC;IAED,kCAkBC;CACF"}
package/build/devise.js CHANGED
@@ -76,12 +76,12 @@ export default class ApiMakerDevise {
76
76
  args.scope = "user";
77
77
  }
78
78
  const response = await Services.current().sendRequest("Devise::SignOut", { args });
79
+ ApiMakerDevise.setSignedOut(args);
80
+ ApiMakerDevise.callSignOutEvent(args);
79
81
  // Cannot use the class because they would both import each other
80
82
  if (shared.apiMakerSessionStatusUpdater) {
81
83
  shared.apiMakerSessionStatusUpdater.updateSessionStatus();
82
84
  }
83
- ApiMakerDevise.setSignedOut(args);
84
- ApiMakerDevise.callSignOutEvent(args);
85
85
  return response;
86
86
  }
87
87
  constructor() {
@@ -115,4 +115,4 @@ export default class ApiMakerDevise {
115
115
  return modelInstance;
116
116
  }
117
117
  }
118
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aXNlLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJkZXZpc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNuQyxPQUFPLFlBQVksTUFBTSxtQkFBbUIsQ0FBQSxDQUFDLG1DQUFtQztBQUNoRixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUEsQ0FBQyxtQ0FBbUM7QUFDNUUsT0FBTyxpQkFBaUIsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RCxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUEsQ0FBQyxtQ0FBbUM7QUFFeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjO0lBQUUsVUFBVSxDQUFDLGNBQWMsR0FBRyxFQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUMsQ0FBQTtBQUV4RSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFBO0FBRXhDLE1BQU0sV0FBVztJQUNmLFlBQVksS0FBSyxFQUFFLElBQUk7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7Q0FDaEM7QUFFRCxNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWM7SUFDakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUk7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FB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dGV4dH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBEZXNlcmlhbGl6ZXIgZnJvbSBcIi4vZGVzZXJpYWxpemVyLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCBldmVudHMgZnJvbSBcIi4vZXZlbnRzLmpzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IG1vZGVsQ2xhc3NSZXF1aXJlIGZyb20gXCIuL21vZGVsLWNsYXNzLXJlcXVpcmUuanNcIlxuaW1wb3J0IFNlcnZpY2VzIGZyb20gXCIuL3NlcnZpY2VzLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcblxuaWYgKCFnbG9iYWxUaGlzLkFwaU1ha2VyRGV2aXNlKSBnbG9iYWxUaGlzLkFwaU1ha2VyRGV2aXNlID0ge3Njb3Blczoge319XG5cbmNvbnN0IHNoYXJlZCA9IGdsb2JhbFRoaXMuQXBpTWFrZXJEZXZpc2VcblxuY2xhc3MgRGV2aXNlU2NvcGUge1xuICBjb25zdHJ1Y3RvcihzY29wZSwgYXJncykge1xuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgICB0aGlzLmNvbnRleHQgPSBjcmVhdGVDb250ZXh0KClcbiAgICB0aGlzLnNjb3BlID0gc2NvcGVcbiAgfVxuXG4gIGdldENvbnRleHQgPSAoKSA9PiB0aGlzLmNvbnRleHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJEZXZpc2Uge1xuICBzdGF0aWMgY2FsbFNpZ25PdXRFdmVudChhcmdzKSB7XG4gICAgZXZlbnRzLmVtaXQoXCJvbkRldmlzZVNpZ25PdXRcIiwge2FyZ3N9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcGlNYWtlckRldmlzZX0gKi9cbiAgc3RhdGljIGN1cnJlbnQoKSB7XG4gICAgaWYgKCFzaGFyZWQuY3VycmVudEFwaU1ha2VyRGV2aXNlKSB7XG4gICAgICBzaGFyZWQuY3VycmVudEFwaU1ha2VyRGV2aXNlID0gbmV3IEFwaU1ha2VyRGV2aXNlKClcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVkLmN1cnJlbnRBcGlNYWtlckRldmlzZVxuICB9XG5cbiAgc3RhdGljIGV2ZW50cygpIHtcbiAgICByZXR1cm4gZXZlbnRzXG4gIH1cblxuICBzdGF0aWMgYWRkVXNlclNjb3BlKHNjb3BlLCBhcmdzID0ge30pIHtcbiAgICBjb25zdCBzY29wZUNhbWVsaXplZCA9IGluZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUpXG4gICAgY29uc3QgY3VycmVudE1ldGhvZE5hbWUgPSBgY3VycmVudCR7c2NvcGVDYW1lbGl6ZWR9YFxuICAgIGNvbnN0IGlzU2lnbmVkSW5NZXRob2ROYW1lID0gYGlzJHtzY29wZUNhbWVsaXplZH1TaWduZWRJbmBcbiAgICBjb25zdCBnZXRBcmdzTWV0aG9kTmFtZSA9IGBnZXQke3Njb3BlQ2FtZWxpemVkfUFyZ3NgXG4gICAgY29uc3QgZ2V0U2NvcGVOYW1lID0gYGdldCR7c2NvcGVDYW1lbGl6ZWR9U2NvcGVgXG4gICAgY29uc3Qgc2NvcGVJbnN0YW5jZSA9IG5ldyBEZXZpc2VTY29wZShzY29wZSwgYXJncylcblxuICAgIEFwaU1ha2VyRGV2aXNlW2N1cnJlbnRNZXRob2ROYW1lXSA9ICgpID0+IEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5nZXRDdXJyZW50U2NvcGUoc2NvcGUpXG4gICAgQXBpTWFrZXJEZXZpc2VbaXNTaWduZWRJbk1ldGhvZE5hbWVdID0gKCkgPT4gQm9vbGVhbihBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHNjb3BlKSlcbiAgICBBcGlNYWtlckRldmlzZVtnZXRBcmdzTWV0aG9kTmFtZV0gPSAoKSA9PiBhcmdzXG4gICAgQXBpTWFrZXJEZXZpc2VbZ2V0U2NvcGVOYW1lXSA9ICgpID0+IHNjb3BlSW5zdGFuY2VcbiAgfVxuXG4gIHN0YXRpYyBnZXRTY29wZShzY29wZSkge1xuICAgIGNvbnN0IHNjb3BlQ2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSlcbiAgICBjb25zdCBnZXRTY29wZU5hbWUgPSBgZ2V0JHtzY29wZUNhbWVsaXplZH1TY29wZWBcblxuICAgIHJldHVybiBBcGlNYWtlckRldmlzZVtnZXRTY29wZU5hbWVdKClcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzaWduSW4odXNlcm5hbWUsIHBhc3N3b3JkLCBhcmdzID0ge30pIHtcbiAgICBpZiAoIWFyZ3Muc2NvcGUpIGFyZ3Muc2NvcGUgPSBcInVzZXJcIlxuXG4gICAgY29uc3QgcG9zdERhdGEgPSB7dXNlcm5hbWUsIHBhc3N3b3JkLCBhcmdzfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpTaWduSW5cIiwgcG9zdERhdGEpXG5cbiAgICBsZXQgbW9kZWwgPSByZXNwb25zZS5tb2RlbFxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSBtb2RlbCA9IG1vZGVsWzBdXG5cbiAgICBBcGlNYWtlckRldmlzZS51cGRhdGVTZXNzaW9uKG1vZGVsKVxuICAgIGV2ZW50cy5lbWl0KFwib25EZXZpc2VTaWduSW5cIiwge3VzZXJuYW1lLCAuLi5hcmdzfSlcblxuICAgIHJldHVybiB7bW9kZWwsIHJlc3BvbnNlfVxuICB9XG5cbiAgc3RhdGljIHVwZGF0ZVNlc3Npb24obW9kZWwsIGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkgYXJncy5zY29wZSA9IFwidXNlclwiXG5cbiAgICBjb25zdCBjYW1lbGl6ZWRTY29wZU5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGFyZ3Muc2NvcGUsIHRydWUpXG5cbiAgICBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuY3VycmVudHNbY2FtZWxpemVkU2NvcGVOYW1lXSA9IG1vZGVsXG4gIH1cblxuICBoYXNDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBjb25zdCBjYW1lbGl6ZWRTY29wZU5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlLCB0cnVlKVxuXG4gICAgcmV0dXJuIGNhbWVsaXplZFNjb3BlTmFtZSBpbiBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuY3VycmVudHNcbiAgfVxuXG4gIHN0YXRpYyBzZXRTaWduZWRPdXQoYXJncykge1xuICAgIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1tpbmZsZWN0aW9uLmNhbWVsaXplKGFyZ3Muc2NvcGUsIHRydWUpXSA9IG51bGxcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzaWduT3V0KGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkge1xuICAgICAgYXJncy5zY29wZSA9IFwidXNlclwiXG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJEZXZpc2U6OlNpZ25PdXRcIiwge2FyZ3N9KVxuXG4gICAgLy8gQ2Fubm90IHVzZSB0aGUgY2xhc3MgYmVjYXVzZSB0aGV5IHdvdWxkIGJvdGggaW1wb3J0IGVhY2ggb3RoZXJcbiAgICBpZiAoc2hhcmVkLmFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIpIHtcbiAgICAgIHNoYXJlZC5hcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyLnVwZGF0ZVNlc3Npb25TdGF0dXMoKVxuICAgIH1cblxuICAgIEFwaU1ha2VyRGV2aXNlLnNldFNpZ25lZE91dChhcmdzKVxuICAgIEFwaU1ha2VyRGV2aXNlLmNhbGxTaWduT3V0RXZlbnQoYXJncylcblxuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jdXJyZW50cyA9IHt9XG4gIH1cblxuICBnZXRDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBpZiAoIShzY29wZSBpbiB0aGlzLmN1cnJlbnRzKSkge1xuICAgICAgdGhpcy5jdXJyZW50c1tzY29wZV0gPSB0aGlzLmxvYWRDdXJyZW50U2NvcGUoc2NvcGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudHNbc2NvcGVdXG4gIH1cblxuICBoYXNHbG9iYWxDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBpZiAoZ2xvYmFsVGhpcy5hcGlNYWtlckRldmlzZUN1cnJlbnQgJiYgc2NvcGUgaW4gZ2xvYmFsVGhpcy5hcGlNYWtlckRldmlzZUN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBsb2FkQ3VycmVudFNjb3BlKHNjb3BlKSB7XG4gICAgaWYgKCF0aGlzLmhhc0dsb2JhbEN1cnJlbnRTY29wZShzY29wZSkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3Qgc2NvcGVEYXRhID0gZ2xvYmFsVGhpcy5hcGlNYWtlckRldmlzZUN1cnJlbnRbc2NvcGVdXG5cbiAgICBpZiAoIXNjb3BlRGF0YSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHBhcnNlZFNjb3BlRGF0YSA9IERlc2VyaWFsaXplci5wYXJzZShzY29wZURhdGEpXG5cbiAgICAvLyBNaWdodCBiZSBhIGNvbGxlY3Rpb24gd2l0aCBwcmVsb2FkZWQgcmVsYXRpb25zaGlwc1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBhcnNlZFNjb3BlRGF0YSkpIHJldHVybiBwYXJzZWRTY29wZURhdGFbMF1cblxuICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzUmVxdWlyZShzY29wZSlcbiAgICBjb25zdCBtb2RlbEluc3RhbmNlID0gbmV3IE1vZGVsQ2xhc3Moe2RhdGE6IHBhcnNlZFNjb3BlRGF0YX0pXG5cbiAgICByZXR1cm4gbW9kZWxJbnN0YW5jZVxuICB9XG59XG4iXX0=
118
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aXNlLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJkZXZpc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUNuQyxPQUFPLFlBQVksTUFBTSxtQkFBbUIsQ0FBQSxDQUFDLG1DQUFtQztBQUNoRixPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUEsQ0FBQyxtQ0FBbUM7QUFDNUUsT0FBTyxpQkFBaUIsTUFBTSwwQkFBMEIsQ0FBQTtBQUN4RCxPQUFPLFFBQVEsTUFBTSxlQUFlLENBQUEsQ0FBQyxtQ0FBbUM7QUFFeEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxjQUFjO0lBQUUsVUFBVSxDQUFDLGNBQWMsR0FBRyxFQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUMsQ0FBQTtBQUV4RSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFBO0FBRXhDLE1BQU0sV0FBVztJQUNmLFlBQVksS0FBSyxFQUFFLElBQUk7UUFDckIsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7UUFDaEIsSUFBSSxDQUFDLE9BQU8sR0FBRyxhQUFhLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtJQUNwQixDQUFDO0lBRUQsVUFBVSxHQUFHLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUE7Q0FDaEM7QUFFRCxNQUFNLENBQUMsT0FBTyxPQUFPLGNBQWM7SUFDakMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUk7UUFDMUIsTUFBTSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFDLElBQUksRUFBQyxDQUFDLENBQUE7SUFDeEMsQ0FBQztJQUVELGdDQUFnQztJQUNoQyxNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMscUJBQXFCLEVBQUUsQ0FB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dGV4dH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBEZXNlcmlhbGl6ZXIgZnJvbSBcIi4vZGVzZXJpYWxpemVyLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcbmltcG9ydCBldmVudHMgZnJvbSBcIi4vZXZlbnRzLmpzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIiAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHNvcnQtaW1wb3J0c1xuaW1wb3J0IG1vZGVsQ2xhc3NSZXF1aXJlIGZyb20gXCIuL21vZGVsLWNsYXNzLXJlcXVpcmUuanNcIlxuaW1wb3J0IFNlcnZpY2VzIGZyb20gXCIuL3NlcnZpY2VzLmpzXCIgLy8gZXNsaW50LWRpc2FibGUtbGluZSBzb3J0LWltcG9ydHNcblxuaWYgKCFnbG9iYWxUaGlzLkFwaU1ha2VyRGV2aXNlKSBnbG9iYWxUaGlzLkFwaU1ha2VyRGV2aXNlID0ge3Njb3Blczoge319XG5cbmNvbnN0IHNoYXJlZCA9IGdsb2JhbFRoaXMuQXBpTWFrZXJEZXZpc2VcblxuY2xhc3MgRGV2aXNlU2NvcGUge1xuICBjb25zdHJ1Y3RvcihzY29wZSwgYXJncykge1xuICAgIHRoaXMuYXJncyA9IGFyZ3NcbiAgICB0aGlzLmNvbnRleHQgPSBjcmVhdGVDb250ZXh0KClcbiAgICB0aGlzLnNjb3BlID0gc2NvcGVcbiAgfVxuXG4gIGdldENvbnRleHQgPSAoKSA9PiB0aGlzLmNvbnRleHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJEZXZpc2Uge1xuICBzdGF0aWMgY2FsbFNpZ25PdXRFdmVudChhcmdzKSB7XG4gICAgZXZlbnRzLmVtaXQoXCJvbkRldmlzZVNpZ25PdXRcIiwge2FyZ3N9KVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtBcGlNYWtlckRldmlzZX0gKi9cbiAgc3RhdGljIGN1cnJlbnQoKSB7XG4gICAgaWYgKCFzaGFyZWQuY3VycmVudEFwaU1ha2VyRGV2aXNlKSB7XG4gICAgICBzaGFyZWQuY3VycmVudEFwaU1ha2VyRGV2aXNlID0gbmV3IEFwaU1ha2VyRGV2aXNlKClcbiAgICB9XG5cbiAgICByZXR1cm4gc2hhcmVkLmN1cnJlbnRBcGlNYWtlckRldmlzZVxuICB9XG5cbiAgc3RhdGljIGV2ZW50cygpIHtcbiAgICByZXR1cm4gZXZlbnRzXG4gIH1cblxuICBzdGF0aWMgYWRkVXNlclNjb3BlKHNjb3BlLCBhcmdzID0ge30pIHtcbiAgICBjb25zdCBzY29wZUNhbWVsaXplZCA9IGluZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUpXG4gICAgY29uc3QgY3VycmVudE1ldGhvZE5hbWUgPSBgY3VycmVudCR7c2NvcGVDYW1lbGl6ZWR9YFxuICAgIGNvbnN0IGlzU2lnbmVkSW5NZXRob2ROYW1lID0gYGlzJHtzY29wZUNhbWVsaXplZH1TaWduZWRJbmBcbiAgICBjb25zdCBnZXRBcmdzTWV0aG9kTmFtZSA9IGBnZXQke3Njb3BlQ2FtZWxpemVkfUFyZ3NgXG4gICAgY29uc3QgZ2V0U2NvcGVOYW1lID0gYGdldCR7c2NvcGVDYW1lbGl6ZWR9U2NvcGVgXG4gICAgY29uc3Qgc2NvcGVJbnN0YW5jZSA9IG5ldyBEZXZpc2VTY29wZShzY29wZSwgYXJncylcblxuICAgIEFwaU1ha2VyRGV2aXNlW2N1cnJlbnRNZXRob2ROYW1lXSA9ICgpID0+IEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5nZXRDdXJyZW50U2NvcGUoc2NvcGUpXG4gICAgQXBpTWFrZXJEZXZpc2VbaXNTaWduZWRJbk1ldGhvZE5hbWVdID0gKCkgPT4gQm9vbGVhbihBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHNjb3BlKSlcbiAgICBBcGlNYWtlckRldmlzZVtnZXRBcmdzTWV0aG9kTmFtZV0gPSAoKSA9PiBhcmdzXG4gICAgQXBpTWFrZXJEZXZpc2VbZ2V0U2NvcGVOYW1lXSA9ICgpID0+IHNjb3BlSW5zdGFuY2VcbiAgfVxuXG4gIHN0YXRpYyBnZXRTY29wZShzY29wZSkge1xuICAgIGNvbnN0IHNjb3BlQ2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSlcbiAgICBjb25zdCBnZXRTY29wZU5hbWUgPSBgZ2V0JHtzY29wZUNhbWVsaXplZH1TY29wZWBcblxuICAgIHJldHVybiBBcGlNYWtlckRldmlzZVtnZXRTY29wZU5hbWVdKClcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzaWduSW4odXNlcm5hbWUsIHBhc3N3b3JkLCBhcmdzID0ge30pIHtcbiAgICBpZiAoIWFyZ3Muc2NvcGUpIGFyZ3Muc2NvcGUgPSBcInVzZXJcIlxuXG4gICAgY29uc3QgcG9zdERhdGEgPSB7dXNlcm5hbWUsIHBhc3N3b3JkLCBhcmdzfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpTaWduSW5cIiwgcG9zdERhdGEpXG5cbiAgICBsZXQgbW9kZWwgPSByZXNwb25zZS5tb2RlbFxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSBtb2RlbCA9IG1vZGVsWzBdXG5cbiAgICBBcGlNYWtlckRldmlzZS51cGRhdGVTZXNzaW9uKG1vZGVsKVxuICAgIGV2ZW50cy5lbWl0KFwib25EZXZpc2VTaWduSW5cIiwge3VzZXJuYW1lLCAuLi5hcmdzfSlcblxuICAgIHJldHVybiB7bW9kZWwsIHJlc3BvbnNlfVxuICB9XG5cbiAgc3RhdGljIHVwZGF0ZVNlc3Npb24obW9kZWwsIGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkgYXJncy5zY29wZSA9IFwidXNlclwiXG5cbiAgICBjb25zdCBjYW1lbGl6ZWRTY29wZU5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGFyZ3Muc2NvcGUsIHRydWUpXG5cbiAgICBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuY3VycmVudHNbY2FtZWxpemVkU2NvcGVOYW1lXSA9IG1vZGVsXG4gIH1cblxuICBoYXNDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBjb25zdCBjYW1lbGl6ZWRTY29wZU5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlLCB0cnVlKVxuXG4gICAgcmV0dXJuIGNhbWVsaXplZFNjb3BlTmFtZSBpbiBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuY3VycmVudHNcbiAgfVxuXG4gIHN0YXRpYyBzZXRTaWduZWRPdXQoYXJncykge1xuICAgIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1tpbmZsZWN0aW9uLmNhbWVsaXplKGFyZ3Muc2NvcGUsIHRydWUpXSA9IG51bGxcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzaWduT3V0KGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkge1xuICAgICAgYXJncy5zY29wZSA9IFwidXNlclwiXG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJEZXZpc2U6OlNpZ25PdXRcIiwge2FyZ3N9KVxuICAgIEFwaU1ha2VyRGV2aXNlLnNldFNpZ25lZE91dChhcmdzKVxuICAgIEFwaU1ha2VyRGV2aXNlLmNhbGxTaWduT3V0RXZlbnQoYXJncylcblxuICAgIC8vIENhbm5vdCB1c2UgdGhlIGNsYXNzIGJlY2F1c2UgdGhleSB3b3VsZCBib3RoIGltcG9ydCBlYWNoIG90aGVyXG4gICAgaWYgKHNoYXJlZC5hcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyKSB7XG4gICAgICBzaGFyZWQuYXBpTWFrZXJTZXNzaW9uU3RhdHVzVXBkYXRlci51cGRhdGVTZXNzaW9uU3RhdHVzKClcbiAgICB9XG5cbiAgICByZXR1cm4gcmVzcG9uc2VcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY3VycmVudHMgPSB7fVxuICB9XG5cbiAgZ2V0Q3VycmVudFNjb3BlKHNjb3BlKSB7XG4gICAgaWYgKCEoc2NvcGUgaW4gdGhpcy5jdXJyZW50cykpIHtcbiAgICAgIHRoaXMuY3VycmVudHNbc2NvcGVdID0gdGhpcy5sb2FkQ3VycmVudFNjb3BlKHNjb3BlKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmN1cnJlbnRzW3Njb3BlXVxuICB9XG5cbiAgaGFzR2xvYmFsQ3VycmVudFNjb3BlKHNjb3BlKSB7XG4gICAgaWYgKGdsb2JhbFRoaXMuYXBpTWFrZXJEZXZpc2VDdXJyZW50ICYmIHNjb3BlIGluIGdsb2JhbFRoaXMuYXBpTWFrZXJEZXZpc2VDdXJyZW50KSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgbG9hZEN1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGlmICghdGhpcy5oYXNHbG9iYWxDdXJyZW50U2NvcGUoc2NvcGUpKSB7XG4gICAgICByZXR1cm4gbnVsbFxuICAgIH1cblxuICAgIGNvbnN0IHNjb3BlRGF0YSA9IGdsb2JhbFRoaXMuYXBpTWFrZXJEZXZpc2VDdXJyZW50W3Njb3BlXVxuXG4gICAgaWYgKCFzY29wZURhdGEpIHJldHVybiBudWxsXG5cbiAgICBjb25zdCBwYXJzZWRTY29wZURhdGEgPSBEZXNlcmlhbGl6ZXIucGFyc2Uoc2NvcGVEYXRhKVxuXG4gICAgLy8gTWlnaHQgYmUgYSBjb2xsZWN0aW9uIHdpdGggcHJlbG9hZGVkIHJlbGF0aW9uc2hpcHNcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXJzZWRTY29wZURhdGEpKSByZXR1cm4gcGFyc2VkU2NvcGVEYXRhWzBdXG5cbiAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUoc2NvcGUpXG4gICAgY29uc3QgbW9kZWxJbnN0YW5jZSA9IG5ldyBNb2RlbENsYXNzKHtkYXRhOiBwYXJzZWRTY29wZURhdGF9KVxuXG4gICAgcmV0dXJuIG1vZGVsSW5zdGFuY2VcbiAgfVxufVxuIl19
@@ -1,5 +1,5 @@
1
1
  export default class ApiMakerServices {
2
2
  static current(): any;
3
- sendRequest(serviceName: any, args: any): any;
3
+ sendRequest(serviceName: any, args: any, options?: {}): any;
4
4
  }
5
5
  //# sourceMappingURL=services.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"services.d.ts","sourceRoot":"/src/","sources":["services.js"],"names":[],"mappings":"AAIA;IACE,sBAIC;IAED,8CAUC;CACF"}
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"/src/","sources":["services.js"],"names":[],"mappings":"AAIA;IACE,sBAIC;IAED,4DAUC;CACF"}
package/build/services.js CHANGED
@@ -6,7 +6,7 @@ export default class ApiMakerServices {
6
6
  shared.currentApiMakerService = new ApiMakerServices();
7
7
  return shared.currentApiMakerService;
8
8
  }
9
- sendRequest(serviceName, args) {
9
+ sendRequest(serviceName, args, options = {}) {
10
10
  return CommandsPool.addCommand({
11
11
  args: {
12
12
  service_args: args,
@@ -15,7 +15,7 @@ export default class ApiMakerServices {
15
15
  command: "services",
16
16
  collectionName: "calls",
17
17
  type: "service"
18
- });
18
+ }, options);
19
19
  }
20
20
  }
21
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBRTdDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQixNQUFNLENBQUMsT0FBTyxPQUFPLGdCQUFnQjtJQUNuQyxNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCO1lBQUUsTUFBTSxDQUFDLHNCQUFzQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtRQUUxRixPQUFPLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFFLFdBQVcsRUFBRSxJQUFJO1FBQzVCLE9BQU8sWUFBWSxDQUFDLFVBQVUsQ0FBQztZQUM3QixJQUFJLEVBQUU7Z0JBQ0osWUFBWSxFQUFFLElBQUk7Z0JBQ2xCLFlBQVksRUFBRSxXQUFXO2FBQzFCO1lBQ0QsT0FBTyxFQUFFLFVBQVU7WUFDbkIsY0FBYyxFQUFFLE9BQU87WUFDdkIsSUFBSSxFQUFFLFNBQVM7U0FDaEIsQ0FBQyxDQUFBO0lBQ0osQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbW1hbmRzUG9vbCBmcm9tIFwiLi9jb21tYW5kcy1wb29sLmpzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJTZXJ2aWNlcyB7XG4gIHN0YXRpYyBjdXJyZW50ICgpIHtcbiAgICBpZiAoIXNoYXJlZC5jdXJyZW50QXBpTWFrZXJTZXJ2aWNlKSBzaGFyZWQuY3VycmVudEFwaU1ha2VyU2VydmljZSA9IG5ldyBBcGlNYWtlclNlcnZpY2VzKClcblxuICAgIHJldHVybiBzaGFyZWQuY3VycmVudEFwaU1ha2VyU2VydmljZVxuICB9XG5cbiAgc2VuZFJlcXVlc3QgKHNlcnZpY2VOYW1lLCBhcmdzKSB7XG4gICAgcmV0dXJuIENvbW1hbmRzUG9vbC5hZGRDb21tYW5kKHtcbiAgICAgIGFyZ3M6IHtcbiAgICAgICAgc2VydmljZV9hcmdzOiBhcmdzLFxuICAgICAgICBzZXJ2aWNlX25hbWU6IHNlcnZpY2VOYW1lXG4gICAgICB9LFxuICAgICAgY29tbWFuZDogXCJzZXJ2aWNlc1wiLFxuICAgICAgY29sbGVjdGlvbk5hbWU6IFwiY2FsbHNcIixcbiAgICAgIHR5cGU6IFwic2VydmljZVwiXG4gICAgfSlcbiAgfVxufVxuIl19
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInNlcnZpY2VzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sWUFBWSxNQUFNLG9CQUFvQixDQUFBO0FBRTdDLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQTtBQUVqQixNQUFNLENBQUMsT0FBTyxPQUFPLGdCQUFnQjtJQUNuQyxNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxNQUFNLENBQUMsc0JBQXNCO1lBQUUsTUFBTSxDQUFDLHNCQUFzQixHQUFHLElBQUksZ0JBQWdCLEVBQUUsQ0FBQTtRQUUxRixPQUFPLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQTtJQUN0QyxDQUFDO0lBRUQsV0FBVyxDQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsT0FBTyxHQUFHLEVBQUU7UUFDMUMsT0FBTyxZQUFZLENBQUMsVUFBVSxDQUFDO1lBQzdCLElBQUksRUFBRTtnQkFDSixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsWUFBWSxFQUFFLFdBQVc7YUFDMUI7WUFDRCxPQUFPLEVBQUUsVUFBVTtZQUNuQixjQUFjLEVBQUUsT0FBTztZQUN2QixJQUFJLEVBQUUsU0FBUztTQUNoQixFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQ2IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvbW1hbmRzUG9vbCBmcm9tIFwiLi9jb21tYW5kcy1wb29sLmpzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJTZXJ2aWNlcyB7XG4gIHN0YXRpYyBjdXJyZW50ICgpIHtcbiAgICBpZiAoIXNoYXJlZC5jdXJyZW50QXBpTWFrZXJTZXJ2aWNlKSBzaGFyZWQuY3VycmVudEFwaU1ha2VyU2VydmljZSA9IG5ldyBBcGlNYWtlclNlcnZpY2VzKClcblxuICAgIHJldHVybiBzaGFyZWQuY3VycmVudEFwaU1ha2VyU2VydmljZVxuICB9XG5cbiAgc2VuZFJlcXVlc3QgKHNlcnZpY2VOYW1lLCBhcmdzLCBvcHRpb25zID0ge30pIHtcbiAgICByZXR1cm4gQ29tbWFuZHNQb29sLmFkZENvbW1hbmQoe1xuICAgICAgYXJnczoge1xuICAgICAgICBzZXJ2aWNlX2FyZ3M6IGFyZ3MsXG4gICAgICAgIHNlcnZpY2VfbmFtZTogc2VydmljZU5hbWVcbiAgICAgIH0sXG4gICAgICBjb21tYW5kOiBcInNlcnZpY2VzXCIsXG4gICAgICBjb2xsZWN0aW9uTmFtZTogXCJjYWxsc1wiLFxuICAgICAgdHlwZTogXCJzZXJ2aWNlXCJcbiAgICB9LCBvcHRpb25zKVxuICB9XG59XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable jest/require-hook */
2
- import { useCallback, useMemo } from "react";
2
+ import { useCallback, useEffect, useMemo, useRef } from "react";
3
3
  import CanCan from "./can-can.js";
4
4
  import Devise from "./devise.js";
5
5
  import useCurrentUser from "./use-current-user.js";
@@ -36,34 +36,37 @@ export default function useCanCan(abilitiesCallback, dependencies) {
36
36
  const currentUser = useCurrentUser();
37
37
  const s = useShape({ abilitiesCallback });
38
38
  s.useStates({
39
- canCan: null,
39
+ canCan: CanCan.current(),
40
40
  lastUpdate: () => new Date()
41
41
  });
42
- const loadAbilities = useCallback(async () => {
42
+ const deviseReloadKeyRef = useRef(0);
43
+ const loadAbilities = useCallback(async (reloadKey) => {
43
44
  const canCan = CanCan.current();
44
45
  const abilities = s.p.abilitiesCallback();
45
- await canCan.loadAbilities(abilities);
46
- s.set({ canCan, lastUpdate: new Date() });
46
+ if (reloadKey === undefined) {
47
+ await canCan.loadAbilities(abilities);
48
+ }
49
+ else {
50
+ await canCan.reloadAbilities(abilities, reloadKey);
51
+ }
52
+ s.set({ lastUpdate: new Date() });
47
53
  }, []);
54
+ const onDeviseChange = useCallback(() => {
55
+ deviseReloadKeyRef.current += 1;
56
+ loadAbilities(`devise:${deviseReloadKeyRef.current}`);
57
+ }, [loadAbilities]);
48
58
  const onResetAbilities = useCallback(() => {
49
- s.set({ canCan: null });
50
59
  loadAbilities();
51
- }, []);
52
- const loadAbilitiesOnNew = useCallback(async (reloadKey) => {
53
- s.set({ canCan: null });
54
- const canCan = CanCan.current();
55
- const abilities = s.p.abilitiesCallback();
56
- await canCan.reloadAbilities(abilities, reloadKey);
57
- s.set({ canCan, lastUpdate: new Date() });
58
- }, []);
59
- const dependencyList = dependencies ?? [currentUser?.id()]; // @ts-expect-error
60
+ }, [loadAbilities]);
61
+ const currentUserId = currentUser?.id();
62
+ const dependencyList = dependencies ?? [currentUserId];
60
63
  const dependencyKey = useMemo(() => dependencyListKey(dependencyList), dependencyList);
61
- useMemo(() => {
62
- loadAbilitiesOnNew(dependencyKey);
63
- }, dependencyList);
64
- useEventEmitter(Devise.events(), "onDeviseSignIn", loadAbilitiesOnNew);
65
- useEventEmitter(Devise.events(), "onDeviseSignOut", loadAbilitiesOnNew);
64
+ useEffect(() => {
65
+ loadAbilities(dependencyKey);
66
+ }, [dependencyKey]);
67
+ useEventEmitter(Devise.events(), "onDeviseSignIn", onDeviseChange);
68
+ useEventEmitter(Devise.events(), "onDeviseSignOut", onDeviseChange);
66
69
  useEventEmitter(CanCan.current().events, "onResetAbilities", onResetAbilities);
67
70
  return s.s.canCan;
68
71
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNhbi1jYW4uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1jYW4tY2FuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxPQUFPLEVBQUMsV0FBVyxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMxQyxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBQ2hDLE9BQU8sY0FBYyxNQUFNLHVCQUF1QixDQUFBO0FBQ2xELE9BQU8sZUFBZSxNQUFNLHNCQUFzQixDQUFBO0FBQ2xELE9BQU8sUUFBUSxNQUFNLHNDQUFzQyxDQUFBO0FBRTNELE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQTtBQUN0QyxJQUFJLG1CQUFtQixHQUFHLENBQUMsQ0FBQTtBQUUzQixNQUFNLGdCQUFnQixHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUU7SUFDakMsSUFBSSxLQUFLLEtBQUssSUFBSTtRQUFFLE9BQU8sTUFBTSxDQUFBO0lBQ2pDLElBQUksS0FBSyxLQUFLLFNBQVM7UUFBRSxPQUFPLFdBQVcsQ0FBQTtJQUUzQyxNQUFNLFNBQVMsR0FBRyxPQUFPLEtBQUssQ0FBQTtJQUU5QixJQUFJLFNBQVMsS0FBSyxRQUFRLElBQUksU0FBUyxLQUFLLFVBQVUsRUFBRSxDQUFDO1FBQ3ZELE9BQU8sR0FBRyxTQUFTLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUE7SUFDeEMsQ0FBQztJQUVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLG1CQUFtQixDQUFDLENBQUE7UUFDaEQsbUJBQW1CLElBQUksQ0FBQyxDQUFBO0lBQzFCLENBQUM7SUFFRCxPQUFPLEdBQUcsU0FBUyxRQUFRLGdCQUFnQixDQUFDLEdBQUcsQ0FB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QUFBO0lBQ3ZFLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFFOUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtBQUNuQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgamVzdC9yZXF1aXJlLWhvb2sgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgQ2FuQ2FuIGZyb20gXCIuL2Nhbi1jYW4uanNcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2UuanNcIlxuaW1wb3J0IHVzZUN1cnJlbnRVc2VyIGZyb20gXCIuL3VzZS1jdXJyZW50LXVzZXIuanNcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwieWEtdXNlLWV2ZW50LWVtaXR0ZXJcIlxuaW1wb3J0IHVzZVNoYXBlIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC91c2Utc2hhcGUuanNcIlxuXG5jb25zdCBkZXBlbmRlbmN5S2V5TWFwID0gbmV3IFdlYWtNYXAoKVxubGV0IGRlcGVuZGVuY3lLZXlOZXh0SWQgPSAxXG5cbmNvbnN0IGRlcGVuZGVuY3lLZXlGb3IgPSAodmFsdWUpID0+IHtcbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gXCJudWxsXCJcbiAgaWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBcInVuZGVmaW5lZFwiXG5cbiAgY29uc3QgdmFsdWVUeXBlID0gdHlwZW9mIHZhbHVlXG5cbiAgaWYgKHZhbHVlVHlwZSAhPT0gXCJvYmplY3RcIiAmJiB2YWx1ZVR5cGUgIT09IFwiZnVuY3Rpb25cIikge1xuICAgIHJldHVybiBgJHt2YWx1ZVR5cGV9OiR7U3RyaW5nKHZhbHVlKX1gXG4gIH1cblxuICBpZiAoIWRlcGVuZGVuY3lLZXlNYXAuaGFzKHZhbHVlKSkge1xuICAgIGRlcGVuZGVuY3lLZXlNYXAuc2V0KHZhbHVlLCBkZXBlbmRlbmN5S2V5TmV4dElkKVxuICAgIGRlcGVuZGVuY3lLZXlOZXh0SWQgKz0gMVxuICB9XG5cbiAgcmV0dXJuIGAke3ZhbHVlVHlwZX06cmVmOiR7ZGVwZW5kZW5jeUtleU1hcC5nZXQodmFsdWUpfWBcbn1cblxuY29uc3QgZGVwZW5kZW5jeUxpc3RLZXkgPSAobGlzdCkgPT4ge1xuICBpZiAoIUFycmF5LmlzQXJyYXkobGlzdCkpIHJldHVybiBkZXBlbmRlbmN5S2V5Rm9yKGxpc3QpXG5cbiAgcmV0dXJuIGxpc3QubWFwKCh2YWx1ZSkgPT4gZGVwZW5kZW5jeUtleUZvcih2YWx1ZSkpLmpvaW4oXCJ8XCIpXG59XG5cbi8qKlxuICogQHBhcmFtIHtmdW5jdGlvbigpIDogQXJyYXl9IGFiaWxpdGllc0NhbGxiYWNrXG4gKiBAcGFyYW0ge0FycmF5fSBkZXBlbmRlbmNpZXNcbiAqIEByZXR1cm5zIHtDYW5DYW59XG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVzZUNhbkNhbihhYmlsaXRpZXNDYWxsYmFjaywgZGVwZW5kZW5jaWVzKSB7XG4gIGNvbnN0IGN1cnJlbnRVc2VyID0gdXNlQ3VycmVudFVzZXIoKVxuICBjb25zdCBzID0gdXNlU2hhcGUoe2FiaWxpdGllc0NhbGxiYWNrfSlcblxuICBzLnVzZVN0YXRlcyh7XG4gICAgY2FuQ2FuOiBudWxsLFxuICAgIGxhc3RVcGRhdGU6ICgpID0+IG5ldyBEYXRlKClcbiAgfSlcblxuICBjb25zdCBsb2FkQWJpbGl0aWVzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbkNhbiA9IENhbkNhbi5jdXJyZW50KClcbiAgICBjb25zdCBhYmlsaXRpZXMgPSBzLnAuYWJpbGl0aWVzQ2FsbGJhY2soKVxuXG4gICAgYXdhaXQgY2FuQ2FuLmxvYWRBYmlsaXRpZXMoYWJpbGl0aWVzKVxuXG4gICAgcy5zZXQoe2NhbkNhbiwgbGFzdFVwZGF0ZTogbmV3IERhdGUoKX0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uUmVzZXRBYmlsaXRpZXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcy5zZXQoe2NhbkNhbjogbnVsbH0pXG4gICAgbG9hZEFiaWxpdGllcygpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGxvYWRBYmlsaXRpZXNPbk5ldyA9IHVzZUNhbGxiYWNrKGFzeW5jIChyZWxvYWRLZXkpID0+IHtcbiAgICBzLnNldCh7Y2FuQ2FuOiBudWxsfSlcblxuICAgIGNvbnN0IGNhbkNhbiA9IENhbkNhbi5jdXJyZW50KClcbiAgICBjb25zdCBhYmlsaXRpZXMgPSBzLnAuYWJpbGl0aWVzQ2FsbGJhY2soKVxuXG4gICAgYXdhaXQgY2FuQ2FuLnJlbG9hZEFiaWxpdGllcyhhYmlsaXRpZXMsIHJlbG9hZEtleSlcblxuICAgIHMuc2V0KHtjYW5DYW4sIGxhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxuICB9LCBbXSlcblxuICBjb25zdCBkZXBlbmRlbmN5TGlzdCA9IGRlcGVuZGVuY2llcyA/PyBbY3VycmVudFVzZXI/LmlkKCldIC8vIEB0cy1leHBlY3QtZXJyb3JcbiAgY29uc3QgZGVwZW5kZW5jeUtleSA9IHVzZU1lbW8oKCkgPT4gZGVwZW5kZW5jeUxpc3RLZXkoZGVwZW5kZW5jeUxpc3QpLCBkZXBlbmRlbmN5TGlzdClcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBsb2FkQWJpbGl0aWVzT25OZXcoZGVwZW5kZW5jeUtleSlcbiAgfSwgZGVwZW5kZW5jeUxpc3QpXG5cbiAgdXNlRXZlbnRFbWl0dGVyKERldmlzZS5ldmVudHMoKSwgXCJvbkRldmlzZVNpZ25JblwiLCBsb2FkQWJpbGl0aWVzT25OZXcpXG4gIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduT3V0XCIsIGxvYWRBYmlsaXRpZXNPbk5ldylcbiAgdXNlRXZlbnRFbWl0dGVyKENhbkNhbi5jdXJyZW50KCkuZXZlbnRzLCBcIm9uUmVzZXRBYmlsaXRpZXNcIiwgb25SZXNldEFiaWxpdGllcylcblxuICByZXR1cm4gcy5zLmNhbkNhblxufVxuIl19
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLWNhbi1jYW4uanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbInVzZS1jYW4tY2FuLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNDQUFzQztBQUN0QyxPQUFPLEVBQUMsV0FBVyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQzdELE9BQU8sTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUNqQyxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxjQUFjLE1BQU0sdUJBQXVCLENBQUE7QUFDbEQsT0FBTyxlQUFlLE1BQU0sc0JBQXNCLENBQUE7QUFDbEQsT0FBTyxRQUFRLE1BQU0sc0NBQXNDLENBQUE7QUFFM0QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFBO0FBQ3RDLElBQUksbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO0FBRTNCLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNqQyxJQUFJLEtBQUssS0FBSyxJQUFJO1FBQUUsT0FBTyxNQUFNLENBQUE7SUFDakMsSUFBSSxLQUFLLEtBQUssU0FBUztRQUFFLE9BQU8sV0FBVyxDQUFBO0lBRTNDLE1BQU0sU0FBUyxHQUFHLE9BQU8sS0FBSyxDQUFBO0lBRTlCLElBQUksU0FBUyxLQUFLLFFBQVEsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFLENBQUM7UUFDdkQsT0FBTyxHQUFHLFNBQVMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQTtJQUN4QyxDQUFDO0lBRUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ2pDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsbUJBQW1CLENBQUMsQ0FBQTtRQUNoRCxtQkFBbUIsSUFBSSxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUVELE9BQU8sR0FBRyxTQUFTLFFBQVEs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RSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFBO0lBRTlFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7QUFDbkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIGplc3QvcmVxdWlyZS1ob29rICovXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZn0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBDYW5DYW4gZnJvbSBcIi4vY2FuLWNhbi5qc1wiXG5pbXBvcnQgRGV2aXNlIGZyb20gXCIuL2RldmlzZS5qc1wiXG5pbXBvcnQgdXNlQ3VycmVudFVzZXIgZnJvbSBcIi4vdXNlLWN1cnJlbnQtdXNlci5qc1wiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCJ5YS11c2UtZXZlbnQtZW1pdHRlclwiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3VzZS1zaGFwZS5qc1wiXG5cbmNvbnN0IGRlcGVuZGVuY3lLZXlNYXAgPSBuZXcgV2Vha01hcCgpXG5sZXQgZGVwZW5kZW5jeUtleU5leHRJZCA9IDFcblxuY29uc3QgZGVwZW5kZW5jeUtleUZvciA9ICh2YWx1ZSkgPT4ge1xuICBpZiAodmFsdWUgPT09IG51bGwpIHJldHVybiBcIm51bGxcIlxuICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFwidW5kZWZpbmVkXCJcblxuICBjb25zdCB2YWx1ZVR5cGUgPSB0eXBlb2YgdmFsdWVcblxuICBpZiAodmFsdWVUeXBlICE9PSBcIm9iamVjdFwiICYmIHZhbHVlVHlwZSAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGAke3ZhbHVlVHlwZX06JHtTdHJpbmcodmFsdWUpfWBcbiAgfVxuXG4gIGlmICghZGVwZW5kZW5jeUtleU1hcC5oYXModmFsdWUpKSB7XG4gICAgZGVwZW5kZW5jeUtleU1hcC5zZXQodmFsdWUsIGRlcGVuZGVuY3lLZXlOZXh0SWQpXG4gICAgZGVwZW5kZW5jeUtleU5leHRJZCArPSAxXG4gIH1cblxuICByZXR1cm4gYCR7dmFsdWVUeXBlfTpyZWY6JHtkZXBlbmRlbmN5S2V5TWFwLmdldCh2YWx1ZSl9YFxufVxuXG5jb25zdCBkZXBlbmRlbmN5TGlzdEtleSA9IChsaXN0KSA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShsaXN0KSkgcmV0dXJuIGRlcGVuZGVuY3lLZXlGb3IobGlzdClcblxuICByZXR1cm4gbGlzdC5tYXAoKHZhbHVlKSA9PiBkZXBlbmRlbmN5S2V5Rm9yKHZhbHVlKSkuam9pbihcInxcIilcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9uKCkgOiBBcnJheX0gYWJpbGl0aWVzQ2FsbGJhY2tcbiAqIEBwYXJhbSB7QXJyYXl9IGRlcGVuZGVuY2llc1xuICogQHJldHVybnMge0NhbkNhbn1cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gdXNlQ2FuQ2FuKGFiaWxpdGllc0NhbGxiYWNrLCBkZXBlbmRlbmNpZXMpIHtcbiAgY29uc3QgY3VycmVudFVzZXIgPSB1c2VDdXJyZW50VXNlcigpXG4gIGNvbnN0IHMgPSB1c2VTaGFwZSh7YWJpbGl0aWVzQ2FsbGJhY2t9KVxuXG4gIHMudXNlU3RhdGVzKHtcbiAgICBjYW5DYW46IENhbkNhbi5jdXJyZW50KCksXG4gICAgbGFzdFVwZGF0ZTogKCkgPT4gbmV3IERhdGUoKVxuICB9KVxuXG4gIGNvbnN0IGRldmlzZVJlbG9hZEtleVJlZiA9IHVzZVJlZigwKVxuXG4gIGNvbnN0IGxvYWRBYmlsaXRpZXMgPSB1c2VDYWxsYmFjayhhc3luYyAocmVsb2FkS2V5KSA9PiB7XG4gICAgY29uc3QgY2FuQ2FuID0gQ2FuQ2FuLmN1cnJlbnQoKVxuICAgIGNvbnN0IGFiaWxpdGllcyA9IHMucC5hYmlsaXRpZXNDYWxsYmFjaygpXG5cbiAgICBpZiAocmVsb2FkS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGF3YWl0IGNhbkNhbi5sb2FkQWJpbGl0aWVzKGFiaWxpdGllcylcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgY2FuQ2FuLnJlbG9hZEFiaWxpdGllcyhhYmlsaXRpZXMsIHJlbG9hZEtleSlcbiAgICB9XG5cbiAgICBzLnNldCh7bGFzdFVwZGF0ZTogbmV3IERhdGUoKX0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uRGV2aXNlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGRldmlzZVJlbG9hZEtleVJlZi5jdXJyZW50ICs9IDFcbiAgICBsb2FkQWJpbGl0aWVzKGBkZXZpc2U6JHtkZXZpc2VSZWxvYWRLZXlSZWYuY3VycmVudH1gKVxuICB9LCBbbG9hZEFiaWxpdGllc10pXG5cbiAgY29uc3Qgb25SZXNldEFiaWxpdGllcyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBsb2FkQWJpbGl0aWVzKClcbiAgfSwgW2xvYWRBYmlsaXRpZXNdKVxuXG4gIGNvbnN0IGN1cnJlbnRVc2VySWQgPSBjdXJyZW50VXNlcj8uaWQoKVxuICBjb25zdCBkZXBlbmRlbmN5TGlzdCA9IGRlcGVuZGVuY2llcyA/PyBbY3VycmVudFVzZXJJZF1cbiAgY29uc3QgZGVwZW5kZW5jeUtleSA9IHVzZU1lbW8oKCkgPT4gZGVwZW5kZW5jeUxpc3RLZXkoZGVwZW5kZW5jeUxpc3QpLCBkZXBlbmRlbmN5TGlzdClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRBYmlsaXRpZXMoZGVwZW5kZW5jeUtleSlcbiAgfSwgW2RlcGVuZGVuY3lLZXldKVxuXG4gIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduSW5cIiwgb25EZXZpc2VDaGFuZ2UpXG4gIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduT3V0XCIsIG9uRGV2aXNlQ2hhbmdlKVxuICB1c2VFdmVudEVtaXR0ZXIoQ2FuQ2FuLmN1cnJlbnQoKS5ldmVudHMsIFwib25SZXNldEFiaWxpdGllc1wiLCBvblJlc2V0QWJpbGl0aWVzKVxuXG4gIHJldHVybiBzLnMuY2FuQ2FuXG59XG4iXX0=
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
3
  "type": "module",
4
- "version": "1.0.2094",
4
+ "version": "1.0.2095",
5
5
  "description": "My new module",
6
6
  "files": [
7
7
  "build/**"
@@ -21,6 +21,7 @@
21
21
  "release:patch": "node scripts/release-patch.js",
22
22
  "release:patch-master": "node scripts/release-patch.js --require-master",
23
23
  "typecheck": "tsc --noEmit",
24
+ "typecheck:file": "sh -c 'file=\"${npm_config_file:-${FILE:-}}\"; if [ -z \"$file\" ] && [ \"${0#--file=}\" != \"$0\" ]; then file=\"${0#--file=}\"; fi; if [ -z \"$file\" ] && [ \"${1#--file=}\" != \"$1\" ]; then file=\"${1#--file=}\"; fi; file=\"${file#npm-api-maker/}\"; file=\"${file#./}\"; if [ -z \"$file\" ]; then echo \"Missing --file=src/path/to/file.js\"; exit 2; fi; tmp=$(mktemp); tsc --noEmit -p tsconfig.json --pretty false >\"$tmp\" 2>&1; if rg --fixed-strings \"$file\" \"$tmp\" >/dev/null; then rg --fixed-strings \"$file\" \"$tmp\"; rm -f \"$tmp\"; exit 1; else rm -f \"$tmp\"; exit 0; fi'",
24
25
  "watch": "tsc -w"
25
26
  },
26
27
  "keywords": [