@kaspernj/api-maker 1.0.2090 → 1.0.2091

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/link.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  /* eslint-disable sort-imports */
3
- import { Platform, Pressable } from "react-native";
3
+ import { Platform, Pressable, StyleSheet } from "react-native";
4
4
  import { shapeComponent } from "set-state-compare/build/shape-component.js";
5
5
  import { useApiMaker } from "@kaspernj/api-maker/build/with-api-maker.js";
6
6
  import BaseComponent from "./base-component";
@@ -10,17 +10,120 @@ import dataSetToAttributes from "./data-set-to-attributes.js";
10
10
  import memo from "set-state-compare/build/memo.js";
11
11
  export default memo(shapeComponent(class ApiMakerLink extends BaseComponent {
12
12
  static propTypes = {
13
+ paddingHorizontal: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
14
+ paddingVertical: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
13
15
  usePressable: PropTypes.bool
14
16
  };
15
17
  setup() {
16
18
  this.apiMaker = useApiMaker();
17
19
  }
18
20
  render() {
19
- const { dataSet, to, onClick, onPress, testID, usePressable, ...restProps } = this.props;
21
+ const { dataSet, to, onClick, onPress, paddingHorizontal, paddingVertical, style, testID, usePressable, ...restProps } = this.props;
22
+ const linkStyle = this.linkStyle({ paddingHorizontal, paddingVertical, style, usePressable });
20
23
  if (Platform.OS == "web" && !usePressable) {
21
- return (_jsx("a", { ...dataSetToAttributes(Object.assign({ testid: testID }, dataSet)), href: to || "#", onClick: this.tt.onLinkClicked, ...restProps }));
24
+ return (_jsx("a", { ...dataSetToAttributes(Object.assign({ testid: testID }, dataSet)), href: to || "#", onClick: this.tt.onLinkClicked, style: linkStyle, ...restProps }));
22
25
  }
23
- return (_jsx(Pressable, { dataSet: dataSet, onPress: this.tt.onPress, testID: testID, ...restProps }));
26
+ return (_jsx(Pressable, { dataSet: dataSet, onPress: this.tt.onPress, style: linkStyle, testID: testID, ...restProps }));
27
+ }
28
+ /** Returns a cached style with padding props applied. */
29
+ linkStyle({ paddingHorizontal, paddingVertical, style, usePressable }) {
30
+ if (Platform.OS == "web" && !usePressable) {
31
+ return this.linkStyleForAnchor({ paddingHorizontal, paddingVertical, style });
32
+ }
33
+ return this.linkStyleForPressable({ paddingHorizontal, paddingVertical, style });
34
+ }
35
+ /** Returns the anchor style with padding props applied. */
36
+ linkStyleForAnchor({ paddingHorizontal, paddingVertical, style }) {
37
+ return this.cache("linkStyleForAnchor", () => {
38
+ const resolvedStyle = this.resolveStyleForAnchor(style);
39
+ const overrides = this.paddingOverridesFromStyle({ paddingHorizontal, paddingVertical, style: resolvedStyle });
40
+ if (!overrides)
41
+ return resolvedStyle;
42
+ const nextStyle = { ...resolvedStyle };
43
+ delete nextStyle.paddingHorizontal;
44
+ delete nextStyle.paddingVertical;
45
+ return { ...nextStyle, ...overrides };
46
+ }, [paddingHorizontal, paddingVertical, style]);
47
+ }
48
+ /** Returns a Pressable-compatible style with padding props applied. */
49
+ linkStyleForPressable({ paddingHorizontal, paddingVertical, style }) {
50
+ return this.cache("linkStyleForPressable", () => {
51
+ if (typeof style == "function") {
52
+ return (state) => {
53
+ const resolvedStyle = style(state);
54
+ const overrides = this.paddingOverridesFromStyle({ paddingHorizontal, paddingVertical, style: resolvedStyle });
55
+ if (!overrides)
56
+ return resolvedStyle;
57
+ if (Array.isArray(resolvedStyle))
58
+ return [...resolvedStyle, overrides];
59
+ if (resolvedStyle && typeof resolvedStyle == "object") {
60
+ return { ...this.stripPaddingShorthand(resolvedStyle), ...overrides };
61
+ }
62
+ return [resolvedStyle, overrides];
63
+ };
64
+ }
65
+ const overrides = this.paddingOverridesFromStyle({ paddingHorizontal, paddingVertical, style });
66
+ if (!overrides)
67
+ return style;
68
+ if (!style)
69
+ return overrides;
70
+ if (Array.isArray(style))
71
+ return [...style, overrides];
72
+ if (typeof style == "object") {
73
+ return { ...this.stripPaddingShorthand(style), ...overrides };
74
+ }
75
+ return [style, overrides];
76
+ }, [paddingHorizontal, paddingVertical, style]);
77
+ }
78
+ /** Resolves a style object for anchor rendering. */
79
+ resolveStyleForAnchor(style) {
80
+ if (typeof style == "function") {
81
+ return StyleSheet.flatten(style({ pressed: false, focused: false, hovered: false })) || {};
82
+ }
83
+ if (Array.isArray(style))
84
+ return StyleSheet.flatten(style) || {};
85
+ return style || {};
86
+ }
87
+ /** Returns padding overrides based on the resolved style. */
88
+ paddingOverridesFromStyle({ paddingHorizontal, paddingVertical, style }) {
89
+ const styleObject = StyleSheet.flatten(style) || {};
90
+ const stylePaddingHorizontal = styleObject.paddingHorizontal;
91
+ const stylePaddingVertical = styleObject.paddingVertical;
92
+ const paddingHorizontalDefined = this.isDefined(paddingHorizontal);
93
+ const paddingVerticalDefined = this.isDefined(paddingVertical);
94
+ const stylePaddingHorizontalDefined = this.isDefined(stylePaddingHorizontal);
95
+ const stylePaddingVerticalDefined = this.isDefined(stylePaddingVertical);
96
+ const hasPaddingHorizontal = paddingHorizontalDefined || stylePaddingHorizontalDefined;
97
+ const hasPaddingVertical = paddingVerticalDefined || stylePaddingVerticalDefined;
98
+ if (!hasPaddingHorizontal && !hasPaddingVertical)
99
+ return null;
100
+ const resolvedPaddingHorizontal = paddingHorizontalDefined ? paddingHorizontal : stylePaddingHorizontal;
101
+ const resolvedPaddingVertical = paddingVerticalDefined ? paddingVertical : stylePaddingVertical;
102
+ const overrides = {};
103
+ if (this.isDefined(resolvedPaddingHorizontal)) {
104
+ if (!this.isDefined(styleObject.paddingLeft))
105
+ overrides.paddingLeft = resolvedPaddingHorizontal;
106
+ if (!this.isDefined(styleObject.paddingRight))
107
+ overrides.paddingRight = resolvedPaddingHorizontal;
108
+ }
109
+ if (this.isDefined(resolvedPaddingVertical)) {
110
+ if (!this.isDefined(styleObject.paddingTop))
111
+ overrides.paddingTop = resolvedPaddingVertical;
112
+ if (!this.isDefined(styleObject.paddingBottom))
113
+ overrides.paddingBottom = resolvedPaddingVertical;
114
+ }
115
+ return overrides;
116
+ }
117
+ /** Removes padding shorthand values from a style object. */
118
+ stripPaddingShorthand(style) {
119
+ const nextStyle = { ...style };
120
+ delete nextStyle.paddingHorizontal;
121
+ delete nextStyle.paddingVertical;
122
+ return nextStyle;
123
+ }
124
+ /** Returns true when a value is neither null nor undefined. */
125
+ isDefined(value) {
126
+ return value !== null && value !== undefined;
24
127
  }
25
128
  onLinkClicked = (e, ...restArgs) => {
26
129
  const { onClick, onPress } = this.props;
@@ -58,4 +161,4 @@ export default memo(shapeComponent(class ApiMakerLink extends BaseComponent {
58
161
  history.push(this.props.to);
59
162
  }
60
163
  }));
61
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsibGluay5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBQyxNQUFNLGNBQWMsQ0FBQTtBQUNoRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekUsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDZDQUE2QyxDQUFBO0FBQ3ZFLE9BQU8sYUFBYSxNQUFNLGtCQUFrQixDQUFBO0FBQzVDLE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxtQkFBbUIsTUFBTSw2QkFBNkIsQ0FBQTtBQUM3RCxPQUFPLElBQUksTUFBTSxpQ0FBaUMsQ0FBQTtBQUVsRCxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxZQUFhLFNBQVEsYUFBYTtJQUN6RSxNQUFNLENBQUMsU0FBUyxHQUFHO1FBQ2pCLFlBQVksRUFBRSxTQUFTLENBQUMsSUFBSTtLQUM3QixDQUFBO0lBRUQsS0FBSztRQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsV0FBVyxFQUFFLENBQUE7SUFDL0IsQ0FBQztJQUVELE1BQU07UUFDSixNQUFNLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxTQUFTLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBRXRGLElBQUksUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUMxQyxPQUFPLENBQ0wsZUFDTSxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsTUFBTSxFQUFFLE1BQU0sRUFBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQ2pFLElBQUksRUFBRSxFQUFFLElBQUksR0FBRyxFQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsS0FDMUIsU0FBUyxHQUNiLENBQ0gsQ0FBQTtRQUNILENBQUM7UUFFRCxPQUFPLENBQ0wsS0FBQyxTQUFTLElBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBTSxTQUFTLEdBQUksQ0FDekYsQ0FBQTtJQUNILENBQUM7SUFFRCxhQUFhLEdBQUcsQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLEVBQUUsRUFBRTtRQUNqQyxNQUFNLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFFckMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQTtRQUN6QixDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQTtRQUN6QixDQUFDO1FBRUQsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ3JGLENBQUMsQ0FBQyxjQUFjLEVBQUUsQ0FBQTtZQUVsQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUE7UUFDakIsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELE9BQU8sR0FBRyxHQUFHLEVBQUU7UUFDYixNQUFNLEVBQUMsT0FBTyxFQUFFLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFFckMsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFDLCtCQUErQjtRQUN6RCxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE9BQU8sQ0FBQyxDQUFDLEVBQUUsR0FBRyxRQUFRLENBQUMsQ0FBQSxDQUFDLCtCQUErQjtRQUN6RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ2pCLENBQUMsQ0FBQTtJQUVELFFBQVEsR0FBRyxHQUFHLEVBQUU7UUFDZCw2R0FBNkc7UUFDN0csVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNyQixDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDUCxDQUFDLENBQUE7SUFFRCxZQUFZO1FBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFakQsSUFBSSxDQUFDLE9BQU87WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdEQUF3RCxDQUFDLENBQUE7UUFFdkYsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFBO0lBQzdCLENBQUM7Q0FDRixDQUFDLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHNvcnQtaW1wb3J0cyAqL1xuaW1wb3J0IHtQbGF0Zm9ybSwgUHJlc3NhYmxlfSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IHt1c2VBcGlNYWtlcn0gZnJvbSBcIkBrYXNwZXJuai9hcGktbWFrZXIvYnVpbGQvd2l0aC1hcGktbWFrZXIuanNcIlxuaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCBkYXRhU2V0VG9BdHRyaWJ1dGVzIGZyb20gXCIuL2RhdGEtc2V0LXRvLWF0dHJpYnV0ZXMuanNcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL21lbW8uanNcIlxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VyTGluayBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIHVzZVByZXNzYWJsZTogUHJvcFR5cGVzLmJvb2xcbiAgfVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMuYXBpTWFrZXIgPSB1c2VBcGlNYWtlcigpXG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2RhdGFTZXQsIHRvLCBvbkNsaWNrLCBvblByZXNzLCB0ZXN0SUQsIHVzZVByZXNzYWJsZSwgLi4ucmVzdFByb3BzfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChQbGF0Zm9ybS5PUyA9PSBcIndlYlwiICYmICF1c2VQcmVzc2FibGUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxhXG4gICAgICAgICAgey4uLmRhdGFTZXRUb0F0dHJpYnV0ZXMoT2JqZWN0LmFzc2lnbih7dGVzdGlkOiB0ZXN0SUR9LCBkYXRhU2V0KSl9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLW9iamVjdC1zcHJlYWRcbiAgICAgICAgICBocmVmPXt0byB8fCBcIiNcIn1cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLnR0Lm9uTGlua0NsaWNrZWR9XG4gICAgICAgICAgey4uLnJlc3RQcm9wc31cbiAgICAgICAgLz5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFByZXNzYWJsZSBkYXRhU2V0PXtkYXRhU2V0fSBvblByZXNzPXt0aGlzLnR0Lm9uUHJlc3N9IHRlc3RJRD17dGVzdElEfSB7Li4ucmVzdFByb3BzfSAvPlxuICAgIClcbiAgfVxuXG4gIG9uTGlua0NsaWNrZWQgPSAoZSwgLi4ucmVzdEFyZ3MpID0+IHtcbiAgICBjb25zdCB7b25DbGljaywgb25QcmVzc30gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAob25DbGljaykge1xuICAgICAgb25DbGljayhlLCAuLi5yZXN0QXJncylcbiAgICB9XG5cbiAgICBpZiAob25QcmVzcykge1xuICAgICAgb25QcmVzcyhlLCAuLi5yZXN0QXJncylcbiAgICB9XG5cbiAgICBpZiAoIWUuZGVmYXVsdFByZXZlbnRlZCAmJiAhZS5jdHJsS2V5ICYmICFlLm1ldGFLZXkgJiYgdGhpcy5wcm9wcy50YXJnZXQgIT0gXCJfYmxhbmtcIikge1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgIHRoaXMucmVkaXJlY3QoKVxuICAgIH1cbiAgfVxuXG4gIG9uUHJlc3MgPSAoKSA9PiB7XG4gICAgY29uc3Qge29uQ2xpY2ssIG9uUHJlc3N9ID0gdGhpcy5wcm9wc1xuXG4gICAgaWYgKG9uQ2xpY2spIHtcbiAgICAgIG9uQ2xpY2soZSwgLi4ucmVzdEFyZ3MpIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiAgICB9XG5cbiAgICBpZiAob25QcmVzcykge1xuICAgICAgb25QcmVzcyhlLCAuLi5yZXN0QXJncykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgIH1cblxuICAgIHRoaXMucmVkaXJlY3QoKVxuICB9XG5cbiAgcmVkaXJlY3QgPSAoKSA9PiB7XG4gICAgLy8gSWYgbm8gdGltZW91dCBpcyB1c2VkLCB0aGlzIGNhbiBjYXVzZSBhbiBcImNvbXBvbmVudCBzdXNwZW5kZWQgd2hpbGUgcmVzcG9uZGluZyB0byBzeW5jaHJvbm91cyBpbnB1dFwiLWVycm9yXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLl9oaXN0b3J5UHVzaCgpXG4gICAgfSwgMClcbiAgfVxuXG4gIF9oaXN0b3J5UHVzaCgpIHtcbiAgICBjb25zdCBoaXN0b3J5ID0gdGhpcy5hcGlNYWtlci5jb25maWcuZ2V0SGlzdG9yeSgpXG5cbiAgICBpZiAoIWhpc3RvcnkpIHRocm93IG5ldyBFcnJvcihcIkhpc3RvcnkgaGFzbid0IGJlZW4gc2V0IGluIHRoZSBBUEkgbWFrZXIgY29uZmlndXJhdGlvblwiKVxuXG4gICAgaGlzdG9yeS5wdXNoKHRoaXMucHJvcHMudG8pXG4gIH1cbn0pKVxuIl19
164
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluay5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsibGluay5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLGlDQUFpQztBQUNqQyxPQUFPLEVBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDNUQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLDRDQUE0QyxDQUFBO0FBQ3pFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQTtBQUN2RSxPQUFPLGFBQWEsTUFBTSxrQkFBa0IsQ0FBQTtBQUM1QyxPQUFPLFNBQVMsTUFBTSxZQUFZLENBQUE7QUFDbEMsT0FBTyxLQUFLLE1BQU0sT0FBTyxDQUFBO0FBQ3pCLE9BQU8sbUJBQW1CLE1BQU0sNkJBQTZCLENBQUE7QUFDN0QsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFFbEQsZUFBZSxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sWUFBYSxTQUFRLGFBQWE7SUFDekUsTUFBTSxDQUFDLFNBQVMsR0FBRztRQUNqQixpQkFBaUIsRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDNUUsZUFBZSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMxRSxZQUFZLEVBQUUsU0FBUyxDQUFDLElBQUk7S0FDN0IsQ0FBQTtJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLFdBQVcsRUFBRSxDQUFBO0lBQy9CLENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxFQUFDLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxlQUFlLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsR0FBRyxTQUFT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QyxDQUFBO0lBRUQsUUFBUSxHQUFHLEdBQUcsRUFBRTtRQUNkLDZHQUE2RztRQUM3RyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3JCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNQLENBQUMsQ0FBQTtJQUVELFlBQVk7UUFDVixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQTtRQUVqRCxJQUFJLENBQUMsT0FBTztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0RBQXdELENBQUMsQ0FBQTtRQUV2RixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDN0IsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgc29ydC1pbXBvcnRzICovXG5pbXBvcnQge1BsYXRmb3JtLCBQcmVzc2FibGUsIFN0eWxlU2hlZXR9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQge3VzZUFwaU1ha2VyfSBmcm9tIFwiQGthc3Blcm5qL2FwaS1tYWtlci9idWlsZC93aXRoLWFwaS1tYWtlci5qc1wiXG5pbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi9iYXNlLWNvbXBvbmVudFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IGRhdGFTZXRUb0F0dHJpYnV0ZXMgZnJvbSBcIi4vZGF0YS1zZXQtdG8tYXR0cmlidXRlcy5qc1wiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgQXBpTWFrZXJMaW5rIGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgcGFkZGluZ0hvcml6b250YWw6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBwYWRkaW5nVmVydGljYWw6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICB1c2VQcmVzc2FibGU6IFByb3BUeXBlcy5ib29sXG4gIH1cblxuICBzZXR1cCgpIHtcbiAgICB0aGlzLmFwaU1ha2VyID0gdXNlQXBpTWFrZXIoKVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGNvbnN0IHtkYXRhU2V0LCB0bywgb25DbGljaywgb25QcmVzcywgcGFkZGluZ0hvcml6b250YWwsIHBhZGRpbmdWZXJ0aWNhbCwgc3R5bGUsIHRlc3RJRCwgdXNlUHJlc3NhYmxlLCAuLi5yZXN0UHJvcHN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IGxpbmtTdHlsZSA9IHRoaXMubGlua1N0eWxlKHtwYWRkaW5nSG9yaXpvbnRhbCwgcGFkZGluZ1ZlcnRpY2FsLCBzdHlsZSwgdXNlUHJlc3NhYmxlfSlcblxuICAgIGlmIChQbGF0Zm9ybS5PUyA9PSBcIndlYlwiICYmICF1c2VQcmVzc2FibGUpIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxhXG4gICAgICAgICAgey4uLmRhdGFTZXRUb0F0dHJpYnV0ZXMoT2JqZWN0LmFzc2lnbih7dGVzdGlkOiB0ZXN0SUR9LCBkYXRhU2V0KSl9IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJlZmVyLW9iamVjdC1zcHJlYWRcbiAgICAgICAgICBocmVmPXt0byB8fCBcIiNcIn1cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLnR0Lm9uTGlua0NsaWNrZWR9XG4gICAgICAgICAgc3R5bGU9e2xpbmtTdHlsZX1cbiAgICAgICAgICB7Li4ucmVzdFByb3BzfVxuICAgICAgICAvPlxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8UHJlc3NhYmxlIGRhdGFTZXQ9e2RhdGFTZXR9IG9uUHJlc3M9e3RoaXMudHQub25QcmVzc30gc3R5bGU9e2xpbmtTdHlsZX0gdGVzdElEPXt0ZXN0SUR9IHsuLi5yZXN0UHJvcHN9IC8+XG4gICAgKVxuICB9XG5cbiAgLyoqIFJldHVybnMgYSBjYWNoZWQgc3R5bGUgd2l0aCBwYWRkaW5nIHByb3BzIGFwcGxpZWQuICovXG4gIGxpbmtTdHlsZSh7cGFkZGluZ0hvcml6b250YWwsIHBhZGRpbmdWZXJ0aWNhbCwgc3R5bGUsIHVzZVByZXNzYWJsZX0pIHtcbiAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIiAmJiAhdXNlUHJlc3NhYmxlKSB7XG4gICAgICByZXR1cm4gdGhpcy5saW5rU3R5bGVGb3JBbmNob3Ioe3BhZGRpbmdIb3Jpem9udGFsLCBwYWRkaW5nVmVydGljYWwsIHN0eWxlfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5saW5rU3R5bGVGb3JQcmVzc2FibGUoe3BhZGRpbmdIb3Jpem9udGFsLCBwYWRkaW5nVmVydGljYWwsIHN0eWxlfSlcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRoZSBhbmNob3Igc3R5bGUgd2l0aCBwYWRkaW5nIHByb3BzIGFwcGxpZWQuICovXG4gIGxpbmtTdHlsZUZvckFuY2hvcih7cGFkZGluZ0hvcml6b250YWwsIHBhZGRpbmdWZXJ0aWNhbCwgc3R5bGV9KSB7XG4gICAgcmV0dXJuIHRoaXMuY2FjaGUoXCJsaW5rU3R5bGVGb3JBbmNob3JcIiwgKCkgPT4ge1xuICAgICAgY29uc3QgcmVzb2x2ZWRTdHlsZSA9IHRoaXMucmVzb2x2ZVN0eWxlRm9yQW5jaG9yKHN0eWxlKVxuICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gdGhpcy5wYWRkaW5nT3ZlcnJpZGVzRnJvbVN0eWxlKHtwYWRkaW5nSG9yaXpvbnRhbCwgcGFkZGluZ1ZlcnRpY2FsLCBzdHlsZTogcmVzb2x2ZWRTdHlsZX0pXG5cbiAgICAgIGlmICghb3ZlcnJpZGVzKSByZXR1cm4gcmVzb2x2ZWRTdHlsZVxuXG4gICAgICBjb25zdCBuZXh0U3R5bGUgPSB7Li4ucmVzb2x2ZWRTdHlsZX1cblxuICAgICAgZGVsZXRlIG5leHRTdHlsZS5wYWRkaW5nSG9yaXpvbnRhbFxuICAgICAgZGVsZXRlIG5leHRTdHlsZS5wYWRkaW5nVmVydGljYWxcblxuICAgICAgcmV0dXJuIHsuLi5uZXh0U3R5bGUsIC4uLm92ZXJyaWRlc31cbiAgICB9LCBbcGFkZGluZ0hvcml6b250YWwsIHBhZGRpbmdWZXJ0aWNhbCwgc3R5bGVdKVxuICB9XG5cbiAgLyoqIFJldHVybnMgYSBQcmVzc2FibGUtY29tcGF0aWJsZSBzdHlsZSB3aXRoIHBhZGRpbmcgcHJvcHMgYXBwbGllZC4gKi9cbiAgbGlua1N0eWxlRm9yUHJlc3NhYmxlKHtwYWRkaW5nSG9yaXpvbnRhbCwgcGFkZGluZ1ZlcnRpY2FsLCBzdHlsZX0pIHtcbiAgICByZXR1cm4gdGhpcy5jYWNoZShcImxpbmtTdHlsZUZvclByZXNzYWJsZVwiLCAoKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHN0eWxlID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICByZXR1cm4gKHN0YXRlKSA9PiB7XG4gICAgICAgICAgY29uc3QgcmVzb2x2ZWRTdHlsZSA9IHN0eWxlKHN0YXRlKVxuICAgICAgICAgIGNvbnN0IG92ZXJyaWRlcyA9IHRoaXMucGFkZGluZ092ZXJyaWRlc0Zyb21TdHlsZSh7cGFkZGluZ0hvcml6b250YWwsIHBhZGRpbmdWZXJ0aWNhbCwgc3R5bGU6IHJlc29sdmVkU3R5bGV9KVxuXG4gICAgICAgICAgaWYgKCFvdmVycmlkZXMpIHJldHVybiByZXNvbHZlZFN0eWxlXG5cbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvbHZlZFN0eWxlKSkgcmV0dXJuIFsuLi5yZXNvbHZlZFN0eWxlLCBvdmVycmlkZXNdXG5cbiAgICAgICAgICBpZiAocmVzb2x2ZWRTdHlsZSAmJiB0eXBlb2YgcmVzb2x2ZWRTdHlsZSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgICByZXR1cm4gey4uLnRoaXMuc3RyaXBQYWRkaW5nU2hvcnRoYW5kKHJlc29sdmVkU3R5bGUpLCAuLi5vdmVycmlkZXN9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIFtyZXNvbHZlZFN0eWxlLCBvdmVycmlkZXNdXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3ZlcnJpZGVzID0gdGhpcy5wYWRkaW5nT3ZlcnJpZGVzRnJvbVN0eWxlKHtwYWRkaW5nSG9yaXpvbnRhbCwgcGFkZGluZ1ZlcnRpY2FsLCBzdHlsZX0pXG5cbiAgICAgIGlmICghb3ZlcnJpZGVzKSByZXR1cm4gc3R5bGVcblxuICAgICAgaWYgKCFzdHlsZSkgcmV0dXJuIG92ZXJyaWRlc1xuXG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShzdHlsZSkpIHJldHVybiBbLi4uc3R5bGUsIG92ZXJyaWRlc11cblxuICAgICAgaWYgKHR5cGVvZiBzdHlsZSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgIHJldHVybiB7Li4udGhpcy5zdHJpcFBhZGRpbmdTaG9ydGhhbmQoc3R5bGUpLCAuLi5vdmVycmlkZXN9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBbc3R5bGUsIG92ZXJyaWRlc11cbiAgICB9LCBbcGFkZGluZ0hvcml6b250YWwsIHBhZGRpbmdWZXJ0aWNhbCwgc3R5bGVdKVxuICB9XG5cbiAgLyoqIFJlc29sdmVzIGEgc3R5bGUgb2JqZWN0IGZvciBhbmNob3IgcmVuZGVyaW5nLiAqL1xuICByZXNvbHZlU3R5bGVGb3JBbmNob3Ioc3R5bGUpIHtcbiAgICBpZiAodHlwZW9mIHN0eWxlID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIFN0eWxlU2hlZXQuZmxhdHRlbihzdHlsZSh7cHJlc3NlZDogZmFsc2UsIGZvY3VzZWQ6IGZhbHNlLCBob3ZlcmVkOiBmYWxzZX0pKSB8fCB7fVxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KHN0eWxlKSkgcmV0dXJuIFN0eWxlU2hlZXQuZmxhdHRlbihzdHlsZSkgfHwge31cblxuICAgIHJldHVybiBzdHlsZSB8fCB7fVxuICB9XG5cbiAgLyoqIFJldHVybnMgcGFkZGluZyBvdmVycmlkZXMgYmFzZWQgb24gdGhlIHJlc29sdmVkIHN0eWxlLiAqL1xuICBwYWRkaW5nT3ZlcnJpZGVzRnJvbVN0eWxlKHtwYWRkaW5nSG9yaXpvbnRhbCwgcGFkZGluZ1ZlcnRpY2FsLCBzdHlsZX0pIHtcbiAgICBjb25zdCBzdHlsZU9iamVjdCA9IFN0eWxlU2hlZXQuZmxhdHRlbihzdHlsZSkgfHwge31cbiAgICBjb25zdCBzdHlsZVBhZGRpbmdIb3Jpem9udGFsID0gc3R5bGVPYmplY3QucGFkZGluZ0hvcml6b250YWxcbiAgICBjb25zdCBzdHlsZVBhZGRpbmdWZXJ0aWNhbCA9IHN0eWxlT2JqZWN0LnBhZGRpbmdWZXJ0aWNhbFxuICAgIGNvbnN0IHBhZGRpbmdIb3Jpem9udGFsRGVmaW5lZCA9IHRoaXMuaXNEZWZpbmVkKHBhZGRpbmdIb3Jpem9udGFsKVxuICAgIGNvbnN0IHBhZGRpbmdWZXJ0aWNhbERlZmluZWQgPSB0aGlzLmlzRGVmaW5lZChwYWRkaW5nVmVydGljYWwpXG4gICAgY29uc3Qgc3R5bGVQYWRkaW5nSG9yaXpvbnRhbERlZmluZWQgPSB0aGlzLmlzRGVmaW5lZChzdHlsZVBhZGRpbmdIb3Jpem9udGFsKVxuICAgIGNvbnN0IHN0eWxlUGFkZGluZ1ZlcnRpY2FsRGVmaW5lZCA9IHRoaXMuaXNEZWZpbmVkKHN0eWxlUGFkZGluZ1ZlcnRpY2FsKVxuICAgIGNvbnN0IGhhc1BhZGRpbmdIb3Jpem9udGFsID0gcGFkZGluZ0hvcml6b250YWxEZWZpbmVkIHx8IHN0eWxlUGFkZGluZ0hvcml6b250YWxEZWZpbmVkXG4gICAgY29uc3QgaGFzUGFkZGluZ1ZlcnRpY2FsID0gcGFkZGluZ1ZlcnRpY2FsRGVmaW5lZCB8fCBzdHlsZVBhZGRpbmdWZXJ0aWNhbERlZmluZWRcblxuICAgIGlmICghaGFzUGFkZGluZ0hvcml6b250YWwgJiYgIWhhc1BhZGRpbmdWZXJ0aWNhbCkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHJlc29sdmVkUGFkZGluZ0hvcml6b250YWwgPSBwYWRkaW5nSG9yaXpvbnRhbERlZmluZWQgPyBwYWRkaW5nSG9yaXpvbnRhbCA6IHN0eWxlUGFkZGluZ0hvcml6b250YWxcbiAgICBjb25zdCByZXNvbHZlZFBhZGRpbmdWZXJ0aWNhbCA9IHBhZGRpbmdWZXJ0aWNhbERlZmluZWQgPyBwYWRkaW5nVmVydGljYWwgOiBzdHlsZVBhZGRpbmdWZXJ0aWNhbFxuICAgIGNvbnN0IG92ZXJyaWRlcyA9IHt9XG5cbiAgICBpZiAodGhpcy5pc0RlZmluZWQocmVzb2x2ZWRQYWRkaW5nSG9yaXpvbnRhbCkpIHtcbiAgICAgIGlmICghdGhpcy5pc0RlZmluZWQoc3R5bGVPYmplY3QucGFkZGluZ0xlZnQpKSBvdmVycmlkZXMucGFkZGluZ0xlZnQgPSByZXNvbHZlZFBhZGRpbmdIb3Jpem9udGFsXG4gICAgICBpZiAoIXRoaXMuaXNEZWZpbmVkKHN0eWxlT2JqZWN0LnBhZGRpbmdSaWdodCkpIG92ZXJyaWRlcy5wYWRkaW5nUmlnaHQgPSByZXNvbHZlZFBhZGRpbmdIb3Jpem9udGFsXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNEZWZpbmVkKHJlc29sdmVkUGFkZGluZ1ZlcnRpY2FsKSkge1xuICAgICAgaWYgKCF0aGlzLmlzRGVmaW5lZChzdHlsZU9iamVjdC5wYWRkaW5nVG9wKSkgb3ZlcnJpZGVzLnBhZGRpbmdUb3AgPSByZXNvbHZlZFBhZGRpbmdWZXJ0aWNhbFxuICAgICAgaWYgKCF0aGlzLmlzRGVmaW5lZChzdHlsZU9iamVjdC5wYWRkaW5nQm90dG9tKSkgb3ZlcnJpZGVzLnBhZGRpbmdCb3R0b20gPSByZXNvbHZlZFBhZGRpbmdWZXJ0aWNhbFxuICAgIH1cblxuICAgIHJldHVybiBvdmVycmlkZXNcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIHBhZGRpbmcgc2hvcnRoYW5kIHZhbHVlcyBmcm9tIGEgc3R5bGUgb2JqZWN0LiAqL1xuICBzdHJpcFBhZGRpbmdTaG9ydGhhbmQoc3R5bGUpIHtcbiAgICBjb25zdCBuZXh0U3R5bGUgPSB7Li4uc3R5bGV9XG5cbiAgICBkZWxldGUgbmV4dFN0eWxlLnBhZGRpbmdIb3Jpem9udGFsXG4gICAgZGVsZXRlIG5leHRTdHlsZS5wYWRkaW5nVmVydGljYWxcblxuICAgIHJldHVybiBuZXh0U3R5bGVcbiAgfVxuXG4gIC8qKiBSZXR1cm5zIHRydWUgd2hlbiBhIHZhbHVlIGlzIG5laXRoZXIgbnVsbCBub3IgdW5kZWZpbmVkLiAqL1xuICBpc0RlZmluZWQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IHVuZGVmaW5lZFxuICB9XG5cbiAgb25MaW5rQ2xpY2tlZCA9IChlLCAuLi5yZXN0QXJncykgPT4ge1xuICAgIGNvbnN0IHtvbkNsaWNrLCBvblByZXNzfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICBvbkNsaWNrKGUsIC4uLnJlc3RBcmdzKVxuICAgIH1cblxuICAgIGlmIChvblByZXNzKSB7XG4gICAgICBvblByZXNzKGUsIC4uLnJlc3RBcmdzKVxuICAgIH1cblxuICAgIGlmICghZS5kZWZhdWx0UHJldmVudGVkICYmICFlLmN0cmxLZXkgJiYgIWUubWV0YUtleSAmJiB0aGlzLnByb3BzLnRhcmdldCAhPSBcIl9ibGFua1wiKSB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcblxuICAgICAgdGhpcy5yZWRpcmVjdCgpXG4gICAgfVxuICB9XG5cbiAgb25QcmVzcyA9ICgpID0+IHtcbiAgICBjb25zdCB7b25DbGljaywgb25QcmVzc30gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAob25DbGljaykge1xuICAgICAgb25DbGljayhlLCAuLi5yZXN0QXJncykgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bmRlZlxuICAgIH1cblxuICAgIGlmIChvblByZXNzKSB7XG4gICAgICBvblByZXNzKGUsIC4uLnJlc3RBcmdzKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVuZGVmXG4gICAgfVxuXG4gICAgdGhpcy5yZWRpcmVjdCgpXG4gIH1cblxuICByZWRpcmVjdCA9ICgpID0+IHtcbiAgICAvLyBJZiBubyB0aW1lb3V0IGlzIHVzZWQsIHRoaXMgY2FuIGNhdXNlIGFuIFwiY29tcG9uZW50IHN1c3BlbmRlZCB3aGlsZSByZXNwb25kaW5nIHRvIHN5bmNocm9ub3VzIGlucHV0XCItZXJyb3JcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuX2hpc3RvcnlQdXNoKClcbiAgICB9LCAwKVxuICB9XG5cbiAgX2hpc3RvcnlQdXNoKCkge1xuICAgIGNvbnN0IGhpc3RvcnkgPSB0aGlzLmFwaU1ha2VyLmNvbmZpZy5nZXRIaXN0b3J5KClcblxuICAgIGlmICghaGlzdG9yeSkgdGhyb3cgbmV3IEVycm9yKFwiSGlzdG9yeSBoYXNuJ3QgYmVlbiBzZXQgaW4gdGhlIEFQSSBtYWtlciBjb25maWd1cmF0aW9uXCIpXG5cbiAgICBoaXN0b3J5LnB1c2godGhpcy5wcm9wcy50bylcbiAgfVxufSkpXG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"use-model.d.ts","sourceRoot":"/src/","sources":["use-model.js"],"names":[],"mappings":";;eAUc,CAAC,GAAG,EAAE,MAAM,aAAa;WACzB,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM;uBACvB,MAAM,MAAM,GAAC,MAAM;gBACnB,GAAG,EAAE;YACL;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;kBAChB,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;;;AAPzE;;;;;;;;;GASG;AAEH;;;GAGG;AACH,yCAHW,WAAS,MAAM,YACf,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE;IAAC,UAAU,EAAE,cAAc,iBAAiB,EAAE,OAAO,CAAA;CAAC,KAAK,YAAY,CAAC;;;;EAqLnG"}
1
+ {"version":3,"file":"use-model.d.ts","sourceRoot":"/src/","sources":["use-model.js"],"names":[],"mappings":";;eAUc,CAAC,GAAG,EAAE,MAAM,aAAa;WACzB,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM;uBACvB,MAAM,MAAM,GAAC,MAAM;gBACnB,GAAG,EAAE;YACL;QAAC,MAAM,EAAE,MAAM,CAAA;KAAC;kBAChB,CAAC,GAAG,EAAE;QAAE,KAAK,EAAE,OAAO,iBAAiB,EAAE,OAAO,CAAA;KAAE,KAAK,IAAI;;;AAPzE;;;;;;;;;GASG;AAEH;;;GAGG;AAEH,yCAJW,WAAS,MAAM,YACf,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE;IAAC,UAAU,EAAE,cAAc,iBAAiB,EAAE,OAAO,CAAA;CAAC,KAAK,YAAY,CAAC;;;;EA2NnG"}
@@ -1,5 +1,5 @@
1
1
  /* eslint-disable sort-imports */
2
- import { useCallback, useLayoutEffect, useMemo } from "react";
2
+ import { useCallback, useLayoutEffect } from "react";
3
3
  import Devise from "./devise.js";
4
4
  import * as inflection from "inflection";
5
5
  import ModelEvents from "./model-events.js";
@@ -19,6 +19,7 @@ import useShape from "set-state-compare/build/use-shape.js";
19
19
  * @param {Function|object} modelClassArg
20
20
  * @param {object | ((args: {modelClass: typeof import("./base-model.js").default}) => useModelArgs)} [argsArg]
21
21
  */
22
+ // eslint-disable-next-line complexity
22
23
  const useModel = (modelClassArg, argsArg = {}) => {
23
24
  const queryParams = useQueryParams();
24
25
  let args, modelClass;
@@ -83,7 +84,12 @@ const useModel = (modelClassArg, argsArg = {}) => {
83
84
  const modelDataFromParams = s.m.queryParams[paramKey] || {};
84
85
  let defaults = {};
85
86
  if (s.props.newIfNoId?.defaults) {
86
- defaults = await s.props.newIfNoId.defaults();
87
+ let defaultsResult = s.m.newIfNoIdDefaultsResult;
88
+ if (defaultsResult === null) {
89
+ defaultsResult = s.props.newIfNoId.defaults();
90
+ }
91
+ s.meta.newIfNoIdDefaultsResult = null;
92
+ defaults = await defaultsResult;
87
93
  }
88
94
  const modelData = Object.assign(defaults, s.props.newAttributes, modelDataFromParams);
89
95
  const model = new ModelClass({
@@ -118,7 +124,36 @@ const useModel = (modelClassArg, argsArg = {}) => {
118
124
  cacheArgs.push(...args.cacheArgs);
119
125
  }
120
126
  s.updateMeta({ args, modelId, modelVariableName, queryParams });
121
- useMemo(() => { loadModel(); }, cacheArgs);
127
+ if (s.meta.syncNewModel == undefined)
128
+ s.meta.syncNewModel = false;
129
+ if (s.meta.newIfNoIdDefaultsResult == undefined)
130
+ s.meta.newIfNoIdDefaultsResult = null;
131
+ if (s.m.active && s.props.newIfNoId && !s.m.modelId && !s.s.model && !s.m.syncNewModel) {
132
+ if (s.props.newIfNoId?.defaults && s.m.newIfNoIdDefaultsResult === null) {
133
+ const defaultsResult = s.props.newIfNoId.defaults();
134
+ if (defaultsResult && typeof defaultsResult.then == "function") {
135
+ s.meta.newIfNoIdDefaultsResult = defaultsResult.catch((error) => {
136
+ throw error;
137
+ });
138
+ }
139
+ else {
140
+ s.meta.newIfNoIdDefaultsResult = defaultsResult;
141
+ }
142
+ }
143
+ if (!(s.m.newIfNoIdDefaultsResult && typeof s.m.newIfNoIdDefaultsResult.then == "function")) {
144
+ const ModelClass = modelClass;
145
+ const paramKey = ModelClass.modelName().paramKey();
146
+ const modelDataFromParams = s.m.queryParams[paramKey] || {};
147
+ const modelData = Object.assign(s.m.newIfNoIdDefaultsResult || {}, s.props.newAttributes, modelDataFromParams);
148
+ const model = new ModelClass({
149
+ isNewRecord: true,
150
+ data: { a: modelData }
151
+ });
152
+ s.meta.syncNewModel = model;
153
+ s.set({ model });
154
+ }
155
+ }
156
+ useLayoutEffect(() => { loadModel(); }, cacheArgs);
122
157
  useLayoutEffect(() => {
123
158
  let reloadModelCallback;
124
159
  if (args.events) {
@@ -167,4 +202,4 @@ const useModel = (modelClassArg, argsArg = {}) => {
167
202
  return result;
168
203
  };
169
204
  export default useModel;
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLE9BQU8sQ0FBQTtBQUMzRCxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUE7QUFDaEMsT0FBTyxLQUFLLFVBQVUsTUFBTSxZQUFZLENBQUE7QUFDeEMsT0FBTyxXQUFXLE1BQU0sbUJBQW1CLENBQUE7QUFDM0MsT0FBTyxjQUFjLE1BQU0sK0NBQStDLENBQUE7QUFDMUUsT0FBTyxRQUFRLE1BQU0sc0NBQXNDLENBQUE7QUFFM0Q7Ozs7Ozs7OztHQVNHO0FBRUg7OztHQUdHO0FBQ0gsTUFBTSxRQUFRLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO0lBQ3BDLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQTtJQUVwQixJQUFJLE9BQU8sT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksR0FBRyxPQUFPLENBQUMsRUFBQyxVQUFVLEVBQUMsQ0FBQyxDQUFBO0lBQzlCLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXhCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDVixLQUFLLEVBQUUsU0FBUztRQUNoQixRQUFRLEVBQUUsU0FBUztLQUNwQixDQUFDLENBQUE7SUFFRixJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFL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QUFRLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUxheW91dEVmZmVjdCwgdXNlTWVtb30gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBEZXZpc2UgZnJvbSBcIi4vZGV2aXNlLmpzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50cy5qc1wiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtcy5qc1wiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3VzZS1zaGFwZS5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gdXNlTW9kZWxBcmdzXG4gKiBAcHJvcGVydHkgeyhhcmc6IG9iamVjdCkgPT4gRnVuY3Rpb259IFtjYWxsYmFja11cbiAqIEBwcm9wZXJ0eSB7KGFyZzogb2JqZWN0KSA9PiBvYmplY3R9IFthcmdzXVxuICogQHByb3BlcnR5IHsoKSA9PiBudW1iZXJ8c3RyaW5nfSBbbG9hZEJ5UXVlcnlQYXJhbV1cbiAqIEBwcm9wZXJ0eSB7YW55W119IFtjYWNoZUFyZ3NdXG4gKiBAcHJvcGVydHkge3twYXJhbXM6IG9iamVjdH19IFttYXRjaF1cbiAqIEBwcm9wZXJ0eSB7KGN0eDogeyBtb2RlbDogaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHQgfSkgPT4gdm9pZH0gW29uRGVzdHJveWVkXVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gW3F1ZXJ5XVxuICovXG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbnxvYmplY3R9IG1vZGVsQ2xhc3NBcmdcbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChhcmdzOiB7bW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSkgPT4gdXNlTW9kZWxBcmdzKX0gW2FyZ3NBcmddXG4gKi9cbmNvbnN0IHVzZU1vZGVsID0gKG1vZGVsQ2xhc3NBcmcsIGFyZ3NBcmcgPSB7fSkgPT4ge1xuICBjb25zdCBxdWVyeVBhcmFtcyA9IHVzZVF1ZXJ5UGFyYW1zKClcbiAgbGV0IGFyZ3MsIG1vZGVsQ2xhc3NcblxuICBpZiAodHlwZW9mIGFyZ3NBcmcgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgYXJncyA9IGFyZ3NBcmcoe21vZGVsQ2xhc3N9KVxuICB9IGVsc2Uge1xuICAgIGFyZ3MgPSBhcmdzQXJnXG4gIH1cblxuICBjb25zdCBzID0gdXNlU2hhcGUoYXJncylcblxuICBzLnVzZVN0YXRlcyh7XG4gICAgbW9kZWw6IHVuZGVmaW5lZCxcbiAgICBub3RGb3VuZDogdW5kZWZpbmVkXG4gIH0pXG5cbiAgaWYgKFwiYWN0aXZlXCIgaW4gcy5wcm9wcyAmJiAhcy5wcm9wcy5hY3RpdmUpIHtcbiAgICBzLm1ldGEuYWN0aXZlID0gZmFsc2VcbiAgfSBlbHNlIHtcbiAgICBzLm1ldGEuYWN0aXZlID0gdHJ1ZVxuICB9XG5cbiAgaWYgKHR5cGVvZiBtb2RlbENsYXNzQXJnID09IFwib2JqZWN0XCIpIHtcbiAgICBtb2RlbENsYXNzID0gbW9kZWxDbGFzc0FyZy5jYWxsYmFjayh7cXVlcnlQYXJhbXN9KVxuICB9IGVsc2Uge1xuICAgIG1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzQXJnXG4gIH1cblxuICBjb25zdCBwYXJhbXNWYXJpYWJsZU5hbWUgPSBgJHttb2RlbENsYXNzLm1vZGVsTmFtZSgpLnBhcmFtS2V5KCl9X2lkYFxuICBsZXQgbW9kZWxJZFxuXG4gIGlmIChhcmdzLmxvYWRCeVF1ZXJ5UGFyYW0pIHtcbiAgICBtb2RlbElkID0gYXJncy5sb2FkQnlRdWVyeVBhcmFtKHtxdWVyeVBhcmFtc30pXG4gIH0gZWxzZSBpZiAoIWFyZ3MucXVlcnkpIHtcbiAgICBpZiAoIWFyZ3MubWF0Y2gpIHRocm93IG5ldyBFcnJvcihcIkJvdGggJ2xvYWRCeVF1ZXJ5UGFyYW0nIGFuZCAnbWF0Y2gnIHdhc24ndCBnaXZlblwiKVxuXG4gICAgbW9kZWxJZCA9IGFyZ3MubWF0Y2gucGFyYW1zW3BhcmFtc1ZhcmlhYmxlTmFtZV0gfHwgYXJncy5tYXRjaC5wYXJhbXMuaWRcbiAgfVxuXG4gIGNvbnN0IG1vZGVsVmFyaWFibGVOYW1lID0gaW5mbGVjdGlvbi5jYW1lbGl6ZShtb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgdHJ1ZSlcbiAgY29uc3QgY2FjaGVBcmdzID0gW21vZGVsSWRdXG5cbiAgY29uc3QgbG9hZEV4aXN0aW5nTW9kZWwgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgbGV0IHF1ZXJ5XG5cbiAgICBpZiAocy5tLm1vZGVsSWQpIHtcbiAgICAgIHF1ZXJ5ID0gbW9kZWxDbGFzcy5yYW5zYWNrKHtpZF9lcTogcy5tLm1vZGVsSWR9KVxuICAgIH0gZWxzZSBpZiAocy5tLmFyZ3MucXVlcnkpIHtcbiAgICAgIHF1ZXJ5ID0gcy5tLmFyZ3MucXVlcnkuY2xvbmUoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vZGVsIElEIHdhcyBnaXZlbjogJHtzLm0ubW9kZWxJZH0gYnkgJyR7cGFyYW1zVmFyaWFibGVOYW1lfScgaW4gcXVlcnkgcGFyYW1zOiAke09iamVjdC5rZXlzKHMucHJvcHMubWF0Y2gucGFyYW1zKS5qb2luKFwiLCBcIil9YClcbiAgICB9XG5cbiAgICBpZiAocy5wcm9wcy5hYmlsaXRpZXMpIHF1ZXJ5LmFiaWxpdGllcyhzLnAuYWJpbGl0aWVzKVxuICAgIGlmIChzLnByb3BzLnByZWxvYWQpIHF1ZXJ5LnByZWxvYWQocy5wLnByZWxvYWQpXG4gICAgaWYgKHMucHJvcHMuc2VsZWN0KSBxdWVyeS5zZWxlY3Qocy5wLnNlbGVjdClcblxuICAgIGNvbnN0IG1vZGVsID0gYXdhaXQgcXVlcnkuZmlyc3QoKVxuXG4gICAgcy5zZXQoe21vZGVsLCBub3RGb3VuZDogIW1vZGVsfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZE5ld01vZGVsID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzXG4gICAgY29uc3QgcGFyYW1LZXkgPSBNb2RlbENsYXNzLm1vZGVsTmFtZSgpLnBhcmFtS2V5KClcbiAgICBjb25zdCBtb2RlbERhdGFGcm9tUGFyYW1zID0gcy5tLnF1ZXJ5UGFyYW1zW3BhcmFtS2V5XSB8fCB7fVxuXG4gICAgbGV0IGRlZmF1bHRzID0ge31cblxuICAgIGlmIChzLnByb3BzLm5ld0lmTm9JZD8uZGVmYXVsdHMpIHtcbiAgICAgIGRlZmF1bHRzID0gYXdhaXQgcy5wcm9wcy5uZXdJZk5vSWQuZGVmYXVsdHMoKVxuICAgIH1cblxuICAgIGNvbnN0IG1vZGVsRGF0YSA9IE9iamVjdC5hc3NpZ24oZGVmYXVsdHMsIHMucHJvcHMubmV3QXR0cmlidXRlcywgbW9kZWxEYXRhRnJvbVBhcmFtcylcbiAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHtcbiAgICAgIGlzTmV3UmVjb3JkOiB0cnVlLFxuICAgICAgZGF0YToge2E6IG1vZGVsRGF0YX1cbiAgICB9KVxuXG4gICAgcy5zZXQoe21vZGVsfSlcbiAgfSwgW10pXG5cbiAgY29uc3QgbG9hZE1vZGVsID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICghcy5tLmFjdGl2ZSkge1xuICAgICAgLy8gTm90IGFjdGl2ZSAtIGRvbid0IGRvIGFueXRoaW5nXG4gICAgfSBlbHNlIGlmIChzLnByb3BzLm5ld0lmTm9JZCAmJiAhcy5tLm1vZGVsSWQpIHtcbiAgICAgIHJldHVybiBhd2FpdCBsb2FkTmV3TW9kZWwoKVxuICAgIH0gZWxzZSBpZiAoIXMucHJvcHMub3B0aW9uYWwgfHwgcy5tLm1vZGVsSWQgfHwgcy5tLmFyZ3MucXVlcnkpIHtcbiAgICAgIHJldHVybiBhd2FpdCBsb2FkRXhpc3RpbmdNb2RlbCgpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBvbkRlc3Ryb3llZCA9IHVzZUNhbGxiYWNrKCh7bW9kZWx9KSA9PiB7XG4gICAgY29uc3QgZm9yd2FyZEFyZ3MgPSB7bW9kZWx9XG5cbiAgICBmb3J3YXJkQXJnc1tzLm0ubW9kZWxWYXJpYWJsZU5hbWVdID0gbW9kZWxcblxuICAgIHMucC5vbkRlc3Ryb3llZChmb3J3YXJkQXJncylcbiAgfSwgW10pXG5cbiAgY29uc3Qgb25TaWduZWRJbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBsb2FkTW9kZWwoKVxuICB9LCBbXSlcblxuICBjb25zdCBvblNpZ25lZE91dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBsb2FkTW9kZWwoKVxuICB9LCBbXSlcblxuICBpZiAoYXJncy5jYWNoZUFyZ3MpIHtcbiAgICBjYWNoZUFyZ3MucHVzaCguLi5hcmdzLmNhY2hlQXJncylcbiAgfVxuXG4gIHMudXBkYXRlTWV0YSh7YXJncywgbW9kZWxJZCwgbW9kZWxWYXJpYWJsZU5hbWUsIHF1ZXJ5UGFyYW1zfSlcblxuICB1c2VNZW1vKFxuICAgICgpID0+IHsgbG9hZE1vZGVsKCkgfSxcbiAgICBjYWNoZUFyZ3NcbiAgKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IHJlbG9hZE1vZGVsQ2FsbGJhY2tcblxuICAgIGlmIChhcmdzLmV2ZW50cykge1xuICAgICAgcmVsb2FkTW9kZWxDYWxsYmFjayA9IGFyZ3MuZXZlbnRzLmFkZExpc3RlbmVyKFwicmVsb2FkTW9kZWxcIiwgbG9hZE1vZGVsKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmVsb2FkTW9kZWxDYWxsYmFjaykge1xuICAgICAgICBhcmdzLmV2ZW50cy5yZW1vdmVMaXN0ZW5lcihcInJlbG9hZE1vZGVsXCIsIGxvYWRNb2RlbClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFthcmdzLmV2ZW50c10pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBsZXQgY29ubmVjdFVwZGF0ZWRcblxuICAgIGlmIChzLnMubW9kZWwgJiYgYXJncy5ldmVudFVwZGF0ZWQpIHtcbiAgICAgIGNvbm5lY3RVcGRhdGVkID0gTW9kZWxFdmVudHMuY29ubmVjdFVwZGF0ZWQocy5zLm1vZGVsLCBsb2FkTW9kZWwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbm5lY3RVcGRhdGVkPy51bnN1YnNjcmliZSgpXG4gICAgfVxuICB9LCBbYXJncy5ldmVudFVwZGF0ZWQsIHMucy5tb2RlbD8uaWQoKV0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBEZXZpc2UuZXZlbnRzKCkuYWRkTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25JblwiLCBvblNpZ25lZEluKVxuICAgIERldmlzZS5ldmVudHMoKS5hZGRMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbk91dFwiLCBvblNpZ25lZE91dClcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBEZXZpc2UuZXZlbnRzKCkucmVtb3ZlTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25JblwiLCBvblNpZ25lZEluKVxuICAgICAgRGV2aXNlLmV2ZW50cygpLnJlbW92ZUxpc3RlbmVyKFwib25EZXZpc2VTaWduT3V0XCIsIG9uU2lnbmVkT3V0KVxuICAgIH1cbiAgfSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb25uZWN0RGVzdHJveWVkXG5cbiAgICBpZiAocy5zLm1vZGVsICYmIGFyZ3Mub25EZXN0cm95ZWQpIHtcbiAgICAgIGNvbm5lY3REZXN0cm95ZWQgPSBNb2RlbEV2ZW50cy5jb25uZWN0RGVzdHJveWVkKHMucy5tb2RlbCwgb25EZXN0cm95ZWQpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNvbm5lY3REZXN0cm95ZWQ/LnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH0sIFthcmdzLm9uRGVzdHJveWVkLCBzLnMubW9kZWw/LmlkKCldKVxuXG4gIGNvbnN0IHJlc3VsdCA9IHtcbiAgICBtb2RlbDogcy5zLm1vZGVsLFxuICAgIG1vZGVsSWQsXG4gICAgbm90Rm91bmQ6IHMucy5ub3RGb3VuZFxuICB9XG5cbiAgcmVzdWx0W21vZGVsVmFyaWFibGVOYW1lXSA9IHMucy5tb2RlbFxuICByZXN1bHRbYCR7bW9kZWxWYXJpYWJsZU5hbWV9SWRgXSA9IG1vZGVsSWRcbiAgcmVzdWx0W2Ake21vZGVsVmFyaWFibGVOYW1lfU5vdEZvdW5kYF0gPSBzLnMubm90Rm91bmRcblxuICByZXR1cm4gcmVzdWx0XG59XG5cbmV4cG9ydCBkZWZhdWx0IHVzZU1vZGVsXG4iXX0=
205
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlLW1vZGVsLmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJ1c2UtbW9kZWwuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsaUNBQWlDO0FBQ2pDLE9BQU8sRUFBQyxXQUFXLEVBQUUsZUFBZSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ2xELE9BQU8sTUFBTSxNQUFNLGFBQWEsQ0FBQTtBQUNoQyxPQUFPLEtBQUssVUFBVSxNQUFNLFlBQVksQ0FBQTtBQUN4QyxPQUFPLFdBQVcsTUFBTSxtQkFBbUIsQ0FBQTtBQUMzQyxPQUFPLGNBQWMsTUFBTSwrQ0FBK0MsQ0FBQTtBQUMxRSxPQUFPLFFBQVEsTUFBTSxzQ0FBc0MsQ0FBQTtBQUUzRDs7Ozs7Ozs7O0dBU0c7QUFFSDs7O0dBR0c7QUFDSCxzQ0FBc0M7QUFDdEMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxhQUFhLEVBQUUsT0FBTyxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQy9DLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFBO0lBQ3BDLElBQUksSUFBSSxFQUFFLFVBQVUsQ0FBQTtJQUVwQixJQUFJLE9BQU8sT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2pDLElBQUksR0FBRyxPQUFPLENBQUMsRUFBQyxVQUFVLEVBQUMsQ0FBQyxDQUFBO0lBQzlCLENBQUM7U0FBTSxDQUFDO1FBQ04sSUFBSSxHQUFHLE9BQU8sQ0FBQTtJQUNoQixDQUFDO0lBRUQsTUFBTSxDQUFDLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRXhCLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDVixLQUFLLEVBQUUsU0FBUztRQUNoQixRQUFRLEVBQUUsU0FBUztLQUNwQixDQUFDLENBQUE7SUFFRixJQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxL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O0lBRUYsZUFBZSxDQUFDLEdBQUcsRUFBRTtRQUNuQixJQUFJLGdCQUFnQixDQUFBO1FBRXBCLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2xDLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQTtRQUN6RSxDQUFDO1FBRUQsT0FBTyxHQUFHLEVBQUU7WUFDVixnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsQ0FBQTtRQUNqQyxDQUFDLENBQUE7SUFDSCxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUV2QyxNQUFNLE1BQU0sR0FBRztRQUNiLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUs7UUFDaEIsT0FBTztRQUNQLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVE7S0FDdkIsQ0FBQTtJQUVELE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQ3JDLE1BQU0sQ0FBQyxHQUFHLGlCQUFpQixJQUFJLENBQUMsR0FBRyxPQUFPLENBQUE7SUFDMUMsTUFBTSxDQUFDLEdBQUcsaUJBQWlCLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFBO0lBRXJELE9BQU8sTUFBTSxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBRUQsZUFBZSxRQUFRLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBzb3J0LWltcG9ydHMgKi9cbmltcG9ydCB7dXNlQ2FsbGJhY2ssIHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCJcbmltcG9ydCBEZXZpc2UgZnJvbSBcIi4vZGV2aXNlLmpzXCJcbmltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuaW1wb3J0IE1vZGVsRXZlbnRzIGZyb20gXCIuL21vZGVsLWV2ZW50cy5qc1wiXG5pbXBvcnQgdXNlUXVlcnlQYXJhbXMgZnJvbSBcIm9uLWxvY2F0aW9uLWNoYW5nZWQvYnVpbGQvdXNlLXF1ZXJ5LXBhcmFtcy5qc1wiXG5pbXBvcnQgdXNlU2hhcGUgZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3VzZS1zaGFwZS5qc1wiXG5cbi8qKlxuICogQHR5cGVkZWYge29iamVjdH0gdXNlTW9kZWxBcmdzXG4gKiBAcHJvcGVydHkgeyhhcmc6IG9iamVjdCkgPT4gRnVuY3Rpb259IFtjYWxsYmFja11cbiAqIEBwcm9wZXJ0eSB7KGFyZzogb2JqZWN0KSA9PiBvYmplY3R9IFthcmdzXVxuICogQHByb3BlcnR5IHsoKSA9PiBudW1iZXJ8c3RyaW5nfSBbbG9hZEJ5UXVlcnlQYXJhbV1cbiAqIEBwcm9wZXJ0eSB7YW55W119IFtjYWNoZUFyZ3NdXG4gKiBAcHJvcGVydHkge3twYXJhbXM6IG9iamVjdH19IFttYXRjaF1cbiAqIEBwcm9wZXJ0eSB7KGN0eDogeyBtb2RlbDogaW1wb3J0KFwiLi9iYXNlLW1vZGVsLmpzXCIpLmRlZmF1bHQgfSkgPT4gdm9pZH0gW29uRGVzdHJveWVkXVxuICogQHByb3BlcnR5IHtpbXBvcnQoXCIuL2NvbGxlY3Rpb24uanNcIikuZGVmYXVsdH0gW3F1ZXJ5XVxuICovXG5cbi8qKlxuICogQHBhcmFtIHtGdW5jdGlvbnxvYmplY3R9IG1vZGVsQ2xhc3NBcmdcbiAqIEBwYXJhbSB7b2JqZWN0IHwgKChhcmdzOiB7bW9kZWxDbGFzczogdHlwZW9mIGltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSkgPT4gdXNlTW9kZWxBcmdzKX0gW2FyZ3NBcmddXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBjb21wbGV4aXR5XG5jb25zdCB1c2VNb2RlbCA9IChtb2RlbENsYXNzQXJnLCBhcmdzQXJnID0ge30pID0+IHtcbiAgY29uc3QgcXVlcnlQYXJhbXMgPSB1c2VRdWVyeVBhcmFtcygpXG4gIGxldCBhcmdzLCBtb2RlbENsYXNzXG5cbiAgaWYgKHR5cGVvZiBhcmdzQXJnID09IFwiZnVuY3Rpb25cIikge1xuICAgIGFyZ3MgPSBhcmdzQXJnKHttb2RlbENsYXNzfSlcbiAgfSBlbHNlIHtcbiAgICBhcmdzID0gYXJnc0FyZ1xuICB9XG5cbiAgY29uc3QgcyA9IHVzZVNoYXBlKGFyZ3MpXG5cbiAgcy51c2VTdGF0ZXMoe1xuICAgIG1vZGVsOiB1bmRlZmluZWQsXG4gICAgbm90Rm91bmQ6IHVuZGVmaW5lZFxuICB9KVxuXG4gIGlmIChcImFjdGl2ZVwiIGluIHMucHJvcHMgJiYgIXMucHJvcHMuYWN0aXZlKSB7XG4gICAgcy5tZXRhLmFjdGl2ZSA9IGZhbHNlXG4gIH0gZWxzZSB7XG4gICAgcy5tZXRhLmFjdGl2ZSA9IHRydWVcbiAgfVxuXG4gIGlmICh0eXBlb2YgbW9kZWxDbGFzc0FyZyA9PSBcIm9iamVjdFwiKSB7XG4gICAgbW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NBcmcuY2FsbGJhY2soe3F1ZXJ5UGFyYW1zfSlcbiAgfSBlbHNlIHtcbiAgICBtb2RlbENsYXNzID0gbW9kZWxDbGFzc0FyZ1xuICB9XG5cbiAgY29uc3QgcGFyYW1zVmFyaWFibGVOYW1lID0gYCR7bW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5wYXJhbUtleSgpfV9pZGBcbiAgbGV0IG1vZGVsSWRcblxuICBpZiAoYXJncy5sb2FkQnlRdWVyeVBhcmFtKSB7XG4gICAgbW9kZWxJZCA9IGFyZ3MubG9hZEJ5UXVlcnlQYXJhbSh7cXVlcnlQYXJhbXN9KVxuICB9IGVsc2UgaWYgKCFhcmdzLnF1ZXJ5KSB7XG4gICAgaWYgKCFhcmdzLm1hdGNoKSB0aHJvdyBuZXcgRXJyb3IoXCJCb3RoICdsb2FkQnlRdWVyeVBhcmFtJyBhbmQgJ21hdGNoJyB3YXNuJ3QgZ2l2ZW5cIilcblxuICAgIG1vZGVsSWQgPSBhcmdzLm1hdGNoLnBhcmFtc1twYXJhbXNWYXJpYWJsZU5hbWVdIHx8IGFyZ3MubWF0Y2gucGFyYW1zLmlkXG4gIH1cblxuICBjb25zdCBtb2RlbFZhcmlhYmxlTmFtZSA9IGluZmxlY3Rpb24uY2FtZWxpemUobW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLm5hbWUsIHRydWUpXG4gIGNvbnN0IGNhY2hlQXJncyA9IFttb2RlbElkXVxuXG4gIGNvbnN0IGxvYWRFeGlzdGluZ01vZGVsID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGxldCBxdWVyeVxuXG4gICAgaWYgKHMubS5tb2RlbElkKSB7XG4gICAgICBxdWVyeSA9IG1vZGVsQ2xhc3MucmFuc2Fjayh7aWRfZXE6IHMubS5tb2RlbElkfSlcbiAgICB9IGVsc2UgaWYgKHMubS5hcmdzLnF1ZXJ5KSB7XG4gICAgICBxdWVyeSA9IHMubS5hcmdzLnF1ZXJ5LmNsb25lKClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb2RlbCBJRCB3YXMgZ2l2ZW46ICR7cy5tLm1vZGVsSWR9IGJ5ICcke3BhcmFtc1ZhcmlhYmxlTmFtZX0nIGluIHF1ZXJ5IHBhcmFtczogJHtPYmplY3Qua2V5cyhzLnByb3BzLm1hdGNoLnBhcmFtcykuam9pbihcIiwgXCIpfWApXG4gICAgfVxuXG4gICAgaWYgKHMucHJvcHMuYWJpbGl0aWVzKSBxdWVyeS5hYmlsaXRpZXMocy5wLmFiaWxpdGllcylcbiAgICBpZiAocy5wcm9wcy5wcmVsb2FkKSBxdWVyeS5wcmVsb2FkKHMucC5wcmVsb2FkKVxuICAgIGlmIChzLnByb3BzLnNlbGVjdCkgcXVlcnkuc2VsZWN0KHMucC5zZWxlY3QpXG5cbiAgICBjb25zdCBtb2RlbCA9IGF3YWl0IHF1ZXJ5LmZpcnN0KClcblxuICAgIHMuc2V0KHttb2RlbCwgbm90Rm91bmQ6ICFtb2RlbH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGxvYWROZXdNb2RlbCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1xuICAgIGNvbnN0IHBhcmFtS2V5ID0gTW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5wYXJhbUtleSgpXG4gICAgY29uc3QgbW9kZWxEYXRhRnJvbVBhcmFtcyA9IHMubS5xdWVyeVBhcmFtc1twYXJhbUtleV0gfHwge31cblxuICAgIGxldCBkZWZhdWx0cyA9IHt9XG5cbiAgICBpZiAocy5wcm9wcy5uZXdJZk5vSWQ/LmRlZmF1bHRzKSB7XG4gICAgICBsZXQgZGVmYXVsdHNSZXN1bHQgPSBzLm0ubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHRcblxuICAgICAgaWYgKGRlZmF1bHRzUmVzdWx0ID09PSBudWxsKSB7XG4gICAgICAgIGRlZmF1bHRzUmVzdWx0ID0gcy5wcm9wcy5uZXdJZk5vSWQuZGVmYXVsdHMoKVxuICAgICAgfVxuXG4gICAgICBzLm1ldGEubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBudWxsXG4gICAgICBkZWZhdWx0cyA9IGF3YWl0IGRlZmF1bHRzUmVzdWx0XG4gICAgfVxuXG4gICAgY29uc3QgbW9kZWxEYXRhID0gT2JqZWN0LmFzc2lnbihkZWZhdWx0cywgcy5wcm9wcy5uZXdBdHRyaWJ1dGVzLCBtb2RlbERhdGFGcm9tUGFyYW1zKVxuICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsQ2xhc3Moe1xuICAgICAgaXNOZXdSZWNvcmQ6IHRydWUsXG4gICAgICBkYXRhOiB7YTogbW9kZWxEYXRhfVxuICAgIH0pXG5cbiAgICBzLnNldCh7bW9kZWx9KVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkTW9kZWwgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFzLm0uYWN0aXZlKSB7XG4gICAgICAvLyBOb3QgYWN0aXZlIC0gZG9uJ3QgZG8gYW55dGhpbmdcbiAgICB9IGVsc2UgaWYgKHMucHJvcHMubmV3SWZOb0lkICYmICFzLm0ubW9kZWxJZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IGxvYWROZXdNb2RlbCgpXG4gICAgfSBlbHNlIGlmICghcy5wcm9wcy5vcHRpb25hbCB8fCBzLm0ubW9kZWxJZCB8fCBzLm0uYXJncy5xdWVyeSkge1xuICAgICAgcmV0dXJuIGF3YWl0IGxvYWRFeGlzdGluZ01vZGVsKClcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uRGVzdHJveWVkID0gdXNlQ2FsbGJhY2soKHttb2RlbH0pID0+IHtcbiAgICBjb25zdCBmb3J3YXJkQXJncyA9IHttb2RlbH1cblxuICAgIGZvcndhcmRBcmdzW3MubS5tb2RlbFZhcmlhYmxlTmFtZV0gPSBtb2RlbFxuXG4gICAgcy5wLm9uRGVzdHJveWVkKGZvcndhcmRBcmdzKVxuICB9LCBbXSlcblxuICBjb25zdCBvblNpZ25lZEluID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGxvYWRNb2RlbCgpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IG9uU2lnbmVkT3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGxvYWRNb2RlbCgpXG4gIH0sIFtdKVxuXG4gIGlmIChhcmdzLmNhY2hlQXJncykge1xuICAgIGNhY2hlQXJncy5wdXNoKC4uLmFyZ3MuY2FjaGVBcmdzKVxuICB9XG5cbiAgcy51cGRhdGVNZXRhKHthcmdzLCBtb2RlbElkLCBtb2RlbFZhcmlhYmxlTmFtZSwgcXVlcnlQYXJhbXN9KVxuICBpZiAocy5tZXRhLnN5bmNOZXdNb2RlbCA9PSB1bmRlZmluZWQpIHMubWV0YS5zeW5jTmV3TW9kZWwgPSBmYWxzZVxuICBpZiAocy5tZXRhLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID09IHVuZGVmaW5lZCkgcy5tZXRhLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0ID0gbnVsbFxuXG4gIGlmIChzLm0uYWN0aXZlICYmIHMucHJvcHMubmV3SWZOb0lkICYmICFzLm0ubW9kZWxJZCAmJiAhcy5zLm1vZGVsICYmICFzLm0uc3luY05ld01vZGVsKSB7XG4gICAgaWYgKHMucHJvcHMubmV3SWZOb0lkPy5kZWZhdWx0cyAmJiBzLm0ubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzUmVzdWx0ID0gcy5wcm9wcy5uZXdJZk5vSWQuZGVmYXVsdHMoKVxuXG4gICAgICBpZiAoZGVmYXVsdHNSZXN1bHQgJiYgdHlwZW9mIGRlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHMubWV0YS5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCA9IGRlZmF1bHRzUmVzdWx0LmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRocm93IGVycm9yXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzLm1ldGEubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgPSBkZWZhdWx0c1Jlc3VsdFxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghKHMubS5uZXdJZk5vSWREZWZhdWx0c1Jlc3VsdCAmJiB0eXBlb2Ygcy5tLm5ld0lmTm9JZERlZmF1bHRzUmVzdWx0LnRoZW4gPT0gXCJmdW5jdGlvblwiKSkge1xuICAgICAgY29uc3QgTW9kZWxDbGFzcyA9IG1vZGVsQ2xhc3NcbiAgICAgIGNvbnN0IHBhcmFtS2V5ID0gTW9kZWxDbGFzcy5tb2RlbE5hbWUoKS5wYXJhbUtleSgpXG4gICAgICBjb25zdCBtb2RlbERhdGFGcm9tUGFyYW1zID0gcy5tLnF1ZXJ5UGFyYW1zW3BhcmFtS2V5XSB8fCB7fVxuICAgICAgY29uc3QgbW9kZWxEYXRhID0gT2JqZWN0LmFzc2lnbihzLm0ubmV3SWZOb0lkRGVmYXVsdHNSZXN1bHQgfHwge30sIHMucHJvcHMubmV3QXR0cmlidXRlcywgbW9kZWxEYXRhRnJvbVBhcmFtcylcbiAgICAgIGNvbnN0IG1vZGVsID0gbmV3IE1vZGVsQ2xhc3Moe1xuICAgICAgICBpc05ld1JlY29yZDogdHJ1ZSxcbiAgICAgICAgZGF0YToge2E6IG1vZGVsRGF0YX1cbiAgICAgIH0pXG5cbiAgICAgIHMubWV0YS5zeW5jTmV3TW9kZWwgPSBtb2RlbFxuICAgICAgcy5zZXQoe21vZGVsfSlcbiAgICB9XG4gIH1cblxuICB1c2VMYXlvdXRFZmZlY3QoXG4gICAgKCkgPT4geyBsb2FkTW9kZWwoKSB9LFxuICAgIGNhY2hlQXJnc1xuICApXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBsZXQgcmVsb2FkTW9kZWxDYWxsYmFja1xuXG4gICAgaWYgKGFyZ3MuZXZlbnRzKSB7XG4gICAgICByZWxvYWRNb2RlbENhbGxiYWNrID0gYXJncy5ldmVudHMuYWRkTGlzdGVuZXIoXCJyZWxvYWRNb2RlbFwiLCBsb2FkTW9kZWwpXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChyZWxvYWRNb2RlbENhbGxiYWNrKSB7XG4gICAgICAgIGFyZ3MuZXZlbnRzLnJlbW92ZUxpc3RlbmVyKFwicmVsb2FkTW9kZWxcIiwgbG9hZE1vZGVsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2FyZ3MuZXZlbnRzXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb25uZWN0VXBkYXRlZFxuXG4gICAgaWYgKHMucy5tb2RlbCAmJiBhcmdzLmV2ZW50VXBkYXRlZCkge1xuICAgICAgY29ubmVjdFVwZGF0ZWQgPSBNb2RlbEV2ZW50cy5jb25uZWN0VXBkYXRlZChzLnMubW9kZWwsIGxvYWRNb2RlbClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29ubmVjdFVwZGF0ZWQ/LnVuc3Vic2NyaWJlKClcbiAgICB9XG4gIH0sIFthcmdzLmV2ZW50VXBkYXRlZCwgcy5zLm1vZGVsPy5pZCgpXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIERldmlzZS5ldmVudHMoKS5hZGRMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbkluXCIsIG9uU2lnbmVkSW4pXG4gICAgRGV2aXNlLmV2ZW50cygpLmFkZExpc3RlbmVyKFwib25EZXZpc2VTaWduT3V0XCIsIG9uU2lnbmVkT3V0KVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIERldmlzZS5ldmVudHMoKS5yZW1vdmVMaXN0ZW5lcihcIm9uRGV2aXNlU2lnbkluXCIsIG9uU2lnbmVkSW4pXG4gICAgICBEZXZpc2UuZXZlbnRzKCkucmVtb3ZlTGlzdGVuZXIoXCJvbkRldmlzZVNpZ25PdXRcIiwgb25TaWduZWRPdXQpXG4gICAgfVxuICB9KVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNvbm5lY3REZXN0cm95ZWRcblxuICAgIGlmIChzLnMubW9kZWwgJiYgYXJncy5vbkRlc3Ryb3llZCkge1xuICAgICAgY29ubmVjdERlc3Ryb3llZCA9IE1vZGVsRXZlbnRzLmNvbm5lY3REZXN0cm95ZWQocy5zLm1vZGVsLCBvbkRlc3Ryb3llZClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29ubmVjdERlc3Ryb3llZD8udW5zdWJzY3JpYmUoKVxuICAgIH1cbiAgfSwgW2FyZ3Mub25EZXN0cm95ZWQsIHMucy5tb2RlbD8uaWQoKV0pXG5cbiAgY29uc3QgcmVzdWx0ID0ge1xuICAgIG1vZGVsOiBzLnMubW9kZWwsXG4gICAgbW9kZWxJZCxcbiAgICBub3RGb3VuZDogcy5zLm5vdEZvdW5kXG4gIH1cblxuICByZXN1bHRbbW9kZWxWYXJpYWJsZU5hbWVdID0gcy5zLm1vZGVsXG4gIHJlc3VsdFtgJHttb2RlbFZhcmlhYmxlTmFtZX1JZGBdID0gbW9kZWxJZFxuICByZXN1bHRbYCR7bW9kZWxWYXJpYWJsZU5hbWV9Tm90Rm91bmRgXSA9IHMucy5ub3RGb3VuZFxuXG4gIHJldHVybiByZXN1bHRcbn1cblxuZXhwb3J0IGRlZmF1bHQgdXNlTW9kZWxcbiJdfQ==
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
3
  "type": "module",
4
- "version": "1.0.2090",
4
+ "version": "1.0.2091",
5
5
  "description": "My new module",
6
6
  "files": [
7
7
  "build/**"