@kaspernj/api-maker 1.0.2029 → 1.0.2031

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.
package/build/devise.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createContext } from "react";
1
2
  import Deserializer from "./deserializer";
2
3
  import events from "./events";
3
4
  import * as inflection from "inflection";
@@ -7,6 +8,14 @@ if (!globalThis.ApiMakerDevise) globalThis.ApiMakerDevise = {
7
8
  scopes: {}
8
9
  };
9
10
  const shared = globalThis.ApiMakerDevise;
11
+ class DeviseScope {
12
+ constructor(scope, args) {
13
+ this.args = args;
14
+ this.context = /*#__PURE__*/createContext();
15
+ this.scope = scope;
16
+ }
17
+ getContext = () => this.context;
18
+ }
10
19
  export default class ApiMakerDevise {
11
20
  static callSignOutEvent(args) {
12
21
  events.emit("onDeviseSignOut", {
@@ -23,12 +32,21 @@ export default class ApiMakerDevise {
23
32
  return events;
24
33
  }
25
34
  static addUserScope(scope, args = {}) {
26
- const currentMethodName = `current${inflection.camelize(scope)}`;
27
- const isSignedInMethodName = `is${inflection.camelize(scope)}SignedIn`;
28
- const getArgsMethodName = `get${inflection.camelize(scope)}Args`;
35
+ const scopeCamelized = inflection.camelize(scope);
36
+ const currentMethodName = `current${scopeCamelized}`;
37
+ const isSignedInMethodName = `is${scopeCamelized}SignedIn`;
38
+ const getArgsMethodName = `get${scopeCamelized}Args`;
39
+ const getScopeName = `get${scopeCamelized}Scope`;
40
+ const scopeInstance = new DeviseScope(scope, args);
29
41
  ApiMakerDevise[currentMethodName] = () => ApiMakerDevise.current().getCurrentScope(scope);
30
42
  ApiMakerDevise[isSignedInMethodName] = () => Boolean(ApiMakerDevise.current().getCurrentScope(scope));
31
43
  ApiMakerDevise[getArgsMethodName] = () => args;
44
+ ApiMakerDevise[getScopeName] = () => scopeInstance;
45
+ }
46
+ static getScope(scope) {
47
+ const scopeCamelized = inflection.camelize(scope);
48
+ const getScopeName = `get${scopeCamelized}Scope`;
49
+ return ApiMakerDevise[getScopeName]();
32
50
  }
33
51
  static async signIn(username, password, args = {}) {
34
52
  if (!args.scope) args.scope = "user";
@@ -109,4 +127,4 @@ export default class ApiMakerDevise {
109
127
  return modelInstance;
110
128
  }
111
129
  }
112
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEZXNlcmlhbGl6ZXIiLCJldmVudHMiLCJpbmZsZWN0aW9uIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJTZXJ2aWNlcyIsImdsb2JhbFRoaXMiLCJBcGlNYWtlckRldmlzZSIsInNjb3BlcyIsInNoYXJlZCIsImNhbGxTaWduT3V0RXZlbnQiLCJhcmdzIiwiZW1pdCIsImN1cnJlbnQiLCJjdXJyZW50QXBpTWFrZXJEZXZpc2UiLCJhZGRVc2VyU2NvcGUiLCJzY29wZSIsImN1cnJlbnRNZXRob2ROYW1lIiwiY2FtZWxpemUiLCJpc1NpZ25lZEluTWV0aG9kTmFtZSIsImdldEFyZ3NNZXRob2ROYW1lIiwiZ2V0Q3VycmVudFNjb3BlIiwiQm9vbGVhbiIsInNpZ25JbiIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJwb3N0RGF0YSIsInJlc3BvbnNlIiwic2VuZFJlcXVlc3QiLCJtb2RlbCIsIkFycmF5IiwiaXNBcnJheSIsInVwZGF0ZVNlc3Npb24iLCJPYmplY3QiLCJhc3NpZ24iLCJjYW1lbGl6ZWRTY29wZU5hbWUiLCJjdXJyZW50cyIsImhhc0N1cnJlbnRTY29wZSIsInNldFNpZ25lZE91dCIsInNpZ25PdXQiLCJhcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyIiwidXBkYXRlU2Vzc2lvblN0YXR1cyIsImNvbnN0cnVjdG9yIiwibG9hZEN1cnJlbnRTY29wZSIsImhhc0dsb2JhbEN1cnJlbnRTY29wZSIsImFwaU1ha2VyRGV2aXNlQ3VycmVudCIsInNjb3BlRGF0YSIsInBhcnNlZFNjb3BlRGF0YSIsInBhcnNlIiwiTW9kZWxDbGFzcyIsIm1vZGVsSW5zdGFuY2UiLCJkYXRhIl0sInNvdXJjZXMiOlsiLi4vc3JjL2RldmlzZS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGVzZXJpYWxpemVyIGZyb20gXCIuL2Rlc2VyaWFsaXplclwiXG5pbXBvcnQgZXZlbnRzIGZyb20gXCIuL2V2ZW50c1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBtb2RlbENsYXNzUmVxdWlyZSBmcm9tIFwiLi9tb2RlbC1jbGFzcy1yZXF1aXJlXCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlc1wiXG5cbmlmICghZ2xvYmFsVGhpcy5BcGlNYWtlckRldmlzZSkgZ2xvYmFsVGhpcy5BcGlNYWtlckRldmlzZSA9IHtzY29wZXM6IHt9fVxuXG5jb25zdCBzaGFyZWQgPSBnbG9iYWxUaGlzLkFwaU1ha2VyRGV2aXNlXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyRGV2aXNlIHtcbiAgc3RhdGljIGNhbGxTaWduT3V0RXZlbnQoYXJncykge1xuICAgIGV2ZW50cy5lbWl0KFwib25EZXZpc2VTaWduT3V0XCIsIHthcmdzfSlcbiAgfVxuXG4gIHN0YXRpYyBjdXJyZW50KCkge1xuICAgIGlmICghc2hhcmVkLmN1cnJlbnRBcGlNYWtlckRldmlzZSkge1xuICAgICAgc2hhcmVkLmN1cnJlbnRBcGlNYWtlckRldmlzZSA9IG5ldyBBcGlNYWtlckRldmlzZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJEZXZpc2VcbiAgfVxuXG4gIHN0YXRpYyBldmVudHMoKSB7XG4gICAgcmV0dXJuIGV2ZW50c1xuICB9XG5cbiAgc3RhdGljIGFkZFVzZXJTY29wZShzY29wZSwgYXJncyA9IHt9KSB7XG4gICAgY29uc3QgY3VycmVudE1ldGhvZE5hbWUgPSBgY3VycmVudCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSl9YFxuICAgIGNvbnN0IGlzU2lnbmVkSW5NZXRob2ROYW1lID0gYGlzJHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKX1TaWduZWRJbmBcbiAgICBjb25zdCBnZXRBcmdzTWV0aG9kTmFtZSA9IGBnZXQke2luZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUpfUFyZ3NgXG5cbiAgICBBcGlNYWtlckRldmlzZVtjdXJyZW50TWV0aG9kTmFtZV0gPSAoKSA9PiBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHNjb3BlKVxuICAgIEFwaU1ha2VyRGV2aXNlW2lzU2lnbmVkSW5NZXRob2ROYW1lXSA9ICgpID0+IEJvb2xlYW4oQXBpTWFrZXJEZXZpc2UuY3VycmVudCgpLmdldEN1cnJlbnRTY29wZShzY29wZSkpXG4gICAgQXBpTWFrZXJEZXZpc2VbZ2V0QXJnc01ldGhvZE5hbWVdID0gKCkgPT4gYXJnc1xuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNpZ25Jbih1c2VybmFtZSwgcGFzc3dvcmQsIGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkgYXJncy5zY29wZSA9IFwidXNlclwiXG5cbiAgICBjb25zdCBwb3N0RGF0YSA9IHt1c2VybmFtZSwgcGFzc3dvcmQsIGFyZ3N9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJEZXZpc2U6OlNpZ25JblwiLCBwb3N0RGF0YSlcblxuICAgIGxldCBtb2RlbCA9IHJlc3BvbnNlLm1vZGVsXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkpIG1vZGVsID0gbW9kZWxbMF1cblxuICAgIEFwaU1ha2VyRGV2aXNlLnVwZGF0ZVNlc3Npb24obW9kZWwpXG4gICAgZXZlbnRzLmVtaXQoXCJvbkRldmlzZVNpZ25JblwiLCBPYmplY3QuYXNzaWduKHt1c2VybmFtZX0sIGFyZ3MpKVxuXG4gICAgcmV0dXJuIHttb2RlbCwgcmVzcG9uc2V9XG4gIH1cblxuICBzdGF0aWMgdXBkYXRlU2Vzc2lvbihtb2RlbCwgYXJncyA9IHt9KSB7XG4gICAgaWYgKCFhcmdzLnNjb3BlKSBhcmdzLnNjb3BlID0gXCJ1c2VyXCJcblxuICAgIGNvbnN0IGNhbWVsaXplZFNjb3BlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXJncy5zY29wZSwgdHJ1ZSlcblxuICAgIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1tjYW1lbGl6ZWRTY29wZU5hbWVdID0gbW9kZWxcbiAgfVxuXG4gIGhhc0N1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGNvbnN0IGNhbWVsaXplZFNjb3BlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUsIHRydWUpXG5cbiAgICByZXR1cm4gY2FtZWxpemVkU2NvcGVOYW1lIGluIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1xuICB9XG5cbiAgc3RhdGljIHNldFNpZ25lZE91dChhcmdzKSB7XG4gICAgQXBpTWFrZXJEZXZpc2UuY3VycmVudCgpLmN1cnJlbnRzW2luZmxlY3Rpb24uY2FtZWxpemUoYXJncy5zY29wZSwgdHJ1ZSldID0gbnVsbFxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNpZ25PdXQoYXJncyA9IHt9KSB7XG4gICAgaWYgKCFhcmdzLnNjb3BlKSB7XG4gICAgICBhcmdzLnNjb3BlID0gXCJ1c2VyXCJcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFNlcnZpY2VzLmN1cnJlbnQoKS5zZW5kUmVxdWVzdChcIkRldmlzZTo6U2lnbk91dFwiLCB7YXJnc30pXG5cbiAgICAvLyBDYW5ub3QgdXNlIHRoZSBjbGFzcyBiZWNhdXNlIHRoZXkgd291bGQgYm90aCBpbXBvcnQgZWFjaCBvdGhlclxuICAgIGlmIChzaGFyZWQuYXBpTWFrZXJTZXNzaW9uU3RhdHVzVXBkYXRlcikge1xuICAgICAgc2hhcmVkLmFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIudXBkYXRlU2Vzc2lvblN0YXR1cygpXG4gICAgfVxuXG4gICAgQXBpTWFrZXJEZXZpc2Uuc2V0U2lnbmVkT3V0KGFyZ3MpXG4gICAgQXBpTWFrZXJEZXZpc2UuY2FsbFNpZ25PdXRFdmVudChhcmdzKVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmN1cnJlbnRzID0ge31cbiAgfVxuXG4gIGdldEN1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGlmICghKHNjb3BlIGluIHRoaXMuY3VycmVudHMpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRzW3Njb3BlXSA9IHRoaXMubG9hZEN1cnJlbnRTY29wZShzY29wZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50c1tzY29wZV1cbiAgfVxuXG4gIGhhc0dsb2JhbEN1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGlmIChnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudCAmJiBzY29wZSBpbiBnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGxvYWRDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBpZiAoIXRoaXMuaGFzR2xvYmFsQ3VycmVudFNjb3BlKHNjb3BlKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBzY29wZURhdGEgPSBnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudFtzY29wZV1cblxuICAgIGlmICghc2NvcGVEYXRhKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgcGFyc2VkU2NvcGVEYXRhID0gRGVzZXJpYWxpemVyLnBhcnNlKHNjb3BlRGF0YSlcblxuICAgIC8vIE1pZ2h0IGJlIGEgY29sbGVjdGlvbiB3aXRoIHByZWxvYWRlZCByZWxhdGlvbnNoaXBzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkU2NvcGVEYXRhKSkgcmV0dXJuIHBhcnNlZFNjb3BlRGF0YVswXVxuXG4gICAgY29uc3QgTW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NSZXF1aXJlKHNjb3BlKVxuICAgIGNvbnN0IG1vZGVsSW5zdGFuY2UgPSBuZXcgTW9kZWxDbGFzcyh7ZGF0YTogcGFyc2VkU2NvcGVEYXRhfSlcblxuICAgIHJldHVybiBtb2RlbEluc3RhbmNlXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsWUFBWSxNQUFNLGdCQUFnQjtBQUN6QyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixPQUFPLEtBQUtDLFVBQVUsTUFBTSxZQUFZO0FBQ3hDLE9BQU9DLGlCQUFpQixNQUFNLHVCQUF1QjtBQUNyRCxPQUFPQyxRQUFRLE1BQU0sWUFBWTtBQUVqQyxJQUFJLENBQUNDLFVBQVUsQ0FBQ0MsY0FBYyxFQUFFRCxVQUFVLENBQUNDLGNBQWMsR0FBRztFQUFDQyxNQUFNLEVBQUUsQ0FBQztBQUFDLENBQUM7QUFFeEUsTUFBTUMsTUFBTSxHQUFHSCxVQUFVLENBQUNDLGNBQWM7QUFFeEMsZUFBZSxNQUFNQSxjQUFjLENBQUM7RUFDbEMsT0FBT0csZ0JBQWdCQSxDQUFDQyxJQUFJLEVBQUU7SUFDNUJULE1BQU0sQ0FBQ1UsSUFBSSxDQUFDLGlCQUFpQixFQUFFO01BQUNEO0lBQUksQ0FBQyxDQUFDO0VBQ3hDO0VBRUEsT0FBT0UsT0FBT0EsQ0FBQSxFQUFHO0lBQ2YsSUFBSSxDQUFDSixNQUFNLENBQUNLLHFCQUFxQixFQUFFO01BQ2pDTCxNQUFNLENBQUNLLHFCQUFxQixHQUFHLElBQUlQLGNBQWMsQ0FBQyxDQUFDO0lBQ3JEO0lBRUEsT0FBT0UsTUFBTSxDQUFDSyxxQkFBcUI7RUFDckM7RUFFQSxPQUFPWixNQUFNQSxDQUFBLEVBQUc7SUFDZCxPQUFPQSxNQUFNO0VBQ2Y7RUFFQSxPQUFPYSxZQUFZQSxDQUFDQyxLQUFLLEVBQUVMLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNwQyxNQUFNTSxpQkFBaUIsR0FBRyxVQUFVZCxVQUFVLENBQUNlLFFBQVEsQ0FBQ0YsS0FBSyxDQUFDLEVBQUU7SUFDaEUsTUFBTUcsb0JBQW9CLEdBQUcsS0FBS2hCLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDRixLQUFLLENBQUMsVUFBVTtJQUN0RSxNQUFNSSxpQkFBaUIsR0FBRyxNQUFNakIsVUFBVSxDQUFDZSxRQUFRLENBQUNGLEtBQUssQ0FBQyxNQUFNO0lBRWhFVCxjQUFjLENBQUNVLGlCQUFpQixDQUFDLEdBQUcsTUFBTVYsY0FBYyxDQUFDTSxPQUFPLENBQUMsQ0FBQyxDQUFDUSxlQUFlLENBQUNMLEtBQUssQ0FBQztJQUN6RlQsY0FBYyxDQUFDWSxvQkFBb0IsQ0FBQyxHQUFHLE1BQU1HLE9BQU8sQ0FBQ2YsY0FBYyxDQUFDTSxPQUFPLENBQUMsQ0FBQyxDQUFDUSxlQUFlLENBQUNMLEtBQUssQ0FBQyxDQUFDO0lBQ3JHVCxjQUFjLENBQUNhLGlCQUFpQixDQUFDLEdBQUcsTUFBTVQsSUFBSTtFQUNoRDtFQUVBLGFBQWFZLE1BQU1BLENBQUNDLFFBQVEsRUFBRUMsUUFBUSxFQUFFZCxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDakQsSUFBSSxDQUFDQSxJQUFJLENBQUNLLEtBQUssRUFBRUwsSUFBSSxDQUFDSyxLQUFLLEdBQUcsTUFBTTtJQUVwQyxNQUFNVSxRQUFRLEdBQUc7TUFBQ0YsUUFBUTtNQUFFQyxRQUFRO01BQUVkO0lBQUksQ0FBQztJQUMzQyxNQUFNZ0IsUUFBUSxHQUFHLE1BQU10QixRQUFRLENBQUNRLE9BQU8sQ0FBQyxDQUFDLENBQUNlLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRUYsUUFBUSxDQUFDO0lBRWpGLElBQUlHLEtBQUssR0FBR0YsUUFBUSxDQUFDRSxLQUFLO0lBRTFCLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixLQUFLLENBQUMsRUFBRUEsS0FBSyxHQUFHQSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRTFDdEIsY0FBYyxDQUFDeUIsYUFBYSxDQUFDSCxLQUFLLENBQUM7SUFDbkMzQixNQUFNLENBQUNVLElBQUksQ0FBQyxnQkFBZ0IsRUFBRXFCLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDO01BQUNWO0lBQVEsQ0FBQyxFQUFFYixJQUFJLENBQUMsQ0FBQztJQUU5RCxPQUFPO01BQUNrQixLQUFLO01BQUVGO0lBQVEsQ0FBQztFQUMxQjtFQUVBLE9BQU9LLGFBQWFBLENBQUNILEtBQUssRUFBRWxCLElBQUksR0FBRyxDQUFDLENBQUMsRUFBRTtJQUNyQyxJQUFJLENBQUNBLElBQUksQ0FBQ0ssS0FBSyxFQUFFTCxJQUFJLENBQUNLLEtBQUssR0FBRyxNQUFNO0lBRXBDLE1BQU1tQixrQkFBa0IsR0FBR2hDLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDUCxJQUFJLENBQUNLLEtBQUssRUFBRSxJQUFJLENBQUM7SUFFaEVULGNBQWMsQ0FBQ00sT0FBTyxDQUFDLENBQUMsQ0FBQ3VCLFFBQVEsQ0FBQ0Qsa0JBQWtCLENBQUMsR0FBR04sS0FBSztFQUMvRDtFQUVBUSxlQUFlQSxDQUFDckIsS0FBSyxFQUFFO0lBQ3JCLE1BQU1tQixrQkFBa0IsR0FBR2hDLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDO0lBRTNELE9BQU9tQixrQkFBa0IsSUFBSTVCLGNBQWMsQ0FBQ00sT0FBTyxDQUFDLENBQUMsQ0FBQ3VCLFFBQVE7RUFDaEU7RUFFQSxPQUFPRSxZQUFZQSxDQUFDM0IsSUFBSSxFQUFFO0lBQ3hCSixjQUFjLENBQUNNLE9BQU8sQ0FBQyxDQUFDLENBQUN1QixRQUFRLENBQUNqQyxVQUFVLENBQUNlLFFBQVEsQ0FBQ1AsSUFBSSxDQUFDSyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJO0VBQ2pGO0VBRUEsYUFBYXVCLE9BQU9BLENBQUM1QixJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFDOUIsSUFBSSxDQUFDQSxJQUFJLENBQUNLLEtBQUssRUFBRTtNQUNmTCxJQUFJLENBQUNLLEtBQUssR0FBRyxNQUFNO0lBQ3JCO0lBRUEsTUFBTVcsUUFBUSxHQUFHLE1BQU10QixRQUFRLENBQUNRLE9BQU8sQ0FBQyxDQUFDLENBQUNlLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRTtNQUFDakI7SUFBSSxDQUFDLENBQUM7O0lBRWhGO0lBQ0EsSUFBSUYsTUFBTSxDQUFDK0IsNEJBQTRCLEVBQUU7TUFDdkMvQixNQUFNLENBQUMrQiw0QkFBNEIsQ0FBQ0MsbUJBQW1CLENBQUMsQ0FBQztJQUMzRDtJQUVBbEMsY0FBYyxDQUFDK0IsWUFBWSxDQUFDM0IsSUFBSSxDQUFDO0lBQ2pDSixjQUFjLENBQUNHLGdCQUFnQixDQUFDQyxJQUFJLENBQUM7SUFFckMsT0FBT2dCLFFBQVE7RUFDakI7RUFFQWUsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osSUFBSSxDQUFDTixRQUFRLEdBQUcsQ0FBQyxDQUFDO0VBQ3BCO0VBRUFmLGVBQWVBLENBQUNMLEtBQUssRUFBRTtJQUNyQixJQUFJLEVBQUVBLEtBQUssSUFBSSxJQUFJLENBQUNvQixRQUFRLENBQUMsRUFBRTtNQUM3QixJQUFJLENBQUNBLFFBQVEsQ0FBQ3BCLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQzJCLGdCQUFnQixDQUFDM0IsS0FBSyxDQUFDO0lBQ3JEO0lBRUEsT0FBTyxJQUFJLENBQUNvQixRQUFRLENBQUNwQixLQUFLLENBQUM7RUFDN0I7RUFFQTRCLHFCQUFxQkEsQ0FBQzVCLEtBQUssRUFBRTtJQUMzQixJQUFJVixVQUFVLENBQUN1QyxxQkFBcUIsSUFBSTdCLEtBQUssSUFBSVYsVUFBVSxDQUFDdUMscUJBQXFCLEVBQUU7TUFDakYsT0FBTyxJQUFJO0lBQ2I7SUFFQSxPQUFPLEtBQUs7RUFDZDtFQUVBRixnQkFBZ0JBLENBQUMzQixLQUFLLEVBQUU7SUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQzRCLHFCQUFxQixDQUFDNUIsS0FBSyxDQUFDLEVBQUU7TUFDdEMsT0FBTyxJQUFJO0lBQ2I7SUFFQSxNQUFNOEIsU0FBUyxHQUFHeEMsVUFBVSxDQUFDdUMscUJBQXFCLENBQUM3QixLQUFLLENBQUM7SUFFekQsSUFBSSxDQUFDOEIsU0FBUyxFQUFFLE9BQU8sSUFBSTtJQUUzQixNQUFNQyxlQUFlLEdBQUc5QyxZQUFZLENBQUMrQyxLQUFLLENBQUNGLFNBQVMsQ0FBQzs7SUFFckQ7SUFDQSxJQUFJaEIsS0FBSyxDQUFDQyxPQUFPLENBQUNnQixlQUFlLENBQUMsRUFBRSxPQUFPQSxlQUFlLENBQUMsQ0FBQyxDQUFDO0lBRTdELE1BQU1FLFVBQVUsR0FBRzdDLGlCQUFpQixDQUFDWSxLQUFLLENBQUM7SUFDM0MsTUFBTWtDLGFBQWEsR0FBRyxJQUFJRCxVQUFVLENBQUM7TUFBQ0UsSUFBSSxFQUFFSjtJQUFlLENBQUMsQ0FBQztJQUU3RCxPQUFPRyxhQUFhO0VBQ3RCO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
130
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwiRGVzZXJpYWxpemVyIiwiZXZlbnRzIiwiaW5mbGVjdGlvbiIsIm1vZGVsQ2xhc3NSZXF1aXJlIiwiU2VydmljZXMiLCJnbG9iYWxUaGlzIiwiQXBpTWFrZXJEZXZpc2UiLCJzY29wZXMiLCJzaGFyZWQiLCJEZXZpc2VTY29wZSIsImNvbnN0cnVjdG9yIiwic2NvcGUiLCJhcmdzIiwiY29udGV4dCIsImdldENvbnRleHQiLCJjYWxsU2lnbk91dEV2ZW50IiwiZW1pdCIsImN1cnJlbnQiLCJjdXJyZW50QXBpTWFrZXJEZXZpc2UiLCJhZGRVc2VyU2NvcGUiLCJzY29wZUNhbWVsaXplZCIsImNhbWVsaXplIiwiY3VycmVudE1ldGhvZE5hbWUiLCJpc1NpZ25lZEluTWV0aG9kTmFtZSIsImdldEFyZ3NNZXRob2ROYW1lIiwiZ2V0U2NvcGVOYW1lIiwic2NvcGVJbnN0YW5jZSIsImdldEN1cnJlbnRTY29wZSIsIkJvb2xlYW4iLCJnZXRTY29wZSIsInNpZ25JbiIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJwb3N0RGF0YSIsInJlc3BvbnNlIiwic2VuZFJlcXVlc3QiLCJtb2RlbCIsIkFycmF5IiwiaXNBcnJheSIsInVwZGF0ZVNlc3Npb24iLCJPYmplY3QiLCJhc3NpZ24iLCJjYW1lbGl6ZWRTY29wZU5hbWUiLCJjdXJyZW50cyIsImhhc0N1cnJlbnRTY29wZSIsInNldFNpZ25lZE91dCIsInNpZ25PdXQiLCJhcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyIiwidXBkYXRlU2Vzc2lvblN0YXR1cyIsImxvYWRDdXJyZW50U2NvcGUiLCJoYXNHbG9iYWxDdXJyZW50U2NvcGUiLCJhcGlNYWtlckRldmlzZUN1cnJlbnQiLCJzY29wZURhdGEiLCJwYXJzZWRTY29wZURhdGEiLCJwYXJzZSIsIk1vZGVsQ2xhc3MiLCJtb2RlbEluc3RhbmNlIiwiZGF0YSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXZpc2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjcmVhdGVDb250ZXh0fSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IERlc2VyaWFsaXplciBmcm9tIFwiLi9kZXNlcmlhbGl6ZXJcIlxuaW1wb3J0IGV2ZW50cyBmcm9tIFwiLi9ldmVudHNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4vbW9kZWwtY2xhc3MtcmVxdWlyZVwiXG5pbXBvcnQgU2VydmljZXMgZnJvbSBcIi4vc2VydmljZXNcIlxuXG5pZiAoIWdsb2JhbFRoaXMuQXBpTWFrZXJEZXZpc2UpIGdsb2JhbFRoaXMuQXBpTWFrZXJEZXZpc2UgPSB7c2NvcGVzOiB7fX1cblxuY29uc3Qgc2hhcmVkID0gZ2xvYmFsVGhpcy5BcGlNYWtlckRldmlzZVxuXG5jbGFzcyBEZXZpc2VTY29wZSB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlLCBhcmdzKSB7XG4gICAgdGhpcy5hcmdzID0gYXJnc1xuICAgIHRoaXMuY29udGV4dCA9IGNyZWF0ZUNvbnRleHQoKVxuICAgIHRoaXMuc2NvcGUgPSBzY29wZVxuICB9XG5cbiAgZ2V0Q29udGV4dCA9ICgpID0+IHRoaXMuY29udGV4dFxufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckRldmlzZSB7XG4gIHN0YXRpYyBjYWxsU2lnbk91dEV2ZW50KGFyZ3MpIHtcbiAgICBldmVudHMuZW1pdChcIm9uRGV2aXNlU2lnbk91dFwiLCB7YXJnc30pXG4gIH1cblxuICBzdGF0aWMgY3VycmVudCgpIHtcbiAgICBpZiAoIXNoYXJlZC5jdXJyZW50QXBpTWFrZXJEZXZpc2UpIHtcbiAgICAgIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJEZXZpc2UgPSBuZXcgQXBpTWFrZXJEZXZpc2UoKVxuICAgIH1cblxuICAgIHJldHVybiBzaGFyZWQuY3VycmVudEFwaU1ha2VyRGV2aXNlXG4gIH1cblxuICBzdGF0aWMgZXZlbnRzKCkge1xuICAgIHJldHVybiBldmVudHNcbiAgfVxuXG4gIHN0YXRpYyBhZGRVc2VyU2NvcGUoc2NvcGUsIGFyZ3MgPSB7fSkge1xuICAgIGNvbnN0IHNjb3BlQ2FtZWxpemVkID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSlcbiAgICBjb25zdCBjdXJyZW50TWV0aG9kTmFtZSA9IGBjdXJyZW50JHtzY29wZUNhbWVsaXplZH1gXG4gICAgY29uc3QgaXNTaWduZWRJbk1ldGhvZE5hbWUgPSBgaXMke3Njb3BlQ2FtZWxpemVkfVNpZ25lZEluYFxuICAgIGNvbnN0IGdldEFyZ3NNZXRob2ROYW1lID0gYGdldCR7c2NvcGVDYW1lbGl6ZWR9QXJnc2BcbiAgICBjb25zdCBnZXRTY29wZU5hbWUgPSBgZ2V0JHtzY29wZUNhbWVsaXplZH1TY29wZWBcbiAgICBjb25zdCBzY29wZUluc3RhbmNlID0gbmV3IERldmlzZVNjb3BlKHNjb3BlLCBhcmdzKVxuXG4gICAgQXBpTWFrZXJEZXZpc2VbY3VycmVudE1ldGhvZE5hbWVdID0gKCkgPT4gQXBpTWFrZXJEZXZpc2UuY3VycmVudCgpLmdldEN1cnJlbnRTY29wZShzY29wZSlcbiAgICBBcGlNYWtlckRldmlzZVtpc1NpZ25lZEluTWV0aG9kTmFtZV0gPSAoKSA9PiBCb29sZWFuKEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5nZXRDdXJyZW50U2NvcGUoc2NvcGUpKVxuICAgIEFwaU1ha2VyRGV2aXNlW2dldEFyZ3NNZXRob2ROYW1lXSA9ICgpID0+IGFyZ3NcbiAgICBBcGlNYWtlckRldmlzZVtnZXRTY29wZU5hbWVdID0gKCkgPT4gc2NvcGVJbnN0YW5jZVxuICB9XG5cbiAgc3RhdGljIGdldFNjb3BlKHNjb3BlKSB7XG4gICAgY29uc3Qgc2NvcGVDYW1lbGl6ZWQgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKVxuICAgIGNvbnN0IGdldFNjb3BlTmFtZSA9IGBnZXQke3Njb3BlQ2FtZWxpemVkfVNjb3BlYFxuXG4gICAgcmV0dXJuIEFwaU1ha2VyRGV2aXNlW2dldFNjb3BlTmFtZV0oKVxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNpZ25Jbih1c2VybmFtZSwgcGFzc3dvcmQsIGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkgYXJncy5zY29wZSA9IFwidXNlclwiXG5cbiAgICBjb25zdCBwb3N0RGF0YSA9IHt1c2VybmFtZSwgcGFzc3dvcmQsIGFyZ3N9XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJEZXZpc2U6OlNpZ25JblwiLCBwb3N0RGF0YSlcblxuICAgIGxldCBtb2RlbCA9IHJlc3BvbnNlLm1vZGVsXG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShtb2RlbCkpIG1vZGVsID0gbW9kZWxbMF1cblxuICAgIEFwaU1ha2VyRGV2aXNlLnVwZGF0ZVNlc3Npb24obW9kZWwpXG4gICAgZXZlbnRzLmVtaXQoXCJvbkRldmlzZVNpZ25JblwiLCBPYmplY3QuYXNzaWduKHt1c2VybmFtZX0sIGFyZ3MpKVxuXG4gICAgcmV0dXJuIHttb2RlbCwgcmVzcG9uc2V9XG4gIH1cblxuICBzdGF0aWMgdXBkYXRlU2Vzc2lvbihtb2RlbCwgYXJncyA9IHt9KSB7XG4gICAgaWYgKCFhcmdzLnNjb3BlKSBhcmdzLnNjb3BlID0gXCJ1c2VyXCJcblxuICAgIGNvbnN0IGNhbWVsaXplZFNjb3BlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoYXJncy5zY29wZSwgdHJ1ZSlcblxuICAgIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1tjYW1lbGl6ZWRTY29wZU5hbWVdID0gbW9kZWxcbiAgfVxuXG4gIGhhc0N1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGNvbnN0IGNhbWVsaXplZFNjb3BlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUsIHRydWUpXG5cbiAgICByZXR1cm4gY2FtZWxpemVkU2NvcGVOYW1lIGluIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1xuICB9XG5cbiAgc3RhdGljIHNldFNpZ25lZE91dChhcmdzKSB7XG4gICAgQXBpTWFrZXJEZXZpc2UuY3VycmVudCgpLmN1cnJlbnRzW2luZmxlY3Rpb24uY2FtZWxpemUoYXJncy5zY29wZSwgdHJ1ZSldID0gbnVsbFxuICB9XG5cbiAgc3RhdGljIGFzeW5jIHNpZ25PdXQoYXJncyA9IHt9KSB7XG4gICAgaWYgKCFhcmdzLnNjb3BlKSB7XG4gICAgICBhcmdzLnNjb3BlID0gXCJ1c2VyXCJcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IFNlcnZpY2VzLmN1cnJlbnQoKS5zZW5kUmVxdWVzdChcIkRldmlzZTo6U2lnbk91dFwiLCB7YXJnc30pXG5cbiAgICAvLyBDYW5ub3QgdXNlIHRoZSBjbGFzcyBiZWNhdXNlIHRoZXkgd291bGQgYm90aCBpbXBvcnQgZWFjaCBvdGhlclxuICAgIGlmIChzaGFyZWQuYXBpTWFrZXJTZXNzaW9uU3RhdHVzVXBkYXRlcikge1xuICAgICAgc2hhcmVkLmFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIudXBkYXRlU2Vzc2lvblN0YXR1cygpXG4gICAgfVxuXG4gICAgQXBpTWFrZXJEZXZpc2Uuc2V0U2lnbmVkT3V0KGFyZ3MpXG4gICAgQXBpTWFrZXJEZXZpc2UuY2FsbFNpZ25PdXRFdmVudChhcmdzKVxuXG4gICAgcmV0dXJuIHJlc3BvbnNlXG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmN1cnJlbnRzID0ge31cbiAgfVxuXG4gIGdldEN1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGlmICghKHNjb3BlIGluIHRoaXMuY3VycmVudHMpKSB7XG4gICAgICB0aGlzLmN1cnJlbnRzW3Njb3BlXSA9IHRoaXMubG9hZEN1cnJlbnRTY29wZShzY29wZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jdXJyZW50c1tzY29wZV1cbiAgfVxuXG4gIGhhc0dsb2JhbEN1cnJlbnRTY29wZShzY29wZSkge1xuICAgIGlmIChnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudCAmJiBzY29wZSBpbiBnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudCkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGxvYWRDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBpZiAoIXRoaXMuaGFzR2xvYmFsQ3VycmVudFNjb3BlKHNjb3BlKSkge1xuICAgICAgcmV0dXJuIG51bGxcbiAgICB9XG5cbiAgICBjb25zdCBzY29wZURhdGEgPSBnbG9iYWxUaGlzLmFwaU1ha2VyRGV2aXNlQ3VycmVudFtzY29wZV1cblxuICAgIGlmICghc2NvcGVEYXRhKSByZXR1cm4gbnVsbFxuXG4gICAgY29uc3QgcGFyc2VkU2NvcGVEYXRhID0gRGVzZXJpYWxpemVyLnBhcnNlKHNjb3BlRGF0YSlcblxuICAgIC8vIE1pZ2h0IGJlIGEgY29sbGVjdGlvbiB3aXRoIHByZWxvYWRlZCByZWxhdGlvbnNoaXBzXG4gICAgaWYgKEFycmF5LmlzQXJyYXkocGFyc2VkU2NvcGVEYXRhKSkgcmV0dXJuIHBhcnNlZFNjb3BlRGF0YVswXVxuXG4gICAgY29uc3QgTW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NSZXF1aXJlKHNjb3BlKVxuICAgIGNvbnN0IG1vZGVsSW5zdGFuY2UgPSBuZXcgTW9kZWxDbGFzcyh7ZGF0YTogcGFyc2VkU2NvcGVEYXRhfSlcblxuICAgIHJldHVybiBtb2RlbEluc3RhbmNlXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsYUFBYSxRQUFPLE9BQU87QUFDbkMsT0FBT0MsWUFBWSxNQUFNLGdCQUFnQjtBQUN6QyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixPQUFPLEtBQUtDLFVBQVUsTUFBTSxZQUFZO0FBQ3hDLE9BQU9DLGlCQUFpQixNQUFNLHVCQUF1QjtBQUNyRCxPQUFPQyxRQUFRLE1BQU0sWUFBWTtBQUVqQyxJQUFJLENBQUNDLFVBQVUsQ0FBQ0MsY0FBYyxFQUFFRCxVQUFVLENBQUNDLGNBQWMsR0FB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
@@ -7,46 +7,43 @@ import classNames from "classnames";
7
7
  import { digg } from "diggerize";
8
8
  import memo from "set-state-compare/src/memo";
9
9
  import { shapeComponent } from "set-state-compare/src/shape-component";
10
- import * as models from "models";
11
10
  import Params from "../../params";
11
+ import { TableSearch } from "models";
12
12
  import Text from "../../utils/text";
13
13
  import useI18n from "i18n-on-steroids/src/use-i18n";
14
- const {
15
- TableSearch
16
- } = models;
17
14
  const SearchLink = memo(shapeComponent(class SearchLink extends BaseComponent {
18
15
  render() {
19
16
  const {
20
17
  search
21
18
  } = this.props;
22
19
  return /*#__PURE__*/React.createElement(View, {
23
- dataSet: {
20
+ dataSet: this.cache("rootViewStyle", {
24
21
  class: "search-row",
25
22
  searchId: search.id()
26
- },
27
- style: {
23
+ }, [search.id()]),
24
+ style: this.rootViewStyle ||= {
28
25
  flexDirection: "row",
29
26
  width: "100%"
30
27
  }
31
28
  }, /*#__PURE__*/React.createElement(Pressable, {
32
- dataSet: {
29
+ dataSet: this.loadSearchLinkPressableDataSet ||= {
33
30
  class: "load-search-link"
34
31
  },
35
- onPress: this.onSearchClicked,
36
- style: {
32
+ onPress: this.tt.onSearchClicked,
33
+ style: this.loadSearchLinkPressableStyle ||= {
37
34
  justifyContent: "center"
38
35
  }
39
36
  }, /*#__PURE__*/React.createElement(Text, null, search.name())), /*#__PURE__*/React.createElement(View, {
40
- style: {
37
+ style: this.actionsViewStyle ||= {
41
38
  flexDirection: "row",
42
39
  marginLeft: "auto"
43
40
  }
44
41
  }, /*#__PURE__*/React.createElement(Pressable, {
45
- dataSet: {
42
+ dataSet: this.editSearchButtonDataSet ||= {
46
43
  class: "edit-search-button"
47
44
  },
48
- onPress: this.onEditPressed,
49
- style: {
45
+ onPress: this.tt.onEditPressed,
46
+ style: this.editSearchButtonStyle ||= {
50
47
  alignItems: "center",
51
48
  justifyContent: "center",
52
49
  width: 25,
@@ -57,11 +54,11 @@ const SearchLink = memo(shapeComponent(class SearchLink extends BaseComponent {
57
54
  color: "#007bff"
58
55
  }
59
56
  }, /*#__PURE__*/React.createElement(Text, null, "\u270E")), /*#__PURE__*/React.createElement(Pressable, {
60
- dataSet: {
57
+ dataSet: this.deleteSearchButtonDataSet ||= {
61
58
  class: "delete-search-button"
62
59
  },
63
- onPress: this.onDeletePressed,
64
- style: {
60
+ onPress: this.tt.onDeletePressed,
61
+ style: this.deleteSearchButtonStyle ||= {
65
62
  alignItems: "center",
66
63
  justifyContent: "center",
67
64
  marginLeft: 5,
@@ -127,7 +124,7 @@ export default memo(shapeComponent(class ApiMakerTableFiltersLoadSearchModal ext
127
124
  render() {
128
125
  const {
129
126
  t
130
- } = this;
127
+ } = this.tt;
131
128
  const {
132
129
  className,
133
130
  currentUser,
@@ -145,8 +142,8 @@ export default memo(shapeComponent(class ApiMakerTableFiltersLoadSearchModal ext
145
142
  defaultValue: "Choose a search"
146
143
  }))), this.state.searches?.map(search => /*#__PURE__*/React.createElement(SearchLink, {
147
144
  key: search.id(),
148
- onClick: this.onSearchClicked,
149
- onDeleted: this.onSearchDeleted,
145
+ onClick: this.tt.onSearchClicked,
146
+ onDeleted: this.tt.onSearchDeleted,
150
147
  onEditPressed: onEditSearchPressed,
151
148
  search: search
152
149
  })));
@@ -172,4 +169,4 @@ export default memo(shapeComponent(class ApiMakerTableFiltersLoadSearchModal ext
172
169
  });
173
170
  };
174
171
  }));
175
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJQcmVzc2FibGUiLCJWaWV3IiwiYXBpTWFrZXJDb25maWciLCJCYXNlQ29tcG9uZW50IiwiY2xhc3NOYW1lcyIsImRpZ2ciLCJtZW1vIiwic2hhcGVDb21wb25lbnQiLCJtb2RlbHMiLCJQYXJhbXMiLCJUZXh0IiwidXNlSTE4biIsIlRhYmxlU2VhcmNoIiwiU2VhcmNoTGluayIsInJlbmRlciIsInNlYXJjaCIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImRhdGFTZXQiLCJjbGFzcyIsInNlYXJjaElkIiwiaWQiLCJzdHlsZSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsIm9uUHJlc3MiLCJvblNlYXJjaENsaWNrZWQiLCJqdXN0aWZ5Q29udGVudCIsIm5hbWUiLCJtYXJnaW5MZWZ0Iiwib25FZGl0UHJlc3NlZCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJib3JkZXJSYWRpdXMiLCJjb2xvciIsIm9uRGVsZXRlUHJlc3NlZCIsImNvbmZpcm0iLCJkZXN0cm95Iiwib25EZWxldGVkIiwib25DbGljayIsIkFwaU1ha2VyVGFibGVGaWx0ZXJzTG9hZFNlYXJjaE1vZGFsIiwic2V0dXAiLCJ0IiwibmFtZXNwYWNlIiwidXNlU3RhdGVzIiwiZWRpdFNlYXJjaCIsInVuZGVmaW5lZCIsInNlYXJjaGVzIiwic2V0SW5zdGFuY2UiLCJsb2FkU2VhcmNoZXMiLCJjdXJyZW50VXNlciIsInVzZXJUeXBlIiwibW9kZWxDbGFzc0RhdGEiLCJyYW5zYWNrIiwidXNlcl9pZF9lcSIsInVzZXJfdHlwZV9lcSIsInRvQXJyYXkiLCJzZXRTdGF0ZSIsImNsYXNzTmFtZSIsIm1vZGVsQ2xhc3MiLCJvbkVkaXRTZWFyY2hQcmVzc2VkIiwib25SZXF1ZXN0Q2xvc2UiLCJxdWVyeVNlYXJjaE5hbWUiLCJyZXN0UHJvcHMiLCJNb2RhbCIsImdldE1vZGFsIiwiX2V4dGVuZHMiLCJkZWZhdWx0VmFsdWUiLCJzdGF0ZSIsIm1hcCIsImtleSIsIm9uU2VhcmNoRGVsZXRlZCIsInF1ZXJ5UGFyYW1zIiwibmV3UGFyYW1zIiwicXVlcnlQYXJhbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjaGFuZ2VQYXJhbXMiLCJmaWx0ZXIiLCJleGlzdGluZ1NlYXJjaCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJsZS9maWx0ZXJzL2xvYWQtc2VhcmNoLW1vZGFsLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtQcmVzc2FibGUsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IGFwaU1ha2VyQ29uZmlnIGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL2NvbmZpZ1wiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgKiBhcyBtb2RlbHMgZnJvbSBcIm1vZGVsc1wiXG5pbXBvcnQgUGFyYW1zIGZyb20gXCIuLi8uLi9wYXJhbXNcIlxuaW1wb3J0IFRleHQgZnJvbSBcIi4uLy4uL3V0aWxzL3RleHRcIlxuaW1wb3J0IHVzZUkxOG4gZnJvbSBcImkxOG4tb24tc3Rlcm9pZHMvc3JjL3VzZS1pMThuXCJcblxuY29uc3Qge1RhYmxlU2VhcmNofSA9IG1vZGVsc1xuXG5jb25zdCBTZWFyY2hMaW5rID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBTZWFyY2hMaW5rIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7c2VhcmNofSA9IHRoaXMucHJvcHNcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt7Y2xhc3M6IFwic2VhcmNoLXJvd1wiLCBzZWFyY2hJZDogc2VhcmNoLmlkKCl9fSBzdHlsZT17e2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIHdpZHRoOiBcIjEwMCVcIn19PlxuICAgICAgICA8UHJlc3NhYmxlIGRhdGFTZXQ9e3tjbGFzczogXCJsb2FkLXNlYXJjaC1saW5rXCJ9fSBvblByZXNzPXt0aGlzLm9uU2VhcmNoQ2xpY2tlZH0gc3R5bGU9e3tqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIn19PlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAge3NlYXJjaC5uYW1lKCl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3tmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBtYXJnaW5MZWZ0OiBcImF1dG9cIn19PlxuICAgICAgICAgIDxQcmVzc2FibGVcbiAgICAgICAgICAgIGRhdGFTZXQ9e3tjbGFzczogXCJlZGl0LXNlYXJjaC1idXR0b25cIn19XG4gICAgICAgICAgICBvblByZXNzPXt0aGlzLm9uRWRpdFByZXNzZWR9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgd2lkdGg6IDI1LFxuICAgICAgICAgICAgICBoZWlnaHQ6IDI1LFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICMwMDdiZmZcIixcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA1LFxuICAgICAgICAgICAgICBjb2xvcjogXCIjMDA3YmZmXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICYjeDI3MEU7XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgICAgZGF0YVNldD17e2NsYXNzOiBcImRlbGV0ZS1zZWFyY2gtYnV0dG9uXCJ9fVxuICAgICAgICAgICAgb25QcmVzcz17dGhpcy5vbkRlbGV0ZVByZXNzZWR9XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgbWFyZ2luTGVmdDogNSxcbiAgICAgICAgICAgICAgd2lkdGg6IDI1LFxuICAgICAgICAgICAgICBoZWlnaHQ6IDI1LFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICNkYzM1NDVcIixcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA1LFxuICAgICAgICAgICAgICBjb2xvcjogXCIjZGMzNTQ1XCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICYjeDI3MTU7XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBvbkRlbGV0ZVByZXNzZWQgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFjb25maXJtKFwiQXJlIHlvdSBzdXJlP1wiKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3Qge3NlYXJjaH0gPSB0aGlzLnByb3BzXG5cbiAgICBhd2FpdCBzZWFyY2guZGVzdHJveSgpXG4gICAgdGhpcy5wcm9wcy5vbkRlbGV0ZWQoe3NlYXJjaH0pXG4gIH1cblxuICBvbkVkaXRQcmVzc2VkID0gKCkgPT4gdGhpcy5wcm9wcy5vbkVkaXRQcmVzc2VkKHtzZWFyY2g6IHRoaXMucHJvcHMuc2VhcmNofSlcbiAgb25TZWFyY2hDbGlja2VkID0gKCkgPT4gdGhpcy5wcm9wcy5vbkNsaWNrKHtzZWFyY2g6IHRoaXMucHJvcHMuc2VhcmNofSlcbn0pKVxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VyVGFibGVGaWx0ZXJzTG9hZFNlYXJjaE1vZGFsIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IHVzZUkxOG4oe25hbWVzcGFjZTogXCJqcy5hcGlfbWFrZXIudGFibGUuZmlsdGVycy5sb2FkX3NlYXJjaF9tb2RhbFwifSlcblxuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGVkaXRTZWFyY2g6IHVuZGVmaW5lZCxcbiAgICAgIHNlYXJjaGVzOiB1bmRlZmluZWRcbiAgICB9KVxuICAgIHRoaXMuc2V0SW5zdGFuY2Uoe3R9KVxuXG4gICAgdXNlTWVtbygoKSA9PiB7XG4gICAgICB0aGlzLmxvYWRTZWFyY2hlcygpXG4gICAgfSwgW10pXG4gIH1cblxuICBsb2FkU2VhcmNoZXMgPSBhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge2N1cnJlbnRVc2VyfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB1c2VyVHlwZSA9IGRpZ2coY3VycmVudFVzZXIubW9kZWxDbGFzc0RhdGEoKSwgXCJuYW1lXCIpXG4gICAgY29uc3Qgc2VhcmNoZXMgPSBhd2FpdCBUYWJsZVNlYXJjaFxuICAgICAgLnJhbnNhY2soe3VzZXJfaWRfZXE6IGN1cnJlbnRVc2VyLmlkKCksIHVzZXJfdHlwZV9lcTogdXNlclR5cGV9KVxuICAgICAgLnRvQXJyYXkoKVxuXG4gICAgdGhpcy5zZXRTdGF0ZSh7c2VhcmNoZXN9KVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHt0fSA9IHRoaXNcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBjdXJyZW50VXNlciwgbW9kZWxDbGFzcywgb25FZGl0U2VhcmNoUHJlc3NlZCwgb25SZXF1ZXN0Q2xvc2UsIHF1ZXJ5U2VhcmNoTmFtZSwgLi4ucmVzdFByb3BzfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCBNb2RhbCA9IGFwaU1ha2VyQ29uZmlnLmdldE1vZGFsKClcblxuICAgIHJldHVybiAoXG4gICAgICA8TW9kYWwgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFwiYXBpLW1ha2VyLS10YWJsZS0tZmlsdGVycy0tbG9hZC1zZWFyY2gtbW9kYWxcIiwgY2xhc3NOYW1lKX0gb25SZXF1ZXN0Q2xvc2U9e29uUmVxdWVzdENsb3NlfSB7Li4ucmVzdFByb3BzfT5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICB7dChcIi5jaG9vc2VfYV9zZWFyY2hcIiwge2RlZmF1bHRWYWx1ZTogXCJDaG9vc2UgYSBzZWFyY2hcIn0pfVxuICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICB7dGhpcy5zdGF0ZS5zZWFyY2hlcz8ubWFwKChzZWFyY2gpID0+XG4gICAgICAgICAgPFNlYXJjaExpbmsga2V5PXtzZWFyY2guaWQoKX0gb25DbGljaz17dGhpcy5vblNlYXJjaENsaWNrZWR9IG9uRGVsZXRlZD17dGhpcy5vblNlYXJjaERlbGV0ZWR9IG9uRWRpdFByZXNzZWQ9e29uRWRpdFNlYXJjaFByZXNzZWR9IHNlYXJjaD17c2VhcmNofSAvPlxuICAgICAgICApfVxuICAgICAgPC9Nb2RhbD5cbiAgICApXG4gIH1cblxuICBvblNlYXJjaENsaWNrZWQgPSAoe3NlYXJjaH0pID0+IHtcbiAgICBjb25zdCB7b25SZXF1ZXN0Q2xvc2UsIHF1ZXJ5U2VhcmNoTmFtZX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzZWFyY2gucXVlcnlQYXJhbXMoKVxuICAgIGNvbnN0IG5ld1BhcmFtcyA9IHt9XG5cbiAgICBuZXdQYXJhbXNbcXVlcnlTZWFyY2hOYW1lXSA9IHF1ZXJ5UGFyYW1zLm1hcCgocXVlcnlQYXJhbSkgPT4gSlNPTi5zdHJpbmdpZnkocXVlcnlQYXJhbSkpXG5cbiAgICBQYXJhbXMuY2hhbmdlUGFyYW1zKG5ld1BhcmFtcylcblxuICAgIG9uUmVxdWVzdENsb3NlKClcbiAgfVxuXG4gIG9uU2VhcmNoRGVsZXRlZCA9ICh7c2VhcmNofSkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VhcmNoZXM6IHRoaXMuc3RhdGUuc2VhcmNoZXMuZmlsdGVyKChleGlzdGluZ1NlYXJjaCkgPT4gZXhpc3RpbmdTZWFyY2guaWQoKSAhPSBzZWFyY2guaWQoKSlcbiAgICB9KVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEtBQUssSUFBR0MsT0FBTyxRQUFPLE9BQU87QUFDcEMsU0FBUUMsU0FBUyxFQUFFQyxJQUFJLFFBQU8sY0FBYztBQUM1QyxPQUFPQyxjQUFjLE1BQU0sa0NBQWtDO0FBQzdELE9BQU9DLGFBQWEsTUFBTSxzQkFBc0I7QUFDaEQsT0FBT0MsVUFBVSxNQUFNLFlBQVk7QUFDbkMsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxTQUFRQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BFLE9BQU8sS0FBS0MsTUFBTSxNQUFNLFFBQVE7QUFDaEMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsT0FBT0MsSUFBSSxNQUFNLGtCQUFrQjtBQUNuQyxPQUFPQyxPQUFPLE1BQU0sK0JBQStCO0FBRW5ELE1BQU07RUFBQ0M7QUFBVyxDQUFDLEdBQUdKLE1BQU07QUFFNUIsTUFBTUssVUFBVSxHQUFHUCxJQUFJLENBQUNDLGNBQWMsQ0FBQyxNQUFNTSxVQUFVLFNBQVNWLGFBQWEsQ0FBQztFQUM1RVcsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDQztJQUFNLENBQUMsR0FBRyxJQUFJLENBQUNDLEtBQUs7SUFFM0Isb0JBQ0VsQixLQUFBLENBQUFtQixhQUFBLENBQUNoQixJQUFJO01BQUNpQixPQUFPLEVBQUU7UUFBQ0MsS0FBSyxFQUFFLFlBQVk7UUFBRUMsUUFBUSxFQUFFTCxNQUFNLENBQUNNLEVBQUUsQ0FBQztNQUFDLENBQUU7TUFBQ0MsS0FBSyxFQUFFO1FBQUNDLGFBQWEsRUFBRSxLQUFLO1FBQUVDLEtBQUssRUFBRTtNQUFNO0lBQUUsZ0JBQ3hHMUIsS0FBQSxDQUFBbUIsYUFBQSxDQUFDakIsU0FBUztNQUFDa0IsT0FBTyxFQUFFO1FBQUNDLEtBQUssRUFBRTtNQUFrQixDQUFFO01BQUNNLE9BQU8sRUFBRSxJQUFJLENBQUNDLGVBQWdCO01BQUNKLEtBQUssRUFBRTtRQUFDSyxjQUFjLEVBQUU7TUFBUTtJQUFFLGdCQUNoSDdCLEtBQUEsQ0FBQW1CLGFBQUEsQ0FBQ1AsSUFBSSxRQUNGSyxNQUFNLENBQUNhLElBQUksQ0FBQyxDQUNULENBQ0csQ0FBQyxlQUNaOUIsS0FBQSxDQUFBbUIsYUFBQSxDQUFDaEIsSUFBSTtNQUFDcUIsS0FBSyxFQUFFO1FBQUNDLGFBQWEsRUFBRSxLQUFLO1FBQUVNLFVBQVUsRUFBRTtNQUFNO0lBQUUsZ0JBQ3REL0IsS0FBQSxDQUFBbUIsYUFBQSxDQUFDakIsU0FBUztNQUNSa0IsT0FBTyxFQUFFO1FBQUNDLEtBQUssRUFBRTtNQUFvQixDQUFFO01BQ3ZDTSxPQUFPLEVBQUUsSUFBSSxDQUFDSyxhQUFjO01BQzVCUixLQUFLLEVBQUU7UUFDTFMsVUFBVSxFQUFFLFFBQVE7UUFDcEJKLGNBQWMsRUFBRSxRQUFRO1FBQ3hCSCxLQUFLLEVBQUUsRUFBRTtRQUNUUSxNQUFNLEVBQUUsRUFBRTtRQUNWQyxlQUFlLEVBQUUsTUFBTTtRQUN2QkMsTUFBTSxFQUFFLG1CQUFtQjtRQUMzQkMsWUFBWSxFQUFFLENBQUM7UUFDZkMsS0FBSyxFQUFFO01BQ1Q7SUFBRSxnQkFFRnRDLEtBQUEsQ0FBQW1CLGFBQUEsQ0FBQ1AsSUFBSSxRQUFDLFFBRUEsQ0FDRyxDQUFDLGVBQ1paLEtBQUEsQ0FBQW1CLGFBQUEsQ0FBQ2pCLFNBQVM7TUFDUmtCLE9BQU8sRUFBRTtRQUFDQyxLQUFLLEVBQUU7TUFBc0IsQ0FBRTtNQUN6Q00sT0FBTyxFQUFFLElBQUksQ0FBQ1ksZUFBZ0I7TUFDOUJmLEtBQUssRUFBRTtRQUNMUyxVQUFVLEVBQUUsUUFBUTtRQUNwQkosY0FBYyxFQUFFLFFBQVE7UUFDeEJFLFVBQVUsRUFBRSxDQUFDO1FBQ2JMLEtBQUssRUFBRSxFQUFFO1FBQ1RRLE1BQU0sRUFBRSxFQUFFO1FBQ1ZDLGVBQWUsRUFBRSxNQUFNO1FBQ3ZCQyxNQUFNLEVBQUUsbUJBQW1CO1FBQzNCQyxZQUFZLEVBQUUsQ0FBQztRQUNmQyxLQUFLLEVBQUU7TUFDVDtJQUFFLGdCQUVGdEMsS0FBQSxDQUFBbUIsYUFBQSxDQUFDUCxJQUFJLFFBQUMsUUFFQSxDQUNHLENBQ1AsQ0FDRixDQUFDO0VBRVg7RUFFQTJCLGVBQWUsR0FBRyxNQUFBQSxDQUFBLEtBQVk7SUFDNUIsSUFBSSxDQUFDQyxPQUFPLENBQUMsZUFBZSxDQUFDLEVBQUU7TUFDN0I7SUFDRjtJQUVBLE1BQU07TUFBQ3ZCO0lBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztJQUUzQixNQUFNRCxNQUFNLENBQUN3QixPQUFPLENBQUMsQ0FBQztJQUN0QixJQUFJLENBQUN2QixLQUFLLENBQUN3QixTQUFTLENBQUM7TUFBQ3pCO0lBQU0sQ0FBQyxDQUFDO0VBQ2hDLENBQUM7RUFFRGUsYUFBYSxHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDZCxLQUFLLENBQUNjLGFBQWEsQ0FBQztJQUFDZixNQUFNLEVBQUUsSUFBSSxDQUFDQyxLQUFLLENBQUNEO0VBQU0sQ0FBQyxDQUFDO0VBQzNFVyxlQUFlLEdBQUdBLENBQUEsS0FBTSxJQUFJLENBQUNWLEtBQUssQ0FBQ3lCLE9BQU8sQ0FBQztJQUFDMUIsTUFBTSxFQUFFLElBQUksQ0FBQ0MsS0FBSyxDQUFDRDtFQUFNLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQUMsQ0FBQztBQUVILGVBQWVULElBQUksQ0FBQ0MsY0FBYyxDQUFDLE1BQU1tQyxtQ0FBbUMsU0FBU3ZDLGFBQWEsQ0FBQztFQUNqR3dDLEtBQUtBLENBQUEsRUFBRztJQUNOLE1BQU07TUFBQ0M7SUFBQyxDQUFDLEdBQUdqQyxPQUFPLENBQUM7TUFBQ2tDLFNBQVMsRUFBRTtJQUE4QyxDQUFDLENBQUM7SUFFaEYsSUFBSSxDQUFDQyxTQUFTLENBQUM7TUFDYkMsVUFBVSxFQUFFQyxTQUFTO01BQ3JCQyxRQUFRLEVBQUVEO0lBQ1osQ0FBQyxDQUFDO0lBQ0YsSUFBSSxDQUFDRSxXQUFXLENBQUM7TUFBQ047SUFBQyxDQUFDLENBQUM7SUFFckI3QyxPQUFPLENBQUMsTUFBTTtNQUNaLElBQUksQ0FBQ29ELFlBQVksQ0FBQyxDQUFDO0lBQ3JCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFDUjtFQUVBQSxZQUFZLEdBQUcsTUFBQUEsQ0FBQSxLQUFZO0lBQ3pCLE1BQU07TUFBQ0M7SUFBVyxDQUFDLEdBQUcsSUFBSSxDQUFDcEMsS0FBSztJQUNoQyxNQUFNcUMsUUFBUSxHQUFHaEQsSUFBSSxDQUFDK0MsV0FBVyxDQUFDRSxjQUFjLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQztJQUMzRCxNQUFNTCxRQUFRLEdBQUcsTUFBTXJDLFdBQVcsQ0FDL0IyQyxPQUFPLENBQUM7TUFBQ0MsVUFBVSxFQUFFSixXQUFXLENBQUMvQixFQUFFLENBQUMsQ0FBQztNQUFFb0MsWUFBWSxFQUFFSjtJQUFRLENBQUMsQ0FBQyxDQUMvREssT0FBTyxDQUFDLENBQUM7SUFFWixJQUFJLENBQUNDLFFBQVEsQ0FBQztNQUFDVjtJQUFRLENBQUMsQ0FBQztFQUMzQixDQUFDO0VBRURuQyxNQUFNQSxDQUFBLEVBQUc7SUFDUCxNQUFNO01BQUM4QjtJQUFDLENBQUMsR0FBRyxJQUFJO0lBQ2hCLE1BQU07TUFBQ2dCLFNBQVM7TUFBRVIsV0FBVztNQUFFUyxVQUFVO01BQUVDLG1CQUFtQjtNQUFFQyxjQUFjO01BQUVDLGVBQWU7TUFBRSxHQUFHQztJQUFTLENBQUMsR0FBRyxJQUFJLENBQUNqRCxLQUFLO0lBQzNILE1BQU1rRCxLQUFLLEdBQUdoRSxjQUFjLENBQUNpRSxRQUFRLENBQUMsQ0FBQztJQUV2QyxvQkFDRXJFLEtBQUEsQ0FBQW1CLGFBQUEsQ0FBQ2lELEtBQUssRUFBQUUsUUFBQTtNQUFDUixTQUFTLEVBQUV4RCxVQUFVLENBQUMsOENBQThDLEVBQUV3RCxTQUFTLENBQUU7TUFBQ0csY0FBYyxFQUFFQTtJQUFlLEdBQUtFLFNBQVMsZ0JBQ3BJbkUsS0FBQSxDQUFBbUIsYUFBQSxDQUFDaEIsSUFBSSxxQkFDSEgsS0FBQSxDQUFBbUIsYUFBQSxDQUFDUCxJQUFJLFFBQ0ZrQyxDQUFDLENBQUMsa0JBQWtCLEVBQUU7TUFBQ3lCLFlBQVksRUFBRTtJQUFpQixDQUFDLENBQ3BELENBQ0YsQ0FBQyxFQUNOLElBQUksQ0FBQ0MsS0FBSyxDQUFDckIsUUFBUSxFQUFFc0IsR0FBRyxDQUFFeEQsTUFBTSxpQkFDL0JqQixLQUFBLENBQUFtQixhQUFBLENBQUNKLFVBQVU7TUFBQzJELEdBQUcsRUFBRXpELE1BQU0sQ0FBQ00sRUFBRSxDQUFDLENBQUU7TUFBQ29CLE9BQU8sRUFBRSxJQUFJLENBQUNmLGVBQWdCO01BQUNjLFNBQVMsRUFBRSxJQUFJLENBQUNpQyxlQUFnQjtNQUFDM0MsYUFBYSxFQUFFZ0MsbUJBQW9CO01BQUMvQyxNQUFNLEVBQUVBO0lBQU8sQ0FBRSxDQUNySixDQUNLLENBQUM7RUFFWjtFQUVBVyxlQUFlLEdBQUdBLENBQUM7SUFBQ1g7RUFBTSxDQUFDLEtBQUs7SUFDOUIsTUFBTTtNQUFDZ0QsY0FBYztNQUFFQztJQUFlLENBQUMsR0FBRyxJQUFJLENBQUNoRCxLQUFLO0lBQ3BELE1BQU0wRCxXQUFXLEdBQUczRCxNQUFNLENBQUMyRCxXQUFXLENBQUMsQ0FBQztJQUN4QyxNQUFNQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRXBCQSxTQUFTLENBQUNYLGVBQWUsQ0FBQyxHQUFHVSxXQUFXLENBQUNILEdBQUcsQ0FBRUssVUFBVSxJQUFLQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0YsVUFBVSxDQUFDLENBQUM7SUFFeEZuRSxNQUFNLENBQUNzRSxZQUFZLENBQUNKLFNBQVMsQ0FBQztJQUU5QlosY0FBYyxDQUFDLENBQUM7RUFDbEIsQ0FBQztFQUVEVSxlQUFlLEdBQUdBLENBQUM7SUFBQzFEO0VBQU0sQ0FBQyxLQUFLO0lBQzlCLElBQUksQ0FBQzRDLFFBQVEsQ0FBQztNQUNaVixRQUFRLEVBQUUsSUFBSSxDQUFDcUIsS0FBSyxDQUFDckIsUUFBUSxDQUFDK0IsTUFBTSxDQUFFQyxjQUFjLElBQUtBLGNBQWMsQ0FBQzVELEVBQUUsQ0FBQyxDQUFDLElBQUlOLE1BQU0sQ0FBQ00sRUFBRSxDQUFDLENBQUM7SUFDN0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
172
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZU1lbW8iLCJQcmVzc2FibGUiLCJWaWV3IiwiYXBpTWFrZXJDb25maWciLCJCYXNlQ29tcG9uZW50IiwiY2xhc3NOYW1lcyIsImRpZ2ciLCJtZW1vIiwic2hhcGVDb21wb25lbnQiLCJQYXJhbXMiLCJUYWJsZVNlYXJjaCIsIlRleHQiLCJ1c2VJMThuIiwiU2VhcmNoTGluayIsInJlbmRlciIsInNlYXJjaCIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImRhdGFTZXQiLCJjYWNoZSIsImNsYXNzIiwic2VhcmNoSWQiLCJpZCIsInN0eWxlIiwicm9vdFZpZXdTdHlsZSIsImZsZXhEaXJlY3Rpb24iLCJ3aWR0aCIsImxvYWRTZWFyY2hMaW5rUHJlc3NhYmxlRGF0YVNldCIsIm9uUHJlc3MiLCJ0dCIsIm9uU2VhcmNoQ2xpY2tlZCIsImxvYWRTZWFyY2hMaW5rUHJlc3NhYmxlU3R5bGUiLCJqdXN0aWZ5Q29udGVudCIsIm5hbWUiLCJhY3Rpb25zVmlld1N0eWxlIiwibWFyZ2luTGVmdCIsImVkaXRTZWFyY2hCdXR0b25EYXRhU2V0Iiwib25FZGl0UHJlc3NlZCIsImVkaXRTZWFyY2hCdXR0b25TdHlsZSIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJib3JkZXJSYWRpdXMiLCJjb2xvciIsImRlbGV0ZVNlYXJjaEJ1dHRvbkRhdGFTZXQiLCJvbkRlbGV0ZVByZXNzZWQiLCJkZWxldGVTZWFyY2hCdXR0b25TdHlsZSIsImNvbmZpcm0iLCJkZXN0cm95Iiwib25EZWxldGVkIiwib25DbGljayIsIkFwaU1ha2VyVGFibGVGaWx0ZXJzTG9hZFNlYXJjaE1vZGFsIiwic2V0dXAiLCJ0IiwibmFtZXNwYWNlIiwidXNlU3RhdGVzIiwiZWRpdFNlYXJjaCIsInVuZGVmaW5lZCIsInNlYXJjaGVzIiwic2V0SW5zdGFuY2UiLCJsb2FkU2VhcmNoZXMiLCJjdXJyZW50VXNlciIsInVzZXJUeXBlIiwibW9kZWxDbGFzc0RhdGEiLCJyYW5zYWNrIiwidXNlcl9pZF9lcSIsInVzZXJfdHlwZV9lcSIsInRvQXJyYXkiLCJzZXRTdGF0ZSIsImNsYXNzTmFtZSIsIm1vZGVsQ2xhc3MiLCJvbkVkaXRTZWFyY2hQcmVzc2VkIiwib25SZXF1ZXN0Q2xvc2UiLCJxdWVyeVNlYXJjaE5hbWUiLCJyZXN0UHJvcHMiLCJNb2RhbCIsImdldE1vZGFsIiwiX2V4dGVuZHMiLCJkZWZhdWx0VmFsdWUiLCJzdGF0ZSIsIm1hcCIsImtleSIsIm9uU2VhcmNoRGVsZXRlZCIsInF1ZXJ5UGFyYW1zIiwibmV3UGFyYW1zIiwicXVlcnlQYXJhbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJjaGFuZ2VQYXJhbXMiLCJmaWx0ZXIiLCJleGlzdGluZ1NlYXJjaCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90YWJsZS9maWx0ZXJzL2xvYWQtc2VhcmNoLW1vZGFsLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHt1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtQcmVzc2FibGUsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IGFwaU1ha2VyQ29uZmlnIGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL2NvbmZpZ1wiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgUGFyYW1zIGZyb20gXCIuLi8uLi9wYXJhbXNcIlxuaW1wb3J0IHtUYWJsZVNlYXJjaH0gZnJvbSBcIm1vZGVsc1wiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi4vLi4vdXRpbHMvdGV4dFwiXG5pbXBvcnQgdXNlSTE4biBmcm9tIFwiaTE4bi1vbi1zdGVyb2lkcy9zcmMvdXNlLWkxOG5cIlxuXG5jb25zdCBTZWFyY2hMaW5rID0gbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBTZWFyY2hMaW5rIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7c2VhcmNofSA9IHRoaXMucHJvcHNcblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicm9vdFZpZXdTdHlsZVwiLCB7Y2xhc3M6IFwic2VhcmNoLXJvd1wiLCBzZWFyY2hJZDogc2VhcmNoLmlkKCl9LCBbc2VhcmNoLmlkKCldKX1cbiAgICAgICAgc3R5bGU9e3RoaXMucm9vdFZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIHdpZHRoOiBcIjEwMCVcIn19XG4gICAgICA+XG4gICAgICAgIDxQcmVzc2FibGVcbiAgICAgICAgICBkYXRhU2V0PXt0aGlzLmxvYWRTZWFyY2hMaW5rUHJlc3NhYmxlRGF0YVNldCB8fD0ge2NsYXNzOiBcImxvYWQtc2VhcmNoLWxpbmtcIn19XG4gICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vblNlYXJjaENsaWNrZWR9XG4gICAgICAgICAgc3R5bGU9e3RoaXMubG9hZFNlYXJjaExpbmtQcmVzc2FibGVTdHlsZSB8fD0ge2p1c3RpZnlDb250ZW50OiBcImNlbnRlclwifX1cbiAgICAgICAgPlxuICAgICAgICAgIDxUZXh0PlxuICAgICAgICAgICAge3NlYXJjaC5uYW1lKCl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3RoaXMuYWN0aW9uc1ZpZXdTdHlsZSB8fD0ge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIG1hcmdpbkxlZnQ6IFwiYXV0b1wifX0+XG4gICAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgICAgZGF0YVNldD17dGhpcy5lZGl0U2VhcmNoQnV0dG9uRGF0YVNldCB8fD0ge2NsYXNzOiBcImVkaXQtc2VhcmNoLWJ1dHRvblwifX1cbiAgICAgICAgICAgIG9uUHJlc3M9e3RoaXMudHQub25FZGl0UHJlc3NlZH1cbiAgICAgICAgICAgIHN0eWxlPXt0aGlzLmVkaXRTZWFyY2hCdXR0b25TdHlsZSB8fD0ge1xuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgd2lkdGg6IDI1LFxuICAgICAgICAgICAgICBoZWlnaHQ6IDI1LFxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IFwiI2ZmZlwiLFxuICAgICAgICAgICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICMwMDdiZmZcIixcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiA1LFxuICAgICAgICAgICAgICBjb2xvcjogXCIjMDA3YmZmXCJcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRleHQ+XG4gICAgICAgICAgICAgICYjeDI3MEU7XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgICAgZGF0YVNldD17dGhpcy5kZWxldGVTZWFyY2hCdXR0b25EYXRhU2V0IHx8PSB7Y2xhc3M6IFwiZGVsZXRlLXNlYXJjaC1idXR0b25cIn19XG4gICAgICAgICAgICBvblByZXNzPXt0aGlzLnR0Lm9uRGVsZXRlUHJlc3NlZH1cbiAgICAgICAgICAgIHN0eWxlPXt0aGlzLmRlbGV0ZVNlYXJjaEJ1dHRvblN0eWxlIHx8PSB7XG4gICAgICAgICAgICAgIGFsaWduSXRlbXM6IFwiY2VudGVyXCIsXG4gICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiA1LFxuICAgICAgICAgICAgICB3aWR0aDogMjUsXG4gICAgICAgICAgICAgIGhlaWdodDogMjUsXG4gICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmXCIsXG4gICAgICAgICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgI2RjMzU0NVwiLFxuICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6IDUsXG4gICAgICAgICAgICAgIGNvbG9yOiBcIiNkYzM1NDVcIlxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgICAgJiN4MjcxNTtcbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIG9uRGVsZXRlUHJlc3NlZCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWNvbmZpcm0oXCJBcmUgeW91IHN1cmU/XCIpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCB7c2VhcmNofSA9IHRoaXMucHJvcHNcblxuICAgIGF3YWl0IHNlYXJjaC5kZXN0cm95KClcbiAgICB0aGlzLnByb3BzLm9uRGVsZXRlZCh7c2VhcmNofSlcbiAgfVxuXG4gIG9uRWRpdFByZXNzZWQgPSAoKSA9PiB0aGlzLnByb3BzLm9uRWRpdFByZXNzZWQoe3NlYXJjaDogdGhpcy5wcm9wcy5zZWFyY2h9KVxuICBvblNlYXJjaENsaWNrZWQgPSAoKSA9PiB0aGlzLnByb3BzLm9uQ2xpY2soe3NlYXJjaDogdGhpcy5wcm9wcy5zZWFyY2h9KVxufSkpXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJUYWJsZUZpbHRlcnNMb2FkU2VhcmNoTW9kYWwgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc2V0dXAoKSB7XG4gICAgY29uc3Qge3R9ID0gdXNlSTE4bih7bmFtZXNwYWNlOiBcImpzLmFwaV9tYWtlci50YWJsZS5maWx0ZXJzLmxvYWRfc2VhcmNoX21vZGFsXCJ9KVxuXG4gICAgdGhpcy51c2VTdGF0ZXMoe1xuICAgICAgZWRpdFNlYXJjaDogdW5kZWZpbmVkLFxuICAgICAgc2VhcmNoZXM6IHVuZGVmaW5lZFxuICAgIH0pXG4gICAgdGhpcy5zZXRJbnN0YW5jZSh7dH0pXG5cbiAgICB1c2VNZW1vKCgpID0+IHtcbiAgICAgIHRoaXMubG9hZFNlYXJjaGVzKClcbiAgICB9LCBbXSlcbiAgfVxuXG4gIGxvYWRTZWFyY2hlcyA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7Y3VycmVudFVzZXJ9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHVzZXJUeXBlID0gZGlnZyhjdXJyZW50VXNlci5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcbiAgICBjb25zdCBzZWFyY2hlcyA9IGF3YWl0IFRhYmxlU2VhcmNoXG4gICAgICAucmFuc2Fjayh7dXNlcl9pZF9lcTogY3VycmVudFVzZXIuaWQoKSwgdXNlcl90eXBlX2VxOiB1c2VyVHlwZX0pXG4gICAgICAudG9BcnJheSgpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtzZWFyY2hlc30pXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge3R9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtjbGFzc05hbWUsIGN1cnJlbnRVc2VyLCBtb2RlbENsYXNzLCBvbkVkaXRTZWFyY2hQcmVzc2VkLCBvblJlcXVlc3RDbG9zZSwgcXVlcnlTZWFyY2hOYW1lLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IE1vZGFsID0gYXBpTWFrZXJDb25maWcuZ2V0TW9kYWwoKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNb2RhbCBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJhcGktbWFrZXItLXRhYmxlLS1maWx0ZXJzLS1sb2FkLXNlYXJjaC1tb2RhbFwiLCBjbGFzc05hbWUpfSBvblJlcXVlc3RDbG9zZT17b25SZXF1ZXN0Q2xvc2V9IHsuLi5yZXN0UHJvcHN9PlxuICAgICAgICA8Vmlldz5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHt0KFwiLmNob29zZV9hX3NlYXJjaFwiLCB7ZGVmYXVsdFZhbHVlOiBcIkNob29zZSBhIHNlYXJjaFwifSl9XG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICA8L1ZpZXc+XG4gICAgICAgIHt0aGlzLnN0YXRlLnNlYXJjaGVzPy5tYXAoKHNlYXJjaCkgPT5cbiAgICAgICAgICA8U2VhcmNoTGlua1xuICAgICAgICAgICAga2V5PXtzZWFyY2guaWQoKX1cbiAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMudHQub25TZWFyY2hDbGlja2VkfVxuICAgICAgICAgICAgb25EZWxldGVkPXt0aGlzLnR0Lm9uU2VhcmNoRGVsZXRlZH1cbiAgICAgICAgICAgIG9uRWRpdFByZXNzZWQ9e29uRWRpdFNlYXJjaFByZXNzZWR9XG4gICAgICAgICAgICBzZWFyY2g9e3NlYXJjaH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgPC9Nb2RhbD5cbiAgICApXG4gIH1cblxuICBvblNlYXJjaENsaWNrZWQgPSAoe3NlYXJjaH0pID0+IHtcbiAgICBjb25zdCB7b25SZXF1ZXN0Q2xvc2UsIHF1ZXJ5U2VhcmNoTmFtZX0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSBzZWFyY2gucXVlcnlQYXJhbXMoKVxuICAgIGNvbnN0IG5ld1BhcmFtcyA9IHt9XG5cbiAgICBuZXdQYXJhbXNbcXVlcnlTZWFyY2hOYW1lXSA9IHF1ZXJ5UGFyYW1zLm1hcCgocXVlcnlQYXJhbSkgPT4gSlNPTi5zdHJpbmdpZnkocXVlcnlQYXJhbSkpXG5cbiAgICBQYXJhbXMuY2hhbmdlUGFyYW1zKG5ld1BhcmFtcylcblxuICAgIG9uUmVxdWVzdENsb3NlKClcbiAgfVxuXG4gIG9uU2VhcmNoRGVsZXRlZCA9ICh7c2VhcmNofSkgPT4ge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgc2VhcmNoZXM6IHRoaXMuc3RhdGUuc2VhcmNoZXMuZmlsdGVyKChleGlzdGluZ1NlYXJjaCkgPT4gZXhpc3RpbmdTZWFyY2guaWQoKSAhPSBzZWFyY2guaWQoKSlcbiAgICB9KVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU9BLEtBQUssSUFBR0MsT0FBTyxRQUFPLE9BQU87QUFDcEMsU0FBUUMsU0FBUyxFQUFFQyxJQUFJLFFBQU8sY0FBYztBQUM1QyxPQUFPQyxjQUFjLE1BQU0sa0NBQWtDO0FBQzdELE9BQU9DLGFBQWEsTUFBTSxzQkFBc0I7QUFDaEQsT0FBT0MsVUFBVSxNQUFNLFlBQVk7QUFDbkMsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxTQUFRQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BFLE9BQU9DLE1BQU0sTUFBTSxjQUFjO0FBQ2pDLFNBQVFDLFdBQVcsUUFBTyxRQUFRO0FBQ2xDLE9BQU9DLElBQUksTUFBTSxrQkFBa0I7QUFDbkMsT0FBT0MsT0FBTyxNQUFNLCtCQUErQjtBQUVuRCxNQUFNQyxVQUFVLEdBQUdOLElBQUksQ0FBQ0MsY0FBYyxDQUFDLE1BQU1LLFVBQVUsU0FBU1QsYUFBYSxDQUFDO0VBQzVFVSxNQUFNQSxDQUFBLEVBQUc7SUFDUCxNQUFNO01BQUNDO0lBQU0sQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztJQUUzQixvQkFDRWpCLEtBQUEsQ0FBQWtCLGFBQUEsQ0FBQ2YsSUFBSTtNQUNIZ0IsT0FBTyxFQUFFLElBQUksQ0FBQ0MsS0FBSyxDQUFDLGVBQWUsRUFBRTtRQUFDQyxLQUFLLEVBQUUsWUFBWTtRQUFFQyxRQUFRLEVBQUVOLE1BQU0sQ0FBQ08sRUFBRSxDQUFDO01BQUMsQ0FBQyxFQUFFLENBQUNQLE1BQU0sQ0FBQ08sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFFO01BQ2xHQyxLQUFLLEVBQUUsSUFBSSxDQUFDQyxhQUFhLEtBQUs7UUFBQ0MsYUFBYSxFQUFF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
@@ -5,14 +5,11 @@ import * as inflection from "inflection";
5
5
  import Logger from "../logger";
6
6
  import { ReadersWriterLock } from "epic-locks";
7
7
  import { serialize as objectToFormData } from "object-to-formdata";
8
- import * as models from "models";
8
+ import { TableSetting } from "models";
9
9
  import { v4 as uuidv4 } from "uuid";
10
10
  const logger = new Logger({
11
11
  name: "ApiMaker / TableSettings"
12
12
  });
13
- const {
14
- TableSetting
15
- } = models;
16
13
 
17
14
  // Have a lock for each unique table identifier
18
15
  const tableSettingsLocks = {};
@@ -216,4 +213,4 @@ export default class ApiMakerTableSettings {
216
213
  return tableSetting;
217
214
  };
218
215
  }
219
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2x1bW5JZGVudGlmaWVyIiwiY29sdW1uVmlzaWJsZSIsImRpZ2ciLCJpbmZsZWN0aW9uIiwiTG9nZ2VyIiwiUmVhZGVyc1dyaXRlckxvY2siLCJzZXJpYWxpemUiLCJvYmplY3RUb0Zvcm1EYXRhIiwibW9kZWxzIiwidjQiLCJ1dWlkdjQiLCJsb2dnZXIiLCJuYW1lIiwiVGFibGVTZXR0aW5nIiwidGFibGVTZXR0aW5nc0xvY2tzIiwiQXBpTWFrZXJUYWJsZVNldHRpbmdzIiwiY29uc3RydWN0b3IiLCJ0YWJsZSIsInNldFRhYmxlU2V0dGluZ3NMb2NrIiwiaWRlbnRpZmllciIsInRhYmxlU2V0dGluZ3NMb2NrIiwiY29sdW1ucyIsImN1cnJlbnRVc2VyIiwicHJlcGFyZWRDb2x1bW5zIiwidGFibGVTZXR0aW5nIiwiY29sdW1uc0FzQXJyYXkiLCJvcmRlcmVkIiwib3JkZXJlZFRhYmxlU2V0dGluZ0NvbHVtbnMiLCJyZXN1bHQiLCJwcmVsb2FkIiwidGFibGVTZXR0aW5nQ29sdW1uIiwiY29sdW1uIiwiZmluZCIsInB1c2giLCJwYXRoIiwibWFwIiwicGF0aFBhcnQiLCJ1bmRlcnNjb3JlIiwiam9pbiIsImluY2x1ZGVzIiwibG9hZGVkIiwic29ydCIsInRhYmxlU2V0dGluZ0NvbHVtbjEiLCJ0YWJsZVNldHRpbmdDb2x1bW4yIiwicG9zaXRpb24iLCJsb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MiLCJ3cml0ZSIsImxvYWRUYWJsZVNldHRpbmciLCJ1cGRhdGVUYWJsZVNldHRpbmciLCJjcmVhdGVJbml0aWFsVGFibGVTZXR0aW5nIiwiRXJyb3IiLCJyYW5zYWNrIiwiaWRlbnRpZmllcl9lcSIsInVzZXJfaWRfZXEiLCJjdXJyZW50VXNlcklkT3JGYWxsYmFjayIsInVzZXJfdHlwZV9lcSIsImN1cnJlbnRVc2VyVHlwZU9yRmFsbGJhY2siLCJmaXJzdCIsImlkIiwiYW5vbnltb3VzZVVzZXJJZCIsIm1vZGVsQ2xhc3NEYXRhIiwidmFyaWFibGVOYW1lIiwibG9jYWxTdG9yYWdlIiwiZ2VuZXJhdGVkSWQiLCJ0YWJsZVNldHRpbmdEYXRhIiwidXNlcl9pZCIsInVzZXJfdHlwZSIsImNvbHVtbnNfYXR0cmlidXRlcyIsImNvbHVtbktleSIsImNvbHVtbkRhdGEiLCJjb2x1bW5TYXZlRGF0YSIsInRhYmxlU2V0dGluZ0Zvcm1EYXRhIiwidGFibGVfc2V0dGluZyIsInNhdmVSYXciLCJyZWxvYWRlZFRhYmxlU2V0dGluZyIsImF0dHJpYnV0ZV9uYW1lIiwiYXR0cmlidXRlIiwic29ydF9rZXkiLCJzb3J0S2V5IiwidmlzaWJsZSIsImNoYW5nZWRBdHRyaWJ1dGVzTGlzdCIsImNvbHVtbnNEYXRhIiwiY29sdW1uc0tleUNvdW50IiwiY2hhbmdlZCIsImxlbmd0aCIsImRlYnVnIiwibGFiZWwiLCJjb2x1bW5DaGFuZ2VkIiwiY2hhbmdlZEF0dHJpYnV0ZSIsImNvbHVtbkF0dHJpYnV0ZU5hbWUiLCJvbGRBdHRyaWJ1dGVWYWx1ZSIsIm5ld0F0dHJpYnV0ZVZhbHVlIiwiY29sdW1uUGF0aEFzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsInRhYmxlU2V0dGluZ0NvbHVtblBhdGhBc1N0cmluZyIsImF0dHJpYnV0ZU5hbWUiLCJfZGVzdHJveSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWJsZS90YWJsZS1zZXR0aW5ncy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sdW1uSWRlbnRpZmllciBmcm9tIFwiLi9jb2x1bW4taWRlbnRpZmllclwiXG5pbXBvcnQgY29sdW1uVmlzaWJsZSBmcm9tIFwiLi9jb2x1bW4tdmlzaWJsZVwiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9sb2dnZXJcIlxuaW1wb3J0IHtSZWFkZXJzV3JpdGVyTG9ja30gZnJvbSBcImVwaWMtbG9ja3NcIlxuaW1wb3J0IHtzZXJpYWxpemUgYXMgb2JqZWN0VG9Gb3JtRGF0YX0gZnJvbSBcIm9iamVjdC10by1mb3JtZGF0YVwiXG5pbXBvcnQgKiBhcyBtb2RlbHMgZnJvbSBcIm1vZGVsc1wiXG5pbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSBcInV1aWRcIlxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHtuYW1lOiBcIkFwaU1ha2VyIC8gVGFibGVTZXR0aW5nc1wifSlcbmNvbnN0IHtUYWJsZVNldHRpbmd9ID0gbW9kZWxzXG5cbi8vIEhhdmUgYSBsb2NrIGZvciBlYWNoIHVuaXF1ZSB0YWJsZSBpZGVudGlmaWVyXG5jb25zdCB0YWJsZVNldHRpbmdzTG9ja3MgPSB7fVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlclRhYmxlU2V0dGluZ3Mge1xuICBjb25zdHJ1Y3Rvcih7dGFibGV9KSB7XG4gICAgdGhpcy50YWJsZSA9IHRhYmxlXG4gICAgdGhpcy5zZXRUYWJsZVNldHRpbmdzTG9jaygpXG4gIH1cblxuICBzZXRUYWJsZVNldHRpbmdzTG9jaygpIHtcbiAgICBjb25zdCBpZGVudGlmaWVyID0gdGhpcy5pZGVudGlmaWVyKClcblxuICAgIGlmICghKGlkZW50aWZpZXIgaW4gdGFibGVTZXR0aW5nc0xvY2tzKSkge1xuICAgICAgdGFibGVTZXR0aW5nc0xvY2tzW2lkZW50aWZpZXJdID0gbmV3IFJlYWRlcnNXcml0ZXJMb2NrKClcbiAgICB9XG5cbiAgICB0aGlzLnRhYmxlU2V0dGluZ3NMb2NrID0gZGlnZyh0YWJsZVNldHRpbmdzTG9ja3MsIGlkZW50aWZpZXIpXG4gIH1cblxuICBjb2x1bW5zID0gKCkgPT4gZGlnZyh0aGlzLCBcInRhYmxlXCIsIFwiY29sdW1uc0FzQXJyYXlcIikoKVxuICBjdXJyZW50VXNlciA9ICgpID0+IGRpZ2codGhpcywgXCJ0YWJsZVwiLCBcInByb3BzXCIsIFwiY3VycmVudFVzZXJcIilcbiAgaWRlbnRpZmllciA9ICgpID0+IGRpZ2codGhpcywgXCJ0YWJsZVwiLCBcInN0YXRlXCIsIFwiaWRlbnRpZmllclwiKVxuXG4gIHByZXBhcmVkQ29sdW1ucyA9ICh0YWJsZVNldHRpbmcpID0+IHtcbiAgICBjb25zdCBjb2x1bW5zID0gdGhpcy50YWJsZS5jb2x1bW5zQXNBcnJheSgpXG4gICAgY29uc3Qgb3JkZXJlZCA9IHRoaXMub3JkZXJlZFRhYmxlU2V0dGluZ0NvbHVtbnModGFibGVTZXR0aW5nKVxuICAgIGNvbnN0IHJlc3VsdCA9IHtcbiAgICAgIGNvbHVtbnM6IFtdLFxuICAgICAgcHJlbG9hZDogW11cbiAgICB9XG5cbiAgICBpZiAoIW9yZGVyZWQpIHJldHVyblxuXG4gICAgZm9yIChjb25zdCB0YWJsZVNldHRpbmdDb2x1bW4gb2Ygb3JkZXJlZCkge1xuICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKChjb2x1bW4pID0+IGNvbHVtbklkZW50aWZpZXIoY29sdW1uKSA9PSB0YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpKVxuXG4gICAgICByZXN1bHQuY29sdW1ucy5wdXNoKHtjb2x1bW4sIHRhYmxlU2V0dGluZ0NvbHVtbn0pXG5cbiAgICAgIC8vIEFkZCBuZWVkZWQgcHJlbG9hZHMgaWYgY29sdW1uIGlzIHZpc2libGVcbiAgICAgIGlmIChjb2x1bW5WaXNpYmxlKGNvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1uKSkge1xuICAgICAgICBpZiAoY29sdW1uLnBhdGgpIHtcbiAgICAgICAgICBjb25zdCBwcmVsb2FkID0gY29sdW1uLnBhdGgubWFwKChwYXRoUGFydCkgPT4gaW5mbGVjdGlvbi51bmRlcnNjb3JlKHBhdGhQYXJ0KSkuam9pbihcIi5cIilcblxuICAgICAgICAgIGlmICghcmVzdWx0LnByZWxvYWQuaW5jbHVkZXMocHJlbG9hZCkpIHJlc3VsdC5wcmVsb2FkLnB1c2gocHJlbG9hZClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIG9yZGVyZWRUYWJsZVNldHRpbmdDb2x1bW5zID0gKHRhYmxlU2V0dGluZykgPT4ge1xuICAgIHJldHVybiB0YWJsZVNldHRpbmdcbiAgICAgIC5jb2x1bW5zKClcbiAgICAgIC5sb2FkZWQoKVxuICAgICAgLnNvcnQoKHRhYmxlU2V0dGluZ0NvbHVtbjEsIHRhYmxlU2V0dGluZ0NvbHVtbjIpID0+IHRhYmxlU2V0dGluZ0NvbHVtbjEucG9zaXRpb24oKSAtIHRhYmxlU2V0dGluZ0NvbHVtbjIucG9zaXRpb24oKSlcbiAgfVxuXG4gIGxvYWRFeGlzdGluZ09yQ3JlYXRlVGFibGVTZXR0aW5ncyA9IGFzeW5jICgpID0+IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy50YWJsZVNldHRpbmdzTG9jay53cml0ZShhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdGFibGVTZXR0aW5nID0gYXdhaXQgdGhpcy5sb2FkVGFibGVTZXR0aW5nKClcblxuICAgICAgaWYgKHRhYmxlU2V0dGluZykge1xuICAgICAgICB0YWJsZVNldHRpbmcgPSBhd2FpdCB0aGlzLnVwZGF0ZVRhYmxlU2V0dGluZyh0YWJsZVNldHRpbmcpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWJsZVNldHRpbmcgPSBhd2FpdCB0aGlzLmNyZWF0ZUluaXRpYWxUYWJsZVNldHRpbmcoKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGFibGVTZXR0aW5nXG4gICAgfSlcbiAgfVxuXG4gIGxvYWRUYWJsZVNldHRpbmcgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFUYWJsZVNldHRpbmcpIHRocm93IG5ldyBFcnJvcihcIlRhYmxlU2V0dGluZyBtb2RlbCBpc24ndCBnbG9iYWxseSBhdmFpbGFibGVcIilcblxuICAgIGNvbnN0IHRhYmxlU2V0dGluZyA9IGF3YWl0IFRhYmxlU2V0dGluZ1xuICAgICAgLnJhbnNhY2soe1xuICAgICAgICBpZGVudGlmaWVyX2VxOiB0aGlzLmlkZW50aWZpZXIoKSxcbiAgICAgICAgdXNlcl9pZF9lcTogdGhpcy5jdXJyZW50VXNlcklkT3JGYWxsYmFjaygpLFxuICAgICAgICB1c2VyX3R5cGVfZXE6IHRoaXMuY3VycmVudFVzZXJUeXBlT3JGYWxsYmFjaygpXG4gICAgICB9KVxuICAgICAgLnByZWxvYWQoXCJjb2x1bW5zXCIpXG4gICAgICAuZmlyc3QoKVxuXG4gICAgcmV0dXJuIHRhYmxlU2V0dGluZ1xuICB9XG5cbiAgY3VycmVudFVzZXJJZE9yRmFsbGJhY2soKSB7XG4gICAgY29uc3QgY3VycmVudFVzZXIgPSB0aGlzLmN1cnJlbnRVc2VyKClcblxuICAgIGlmIChjdXJyZW50VXNlcikgcmV0dXJuIGN1cnJlbnRVc2VyLmlkKClcblxuICAgIHJldHVybiB0aGlzLmFub255bW91c2VVc2VySWQoKVxuICB9XG5cbiAgY3VycmVudFVzZXJUeXBlT3JGYWxsYmFjaygpIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXIoKVxuXG4gICAgaWYgKGN1cnJlbnRVc2VyKSByZXR1cm4gZGlnZyhjdXJyZW50VXNlci5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBhbm9ueW1vdXNlVXNlcklkKCkge1xuICAgIGNvbnN0IHZhcmlhYmxlTmFtZSA9IGBBcGlNYWtlclRhYmxlQW5vbnltb3VzVXNlcklkLSR7dGhpcy5pZGVudGlmaWVyKCl9YFxuXG4gICAgaWYgKCEodmFyaWFibGVOYW1lIGluIGxvY2FsU3RvcmFnZSkpIHtcbiAgICAgIGNvbnN0IGdlbmVyYXRlZElkID0gdXVpZHY0KClcblxuICAgICAgbG9jYWxTdG9yYWdlW3ZhcmlhYmxlTmFtZV0gPSBnZW5lcmF0ZWRJZFxuICAgIH1cblxuICAgIHJldHVybiBkaWdnKGxvY2FsU3RvcmFnZSwgdmFyaWFibGVOYW1lKVxuICB9XG5cbiAgY3JlYXRlSW5pdGlhbFRhYmxlU2V0dGluZyA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB0YWJsZVNldHRpbmdEYXRhID0ge1xuICAgICAgaWRlbnRpZmllcjogdGhpcy5pZGVudGlmaWVyKCksXG4gICAgICB1c2VyX2lkOiB0aGlzLmN1cnJlbnRVc2VySWRPckZhbGxiYWNrKCksXG4gICAgICB1c2VyX3R5cGU6IHRoaXMuY3VycmVudFVzZXJUeXBlT3JGYWxsYmFjaygpLFxuICAgICAgY29sdW1uc19hdHRyaWJ1dGVzOiB7fVxuICAgIH1cblxuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMoKVxuXG4gICAgZm9yIChjb25zdCBjb2x1bW5LZXkgaW4gY29sdW1ucykge1xuICAgICAgY29uc3QgY29sdW1uID0gZGlnZyhjb2x1bW5zLCBjb2x1bW5LZXkpXG4gICAgICBjb25zdCBpZGVudGlmaWVyID0gY29sdW1uSWRlbnRpZmllcihjb2x1bW4pXG4gICAgICBjb25zdCBjb2x1bW5EYXRhID0gdGhpcy5jb2x1bW5TYXZlRGF0YShjb2x1bW4sIHtpZGVudGlmaWVyLCBwb3NpdGlvbjogY29sdW1uS2V5fSlcblxuICAgICAgdGFibGVTZXR0aW5nRGF0YS5jb2x1bW5zX2F0dHJpYnV0ZXNbY29sdW1uS2V5XSA9IGNvbHVtbkRhdGFcbiAgICB9XG5cbiAgICBjb25zdCB0YWJsZVNldHRpbmcgPSBuZXcgVGFibGVTZXR0aW5nKClcbiAgICBjb25zdCB0YWJsZVNldHRpbmdGb3JtRGF0YSA9IG9iamVjdFRvRm9ybURhdGEoe3RhYmxlX3NldHRpbmc6IHRhYmxlU2V0dGluZ0RhdGF9KVxuXG4gICAgYXdhaXQgdGFibGVTZXR0aW5nLnNhdmVSYXcodGFibGVTZXR0aW5nRm9ybURhdGEpXG5cbiAgICBjb25zdCByZWxvYWRlZFRhYmxlU2V0dGluZyA9IGF3YWl0IHRoaXMubG9hZFRhYmxlU2V0dGluZygpXG5cbiAgICByZXR1cm4gcmVsb2FkZWRUYWJsZVNldHRpbmdcbiAgfVxuXG4gIGNvbHVtblNhdmVEYXRhKGNvbHVtbiwge2lkZW50aWZpZXIsIHBvc2l0aW9ufSkge1xuICAgIHJldHVybiB7XG4gICAgICBhdHRyaWJ1dGVfbmFtZTogY29sdW1uLmF0dHJpYnV0ZSxcbiAgICAgIGlkZW50aWZpZXIsXG4gICAgICBwYXRoOiBjb2x1bW4ucGF0aCxcbiAgICAgIHBvc2l0aW9uLFxuICAgICAgc29ydF9rZXk6IGNvbHVtbi5zb3J0S2V5LFxuICAgICAgdmlzaWJsZTogbnVsbFxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZVRhYmxlU2V0dGluZyA9IGFzeW5jICh0YWJsZVNldHRpbmcpID0+IHtcbiAgICBjb25zdCBjaGFuZ2VkQXR0cmlidXRlc0xpc3QgPSBbXCJhdHRyaWJ1dGVOYW1lXCIsIFwic29ydEtleVwiXVxuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLmNvbHVtbnMoKVxuICAgIGNvbnN0IGNvbHVtbnNEYXRhID0ge31cbiAgICBjb25zdCB0YWJsZVNldHRpbmdEYXRhID0ge2NvbHVtbnNfYXR0cmlidXRlczogY29sdW1uc0RhdGF9XG4gICAgbGV0IGNvbHVtbnNLZXlDb3VudCA9IDBcbiAgICBsZXQgY2hhbmdlZCA9IGZhbHNlXG5cbiAgICAvLyBBZGQgbWlzc2luZyBjb2x1bW5zXG4gICAgZm9yIChjb25zdCBjb2x1bW4gb2YgY29sdW1ucykge1xuICAgICAgY29uc3QgaWRlbnRpZmllciA9IGNvbHVtbklkZW50aWZpZXIoY29sdW1uKVxuICAgICAgY29uc3QgdGFibGVTZXR0aW5nQ29sdW1uID0gdGFibGVTZXR0aW5nLmNvbHVtbnMoKS5sb2FkZWQoKS5maW5kKCh0YWJsZVNldHRpbmdDb2x1bW4pID0+IHRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCkgPT0gaWRlbnRpZmllcilcblxuICAgICAgaWYgKCF0YWJsZVNldHRpbmdDb2x1bW4pIHtcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0gKytjb2x1bW5zS2V5Q291bnRcblxuICAgICAgICBjb2x1bW5zRGF0YVtjb2x1bW5LZXldID0gdGhpcy5jb2x1bW5TYXZlRGF0YShcbiAgICAgICAgICBjb2x1bW4sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWRlbnRpZmllcixcbiAgICAgICAgICAgIHBvc2l0aW9uOiB0YWJsZVNldHRpbmcuY29sdW1ucygpLmxvYWRlZCgpLmxlbmd0aCArIGNvbHVtbktleVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuXG4gICAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgQ2hhbmdlZCBiZWNhdXNlIG9mIG5ldyBjb2x1bW46ICR7Y29sdW1uLmxhYmVsfWApXG4gICAgICAgIGNoYW5nZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCB0YWJsZVNldHRpbmdDb2x1bW4gb2YgdGFibGVTZXR0aW5nLmNvbHVtbnMoKS5sb2FkZWQoKSkge1xuICAgICAgY29uc3QgY29sdW1uID0gY29sdW1ucy5maW5kKChjb2x1bW4pID0+IGNvbHVtbklkZW50aWZpZXIoY29sdW1uKSA9PSB0YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpKVxuXG4gICAgICBpZiAoY29sdW1uKSB7XG4gICAgICAgIC8vIFRPRE86IFVwZGF0ZSBjb2x1bW4gaWYgY2hhbmdlZFxuICAgICAgICBsZXQgY29sdW1uQ2hhbmdlZCA9IGZhbHNlXG5cbiAgICAgICAgZm9yIChjb25zdCBjaGFuZ2VkQXR0cmlidXRlIG9mIGNoYW5nZWRBdHRyaWJ1dGVzTGlzdCkge1xuICAgICAgICAgIGxldCBjb2x1bW5BdHRyaWJ1dGVOYW1lXG5cbiAgICAgICAgICBpZiAoY2hhbmdlZEF0dHJpYnV0ZSA9PSBcImF0dHJpYnV0ZU5hbWVcIikge1xuICAgICAgICAgICAgY29sdW1uQXR0cmlidXRlTmFtZSA9IFwiYXR0cmlidXRlXCJcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sdW1uQXR0cmlidXRlTmFtZSA9IGNoYW5nZWRBdHRyaWJ1dGVcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBvbGRBdHRyaWJ1dGVWYWx1ZSA9IHRhYmxlU2V0dGluZ0NvbHVtbltjaGFuZ2VkQXR0cmlidXRlXSgpXG4gICAgICAgICAgY29uc3QgbmV3QXR0cmlidXRlVmFsdWUgPSBjb2x1bW5bY29sdW1uQXR0cmlidXRlTmFtZV1cblxuICAgICAgICAgIGlmIChvbGRBdHRyaWJ1dGVWYWx1ZSAhPSBuZXdBdHRyaWJ1dGVWYWx1ZSkge1xuICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCgpID0+IGAke2NoYW5nZWRBdHRyaWJ1dGV9IGNoYW5nZWQgZnJvbSAke29sZEF0dHJpYnV0ZVZhbHVlfSB0byAke25ld0F0dHJpYnV0ZVZhbHVlfSBvbiBjb2x1bW46ICR7Y29sdW1uLmxhYmVsfWApXG4gICAgICAgICAgICBjb2x1bW5DaGFuZ2VkID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbHVtblBhdGhBc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGNvbHVtbi5wYXRoKVxuICAgICAgICBjb25zdCB0YWJsZVNldHRpbmdDb2x1bW5QYXRoQXNTdHJpbmcgPSB0YWJsZVNldHRpbmdDb2x1bW4ucGF0aCgpXG5cbiAgICAgICAgaWYgKGNvbHVtblBhdGhBc1N0cmluZyAhPSB0YWJsZVNldHRpbmdDb2x1bW5QYXRoQXNTdHJpbmcpIHtcbiAgICAgICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFBhdGggY2hhbmdlZCBvbiAke2NvbHVtbi5sYWJlbH0gZnJvbSAke2NvbHVtblBhdGhBc1N0cmluZ30gdG8gJHt0YWJsZVNldHRpbmdDb2x1bW5QYXRoQXNTdHJpbmd9YClcbiAgICAgICAgICBjb2x1bW5DaGFuZ2VkID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNvbHVtbkNoYW5nZWQpIHtcbiAgICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSArK2NvbHVtbnNLZXlDb3VudFxuXG4gICAgICAgICAgY2hhbmdlZCA9IHRydWVcbiAgICAgICAgICBjb2x1bW5zRGF0YVtjb2x1bW5LZXldID0ge1xuICAgICAgICAgICAgYXR0cmlidXRlX25hbWU6IGNvbHVtbi5hdHRyaWJ1dGVOYW1lLFxuICAgICAgICAgICAgaWQ6IHRhYmxlU2V0dGluZ0NvbHVtbi5pZCgpLFxuICAgICAgICAgICAgcGF0aDogY29sdW1uLnBhdGgsXG4gICAgICAgICAgICBzb3J0X2tleTogY29sdW1uLnNvcnRLZXlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZWQgc2F2ZWQgY29sdW1ucyBubyBsb25nZXIgZm91bmRcbiAgICAgICAgY29uc3QgY29sdW1uS2V5ID0gKytjb2x1bW5zS2V5Q291bnRcblxuICAgICAgICBjb2x1bW5zRGF0YVtjb2x1bW5LZXldID0ge1xuICAgICAgICAgIGlkOiB0YWJsZVNldHRpbmdDb2x1bW4uaWQoKSxcbiAgICAgICAgICBfZGVzdHJveTogdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIGNoYW5nZWQgPSB0cnVlXG5cbiAgICAgICAgbG9nZ2VyLmRlYnVnKCgpID0+IGBDb2x1bW4gZ290IHJlbW92ZWQ6ICR7dGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKX1gKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjaGFuZ2VkKSB7XG4gICAgICBjb25zdCB0YWJsZVNldHRpbmdGb3JtRGF0YSA9IG9iamVjdFRvRm9ybURhdGEoe3RhYmxlX3NldHRpbmc6IHRhYmxlU2V0dGluZ0RhdGF9KVxuXG4gICAgICBhd2FpdCB0YWJsZVNldHRpbmcuc2F2ZVJhdyh0YWJsZVNldHRpbmdGb3JtRGF0YSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGFibGVTZXR0aW5nXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsZ0JBQWdCLE1BQU0scUJBQXFCO0FBQ2xELE9BQU9DLGFBQWEsTUFBTSxrQkFBa0I7QUFDNUMsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxNQUFNLE1BQU0sV0FBVztBQUM5QixTQUFRQyxpQkFBaUIsUUFBTyxZQUFZO0FBQzVDLFNBQVFDLFNBQVMsSUFBSUMsZ0JBQWdCLFFBQU8sb0JBQW9CO0FBQ2hFLE9BQU8sS0FBS0MsTUFBTSxN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
216
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjb2x1bW5JZGVudGlmaWVyIiwiY29sdW1uVmlzaWJsZSIsImRpZ2ciLCJpbmZsZWN0aW9uIiwiTG9nZ2VyIiwiUmVhZGVyc1dyaXRlckxvY2siLCJzZXJpYWxpemUiLCJvYmplY3RUb0Zvcm1EYXRhIiwiVGFibGVTZXR0aW5nIiwidjQiLCJ1dWlkdjQiLCJsb2dnZXIiLCJuYW1lIiwidGFibGVTZXR0aW5nc0xvY2tzIiwiQXBpTWFrZXJUYWJsZVNldHRpbmdzIiwiY29uc3RydWN0b3IiLCJ0YWJsZSIsInNldFRhYmxlU2V0dGluZ3NMb2NrIiwiaWRlbnRpZmllciIsInRhYmxlU2V0dGluZ3NMb2NrIiwiY29sdW1ucyIsImN1cnJlbnRVc2VyIiwicHJlcGFyZWRDb2x1bW5zIiwidGFibGVTZXR0aW5nIiwiY29sdW1uc0FzQXJyYXkiLCJvcmRlcmVkIiwib3JkZXJlZFRhYmxlU2V0dGluZ0NvbHVtbnMiLCJyZXN1bHQiLCJwcmVsb2FkIiwidGFibGVTZXR0aW5nQ29sdW1uIiwiY29sdW1uIiwiZmluZCIsInB1c2giLCJwYXRoIiwibWFwIiwicGF0aFBhcnQiLCJ1bmRlcnNjb3JlIiwiam9pbiIsImluY2x1ZGVzIiwibG9hZGVkIiwic29ydCIsInRhYmxlU2V0dGluZ0NvbHVtbjEiLCJ0YWJsZVNldHRpbmdDb2x1bW4yIiwicG9zaXRpb24iLCJsb2FkRXhpc3RpbmdPckNyZWF0ZVRhYmxlU2V0dGluZ3MiLCJ3cml0ZSIsImxvYWRUYWJsZVNldHRpbmciLCJ1cGRhdGVUYWJsZVNldHRpbmciLCJjcmVhdGVJbml0aWFsVGFibGVTZXR0aW5nIiwiRXJyb3IiLCJyYW5zYWNrIiwiaWRlbnRpZmllcl9lcSIsInVzZXJfaWRfZXEiLCJjdXJyZW50VXNlcklkT3JGYWxsYmFjayIsInVzZXJfdHlwZV9lcSIsImN1cnJlbnRVc2VyVHlwZU9yRmFsbGJhY2siLCJmaXJzdCIsImlkIiwiYW5vbnltb3VzZVVzZXJJZCIsIm1vZGVsQ2xhc3NEYXRhIiwidmFyaWFibGVOYW1lIiwibG9jYWxTdG9yYWdlIiwiZ2VuZXJhdGVkSWQiLCJ0YWJsZVNldHRpbmdEYXRhIiwidXNlcl9pZCIsInVzZXJfdHlwZSIsImNvbHVtbnNfYXR0cmlidXRlcyIsImNvbHVtbktleSIsImNvbHVtbkRhdGEiLCJjb2x1bW5TYXZlRGF0YSIsInRhYmxlU2V0dGluZ0Zvcm1EYXRhIiwidGFibGVfc2V0dGluZyIsInNhdmVSYXciLCJyZWxvYWRlZFRhYmxlU2V0dGluZyIsImF0dHJpYnV0ZV9uYW1lIiwiYXR0cmlidXRlIiwic29ydF9rZXkiLCJzb3J0S2V5IiwidmlzaWJsZSIsImNoYW5nZWRBdHRyaWJ1dGVzTGlzdCIsImNvbHVtbnNEYXRhIiwiY29sdW1uc0tleUNvdW50IiwiY2hhbmdlZCIsImxlbmd0aCIsImRlYnVnIiwibGFiZWwiLCJjb2x1bW5DaGFuZ2VkIiwiY2hhbmdlZEF0dHJpYnV0ZSIsImNvbHVtbkF0dHJpYnV0ZU5hbWUiLCJvbGRBdHRyaWJ1dGVWYWx1ZSIsIm5ld0F0dHJpYnV0ZVZhbHVlIiwiY29sdW1uUGF0aEFzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsInRhYmxlU2V0dGluZ0NvbHVtblBhdGhBc1N0cmluZyIsImF0dHJpYnV0ZU5hbWUiLCJfZGVzdHJveSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90YWJsZS90YWJsZS1zZXR0aW5ncy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29sdW1uSWRlbnRpZmllciBmcm9tIFwiLi9jb2x1bW4taWRlbnRpZmllclwiXG5pbXBvcnQgY29sdW1uVmlzaWJsZSBmcm9tIFwiLi9jb2x1bW4tdmlzaWJsZVwiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgTG9nZ2VyIGZyb20gXCIuLi9sb2dnZXJcIlxuaW1wb3J0IHtSZWFkZXJzV3JpdGVyTG9ja30gZnJvbSBcImVwaWMtbG9ja3NcIlxuaW1wb3J0IHtzZXJpYWxpemUgYXMgb2JqZWN0VG9Gb3JtRGF0YX0gZnJvbSBcIm9iamVjdC10by1mb3JtZGF0YVwiXG5pbXBvcnQge1RhYmxlU2V0dGluZ30gZnJvbSBcIm1vZGVsc1wiXG5pbXBvcnQge3Y0IGFzIHV1aWR2NH0gZnJvbSBcInV1aWRcIlxuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKHtuYW1lOiBcIkFwaU1ha2VyIC8gVGFibGVTZXR0aW5nc1wifSlcblxuLy8gSGF2ZSBhIGxvY2sgZm9yIGVhY2ggdW5pcXVlIHRhYmxlIGlkZW50aWZpZXJcbmNvbnN0IHRhYmxlU2V0dGluZ3NMb2NrcyA9IHt9XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyVGFibGVTZXR0aW5ncyB7XG4gIGNvbnN0cnVjdG9yKHt0YWJsZX0pIHtcbiAgICB0aGlzLnRhYmxlID0gdGFibGVcbiAgICB0aGlzLnNldFRhYmxlU2V0dGluZ3NMb2NrKClcbiAgfVxuXG4gIHNldFRhYmxlU2V0dGluZ3NMb2NrKCkge1xuICAgIGNvbnN0IGlkZW50aWZpZXIgPSB0aGlzLmlkZW50aWZpZXIoKVxuXG4gICAgaWYgKCEoaWRlbnRpZmllciBpbiB0YWJsZVNldHRpbmdzTG9ja3MpKSB7XG4gICAgICB0YWJsZVNldHRpbmdzTG9ja3NbaWRlbnRpZmllcl0gPSBuZXcgUmVhZGVyc1dyaXRlckxvY2soKVxuICAgIH1cblxuICAgIHRoaXMudGFibGVTZXR0aW5nc0xvY2sgPSBkaWdnKHRhYmxlU2V0dGluZ3NMb2NrcywgaWRlbnRpZmllcilcbiAgfVxuXG4gIGNvbHVtbnMgPSAoKSA9PiBkaWdnKHRoaXMsIFwidGFibGVcIiwgXCJjb2x1bW5zQXNBcnJheVwiKSgpXG4gIGN1cnJlbnRVc2VyID0gKCkgPT4gZGlnZyh0aGlzLCBcInRhYmxlXCIsIFwicHJvcHNcIiwgXCJjdXJyZW50VXNlclwiKVxuICBpZGVudGlmaWVyID0gKCkgPT4gZGlnZyh0aGlzLCBcInRhYmxlXCIsIFwic3RhdGVcIiwgXCJpZGVudGlmaWVyXCIpXG5cbiAgcHJlcGFyZWRDb2x1bW5zID0gKHRhYmxlU2V0dGluZykgPT4ge1xuICAgIGNvbnN0IGNvbHVtbnMgPSB0aGlzLnRhYmxlLmNvbHVtbnNBc0FycmF5KClcbiAgICBjb25zdCBvcmRlcmVkID0gdGhpcy5vcmRlcmVkVGFibGVTZXR0aW5nQ29sdW1ucyh0YWJsZVNldHRpbmcpXG4gICAgY29uc3QgcmVzdWx0ID0ge1xuICAgICAgY29sdW1uczogW10sXG4gICAgICBwcmVsb2FkOiBbXVxuICAgIH1cblxuICAgIGlmICghb3JkZXJlZCkgcmV0dXJuXG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlU2V0dGluZ0NvbHVtbiBvZiBvcmRlcmVkKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uSWRlbnRpZmllcihjb2x1bW4pID09IHRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCkpXG5cbiAgICAgIHJlc3VsdC5jb2x1bW5zLnB1c2goe2NvbHVtbiwgdGFibGVTZXR0aW5nQ29sdW1ufSlcblxuICAgICAgLy8gQWRkIG5lZWRlZCBwcmVsb2FkcyBpZiBjb2x1bW4gaXMgdmlzaWJsZVxuICAgICAgaWYgKGNvbHVtblZpc2libGUoY29sdW1uLCB0YWJsZVNldHRpbmdDb2x1bW4pKSB7XG4gICAgICAgIGlmIChjb2x1bW4ucGF0aCkge1xuICAgICAgICAgIGNvbnN0IHByZWxvYWQgPSBjb2x1bW4ucGF0aC5tYXAoKHBhdGhQYXJ0KSA9PiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUocGF0aFBhcnQpKS5qb2luKFwiLlwiKVxuXG4gICAgICAgICAgaWYgKCFyZXN1bHQucHJlbG9hZC5pbmNsdWRlcyhwcmVsb2FkKSkgcmVzdWx0LnByZWxvYWQucHVzaChwcmVsb2FkKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdFxuICB9XG5cbiAgb3JkZXJlZFRhYmxlU2V0dGluZ0NvbHVtbnMgPSAodGFibGVTZXR0aW5nKSA9PiB7XG4gICAgcmV0dXJuIHRhYmxlU2V0dGluZ1xuICAgICAgLmNvbHVtbnMoKVxuICAgICAgLmxvYWRlZCgpXG4gICAgICAuc29ydCgodGFibGVTZXR0aW5nQ29sdW1uMSwgdGFibGVTZXR0aW5nQ29sdW1uMikgPT4gdGFibGVTZXR0aW5nQ29sdW1uMS5wb3NpdGlvbigpIC0gdGFibGVTZXR0aW5nQ29sdW1uMi5wb3NpdGlvbigpKVxuICB9XG5cbiAgbG9hZEV4aXN0aW5nT3JDcmVhdGVUYWJsZVNldHRpbmdzID0gYXN5bmMgKCkgPT4ge1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnRhYmxlU2V0dGluZ3NMb2NrLndyaXRlKGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB0YWJsZVNldHRpbmcgPSBhd2FpdCB0aGlzLmxvYWRUYWJsZVNldHRpbmcoKVxuXG4gICAgICBpZiAodGFibGVTZXR0aW5nKSB7XG4gICAgICAgIHRhYmxlU2V0dGluZyA9IGF3YWl0IHRoaXMudXBkYXRlVGFibGVTZXR0aW5nKHRhYmxlU2V0dGluZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRhYmxlU2V0dGluZyA9IGF3YWl0IHRoaXMuY3JlYXRlSW5pdGlhbFRhYmxlU2V0dGluZygpXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0YWJsZVNldHRpbmdcbiAgICB9KVxuICB9XG5cbiAgbG9hZFRhYmxlU2V0dGluZyA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIVRhYmxlU2V0dGluZykgdGhyb3cgbmV3IEVycm9yKFwiVGFibGVTZXR0aW5nIG1vZGVsIGlzbid0IGdsb2JhbGx5IGF2YWlsYWJsZVwiKVxuXG4gICAgY29uc3QgdGFibGVTZXR0aW5nID0gYXdhaXQgVGFibGVTZXR0aW5nXG4gICAgICAucmFuc2Fjayh7XG4gICAgICAgIGlkZW50aWZpZXJfZXE6IHRoaXMuaWRlbnRpZmllcigpLFxuICAgICAgICB1c2VyX2lkX2VxOiB0aGlzLmN1cnJlbnRVc2VySWRPckZhbGxiYWNrKCksXG4gICAgICAgIHVzZXJfdHlwZV9lcTogdGhpcy5jdXJyZW50VXNlclR5cGVPckZhbGxiYWNrKClcbiAgICAgIH0pXG4gICAgICAucHJlbG9hZChcImNvbHVtbnNcIilcbiAgICAgIC5maXJzdCgpXG5cbiAgICByZXR1cm4gdGFibGVTZXR0aW5nXG4gIH1cblxuICBjdXJyZW50VXNlcklkT3JGYWxsYmFjaygpIHtcbiAgICBjb25zdCBjdXJyZW50VXNlciA9IHRoaXMuY3VycmVudFVzZXIoKVxuXG4gICAgaWYgKGN1cnJlbnRVc2VyKSByZXR1cm4gY3VycmVudFVzZXIuaWQoKVxuXG4gICAgcmV0dXJuIHRoaXMuYW5vbnltb3VzZVVzZXJJZCgpXG4gIH1cblxuICBjdXJyZW50VXNlclR5cGVPckZhbGxiYWNrKCkge1xuICAgIGNvbnN0IGN1cnJlbnRVc2VyID0gdGhpcy5jdXJyZW50VXNlcigpXG5cbiAgICBpZiAoY3VycmVudFVzZXIpIHJldHVybiBkaWdnKGN1cnJlbnRVc2VyLm1vZGVsQ2xhc3NEYXRhKCksIFwibmFtZVwiKVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGFub255bW91c2VVc2VySWQoKSB7XG4gICAgY29uc3QgdmFyaWFibGVOYW1lID0gYEFwaU1ha2VyVGFibGVBbm9ueW1vdXNVc2VySWQtJHt0aGlzLmlkZW50aWZpZXIoKX1gXG5cbiAgICBpZiAoISh2YXJpYWJsZU5hbWUgaW4gbG9jYWxTdG9yYWdlKSkge1xuICAgICAgY29uc3QgZ2VuZXJhdGVkSWQgPSB1dWlkdjQoKVxuXG4gICAgICBsb2NhbFN0b3JhZ2VbdmFyaWFibGVOYW1lXSA9IGdlbmVyYXRlZElkXG4gICAgfVxuXG4gICAgcmV0dXJuIGRpZ2cobG9jYWxTdG9yYWdlLCB2YXJpYWJsZU5hbWUpXG4gIH1cblxuICBjcmVhdGVJbml0aWFsVGFibGVTZXR0aW5nID0gYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IHRhYmxlU2V0dGluZ0RhdGEgPSB7XG4gICAgICBpZGVudGlmaWVyOiB0aGlzLmlkZW50aWZpZXIoKSxcbiAgICAgIHVzZXJfaWQ6IHRoaXMuY3VycmVudFVzZXJJZE9yRmFsbGJhY2soKSxcbiAgICAgIHVzZXJfdHlwZTogdGhpcy5jdXJyZW50VXNlclR5cGVPckZhbGxiYWNrKCksXG4gICAgICBjb2x1bW5zX2F0dHJpYnV0ZXM6IHt9XG4gICAgfVxuXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucygpXG5cbiAgICBmb3IgKGNvbnN0IGNvbHVtbktleSBpbiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBkaWdnKGNvbHVtbnMsIGNvbHVtbktleSlcbiAgICAgIGNvbnN0IGlkZW50aWZpZXIgPSBjb2x1bW5JZGVudGlmaWVyKGNvbHVtbilcbiAgICAgIGNvbnN0IGNvbHVtbkRhdGEgPSB0aGlzLmNvbHVtblNhdmVEYXRhKGNvbHVtbiwge2lkZW50aWZpZXIsIHBvc2l0aW9uOiBjb2x1bW5LZXl9KVxuXG4gICAgICB0YWJsZVNldHRpbmdEYXRhLmNvbHVtbnNfYXR0cmlidXRlc1tjb2x1bW5LZXldID0gY29sdW1uRGF0YVxuICAgIH1cblxuICAgIGNvbnN0IHRhYmxlU2V0dGluZyA9IG5ldyBUYWJsZVNldHRpbmcoKVxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ0Zvcm1EYXRhID0gb2JqZWN0VG9Gb3JtRGF0YSh7dGFibGVfc2V0dGluZzogdGFibGVTZXR0aW5nRGF0YX0pXG5cbiAgICBhd2FpdCB0YWJsZVNldHRpbmcuc2F2ZVJhdyh0YWJsZVNldHRpbmdGb3JtRGF0YSlcblxuICAgIGNvbnN0IHJlbG9hZGVkVGFibGVTZXR0aW5nID0gYXdhaXQgdGhpcy5sb2FkVGFibGVTZXR0aW5nKClcblxuICAgIHJldHVybiByZWxvYWRlZFRhYmxlU2V0dGluZ1xuICB9XG5cbiAgY29sdW1uU2F2ZURhdGEoY29sdW1uLCB7aWRlbnRpZmllciwgcG9zaXRpb259KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGF0dHJpYnV0ZV9uYW1lOiBjb2x1bW4uYXR0cmlidXRlLFxuICAgICAgaWRlbnRpZmllcixcbiAgICAgIHBhdGg6IGNvbHVtbi5wYXRoLFxuICAgICAgcG9zaXRpb24sXG4gICAgICBzb3J0X2tleTogY29sdW1uLnNvcnRLZXksXG4gICAgICB2aXNpYmxlOiBudWxsXG4gICAgfVxuICB9XG5cbiAgdXBkYXRlVGFibGVTZXR0aW5nID0gYXN5bmMgKHRhYmxlU2V0dGluZykgPT4ge1xuICAgIGNvbnN0IGNoYW5nZWRBdHRyaWJ1dGVzTGlzdCA9IFtcImF0dHJpYnV0ZU5hbWVcIiwgXCJzb3J0S2V5XCJdXG4gICAgY29uc3QgY29sdW1ucyA9IHRoaXMuY29sdW1ucygpXG4gICAgY29uc3QgY29sdW1uc0RhdGEgPSB7fVxuICAgIGNvbnN0IHRhYmxlU2V0dGluZ0RhdGEgPSB7Y29sdW1uc19hdHRyaWJ1dGVzOiBjb2x1bW5zRGF0YX1cbiAgICBsZXQgY29sdW1uc0tleUNvdW50ID0gMFxuICAgIGxldCBjaGFuZ2VkID0gZmFsc2VcblxuICAgIC8vIEFkZCBtaXNzaW5nIGNvbHVtbnNcbiAgICBmb3IgKGNvbnN0IGNvbHVtbiBvZiBjb2x1bW5zKSB7XG4gICAgICBjb25zdCBpZGVudGlmaWVyID0gY29sdW1uSWRlbnRpZmllcihjb2x1bW4pXG4gICAgICBjb25zdCB0YWJsZVNldHRpbmdDb2x1bW4gPSB0YWJsZVNldHRpbmcuY29sdW1ucygpLmxvYWRlZCgpLmZpbmQoKHRhYmxlU2V0dGluZ0NvbHVtbikgPT4gdGFibGVTZXR0aW5nQ29sdW1uLmlkZW50aWZpZXIoKSA9PSBpZGVudGlmaWVyKVxuXG4gICAgICBpZiAoIXRhYmxlU2V0dGluZ0NvbHVtbikge1xuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSArK2NvbHVtbnNLZXlDb3VudFxuXG4gICAgICAgIGNvbHVtbnNEYXRhW2NvbHVtbktleV0gPSB0aGlzLmNvbHVtblNhdmVEYXRhKFxuICAgICAgICAgIGNvbHVtbixcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZGVudGlmaWVyLFxuICAgICAgICAgICAgcG9zaXRpb246IHRhYmxlU2V0dGluZy5jb2x1bW5zKCkubG9hZGVkKCkubGVuZ3RoICsgY29sdW1uS2V5XG4gICAgICAgICAgfVxuICAgICAgICApXG5cbiAgICAgICAgbG9nZ2VyLmRlYnVnKCgpID0+IGBDaGFuZ2VkIGJlY2F1c2Ugb2YgbmV3IGNvbHVtbjogJHtjb2x1bW4ubGFiZWx9YClcbiAgICAgICAgY2hhbmdlZCA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHRhYmxlU2V0dGluZ0NvbHVtbiBvZiB0YWJsZVNldHRpbmcuY29sdW1ucygpLmxvYWRlZCgpKSB7XG4gICAgICBjb25zdCBjb2x1bW4gPSBjb2x1bW5zLmZpbmQoKGNvbHVtbikgPT4gY29sdW1uSWRlbnRpZmllcihjb2x1bW4pID09IHRhYmxlU2V0dGluZ0NvbHVtbi5pZGVudGlmaWVyKCkpXG5cbiAgICAgIGlmIChjb2x1bW4pIHtcbiAgICAgICAgLy8gVE9ETzogVXBkYXRlIGNvbHVtbiBpZiBjaGFuZ2VkXG4gICAgICAgIGxldCBjb2x1bW5DaGFuZ2VkID0gZmFsc2VcblxuICAgICAgICBmb3IgKGNvbnN0IGNoYW5nZWRBdHRyaWJ1dGUgb2YgY2hhbmdlZEF0dHJpYnV0ZXNMaXN0KSB7XG4gICAgICAgICAgbGV0IGNvbHVtbkF0dHJpYnV0ZU5hbWVcblxuICAgICAgICAgIGlmIChjaGFuZ2VkQXR0cmlidXRlID09IFwiYXR0cmlidXRlTmFtZVwiKSB7XG4gICAgICAgICAgICBjb2x1bW5BdHRyaWJ1dGVOYW1lID0gXCJhdHRyaWJ1dGVcIlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb2x1bW5BdHRyaWJ1dGVOYW1lID0gY2hhbmdlZEF0dHJpYnV0ZVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG9sZEF0dHJpYnV0ZVZhbHVlID0gdGFibGVTZXR0aW5nQ29sdW1uW2NoYW5nZWRBdHRyaWJ1dGVdKClcbiAgICAgICAgICBjb25zdCBuZXdBdHRyaWJ1dGVWYWx1ZSA9IGNvbHVtbltjb2x1bW5BdHRyaWJ1dGVOYW1lXVxuXG4gICAgICAgICAgaWYgKG9sZEF0dHJpYnV0ZVZhbHVlICE9IG5ld0F0dHJpYnV0ZVZhbHVlKSB7XG4gICAgICAgICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYCR7Y2hhbmdlZEF0dHJpYnV0ZX0gY2hhbmdlZCBmcm9tICR7b2xkQXR0cmlidXRlVmFsdWV9IHRvICR7bmV3QXR0cmlidXRlVmFsdWV9IG9uIGNvbHVtbjogJHtjb2x1bW4ubGFiZWx9YClcbiAgICAgICAgICAgIGNvbHVtbkNoYW5nZWQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sdW1uUGF0aEFzU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoY29sdW1uLnBhdGgpXG4gICAgICAgIGNvbnN0IHRhYmxlU2V0dGluZ0NvbHVtblBhdGhBc1N0cmluZyA9IHRhYmxlU2V0dGluZ0NvbHVtbi5wYXRoKClcblxuICAgICAgICBpZiAoY29sdW1uUGF0aEFzU3RyaW5nICE9IHRhYmxlU2V0dGluZ0NvbHVtblBhdGhBc1N0cmluZykge1xuICAgICAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgUGF0aCBjaGFuZ2VkIG9uICR7Y29sdW1uLmxhYmVsfSBmcm9tICR7Y29sdW1uUGF0aEFzU3RyaW5nfSB0byAke3RhYmxlU2V0dGluZ0NvbHVtblBhdGhBc1N0cmluZ31gKVxuICAgICAgICAgIGNvbHVtbkNoYW5nZWQgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY29sdW1uQ2hhbmdlZCkge1xuICAgICAgICAgIGNvbnN0IGNvbHVtbktleSA9ICsrY29sdW1uc0tleUNvdW50XG5cbiAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZVxuICAgICAgICAgIGNvbHVtbnNEYXRhW2NvbHVtbktleV0gPSB7XG4gICAgICAgICAgICBhdHRyaWJ1dGVfbmFtZTogY29sdW1uLmF0dHJpYnV0ZU5hbWUsXG4gICAgICAgICAgICBpZDogdGFibGVTZXR0aW5nQ29sdW1uLmlkKCksXG4gICAgICAgICAgICBwYXRoOiBjb2x1bW4ucGF0aCxcbiAgICAgICAgICAgIHNvcnRfa2V5OiBjb2x1bW4uc29ydEtleVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmVtb3ZlZCBzYXZlZCBjb2x1bW5zIG5vIGxvbmdlciBmb3VuZFxuICAgICAgICBjb25zdCBjb2x1bW5LZXkgPSArK2NvbHVtbnNLZXlDb3VudFxuXG4gICAgICAgIGNvbHVtbnNEYXRhW2NvbHVtbktleV0gPSB7XG4gICAgICAgICAgaWQ6IHRhYmxlU2V0dGluZ0NvbHVtbi5pZCgpLFxuICAgICAgICAgIF9kZXN0cm95OiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY2hhbmdlZCA9IHRydWVcblxuICAgICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYENvbHVtbiBnb3QgcmVtb3ZlZDogJHt0YWJsZVNldHRpbmdDb2x1bW4uaWRlbnRpZmllcigpfWApXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZWQpIHtcbiAgICAgIGNvbnN0IHRhYmxlU2V0dGluZ0Zvcm1EYXRhID0gb2JqZWN0VG9Gb3JtRGF0YSh7dGFibGVfc2V0dGluZzogdGFibGVTZXR0aW5nRGF0YX0pXG5cbiAgICAgIGF3YWl0IHRhYmxlU2V0dGluZy5zYXZlUmF3KHRhYmxlU2V0dGluZ0Zvcm1EYXRhKVxuICAgIH1cblxuICAgIHJldHVybiB0YWJsZVNldHRpbmdcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxnQkFBZ0IsTUFBTSxxQkFBcUI7QUFDbEQsT0FBT0MsYUFBYSxNQUFNLGtCQUFrQjtBQUM1QyxTQUFRQyxJQUFJLFFBQU8sV0FBVztBQUM5QixPQUFPLEtBQUtDLFVBQVUsTUFBTSxZQUFZO0FBQ3hDLE9BQU9DLE1BQU0sTUFBTSxXQUFXO0FBQzlCLFNBQVFDLGlCQUFpQixRQUFPLFlBQVk7QUFDNUMsU0FBUUMsU0FBUyxJQUFJQyxnQkFBZ0IsUUFBTyxvQkFBb0I7QUFDaEUsU0FBUUMsWUFBWSxRQUFPLFFBQVE7QUFDbkMsU0FBUUMsRUFBRSxJQUFJQyxNQUFNLFFBQU8s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
@@ -10,11 +10,8 @@ const useCanCan = (abilitiesCallback, dependencies) => {
10
10
  });
11
11
  s.useStates({
12
12
  canCan: null,
13
- lastUpdate: new Date()
13
+ lastUpdate: () => new Date()
14
14
  });
15
- if (!dependencies) {
16
- dependencies = [currentUser?.id()];
17
- }
18
15
  const loadAbilities = useCallback(async () => {
19
16
  const canCan = CanCan.current();
20
17
  const abilities = s.p.abilitiesCallback();
@@ -45,6 +42,9 @@ const useCanCan = (abilitiesCallback, dependencies) => {
45
42
  await loadAbilities();
46
43
  }
47
44
  }, []);
45
+ if (!dependencies) {
46
+ dependencies = [currentUser?.id()];
47
+ }
48
48
  useMemo(() => {
49
49
  loadAbilitiesOnNew();
50
50
  }, dependencies);
@@ -52,4 +52,4 @@ const useCanCan = (abilitiesCallback, dependencies) => {
52
52
  return s.s.canCan;
53
53
  };
54
54
  export default useCanCan;
55
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDYW5DYW4iLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VDdXJyZW50VXNlciIsInVzZUV2ZW50RW1pdHRlciIsInVzZVNoYXBlIiwidXNlQ2FuQ2FuIiwiYWJpbGl0aWVzQ2FsbGJhY2siLCJkZXBlbmRlbmNpZXMiLCJjdXJyZW50VXNlciIsInMiLCJ1c2VTdGF0ZXMiLCJjYW5DYW4iLCJsYXN0VXBkYXRlIiwiRGF0ZSIsImlkIiwibG9hZEFiaWxpdGllcyIsImN1cnJlbnQiLCJhYmlsaXRpZXMiLCJwIiwic2V0Iiwib25SZXNldEFiaWxpdGllcyIsInNpbGVudCIsImxvYWRBYmlsaXRpZXNPbk5ldyIsInJlc2V0QWJpbGl0aWVzIiwiZXZlbnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1jYW4tY2FuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDYW5DYW4gZnJvbSBcIi4vY2FuLWNhblwiXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZUN1cnJlbnRVc2VyIGZyb20gXCIuL3VzZS1jdXJyZW50LXVzZXJcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwiLi91c2UtZXZlbnQtZW1pdHRlclwiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy91c2Utc2hhcGVcIlxuXG5jb25zdCB1c2VDYW5DYW4gPSAoYWJpbGl0aWVzQ2FsbGJhY2ssIGRlcGVuZGVuY2llcykgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZUN1cnJlbnRVc2VyKClcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHthYmlsaXRpZXNDYWxsYmFja30pXG5cbiAgcy51c2VTdGF0ZXMoe1xuICAgIGNhbkNhbjogbnVsbCxcbiAgICBsYXN0VXBkYXRlOiBuZXcgRGF0ZSgpXG4gIH0pXG5cbiAgaWYgKCFkZXBlbmRlbmNpZXMpIHtcbiAgICBkZXBlbmRlbmNpZXMgPSBbY3VycmVudFVzZXI/LmlkKCldXG4gIH1cblxuICBjb25zdCBsb2FkQWJpbGl0aWVzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbkNhbiA9IENhbkNhbi5jdXJyZW50KClcbiAgICBjb25zdCBhYmlsaXRpZXMgPSBzLnAuYWJpbGl0aWVzQ2FsbGJhY2soKVxuXG4gICAgYXdhaXQgY2FuQ2FuLmxvYWRBYmlsaXRpZXMoYWJpbGl0aWVzKVxuXG4gICAgcy5zZXQoe2NhbkNhbiwgbGFzdFVwZGF0ZTogbmV3IERhdGUoKX0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uUmVzZXRBYmlsaXRpZXMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgcy5zZXQoe2NhbkNhbjogbnVsbH0sIHtzaWxlbnQ6IHRydWV9KVxuICAgIGF3YWl0IGxvYWRBYmlsaXRpZXMoKVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkQWJpbGl0aWVzT25OZXcgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FuQ2FuID0gcy5zLmNhbkNhblxuXG4gICAgcy5zZXQoe2NhbkNhbjogbnVsbH0sIHtzaWxlbnQ6IHRydWV9KVxuXG4gICAgaWYgKGNhbkNhbikge1xuICAgICAgYXdhaXQgY2FuQ2FuPy5yZXNldEFiaWxpdGllcygpXG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGxvYWRBYmlsaXRpZXMoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlTWVtbygoKSA9PiB7XG4gICAgbG9hZEFiaWxpdGllc09uTmV3KClcbiAgfSwgZGVwZW5kZW5jaWVzKVxuXG4gIHVzZUV2ZW50RW1pdHRlcihDYW5DYW4uY3VycmVudCgpLmV2ZW50cywgXCJvblJlc2V0QWJpbGl0aWVzXCIsIG9uUmVzZXRBYmlsaXRpZXMpXG5cbiAgcmV0dXJuIHMucy5jYW5DYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ2FuQ2FuXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxXQUFXO0FBQzlCLFNBQVFDLFdBQVcsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFDMUMsT0FBT0MsY0FBYyxNQUFNLG9CQUFvQjtBQUMvQyxPQUFPQyxlQUFlLE1BQU0scUJBQXFCO0FBQ2pELE9BQU9DLFFBQVEsTUFBTSxpQ0FBaUM7QUFFdEQsTUFBTUMsU0FBUyxHQUFHQSxDQUFDQyxpQkFBaUIsRUFBRUMsWUFBWSxLQUFLO0VBQ3JELE1BQU1DLFdBQVcsR0FBR04sY0FBYyxDQUFDLENBQUM7RUFDcEMsTUFBTU8sQ0FBQyxHQUFHTCxRQUFRLENBQUM7SUFBQ0U7RUFBaUIsQ0FBQyxDQUFDO0VBRXZDRyxDQUFDLENBQUNDLFNBQVMsQ0FBQztJQUNWQyxNQUFNLEVBQUUsSUFBSTtJQUNaQyxVQUFVLEVBQUUsSUFBSUMsSUFBSSxDQUFDO0VBQ3ZCLENBQUMsQ0FBQztFQUVGLElBQUksQ0FBQ04sWUFBWSxFQUFFO0lBQ2pCQSxZQUFZLEdBQUcsQ0FBQ0MsV0FBVyxFQUFFTSxFQUFFLENBQUMsQ0FBQyxDQUFDO0VBQ3BDO0VBRUEsTUFBTUMsYUFBYSxHQUFHZixXQUFXLENBQUMsWUFBWTtJQUM1QyxNQUFNVyxNQUFNLEdBQUdaLE1BQU0sQ0FBQ2lCLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLE1BQU1DLFNBQVMsR0FBR1IsQ0FBQyxDQUFDUyxDQUFDLENBQUNaLGlCQUFpQixDQUFDLENBQUM7SUFFekMsTUFBTUssTUFBTSxDQUFDSSxhQUFhLENBQUNFLFNBQVMsQ0FBQztJQUVyQ1IsQ0FBQyxDQUFDVSxHQUFHLENBQUM7TUFBQ1IsTUFBTTtNQUFFQyxVQUFVLEVBQUUsSUFBSUMsSUFBSSxDQUFDO0lBQUMsQ0FBQyxDQUFDO0VBQ3pDLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixNQUFNTyxnQkFBZ0IsR0FBR3BCLFdBQVcsQ0FBQyxZQUFZO0lBQy9DUyxDQUFDLENBQUNVLEdBQUcsQ0FBQztNQUFDUixNQUFNLEVBQUU7SUFBSSxDQUFDLEVBQUU7TUFBQ1UsTUFBTSxFQUFFO0lBQUksQ0FBQyxDQUFDO0lBQ3JDLE1BQU1OLGFBQWEsQ0FBQyxDQUFDO0VBQ3ZCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixNQUFNTyxrQkFBa0IsR0FBR3RCLFdBQVcsQ0FBQyxZQUFZO0lBQ2pELE1BQU1XLE1BQU0sR0FBR0YsQ0FBQyxDQUFDQSxDQUFDLENBQUNFLE1BQU07SUFFekJGLENBQUMsQ0FBQ1UsR0FBRyxDQUFDO01BQUNSLE1BQU0sRUFBRTtJQUFJLENBQUMsRUFBRTtNQUFDVSxNQUFNLEVBQUU7SUFBSSxDQUFDLENBQUM7SUFFckMsSUFBSVYsTUFBTSxFQUFFO01BQ1YsTUFBTUEsTUFBTSxFQUFFWSxjQUFjLENBQUMsQ0FBQztJQUNoQyxDQUFDLE1BQU07TUFDTCxNQUFNUixhQUFhLENBQUMsQ0FBQztJQUN2QjtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTmQsT0FBTyxDQUFDLE1BQU07SUFDWnFCLGtCQUFrQixDQUFDLENBQUM7RUFDdEIsQ0FBQyxFQUFFZixZQUFZLENBQUM7RUFFaEJKLGVBQWUsQ0FBQ0osTUFBTSxDQUFDaUIsT0FBTyxDQUFDLENBQUMsQ0FBQ1EsTUFBTSxFQUFFLGtCQUFrQixFQUFFSixnQkFBZ0IsQ0FBQztFQUU5RSxPQUFPWCxDQUFDLENBQUNBLENBQUMsQ0FBQ0UsTUFBTTtBQUNuQixDQUFDO0FBRUQsZUFBZU4sU0FBUyIsImlnbm9yZUxpc3QiOltdfQ==
55
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDYW5DYW4iLCJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VDdXJyZW50VXNlciIsInVzZUV2ZW50RW1pdHRlciIsInVzZVNoYXBlIiwidXNlQ2FuQ2FuIiwiYWJpbGl0aWVzQ2FsbGJhY2siLCJkZXBlbmRlbmNpZXMiLCJjdXJyZW50VXNlciIsInMiLCJ1c2VTdGF0ZXMiLCJjYW5DYW4iLCJsYXN0VXBkYXRlIiwiRGF0ZSIsImxvYWRBYmlsaXRpZXMiLCJjdXJyZW50IiwiYWJpbGl0aWVzIiwicCIsInNldCIsIm9uUmVzZXRBYmlsaXRpZXMiLCJzaWxlbnQiLCJsb2FkQWJpbGl0aWVzT25OZXciLCJyZXNldEFiaWxpdGllcyIsImlkIiwiZXZlbnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1jYW4tY2FuLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDYW5DYW4gZnJvbSBcIi4vY2FuLWNhblwiXG5pbXBvcnQge3VzZUNhbGxiYWNrLCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHVzZUN1cnJlbnRVc2VyIGZyb20gXCIuL3VzZS1jdXJyZW50LXVzZXJcIlxuaW1wb3J0IHVzZUV2ZW50RW1pdHRlciBmcm9tIFwiLi91c2UtZXZlbnQtZW1pdHRlclwiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy91c2Utc2hhcGVcIlxuXG5jb25zdCB1c2VDYW5DYW4gPSAoYWJpbGl0aWVzQ2FsbGJhY2ssIGRlcGVuZGVuY2llcykgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZUN1cnJlbnRVc2VyKClcbiAgY29uc3QgcyA9IHVzZVNoYXBlKHthYmlsaXRpZXNDYWxsYmFja30pXG5cbiAgcy51c2VTdGF0ZXMoe1xuICAgIGNhbkNhbjogbnVsbCxcbiAgICBsYXN0VXBkYXRlOiAoKSA9PiBuZXcgRGF0ZSgpXG4gIH0pXG5cbiAgY29uc3QgbG9hZEFiaWxpdGllcyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBjYW5DYW4gPSBDYW5DYW4uY3VycmVudCgpXG4gICAgY29uc3QgYWJpbGl0aWVzID0gcy5wLmFiaWxpdGllc0NhbGxiYWNrKClcblxuICAgIGF3YWl0IGNhbkNhbi5sb2FkQWJpbGl0aWVzKGFiaWxpdGllcylcblxuICAgIHMuc2V0KHtjYW5DYW4sIGxhc3RVcGRhdGU6IG5ldyBEYXRlKCl9KVxuICB9LCBbXSlcblxuICBjb25zdCBvblJlc2V0QWJpbGl0aWVzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHMuc2V0KHtjYW5DYW46IG51bGx9LCB7c2lsZW50OiB0cnVlfSlcbiAgICBhd2FpdCBsb2FkQWJpbGl0aWVzKClcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZEFiaWxpdGllc09uTmV3ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbkNhbiA9IHMucy5jYW5DYW5cblxuICAgIHMuc2V0KHtjYW5DYW46IG51bGx9LCB7c2lsZW50OiB0cnVlfSlcblxuICAgIGlmIChjYW5DYW4pIHtcbiAgICAgIGF3YWl0IGNhbkNhbj8ucmVzZXRBYmlsaXRpZXMoKVxuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBsb2FkQWJpbGl0aWVzKClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGlmICghZGVwZW5kZW5jaWVzKSB7XG4gICAgZGVwZW5kZW5jaWVzID0gW2N1cnJlbnRVc2VyPy5pZCgpXVxuICB9XG5cbiAgdXNlTWVtbygoKSA9PiB7XG4gICAgbG9hZEFiaWxpdGllc09uTmV3KClcbiAgfSwgZGVwZW5kZW5jaWVzKVxuXG4gIHVzZUV2ZW50RW1pdHRlcihDYW5DYW4uY3VycmVudCgpLmV2ZW50cywgXCJvblJlc2V0QWJpbGl0aWVzXCIsIG9uUmVzZXRBYmlsaXRpZXMpXG5cbiAgcmV0dXJuIHMucy5jYW5DYW5cbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlQ2FuQ2FuXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxXQUFX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
@@ -1,27 +1,52 @@
1
- import { useCallback, useMemo } from "react";
1
+ import React, { useCallback, useContext, useMemo } from "react";
2
2
  import Devise from "./devise";
3
3
  import { digg } from "diggerize";
4
+ import EventEmitter from "events";
4
5
  import * as inflection from "inflection";
5
6
  import Logger from "./logger";
6
7
  import Services from "./services";
7
8
  import useEventEmitter from "./use-event-emitter";
8
9
  import useShape from "set-state-compare/src/use-shape";
10
+ const events = new EventEmitter();
9
11
  const logger = new Logger({
10
12
  name: "ApiMaker / useCurrentUser"
11
13
  });
12
-
13
- // logger.setDebug(true)
14
-
15
- const useCurrentUser = args => {
16
- const s = useShape(args || {});
17
- const scope = args?.scope || "user";
14
+ logger.setDebug(false);
15
+ const useCurrentUser = (props = {}) => {
16
+ const {
17
+ scope = "user",
18
+ withData,
19
+ ...restProps
20
+ } = props;
21
+ if (Object.keys(restProps).length > 0) {
22
+ throw new Error(`Unknown props given to useCurrentUser: ${Object.keys(restProps).join(", ")}`);
23
+ }
24
+ const scopeInstance = Devise.getScope(scope);
25
+ const currentUserContext = useContext(scopeInstance.getContext());
26
+ if (withData) {
27
+ return currentUserContext;
28
+ } else {
29
+ return currentUserContext.model;
30
+ }
31
+ };
32
+ const WithCurrentUser = (props = {}) => {
33
+ const {
34
+ children,
35
+ scope = "user",
36
+ ...restProps
37
+ } = props;
38
+ if (Object.keys(restProps).length > 0) {
39
+ throw new Error(`Unknown props given to WithCurrentUser: ${Object.keys(restProps).join(", ")}`);
40
+ }
41
+ const s = useShape(props);
18
42
  const scopeName = `current${inflection.camelize(scope)}`;
43
+ const scopeInstance = Devise.getScope(scope);
44
+ const ScopeContext = scopeInstance.getContext();
19
45
  s.meta.scope = scope;
20
46
  s.meta.scopeName = scopeName;
21
47
  const loadCurrentUserFromRequest = useCallback(async () => {
22
48
  const {
23
- scope,
24
- scopeName
49
+ scope
25
50
  } = s.m;
26
51
  const getArgsMethodName = `get${inflection.camelize(scope)}Args`;
27
52
  const args = Devise[getArgsMethodName]();
@@ -31,10 +56,16 @@ const useCurrentUser = args => {
31
56
  scope
32
57
  });
33
58
  const current = digg(result, "current")[0];
34
- if (!(scopeName in s.setStates)) throw new Error(`'${scopeName}' not found in setStates`);
35
59
  if (current) Devise.updateSession(current);
36
- s.setStates[scopeName](current);
37
- if (s.props.onCurrentUserLoaded) setTimeout(() => s.props.onCurrentUserLoaded(current), 0);
60
+ s.set({
61
+ result: {
62
+ loaded: true,
63
+ model: current
64
+ }
65
+ });
66
+ events.emit("currentUserLoaded", {
67
+ current
68
+ });
38
69
  }, []);
39
70
  const defaultCurrentUser = useCallback(() => {
40
71
  const {
@@ -49,18 +80,26 @@ const useCurrentUser = args => {
49
80
  current = Devise[scopeName]();
50
81
  logger.debug(() => `Setting ${scope} from global current scope: ${current?.id()}`);
51
82
  }
52
- if (current && s.props.onCurrentUserLoaded) {
53
- setTimeout(() => s.props.onCurrentUserLoaded(current), 0);
83
+ if (current) {
84
+ events.emit("currentUserLoaded", {
85
+ current
86
+ });
54
87
  }
55
88
  return current;
56
89
  }, []);
57
- const useStatesArgument = {};
58
- useStatesArgument[scopeName] = () => defaultCurrentUser();
59
- s.useStates(useStatesArgument);
90
+ s.useStates({
91
+ result: () => ({
92
+ loaded: false,
93
+ model: defaultCurrentUser()
94
+ })
95
+ });
60
96
  const updateCurrentUser = useCallback(() => {
61
- const setStatesArgument = {};
62
- setStatesArgument[s.m.scopeName] = Devise[s.m.scopeName]();
63
- s.set(setStatesArgument);
97
+ s.set({
98
+ result: {
99
+ loaded: true,
100
+ model: Devise[s.m.scopeName]()
101
+ }
102
+ });
64
103
  }, []);
65
104
  useMemo(() => {
66
105
  if (!Devise.current().hasGlobalCurrentScope(s.m.scope) && !Devise.current().hasCurrentScope(s.m.scope)) {
@@ -68,9 +107,18 @@ const useCurrentUser = args => {
68
107
  loadCurrentUserFromRequest();
69
108
  }
70
109
  }, []);
71
- useEventEmitter(Devise.events(), "onDeviseSignIn", updateCurrentUser);
72
- useEventEmitter(Devise.events(), "onDeviseSignOut", updateCurrentUser);
73
- return s.s[scopeName];
110
+ const onDeviseSignIn = useCallback(() => {
111
+ updateCurrentUser();
112
+ }, []);
113
+ const onDeviseSignOut = useCallback(() => {
114
+ updateCurrentUser();
115
+ }, []);
116
+ useEventEmitter(Devise.events(), "onDeviseSignIn", onDeviseSignIn);
117
+ useEventEmitter(Devise.events(), "onDeviseSignOut", onDeviseSignOut);
118
+ return /*#__PURE__*/React.createElement(ScopeContext.Provider, {
119
+ value: s.s.result
120
+ }, children);
74
121
  };
122
+ export { events, WithCurrentUser };
75
123
  export default useCurrentUser;
76
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJEZXZpc2UiLCJkaWdnIiwiaW5mbGVjdGlvbiIsIkxvZ2dlciIsIlNlcnZpY2VzIiwidXNlRXZlbnRFbWl0dGVyIiwidXNlU2hhcGUiLCJsb2dnZXIiLCJuYW1lIiwidXNlQ3VycmVudFVzZXIiLCJhcmdzIiwicyIsInNjb3BlIiwic2NvcGVOYW1lIiwiY2FtZWxpemUiLCJtZXRhIiwibG9hZEN1cnJlbnRVc2VyRnJvbVJlcXVlc3QiLCJtIiwiZ2V0QXJnc01ldGhvZE5hbWUiLCJkZWJ1ZyIsInJlc3VsdCIsImN1cnJlbnQiLCJzZW5kUmVxdWVzdCIsInF1ZXJ5Iiwic2V0U3RhdGVzIiwiRXJyb3IiLCJ1cGRhdGVTZXNzaW9uIiwicHJvcHMiLCJvbkN1cnJlbnRVc2VyTG9hZGVkIiwic2V0VGltZW91dCIsImRlZmF1bHRDdXJyZW50VXNlciIsImhhc0N1cnJlbnRTY29wZSIsImdldEN1cnJlbnRTY29wZSIsImlkIiwiaGFzR2xvYmFsQ3VycmVudFNjb3BlIiwidXNlU3RhdGVzQXJndW1lbnQiLCJ1c2VTdGF0ZXMiLCJ1cGRhdGVDdXJyZW50VXNlciIsInNldFN0YXRlc0FyZ3VtZW50Iiwic2V0IiwiZXZlbnRzIl0sInNvdXJjZXMiOlsiLi4vc3JjL3VzZS1jdXJyZW50LXVzZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHt1c2VDYWxsYmFjaywgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBEZXZpc2UgZnJvbSBcIi4vZGV2aXNlXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlc1wiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuL3VzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3VzZS1zaGFwZVwiXG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoe25hbWU6IFwiQXBpTWFrZXIgLyB1c2VDdXJyZW50VXNlclwifSlcblxuLy8gbG9nZ2VyLnNldERlYnVnKHRydWUpXG5cbmNvbnN0IHVzZUN1cnJlbnRVc2VyID0gKGFyZ3MpID0+IHtcbiAgY29uc3QgcyA9IHVzZVNoYXBlKGFyZ3MgfHwge30pXG4gIGNvbnN0IHNjb3BlID0gYXJncz8uc2NvcGUgfHwgXCJ1c2VyXCJcbiAgY29uc3Qgc2NvcGVOYW1lID0gYGN1cnJlbnQke2luZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUpfWBcblxuICBzLm1ldGEuc2NvcGUgPSBzY29wZVxuICBzLm1ldGEuc2NvcGVOYW1lID0gc2NvcGVOYW1lXG5cbiAgY29uc3QgbG9hZEN1cnJlbnRVc2VyRnJvbVJlcXVlc3QgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgY29uc3Qge3Njb3BlLCBzY29wZU5hbWV9ID0gcy5tXG4gICAgY29uc3QgZ2V0QXJnc01ldGhvZE5hbWUgPSBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKX1BcmdzYFxuICAgIGNvbnN0IGFyZ3MgPSBEZXZpc2VbZ2V0QXJnc01ldGhvZE5hbWVdKClcblxuICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgTG9hZGluZyAke3Njb3BlfSB3aXRoIHJlcXVlc3RgKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpDdXJyZW50XCIsIHtxdWVyeTogYXJncy5xdWVyeSwgc2NvcGV9KVxuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIpWzBdXG5cbiAgICBpZiAoIShzY29wZU5hbWUgaW4gcy5zZXRTdGF0ZXMpKSB0aHJvdyBuZXcgRXJyb3IoYCcke3Njb3BlTmFtZX0nIG5vdCBmb3VuZCBpbiBzZXRTdGF0ZXNgKVxuICAgIGlmIChjdXJyZW50KSBEZXZpc2UudXBkYXRlU2Vzc2lvbihjdXJyZW50KVxuXG4gICAgcy5zZXRTdGF0ZXNbc2NvcGVOYW1lXShjdXJyZW50KVxuXG4gICAgaWYgKHMucHJvcHMub25DdXJyZW50VXNlckxvYWRlZCkgc2V0VGltZW91dCgoKSA9PiBzLnByb3BzLm9uQ3VycmVudFVzZXJMb2FkZWQoY3VycmVudCksIDApXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGRlZmF1bHRDdXJyZW50VXNlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB7c2NvcGUsIHNjb3BlTmFtZX0gPSBzLm1cbiAgICBsZXQgY3VycmVudFxuXG4gICAgaWYgKERldmlzZS5jdXJyZW50KCkuaGFzQ3VycmVudFNjb3BlKHMubS5zY29wZSkpIHtcbiAgICAgIGN1cnJlbnQgPSBEZXZpc2UuY3VycmVudCgpLmdldEN1cnJlbnRTY29wZShzY29wZSlcblxuICAgICAgbG9nZ2VyLmRlYnVnKCgpID0+IGBTZXR0aW5nICR7c2NvcGV9IGZyb20gY3VycmVudCBzY29wZTogJHtjdXJyZW50Py5pZCgpfWApXG4gICAgfSBlbHNlIGlmIChEZXZpc2UuY3VycmVudCgpLmhhc0dsb2JhbEN1cnJlbnRTY29wZShzY29wZSkpIHtcbiAgICAgIGN1cnJlbnQgPSBEZXZpc2Vbc2NvcGVOYW1lXSgpXG5cbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgU2V0dGluZyAke3Njb3BlfSBmcm9tIGdsb2JhbCBjdXJyZW50IHNjb3BlOiAke2N1cnJlbnQ/LmlkKCl9YClcbiAgICB9XG5cbiAgICBpZiAoY3VycmVudCAmJiBzLnByb3BzLm9uQ3VycmVudFVzZXJMb2FkZWQpIHtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gcy5wcm9wcy5vbkN1cnJlbnRVc2VyTG9hZGVkKGN1cnJlbnQpLCAwKVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50XG4gIH0sIFtdKVxuXG4gIGNvbnN0IHVzZVN0YXRlc0FyZ3VtZW50ID0ge31cblxuICB1c2VTdGF0ZXNBcmd1bWVudFtzY29wZU5hbWVdID0gKCkgPT4gZGVmYXVsdEN1cnJlbnRVc2VyKClcblxuICBzLnVzZVN0YXRlcyh1c2VTdGF0ZXNBcmd1bWVudClcblxuICBjb25zdCB1cGRhdGVDdXJyZW50VXNlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzZXRTdGF0ZXNBcmd1bWVudCA9IHt9XG5cbiAgICBzZXRTdGF0ZXNBcmd1bWVudFtzLm0uc2NvcGVOYW1lXSA9IERldmlzZVtzLm0uc2NvcGVOYW1lXSgpXG5cbiAgICBzLnNldChzZXRTdGF0ZXNBcmd1bWVudClcbiAgfSwgW10pXG5cbiAgdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKCFEZXZpc2UuY3VycmVudCgpLmhhc0dsb2JhbEN1cnJlbnRTY29wZShzLm0uc2NvcGUpICYmICFEZXZpc2UuY3VycmVudCgpLmhhc0N1cnJlbnRTY29wZShzLm0uc2NvcGUpKSB7XG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYERldmlzZSBoYXNuJ3QgZ290IGN1cnJlbnQgc2NvcGUgJHtzLm0uc2NvcGV9IHNvIGxvYWRpbmcgZnJvbSByZXF1ZXN0YClcbiAgICAgIGxvYWRDdXJyZW50VXNlckZyb21SZXF1ZXN0KClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduSW5cIiwgdXBkYXRlQ3VycmVudFVzZXIpXG4gIHVzZUV2ZW50RW1pdHRlcihEZXZpc2UuZXZlbnRzKCksIFwib25EZXZpc2VTaWduT3V0XCIsIHVwZGF0ZUN1cnJlbnRVc2VyKVxuXG4gIHJldHVybiBzLnNbc2NvcGVOYW1lXVxufVxuXG5leHBvcnQgZGVmYXVsdCB1c2VDdXJyZW50VXNlclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFRQSxXQUFXLEVBQUVDLE9BQU8sUUFBTyxPQUFPO0FBQzFDLE9BQU9DLE1BQU0sTUFBTSxVQUFVO0FBQzdCLFNBQVFDLElBQUksUUFB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
124
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZU1lbW8iLCJEZXZpc2UiLCJkaWdnIiwiRXZlbnRFbWl0dGVyIiwiaW5mbGVjdGlvbiIsIkxvZ2dlciIsIlNlcnZpY2VzIiwidXNlRXZlbnRFbWl0dGVyIiwidXNlU2hhcGUiLCJldmVudHMiLCJsb2dnZXIiLCJuYW1lIiwic2V0RGVidWciLCJ1c2VDdXJyZW50VXNlciIsInByb3BzIiwic2NvcGUiLCJ3aXRoRGF0YSIsInJlc3RQcm9wcyIsIk9iamVjdCIsImtleXMiLCJsZW5ndGgiLCJFcnJvciIsImpvaW4iLCJzY29wZUluc3RhbmNlIiwiZ2V0U2NvcGUiLCJjdXJyZW50VXNlckNvbnRleHQiLCJnZXRDb250ZXh0IiwibW9kZWwiLCJXaXRoQ3VycmVudFVzZXIiLCJjaGlsZHJlbiIsInMiLCJzY29wZU5hbWUiLCJjYW1lbGl6ZSIsIlNjb3BlQ29udGV4dCIsIm1ldGEiLCJsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCIsIm0iLCJnZXRBcmdzTWV0aG9kTmFtZSIsImFyZ3MiLCJkZWJ1ZyIsInJlc3VsdCIsImN1cnJlbnQiLCJzZW5kUmVxdWVzdCIsInF1ZXJ5IiwidXBkYXRlU2Vzc2lvbiIsInNldCIsImxvYWRlZCIsImVtaXQiLCJkZWZhdWx0Q3VycmVudFVzZXIiLCJoYXNDdXJyZW50U2NvcGUiLCJnZXRDdXJyZW50U2NvcGUiLCJpZCIsImhhc0dsb2JhbEN1cnJlbnRTY29wZSIsInVzZVN0YXRlcyIsInVwZGF0ZUN1cnJlbnRVc2VyIiwib25EZXZpc2VTaWduSW4iLCJvbkRldmlzZVNpZ25PdXQiLCJjcmVhdGVFbGVtZW50IiwiUHJvdmlkZXIiLCJ2YWx1ZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy91c2UtY3VycmVudC11c2VyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge3VzZUNhbGxiYWNrLCB1c2VDb250ZXh0LCB1c2VNZW1vfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IERldmlzZSBmcm9tIFwiLi9kZXZpc2VcIlxuaW1wb3J0IHtkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCBFdmVudEVtaXR0ZXIgZnJvbSBcImV2ZW50c1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBMb2dnZXIgZnJvbSBcIi4vbG9nZ2VyXCJcbmltcG9ydCBTZXJ2aWNlcyBmcm9tIFwiLi9zZXJ2aWNlc1wiXG5pbXBvcnQgdXNlRXZlbnRFbWl0dGVyIGZyb20gXCIuL3VzZS1ldmVudC1lbWl0dGVyXCJcbmltcG9ydCB1c2VTaGFwZSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3VzZS1zaGFwZVwiXG5cbmNvbnN0IGV2ZW50cyA9IG5ldyBFdmVudEVtaXR0ZXIoKVxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcih7bmFtZTogXCJBcGlNYWtlciAvIHVzZUN1cnJlbnRVc2VyXCJ9KVxuXG5sb2dnZXIuc2V0RGVidWcoZmFsc2UpXG5cbmNvbnN0IHVzZUN1cnJlbnRVc2VyID0gKHByb3BzID0ge30pID0+IHtcbiAgY29uc3Qge3Njb3BlID0gXCJ1c2VyXCIsIHdpdGhEYXRhLCAuLi5yZXN0UHJvcHN9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIHVzZUN1cnJlbnRVc2VyOiAke09iamVjdC5rZXlzKHJlc3RQcm9wcykuam9pbihcIiwgXCIpfWApXG4gIH1cblxuICBjb25zdCBzY29wZUluc3RhbmNlID0gRGV2aXNlLmdldFNjb3BlKHNjb3BlKVxuICBjb25zdCBjdXJyZW50VXNlckNvbnRleHQgPSB1c2VDb250ZXh0KHNjb3BlSW5zdGFuY2UuZ2V0Q29udGV4dCgpKVxuXG4gIGlmICh3aXRoRGF0YSkge1xuICAgIHJldHVybiBjdXJyZW50VXNlckNvbnRleHRcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY3VycmVudFVzZXJDb250ZXh0Lm1vZGVsXG4gIH1cbn1cblxuY29uc3QgV2l0aEN1cnJlbnRVc2VyID0gKHByb3BzID0ge30pID0+IHtcbiAgY29uc3Qge2NoaWxkcmVuLCBzY29wZSA9IFwidXNlclwiLCAuLi5yZXN0UHJvcHN9ID0gcHJvcHNcblxuICBpZiAoT2JqZWN0LmtleXMocmVzdFByb3BzKS5sZW5ndGggPiAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIHByb3BzIGdpdmVuIHRvIFdpdGhDdXJyZW50VXNlcjogJHtPYmplY3Qua2V5cyhyZXN0UHJvcHMpLmpvaW4oXCIsIFwiKX1gKVxuICB9XG5cbiAgY29uc3QgcyA9IHVzZVNoYXBlKHByb3BzKVxuICBjb25zdCBzY29wZU5hbWUgPSBgY3VycmVudCR7aW5mbGVjdGlvbi5jYW1lbGl6ZShzY29wZSl9YFxuICBjb25zdCBzY29wZUluc3RhbmNlID0gRGV2aXNlLmdldFNjb3BlKHNjb3BlKVxuICBjb25zdCBTY29wZUNvbnRleHQgPSBzY29wZUluc3RhbmNlLmdldENvbnRleHQoKVxuXG4gIHMubWV0YS5zY29wZSA9IHNjb3BlXG4gIHMubWV0YS5zY29wZU5hbWUgPSBzY29wZU5hbWVcblxuICBjb25zdCBsb2FkQ3VycmVudFVzZXJGcm9tUmVxdWVzdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7c2NvcGV9ID0gcy5tXG4gICAgY29uc3QgZ2V0QXJnc01ldGhvZE5hbWUgPSBgZ2V0JHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKX1BcmdzYFxuICAgIGNvbnN0IGFyZ3MgPSBEZXZpc2VbZ2V0QXJnc01ldGhvZE5hbWVdKClcblxuICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgTG9hZGluZyAke3Njb3BlfSB3aXRoIHJlcXVlc3RgKVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpDdXJyZW50XCIsIHtxdWVyeTogYXJncy5xdWVyeSwgc2NvcGV9KVxuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWdnKHJlc3VsdCwgXCJjdXJyZW50XCIpWzBdXG5cbiAgICBpZiAoY3VycmVudCkgRGV2aXNlLnVwZGF0ZVNlc3Npb24oY3VycmVudClcblxuICAgIHMuc2V0KHtcbiAgICAgIHJlc3VsdDoge1xuICAgICAgICBsb2FkZWQ6IHRydWUsXG4gICAgICAgIG1vZGVsOiBjdXJyZW50XG4gICAgICB9XG4gICAgfSlcblxuICAgIGV2ZW50cy5lbWl0KFwiY3VycmVudFVzZXJMb2FkZWRcIiwge2N1cnJlbnR9KVxuICB9LCBbXSlcblxuICBjb25zdCBkZWZhdWx0Q3VycmVudFVzZXIgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qge3Njb3BlLCBzY29wZU5hbWV9ID0gcy5tXG4gICAgbGV0IGN1cnJlbnRcblxuICAgIGlmIChEZXZpc2UuY3VycmVudCgpLmhhc0N1cnJlbnRTY29wZShzLm0uc2NvcGUpKSB7XG4gICAgICBjdXJyZW50ID0gRGV2aXNlLmN1cnJlbnQoKS5nZXRDdXJyZW50U2NvcGUoc2NvcGUpXG5cbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgU2V0dGluZyAke3Njb3BlfSBmcm9tIGN1cnJlbnQgc2NvcGU6ICR7Y3VycmVudD8uaWQoKX1gKVxuICAgIH0gZWxzZSBpZiAoRGV2aXNlLmN1cnJlbnQoKS5oYXNHbG9iYWxDdXJyZW50U2NvcGUoc2NvcGUpKSB7XG4gICAgICBjdXJyZW50ID0gRGV2aXNlW3Njb3BlTmFtZV0oKVxuXG4gICAgICBsb2dnZXIuZGVidWcoKCkgPT4gYFNldHRpbmcgJHtzY29wZX0gZnJvbSBnbG9iYWwgY3VycmVudCBzY29wZTogJHtjdXJyZW50Py5pZCgpfWApXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnQpIHtcbiAgICAgIGV2ZW50cy5lbWl0KFwiY3VycmVudFVzZXJMb2FkZWRcIiwge2N1cnJlbnR9KVxuICAgIH1cblxuICAgIHJldHVybiBjdXJyZW50XG4gIH0sIFtdKVxuXG4gIHMudXNlU3RhdGVzKHtcbiAgICByZXN1bHQ6ICgpID0+ICh7XG4gICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgbW9kZWw6IGRlZmF1bHRDdXJyZW50VXNlcigpXG4gICAgfSlcbiAgfSlcblxuICBjb25zdCB1cGRhdGVDdXJyZW50VXNlciA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzLnNldCh7XG4gICAgICByZXN1bHQ6IHtcbiAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICBtb2RlbDogRGV2aXNlW3MubS5zY29wZU5hbWVdKClcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoIURldmlzZS5jdXJyZW50KCkuaGFzR2xvYmFsQ3VycmVudFNjb3BlKHMubS5zY29wZSkgJiYgIURldmlzZS5jdXJyZW50KCkuaGFzQ3VycmVudFNjb3BlKHMubS5zY29wZSkpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZygoKSA9PiBgRGV2aXNlIGhhc24ndCBnb3QgY3VycmVudCBzY29wZSAke3MubS5zY29wZX0gc28gbG9hZGluZyBmcm9tIHJlcXVlc3RgKVxuICAgICAgbG9hZEN1cnJlbnRVc2VyRnJvbVJlcXVlc3QoKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgY29uc3Qgb25EZXZpc2VTaWduSW4gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXBkYXRlQ3VycmVudFVzZXIoKVxuICB9LCBbXSlcblxuICBjb25zdCBvbkRldmlzZVNpZ25PdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgdXBkYXRlQ3VycmVudFVzZXIoKVxuICB9LCBbXSlcblxuICB1c2VFdmVudEVtaXR0ZXIoRGV2aXNlLmV2ZW50cygpLCBcIm9uRGV2aXNlU2lnbkluXCIsIG9uRGV2aXNlU2lnbkluKVxuICB1c2VFdmVudEVtaXR0ZXIoRGV2aXNlLmV2ZW50cygpLCBcIm9uRGV2aXNlU2lnbk91dFwiLCBvbkRldmlzZVNpZ25PdXQpXG5cbiAgcmV0dXJuIChcbiAgICA8U2NvcGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtzLnMucmVzdWx0fT5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1Njb3BlQ29udGV4dC5Qcm92aWRlcj5cbiAgKVxufVxuXG5leHBvcnQge2V2ZW50cywgV2l0aEN1cnJlbnRVc2VyfVxuZXhwb3J0IGRlZmF1bHQgdXNlQ3VycmVudFVzZXJcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsS0FBSyxJQUFHQyxXQUFXLEVBQUVDLFVBQVUsRUFBRUMsT0FBTyxRQUFPLE9BQU87QUFDN0QsT0FBT0MsTUFBTSxNQUFNLFVBQVU7QUFDN0IsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBT0MsWUFBWSxNQUFNLFFBQVE7QUFDakMsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixPQUFPQyxRQUFRLE1BQU0sWUFBWTtBQUNqQyxPQUFPQyxlQUFlLE1BQU0scUJBQXFCO0FBQ2pELE9BQU9DLFFBQVEsTUFBTSxpQ0FBaUM7QUFFdEQsTUFBTUMsTUFBTSxHQUFHLElBQUlOLFlBQVksQ0FBQyxDQUFDO0FBQ2pDLE1BQU1PLE1BQU0sR0FBRyxJQUFJTCxNQUFNLENBQUM7RUFBQ00sSUFBSSxFQUFFO0FBQTJCLENBQUMsQ0FBQztBQUU5REQsTUFBTSxDQUFDRSxRQUFRLENBQUMsS0FBSyxDQUFDO0FBRXRCLE1BQU1DLGNBQWMsR0FBR0EsQ0FBQ0MsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLO0VBQ3JDLE1BQU07SUFBQ0MsS0FBSyxHQUFHLE1BQU07SUFBRUMsUUFBUTtJQUFFLEdBQUdDO0VBQVMsQ0FBQyxHQUFHSCxLQUFLO0VBRXRELElBQUlJLE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQ0csTUFBTSxHQUFHLENBQUMsRUFBRTtJQUNyQyxNQUFNLElBQUlDLEtBQUssQ0FBQywwQ0FBMENILE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRixTQUFTLENBQUMsQ0FBQ0ssSUFBSSxDQUFD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
package/link.sh ADDED
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ cd node_modules
4
+
5
+ rm -rf react
6
+ ln -s ../../../gratisbyggetilbud_rails/node_modules/react
7
+
8
+ yarn link i18n-on-steroids
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
- "version": "1.0.2029",
3
+ "version": "1.0.2031",
4
4
  "description": "My new module",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
package/src/devise.js CHANGED
@@ -1,3 +1,4 @@
1
+ import {createContext} from "react"
1
2
  import Deserializer from "./deserializer"
2
3
  import events from "./events"
3
4
  import * as inflection from "inflection"
@@ -8,6 +9,16 @@ if (!globalThis.ApiMakerDevise) globalThis.ApiMakerDevise = {scopes: {}}
8
9
 
9
10
  const shared = globalThis.ApiMakerDevise
10
11
 
12
+ class DeviseScope {
13
+ constructor(scope, args) {
14
+ this.args = args
15
+ this.context = createContext()
16
+ this.scope = scope
17
+ }
18
+
19
+ getContext = () => this.context
20
+ }
21
+
11
22
  export default class ApiMakerDevise {
12
23
  static callSignOutEvent(args) {
13
24
  events.emit("onDeviseSignOut", {args})
@@ -26,13 +37,24 @@ export default class ApiMakerDevise {
26
37
  }
27
38
 
28
39
  static addUserScope(scope, args = {}) {
29
- const currentMethodName = `current${inflection.camelize(scope)}`
30
- const isSignedInMethodName = `is${inflection.camelize(scope)}SignedIn`
31
- const getArgsMethodName = `get${inflection.camelize(scope)}Args`
40
+ const scopeCamelized = inflection.camelize(scope)
41
+ const currentMethodName = `current${scopeCamelized}`
42
+ const isSignedInMethodName = `is${scopeCamelized}SignedIn`
43
+ const getArgsMethodName = `get${scopeCamelized}Args`
44
+ const getScopeName = `get${scopeCamelized}Scope`
45
+ const scopeInstance = new DeviseScope(scope, args)
32
46
 
33
47
  ApiMakerDevise[currentMethodName] = () => ApiMakerDevise.current().getCurrentScope(scope)
34
48
  ApiMakerDevise[isSignedInMethodName] = () => Boolean(ApiMakerDevise.current().getCurrentScope(scope))
35
49
  ApiMakerDevise[getArgsMethodName] = () => args
50
+ ApiMakerDevise[getScopeName] = () => scopeInstance
51
+ }
52
+
53
+ static getScope(scope) {
54
+ const scopeCamelized = inflection.camelize(scope)
55
+ const getScopeName = `get${scopeCamelized}Scope`
56
+
57
+ return ApiMakerDevise[getScopeName]()
36
58
  }
37
59
 
38
60
  static async signIn(username, password, args = {}) {
@@ -6,29 +6,34 @@ import classNames from "classnames"
6
6
  import {digg} from "diggerize"
7
7
  import memo from "set-state-compare/src/memo"
8
8
  import {shapeComponent} from "set-state-compare/src/shape-component"
9
- import * as models from "models"
10
9
  import Params from "../../params"
10
+ import {TableSearch} from "models"
11
11
  import Text from "../../utils/text"
12
12
  import useI18n from "i18n-on-steroids/src/use-i18n"
13
13
 
14
- const {TableSearch} = models
15
-
16
14
  const SearchLink = memo(shapeComponent(class SearchLink extends BaseComponent {
17
15
  render() {
18
16
  const {search} = this.props
19
17
 
20
18
  return (
21
- <View dataSet={{class: "search-row", searchId: search.id()}} style={{flexDirection: "row", width: "100%"}}>
22
- <Pressable dataSet={{class: "load-search-link"}} onPress={this.onSearchClicked} style={{justifyContent: "center"}}>
19
+ <View
20
+ dataSet={this.cache("rootViewStyle", {class: "search-row", searchId: search.id()}, [search.id()])}
21
+ style={this.rootViewStyle ||= {flexDirection: "row", width: "100%"}}
22
+ >
23
+ <Pressable
24
+ dataSet={this.loadSearchLinkPressableDataSet ||= {class: "load-search-link"}}
25
+ onPress={this.tt.onSearchClicked}
26
+ style={this.loadSearchLinkPressableStyle ||= {justifyContent: "center"}}
27
+ >
23
28
  <Text>
24
29
  {search.name()}
25
30
  </Text>
26
31
  </Pressable>
27
- <View style={{flexDirection: "row", marginLeft: "auto"}}>
32
+ <View style={this.actionsViewStyle ||= {flexDirection: "row", marginLeft: "auto"}}>
28
33
  <Pressable
29
- dataSet={{class: "edit-search-button"}}
30
- onPress={this.onEditPressed}
31
- style={{
34
+ dataSet={this.editSearchButtonDataSet ||= {class: "edit-search-button"}}
35
+ onPress={this.tt.onEditPressed}
36
+ style={this.editSearchButtonStyle ||= {
32
37
  alignItems: "center",
33
38
  justifyContent: "center",
34
39
  width: 25,
@@ -44,9 +49,9 @@ const SearchLink = memo(shapeComponent(class SearchLink extends BaseComponent {
44
49
  </Text>
45
50
  </Pressable>
46
51
  <Pressable
47
- dataSet={{class: "delete-search-button"}}
48
- onPress={this.onDeletePressed}
49
- style={{
52
+ dataSet={this.deleteSearchButtonDataSet ||= {class: "delete-search-button"}}
53
+ onPress={this.tt.onDeletePressed}
54
+ style={this.deleteSearchButtonStyle ||= {
50
55
  alignItems: "center",
51
56
  justifyContent: "center",
52
57
  marginLeft: 5,
@@ -108,7 +113,7 @@ export default memo(shapeComponent(class ApiMakerTableFiltersLoadSearchModal ext
108
113
  }
109
114
 
110
115
  render() {
111
- const {t} = this
116
+ const {t} = this.tt
112
117
  const {className, currentUser, modelClass, onEditSearchPressed, onRequestClose, querySearchName, ...restProps} = this.props
113
118
  const Modal = apiMakerConfig.getModal()
114
119
 
@@ -120,7 +125,13 @@ export default memo(shapeComponent(class ApiMakerTableFiltersLoadSearchModal ext
120
125
  </Text>
121
126
  </View>
122
127
  {this.state.searches?.map((search) =>
123
- <SearchLink key={search.id()} onClick={this.onSearchClicked} onDeleted={this.onSearchDeleted} onEditPressed={onEditSearchPressed} search={search} />
128
+ <SearchLink
129
+ key={search.id()}
130
+ onClick={this.tt.onSearchClicked}
131
+ onDeleted={this.tt.onSearchDeleted}
132
+ onEditPressed={onEditSearchPressed}
133
+ search={search}
134
+ />
124
135
  )}
125
136
  </Modal>
126
137
  )
@@ -5,11 +5,10 @@ import * as inflection from "inflection"
5
5
  import Logger from "../logger"
6
6
  import {ReadersWriterLock} from "epic-locks"
7
7
  import {serialize as objectToFormData} from "object-to-formdata"
8
- import * as models from "models"
8
+ import {TableSetting} from "models"
9
9
  import {v4 as uuidv4} from "uuid"
10
10
 
11
11
  const logger = new Logger({name: "ApiMaker / TableSettings"})
12
- const {TableSetting} = models
13
12
 
14
13
  // Have a lock for each unique table identifier
15
14
  const tableSettingsLocks = {}
@@ -10,13 +10,9 @@ const useCanCan = (abilitiesCallback, dependencies) => {
10
10
 
11
11
  s.useStates({
12
12
  canCan: null,
13
- lastUpdate: new Date()
13
+ lastUpdate: () => new Date()
14
14
  })
15
15
 
16
- if (!dependencies) {
17
- dependencies = [currentUser?.id()]
18
- }
19
-
20
16
  const loadAbilities = useCallback(async () => {
21
17
  const canCan = CanCan.current()
22
18
  const abilities = s.p.abilitiesCallback()
@@ -43,6 +39,10 @@ const useCanCan = (abilitiesCallback, dependencies) => {
43
39
  }
44
40
  }, [])
45
41
 
42
+ if (!dependencies) {
43
+ dependencies = [currentUser?.id()]
44
+ }
45
+
46
46
  useMemo(() => {
47
47
  loadAbilitiesOnNew()
48
48
  }, dependencies)
@@ -1,26 +1,52 @@
1
- import {useCallback, useMemo} from "react"
1
+ import React, {useCallback, useContext, useMemo} from "react"
2
2
  import Devise from "./devise"
3
3
  import {digg} from "diggerize"
4
+ import EventEmitter from "events"
4
5
  import * as inflection from "inflection"
5
6
  import Logger from "./logger"
6
7
  import Services from "./services"
7
8
  import useEventEmitter from "./use-event-emitter"
8
9
  import useShape from "set-state-compare/src/use-shape"
9
10
 
11
+ const events = new EventEmitter()
10
12
  const logger = new Logger({name: "ApiMaker / useCurrentUser"})
11
13
 
12
- // logger.setDebug(true)
14
+ logger.setDebug(false)
13
15
 
14
- const useCurrentUser = (args) => {
15
- const s = useShape(args || {})
16
- const scope = args?.scope || "user"
16
+ const useCurrentUser = (props = {}) => {
17
+ const {scope = "user", withData, ...restProps} = props
18
+
19
+ if (Object.keys(restProps).length > 0) {
20
+ throw new Error(`Unknown props given to useCurrentUser: ${Object.keys(restProps).join(", ")}`)
21
+ }
22
+
23
+ const scopeInstance = Devise.getScope(scope)
24
+ const currentUserContext = useContext(scopeInstance.getContext())
25
+
26
+ if (withData) {
27
+ return currentUserContext
28
+ } else {
29
+ return currentUserContext.model
30
+ }
31
+ }
32
+
33
+ const WithCurrentUser = (props = {}) => {
34
+ const {children, scope = "user", ...restProps} = props
35
+
36
+ if (Object.keys(restProps).length > 0) {
37
+ throw new Error(`Unknown props given to WithCurrentUser: ${Object.keys(restProps).join(", ")}`)
38
+ }
39
+
40
+ const s = useShape(props)
17
41
  const scopeName = `current${inflection.camelize(scope)}`
42
+ const scopeInstance = Devise.getScope(scope)
43
+ const ScopeContext = scopeInstance.getContext()
18
44
 
19
45
  s.meta.scope = scope
20
46
  s.meta.scopeName = scopeName
21
47
 
22
48
  const loadCurrentUserFromRequest = useCallback(async () => {
23
- const {scope, scopeName} = s.m
49
+ const {scope} = s.m
24
50
  const getArgsMethodName = `get${inflection.camelize(scope)}Args`
25
51
  const args = Devise[getArgsMethodName]()
26
52
 
@@ -29,12 +55,16 @@ const useCurrentUser = (args) => {
29
55
  const result = await Services.current().sendRequest("Devise::Current", {query: args.query, scope})
30
56
  const current = digg(result, "current")[0]
31
57
 
32
- if (!(scopeName in s.setStates)) throw new Error(`'${scopeName}' not found in setStates`)
33
58
  if (current) Devise.updateSession(current)
34
59
 
35
- s.setStates[scopeName](current)
60
+ s.set({
61
+ result: {
62
+ loaded: true,
63
+ model: current
64
+ }
65
+ })
36
66
 
37
- if (s.props.onCurrentUserLoaded) setTimeout(() => s.props.onCurrentUserLoaded(current), 0)
67
+ events.emit("currentUserLoaded", {current})
38
68
  }, [])
39
69
 
40
70
  const defaultCurrentUser = useCallback(() => {
@@ -51,25 +81,27 @@ const useCurrentUser = (args) => {
51
81
  logger.debug(() => `Setting ${scope} from global current scope: ${current?.id()}`)
52
82
  }
53
83
 
54
- if (current && s.props.onCurrentUserLoaded) {
55
- setTimeout(() => s.props.onCurrentUserLoaded(current), 0)
84
+ if (current) {
85
+ events.emit("currentUserLoaded", {current})
56
86
  }
57
87
 
58
88
  return current
59
89
  }, [])
60
90
 
61
- const useStatesArgument = {}
62
-
63
- useStatesArgument[scopeName] = () => defaultCurrentUser()
64
-
65
- s.useStates(useStatesArgument)
91
+ s.useStates({
92
+ result: () => ({
93
+ loaded: false,
94
+ model: defaultCurrentUser()
95
+ })
96
+ })
66
97
 
67
98
  const updateCurrentUser = useCallback(() => {
68
- const setStatesArgument = {}
69
-
70
- setStatesArgument[s.m.scopeName] = Devise[s.m.scopeName]()
71
-
72
- s.set(setStatesArgument)
99
+ s.set({
100
+ result: {
101
+ loaded: true,
102
+ model: Devise[s.m.scopeName]()
103
+ }
104
+ })
73
105
  }, [])
74
106
 
75
107
  useMemo(() => {
@@ -79,10 +111,23 @@ const useCurrentUser = (args) => {
79
111
  }
80
112
  }, [])
81
113
 
82
- useEventEmitter(Devise.events(), "onDeviseSignIn", updateCurrentUser)
83
- useEventEmitter(Devise.events(), "onDeviseSignOut", updateCurrentUser)
114
+ const onDeviseSignIn = useCallback(() => {
115
+ updateCurrentUser()
116
+ }, [])
117
+
118
+ const onDeviseSignOut = useCallback(() => {
119
+ updateCurrentUser()
120
+ }, [])
121
+
122
+ useEventEmitter(Devise.events(), "onDeviseSignIn", onDeviseSignIn)
123
+ useEventEmitter(Devise.events(), "onDeviseSignOut", onDeviseSignOut)
84
124
 
85
- return s.s[scopeName]
125
+ return (
126
+ <ScopeContext.Provider value={s.s.result}>
127
+ {children}
128
+ </ScopeContext.Provider>
129
+ )
86
130
  }
87
131
 
132
+ export {events, WithCurrentUser}
88
133
  export default useCurrentUser