@kaspernj/api-maker 1.0.446 → 1.0.448
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/{.eslintrc.cjs → .eslintrc.js} +4 -0
- package/README.md +35 -0
- package/android/build.gradle +43 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerModule.kt +50 -0
- package/android/src/main/java/expo/modules/api_maker/ApiMakerView.kt +30 -0
- package/build/api.js +120 -0
- package/build/attribute-not-loaded-error.js +2 -0
- package/build/base-component.js +5 -0
- package/build/base-error.js +33 -0
- package/build/base-model/attribute.js +25 -0
- package/build/base-model/column.js +11 -0
- package/build/base-model/reflection.js +14 -0
- package/build/base-model/scope.js +11 -0
- package/build/base-model.js +828 -0
- package/build/bootstrap/attribute-row/index.js +105 -0
- package/build/bootstrap/attribute-rows.js +31 -0
- package/build/bootstrap/card.js +138 -0
- package/build/bootstrap/checkbox.js +97 -0
- package/build/bootstrap/checkboxes.js +183 -0
- package/build/bootstrap/index.js +2 -0
- package/build/bootstrap/input.js +128 -0
- package/build/bootstrap/invalid-feedback.js +27 -0
- package/build/bootstrap/paginate.js +150 -0
- package/build/bootstrap/radio-buttons.js +72 -0
- package/build/bootstrap/select.js +88 -0
- package/build/bootstrap/sort-link.js +130 -0
- package/build/cable-connection-pool.js +128 -0
- package/build/cable-subscription-pool.js +207 -0
- package/build/cable-subscription.js +21 -0
- package/build/cache-key-generator.js +81 -0
- package/build/can-can.js +134 -0
- package/build/channels-consumer.js +3 -0
- package/build/collection-loader.js +48 -0
- package/build/collection.js +279 -0
- package/build/command-submit-data.js +81 -0
- package/build/commands-pool.js +195 -0
- package/build/compose.js +9 -0
- package/build/config.js +53 -0
- package/build/custom-error.js +5 -0
- package/build/data-set-to-attributes.js +10 -0
- package/build/deserializer.js +56 -0
- package/build/destroy-error.js +5 -0
- package/build/devise.js +109 -0
- package/build/draggable-sort/controller.js +136 -0
- package/build/draggable-sort/index.js +114 -0
- package/build/draggable-sort/item.js +188 -0
- package/build/error-logger.js +101 -0
- package/build/error-messages.js +13 -0
- package/build/event-connection.js +32 -0
- package/build/event-model-class.js +24 -0
- package/build/events.js +5 -0
- package/build/form.js +83 -0
- package/build/index.js +3 -0
- package/build/inputs/attachment.js +121 -0
- package/build/inputs/auto-submit.js +36 -0
- package/build/inputs/checkbox.js +145 -0
- package/build/inputs/checkboxes.js +111 -0
- package/build/inputs/id-for-component.js +15 -0
- package/build/inputs/input-wrapper.js +18 -0
- package/build/inputs/input.js +230 -0
- package/build/inputs/money.js +179 -0
- package/build/inputs/name-for-component.js +13 -0
- package/build/inputs/select.js +92 -0
- package/build/instance-of-class-name.js +23 -0
- package/build/key-value-store.js +53 -0
- package/build/link.js +68 -0
- package/build/logger.js +30 -0
- package/build/modal.js +37 -0
- package/build/model-class-require.js +13 -0
- package/build/model-events.js +30 -0
- package/build/model-name.js +28 -0
- package/build/model-prop-type.js +101 -0
- package/build/model-recipes-loader.js +32 -0
- package/build/model-recipes-model-loader.js +357 -0
- package/build/models-response-reader.js +40 -0
- package/build/models.js +8 -0
- package/build/money-formatter.js +77 -0
- package/build/not-loaded-error.js +2 -0
- package/build/params.js +60 -0
- package/build/preloaded.js +38 -0
- package/build/resize-observer.js +11 -0
- package/build/result.js +13 -0
- package/build/router/route.js +262 -0
- package/build/router/switch.js +72 -0
- package/build/router.js +57 -0
- package/build/routes-native.js +202 -0
- package/build/routes.js +50 -0
- package/build/run-last.js +35 -0
- package/build/serializer.js +63 -0
- package/build/services.js +20 -0
- package/build/session-status-updater.js +126 -0
- package/build/source-maps-loader.js +171 -0
- package/build/super-admin/config-reader.js +84 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-content.js +54 -0
- package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
- package/build/super-admin/edit-page/edit-attribute.js +76 -0
- package/build/super-admin/edit-page.js +120 -0
- package/build/super-admin/has-edit-config.js +12 -0
- package/build/super-admin/index-page.js +24 -0
- package/build/super-admin/index.js +180 -0
- package/build/super-admin/layout/header/index.js +151 -0
- package/build/super-admin/layout/index.js +109 -0
- package/build/super-admin/layout/menu/index.js +93 -0
- package/build/super-admin/layout/menu/menu-content.js +40 -0
- package/build/super-admin/layout/menu/menu-item.js +83 -0
- package/build/super-admin/layout/no-access.js +25 -0
- package/build/super-admin/model-class-table.js +61 -0
- package/build/super-admin/models.js +8 -0
- package/build/super-admin/show-nav.js +49 -0
- package/build/super-admin/show-page/belongs-to-attribute-row.js +28 -0
- package/build/super-admin/show-page/index.js +141 -0
- package/build/super-admin/show-reflection-actions.js +47 -0
- package/build/super-admin/show-reflection-link.js +46 -0
- package/build/super-admin/show-reflection-page.js +47 -0
- package/build/table/column-content.js +112 -0
- package/build/table/column-identifier.js +18 -0
- package/build/table/column-visible.js +7 -0
- package/build/table/components/column.js +20 -0
- package/build/table/components/flat-list.js +20 -0
- package/build/table/components/header.js +25 -0
- package/build/table/components/row.js +25 -0
- package/build/table/filters/attribute-element.js +43 -0
- package/build/table/filters/filter-form.js +392 -0
- package/build/table/filters/filter.js +89 -0
- package/build/table/filters/index.js +182 -0
- package/build/table/filters/load-search-modal.js +174 -0
- package/build/table/filters/reflection-element.js +36 -0
- package/build/table/filters/save-search-modal.js +86 -0
- package/build/table/filters/scope-element.js +41 -0
- package/build/table/header-column-content.js +67 -0
- package/build/table/header-column.js +144 -0
- package/build/table/header-select.js +104 -0
- package/build/table/model-callback-args.js +10 -0
- package/build/table/model-column.js +87 -0
- package/build/table/model-row.js +179 -0
- package/build/table/select-calculator.js +63 -0
- package/build/table/settings/column-row.js +97 -0
- package/build/table/settings/download-action.js +78 -0
- package/build/table/settings/index.js +92 -0
- package/build/table/table-settings.js +219 -0
- package/build/table/table.js +972 -0
- package/build/table/use-sorting.js +34 -0
- package/build/table/widths.js +75 -0
- package/build/table/worker-plugins-check-all-checkbox.js +125 -0
- package/build/table/worker-plugins-checkbox.js +115 -0
- package/build/translated-attributes.js +10 -0
- package/build/translated-collections.js +11 -0
- package/build/updated-attribute.js +76 -0
- package/build/url-encode.js +15 -0
- package/build/use-breakpoint.js +44 -0
- package/build/use-can-can.js +55 -0
- package/build/use-collection.js +225 -0
- package/build/use-created-event.js +52 -0
- package/build/use-current-user.js +73 -0
- package/build/use-destroyed-event.js +60 -0
- package/build/use-event-emitter.js +13 -0
- package/build/use-event-listener.js +16 -0
- package/build/use-input.js +140 -0
- package/build/use-model-event.js +60 -0
- package/build/use-model.js +169 -0
- package/build/use-resize-observer.js +23 -0
- package/build/use-router.js +102 -0
- package/build/use-screen-layout.js +39 -0
- package/build/use-updated-event.js +60 -0
- package/build/use-validation-errors.js +30 -0
- package/build/utils/card.js +51 -0
- package/build/utils/checkbox.js +48 -0
- package/build/utils/default-style.js +18 -0
- package/build/utils/modal.js +61 -0
- package/build/utils/text.js +18 -0
- package/build/validation-error.js +28 -0
- package/build/validation-errors.js +98 -0
- package/build/with-collection.js +13 -0
- package/build/with-current-user.js +9 -0
- package/build/with-model.js +14 -0
- package/build/with-router.js +21 -0
- package/expo-module.config.json +17 -0
- package/ios/ApiMaker.podspec +29 -0
- package/ios/ApiMakerModule.swift +48 -0
- package/ios/ApiMakerView.swift +38 -0
- package/package.json +35 -16
- package/src/{api.mjs → api.js} +5 -5
- package/src/{base-error.mjs → base-error.js} +1 -1
- package/src/base-model/{attribute.mjs → attribute.js} +1 -1
- package/src/base-model/{reflection.mjs → reflection.js} +1 -1
- package/src/{base-model.mjs → base-model.js} +14 -14
- package/src/bootstrap/attribute-row/index.jsx +2 -2
- package/src/bootstrap/attribute-rows.jsx +1 -1
- package/src/bootstrap/card.jsx +1 -1
- package/src/bootstrap/checkbox.jsx +1 -1
- package/src/bootstrap/checkboxes.jsx +1 -1
- package/src/bootstrap/input.jsx +1 -1
- package/src/bootstrap/paginate.jsx +2 -2
- package/src/bootstrap/sort-link.jsx +3 -3
- package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +3 -3
- package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +4 -4
- package/src/{cable-subscription.mjs → cable-subscription.js} +1 -1
- package/src/{can-can.mjs → can-can.js} +1 -1
- package/src/collection-loader.jsx +2 -2
- package/src/{collection.mjs → collection.js} +3 -3
- package/src/{commands-pool.mjs → commands-pool.js} +11 -11
- package/src/{custom-error.mjs → custom-error.js} +1 -1
- package/src/{deserializer.mjs → deserializer.js} +2 -2
- package/src/{destroy-error.mjs → destroy-error.js} +1 -1
- package/src/{devise.mjs → devise.js} +5 -9
- package/src/draggable-sort/index.jsx +3 -3
- package/src/draggable-sort/item.jsx +2 -2
- package/src/{error-logger.mjs → error-logger.js} +1 -1
- package/src/event-connection.jsx +1 -1
- package/src/event-model-class.jsx +1 -1
- package/src/form.jsx +1 -1
- package/src/index.js +3 -0
- package/src/inputs/attachment.jsx +2 -2
- package/src/inputs/checkbox.jsx +7 -6
- package/src/inputs/checkboxes.jsx +1 -1
- package/src/inputs/input-wrapper.jsx +1 -1
- package/src/inputs/input.jsx +8 -7
- package/src/inputs/money.jsx +3 -3
- package/src/inputs/select.jsx +1 -1
- package/src/{key-value-store.mjs → key-value-store.js} +1 -1
- package/src/link.jsx +2 -2
- package/src/modal.jsx +1 -1
- package/src/{model-class-require.mjs → model-class-require.js} +4 -2
- package/src/{model-events.mjs → model-events.js} +1 -1
- package/src/{model-name.mjs → model-name.js} +1 -1
- package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
- package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +2 -2
- package/src/{models-response-reader.mjs → models-response-reader.js} +2 -2
- package/src/models.js +7 -0
- package/src/{models.mjs.erb → models.js.erb} +1 -1
- package/src/{params.mjs → params.js} +2 -2
- package/src/{preloaded.mjs → preloaded.js} +1 -1
- package/src/resize-observer.jsx +1 -1
- package/src/router/route.jsx +1 -1
- package/src/router/switch.jsx +1 -1
- package/src/router.jsx +1 -1
- package/src/{routes-native.mjs → routes-native.js} +1 -1
- package/src/{services.mjs → services.js} +1 -1
- package/src/{session-status-updater.mjs → session-status-updater.js} +3 -3
- package/src/{source-maps-loader.mjs → source-maps-loader.js} +1 -1
- package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-content.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute-input.jsx +1 -1
- package/src/super-admin/edit-page/edit-attribute.jsx +1 -1
- package/src/super-admin/edit-page.jsx +2 -2
- package/src/super-admin/has-edit-config.js +1 -1
- package/src/super-admin/index-page.jsx +1 -1
- package/src/super-admin/index.jsx +7 -7
- package/src/super-admin/layout/header/index.jsx +2 -2
- package/src/super-admin/layout/index.jsx +3 -3
- package/src/super-admin/layout/menu/index.jsx +3 -3
- package/src/super-admin/layout/menu/menu-content.jsx +2 -2
- package/src/super-admin/layout/menu/{menu-item/index.jsx → menu-item.jsx} +5 -6
- package/src/super-admin/layout/no-access.jsx +2 -2
- package/src/super-admin/model-class-table.jsx +3 -3
- package/src/super-admin/models.js +1 -1
- package/src/super-admin/show-nav.jsx +2 -2
- package/src/super-admin/show-page/belongs-to-attribute-row.jsx +1 -1
- package/src/super-admin/show-page/index.jsx +2 -2
- package/src/super-admin/show-reflection-actions.jsx +1 -1
- package/src/super-admin/show-reflection-link.jsx +1 -1
- package/src/super-admin/show-reflection-page.jsx +1 -1
- package/src/table/column-content.jsx +1 -1
- package/src/table/filters/filter-form.jsx +1 -1
- package/src/table/filters/index.jsx +5 -3
- package/src/table/filters/load-search-modal.jsx +6 -4
- package/src/table/filters/save-search-modal.jsx +4 -4
- package/src/table/header-select.jsx +1 -1
- package/src/table/model-column.jsx +1 -1
- package/src/table/model-row.jsx +2 -2
- package/src/table/{select-calculator.mjs → select-calculator.js} +1 -1
- package/src/table/settings/column-row.jsx +2 -2
- package/src/table/settings/download-action.jsx +3 -3
- package/src/table/settings/index.jsx +3 -3
- package/src/table/table-settings.js +5 -4
- package/src/table/table.jsx +8 -8
- package/src/table/{use-sorting.mjs → use-sorting.js} +1 -1
- package/src/table/worker-plugins-check-all-checkbox.jsx +2 -2
- package/src/table/worker-plugins-checkbox.jsx +2 -2
- package/src/{translated-collections.mjs → translated-collections.js} +1 -1
- package/src/updated-attribute.jsx +1 -1
- package/src/{use-breakpoint.mjs → use-breakpoint.js} +2 -2
- package/src/use-can-can.js +55 -0
- package/src/{use-collection.mjs → use-collection.js} +4 -4
- package/src/{use-created-event.mjs → use-created-event.js} +2 -2
- package/src/{use-current-user.mjs → use-current-user.js} +6 -5
- package/src/{use-destroyed-event.mjs → use-destroyed-event.js} +2 -2
- package/src/{use-input.mjs → use-input.js} +5 -5
- package/src/use-model-event.js +2 -2
- package/src/{use-model.mjs → use-model.js} +4 -4
- package/src/{use-resize-observer.mjs → use-resize-observer.js} +1 -1
- package/src/use-router.jsx +2 -2
- package/src/{use-updated-event.mjs → use-updated-event.js} +2 -2
- package/src/{use-validation-errors.mjs → use-validation-errors.js} +3 -3
- package/src/utils/checkbox.jsx +2 -2
- package/src/{validation-error.mjs → validation-error.js} +1 -1
- package/src/{validation-errors.mjs → validation-errors.js} +1 -1
- package/src/with-current-user.jsx +1 -1
- package/src/with-model.jsx +1 -1
- package/__tests__/base-model.test.mjs +0 -71
- package/__tests__/cable-connection-pool.test.mjs +0 -227
- package/__tests__/cable-subscription-pool.test.mjs +0 -27
- package/__tests__/can-can.test.mjs +0 -34
- package/__tests__/collection.test.mjs +0 -51
- package/__tests__/custom-error.test.mjs +0 -13
- package/__tests__/model-name.test.mjs +0 -34
- package/__tests__/model-prop-type.test.mjs +0 -113
- package/__tests__/params.test.mjs +0 -40
- package/__tests__/routes-native.test.mjs +0 -104
- package/__tests__/routes.test.mjs +0 -47
- package/__tests__/serializer.test.mjs +0 -30
- package/__tests__/support/task.mjs +0 -27
- package/__tests__/support/user.mjs +0 -32
- package/index.js +0 -1
- package/jest.config.js +0 -9
- package/src/event-created.jsx +0 -12
- package/src/event-destroyed.jsx +0 -25
- package/src/event-emitter-listener.jsx +0 -10
- package/src/event-listener.jsx +0 -25
- package/src/event-updated.jsx +0 -27
- package/src/super-admin/layout/menu/menu-item/style.scss +0 -10
- package/src/use-can-can.mjs +0 -48
- package/src/with-can-can.jsx +0 -12
- package/webpack.config.js +0 -15
- /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
- /package/src/base-model/{column.mjs → column.js} +0 -0
- /package/src/base-model/{scope.mjs → scope.js} +0 -0
- /package/src/{cache-key-generator.mjs → cache-key-generator.js} +0 -0
- /package/src/{channels-consumer.mjs → channels-consumer.js} +0 -0
- /package/src/{command-submit-data.mjs → command-submit-data.js} +0 -0
- /package/src/{config.mjs → config.js} +0 -0
- /package/src/{data-set-to-attributes.mjs → data-set-to-attributes.js} +0 -0
- /package/src/draggable-sort/{controller.mjs → controller.js} +0 -0
- /package/src/{error-messages.mjs → error-messages.js} +0 -0
- /package/src/{events.mjs → events.js} +0 -0
- /package/src/inputs/{auto-submit.mjs → auto-submit.js} +0 -0
- /package/src/inputs/{id-for-component.mjs → id-for-component.js} +0 -0
- /package/src/inputs/{name-for-component.mjs → name-for-component.js} +0 -0
- /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
- /package/src/{logger.mjs → logger.js} +0 -0
- /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
- /package/src/{money-formatter.mjs → money-formatter.js} +0 -0
- /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
- /package/src/{result.mjs → result.js} +0 -0
- /package/src/{routes.mjs → routes.js} +0 -0
- /package/src/{run-last.mjs → run-last.js} +0 -0
- /package/src/{serializer.mjs → serializer.js} +0 -0
- /package/src/table/{column-identifier.mjs → column-identifier.js} +0 -0
- /package/src/table/{column-visible.mjs → column-visible.js} +0 -0
- /package/src/table/{model-callback-args.mjs → model-callback-args.js} +0 -0
- /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
- /package/src/{url-encode.mjs → url-encode.js} +0 -0
- /package/src/{use-event-emitter.mjs → use-event-emitter.js} +0 -0
- /package/src/{use-event-listener.mjs → use-event-listener.js} +0 -0
- /package/src/{use-screen-layout.mjs → use-screen-layout.js} +0 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import Api from "./api";
|
|
2
|
+
import CommandSubmitData from "./command-submit-data";
|
|
3
|
+
import CustomError from "./custom-error";
|
|
4
|
+
import DestroyError from "./destroy-error";
|
|
5
|
+
import Deserializer from "./deserializer";
|
|
6
|
+
import { dig, digg } from "diggerize";
|
|
7
|
+
import events from "./events";
|
|
8
|
+
import FormDataObjectizer from "form-data-objectizer";
|
|
9
|
+
import RunLast from "./run-last";
|
|
10
|
+
import Serializer from "./serializer";
|
|
11
|
+
import SessionStatusUpdater from "./session-status-updater";
|
|
12
|
+
import ValidationError from "./validation-error";
|
|
13
|
+
import { ValidationErrors } from "./validation-errors";
|
|
14
|
+
const shared = {};
|
|
15
|
+
export default class ApiMakerCommandsPool {
|
|
16
|
+
static addCommand(data, args = {}) {
|
|
17
|
+
let pool;
|
|
18
|
+
if (args.instant) {
|
|
19
|
+
pool = new ApiMakerCommandsPool();
|
|
20
|
+
} else {
|
|
21
|
+
pool = ApiMakerCommandsPool.current();
|
|
22
|
+
}
|
|
23
|
+
const promiseResult = pool.addCommand(data);
|
|
24
|
+
if (args.instant) {
|
|
25
|
+
pool.flushRunLast.run();
|
|
26
|
+
} else {
|
|
27
|
+
pool.flushRunLast.queue();
|
|
28
|
+
}
|
|
29
|
+
return promiseResult;
|
|
30
|
+
}
|
|
31
|
+
static current() {
|
|
32
|
+
if (!shared.currentApiMakerCommandsPool) shared.currentApiMakerCommandsPool = new ApiMakerCommandsPool();
|
|
33
|
+
return shared.currentApiMakerCommandsPool;
|
|
34
|
+
}
|
|
35
|
+
static flush() {
|
|
36
|
+
ApiMakerCommandsPool.current().flush();
|
|
37
|
+
}
|
|
38
|
+
constructor() {
|
|
39
|
+
this.flushCount = 0;
|
|
40
|
+
this.pool = {};
|
|
41
|
+
this.poolData = {};
|
|
42
|
+
this.currentId = 1;
|
|
43
|
+
this.globalRequestData = {};
|
|
44
|
+
}
|
|
45
|
+
addCommand(data) {
|
|
46
|
+
const stack = Error().stack;
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
const id = this.currentId;
|
|
49
|
+
this.currentId += 1;
|
|
50
|
+
const commandType = data.type;
|
|
51
|
+
const commandName = data.command;
|
|
52
|
+
const collectionName = data.collectionName;
|
|
53
|
+
this.pool[id] = {
|
|
54
|
+
resolve,
|
|
55
|
+
reject,
|
|
56
|
+
stack
|
|
57
|
+
};
|
|
58
|
+
if (!this.poolData[commandType]) this.poolData[commandType] = {};
|
|
59
|
+
if (!this.poolData[commandType][collectionName]) this.poolData[commandType][collectionName] = {};
|
|
60
|
+
if (!this.poolData[commandType][collectionName][commandName]) this.poolData[commandType][collectionName][commandName] = {};
|
|
61
|
+
let args;
|
|
62
|
+
if (data.args?.nodeName == "FORM") {
|
|
63
|
+
const formData = new FormData(data.args);
|
|
64
|
+
args = FormDataObjectizer.toObject(formData);
|
|
65
|
+
} else if (data.args instanceof FormData) {
|
|
66
|
+
args = FormDataObjectizer.toObject(data.args);
|
|
67
|
+
} else {
|
|
68
|
+
args = Serializer.serialize(data.args);
|
|
69
|
+
}
|
|
70
|
+
this.poolData[commandType][collectionName][commandName][id] = {
|
|
71
|
+
args,
|
|
72
|
+
primary_key: data.primaryKey,
|
|
73
|
+
id
|
|
74
|
+
};
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
commandsCount() {
|
|
78
|
+
return Object.keys(this.pool);
|
|
79
|
+
}
|
|
80
|
+
async sendRequest({
|
|
81
|
+
commandSubmitData,
|
|
82
|
+
url
|
|
83
|
+
}) {
|
|
84
|
+
let response;
|
|
85
|
+
for (let i = 0; i < 3; i++) {
|
|
86
|
+
if (commandSubmitData.getFilesCount() > 0) {
|
|
87
|
+
response = await Api.requestLocal({
|
|
88
|
+
path: url,
|
|
89
|
+
method: "POST",
|
|
90
|
+
rawData: commandSubmitData.getFormData()
|
|
91
|
+
});
|
|
92
|
+
} else {
|
|
93
|
+
response = await Api.requestLocal({
|
|
94
|
+
path: url,
|
|
95
|
+
method: "POST",
|
|
96
|
+
data: commandSubmitData.getJsonData()
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (response.success === false && response.type == "invalid_authenticity_token") {
|
|
100
|
+
console.log("Invalid authenticity token - try again");
|
|
101
|
+
await SessionStatusUpdater.current().updateSessionStatus();
|
|
102
|
+
continue;
|
|
103
|
+
}
|
|
104
|
+
return response;
|
|
105
|
+
}
|
|
106
|
+
throw new Error("Couldnt successfully execute request");
|
|
107
|
+
}
|
|
108
|
+
flush = async () => {
|
|
109
|
+
if (this.commandsCount() == 0) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
const currentPool = this.pool;
|
|
113
|
+
const currentPoolData = this.poolData;
|
|
114
|
+
this.pool = {};
|
|
115
|
+
this.poolData = {};
|
|
116
|
+
this.flushCount++;
|
|
117
|
+
try {
|
|
118
|
+
const submitData = {
|
|
119
|
+
pool: currentPoolData
|
|
120
|
+
};
|
|
121
|
+
if (Object.keys(this.globalRequestData).length > 0) submitData.global = this.globalRequestData;
|
|
122
|
+
const commandSubmitData = new CommandSubmitData(submitData);
|
|
123
|
+
const url = "/api_maker/commands";
|
|
124
|
+
const response = await this.sendRequest({
|
|
125
|
+
commandSubmitData,
|
|
126
|
+
url
|
|
127
|
+
});
|
|
128
|
+
for (const commandId in response.responses) {
|
|
129
|
+
const commandResponse = response.responses[commandId];
|
|
130
|
+
const commandResponseData = Deserializer.parse(commandResponse.data);
|
|
131
|
+
const commandData = currentPool[parseInt(commandId, 10)];
|
|
132
|
+
const responseType = commandResponse.type;
|
|
133
|
+
if (commandResponseData && typeof commandResponseData == "object") {
|
|
134
|
+
const bugReportUrl = dig(commandResponseData, "bug_report_url");
|
|
135
|
+
if (bugReportUrl) {
|
|
136
|
+
console.log(`Bug report URL: ${bugReportUrl}`);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (responseType == "success") {
|
|
140
|
+
commandData.resolve(commandResponseData);
|
|
141
|
+
} else if (responseType == "error") {
|
|
142
|
+
const error = new CustomError("Command error", {
|
|
143
|
+
response: commandResponseData
|
|
144
|
+
});
|
|
145
|
+
error.stack += "\n";
|
|
146
|
+
error.stack += commandData.stack.split("\n").slice(1).join("\n");
|
|
147
|
+
commandData.reject(error);
|
|
148
|
+
} else if (responseType == "failed") {
|
|
149
|
+
this.handleFailedResponse(commandData, commandResponseData);
|
|
150
|
+
} else {
|
|
151
|
+
throw new Error(`Unhandled response type: ${responseType}`);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
} finally {
|
|
155
|
+
this.flushCount--;
|
|
156
|
+
}
|
|
157
|
+
};
|
|
158
|
+
handleFailedResponse(commandData, commandResponseData) {
|
|
159
|
+
let error;
|
|
160
|
+
if (commandResponseData.error_type == "destroy_error") {
|
|
161
|
+
error = new DestroyError(`Destroy failed`, {
|
|
162
|
+
response: commandResponseData
|
|
163
|
+
});
|
|
164
|
+
} else if (commandResponseData.error_type == "validation_error") {
|
|
165
|
+
const validationErrors = new ValidationErrors({
|
|
166
|
+
model: digg(commandResponseData, "model"),
|
|
167
|
+
validationErrors: digg(commandResponseData, "validation_errors")
|
|
168
|
+
});
|
|
169
|
+
error = new ValidationError(validationErrors, {
|
|
170
|
+
response: commandResponseData
|
|
171
|
+
});
|
|
172
|
+
events.emit("onValidationErrors", validationErrors);
|
|
173
|
+
} else {
|
|
174
|
+
let errorMessage;
|
|
175
|
+
if (!commandResponseData.errors) {
|
|
176
|
+
errorMessage = "Command failed";
|
|
177
|
+
}
|
|
178
|
+
error = new CustomError(errorMessage, {
|
|
179
|
+
response: commandResponseData
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
commandData.reject(error);
|
|
183
|
+
}
|
|
184
|
+
isActive() {
|
|
185
|
+
if (this.commandsCount() > 0) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
if (this.flushCount > 0) {
|
|
189
|
+
return true;
|
|
190
|
+
}
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
193
|
+
flushRunLast = new RunLast(this.flush);
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJBcGkiLCJDb21tYW5kU3VibWl0RGF0YSIsIkN1c3RvbUVycm9yIiwiRGVzdHJveUVycm9yIiwiRGVzZXJpYWxpemVyIiwiZGlnIiwiZGlnZyIsImV2ZW50cyIsIkZvcm1EYXRhT2JqZWN0aXplciIsIlJ1bkxhc3QiLCJTZXJpYWxpemVyIiwiU2Vzc2lvblN0YXR1c1VwZGF0ZXIiLCJWYWxpZGF0aW9uRXJyb3IiLCJWYWxpZGF0aW9uRXJyb3JzIiwic2hhcmVkIiwiQXBpTWFrZXJDb21tYW5kc1Bvb2wiLCJhZGRDb21tYW5kIiwiZGF0YSIsImFyZ3MiLCJwb29sIiwiaW5zdGFudCIsImN1cnJlbnQiLCJwcm9taXNlUmVzdWx0IiwiZmx1c2hSdW5MYXN0IiwicnVuIiwicXVldWUiLCJjdXJyZW50QXBpTWFrZXJDb21tYW5kc1Bvb2wiLCJmbHVzaCIsImNvbnN0cnVjdG9yIiwiZmx1c2hDb3VudCIsInBvb2xEYXRhIiwiY3VycmVudElkIiwiZ2xvYmFsUmVxdWVzdERhdGEiLCJzdGFjayIsIkVycm9yIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJpZCIsImNvbW1hbmRUeXBlIiwidHlwZSIsImNvbW1hbmROYW1lIiwiY29tbWFuZCIsImNvbGxlY3Rpb25OYW1lIiwibm9kZU5hbWUiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwidG9PYmplY3QiLCJzZXJpYWxpemUiLCJwcmltYXJ5X2tleSIsInByaW1hcnlLZXkiLCJjb21tYW5kc0NvdW50IiwiT2JqZWN0Iiwia2V5cyIsInNlbmRSZXF1ZXN0IiwiY29tbWFuZFN1Ym1pdERhdGEiLCJ1cmwiLCJyZXNwb25zZSIsImkiLCJnZXRGaWxlc0NvdW50IiwicmVxdWVzdExvY2FsIiwicGF0aCIsIm1ldGhvZCIsInJhd0RhdGEiLCJnZXRGb3JtRGF0YSIsImdldEpzb25EYXRhIiwic3VjY2VzcyIsImNvbnNvbGUiLCJsb2ciLCJ1cGRhdGVTZXNzaW9uU3RhdHVzIiwiY3VycmVudFBvb2wiLCJjdXJyZW50UG9vbERhdGEiLCJzdWJtaXREYXRhIiwibGVuZ3RoIiwiZ2xvYmFsIiwiY29tbWFuZElkIiwicmVzcG9uc2VzIiwiY29tbWFuZFJlc3BvbnNlIiwiY29tbWFuZFJlc3BvbnNlRGF0YSIsInBhcnNlIiwiY29tbWFuZERhdGEiLCJwYXJzZUludCIsInJlc3BvbnNlVHlwZSIsImJ1Z1JlcG9ydFVybCIsImVycm9yIiwic3BsaXQiLCJzbGljZSIsImpvaW4iLCJoYW5kbGVGYWlsZWRSZXNwb25zZSIsImVycm9yX3R5cGUiLCJ2YWxpZGF0aW9uRXJyb3JzIiwibW9kZWwiLCJlbWl0IiwiZXJyb3JNZXNzYWdlIiwiZXJyb3JzIiwiaXNBY3RpdmUiXSwic291cmNlcyI6WyIuLi9zcmMvY29tbWFuZHMtcG9vbC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXBpIGZyb20gXCIuL2FwaVwiXG5pbXBvcnQgQ29tbWFuZFN1Ym1pdERhdGEgZnJvbSBcIi4vY29tbWFuZC1zdWJtaXQtZGF0YVwiXG5pbXBvcnQgQ3VzdG9tRXJyb3IgZnJvbSBcIi4vY3VzdG9tLWVycm9yXCJcbmltcG9ydCBEZXN0cm95RXJyb3IgZnJvbSBcIi4vZGVzdHJveS1lcnJvclwiXG5pbXBvcnQgRGVzZXJpYWxpemVyIGZyb20gXCIuL2Rlc2VyaWFsaXplclwiXG5pbXBvcnQge2RpZywgZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgZXZlbnRzIGZyb20gXCIuL2V2ZW50c1wiXG5pbXBvcnQgRm9ybURhdGFPYmplY3RpemVyIGZyb20gXCJmb3JtLWRhdGEtb2JqZWN0aXplclwiXG5pbXBvcnQgUnVuTGFzdCBmcm9tIFwiLi9ydW4tbGFzdFwiXG5pbXBvcnQgU2VyaWFsaXplciBmcm9tIFwiLi9zZXJpYWxpemVyXCJcbmltcG9ydCBTZXNzaW9uU3RhdHVzVXBkYXRlciBmcm9tIFwiLi9zZXNzaW9uLXN0YXR1cy11cGRhdGVyXCJcbmltcG9ydCBWYWxpZGF0aW9uRXJyb3IgZnJvbSBcIi4vdmFsaWRhdGlvbi1lcnJvclwiXG5pbXBvcnQge1ZhbGlkYXRpb25FcnJvcnN9IGZyb20gXCIuL3ZhbGlkYXRpb24tZXJyb3JzXCJcblxuY29uc3Qgc2hhcmVkID0ge31cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDb21tYW5kc1Bvb2wge1xuICBzdGF0aWMgYWRkQ29tbWFuZChkYXRhLCBhcmdzID0ge30pIHtcbiAgICBsZXQgcG9vbFxuXG4gICAgaWYgKGFyZ3MuaW5zdGFudCkge1xuICAgICAgcG9vbCA9IG5ldyBBcGlNYWtlckNvbW1hbmRzUG9vbCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHBvb2wgPSBBcGlNYWtlckNvbW1hbmRzUG9vbC5jdXJyZW50KClcbiAgICB9XG5cbiAgICBjb25zdCBwcm9taXNlUmVzdWx0ID0gcG9vbC5hZGRDb21tYW5kKGRhdGEpXG5cbiAgICBpZiAoYXJncy5pbnN0YW50KSB7XG4gICAgICBwb29sLmZsdXNoUnVuTGFzdC5ydW4oKVxuICAgIH0gZWxzZSB7XG4gICAgICBwb29sLmZsdXNoUnVuTGFzdC5xdWV1ZSgpXG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2VSZXN1bHRcbiAgfVxuXG4gIHN0YXRpYyBjdXJyZW50KCkge1xuICAgIGlmICghc2hhcmVkLmN1cnJlbnRBcGlNYWtlckNvbW1hbmRzUG9vbCkgc2hhcmVkLmN1cnJlbnRBcGlNYWtlckNvbW1hbmRzUG9vbCA9IG5ldyBBcGlNYWtlckNvbW1hbmRzUG9vbCgpXG5cbiAgICByZXR1cm4gc2hhcmVkLmN1cnJlbnRBcGlNYWtlckNvbW1hbmRzUG9vbFxuICB9XG5cbiAgc3RhdGljIGZsdXNoKCkge1xuICAgIEFwaU1ha2VyQ29tbWFuZHNQb29sLmN1cnJlbnQoKS5mbHVzaCgpXG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmZsdXNoQ291bnQgPSAwXG4gICAgdGhpcy5wb29sID0ge31cbiAgICB0aGlzLnBvb2xEYXRhID0ge31cbiAgICB0aGlzLmN1cnJlbnRJZCA9IDFcbiAgICB0aGlzLmdsb2JhbFJlcXVlc3REYXRhID0ge31cbiAgfVxuXG4gIGFkZENvbW1hbmQoZGF0YSkge1xuICAgIGNvbnN0IHN0YWNrID0gRXJyb3IoKS5zdGFja1xuXG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGlkID0gdGhpcy5jdXJyZW50SWRcbiAgICAgIHRoaXMuY3VycmVudElkICs9IDFcblxuICAgICAgY29uc3QgY29tbWFuZFR5cGUgPSBkYXRhLnR5cGVcbiAgICAgIGNvbnN0IGNvbW1hbmROYW1lID0gZGF0YS5jb21tYW5kXG4gICAgICBjb25zdCBjb2xsZWN0aW9uTmFtZSA9IGRhdGEuY29sbGVjdGlvbk5hbWVcblxuICAgICAgdGhpcy5wb29sW2lkXSA9IHtyZXNvbHZlLCByZWplY3QsIHN0YWNrfVxuXG4gICAgICBpZiAoIXRoaXMucG9vbERhdGFbY29tbWFuZFR5cGVdKSB0aGlzLnBvb2xEYXRhW2NvbW1hbmRUeXBlXSA9IHt9XG4gICAgICBpZiAoIXRoaXMucG9vbERhdGFbY29tbWFuZFR5cGVdW2NvbGxlY3Rpb25OYW1lXSkgdGhpcy5wb29sRGF0YVtjb21tYW5kVHlwZV1bY29sbGVjdGlvbk5hbWVdID0ge31cbiAgICAgIGlmICghdGhpcy5wb29sRGF0YVtjb21tYW5kVHlwZV1bY29sbGVjdGlvbk5hbWVdW2NvbW1hbmROYW1lXSkgdGhpcy5wb29sRGF0YVtjb21tYW5kVHlwZV1bY29sbGVjdGlvbk5hbWVdW2NvbW1hbmROYW1lXSA9IHt9XG5cbiAgICAgIGxldCBhcmdzXG5cbiAgICAgIGlmIChkYXRhLmFyZ3M/Lm5vZGVOYW1lID09IFwiRk9STVwiKSB7XG4gICAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKGRhdGEuYXJncylcblxuICAgICAgICBhcmdzID0gRm9ybURhdGFPYmplY3RpemVyLnRvT2JqZWN0KGZvcm1EYXRhKVxuICAgICAgfSBlbHNlIGlmIChkYXRhLmFyZ3MgaW5zdGFuY2VvZiBGb3JtRGF0YSkge1xuICAgICAgICBhcmdzID0gRm9ybURhdGFPYmplY3RpemVyLnRvT2JqZWN0KGRhdGEuYXJncylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyZ3MgPSBTZXJpYWxpemVyLnNlcmlhbGl6ZShkYXRhLmFyZ3MpXG4gICAgICB9XG5cbiAgICAgIHRoaXMucG9vbERhdGFbY29tbWFuZFR5cGVdW2NvbGxlY3Rpb25OYW1lXVtjb21tYW5kTmFtZV1baWRdID0ge1xuICAgICAgICBhcmdzLFxuICAgICAgICBwcmltYXJ5X2tleTogZGF0YS5wcmltYXJ5S2V5LFxuICAgICAgICBpZFxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBjb21tYW5kc0NvdW50KCkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLnBvb2wpXG4gIH1cblxuICBhc3luYyBzZW5kUmVxdWVzdCh7Y29tbWFuZFN1Ym1pdERhdGEsIHVybH0pIHtcbiAgICBsZXQgcmVzcG9uc2VcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMzsgaSsrKSB7XG4gICAgICBpZiAoY29tbWFuZFN1Ym1pdERhdGEuZ2V0RmlsZXNDb3VudCgpID4gMCkge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IEFwaS5yZXF1ZXN0TG9jYWwoe3BhdGg6IHVybCwgbWV0aG9kOiBcIlBPU1RcIiwgcmF3RGF0YTogY29tbWFuZFN1Ym1pdERhdGEuZ2V0Rm9ybURhdGEoKX0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IEFwaS5yZXF1ZXN0TG9jYWwoe3BhdGg6IHVybCwgbWV0aG9kOiBcIlBPU1RcIiwgZGF0YTogY29tbWFuZFN1Ym1pdERhdGEuZ2V0SnNvbkRhdGEoKX0pXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzID09PSBmYWxzZSAmJiByZXNwb25zZS50eXBlID09IFwiaW52YWxpZF9hdXRoZW50aWNpdHlfdG9rZW5cIikge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkludmFsaWQgYXV0aGVudGljaXR5IHRva2VuIC0gdHJ5IGFnYWluXCIpXG4gICAgICAgIGF3YWl0IFNlc3Npb25TdGF0dXNVcGRhdGVyLmN1cnJlbnQoKS51cGRhdGVTZXNzaW9uU3RhdHVzKClcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlXG4gICAgfVxuXG4gICAgdGhyb3cgbmV3IEVycm9yKFwiQ291bGRudCBzdWNjZXNzZnVsbHkgZXhlY3V0ZSByZXF1ZXN0XCIpXG4gIH1cblxuICBmbHVzaCA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAodGhpcy5jb21tYW5kc0NvdW50KCkgPT0gMCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgY3VycmVudFBvb2wgPSB0aGlzLnBvb2xcbiAgICBjb25zdCBjdXJyZW50UG9vbERhdGEgPSB0aGlzLnBvb2xEYXRhXG5cbiAgICB0aGlzLnBvb2wgPSB7fVxuICAgIHRoaXMucG9vbERhdGEgPSB7fVxuICAgIHRoaXMuZmx1c2hDb3VudCsrXG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3VibWl0RGF0YSA9IHtwb29sOiBjdXJyZW50UG9vbERhdGF9XG5cbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmdsb2JhbFJlcXVlc3REYXRhKS5sZW5ndGggPiAwKVxuICAgICAgICBzdWJtaXREYXRhLmdsb2JhbCA9IHRoaXMuZ2xvYmFsUmVxdWVzdERhdGFcblxuICAgICAgY29uc3QgY29tbWFuZFN1Ym1pdERhdGEgPSBuZXcgQ29tbWFuZFN1Ym1pdERhdGEoc3VibWl0RGF0YSlcbiAgICAgIGNvbnN0IHVybCA9IFwiL2FwaV9tYWtlci9jb21tYW5kc1wiXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IHRoaXMuc2VuZFJlcXVlc3Qoe2NvbW1hbmRTdWJtaXREYXRhLCB1cmx9KVxuXG4gICAgICBmb3IgKGNvbnN0IGNvbW1hbmRJZCBpbiByZXNwb25zZS5yZXNwb25zZXMpIHtcbiAgICAgICAgY29uc3QgY29tbWFuZFJlc3BvbnNlID0gcmVzcG9uc2UucmVzcG9uc2VzW2NvbW1hbmRJZF1cbiAgICAgICAgY29uc3QgY29tbWFuZFJlc3BvbnNlRGF0YSA9IERlc2VyaWFsaXplci5wYXJzZShjb21tYW5kUmVzcG9uc2UuZGF0YSlcbiAgICAgICAgY29uc3QgY29tbWFuZERhdGEgPSBjdXJyZW50UG9vbFtwYXJzZUludChjb21tYW5kSWQsIDEwKV1cbiAgICAgICAgY29uc3QgcmVzcG9uc2VUeXBlID0gY29tbWFuZFJlc3BvbnNlLnR5cGVcblxuICAgICAgICBpZiAoY29tbWFuZFJlc3BvbnNlRGF0YSAmJiB0eXBlb2YgY29tbWFuZFJlc3BvbnNlRGF0YSA9PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgY29uc3QgYnVnUmVwb3J0VXJsID0gZGlnKGNvbW1hbmRSZXNwb25zZURhdGEsIFwiYnVnX3JlcG9ydF91cmxcIilcblxuICAgICAgICAgIGlmIChidWdSZXBvcnRVcmwpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBCdWcgcmVwb3J0IFVSTDogJHtidWdSZXBvcnRVcmx9YClcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzcG9uc2VUeXBlID09IFwic3VjY2Vzc1wiKSB7XG4gICAgICAgICAgY29tbWFuZERhdGEucmVzb2x2ZShjb21tYW5kUmVzcG9uc2VEYXRhKVxuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlVHlwZSA9PSBcImVycm9yXCIpIHtcbiAgICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBDdXN0b21FcnJvcihcIkNvbW1hbmQgZXJyb3JcIiwge3Jlc3BvbnNlOiBjb21tYW5kUmVzcG9uc2VEYXRhfSlcblxuICAgICAgICAgIGVycm9yLnN0YWNrICs9IFwiXFxuXCJcbiAgICAgICAgICBlcnJvci5zdGFjayArPSBjb21tYW5kRGF0YS5zdGFjay5zcGxpdChcIlxcblwiKS5zbGljZSgxKS5qb2luKFwiXFxuXCIpXG5cbiAgICAgICAgICBjb21tYW5kRGF0YS5yZWplY3QoZXJyb3IpXG4gICAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2VUeXBlID09IFwiZmFpbGVkXCIpIHtcbiAgICAgICAgICB0aGlzLmhhbmRsZUZhaWxlZFJlc3BvbnNlKGNvbW1hbmREYXRhLCBjb21tYW5kUmVzcG9uc2VEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5oYW5kbGVkIHJlc3BvbnNlIHR5cGU6ICR7cmVzcG9uc2VUeXBlfWApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5mbHVzaENvdW50LS1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVGYWlsZWRSZXNwb25zZShjb21tYW5kRGF0YSwgY29tbWFuZFJlc3BvbnNlRGF0YSkge1xuICAgIGxldCBlcnJvclxuXG4gICAgaWYgKGNvbW1hbmRSZXNwb25zZURhdGEuZXJyb3JfdHlwZSA9PSBcImRlc3Ryb3lfZXJyb3JcIikge1xuICAgICAgZXJyb3IgPSBuZXcgRGVzdHJveUVycm9yKGBEZXN0cm95IGZhaWxlZGAsIHtyZXNwb25zZTogY29tbWFuZFJlc3BvbnNlRGF0YX0pXG4gICAgfSBlbHNlIGlmIChjb21tYW5kUmVzcG9uc2VEYXRhLmVycm9yX3R5cGUgPT0gXCJ2YWxpZGF0aW9uX2Vycm9yXCIpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25FcnJvcnMgPSBuZXcgVmFsaWRhdGlvbkVycm9ycyh7XG4gICAgICAgIG1vZGVsOiBkaWdnKGNvbW1hbmRSZXNwb25zZURhdGEsIFwibW9kZWxcIiksXG4gICAgICAgIHZhbGlkYXRpb25FcnJvcnM6IGRpZ2coY29tbWFuZFJlc3BvbnNlRGF0YSwgXCJ2YWxpZGF0aW9uX2Vycm9yc1wiKVxuICAgICAgfSlcbiAgICAgIGVycm9yID0gbmV3IFZhbGlkYXRpb25FcnJvcih2YWxpZGF0aW9uRXJyb3JzLCB7cmVzcG9uc2U6IGNvbW1hbmRSZXNwb25zZURhdGF9KVxuXG4gICAgICBldmVudHMuZW1pdChcIm9uVmFsaWRhdGlvbkVycm9yc1wiLCB2YWxpZGF0aW9uRXJyb3JzKVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgZXJyb3JNZXNzYWdlXG5cbiAgICAgIGlmICghY29tbWFuZFJlc3BvbnNlRGF0YS5lcnJvcnMpIHsgZXJyb3JNZXNzYWdlID0gXCJDb21tYW5kIGZhaWxlZFwiIH1cblxuICAgICAgZXJyb3IgPSBuZXcgQ3VzdG9tRXJyb3IoZXJyb3JNZXNzYWdlLCB7cmVzcG9uc2U6IGNvbW1hbmRSZXNwb25zZURhdGF9KVxuICAgIH1cblxuICAgIGNvbW1hbmREYXRhLnJlamVjdChlcnJvcilcbiAgfVxuXG4gIGlzQWN0aXZlKCkge1xuICAgIGlmICh0aGlzLmNvbW1hbmRzQ291bnQoKSA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZmx1c2hDb3VudCA+IDApIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBmbHVzaFJ1bkxhc3QgPSBuZXcgUnVuTGFzdCh0aGlzLmZsdXNoKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxHQUFHLE1BQU0sT0FBTztBQUN2QixPQUFPQyxpQkFBaUIsTUFBTSx1QkFBdUI7QUFDckQsT0FBT0MsV0FBVyxNQUFNLGdCQUFnQjtBQUN4QyxPQUFPQyxZQUFZLE1BQU0saUJBQWlCO0FBQzFDLE9BQU9DLFlBQVksTUFBTSxnQkFBZ0I7QUFDekMsU0FBUUMsR0FBRyxFQUFFQyxJQUFJLFFBQU8sV0FBVztBQUNuQyxPQUFPQyxNQUFNLE1BQU0sVUFBVTtBQUM3QixPQUFPQyxrQkFBa0IsTUFBTSxzQkFBc0I7QUFDckQsT0FBT0MsT0FBTyxNQUFNLFlBQVk7QUFDaEMsT0FBT0MsVUFBVSxNQUFNLGNBQWM7QUFDckMsT0FBT0Msb0JBQW9CLE1BQU0sMEJBQTBCO0FBQzNELE9BQU9DLGVBQWUsTUFBTSxvQkFBb0I7QUFDaEQsU0FBUUMsZ0JBQWdCLFFBQU8scUJBQXFCO0FBRXBELE1BQU1DLE1BQU0sR0FBRyxD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
|
package/build/compose.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export default function apiMakerCompose(wrappedComponentClass, ...funcs) {
|
|
2
|
+
if (!wrappedComponentClass) throw new Error("No 'wrappedComponentClass' given");
|
|
3
|
+
let currentComponentClass = wrappedComponentClass;
|
|
4
|
+
for (const func of funcs) {
|
|
5
|
+
currentComponentClass = func(currentComponentClass);
|
|
6
|
+
}
|
|
7
|
+
return currentComponentClass;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhcGlNYWtlckNvbXBvc2UiLCJ3cmFwcGVkQ29tcG9uZW50Q2xhc3MiLCJmdW5jcyIsIkVycm9yIiwiY3VycmVudENvbXBvbmVudENsYXNzIiwiZnVuYyJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb3NlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGFwaU1ha2VyQ29tcG9zZSh3cmFwcGVkQ29tcG9uZW50Q2xhc3MsIC4uLmZ1bmNzKSB7XG4gIGlmICghd3JhcHBlZENvbXBvbmVudENsYXNzKSB0aHJvdyBuZXcgRXJyb3IoXCJObyAnd3JhcHBlZENvbXBvbmVudENsYXNzJyBnaXZlblwiKVxuXG4gIGxldCBjdXJyZW50Q29tcG9uZW50Q2xhc3MgPSB3cmFwcGVkQ29tcG9uZW50Q2xhc3NcblxuICBmb3IgKGNvbnN0IGZ1bmMgb2YgZnVuY3MpIHtcbiAgICBjdXJyZW50Q29tcG9uZW50Q2xhc3MgPSBmdW5jKGN1cnJlbnRDb21wb25lbnRDbGFzcylcbiAgfVxuXG4gIHJldHVybiBjdXJyZW50Q29tcG9uZW50Q2xhc3Ncbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxTQUFTQSxlQUFlQSxDQUFDQyxxQkFBcUIsRUFBRSxHQUFHQyxLQUFLLEVBQUU7RUFDdkUsSUFBSSxDQUFDRCxxQkFBcUIsRUFBRSxNQUFNLElBQUlFLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQztFQUUvRSxJQUFJQyxxQkFBcUIsR0FBR0gscUJBQXFCO0VBRWpELEtBQUssTUFBTUksSUFBSSxJQUFJSCxLQUFLLEVBQUU7SUFDeEJFLHFCQUFxQixHQUFHQyxJQUFJLENBQUNELHFCQUFxQixDQUFDO0VBQ3JEO0VBRUEsT0FBT0EscUJBQXFCO0FBQzlCIiwiaWdub3JlTGlzdCI6W119
|
package/build/config.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import * as inflection from "inflection";
|
|
2
|
+
const accessors = {
|
|
3
|
+
breakPoints: {
|
|
4
|
+
default: [["xxl", 1400], ["xl", 1200], ["lg", 992], ["md", 768], ["sm", 576], ["xs", 0]],
|
|
5
|
+
required: true
|
|
6
|
+
},
|
|
7
|
+
currenciesCollection: {
|
|
8
|
+
required: true
|
|
9
|
+
},
|
|
10
|
+
history: {
|
|
11
|
+
required: false
|
|
12
|
+
},
|
|
13
|
+
host: {
|
|
14
|
+
required: false
|
|
15
|
+
},
|
|
16
|
+
i18n: {
|
|
17
|
+
required: false
|
|
18
|
+
},
|
|
19
|
+
modal: {
|
|
20
|
+
required: false
|
|
21
|
+
},
|
|
22
|
+
routes: {
|
|
23
|
+
required: false
|
|
24
|
+
},
|
|
25
|
+
routeDefinitions: {
|
|
26
|
+
required: false
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
class ApiMakerConfig {
|
|
30
|
+
constructor() {
|
|
31
|
+
if (!globalThis.apiMakerConfigGlobal) globalThis.apiMakerConfigGlobal = {};
|
|
32
|
+
this.global = globalThis.apiMakerConfigGlobal;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
for (const accessorName in accessors) {
|
|
36
|
+
const accessorData = accessors[accessorName];
|
|
37
|
+
const camelizedAccessor = inflection.camelize(accessorName);
|
|
38
|
+
ApiMakerConfig.prototype[`set${camelizedAccessor}`] = function (newValue) {
|
|
39
|
+
this.global[accessorName] = newValue;
|
|
40
|
+
};
|
|
41
|
+
ApiMakerConfig.prototype[`get${camelizedAccessor}`] = function (...args) {
|
|
42
|
+
if (!this.global[accessorName]) {
|
|
43
|
+
if (accessorData.default) return accessorData.default;
|
|
44
|
+
if (accessorData.required) throw new Error(`${accessorName} hasn't been set`);
|
|
45
|
+
}
|
|
46
|
+
const value = this.global[accessorName];
|
|
47
|
+
if (typeof value == "function") return value(...args);
|
|
48
|
+
return value;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const apiMakerConfig = new ApiMakerConfig();
|
|
52
|
+
export default apiMakerConfig;
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwiYWNjZXNzb3JzIiwiYnJlYWtQb2ludHMiLCJkZWZhdWx0IiwicmVxdWlyZWQiLCJjdXJyZW5jaWVzQ29sbGVjdGlvbiIsImhpc3RvcnkiLCJob3N0IiwiaTE4biIsIm1vZGFsIiwicm91dGVzIiwicm91dGVEZWZpbml0aW9ucyIsIkFwaU1ha2VyQ29uZmlnIiwiY29uc3RydWN0b3IiLCJnbG9iYWxUaGlzIiwiYXBpTWFrZXJDb25maWdHbG9iYWwiLCJnbG9iYWwiLCJhY2Nlc3Nvck5hbWUiLCJhY2Nlc3NvckRhdGEiLCJjYW1lbGl6ZWRBY2Nlc3NvciIsImNhbWVsaXplIiwicHJvdG90eXBlIiwibmV3VmFsdWUiLCJhcmdzIiwiRXJyb3IiLCJ2YWx1ZSIsImFwaU1ha2VyQ29uZmlnIl0sInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcblxuY29uc3QgYWNjZXNzb3JzID0ge1xuICBicmVha1BvaW50czoge1xuICAgIGRlZmF1bHQ6IFtcbiAgICAgIFtcInh4bFwiLCAxNDAwXSxcbiAgICAgIFtcInhsXCIsIDEyMDBdLFxuICAgICAgW1wibGdcIiwgOTkyXSxcbiAgICAgIFtcIm1kXCIsIDc2OF0sXG4gICAgICBbXCJzbVwiLCA1NzZdLFxuICAgICAgW1wieHNcIiwgMF1cbiAgICBdLFxuICAgIHJlcXVpcmVkOiB0cnVlXG4gIH0sXG4gIGN1cnJlbmNpZXNDb2xsZWN0aW9uOiB7cmVxdWlyZWQ6IHRydWV9LFxuICBoaXN0b3J5OiB7cmVxdWlyZWQ6IGZhbHNlfSxcbiAgaG9zdDoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIGkxOG46IHtyZXF1aXJlZDogZmFsc2V9LFxuICBtb2RhbDoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIHJvdXRlczoge3JlcXVpcmVkOiBmYWxzZX0sXG4gIHJvdXRlRGVmaW5pdGlvbnM6IHtyZXF1aXJlZDogZmFsc2V9XG59XG5cbmNsYXNzIEFwaU1ha2VyQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCFnbG9iYWxUaGlzLmFwaU1ha2VyQ29uZmlnR2xvYmFsKSBnbG9iYWxUaGlzLmFwaU1ha2VyQ29uZmlnR2xvYmFsID0ge31cblxuICAgIHRoaXMuZ2xvYmFsID0gZ2xvYmFsVGhpcy5hcGlNYWtlckNvbmZpZ0dsb2JhbFxuICB9XG59XG5cbmZvciAoY29uc3QgYWNjZXNzb3JOYW1lIGluIGFjY2Vzc29ycykge1xuICBjb25zdCBhY2Nlc3NvckRhdGEgPSBhY2Nlc3NvcnNbYWNjZXNzb3JOYW1lXVxuICBjb25zdCBjYW1lbGl6ZWRBY2Nlc3NvciA9IGluZmxlY3Rpb24uY2FtZWxpemUoYWNjZXNzb3JOYW1lKVxuXG4gIEFwaU1ha2VyQ29uZmlnLnByb3RvdHlwZVtgc2V0JHtjYW1lbGl6ZWRBY2Nlc3Nvcn1gXSA9IGZ1bmN0aW9uIChuZXdWYWx1ZSkgeyB0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdID0gbmV3VmFsdWUgfVxuICBBcGlNYWtlckNvbmZpZy5wcm90b3R5cGVbYGdldCR7Y2FtZWxpemVkQWNjZXNzb3J9YF0gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuICAgIGlmICghdGhpcy5nbG9iYWxbYWNjZXNzb3JOYW1lXSkge1xuICAgICAgaWYgKGFjY2Vzc29yRGF0YS5kZWZhdWx0KSByZXR1cm4gYWNjZXNzb3JEYXRhLmRlZmF1bHRcbiAgICAgIGlmIChhY2Nlc3NvckRhdGEucmVxdWlyZWQpIHRocm93IG5ldyBFcnJvcihgJHthY2Nlc3Nvck5hbWV9IGhhc24ndCBiZWVuIHNldGApXG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLmdsb2JhbFthY2Nlc3Nvck5hbWVdXG5cbiAgICBpZiAodHlwZW9mIHZhbHVlID09IFwiZnVuY3Rpb25cIikgcmV0dXJuIHZhbHVlKC4uLmFyZ3MpXG5cbiAgICByZXR1cm4gdmFsdWVcbiAgfVxufVxuXG5jb25zdCBhcGlNYWtlckNvbmZpZyA9IG5ldyBBcGlNYWtlckNvbmZpZygpXG5cbmV4cG9ydCBkZWZhdWx0IGFwaU1ha2VyQ29uZmlnXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBS0EsVUFBVSxNQUFNLFlBQVk7QUFFeEMsTUFBTUMsU0FBUyxHQUFHO0VBQ2hCQyxXQUFXLEVBQUU7SUFDWEMsT0FBTyxFQUFFLENBQ1AsQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQ2IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQ1osQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQ1gsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQ1Y7SUFDREMsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNEQyxvQkFBb0IsRUFBRTtJQUFDRCxRQUFRLEVBQUU7RUFBSSxDQUFDO0VBQ3RDRSxPQUFPLEVBQUU7SUFBQ0YsUUFBUSxFQUFFO0VBQUssQ0FBQztFQUMxQkcsSUFBSSxFQUFFO0lBQUNILFFBQVEsRUFBRTtFQUFLLENBQUM7RUFDdkJJLElBQUksRUFBRTtJQUFDSixRQUFRLEVBQUU7RUFBSyxDQUFDO0VBQ3ZCSyxLQUFLLEVBQUU7SUFBQ0wsUUFBUSxFQUFFO0VBQUssQ0FBQztFQUN4Qk0sTUFBTSxFQUFFO0lBQUNOLFFBQVEsRUFBRTtFQUFLLENBQUM7RUFDekJPLGdCQUFnQixFQUFFO0lBQUNQLFFBQVEsRUFBRTtFQUFLO0FBQ3BDLENBQUM7QUFFRCxNQUFNUSxjQUFjLENBQUM7RUFDbkJDLFdBQVdBLENBQUEsRUFBRztJQUNaLElBQUksQ0FBQ0MsVUFBVSxDQUFDQyxvQkFBb0IsRUFBRUQsVUFBVSxDQUFDQyxvQkFBb0IsR0FBRyxDQUFDLENBQUM7SUFFMUUsSUFBSSxDQUFDQyxNQUFNLEdBQUdGLFVBQVUsQ0FBQ0Msb0JBQW9CO0VBQy9DO0FBQ0Y7QUFFQSxLQUFLLE1BQU1FLFlBQVksSUFBSWhCLFNBQVMsRUFBRTtFQUNwQyxNQUFNaUIsWUFBWSxHQUFHakIsU0FBUyxDQUFDZ0IsWUFBWSxDQUFDO0VBQzVDLE1BQU1FLGlCQUFpQixHQUFHbkIsVUFBVSxDQUFDb0IsUUFBUSxDQUFDSCxZQUFZLENBQUM7RUFFM0RMLGNBQWMsQ0FBQ1MsU0FBUyxDQUFDLE1BQU1GLGlCQUFpQixFQUFFLENBQUMsR0FBRyxVQUFVRyxRQUFRLEVBQUU7SUFBRSxJQUFJLENBQUNOLE1BQU0sQ0FBQ0MsWUFBWSxDQUFDLEdBQUdLLFFBQVE7RUFBQyxDQUFDO0VBQ2xIVixjQUFjLENBQUNTLFNBQVMsQ0FBQyxNQUFNRixpQkFBaUIsRUFBRSxDQUFDLEdBQUcsVUFBVSxHQUFHSSxJQUFJLEVBQUU7SUFDdkUsSUFBSSxDQUFDLElBQUksQ0FBQ1AsTUFBTSxDQUFDQyxZQUFZLENBQUMsRUFBRTtNQUM5QixJQUFJQyxZQUFZLENBQUNmLE9BQU8sRUFBRSxPQUFPZSxZQUFZLENBQUNmLE9BQU87TUFDckQsSUFBSWUsWUFBWSxDQUFDZCxRQUFRLEVBQUUsTUFBTSxJQUFJb0IsS0FBSyxDQUFDLEdBQUdQLFlBQVksa0JBQWtCLENBQUM7SUFDL0U7SUFFQSxNQUFNUSxLQUFLLEdBQUcsSUFBSSxDQUFDVCxNQUFNLENBQUNDLFlBQVksQ0FBQztJQUV2QyxJQUFJLE9BQU9RLEtBQUssSUFBSSxVQUFVLEVBQUUsT0FBT0EsS0FBSyxDQUFDLEdBQUdGLElBQUksQ0FBQztJQUVyRCxPQUFPRSxLQUFLO0VBQ2QsQ0FBQztBQUNIO0FBRUEsTUFBTUMsY0FBYyxHQUFHLElBQUlkLGNBQWMsQ0FBQyxDQUFDO0FBRTNDLGVBQWVjLGNBQWMiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import BaseError from "./base-error";
|
|
2
|
+
class CustomError extends BaseError {}
|
|
3
|
+
CustomError.apiMakerType = "CustomError";
|
|
4
|
+
export default CustomError;
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlRXJyb3IiLCJDdXN0b21FcnJvciIsImFwaU1ha2VyVHlwZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9jdXN0b20tZXJyb3IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VFcnJvciBmcm9tIFwiLi9iYXNlLWVycm9yXCJcblxuY2xhc3MgQ3VzdG9tRXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3Ige31cblxuQ3VzdG9tRXJyb3IuYXBpTWFrZXJUeXBlID0gXCJDdXN0b21FcnJvclwiXG5cbmV4cG9ydCBkZWZhdWx0IEN1c3RvbUVycm9yXG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLFNBQVMsTUFBTSxjQUFjO0FBRXBDLE1BQU1DLFdBQVcsU0FBU0QsU0FBUyxDQUFDO0FBRXBDQyxXQUFXLENBQUNDLFlBQVksR0FBRyxhQUFhO0FBRXhDLGVBQWVELFdBQVciLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as inflection from "inflection";
|
|
2
|
+
export default function dataSetToAttributes(dataSet) {
|
|
3
|
+
const result = {};
|
|
4
|
+
for (const key in dataSet) {
|
|
5
|
+
const dasherizedKey = `data-${inflection.dasherize(inflection.underscore(key))}`;
|
|
6
|
+
result[dasherizedKey] = dataSet[key];
|
|
7
|
+
}
|
|
8
|
+
return result;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpbmZsZWN0aW9uIiwiZGF0YVNldFRvQXR0cmlidXRlcyIsImRhdGFTZXQiLCJyZXN1bHQiLCJrZXkiLCJkYXNoZXJpemVkS2V5IiwiZGFzaGVyaXplIiwidW5kZXJzY29yZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kYXRhLXNldC10by1hdHRyaWJ1dGVzLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGluZmxlY3Rpb24gZnJvbSBcImluZmxlY3Rpb25cIlxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkYXRhU2V0VG9BdHRyaWJ1dGVzKGRhdGFTZXQpIHtcbiAgY29uc3QgcmVzdWx0ID0ge31cblxuICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhU2V0KSB7XG4gICAgY29uc3QgZGFzaGVyaXplZEtleSA9IGBkYXRhLSR7aW5mbGVjdGlvbi5kYXNoZXJpemUoaW5mbGVjdGlvbi51bmRlcnNjb3JlKGtleSkpfWBcblxuICAgIHJlc3VsdFtkYXNoZXJpemVkS2V5XSA9IGRhdGFTZXRba2V5XVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdFxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUtBLFVBQVUsTUFBTSxZQUFZO0FBRXhDLGVBQWUsU0FBU0MsbUJBQW1CQSxDQUFDQyxPQUFPLEVBQUU7RUFDbkQsTUFBTUMsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUVqQixLQUFLLE1BQU1DLEdBQUcsSUFBSUYsT0FBTyxFQUFFO0lBQ3pCLE1BQU1HLGFBQWEsR0FBRyxRQUFRTCxVQUFVLENBQUNNLFNBQVMsQ0FBQ04sVUFBVSxDQUFDTyxVQUFVLENBQUNILEdBQUcsQ0FBQyxDQUFDLEVBQUU7SUFFaEZELE1BQU0sQ0FBQ0UsYUFBYSxDQUFDLEdBQUdILE9BQU8sQ0FBQ0UsR0FBRyxDQUFDO0VBQ3RDO0VBRUEsT0FBT0QsTUFBTTtBQUNmIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { digg } from "diggerize";
|
|
2
|
+
import * as inflection from "inflection";
|
|
3
|
+
import modelClassRequire from "./model-class-require";
|
|
4
|
+
import ModelsResponseReader from "./models-response-reader";
|
|
5
|
+
import Money from "js-money";
|
|
6
|
+
export default class ApiMakerDeserializer {
|
|
7
|
+
static parse(object) {
|
|
8
|
+
if (Array.isArray(object)) {
|
|
9
|
+
return object.map(value => ApiMakerDeserializer.parse(value));
|
|
10
|
+
} else if (object && typeof object == "object") {
|
|
11
|
+
if (object.api_maker_type == "date") {
|
|
12
|
+
const date = new Date(digg(object, "value"));
|
|
13
|
+
date.apiMakerType = "date";
|
|
14
|
+
return date;
|
|
15
|
+
} else if (object.api_maker_type == "time") {
|
|
16
|
+
const date = new Date(digg(object, "value"));
|
|
17
|
+
date.apiMakerType = "time";
|
|
18
|
+
return date;
|
|
19
|
+
} else if (object.api_maker_type == "collection") {
|
|
20
|
+
// Need to remove type to avoid circular error
|
|
21
|
+
const {
|
|
22
|
+
api_maker_type,
|
|
23
|
+
...restObject
|
|
24
|
+
} = object;
|
|
25
|
+
return ModelsResponseReader.collection(ApiMakerDeserializer.parse(restObject));
|
|
26
|
+
} else if (object.api_maker_type == "money") {
|
|
27
|
+
const cents = digg(object, "amount");
|
|
28
|
+
const currency = digg(object, "currency");
|
|
29
|
+
return Money.fromInteger(cents, currency);
|
|
30
|
+
} else if (object.api_maker_type == "model") {
|
|
31
|
+
const modelClassName = inflection.classify(digg(object, "model_name"));
|
|
32
|
+
const ModelClass = modelClassRequire(modelClassName);
|
|
33
|
+
const data = ApiMakerDeserializer.parse(digg(object, "serialized"));
|
|
34
|
+
const model = new ModelClass({
|
|
35
|
+
data,
|
|
36
|
+
isNewRecord: false
|
|
37
|
+
});
|
|
38
|
+
return model;
|
|
39
|
+
} else if (object.api_maker_type == "resource") {
|
|
40
|
+
const modelClassName = inflection.classify(digg(object, "name"));
|
|
41
|
+
const ModelClass = modelClassRequire(modelClassName);
|
|
42
|
+
return ModelClass;
|
|
43
|
+
} else {
|
|
44
|
+
const newObject = {};
|
|
45
|
+
for (const key in object) {
|
|
46
|
+
const value = object[key];
|
|
47
|
+
newObject[key] = ApiMakerDeserializer.parse(value);
|
|
48
|
+
}
|
|
49
|
+
return newObject;
|
|
50
|
+
}
|
|
51
|
+
} else {
|
|
52
|
+
return object;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkaWdnIiwiaW5mbGVjdGlvbiIsIm1vZGVsQ2xhc3NSZXF1aXJlIiwiTW9kZWxzUmVzcG9uc2VSZWFkZXIiLCJNb25leSIsIkFwaU1ha2VyRGVzZXJpYWxpemVyIiwicGFyc2UiLCJvYmplY3QiLCJBcnJheSIsImlzQXJyYXkiLCJtYXAiLCJ2YWx1ZSIsImFwaV9tYWtlcl90eXBlIiwiZGF0ZSIsIkRhdGUiLCJhcGlNYWtlclR5cGUiLCJyZXN0T2JqZWN0IiwiY29sbGVjdGlvbiIsImNlbnRzIiwiY3VycmVuY3kiLCJmcm9tSW50ZWdlciIsIm1vZGVsQ2xhc3NOYW1lIiwiY2xhc3NpZnkiLCJNb2RlbENsYXNzIiwiZGF0YSIsIm1vZGVsIiwiaXNOZXdSZWNvcmQiLCJuZXdPYmplY3QiLCJrZXkiXSwic291cmNlcyI6WyIuLi9zcmMvZGVzZXJpYWxpemVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBtb2RlbENsYXNzUmVxdWlyZSBmcm9tIFwiLi9tb2RlbC1jbGFzcy1yZXF1aXJlXCJcbmltcG9ydCBNb2RlbHNSZXNwb25zZVJlYWRlciBmcm9tIFwiLi9tb2RlbHMtcmVzcG9uc2UtcmVhZGVyXCJcbmltcG9ydCBNb25leSBmcm9tIFwianMtbW9uZXlcIlxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckRlc2VyaWFsaXplciB7XG4gIHN0YXRpYyBwYXJzZSAob2JqZWN0KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqZWN0KSkge1xuICAgICAgcmV0dXJuIG9iamVjdC5tYXAoKHZhbHVlKSA9PiBBcGlNYWtlckRlc2VyaWFsaXplci5wYXJzZSh2YWx1ZSkpXG4gICAgfSBlbHNlIGlmIChvYmplY3QgJiYgdHlwZW9mIG9iamVjdCA9PSBcIm9iamVjdFwiKSB7XG4gICAgICBpZiAob2JqZWN0LmFwaV9tYWtlcl90eXBlID09IFwiZGF0ZVwiKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkaWdnKG9iamVjdCwgXCJ2YWx1ZVwiKSlcblxuICAgICAgICBkYXRlLmFwaU1ha2VyVHlwZSA9IFwiZGF0ZVwiXG5cbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICAgIH0gZWxzZSBpZiAob2JqZWN0LmFwaV9tYWtlcl90eXBlID09IFwidGltZVwiKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShkaWdnKG9iamVjdCwgXCJ2YWx1ZVwiKSlcblxuICAgICAgICBkYXRlLmFwaU1ha2VyVHlwZSA9IFwidGltZVwiXG5cbiAgICAgICAgcmV0dXJuIGRhdGVcbiAgICAgIH0gZWxzZSBpZiAob2JqZWN0LmFwaV9tYWtlcl90eXBlID09IFwiY29sbGVjdGlvblwiKSB7XG4gICAgICAgIC8vIE5lZWQgdG8gcmVtb3ZlIHR5cGUgdG8gYXZvaWQgY2lyY3VsYXIgZXJyb3JcbiAgICAgICAgY29uc3Qge2FwaV9tYWtlcl90eXBlLCAuLi5yZXN0T2JqZWN0fSA9IG9iamVjdFxuXG4gICAgICAgIHJldHVybiBNb2RlbHNSZXNwb25zZVJlYWRlci5jb2xsZWN0aW9uKEFwaU1ha2VyRGVzZXJpYWxpemVyLnBhcnNlKHJlc3RPYmplY3QpKVxuICAgICAgfSBlbHNlIGlmIChvYmplY3QuYXBpX21ha2VyX3R5cGUgPT0gXCJtb25leVwiKSB7XG4gICAgICAgIGNvbnN0IGNlbnRzID0gZGlnZyhvYmplY3QsIFwiYW1vdW50XCIpXG4gICAgICAgIGNvbnN0IGN1cnJlbmN5ID0gZGlnZyhvYmplY3QsIFwiY3VycmVuY3lcIilcblxuICAgICAgICByZXR1cm4gTW9uZXkuZnJvbUludGVnZXIoY2VudHMsIGN1cnJlbmN5KVxuICAgICAgfSBlbHNlIGlmIChvYmplY3QuYXBpX21ha2VyX3R5cGUgPT0gXCJtb2RlbFwiKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gaW5mbGVjdGlvbi5jbGFzc2lmeShkaWdnKG9iamVjdCwgXCJtb2RlbF9uYW1lXCIpKVxuICAgICAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUobW9kZWxDbGFzc05hbWUpXG4gICAgICAgIGNvbnN0IGRhdGEgPSBBcGlNYWtlckRlc2VyaWFsaXplci5wYXJzZShkaWdnKG9iamVjdCwgXCJzZXJpYWxpemVkXCIpKVxuICAgICAgICBjb25zdCBtb2RlbCA9IG5ldyBNb2RlbENsYXNzKHtkYXRhLCBpc05ld1JlY29yZDogZmFsc2V9KVxuXG4gICAgICAgIHJldHVybiBtb2RlbFxuICAgICAgfSBlbHNlIGlmIChvYmplY3QuYXBpX21ha2VyX3R5cGUgPT0gXCJyZXNvdXJjZVwiKSB7XG4gICAgICAgIGNvbnN0IG1vZGVsQ2xhc3NOYW1lID0gaW5mbGVjdGlvbi5jbGFzc2lmeShkaWdnKG9iamVjdCwgXCJuYW1lXCIpKVxuICAgICAgICBjb25zdCBNb2RlbENsYXNzID0gbW9kZWxDbGFzc1JlcXVpcmUobW9kZWxDbGFzc05hbWUpXG5cbiAgICAgICAgcmV0dXJuIE1vZGVsQ2xhc3NcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IG5ld09iamVjdCA9IHt9XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gb2JqZWN0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBvYmplY3Rba2V5XVxuICAgICAgICAgIG5ld09iamVjdFtrZXldID0gQXBpTWFrZXJEZXNlcmlhbGl6ZXIucGFyc2UodmFsdWUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbmV3T2JqZWN0XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvYmplY3RcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxpQkFBaUIsTUFBTSx1QkFBdUI7QUFDckQsT0FBT0Msb0JBQW9CLE1BQU0s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
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import CustomError from "./custom-error";
|
|
2
|
+
class DestroyError extends CustomError {}
|
|
3
|
+
DestroyError.apiMakerType = "DestroyError";
|
|
4
|
+
export default DestroyError;
|
|
5
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDdXN0b21FcnJvciIsIkRlc3Ryb3lFcnJvciIsImFwaU1ha2VyVHlwZSJdLCJzb3VyY2VzIjpbIi4uL3NyYy9kZXN0cm95LWVycm9yLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDdXN0b21FcnJvciBmcm9tIFwiLi9jdXN0b20tZXJyb3JcIlxuXG5jbGFzcyBEZXN0cm95RXJyb3IgZXh0ZW5kcyBDdXN0b21FcnJvciB7fVxuXG5EZXN0cm95RXJyb3IuYXBpTWFrZXJUeXBlID0gXCJEZXN0cm95RXJyb3JcIlxuXG5leHBvcnQgZGVmYXVsdCBEZXN0cm95RXJyb3JcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsV0FBVyxNQUFNLGdCQUFnQjtBQUV4QyxNQUFNQyxZQUFZLFNBQVNELFdBQVcsQ0FBQztBQUV2Q0MsWUFBWSxDQUFDQyxZQUFZLEdBQUcsY0FBYztBQUUxQyxlQUFlRCxZQUFZIiwiaWdub3JlTGlzdCI6W119
|
package/build/devise.js
ADDED
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import CanCan from "./can-can";
|
|
2
|
+
import Deserializer from "./deserializer";
|
|
3
|
+
import { digg } from "diggerize";
|
|
4
|
+
import events from "./events";
|
|
5
|
+
import * as inflection from "inflection";
|
|
6
|
+
import modelClassRequire from "./model-class-require";
|
|
7
|
+
import Services from "./services";
|
|
8
|
+
const shared = {};
|
|
9
|
+
export default class ApiMakerDevise {
|
|
10
|
+
static callSignOutEvent(args) {
|
|
11
|
+
events.emit("onDeviseSignOut", {
|
|
12
|
+
args
|
|
13
|
+
});
|
|
14
|
+
}
|
|
15
|
+
static current() {
|
|
16
|
+
if (!shared.currentApiMakerDevise) {
|
|
17
|
+
shared.currentApiMakerDevise = new ApiMakerDevise();
|
|
18
|
+
}
|
|
19
|
+
return shared.currentApiMakerDevise;
|
|
20
|
+
}
|
|
21
|
+
static events() {
|
|
22
|
+
return events;
|
|
23
|
+
}
|
|
24
|
+
static addUserScope(scope) {
|
|
25
|
+
const currentMethodName = `current${inflection.camelize(scope)}`;
|
|
26
|
+
ApiMakerDevise[currentMethodName] = () => ApiMakerDevise.current().getCurrentScope(scope);
|
|
27
|
+
const isSignedInMethodName = `is${inflection.camelize(scope)}SignedIn`;
|
|
28
|
+
ApiMakerDevise[isSignedInMethodName] = () => Boolean(ApiMakerDevise.current().getCurrentScope(scope));
|
|
29
|
+
}
|
|
30
|
+
static async signIn(username, password, args = {}) {
|
|
31
|
+
if (!args.scope) args.scope = "user";
|
|
32
|
+
const postData = {
|
|
33
|
+
username,
|
|
34
|
+
password,
|
|
35
|
+
args
|
|
36
|
+
};
|
|
37
|
+
const response = await Services.current().sendRequest("Devise::SignIn", postData);
|
|
38
|
+
let model = response.model;
|
|
39
|
+
if (Array.isArray(model)) model = model[0];
|
|
40
|
+
ApiMakerDevise.updateSession(model);
|
|
41
|
+
events.emit("onDeviseSignIn", Object.assign({
|
|
42
|
+
username
|
|
43
|
+
}, args));
|
|
44
|
+
return {
|
|
45
|
+
model,
|
|
46
|
+
response
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
static updateSession(model, args = {}) {
|
|
50
|
+
if (!args.scope) args.scope = "user";
|
|
51
|
+
const camelizedScopeName = inflection.camelize(args.scope, true);
|
|
52
|
+
ApiMakerDevise.current().currents[camelizedScopeName] = model;
|
|
53
|
+
}
|
|
54
|
+
hasCurrentScope(scope) {
|
|
55
|
+
const camelizedScopeName = inflection.camelize(scope, true);
|
|
56
|
+
return camelizedScopeName in ApiMakerDevise.current().currents;
|
|
57
|
+
}
|
|
58
|
+
static setSignedOut(args) {
|
|
59
|
+
ApiMakerDevise.current().currents[inflection.camelize(args.scope, true)] = null;
|
|
60
|
+
}
|
|
61
|
+
static async signOut(args = {}) {
|
|
62
|
+
if (!args.scope) {
|
|
63
|
+
args.scope = "user";
|
|
64
|
+
}
|
|
65
|
+
const response = await Services.current().sendRequest("Devise::SignOut", {
|
|
66
|
+
args
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
// Cannot use the class because they would both import each other
|
|
70
|
+
if (shared.apiMakerSessionStatusUpdater) {
|
|
71
|
+
shared.apiMakerSessionStatusUpdater.updateSessionStatus();
|
|
72
|
+
}
|
|
73
|
+
ApiMakerDevise.setSignedOut(args);
|
|
74
|
+
ApiMakerDevise.callSignOutEvent(args);
|
|
75
|
+
return response;
|
|
76
|
+
}
|
|
77
|
+
constructor() {
|
|
78
|
+
this.currents = {};
|
|
79
|
+
}
|
|
80
|
+
getCurrentScope(scope) {
|
|
81
|
+
if (!(scope in this.currents)) {
|
|
82
|
+
this.currents[scope] = this.loadCurrentScope(scope);
|
|
83
|
+
}
|
|
84
|
+
return this.currents[scope];
|
|
85
|
+
}
|
|
86
|
+
hasGlobalCurrentScope(scope) {
|
|
87
|
+
if (globalThis.apiMakerDeviseCurrent && scope in globalThis.apiMakerDeviseCurrent) {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
loadCurrentScope(scope) {
|
|
93
|
+
if (!this.hasGlobalCurrentScope(scope)) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
const scopeData = globalThis.apiMakerDeviseCurrent[scope];
|
|
97
|
+
if (!scopeData) return null;
|
|
98
|
+
const parsedScopeData = Deserializer.parse(scopeData);
|
|
99
|
+
|
|
100
|
+
// Might be a collection with preloaded relationships
|
|
101
|
+
if (Array.isArray(parsedScopeData)) return parsedScopeData[0];
|
|
102
|
+
const ModelClass = modelClassRequire(scope);
|
|
103
|
+
const modelInstance = new ModelClass({
|
|
104
|
+
data: parsedScopeData
|
|
105
|
+
});
|
|
106
|
+
return modelInstance;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDYW5DYW4iLCJEZXNlcmlhbGl6ZXIiLCJkaWdnIiwiZXZlbnRzIiwiaW5mbGVjdGlvbiIsIm1vZGVsQ2xhc3NSZXF1aXJlIiwiU2VydmljZXMiLCJzaGFyZWQiLCJBcGlNYWtlckRldmlzZSIsImNhbGxTaWduT3V0RXZlbnQiLCJhcmdzIiwiZW1pdCIsImN1cnJlbnQiLCJjdXJyZW50QXBpTWFrZXJEZXZpc2UiLCJhZGRVc2VyU2NvcGUiLCJzY29wZSIsImN1cnJlbnRNZXRob2ROYW1lIiwiY2FtZWxpemUiLCJnZXRDdXJyZW50U2NvcGUiLCJpc1NpZ25lZEluTWV0aG9kTmFtZSIsIkJvb2xlYW4iLCJzaWduSW4iLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwicG9zdERhdGEiLCJyZXNwb25zZSIsInNlbmRSZXF1ZXN0IiwibW9kZWwiLCJBcnJheSIsImlzQXJyYXkiLCJ1cGRhdGVTZXNzaW9uIiwiT2JqZWN0IiwiYXNzaWduIiwiY2FtZWxpemVkU2NvcGVOYW1lIiwiY3VycmVudHMiLCJoYXNDdXJyZW50U2NvcGUiLCJzZXRTaWduZWRPdXQiLCJzaWduT3V0IiwiYXBpTWFrZXJTZXNzaW9uU3RhdHVzVXBkYXRlciIsInVwZGF0ZVNlc3Npb25TdGF0dXMiLCJjb25zdHJ1Y3RvciIsImxvYWRDdXJyZW50U2NvcGUiLCJoYXNHbG9iYWxDdXJyZW50U2NvcGUiLCJnbG9iYWxUaGlzIiwiYXBpTWFrZXJEZXZpc2VDdXJyZW50Iiwic2NvcGVEYXRhIiwicGFyc2VkU2NvcGVEYXRhIiwicGFyc2UiLCJNb2RlbENsYXNzIiwibW9kZWxJbnN0YW5jZSIsImRhdGEiXSwic291cmNlcyI6WyIuLi9zcmMvZGV2aXNlLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBDYW5DYW4gZnJvbSBcIi4vY2FuLWNhblwiXG5pbXBvcnQgRGVzZXJpYWxpemVyIGZyb20gXCIuL2Rlc2VyaWFsaXplclwiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IGV2ZW50cyBmcm9tIFwiLi9ldmVudHNcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgbW9kZWxDbGFzc1JlcXVpcmUgZnJvbSBcIi4vbW9kZWwtY2xhc3MtcmVxdWlyZVwiXG5pbXBvcnQgU2VydmljZXMgZnJvbSBcIi4vc2VydmljZXNcIlxuXG5jb25zdCBzaGFyZWQgPSB7fVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBcGlNYWtlckRldmlzZSB7XG4gIHN0YXRpYyBjYWxsU2lnbk91dEV2ZW50KGFyZ3MpIHtcbiAgICBldmVudHMuZW1pdChcIm9uRGV2aXNlU2lnbk91dFwiLCB7YXJnc30pXG4gIH1cblxuICBzdGF0aWMgY3VycmVudCgpIHtcbiAgICBpZiAoIXNoYXJlZC5jdXJyZW50QXBpTWFrZXJEZXZpc2UpIHtcbiAgICAgIHNoYXJlZC5jdXJyZW50QXBpTWFrZXJEZXZpc2UgPSBuZXcgQXBpTWFrZXJEZXZpc2UoKVxuICAgIH1cblxuICAgIHJldHVybiBzaGFyZWQuY3VycmVudEFwaU1ha2VyRGV2aXNlXG4gIH1cblxuICBzdGF0aWMgZXZlbnRzKCkge1xuICAgIHJldHVybiBldmVudHNcbiAgfVxuXG4gIHN0YXRpYyBhZGRVc2VyU2NvcGUoc2NvcGUpIHtcbiAgICBjb25zdCBjdXJyZW50TWV0aG9kTmFtZSA9IGBjdXJyZW50JHtpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlKX1gXG5cbiAgICBBcGlNYWtlckRldmlzZVtjdXJyZW50TWV0aG9kTmFtZV0gPSAoKSA9PiBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHNjb3BlKVxuXG4gICAgY29uc3QgaXNTaWduZWRJbk1ldGhvZE5hbWUgPSBgaXMke2luZmxlY3Rpb24uY2FtZWxpemUoc2NvcGUpfVNpZ25lZEluYFxuXG4gICAgQXBpTWFrZXJEZXZpc2VbaXNTaWduZWRJbk1ldGhvZE5hbWVdID0gKCkgPT4gQm9vbGVhbihBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuZ2V0Q3VycmVudFNjb3BlKHNjb3BlKSlcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzaWduSW4odXNlcm5hbWUsIHBhc3N3b3JkLCBhcmdzID0ge30pIHtcbiAgICBpZiAoIWFyZ3Muc2NvcGUpIGFyZ3Muc2NvcGUgPSBcInVzZXJcIlxuXG4gICAgY29uc3QgcG9zdERhdGEgPSB7dXNlcm5hbWUsIHBhc3N3b3JkLCBhcmdzfVxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgU2VydmljZXMuY3VycmVudCgpLnNlbmRSZXF1ZXN0KFwiRGV2aXNlOjpTaWduSW5cIiwgcG9zdERhdGEpXG5cbiAgICBsZXQgbW9kZWwgPSByZXNwb25zZS5tb2RlbFxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobW9kZWwpKSBtb2RlbCA9IG1vZGVsWzBdXG5cbiAgICBBcGlNYWtlckRldmlzZS51cGRhdGVTZXNzaW9uKG1vZGVsKVxuICAgIGV2ZW50cy5lbWl0KFwib25EZXZpc2VTaWduSW5cIiwgT2JqZWN0LmFzc2lnbih7dXNlcm5hbWV9LCBhcmdzKSlcblxuICAgIHJldHVybiB7bW9kZWwsIHJlc3BvbnNlfVxuICB9XG5cbiAgc3RhdGljIHVwZGF0ZVNlc3Npb24obW9kZWwsIGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkgYXJncy5zY29wZSA9IFwidXNlclwiXG5cbiAgICBjb25zdCBjYW1lbGl6ZWRTY29wZU5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKGFyZ3Muc2NvcGUsIHRydWUpXG5cbiAgICBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuY3VycmVudHNbY2FtZWxpemVkU2NvcGVOYW1lXSA9IG1vZGVsXG4gIH1cblxuICBoYXNDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBjb25zdCBjYW1lbGl6ZWRTY29wZU5hbWUgPSBpbmZsZWN0aW9uLmNhbWVsaXplKHNjb3BlLCB0cnVlKVxuXG4gICAgcmV0dXJuIGNhbWVsaXplZFNjb3BlTmFtZSBpbiBBcGlNYWtlckRldmlzZS5jdXJyZW50KCkuY3VycmVudHNcbiAgfVxuXG4gIHN0YXRpYyBzZXRTaWduZWRPdXQoYXJncykge1xuICAgIEFwaU1ha2VyRGV2aXNlLmN1cnJlbnQoKS5jdXJyZW50c1tpbmZsZWN0aW9uLmNhbWVsaXplKGFyZ3Muc2NvcGUsIHRydWUpXSA9IG51bGxcbiAgfVxuXG4gIHN0YXRpYyBhc3luYyBzaWduT3V0KGFyZ3MgPSB7fSkge1xuICAgIGlmICghYXJncy5zY29wZSkge1xuICAgICAgYXJncy5zY29wZSA9IFwidXNlclwiXG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBTZXJ2aWNlcy5jdXJyZW50KCkuc2VuZFJlcXVlc3QoXCJEZXZpc2U6OlNpZ25PdXRcIiwge2FyZ3N9KVxuXG4gICAgLy8gQ2Fubm90IHVzZSB0aGUgY2xhc3MgYmVjYXVzZSB0aGV5IHdvdWxkIGJvdGggaW1wb3J0IGVhY2ggb3RoZXJcbiAgICBpZiAoc2hhcmVkLmFwaU1ha2VyU2Vzc2lvblN0YXR1c1VwZGF0ZXIpIHtcbiAgICAgIHNoYXJlZC5hcGlNYWtlclNlc3Npb25TdGF0dXNVcGRhdGVyLnVwZGF0ZVNlc3Npb25TdGF0dXMoKVxuICAgIH1cblxuICAgIEFwaU1ha2VyRGV2aXNlLnNldFNpZ25lZE91dChhcmdzKVxuICAgIEFwaU1ha2VyRGV2aXNlLmNhbGxTaWduT3V0RXZlbnQoYXJncylcblxuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5jdXJyZW50cyA9IHt9XG4gIH1cblxuICBnZXRDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBpZiAoIShzY29wZSBpbiB0aGlzLmN1cnJlbnRzKSkge1xuICAgICAgdGhpcy5jdXJyZW50c1tzY29wZV0gPSB0aGlzLmxvYWRDdXJyZW50U2NvcGUoc2NvcGUpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY3VycmVudHNbc2NvcGVdXG4gIH1cblxuICBoYXNHbG9iYWxDdXJyZW50U2NvcGUoc2NvcGUpIHtcbiAgICBpZiAoZ2xvYmFsVGhpcy5hcGlNYWtlckRldmlzZUN1cnJlbnQgJiYgc2NvcGUgaW4gZ2xvYmFsVGhpcy5hcGlNYWtlckRldmlzZUN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBsb2FkQ3VycmVudFNjb3BlKHNjb3BlKSB7XG4gICAgaWYgKCF0aGlzLmhhc0dsb2JhbEN1cnJlbnRTY29wZShzY29wZSkpIHtcbiAgICAgIHJldHVybiBudWxsXG4gICAgfVxuXG4gICAgY29uc3Qgc2NvcGVEYXRhID0gZ2xvYmFsVGhpcy5hcGlNYWtlckRldmlzZUN1cnJlbnRbc2NvcGVdXG5cbiAgICBpZiAoIXNjb3BlRGF0YSkgcmV0dXJuIG51bGxcblxuICAgIGNvbnN0IHBhcnNlZFNjb3BlRGF0YSA9IERlc2VyaWFsaXplci5wYXJzZShzY29wZURhdGEpXG5cbiAgICAvLyBNaWdodCBiZSBhIGNvbGxlY3Rpb24gd2l0aCBwcmVsb2FkZWQgcmVsYXRpb25zaGlwc1xuICAgIGlmIChBcnJheS5pc0FycmF5KHBhcnNlZFNjb3BlRGF0YSkpIHJldHVybiBwYXJzZWRTY29wZURhdGFbMF1cblxuICAgIGNvbnN0IE1vZGVsQ2xhc3MgPSBtb2RlbENsYXNzUmVxdWlyZShzY29wZSlcbiAgICBjb25zdCBtb2RlbEluc3RhbmNlID0gbmV3IE1vZGVsQ2xhc3Moe2RhdGE6IHBhcnNlZFNjb3BlRGF0YX0pXG5cbiAgICByZXR1cm4gbW9kZWxJbnN0YW5jZVxuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLE9BQU9BLE1BQU0sTUFBTSxXQUFXO0FBQzlCLE9BQU9DLFlBQVksTUFBTSxnQkFBZ0I7QUFDekMsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsT0FBT0MsTUFBTSxNQUFNLFVBQVU7QUFDN0IsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxpQkFBaUIsTUFBTSx1QkFBdUI7QUFDckQsT0FBT0MsUUFBUSxNQUFNLFlBQVk7QUFFakMsTUFB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
|