@kaspernj/api-maker 1.0.2011 → 1.0.2012
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} +10 -1
- 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.js +135 -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 +129 -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 +131 -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 +9 -0
- package/build/collection-loader.js +48 -0
- package/build/collection.js +280 -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 +62 -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 +112 -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-emitter-listener.js +15 -0
- package/build/event-model-class.js +24 -0
- package/build/events.js +5 -0
- package/build/flash-message.js +79 -0
- package/build/form.js +83 -0
- package/build/history-expo.js +20 -0
- package/build/history-react-native.js +20 -0
- package/build/history.js +3 -0
- package/build/index.js +3 -0
- package/build/inputs/attachment.js +133 -0
- package/build/inputs/auto-submit.js +36 -0
- package/build/inputs/checkbox.js +138 -0
- package/build/inputs/checkboxes.js +112 -0
- package/build/inputs/id-for-component.js +15 -0
- package/build/inputs/input-wrapper.js +19 -0
- package/build/inputs/input.js +243 -0
- package/build/inputs/money.js +179 -0
- package/build/inputs/name-for-component.js +13 -0
- package/build/inputs/select.js +93 -0
- package/build/instance-of-class-name.js +23 -0
- package/build/key-value-store.js +53 -0
- package/build/link.js +73 -0
- package/build/logger.js +30 -0
- package/build/modal.js +38 -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 +78 -0
- package/build/not-loaded-error.js +2 -0
- package/build/params.js +61 -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 +270 -0
- package/build/router/switch.js +72 -0
- package/build/router.js +59 -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 +134 -0
- package/build/source-maps-loader.js +184 -0
- package/build/super-admin/config-reader.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +85 -0
- package/build/super-admin/edit-page/edit-attribute-content.js +55 -0
- package/build/super-admin/edit-page/edit-attribute-input.js +79 -0
- package/build/super-admin/edit-page/edit-attribute.js +77 -0
- package/build/super-admin/edit-page.js +123 -0
- package/build/super-admin/has-edit-config.js +12 -0
- package/build/super-admin/index-page.js +25 -0
- package/build/super-admin/index.js +181 -0
- package/build/super-admin/layout/header/index.js +161 -0
- package/build/super-admin/layout/index.js +164 -0
- package/build/super-admin/layout/menu/index.js +206 -0
- package/build/super-admin/layout/menu/menu-content.js +46 -0
- package/build/super-admin/layout/menu/menu-item.js +84 -0
- package/build/super-admin/layout/no-access.js +27 -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 +51 -0
- package/build/super-admin/show-page/belongs-to-attribute-row.js +29 -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 +48 -0
- package/build/super-admin/show-reflection-page.js +48 -0
- package/build/table/column-content.js +117 -0
- package/build/table/column-identifier.js +18 -0
- package/build/table/column-visible.js +7 -0
- package/build/table/components/column.js +21 -0
- package/build/table/components/flat-list.js +21 -0
- package/build/table/components/header.js +26 -0
- package/build/table/components/row.js +26 -0
- package/build/table/filters/attribute-element.js +44 -0
- package/build/table/filters/filter-form.js +402 -0
- package/build/table/filters/filter.js +90 -0
- package/build/table/filters/index.js +184 -0
- package/build/table/filters/load-search-modal.js +175 -0
- package/build/table/filters/reflection-element.js +37 -0
- package/build/table/filters/save-search-modal.js +88 -0
- package/build/table/filters/scope-element.js +42 -0
- package/build/table/header-column-content.js +68 -0
- package/build/table/header-column.js +144 -0
- package/build/table/header-select.js +105 -0
- package/build/table/model-callback-args.js +10 -0
- package/build/table/model-column.js +97 -0
- package/build/table/model-row.js +193 -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 +79 -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 +12 -0
- package/build/updated-attribute.js +76 -0
- package/build/url-encode.js +15 -0
- package/build/use-breakpoint.js +62 -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 +76 -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 +137 -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 +104 -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 +78 -0
- package/build/utils/checkboxes.js +163 -0
- package/build/utils/default-style.js +18 -0
- package/build/utils/icon.js +23 -0
- package/build/utils/invalid-feedback.js +19 -0
- package/build/utils/modal.js +62 -0
- package/build/utils/text.js +19 -0
- package/build/validation-error.js +28 -0
- package/build/validation-errors.js +98 -0
- package/build/with-api-maker.js +29 -0
- package/build/with-collection.js +14 -0
- package/build/with-current-user.js +10 -0
- package/build/with-model.js +15 -0
- package/build/with-router.js +22 -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/link.sh +8 -0
- package/package.json +49 -46
- package/src/{api.mjs → api.js} +38 -37
- package/src/base-component.jsx +5 -0
- package/src/{base-error.mjs → base-error.js} +4 -6
- package/src/base-model/attribute.js +33 -0
- package/src/base-model/column.js +13 -0
- package/src/base-model/reflection.js +15 -0
- package/src/base-model/scope.js +12 -0
- package/src/{base-model.mjs → base-model.js} +302 -144
- package/src/bootstrap/attribute-row.jsx +135 -0
- package/src/bootstrap/attribute-rows.jsx +27 -0
- package/src/bootstrap/card.jsx +149 -0
- package/src/bootstrap/checkbox.jsx +86 -0
- package/src/bootstrap/checkboxes.jsx +185 -0
- package/src/bootstrap/index.js +0 -0
- package/src/bootstrap/input.jsx +173 -0
- package/src/bootstrap/invalid-feedback.jsx +31 -0
- package/src/bootstrap/paginate.jsx +187 -0
- package/src/bootstrap/radio-buttons.jsx +87 -0
- package/src/bootstrap/select.jsx +110 -0
- package/src/bootstrap/sort-link.jsx +106 -0
- package/src/{cable-connection-pool.mjs → cable-connection-pool.js} +16 -36
- package/src/{cable-subscription-pool.mjs → cable-subscription-pool.js} +26 -21
- package/src/{cable-subscription.mjs → cable-subscription.js} +6 -4
- package/src/cache-key-generator.js +100 -0
- package/src/{can-can.mjs → can-can.js} +13 -12
- package/src/channels-consumer.js +10 -0
- package/src/collection-loader.jsx +58 -224
- package/src/{collection.mjs → collection.js} +98 -44
- package/src/{command-submit-data.mjs → command-submit-data.js} +2 -7
- package/src/{commands-pool.mjs → commands-pool.js} +57 -41
- package/src/compose.js +11 -0
- package/src/{config.mjs → config.js} +6 -2
- package/src/{custom-error.mjs → custom-error.js} +1 -1
- package/src/data-set-to-attributes.js +13 -0
- package/src/{deserializer.mjs → deserializer.js} +3 -3
- package/src/destroy-error.js +7 -0
- package/src/devise.js +129 -0
- package/src/draggable-sort/controller.js +137 -0
- package/src/draggable-sort/index.jsx +108 -0
- package/src/draggable-sort/item.jsx +174 -0
- package/src/{error-logger.mjs → error-logger.js} +12 -7
- package/src/{error-messages.mjs → error-messages.js} +1 -0
- package/src/event-connection.jsx +1 -1
- package/src/event-emitter-listener.jsx +8 -27
- package/src/event-model-class.jsx +2 -4
- package/src/events.js +7 -0
- package/src/flash-message.js +70 -0
- package/src/form.jsx +91 -0
- package/src/history-expo.js +23 -0
- package/src/history-react-native.js +25 -0
- package/src/history.js +3 -0
- package/src/index.js +3 -0
- package/src/inputs/attachment.jsx +108 -0
- package/src/inputs/auto-submit.js +37 -0
- package/src/inputs/checkbox.jsx +125 -0
- package/src/inputs/checkboxes.jsx +116 -0
- package/src/inputs/id-for-component.js +15 -0
- package/src/inputs/input-wrapper.jsx +16 -0
- package/src/inputs/input.jsx +260 -0
- package/src/inputs/money.jsx +187 -0
- package/src/inputs/name-for-component.js +15 -0
- package/src/inputs/select.jsx +104 -0
- package/src/{key-value-store.mjs → key-value-store.js} +1 -1
- package/src/link.jsx +54 -9
- package/src/logger.js +38 -0
- package/src/modal.jsx +37 -0
- package/src/model-class-require.js +17 -0
- package/src/{model-events.mjs → model-events.js} +1 -1
- package/src/{model-name.mjs → model-name.js} +8 -8
- package/src/{model-recipes-loader.mjs → model-recipes-loader.js} +1 -1
- package/src/{model-recipes-model-loader.mjs → model-recipes-model-loader.js} +5 -5
- package/src/{models-response-reader.mjs → models-response-reader.js} +3 -4
- package/src/models.js +7 -0
- package/src/{models.mjs.erb → models.js.erb} +6 -3
- package/src/{money-formatter.mjs → money-formatter.js} +5 -4
- package/src/{params.mjs → params.js} +17 -7
- package/src/{preloaded.mjs → preloaded.js} +2 -2
- package/src/resize-observer.jsx +10 -0
- package/src/result.js +13 -0
- package/src/router/route.jsx +246 -0
- package/src/router/switch.jsx +76 -0
- package/src/router.jsx +23 -21
- package/src/{routes-native.mjs → routes-native.js} +12 -6
- package/src/{routes.mjs → routes.js} +1 -1
- package/src/run-last.js +39 -0
- package/src/{serializer.mjs → serializer.js} +2 -2
- package/src/{services.mjs → services.js} +1 -1
- package/src/session-status-updater.js +172 -0
- package/src/{source-maps-loader.mjs → source-maps-loader.js} +54 -28
- package/src/super-admin/config-reader.jsx +93 -0
- package/src/super-admin/edit-page/edit-attribute-checkbox.jsx +81 -0
- package/src/super-admin/edit-page/edit-attribute-content.jsx +57 -0
- package/src/super-admin/edit-page/edit-attribute-input.jsx +71 -0
- package/src/super-admin/edit-page/edit-attribute.jsx +81 -0
- package/src/super-admin/edit-page.jsx +117 -0
- package/src/super-admin/has-edit-config.js +15 -0
- package/src/super-admin/index-page.jsx +23 -0
- package/src/super-admin/index.jsx +197 -0
- package/src/super-admin/layout/header/index.jsx +144 -0
- package/src/super-admin/layout/header/style.scss +45 -0
- package/src/super-admin/layout/index.jsx +154 -0
- package/src/super-admin/layout/menu/index.jsx +171 -0
- package/src/super-admin/layout/menu/menu-content.jsx +43 -0
- package/src/super-admin/layout/menu/menu-item.jsx +70 -0
- package/src/super-admin/layout/menu/style.scss +11 -0
- package/src/super-admin/layout/no-access.jsx +26 -0
- package/src/super-admin/model-class-table.jsx +66 -0
- package/src/super-admin/models.js +11 -0
- package/src/super-admin/show-nav.jsx +44 -0
- package/src/super-admin/show-page/belongs-to-attribute-row.jsx +30 -0
- package/src/super-admin/show-page/index.jsx +141 -0
- package/src/super-admin/show-reflection-actions.jsx +49 -0
- package/src/super-admin/show-reflection-link.jsx +40 -0
- package/src/super-admin/show-reflection-page.jsx +47 -0
- package/src/super-admin/stylesheets/variables.scss +11 -0
- package/src/table/column-content.jsx +122 -0
- package/src/table/column-identifier.js +23 -0
- package/src/table/column-visible.js +7 -0
- package/src/table/components/column.jsx +19 -0
- package/src/table/components/flat-list.jsx +19 -0
- package/src/table/components/header.jsx +21 -0
- package/src/table/components/row.jsx +23 -0
- package/src/table/filters/attribute-element.jsx +47 -0
- package/src/table/filters/filter-form.jsx +407 -0
- package/src/table/filters/filter.jsx +70 -0
- package/src/table/filters/index.jsx +170 -0
- package/src/table/filters/load-search-modal.jsx +146 -0
- package/src/table/filters/reflection-element.jsx +38 -0
- package/src/table/filters/save-search-modal.jsx +74 -0
- package/src/table/filters/scope-element.jsx +44 -0
- package/src/table/header-column-content.jsx +55 -0
- package/src/table/header-column.jsx +129 -0
- package/src/table/header-select.jsx +73 -0
- package/src/table/model-callback-args.js +10 -0
- package/src/table/model-column.jsx +82 -0
- package/src/table/model-row.jsx +136 -0
- package/src/table/select-calculator.js +65 -0
- package/src/table/settings/column-row.jsx +93 -0
- package/src/table/settings/download-action.jsx +68 -0
- package/src/table/settings/index.jsx +65 -0
- package/src/table/table-settings.js +263 -0
- package/src/table/table.jsx +950 -0
- package/src/table/use-sorting.js +35 -0
- package/src/table/variables.scss +11 -0
- package/src/table/widths.jsx +87 -0
- package/src/table/worker-plugins-check-all-checkbox.jsx +112 -0
- package/src/table/worker-plugins-checkbox.jsx +104 -0
- package/src/translated-attributes.js +11 -0
- package/src/{translated-collections.mjs → translated-collections.js} +3 -2
- package/src/updated-attribute.jsx +1 -1
- package/src/url-encode.js +18 -0
- package/src/use-breakpoint.js +76 -0
- package/src/use-can-can.js +55 -0
- package/src/use-collection.js +280 -0
- package/src/use-created-event.js +55 -0
- package/src/use-current-user.js +88 -0
- package/src/use-destroyed-event.js +60 -0
- package/src/use-event-emitter.js +15 -0
- package/src/use-event-listener.js +19 -0
- package/src/use-input.js +157 -0
- package/src/use-model-event.js +60 -0
- package/src/use-model.js +189 -0
- package/src/use-resize-observer.js +24 -0
- package/src/use-router.jsx +128 -0
- package/src/use-screen-layout.js +49 -0
- package/src/use-updated-event.js +60 -0
- package/src/use-validation-errors.js +33 -0
- package/src/utils/card.jsx +49 -0
- package/src/utils/checkbox.jsx +80 -0
- package/src/utils/checkboxes.jsx +158 -0
- package/src/utils/default-style.jsx +25 -0
- package/src/utils/icon.jsx +21 -0
- package/src/utils/invalid-feedback.jsx +20 -0
- package/src/utils/modal.jsx +60 -0
- package/src/utils/text.jsx +16 -0
- package/src/{validation-error.mjs → validation-error.js} +9 -5
- package/src/{validation-errors.mjs → validation-errors.js} +15 -27
- package/src/with-api-maker.jsx +31 -0
- package/src/with-collection.jsx +17 -0
- package/src/with-current-user.jsx +7 -25
- package/src/with-model.jsx +16 -0
- package/src/with-router.jsx +7 -129
- package/__tests__/base-model.test.js +0 -71
- package/__tests__/cable-connection-pool.test.js +0 -227
- package/__tests__/cable-subscription-pool.test.js +0 -26
- package/__tests__/can-can.test.js +0 -34
- package/__tests__/collection.test.js +0 -51
- package/__tests__/custom-error.test.js +0 -13
- package/__tests__/model-name.test.js +0 -34
- package/__tests__/model-prop-type.test.js +0 -113
- package/__tests__/params.test.js +0 -40
- package/__tests__/routes-native.test.js +0 -103
- package/__tests__/routes.test.js +0 -46
- package/__tests__/serializer.test.js +0 -30
- package/__tests__/support/task.js +0 -27
- package/__tests__/support/user.js +0 -32
- package/index.js +0 -1
- package/jest.config.js +0 -4
- package/src/can-can-loader.jsx +0 -54
- package/src/channels-consumer.mjs +0 -3
- package/src/destroy-error.mjs +0 -7
- package/src/devise.mjs +0 -122
- package/src/event-created.jsx +0 -65
- package/src/event-destroyed.jsx +0 -29
- package/src/event-listener.jsx +0 -38
- package/src/event-updated.jsx +0 -74
- package/src/logger.mjs +0 -25
- package/src/model-class-require.mjs +0 -10
- package/src/model-load-wrapper.jsx +0 -116
- package/src/result.mjs +0 -29
- package/src/session-status-updater.mjs +0 -116
- package/webpack.config.js +0 -15
- /package/src/{attribute-not-loaded-error.mjs → attribute-not-loaded-error.js} +0 -0
- /package/src/{instance-of-class-name.mjs → instance-of-class-name.js} +0 -0
- /package/src/{model-prop-type.mjs → model-prop-type.js} +0 -0
- /package/src/{not-loaded-error.mjs → not-loaded-error.js} +0 -0
- /package/src/{translated-collections-data.mjs.erb → translated-collections-data.js.erb} +0 -0
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import cloneDeep from "clone-deep";
|
|
2
|
+
import CommandsPool from "./commands-pool";
|
|
3
|
+
import { digg } from "diggerize";
|
|
4
|
+
import * as inflection from "inflection";
|
|
5
|
+
import { incorporate } from "incorporator";
|
|
6
|
+
import modelClassRequire from "./model-class-require";
|
|
7
|
+
import Result from "./result";
|
|
8
|
+
import uniqunize from "uniqunize";
|
|
9
|
+
export default class ApiMakerCollection {
|
|
10
|
+
static apiMakerType = "Collection";
|
|
11
|
+
constructor(args, queryArgs = {}) {
|
|
12
|
+
this.queryArgs = queryArgs;
|
|
13
|
+
this.args = args;
|
|
14
|
+
}
|
|
15
|
+
abilities(originalAbilities) {
|
|
16
|
+
const newAbilities = {};
|
|
17
|
+
for (const originalAbilityName in originalAbilities) {
|
|
18
|
+
const newModelName = inflection.underscore(originalAbilityName);
|
|
19
|
+
const newValues = [];
|
|
20
|
+
const originalValues = originalAbilities[originalAbilityName];
|
|
21
|
+
for (const originalAbilityName of originalValues) {
|
|
22
|
+
const newAbilityName = inflection.underscore(originalAbilityName);
|
|
23
|
+
newValues.push(newAbilityName);
|
|
24
|
+
}
|
|
25
|
+
newAbilities[newModelName] = newValues;
|
|
26
|
+
}
|
|
27
|
+
return this._merge({
|
|
28
|
+
abilities: newAbilities
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
accessibleBy(abilityName) {
|
|
32
|
+
return this._merge({
|
|
33
|
+
accessibleBy: inflection.underscore(abilityName)
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
async count() {
|
|
37
|
+
const response = await this.clone()._merge({
|
|
38
|
+
count: true
|
|
39
|
+
})._response();
|
|
40
|
+
return digg(response, "count");
|
|
41
|
+
}
|
|
42
|
+
distinct() {
|
|
43
|
+
return this._merge({
|
|
44
|
+
distinct: true
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
async each(callback) {
|
|
48
|
+
const array = await this.toArray();
|
|
49
|
+
for (const model in array) {
|
|
50
|
+
callback.call(model);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
except(...keys) {
|
|
54
|
+
for (const key of keys) {
|
|
55
|
+
if (key == "page") {
|
|
56
|
+
delete this.queryArgs[key];
|
|
57
|
+
} else {
|
|
58
|
+
throw new Error(`Unhandled key: ${key}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
async first() {
|
|
64
|
+
const models = await this.toArray();
|
|
65
|
+
return models[0];
|
|
66
|
+
}
|
|
67
|
+
groupBy(...arrayOfTablesAndColumns) {
|
|
68
|
+
const arrayOfTablesAndColumnsWithLowercaseColumns = arrayOfTablesAndColumns.map(tableAndColumn => {
|
|
69
|
+
if (Array.isArray(tableAndColumn)) {
|
|
70
|
+
return [tableAndColumn[0], tableAndColumn[1].toLowerCase()];
|
|
71
|
+
} else {
|
|
72
|
+
return tableAndColumn.toLowerCase();
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
const currentGroupBy = this.queryArgs.groupBy || [];
|
|
76
|
+
const newGroupBy = currentGroupBy.concat(arrayOfTablesAndColumnsWithLowercaseColumns);
|
|
77
|
+
return this._merge({
|
|
78
|
+
groupBy: newGroupBy
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
isLoaded() {
|
|
82
|
+
if (this.args.reflectionName in this.args.model.relationshipsCache) return true;
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
limit(amount) {
|
|
86
|
+
return this._merge({
|
|
87
|
+
limit: amount
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
preloaded() {
|
|
91
|
+
if (!(this.args.reflectionName in this.args.model.relationshipsCache)) {
|
|
92
|
+
throw new Error(`${this.args.reflectionName} hasnt been loaded yet`);
|
|
93
|
+
}
|
|
94
|
+
return this.args.model.relationshipsCache[this.args.reflectionName];
|
|
95
|
+
}
|
|
96
|
+
loaded() {
|
|
97
|
+
const {
|
|
98
|
+
model,
|
|
99
|
+
reflectionName
|
|
100
|
+
} = this.args;
|
|
101
|
+
if (reflectionName in model.relationships) {
|
|
102
|
+
return model.relationships[reflectionName];
|
|
103
|
+
} else if (reflectionName in model.relationshipsCache) {
|
|
104
|
+
return model.relationshipsCache[reflectionName];
|
|
105
|
+
} else if (model.isNewRecord()) {
|
|
106
|
+
const reflectionNameUnderscore = inflection.underscore(reflectionName);
|
|
107
|
+
|
|
108
|
+
// Initialize as empty and try again to return the empty result
|
|
109
|
+
this.set([]);
|
|
110
|
+
return digg(model.relationships, reflectionNameUnderscore);
|
|
111
|
+
} else {
|
|
112
|
+
const relationshipsLoaded = uniqunize(Object.keys(model.relationships).concat(Object.keys(model.relationshipsCache)));
|
|
113
|
+
throw new Error(`${reflectionName} hasnt been loaded yet on ${model.modelClassData().name}. Loaded was: ${relationshipsLoaded.join(", ")}`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// Replaces the relationships with the given new collection.
|
|
118
|
+
set(newCollection) {
|
|
119
|
+
this.args.model.relationships[this.args.reflectionName] = newCollection;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
// Pushes another model onto the given collection.
|
|
123
|
+
push(newModel) {
|
|
124
|
+
if (!(this.args.reflectionName in this.args.model.relationships)) {
|
|
125
|
+
this.args.model.relationships[this.args.reflectionName] = [];
|
|
126
|
+
}
|
|
127
|
+
this.args.model.relationships[this.args.reflectionName].push(newModel);
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
// Array shortcuts
|
|
131
|
+
find = (...args) => this.loaded().find(...args);
|
|
132
|
+
forEach = (...args) => this.loaded().forEach(...args);
|
|
133
|
+
map = (...args) => this.loaded().map(...args);
|
|
134
|
+
preload(preloadValue) {
|
|
135
|
+
return this._merge({
|
|
136
|
+
preload: preloadValue
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
page(page) {
|
|
140
|
+
if (!page) page = 1;
|
|
141
|
+
return this._merge({
|
|
142
|
+
page
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
pageKey(pageKey) {
|
|
146
|
+
return this._merge({
|
|
147
|
+
pageKey
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
params() {
|
|
151
|
+
let params = {};
|
|
152
|
+
if (this.queryArgs.params) params = incorporate(params, this.queryArgs.params);
|
|
153
|
+
if (this.queryArgs.abilities) params.abilities = this.queryArgs.abilities;
|
|
154
|
+
if (this.queryArgs.accessibleBy) params.accessible_by = inflection.underscore(this.queryArgs.accessibleBy);
|
|
155
|
+
if (this.queryArgs.count) params.count = this.queryArgs.count;
|
|
156
|
+
if (this.queryArgs.distinct) params.distinct = this.queryArgs.distinct;
|
|
157
|
+
if (this.queryArgs.groupBy) params.group_by = this.queryArgs.groupBy;
|
|
158
|
+
if (this.queryArgs.ransack) params.q = this.queryArgs.ransack;
|
|
159
|
+
if (this.queryArgs.limit) params.limit = this.queryArgs.limit;
|
|
160
|
+
if (this.queryArgs.preload) params.preload = this.queryArgs.preload;
|
|
161
|
+
if (this.queryArgs.page) params.page = this.queryArgs.page;
|
|
162
|
+
if (this.queryArgs.per) params.per = this.queryArgs.per;
|
|
163
|
+
if (this.queryArgs.search) params.search = this.queryArgs.search;
|
|
164
|
+
if (this.queryArgs.select) params.select = this.queryArgs.select;
|
|
165
|
+
if (this.queryArgs.selectColumns) params.select_columns = this.queryArgs.selectColumns;
|
|
166
|
+
return params;
|
|
167
|
+
}
|
|
168
|
+
per(per) {
|
|
169
|
+
return this._merge({
|
|
170
|
+
per
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
perKey(perKey) {
|
|
174
|
+
return this._merge({
|
|
175
|
+
perKey
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
ransack(params) {
|
|
179
|
+
if (params) this._merge({
|
|
180
|
+
ransack: params
|
|
181
|
+
});
|
|
182
|
+
return this;
|
|
183
|
+
}
|
|
184
|
+
async result() {
|
|
185
|
+
const response = await this._response();
|
|
186
|
+
const models = digg(response, "collection");
|
|
187
|
+
this._addQueryToModels(models);
|
|
188
|
+
const result = new Result({
|
|
189
|
+
collection: this,
|
|
190
|
+
models,
|
|
191
|
+
response
|
|
192
|
+
});
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
search(params) {
|
|
196
|
+
if (params) this._merge({
|
|
197
|
+
search: params
|
|
198
|
+
});
|
|
199
|
+
return this;
|
|
200
|
+
}
|
|
201
|
+
searchKey(searchKey) {
|
|
202
|
+
return this._merge({
|
|
203
|
+
searchKey
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
select(originalSelect) {
|
|
207
|
+
const newSelect = {};
|
|
208
|
+
for (const originalModelName in originalSelect) {
|
|
209
|
+
const newModelName = inflection.underscore(originalModelName);
|
|
210
|
+
const newValues = [];
|
|
211
|
+
const originalValues = originalSelect[originalModelName];
|
|
212
|
+
for (const originalAttributeName of originalValues) {
|
|
213
|
+
const newAttributeName = inflection.underscore(originalAttributeName);
|
|
214
|
+
newValues.push(newAttributeName);
|
|
215
|
+
}
|
|
216
|
+
newSelect[newModelName] = newValues;
|
|
217
|
+
}
|
|
218
|
+
return this._merge({
|
|
219
|
+
select: newSelect
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
selectColumns(originalSelect) {
|
|
223
|
+
const newSelect = {};
|
|
224
|
+
for (const originalModelName in originalSelect) {
|
|
225
|
+
const newModelName = inflection.underscore(inflection.underscore(originalModelName));
|
|
226
|
+
const newValues = [];
|
|
227
|
+
const originalValues = originalSelect[originalModelName];
|
|
228
|
+
for (const originalAttributeName of originalValues) {
|
|
229
|
+
const newAttributeName = inflection.underscore(originalAttributeName);
|
|
230
|
+
newValues.push(newAttributeName);
|
|
231
|
+
}
|
|
232
|
+
newSelect[newModelName] = newValues;
|
|
233
|
+
}
|
|
234
|
+
return this._merge({
|
|
235
|
+
selectColumns: newSelect
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
sort(sortBy) {
|
|
239
|
+
return this._merge({
|
|
240
|
+
ransack: {
|
|
241
|
+
s: sortBy
|
|
242
|
+
}
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
async toArray() {
|
|
246
|
+
const response = await this._response();
|
|
247
|
+
const models = digg(response, "collection");
|
|
248
|
+
this._addQueryToModels(models);
|
|
249
|
+
return models;
|
|
250
|
+
}
|
|
251
|
+
modelClass() {
|
|
252
|
+
const modelName = digg(this.args.modelClass.modelClassData(), "name");
|
|
253
|
+
return modelClassRequire(modelName);
|
|
254
|
+
}
|
|
255
|
+
clone() {
|
|
256
|
+
const clonedQueryArgs = cloneDeep(this.queryArgs);
|
|
257
|
+
return new ApiMakerCollection(this.args, clonedQueryArgs);
|
|
258
|
+
}
|
|
259
|
+
|
|
260
|
+
// This is needed when reloading a version of the model with the same selected attributes and preloads
|
|
261
|
+
_addQueryToModels(models) {
|
|
262
|
+
for (const model of models) {
|
|
263
|
+
model.collection = this;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
_merge(newQueryArgs) {
|
|
267
|
+
incorporate(this.queryArgs, newQueryArgs);
|
|
268
|
+
return this;
|
|
269
|
+
}
|
|
270
|
+
_response() {
|
|
271
|
+
const modelClassData = this.args.modelClass.modelClassData();
|
|
272
|
+
return CommandsPool.addCommand({
|
|
273
|
+
args: this.params(),
|
|
274
|
+
command: `${modelClassData.collectionName}-index`,
|
|
275
|
+
collectionName: modelClassData.collectionName,
|
|
276
|
+
type: "index"
|
|
277
|
+
}, {});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjbG9uZURlZXAiLCJDb21tYW5kc1Bvb2wiLCJkaWdnIiwiaW5mbGVjdGlvbiIsImluY29ycG9yYXRlIiwibW9kZWxDbGFzc1JlcXVpcmUiLCJSZXN1bHQiLCJ1bmlxdW5pemUiLCJBcGlNYWtlckNvbGxlY3Rpb24iLCJhcGlNYWtlclR5cGUiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJxdWVyeUFyZ3MiLCJhYmlsaXRpZXMiLCJvcmlnaW5hbEFiaWxpdGllcyIsIm5ld0FiaWxpdGllcyIsIm9yaWdpbmFsQWJpbGl0eU5hbWUiLCJuZXdNb2RlbE5hbWUiLCJ1bmRlcnNjb3JlIiwibmV3VmFsdWVzIiwib3JpZ2luYWxWYWx1ZXMiLCJuZXdBYmlsaXR5TmFtZSIsInB1c2giLCJfbWVyZ2UiLCJhY2Nlc3NpYmxlQnkiLCJhYmlsaXR5TmFtZSIsImNvdW50IiwicmVzcG9uc2UiLCJjbG9uZSIsIl9yZXNwb25zZSIsImRpc3RpbmN0IiwiZWFjaCIsImNhbGxiYWNrIiwiYXJyYXkiLCJ0b0FycmF5IiwibW9kZWwiLCJjYWxsIiwiZXhjZXB0Iiwia2V5cyIsImtleSIsIkVycm9yIiwiZmlyc3QiLCJtb2RlbHMiLCJncm91cEJ5IiwiYXJyYXlPZlRhYmxlc0FuZENvbHVtbnMiLCJhcnJheU9mVGFibGVzQW5kQ29sdW1uc1dpdGhMb3dlcmNhc2VDb2x1bW5zIiwibWFwIiwidGFibGVBbmRDb2x1bW4iLCJBcnJheSIsImlzQXJyYXkiLCJ0b0xvd2VyQ2FzZSIsImN1cnJlbnRHcm91cEJ5IiwibmV3R3JvdXBCeSIsImNvbmNhdCIsImlzTG9hZGVkIiwicmVmbGVjdGlvbk5hbWUiLCJyZWxhdGlvbnNoaXBzQ2FjaGUiLCJsaW1pdCIsImFtb3VudCIsInByZWxvYWRlZCIsImxvYWRlZCIsInJlbGF0aW9uc2hpcHMiLCJpc05ld1JlY29yZCIsInJlZmxlY3Rpb25OYW1lVW5kZXJzY29yZSIsInNldCIsInJlbGF0aW9uc2hpcHNMb2FkZWQiLCJPYmplY3QiLCJtb2RlbENsYXNzRGF0YSIsIm5hbWUiLCJqb2luIiwibmV3Q29sbGVjdGlvbiIsIm5ld01vZGVsIiwiZmluZCIsImZvckVhY2giLCJwcmVsb2FkIiwicHJlbG9hZFZhbHVlIiwicGFnZSIsInBhZ2VLZXkiLCJwYXJhbXMiLCJhY2Nlc3NpYmxlX2J5IiwiZ3JvdXBfYnkiLCJyYW5zYWNrIiwicSIsInBlciIsInNlYXJjaCIsInNlbGVjdCIsInNlbGVjdENvbHVtbnMiLCJzZWxlY3RfY29sdW1ucyIsInBlcktleSIsInJlc3VsdCIsIl9hZGRRdWVyeVRvTW9kZWxzIiwiY29sbGVjdGlvbiIsInNlYXJjaEtleSIsIm9yaWdpbmFsU2VsZWN0IiwibmV3U2VsZWN0Iiwib3JpZ2luYWxNb2RlbE5hbWUiLCJvcmlnaW5hbEF0dHJpYnV0ZU5hbWUiLCJuZXdBdHRyaWJ1dGVOYW1lIiwic29ydCIsInNvcnRCeSIsInMiLCJtb2RlbENsYXNzIiwibW9kZWxOYW1lIiwiY2xvbmVkUXVlcnlBcmdzIiwibmV3UXVlcnlBcmdzIiwiYWRkQ29tbWFuZCIsImNvbW1hbmQiLCJjb2xsZWN0aW9uTmFtZSIsInR5cGUiXSwic291cmNlcyI6WyIuLi9zcmMvY29sbGVjdGlvbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2xvbmVEZWVwIGZyb20gXCJjbG9uZS1kZWVwXCJcbmltcG9ydCBDb21tYW5kc1Bvb2wgZnJvbSBcIi4vY29tbWFuZHMtcG9vbFwiXG5pbXBvcnQge2RpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQge2luY29ycG9yYXRlfSBmcm9tIFwiaW5jb3Jwb3JhdG9yXCJcbmltcG9ydCBtb2RlbENsYXNzUmVxdWlyZSBmcm9tIFwiLi9tb2RlbC1jbGFzcy1yZXF1aXJlXCJcbmltcG9ydCBSZXN1bHQgZnJvbSBcIi4vcmVzdWx0XCJcbmltcG9ydCB1bmlxdW5pemUgZnJvbSBcInVuaXF1bml6ZVwiXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEFwaU1ha2VyQ29sbGVjdGlvbiB7XG4gIHN0YXRpYyBhcGlNYWtlclR5cGUgPSBcIkNvbGxlY3Rpb25cIlxuXG4gIGNvbnN0cnVjdG9yKGFyZ3MsIHF1ZXJ5QXJncyA9IHt9KSB7XG4gICAgdGhpcy5xdWVyeUFyZ3MgPSBxdWVyeUFyZ3NcbiAgICB0aGlzLmFyZ3MgPSBhcmdzXG4gIH1cblxuICBhYmlsaXRpZXMob3JpZ2luYWxBYmlsaXRpZXMpIHtcbiAgICBjb25zdCBuZXdBYmlsaXRpZXMgPSB7fVxuXG4gICAgZm9yIChjb25zdCBvcmlnaW5hbEFiaWxpdHlOYW1lIGluIG9yaWdpbmFsQWJpbGl0aWVzKSB7XG4gICAgICBjb25zdCBuZXdNb2RlbE5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUob3JpZ2luYWxBYmlsaXR5TmFtZSlcbiAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IFtdXG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IG9yaWdpbmFsQWJpbGl0aWVzW29yaWdpbmFsQWJpbGl0eU5hbWVdXG5cbiAgICAgIGZvciAoY29uc3Qgb3JpZ2luYWxBYmlsaXR5TmFtZSBvZiBvcmlnaW5hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXdBYmlsaXR5TmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEFiaWxpdHlOYW1lKVxuICAgICAgICBuZXdWYWx1ZXMucHVzaChuZXdBYmlsaXR5TmFtZSlcbiAgICAgIH1cblxuICAgICAgbmV3QWJpbGl0aWVzW25ld01vZGVsTmFtZV0gPSBuZXdWYWx1ZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2FiaWxpdGllczogbmV3QWJpbGl0aWVzfSlcbiAgfVxuXG4gIGFjY2Vzc2libGVCeShhYmlsaXR5TmFtZSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7YWNjZXNzaWJsZUJ5OiBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoYWJpbGl0eU5hbWUpfSlcbiAgfVxuXG4gIGFzeW5jIGNvdW50KCkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5jbG9uZSgpLl9tZXJnZSh7Y291bnQ6IHRydWV9KS5fcmVzcG9uc2UoKVxuXG4gICAgcmV0dXJuIGRpZ2cocmVzcG9uc2UsIFwiY291bnRcIilcbiAgfVxuXG4gIGRpc3RpbmN0KCkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7ZGlzdGluY3Q6IHRydWV9KVxuICB9XG5cbiAgYXN5bmMgZWFjaChjYWxsYmFjaykge1xuICAgIGNvbnN0IGFycmF5ID0gYXdhaXQgdGhpcy50b0FycmF5KClcblxuICAgIGZvciAoY29uc3QgbW9kZWwgaW4gYXJyYXkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwobW9kZWwpXG4gICAgfVxuICB9XG5cbiAgZXhjZXB0KC4uLmtleXMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBpZiAoa2V5ID09IFwicGFnZVwiKSB7XG4gICAgICAgIGRlbGV0ZSB0aGlzLnF1ZXJ5QXJnc1trZXldXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuaGFuZGxlZCBrZXk6ICR7a2V5fWApXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIGFzeW5jIGZpcnN0KCkge1xuICAgIGNvbnN0IG1vZGVscyA9IGF3YWl0IHRoaXMudG9BcnJheSgpXG4gICAgcmV0dXJuIG1vZGVsc1swXVxuICB9XG5cbiAgZ3JvdXBCeSguLi5hcnJheU9mVGFibGVzQW5kQ29sdW1ucykge1xuICAgIGNvbnN0IGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMgPSBhcnJheU9mVGFibGVzQW5kQ29sdW1ucy5tYXAoKHRhYmxlQW5kQ29sdW1uKSA9PiB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0YWJsZUFuZENvbHVtbikpIHtcbiAgICAgICAgcmV0dXJuIFt0YWJsZUFuZENvbHVtblswXSwgdGFibGVBbmRDb2x1bW5bMV0udG9Mb3dlckNhc2UoKV1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0YWJsZUFuZENvbHVtbi50b0xvd2VyQ2FzZSgpXG4gICAgICB9XG4gICAgfSlcbiAgICBjb25zdCBjdXJyZW50R3JvdXBCeSA9IHRoaXMucXVlcnlBcmdzLmdyb3VwQnkgfHwgW11cbiAgICBjb25zdCBuZXdHcm91cEJ5ID0gY3VycmVudEdyb3VwQnkuY29uY2F0KGFycmF5T2ZUYWJsZXNBbmRDb2x1bW5zV2l0aExvd2VyY2FzZUNvbHVtbnMpXG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe1xuICAgICAgZ3JvdXBCeTogbmV3R3JvdXBCeVxuICAgIH0pXG4gIH1cblxuICBpc0xvYWRlZCgpIHtcbiAgICBpZiAodGhpcy5hcmdzLnJlZmxlY3Rpb25OYW1lIGluIHRoaXMuYXJncy5tb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpXG4gICAgICByZXR1cm4gdHJ1ZVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBsaW1pdChhbW91bnQpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe2xpbWl0OiBhbW91bnR9KVxuICB9XG5cbiAgcHJlbG9hZGVkKCkge1xuICAgIGlmICghKHRoaXMuYXJncy5yZWZsZWN0aW9uTmFtZSBpbiB0aGlzLmFyZ3MubW9kZWwucmVsYXRpb25zaGlwc0NhY2hlKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3RoaXMuYXJncy5yZWZsZWN0aW9uTmFtZX0gaGFzbnQgYmVlbiBsb2FkZWQgeWV0YClcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5hcmdzLm1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVt0aGlzLmFyZ3MucmVmbGVjdGlvbk5hbWVdXG4gIH1cblxuICBsb2FkZWQoKSB7XG4gICAgY29uc3Qge21vZGVsLCByZWZsZWN0aW9uTmFtZX0gPSB0aGlzLmFyZ3NcblxuICAgIGlmIChyZWZsZWN0aW9uTmFtZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICByZXR1cm4gbW9kZWwucmVsYXRpb25zaGlwc1tyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKHJlZmxlY3Rpb25OYW1lIGluIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZSkge1xuICAgICAgcmV0dXJuIG1vZGVsLnJlbGF0aW9uc2hpcHNDYWNoZVtyZWZsZWN0aW9uTmFtZV1cbiAgICB9IGVsc2UgaWYgKG1vZGVsLmlzTmV3UmVjb3JkKCkpIHtcbiAgICAgIGNvbnN0IHJlZmxlY3Rpb25OYW1lVW5kZXJzY29yZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShyZWZsZWN0aW9uTmFtZSlcblxuICAgICAgLy8gSW5pdGlhbGl6ZSBhcyBlbXB0eSBhbmQgdHJ5IGFnYWluIHRvIHJldHVybiB0aGUgZW1wdHkgcmVzdWx0XG4gICAgICB0aGlzLnNldChbXSlcblxuICAgICAgcmV0dXJuIGRpZ2cobW9kZWwucmVsYXRpb25zaGlwcywgcmVmbGVjdGlvbk5hbWVVbmRlcnNjb3JlKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCByZWxhdGlvbnNoaXBzTG9hZGVkID0gdW5pcXVuaXplKE9iamVjdC5rZXlzKG1vZGVsLnJlbGF0aW9uc2hpcHMpLmNvbmNhdChPYmplY3Qua2V5cyhtb2RlbC5yZWxhdGlvbnNoaXBzQ2FjaGUpKSlcblxuICAgICAgdGhyb3cgbmV3IEVycm9yKGAke3JlZmxlY3Rpb25OYW1lfSBoYXNudCBiZWVuIGxvYWRlZCB5ZXQgb24gJHttb2RlbC5tb2RlbENsYXNzRGF0YSgpLm5hbWV9LiBMb2FkZWQgd2FzOiAke3JlbGF0aW9uc2hpcHNMb2FkZWQuam9pbihcIiwgXCIpfWApXG4gICAgfVxuICB9XG5cbiAgLy8gUmVwbGFjZXMgdGhlIHJlbGF0aW9uc2hpcHMgd2l0aCB0aGUgZ2l2ZW4gbmV3IGNvbGxlY3Rpb24uXG4gIHNldChuZXdDb2xsZWN0aW9uKSB7XG4gICAgdGhpcy5hcmdzLm1vZGVsLnJlbGF0aW9uc2hpcHNbdGhpcy5hcmdzLnJlZmxlY3Rpb25OYW1lXSA9IG5ld0NvbGxlY3Rpb25cbiAgfVxuXG4gIC8vIFB1c2hlcyBhbm90aGVyIG1vZGVsIG9udG8gdGhlIGdpdmVuIGNvbGxlY3Rpb24uXG4gIHB1c2gobmV3TW9kZWwpIHtcbiAgICBpZiAoISh0aGlzLmFyZ3MucmVmbGVjdGlvbk5hbWUgaW4gdGhpcy5hcmdzLm1vZGVsLnJlbGF0aW9uc2hpcHMpKSB7XG4gICAgICB0aGlzLmFyZ3MubW9kZWwucmVsYXRpb25zaGlwc1t0aGlzLmFyZ3MucmVmbGVjdGlvbk5hbWVdID0gW11cbiAgICB9XG5cbiAgICB0aGlzLmFyZ3MubW9kZWwucmVsYXRpb25zaGlwc1t0aGlzLmFyZ3MucmVmbGVjdGlvbk5hbWVdLnB1c2gobmV3TW9kZWwpXG4gIH1cblxuICAvLyBBcnJheSBzaG9ydGN1dHNcbiAgZmluZCA9ICguLi5hcmdzKSA9PiB0aGlzLmxvYWRlZCgpLmZpbmQoLi4uYXJncylcbiAgZm9yRWFjaCA9ICguLi5hcmdzKSA9PiB0aGlzLmxvYWRlZCgpLmZvckVhY2goLi4uYXJncylcbiAgbWFwID0gKC4uLmFyZ3MpID0+IHRoaXMubG9hZGVkKCkubWFwKC4uLmFyZ3MpXG5cbiAgcHJlbG9hZChwcmVsb2FkVmFsdWUpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3ByZWxvYWQ6IHByZWxvYWRWYWx1ZX0pXG4gIH1cblxuICBwYWdlKHBhZ2UpIHtcbiAgICBpZiAoIXBhZ2UpXG4gICAgICBwYWdlID0gMVxuXG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwYWdlfSlcbiAgfVxuXG4gIHBhZ2VLZXkocGFnZUtleSkge1xuICAgIHJldHVybiB0aGlzLl9tZXJnZSh7cGFnZUtleX0pXG4gIH1cblxuICBwYXJhbXMoKSB7XG4gICAgbGV0IHBhcmFtcyA9IHt9XG5cbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucGFyYW1zKSBwYXJhbXMgPSBpbmNvcnBvcmF0ZShwYXJhbXMsIHRoaXMucXVlcnlBcmdzLnBhcmFtcylcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuYWJpbGl0aWVzKSBwYXJhbXMuYWJpbGl0aWVzID0gdGhpcy5xdWVyeUFyZ3MuYWJpbGl0aWVzXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmFjY2Vzc2libGVCeSkgcGFyYW1zLmFjY2Vzc2libGVfYnkgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGhpcy5xdWVyeUFyZ3MuYWNjZXNzaWJsZUJ5KVxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5jb3VudCkgcGFyYW1zLmNvdW50ID0gdGhpcy5xdWVyeUFyZ3MuY291bnRcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MuZGlzdGluY3QpIHBhcmFtcy5kaXN0aW5jdCA9IHRoaXMucXVlcnlBcmdzLmRpc3RpbmN0XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmdyb3VwQnkpIHBhcmFtcy5ncm91cF9ieSA9IHRoaXMucXVlcnlBcmdzLmdyb3VwQnlcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucmFuc2FjaykgcGFyYW1zLnEgPSB0aGlzLnF1ZXJ5QXJncy5yYW5zYWNrXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLmxpbWl0KSBwYXJhbXMubGltaXQgPSB0aGlzLnF1ZXJ5QXJncy5saW1pdFxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5wcmVsb2FkKSBwYXJhbXMucHJlbG9hZCA9IHRoaXMucXVlcnlBcmdzLnByZWxvYWRcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3MucGFnZSkgcGFyYW1zLnBhZ2UgPSB0aGlzLnF1ZXJ5QXJncy5wYWdlXG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnBlcikgcGFyYW1zLnBlciA9IHRoaXMucXVlcnlBcmdzLnBlclxuICAgIGlmICh0aGlzLnF1ZXJ5QXJncy5zZWFyY2gpIHBhcmFtcy5zZWFyY2ggPSB0aGlzLnF1ZXJ5QXJncy5zZWFyY2hcbiAgICBpZiAodGhpcy5xdWVyeUFyZ3Muc2VsZWN0KSBwYXJhbXMuc2VsZWN0ID0gdGhpcy5xdWVyeUFyZ3Muc2VsZWN0XG4gICAgaWYgKHRoaXMucXVlcnlBcmdzLnNlbGVjdENvbHVtbnMpIHBhcmFtcy5zZWxlY3RfY29sdW1ucyA9IHRoaXMucXVlcnlBcmdzLnNlbGVjdENvbHVtbnNcblxuICAgIHJldHVybiBwYXJhbXNcbiAgfVxuXG4gIHBlcihwZXIpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3Blcn0pXG4gIH1cblxuICBwZXJLZXkocGVyS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtwZXJLZXl9KVxuICB9XG5cbiAgcmFuc2FjayhwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zKSB0aGlzLl9tZXJnZSh7cmFuc2FjazogcGFyYW1zfSlcbiAgICByZXR1cm4gdGhpc1xuICB9XG5cbiAgYXN5bmMgcmVzdWx0KCkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5fcmVzcG9uc2UoKVxuICAgIGNvbnN0IG1vZGVscyA9IGRpZ2cocmVzcG9uc2UsIFwiY29sbGVjdGlvblwiKVxuXG4gICAgdGhpcy5fYWRkUXVlcnlUb01vZGVscyhtb2RlbHMpXG5cbiAgICBjb25zdCByZXN1bHQgPSBuZXcgUmVzdWx0KHtjb2xsZWN0aW9uOiB0aGlzLCBtb2RlbHMsIHJlc3BvbnNlfSlcblxuICAgIHJldHVybiByZXN1bHRcbiAgfVxuXG4gIHNlYXJjaChwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zKSB0aGlzLl9tZXJnZSh7c2VhcmNoOiBwYXJhbXN9KVxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzZWFyY2hLZXkoc2VhcmNoS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtzZWFyY2hLZXl9KVxuICB9XG5cbiAgc2VsZWN0KG9yaWdpbmFsU2VsZWN0KSB7XG4gICAgY29uc3QgbmV3U2VsZWN0ID0ge31cblxuICAgIGZvciAoY29uc3Qgb3JpZ2luYWxNb2RlbE5hbWUgaW4gb3JpZ2luYWxTZWxlY3QpIHtcbiAgICAgIGNvbnN0IG5ld01vZGVsTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbE1vZGVsTmFtZSlcbiAgICAgIGNvbnN0IG5ld1ZhbHVlcyA9IFtdXG4gICAgICBjb25zdCBvcmlnaW5hbFZhbHVlcyA9IG9yaWdpbmFsU2VsZWN0W29yaWdpbmFsTW9kZWxOYW1lXVxuXG4gICAgICBmb3IgKGNvbnN0IG9yaWdpbmFsQXR0cmlidXRlTmFtZSBvZiBvcmlnaW5hbFZhbHVlcykge1xuICAgICAgICBjb25zdCBuZXdBdHRyaWJ1dGVOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKG9yaWdpbmFsQXR0cmlidXRlTmFtZSlcbiAgICAgICAgbmV3VmFsdWVzLnB1c2gobmV3QXR0cmlidXRlTmFtZSlcbiAgICAgIH1cblxuICAgICAgbmV3U2VsZWN0W25ld01vZGVsTmFtZV0gPSBuZXdWYWx1ZXNcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3NlbGVjdDogbmV3U2VsZWN0fSlcbiAgfVxuXG4gIHNlbGVjdENvbHVtbnMob3JpZ2luYWxTZWxlY3QpIHtcbiAgICBjb25zdCBuZXdTZWxlY3QgPSB7fVxuXG4gICAgZm9yIChjb25zdCBvcmlnaW5hbE1vZGVsTmFtZSBpbiBvcmlnaW5hbFNlbGVjdCkge1xuICAgICAgY29uc3QgbmV3TW9kZWxOYW1lID0gaW5mbGVjdGlvbi51bmRlcnNjb3JlKGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbE1vZGVsTmFtZSkpXG4gICAgICBjb25zdCBuZXdWYWx1ZXMgPSBbXVxuICAgICAgY29uc3Qgb3JpZ2luYWxWYWx1ZXMgPSBvcmlnaW5hbFNlbGVjdFtvcmlnaW5hbE1vZGVsTmFtZV1cblxuICAgICAgZm9yIChjb25zdCBvcmlnaW5hbEF0dHJpYnV0ZU5hbWUgb2Ygb3JpZ2luYWxWYWx1ZXMpIHtcbiAgICAgICAgY29uc3QgbmV3QXR0cmlidXRlTmFtZSA9IGluZmxlY3Rpb24udW5kZXJzY29yZShvcmlnaW5hbEF0dHJpYnV0ZU5hbWUpXG4gICAgICAgIG5ld1ZhbHVlcy5wdXNoKG5ld0F0dHJpYnV0ZU5hbWUpXG4gICAgICB9XG5cbiAgICAgIG5ld1NlbGVjdFtuZXdNb2RlbE5hbWVdID0gbmV3VmFsdWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX21lcmdlKHtzZWxlY3RDb2x1bW5zOiBuZXdTZWxlY3R9KVxuICB9XG5cbiAgc29ydChzb3J0QnkpIHtcbiAgICByZXR1cm4gdGhpcy5fbWVyZ2Uoe3JhbnNhY2s6IHtzOiBzb3J0Qnl9fSlcbiAgfVxuXG4gIGFzeW5jIHRvQXJyYXkoKSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLl9yZXNwb25zZSgpXG4gICAgY29uc3QgbW9kZWxzID0gZGlnZyhyZXNwb25zZSwgXCJjb2xsZWN0aW9uXCIpXG5cbiAgICB0aGlzLl9hZGRRdWVyeVRvTW9kZWxzKG1vZGVscylcblxuICAgIHJldHVybiBtb2RlbHNcbiAgfVxuXG4gIG1vZGVsQ2xhc3MoKSB7XG4gICAgY29uc3QgbW9kZWxOYW1lID0gZGlnZyh0aGlzLmFyZ3MubW9kZWxDbGFzcy5tb2RlbENsYXNzRGF0YSgpLCBcIm5hbWVcIilcblxuICAgIHJldHVybiBtb2RlbENsYXNzUmVxdWlyZShtb2RlbE5hbWUpXG4gIH1cblxuICBjbG9uZSgpIHtcbiAgICBjb25zdCBjbG9uZWRRdWVyeUFyZ3MgPSBjbG9uZURlZXAodGhpcy5xdWVyeUFyZ3MpXG5cbiAgICByZXR1cm4gbmV3IEFwaU1ha2VyQ29sbGVjdGlvbih0aGlzLmFyZ3MsIGNsb25lZFF1ZXJ5QXJncylcbiAgfVxuXG4gIC8vIFRoaXMgaXMgbmVlZGVkIHdoZW4gcmVsb2FkaW5nIGEgdmVyc2lvbiBvZiB0aGUgbW9kZWwgd2l0aCB0aGUgc2FtZSBzZWxlY3RlZCBhdHRyaWJ1dGVzIGFuZCBwcmVsb2Fkc1xuICBfYWRkUXVlcnlUb01vZGVscyhtb2RlbHMpIHtcbiAgICBmb3IoY29uc3QgbW9kZWwgb2YgbW9kZWxzKSB7XG4gICAgICBtb2RlbC5jb2xsZWN0aW9uID0gdGhpc1xuICAgIH1cbiAgfVxuXG4gIF9tZXJnZShuZXdRdWVyeUFyZ3MpIHtcbiAgICBpbmNvcnBvcmF0ZSh0aGlzLnF1ZXJ5QXJncywgbmV3UXVlcnlBcmdzKVxuXG4gICAgcmV0dXJuIHRoaXNcbiAgfVxuXG4gIF9yZXNwb25zZSgpIHtcbiAgICBjb25zdCBtb2RlbENsYXNzRGF0YSA9IHRoaXMuYXJncy5tb2RlbENsYXNzLm1vZGVsQ2xhc3NEYXRhKClcblxuICAgIHJldHVybiBDb21tYW5kc1Bvb2wuYWRkQ29tbWFuZChcbiAgICAgIHtcbiAgICAgICAgYXJnczogdGhpcy5wYXJhbXMoKSxcbiAgICAgICAgY29tbWFuZDogYCR7bW9kZWxDbGFzc0RhdGEuY29sbGVjdGlvbk5hbWV9LWluZGV4YCxcbiAgICAgICAgY29sbGVjdGlvbk5hbWU6IG1vZGVsQ2xhc3NEYXRhLmNvbGxlY3Rpb25OYW1lLFxuICAgICAgICB0eXBlOiBcImluZGV4XCJcbiAgICAgIH0sXG4gICAgICB7fVxuICAgIClcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxTQUFTLE1BQU0sWUFBWTtBQUNsQyxPQUFPQyxZQUFZLE1BQU0saUJBQWlCO0FBQzFDLFNBQVFDLElBQUksUUFBTyxXQUFXO0FBQzlCLE9BQU8sS0FBS0MsVUFBVSxNQUFNLFlBQVk7QUFDeEMsU0FBUUMsV0FBVyxRQUFPLGNBQWM7QUFDeEMsT0FBT0MsaUJBQWlCLE1BQU0sdUJBQXVCO0FBQ3JELE9BQU9DLE1BQU0sTUFBTSxVQUFVO0FBQzdCLE9BQU9DLFNBQVMsTUFBTSxXQUFXO0FBRWpDLGVBQWUsTUFBTUMsa0JBQWtCLENBQUM7RUFDdEMsT0FBT0MsWUFBWSxHQUFHLFlBQVk7RUFFbENDLFdBQVdBLENBQUNDLElBQUksRUFBRUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ2hDLElBQUksQ0FBQ0EsU0FBUyxHQUFHQSxTQUFTO0lBQzFCLElBQUksQ0FBQ0QsSUFBSSxHQUFHQSxJQUFJO0VBQ2xCO0VBRUFFLFNBQVNBLENBQUNDLGlCQUFpQixFQUFFO0lBQzNCLE1BQU1DLFlBQVksR0FBRyxDQUFDLENBQUM7SUFFdkIsS0FBSyxNQUFNQyxtQkFBbUIsSUFBSUYsaUJBQWlCLEVBQUU7TUFDbkQsTUFBTUcsWUFBWSxHQUFHZCxVQUFVLENBQUNlLFVBQVUsQ0FBQ0Ys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
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import objectToFormData from "object-to-formdata";
|
|
2
|
+
export default class ApiMakerCommandSubmitData {
|
|
3
|
+
constructor(data) {
|
|
4
|
+
this.data = data;
|
|
5
|
+
this.filesCount = 0;
|
|
6
|
+
this.jsonData = this.traverseObject(this.data, "json");
|
|
7
|
+
}
|
|
8
|
+
getFilesCount = () => this.filesCount;
|
|
9
|
+
getJsonData = () => this.jsonData;
|
|
10
|
+
getRawData() {
|
|
11
|
+
if (!this.rawData) {
|
|
12
|
+
this.rawData = this.traverseObject(this.data, "raw");
|
|
13
|
+
}
|
|
14
|
+
return this.rawData;
|
|
15
|
+
}
|
|
16
|
+
getFormData() {
|
|
17
|
+
const objectForFormData = this.getRawData() || {};
|
|
18
|
+
objectForFormData.json = JSON.stringify(this.getJsonData());
|
|
19
|
+
const formData = objectToFormData.serialize(objectForFormData);
|
|
20
|
+
return formData;
|
|
21
|
+
}
|
|
22
|
+
convertDynamic(value, type) {
|
|
23
|
+
if (Array.isArray(value)) {
|
|
24
|
+
return this.traverseArray(value, type);
|
|
25
|
+
} else if (typeof value == "object" && value !== null && value.constructor.name == "Object") {
|
|
26
|
+
return this.traverseObject(value, type);
|
|
27
|
+
} else {
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
shouldSkip(object, type) {
|
|
32
|
+
if (type == "json" && object instanceof File) {
|
|
33
|
+
this.filesCount += 1;
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (type == "raw" && !Array.isArray(object) && !this.isObject(object) && !(object instanceof File)) {
|
|
37
|
+
return true;
|
|
38
|
+
}
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
isObject(value) {
|
|
42
|
+
if (typeof value == "object" && value !== null && value.constructor.name == "Object") {
|
|
43
|
+
return true;
|
|
44
|
+
}
|
|
45
|
+
return false;
|
|
46
|
+
}
|
|
47
|
+
traverseArray(array, type) {
|
|
48
|
+
const newArray = [];
|
|
49
|
+
for (const value of array) {
|
|
50
|
+
if (this.shouldSkip(value, type)) {
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (Array.isArray(value)) {
|
|
54
|
+
newArray.push(this.convertDynamic(value, type));
|
|
55
|
+
} else if (this.isObject(value)) {
|
|
56
|
+
newArray.push(this.convertDynamic(value, type));
|
|
57
|
+
} else {
|
|
58
|
+
newArray.push(value);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return newArray;
|
|
62
|
+
}
|
|
63
|
+
traverseObject(object, type) {
|
|
64
|
+
const newObject = {};
|
|
65
|
+
for (const key in object) {
|
|
66
|
+
const value = object[key];
|
|
67
|
+
if (this.shouldSkip(value, type)) {
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
if (Array.isArray(value)) {
|
|
71
|
+
newObject[key] = this.convertDynamic(value, type);
|
|
72
|
+
} else if (this.isObject(value)) {
|
|
73
|
+
newObject[key] = this.convertDynamic(value, type);
|
|
74
|
+
} else {
|
|
75
|
+
newObject[key] = value;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return newObject;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJvYmplY3RUb0Zvcm1EYXRhIiwiQXBpTWFrZXJDb21tYW5kU3VibWl0RGF0YSIsImNvbnN0cnVjdG9yIiwiZGF0YSIsImZpbGVzQ291bnQiLCJqc29uRGF0YSIsInRyYXZlcnNlT2JqZWN0IiwiZ2V0RmlsZXNDb3VudCIsImdldEpzb25EYXRhIiwiZ2V0UmF3RGF0YSIsInJhd0RhdGEiLCJnZXRGb3JtRGF0YSIsIm9iamVjdEZvckZvcm1EYXRhIiwianNvbiIsIkpTT04iLCJzdHJpbmdpZnkiLCJmb3JtRGF0YSIsInNlcmlhbGl6ZSIsImNvbnZlcnREeW5hbWljIiwidmFsdWUiLCJ0eXBlIiwiQXJyYXkiLCJpc0FycmF5IiwidHJhdmVyc2VBcnJheSIsIm5hbWUiLCJzaG91bGRTa2lwIiwib2JqZWN0IiwiRmlsZSIsImlzT2JqZWN0IiwiYXJyYXkiLCJuZXdBcnJheSIsInB1c2giLCJuZXdPYmplY3QiLCJrZXkiXSwic291cmNlcyI6WyIuLi9zcmMvY29tbWFuZC1zdWJtaXQtZGF0YS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgb2JqZWN0VG9Gb3JtRGF0YSBmcm9tIFwib2JqZWN0LXRvLWZvcm1kYXRhXCJcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXBpTWFrZXJDb21tYW5kU3VibWl0RGF0YSB7XG4gIGNvbnN0cnVjdG9yIChkYXRhKSB7XG4gICAgdGhpcy5kYXRhID0gZGF0YVxuICAgIHRoaXMuZmlsZXNDb3VudCA9IDBcbiAgICB0aGlzLmpzb25EYXRhID0gdGhpcy50cmF2ZXJzZU9iamVjdCh0aGlzLmRhdGEsIFwianNvblwiKVxuICB9XG5cbiAgZ2V0RmlsZXNDb3VudCA9ICgpID0+IHRoaXMuZmlsZXNDb3VudFxuICBnZXRKc29uRGF0YSA9ICgpID0+IHRoaXMuanNvbkRhdGFcblxuICBnZXRSYXdEYXRhICgpIHtcbiAgICBpZiAoIXRoaXMucmF3RGF0YSkge1xuICAgICAgdGhpcy5yYXdEYXRhID0gdGhpcy50cmF2ZXJzZU9iamVjdCh0aGlzLmRhdGEsIFwicmF3XCIpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMucmF3RGF0YVxuICB9XG5cbiAgZ2V0Rm9ybURhdGEgKCkge1xuICAgIGNvbnN0IG9iamVjdEZvckZvcm1EYXRhID0gdGhpcy5nZXRSYXdEYXRhKCkgfHwge31cblxuICAgIG9iamVjdEZvckZvcm1EYXRhLmpzb24gPSBKU09OLnN0cmluZ2lmeSh0aGlzLmdldEpzb25EYXRhKCkpXG5cbiAgICBjb25zdCBmb3JtRGF0YSA9IG9iamVjdFRvRm9ybURhdGEuc2VyaWFsaXplKG9iamVjdEZvckZvcm1EYXRhKVxuXG4gICAgcmV0dXJuIGZvcm1EYXRhXG4gIH1cblxuICBjb252ZXJ0RHluYW1pYyAodmFsdWUsIHR5cGUpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYXZlcnNlQXJyYXkodmFsdWUsIHR5cGUpXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJvYmplY3RcIiAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB2YWx1ZS5jb25zdHJ1Y3Rvci5uYW1lID09IFwiT2JqZWN0XCIpIHtcbiAgICAgIHJldHVybiB0aGlzLnRyYXZlcnNlT2JqZWN0KHZhbHVlLCB0eXBlKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdmFsdWVcbiAgICB9XG4gIH1cblxuICBzaG91bGRTa2lwIChvYmplY3QsIHR5cGUpIHtcbiAgICBpZiAodHlwZSA9PSBcImpzb25cIiAmJiBvYmplY3QgaW5zdGFuY2VvZiBGaWxlKSB7XG4gICAgICB0aGlzLmZpbGVzQ291bnQgKz0gMVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PSBcInJhd1wiICYmICFBcnJheS5pc0FycmF5KG9iamVjdCkgJiYgIXRoaXMuaXNPYmplY3Qob2JqZWN0KSAmJiAhKG9iamVjdCBpbnN0YW5jZW9mIEZpbGUpKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgaXNPYmplY3QgKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcIm9iamVjdFwiICYmIHZhbHVlICE9PSBudWxsICYmIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgPT0gXCJPYmplY3RcIikge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIHRyYXZlcnNlQXJyYXkgKGFycmF5LCB0eXBlKSB7XG4gICAgY29uc3QgbmV3QXJyYXkgPSBbXVxuXG4gICAgZm9yIChjb25zdCB2YWx1ZSBvZiBhcnJheSkge1xuICAgICAgaWYgKHRoaXMuc2hvdWxkU2tpcCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIG5ld0FycmF5LnB1c2godGhpcy5jb252ZXJ0RHluYW1pYyh2YWx1ZSwgdHlwZSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNPYmplY3QodmFsdWUpKSB7XG4gICAgICAgIG5ld0FycmF5LnB1c2godGhpcy5jb252ZXJ0RHluYW1pYyh2YWx1ZSwgdHlwZSkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXdBcnJheS5wdXNoKHZhbHVlKVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdBcnJheVxuICB9XG5cbiAgdHJhdmVyc2VPYmplY3QgKG9iamVjdCwgdHlwZSkge1xuICAgIGNvbnN0IG5ld09iamVjdCA9IHt9XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBvYmplY3QpIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gb2JqZWN0W2tleV1cblxuICAgICAgaWYgKHRoaXMuc2hvdWxkU2tpcCh2YWx1ZSwgdHlwZSkpIHtcbiAgICAgICAgY29udGludWVcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgIG5ld09iamVjdFtrZXldID0gdGhpcy5jb252ZXJ0RHluYW1pYyh2YWx1ZSwgdHlwZSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc09iamVjdCh2YWx1ZSkpIHtcbiAgICAgICAgbmV3T2JqZWN0W2tleV0gPSB0aGlzLmNvbnZlcnREeW5hbWljKHZhbHVlLCB0eXBlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3T2JqZWN0W2tleV0gPSB2YWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXdPYmplY3RcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxnQkFBZ0IsTUFBTSxvQkFBb0I7QUFFakQsZUFBZSxNQUFNQyx5QkFBeUIsQ0FBQztFQUM3Q0MsV0FBV0EsQ0FBRUMsSUFBSSxFQUFFO0lBQ2pCLElBQUksQ0FBQ0EsSUFBSSxHQUFHQSxJQUFJO0lBQ2hCLElBQUksQ0FBQ0MsVUFBVSxHQUFHLENBQUM7SUFDbkIsSUFBSSxDQUFDQyxRQUFRLEdBQUcsSUFBSSxDQUFDQyxjQUFjLENBQUMsSUFBSSxDQUFDSCxJQUFJLEVBQUUsTUFBTSxDQUFDO0VBQ3hEO0VBRUFJLGFBQWEsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ0gsVUFBVTtFQUNyQ0ksV0FBVyxHQUFHQSxDQUFBLEtBQU0sSUFBSSxDQUFDSCxRQUFRO0VBRWpDSSxVQUFVQSxDQUFBLEVBQUk7SUFDWixJQUFJLENBQUMsSUFBSSxDQUFDQyxPQUFPLEVBQUU7TUFDakIsSUFBSSxDQUFDQSxPQUFPLEdBQUcsSUFBSSxDQUFDSixjQUFjLENBQUMsSUFBSSxDQUFDSCxJQUFJLEVBQUUsS0FBSyxDQUFDO0lBQ3REO0lBRUEsT0FBTyxJQUFJLENBQUNPLE9BQU87RUFDckI7RUFFQUMsV0FBV0EsQ0FBQSxFQUFJO0lBQ2IsTUFBTUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDSCxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVqREcsaUJBQWlCLENBQUNDLElBQUksR0FBR0MsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDUCxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBRTNELE1BQU1RLFFBQVEsR0FBR2hCLGdCQUFnQixDQUFDaUIsU0FBUyxDQUFDTCxpQkFBaUIsQ0FBQztJQUU5RCxPQUFPSSxRQUFRO0VBQ2pCO0VBRUFFLGNBQWNBLENBQUVDLEtBQUssRUFBRUMsSUFBSSxFQUFFO0lBQzNCLElBQUlDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSCxLQUFLLENBQUMsRUFBRTtNQUN4QixPQUFPLElBQUksQ0FBQ0ksYUFBYSxDQUFDSixLQUFLLEVBQUVDLElBQUksQ0FBQztJQUN4QyxDQUFDLE1BQU0sSUFBSSxPQUFPRCxLQUFLLElBQUksUUFBUSxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLENBQUNqQixXQUFXLENBQUNzQixJQUFJLElBQUksUUFBUSxFQUFFO01BQzNGLE9BQU8sSUFBSSxDQUFDbEIsY0FBYyxDQUFDYSxLQUFLLEVBQUVDLElBQUksQ0FBQztJQUN6QyxDQUFDLE1BQU07TUFDTCxPQUFPRCxLQUFLO0lBQ2Q7RUFDRjtFQUVBTSxVQUFVQSxDQUFFQyxNQUFNLEVBQUVOLElBQUksRUFBRTtJQUN4QixJQUFJQSxJQUFJLElBQUksTUFBTSxJQUFJTSxNQUFNLFlBQVlDLElBQUksRUFBRTtNQUM1QyxJQUFJLENBQUN2QixVQUFVLElBQUksQ0FBQztNQUNwQixPQUFPLElBQUk7SUFDYjtJQUVBLElBQUlnQixJQUFJLElBQUksS0FBSyxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsT0FBTyxDQUFDSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQ0UsUUFBUSxDQUFDRixNQUFNLENBQUMsSUFBSSxFQUFFQSxNQUFNLFlBQVlDLElBQUksQ0FBQyxFQUFFO01BQ2xHLE9BQU8sSUFBSTtJQUNiO0lBRUEsT0FBTyxLQUFLO0VBQ2Q7RUFFQUMsUUFBUUEsQ0FBRVQsS0FBSyxFQUFFO0lBQ2YsSUFBSSxPQUFPQSxLQUFLLElBQUksUUFBUSxJQUFJQSxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLENBQUNqQixXQUFXLENBQUNzQixJQUFJLElBQUksUUFBUSxFQUFFO01BQ3BGLE9BQU8sSUFBSTtJQUNiO0lBRUEsT0FBTyxLQUFLO0VBQ2Q7RUFFQUQsYUFBYUEsQ0FBRU0sS0FBSyxFQUFFVCxJQUFJLEVBQUU7SUFDMUIsTUFBTVUsUUFBUSxHQUFHLEVBQUU7SUFFbkIsS0FBSyxNQUFNWCxLQUFLLElBQUlVLEtBQUssRUFBRTtNQUN6QixJQUFJLElBQUksQ0FBQ0osVUFBVSxDQUFDTixLQUFLLEVBQUVDLElBQUksQ0FBQyxFQUFFO1FBQ2hDO01BQ0Y7TUFFQSxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsS0FBSyxDQUFDLEVBQUU7UUFDeEJXLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQ2IsY0FBYyxDQUFDQyxLQUFLLEVBQUVDLElBQUksQ0FBQyxDQUFDO01BQ2pELENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQ1EsUUFBUSxDQUFDVCxLQUFLLENBQUMsRUFBRTtRQUMvQlcsUUFBUSxDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDYixjQUFjLENBQUNDLEtBQUssRUFBRUMsSUFBSSxDQUFDLENBQUM7TUFDakQsQ0FBQyxNQUFNO1FBQ0xVLFFBQVEsQ0FBQ0MsSUFBSSxDQUFDWixLQUFLLENBQUM7TUFDdEI7SUFDRjtJQUVBLE9BQU9XLFFBQVE7RUFDakI7RUFFQXhCLGNBQWNBLENBQUVvQixNQUFNLEVBQUVOLElBQUksRUFBRTtJQUM1QixNQUFNWSxTQUFTLEdBQUcsQ0FBQyxDQUFDO0lBRXBCLEtBQUssTUFBTUMsR0FBRyxJQUFJUCxNQUFNLEVBQUU7TUFDeEIsTUFBTVAsS0FBSyxHQUFHTyxNQUFNLENBQUNPLEdBQUcsQ0FBQztNQUV6QixJQUFJLElBQUksQ0FBQ1IsVUFBVSxDQUFDTixLQUFLLEVBQUVDLElBQUksQ0FBQyxFQUFFO1FBQ2hDO01BQ0Y7TUFFQSxJQUFJQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0gsS0FBSyxDQUFDLEVBQUU7UUFDeEJhLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDZixjQUFjLENBQUNDLEtBQUssRUFBRUMsSUFBSSxDQUFDO01BQ25ELENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQ1EsUUFBUSxDQUFDVCxLQUFLLENBQUMsRUFBRTtRQUMvQmEsU0FBUyxDQUFDQyxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUNmLGNBQWMsQ0FBQ0MsS0FBSyxFQUFFQyxJQUFJLENBQUM7TUFDbkQsQ0FBQyxNQUFNO1FBQ0xZLFNBQVMsQ0FBQ0MsR0FBRyxDQUFDLEdBQUdkLEtBQUs7TUFDeEI7SUFDRjtJQUVBLE9BQU9hLFNBQVM7RUFDbEI7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -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
|