@kaspernj/api-maker 1.0.2160 → 1.0.2161
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/api.d.ts +46 -34
- package/build/api.d.ts.map +1 -1
- package/build/api.js +32 -25
- package/build/attribute-not-loaded-error.d.ts.map +1 -1
- package/build/attribute-not-loaded-error.js +2 -1
- package/build/base-error.d.ts +49 -60
- package/build/base-error.d.ts.map +1 -1
- package/build/base-error.js +3 -2
- package/build/base-model/column.d.ts +2 -2
- package/build/base-model/column.d.ts.map +1 -1
- package/build/base-model/column.js +3 -2
- package/build/base-model/reflection.d.ts +8 -3
- package/build/base-model/reflection.d.ts.map +1 -1
- package/build/base-model/reflection.js +8 -3
- package/build/base-model/scope.d.ts +1 -1
- package/build/base-model/scope.d.ts.map +1 -1
- package/build/base-model/scope.js +3 -2
- package/build/base-model.d.ts +3801 -117
- package/build/base-model.d.ts.map +1 -1
- package/build/base-model.js +271 -143
- package/build/bootstrap/attribute-row.d.ts +12 -0
- package/build/bootstrap/attribute-row.d.ts.map +1 -1
- package/build/bootstrap/attribute-row.js +23 -5
- package/build/bootstrap/attribute-rows.d.ts +8 -0
- package/build/bootstrap/attribute-rows.d.ts.map +1 -1
- package/build/bootstrap/attribute-rows.js +14 -5
- package/build/bootstrap/card.d.ts +17 -0
- package/build/bootstrap/card.d.ts.map +1 -1
- package/build/bootstrap/card.js +30 -10
- package/build/bootstrap/checkbox.d.ts +16 -0
- package/build/bootstrap/checkbox.d.ts.map +1 -1
- package/build/bootstrap/checkbox.js +20 -2
- package/build/bootstrap/checkboxes.d.ts +31 -0
- package/build/bootstrap/checkboxes.d.ts.map +1 -1
- package/build/bootstrap/checkboxes.js +35 -3
- package/build/bootstrap/index.js +2 -1
- package/build/bootstrap/input.d.ts +24 -0
- package/build/bootstrap/input.d.ts.map +1 -1
- package/build/bootstrap/input.js +27 -2
- package/build/bootstrap/invalid-feedback.d.ts.map +1 -1
- package/build/bootstrap/invalid-feedback.js +2 -1
- package/build/bootstrap/paginate.d.ts +5 -0
- package/build/bootstrap/paginate.d.ts.map +1 -1
- package/build/bootstrap/paginate.js +9 -4
- package/build/bootstrap/radio-buttons.js +2 -1
- package/build/bootstrap/select.js +2 -1
- package/build/bootstrap/sort-link.d.ts +10 -0
- package/build/bootstrap/sort-link.d.ts.map +1 -1
- package/build/bootstrap/sort-link.js +15 -4
- package/build/cable-connection-pool.d.ts +201 -24
- package/build/cable-connection-pool.d.ts.map +1 -1
- package/build/cable-connection-pool.js +76 -16
- package/build/cable-subscription-pool.d.ts +186 -20
- package/build/cable-subscription-pool.d.ts.map +1 -1
- package/build/cable-subscription-pool.js +61 -22
- package/build/cable-subscription.d.ts.map +1 -1
- package/build/cable-subscription.js +3 -2
- package/build/cache-key-generator.d.ts +194 -20
- package/build/cache-key-generator.d.ts.map +1 -1
- package/build/cache-key-generator.js +63 -12
- package/build/can-can.d.ts +146 -29
- package/build/can-can.d.ts.map +1 -1
- package/build/can-can.js +105 -19
- package/build/channels-consumer.d.ts +23 -1
- package/build/channels-consumer.d.ts.map +1 -1
- package/build/channels-consumer.js +26 -8
- package/build/collection-loader.js +2 -1
- package/build/collection.d.ts +361 -370
- package/build/collection.d.ts.map +1 -1
- package/build/collection.js +59 -19
- package/build/command-execution.d.ts +50 -26
- package/build/command-execution.d.ts.map +1 -1
- package/build/command-execution.js +31 -13
- package/build/command-submit-data.d.ts +50 -37
- package/build/command-submit-data.d.ts.map +1 -1
- package/build/command-submit-data.js +35 -22
- package/build/commands-pool.d.ts +65 -27
- package/build/commands-pool.d.ts.map +1 -1
- package/build/commands-pool.js +67 -20
- package/build/compose.d.ts +8 -2
- package/build/compose.d.ts.map +1 -1
- package/build/compose.js +9 -2
- package/build/config.d.ts +31 -15
- package/build/config.d.ts.map +1 -1
- package/build/config.js +60 -23
- package/build/custom-error.d.ts.map +1 -1
- package/build/custom-error.js +2 -1
- package/build/data-set-to-attributes.d.ts +14 -2
- package/build/data-set-to-attributes.d.ts.map +1 -1
- package/build/data-set-to-attributes.js +12 -3
- package/build/deserializer.d.ts +116 -2
- package/build/deserializer.d.ts.map +1 -1
- package/build/deserializer.js +13 -2
- package/build/destroy-error.d.ts.map +1 -1
- package/build/destroy-error.js +2 -1
- package/build/devise.d.ts +638 -39
- package/build/devise.d.ts.map +1 -1
- package/build/devise.js +97 -28
- package/build/draggable-sort/controller.d.ts +126 -35
- package/build/draggable-sort/controller.d.ts.map +1 -1
- package/build/draggable-sort/controller.js +100 -28
- package/build/draggable-sort/index.d.ts +55 -0
- package/build/draggable-sort/index.d.ts.map +1 -1
- package/build/draggable-sort/index.js +71 -3
- package/build/draggable-sort/item.d.ts +54 -0
- package/build/draggable-sort/item.d.ts.map +1 -1
- package/build/draggable-sort/item.js +94 -6
- package/build/error-logger.d.ts +30 -14
- package/build/error-logger.d.ts.map +1 -1
- package/build/error-logger.js +22 -11
- package/build/event-connection.d.ts.map +1 -1
- package/build/event-connection.js +3 -2
- package/build/event-emitter-listener.d.ts.map +1 -1
- package/build/event-emitter-listener.js +2 -1
- package/build/event-model-class.d.ts.map +1 -1
- package/build/event-model-class.js +2 -1
- package/build/events.d.ts.map +1 -1
- package/build/events.js +2 -1
- package/build/form.d.ts +23 -0
- package/build/form.d.ts.map +1 -1
- package/build/form.js +16 -4
- package/build/history-expo.d.ts +6 -2
- package/build/history-expo.d.ts.map +1 -1
- package/build/history-expo.js +5 -2
- package/build/history-react-native.d.ts +6 -2
- package/build/history-react-native.d.ts.map +1 -1
- package/build/history-react-native.js +5 -2
- package/build/history.js +2 -1
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -1
- package/build/inputs/attachment.d.ts +11 -0
- package/build/inputs/attachment.d.ts.map +1 -1
- package/build/inputs/attachment.js +17 -4
- package/build/inputs/auto-submit.d.ts +41 -13
- package/build/inputs/auto-submit.d.ts.map +1 -1
- package/build/inputs/auto-submit.js +16 -4
- package/build/inputs/checkbox.d.ts +15 -0
- package/build/inputs/checkbox.d.ts.map +1 -1
- package/build/inputs/checkbox.js +22 -6
- package/build/inputs/checkboxes.d.ts +16 -0
- package/build/inputs/checkboxes.d.ts.map +1 -1
- package/build/inputs/checkboxes.js +20 -4
- package/build/inputs/id-for-component.d.ts +21 -2
- package/build/inputs/id-for-component.d.ts.map +1 -1
- package/build/inputs/id-for-component.js +9 -2
- package/build/inputs/input-wrapper.d.ts.map +1 -1
- package/build/inputs/input-wrapper.js +2 -1
- package/build/inputs/input.d.ts +36 -0
- package/build/inputs/input.d.ts.map +1 -1
- package/build/inputs/input.js +26 -7
- package/build/inputs/money.d.ts +2 -0
- package/build/inputs/money.d.ts.map +1 -1
- package/build/inputs/money.js +6 -3
- package/build/inputs/name-for-component.d.ts +21 -2
- package/build/inputs/name-for-component.d.ts.map +1 -1
- package/build/inputs/name-for-component.js +9 -2
- package/build/inputs/select.d.ts +33 -0
- package/build/inputs/select.d.ts.map +1 -1
- package/build/inputs/select.js +21 -4
- package/build/instance-of-class-name.d.ts +7 -2
- package/build/instance-of-class-name.d.ts.map +1 -1
- package/build/instance-of-class-name.js +8 -4
- package/build/is-expo.d.ts.map +1 -1
- package/build/is-expo.js +2 -1
- package/build/key-value-store.d.ts +24 -14
- package/build/key-value-store.d.ts.map +1 -1
- package/build/key-value-store.js +22 -12
- package/build/link.d.ts +30 -0
- package/build/link.d.ts.map +1 -1
- package/build/link.js +76 -30
- package/build/logger.d.ts +10 -6
- package/build/logger.d.ts.map +1 -1
- package/build/logger.js +7 -4
- package/build/merge-styles.d.ts +10 -2
- package/build/merge-styles.d.ts.map +1 -1
- package/build/merge-styles.js +10 -3
- package/build/modal.d.ts +2 -0
- package/build/modal.d.ts.map +1 -1
- package/build/modal.js +6 -4
- package/build/model-class-require.d.ts +4 -2
- package/build/model-class-require.d.ts.map +1 -1
- package/build/model-class-require.js +4 -2
- package/build/model-events.d.ts +139 -346
- package/build/model-events.d.ts.map +1 -1
- package/build/model-events.js +21 -9
- package/build/model-name.d.ts +21 -7
- package/build/model-name.d.ts.map +1 -1
- package/build/model-name.js +12 -2
- package/build/model-prop-type.d.ts +533 -26
- package/build/model-prop-type.d.ts.map +1 -1
- package/build/model-prop-type.js +69 -11
- package/build/model-recipes-loader.d.ts +7 -3
- package/build/model-recipes-loader.d.ts.map +1 -1
- package/build/model-recipes-loader.js +4 -2
- package/build/model-recipes-model-loader.d.ts +189 -1493
- package/build/model-recipes-model-loader.d.ts.map +1 -1
- package/build/model-recipes-model-loader.js +119 -17
- package/build/models-response-reader.d.ts +600 -195
- package/build/models-response-reader.d.ts.map +1 -1
- package/build/models-response-reader.js +12 -4
- package/build/models.d.ts +438 -1
- package/build/models.d.ts.map +1 -1
- package/build/models.js +2 -1
- package/build/money-formatter.d.ts +25 -31
- package/build/money-formatter.d.ts.map +1 -1
- package/build/money-formatter.js +11 -8
- package/build/not-loaded-error.d.ts.map +1 -1
- package/build/not-loaded-error.js +2 -1
- package/build/params.d.ts +25 -17
- package/build/params.d.ts.map +1 -1
- package/build/params.js +19 -15
- package/build/preloaded.d.ts +61 -64
- package/build/preloaded.d.ts.map +1 -1
- package/build/preloaded.js +10 -4
- package/build/reset-realtime-runtime-state.d.ts.map +1 -1
- package/build/reset-realtime-runtime-state.js +2 -1
- package/build/resize-observer.d.ts.map +1 -1
- package/build/resize-observer.js +2 -1
- package/build/rest-props-validator.d.ts +2 -2
- package/build/rest-props-validator.d.ts.map +1 -1
- package/build/rest-props-validator.js +3 -2
- package/build/result.d.ts +142 -175
- package/build/result.d.ts.map +1 -1
- package/build/result.js +3 -2
- package/build/router/route.d.ts +50 -0
- package/build/router/route.d.ts.map +1 -1
- package/build/router/route.js +39 -10
- package/build/router/switch.d.ts +37 -1
- package/build/router/switch.d.ts.map +1 -1
- package/build/router/switch.js +29 -7
- package/build/router.d.ts +20 -0
- package/build/router.d.ts.map +1 -1
- package/build/router.js +15 -4
- package/build/routes-native.d.ts +13 -13
- package/build/routes-native.d.ts.map +1 -1
- package/build/routes-native.js +23 -11
- package/build/routes.d.ts +17 -9
- package/build/routes.d.ts.map +1 -1
- package/build/routes.js +7 -2
- package/build/run-last.d.ts.map +1 -1
- package/build/run-last.js +2 -1
- package/build/serializer.d.ts +44 -12
- package/build/serializer.d.ts.map +1 -1
- package/build/serializer.js +36 -7
- package/build/services.d.ts +29 -4
- package/build/services.d.ts.map +1 -1
- package/build/services.js +16 -4
- package/build/session-status-updater.d.ts +73 -25
- package/build/session-status-updater.d.ts.map +1 -1
- package/build/session-status-updater.js +52 -14
- package/build/source-maps-loader.d.ts +88 -33
- package/build/source-maps-loader.d.ts.map +1 -1
- package/build/source-maps-loader.js +74 -18
- package/build/super-admin/config-reader.d.ts.map +1 -1
- package/build/super-admin/config-reader.js +11 -16
- package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts +10 -0
- package/build/super-admin/edit-page/edit-attribute-checkbox.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute-checkbox.js +16 -4
- package/build/super-admin/edit-page/edit-attribute-content.d.ts +9 -0
- package/build/super-admin/edit-page/edit-attribute-content.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute-content.js +15 -4
- package/build/super-admin/edit-page/edit-attribute-input.d.ts +8 -0
- package/build/super-admin/edit-page/edit-attribute-input.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute-input.js +13 -4
- package/build/super-admin/edit-page/edit-attribute.d.ts +6 -0
- package/build/super-admin/edit-page/edit-attribute.d.ts.map +1 -1
- package/build/super-admin/edit-page/edit-attribute.js +11 -4
- package/build/super-admin/edit-page.d.ts +5 -0
- package/build/super-admin/edit-page.d.ts.map +1 -1
- package/build/super-admin/edit-page.js +11 -5
- package/build/super-admin/has-edit-config.d.ts.map +1 -1
- package/build/super-admin/has-edit-config.js +2 -1
- package/build/super-admin/index-page.d.ts +4 -0
- package/build/super-admin/index-page.d.ts.map +1 -1
- package/build/super-admin/index-page.js +9 -4
- package/build/super-admin/index.d.ts +4 -0
- package/build/super-admin/index.d.ts.map +1 -1
- package/build/super-admin/index.js +12 -6
- package/build/super-admin/layout/header/index.d.ts +4 -0
- package/build/super-admin/layout/header/index.d.ts.map +1 -1
- package/build/super-admin/layout/header/index.js +13 -8
- package/build/super-admin/layout/index.d.ts +24 -0
- package/build/super-admin/layout/index.d.ts.map +1 -1
- package/build/super-admin/layout/index.js +33 -5
- package/build/super-admin/layout/menu/index.d.ts +2 -0
- package/build/super-admin/layout/menu/index.d.ts.map +1 -1
- package/build/super-admin/layout/menu/index.js +8 -6
- package/build/super-admin/layout/menu/menu-content.d.ts +2 -0
- package/build/super-admin/layout/menu/menu-content.d.ts.map +1 -1
- package/build/super-admin/layout/menu/menu-content.js +6 -4
- package/build/super-admin/layout/menu/menu-item.d.ts +9 -0
- package/build/super-admin/layout/menu/menu-item.d.ts.map +1 -1
- package/build/super-admin/layout/menu/menu-item.js +15 -4
- package/build/super-admin/layout/no-access.d.ts +2 -0
- package/build/super-admin/layout/no-access.d.ts.map +1 -1
- package/build/super-admin/layout/no-access.js +7 -5
- package/build/super-admin/model-class-table.d.ts +4 -0
- package/build/super-admin/model-class-table.d.ts.map +1 -1
- package/build/super-admin/model-class-table.js +9 -4
- package/build/super-admin/models.d.ts.map +1 -1
- package/build/super-admin/models.js +2 -1
- package/build/super-admin/show-nav.d.ts +2 -0
- package/build/super-admin/show-nav.d.ts.map +1 -1
- package/build/super-admin/show-nav.js +6 -4
- package/build/super-admin/show-page/belongs-to-attribute-row.d.ts +17 -1
- package/build/super-admin/show-page/belongs-to-attribute-row.d.ts.map +1 -1
- package/build/super-admin/show-page/belongs-to-attribute-row.js +14 -5
- package/build/super-admin/show-page/index.d.ts +4 -0
- package/build/super-admin/show-page/index.d.ts.map +1 -1
- package/build/super-admin/show-page/index.js +9 -4
- package/build/super-admin/show-reflection-actions.d.ts +6 -0
- package/build/super-admin/show-reflection-actions.d.ts.map +1 -1
- package/build/super-admin/show-reflection-actions.js +11 -4
- package/build/super-admin/show-reflection-link.d.ts +4 -0
- package/build/super-admin/show-reflection-link.d.ts.map +1 -1
- package/build/super-admin/show-reflection-link.js +9 -4
- package/build/super-admin/show-reflection-page.d.ts +5 -0
- package/build/super-admin/show-reflection-page.d.ts.map +1 -1
- package/build/super-admin/show-reflection-page.js +10 -4
- package/build/table/column-content.d.ts +155 -19
- package/build/table/column-content.d.ts.map +1 -1
- package/build/table/column-content.js +55 -12
- package/build/table/column-identifier.d.ts +11 -2
- package/build/table/column-identifier.d.ts.map +1 -1
- package/build/table/column-identifier.js +7 -2
- package/build/table/column-visible.d.ts +11 -2
- package/build/table/column-visible.d.ts.map +1 -1
- package/build/table/column-visible.js +8 -2
- package/build/table/components/column.d.ts +2 -0
- package/build/table/components/column.d.ts.map +1 -1
- package/build/table/components/column.js +6 -4
- package/build/table/components/flat-list.d.ts +2 -0
- package/build/table/components/flat-list.d.ts.map +1 -1
- package/build/table/components/flat-list.js +6 -4
- package/build/table/components/header.d.ts +2 -0
- package/build/table/components/header.d.ts.map +1 -1
- package/build/table/components/header.js +6 -4
- package/build/table/components/row.d.ts +2 -0
- package/build/table/components/row.d.ts.map +1 -1
- package/build/table/components/row.js +6 -4
- package/build/table/filters/attribute-element.d.ts +2 -0
- package/build/table/filters/attribute-element.d.ts.map +1 -1
- package/build/table/filters/attribute-element.js +7 -7
- package/build/table/filters/filter-form.d.ts +58 -0
- package/build/table/filters/filter-form.d.ts.map +1 -1
- package/build/table/filters/filter-form.js +72 -9
- package/build/table/filters/filter.d.ts +2 -0
- package/build/table/filters/filter.d.ts.map +1 -1
- package/build/table/filters/filter.js +6 -4
- package/build/table/filters/index.d.ts +127 -0
- package/build/table/filters/index.d.ts.map +1 -1
- package/build/table/filters/index.js +21 -4
- package/build/table/filters/load-search-modal.d.ts +130 -0
- package/build/table/filters/load-search-modal.d.ts.map +1 -1
- package/build/table/filters/load-search-modal.js +28 -6
- package/build/table/filters/reflection-element.d.ts +2 -0
- package/build/table/filters/reflection-element.d.ts.map +1 -1
- package/build/table/filters/reflection-element.js +6 -4
- package/build/table/filters/save-search-modal.d.ts +134 -0
- package/build/table/filters/save-search-modal.d.ts.map +1 -1
- package/build/table/filters/save-search-modal.js +36 -5
- package/build/table/filters/scope-element.d.ts +6 -0
- package/build/table/filters/scope-element.d.ts.map +1 -1
- package/build/table/filters/scope-element.js +13 -8
- package/build/table/header-column-content.d.ts +7 -0
- package/build/table/header-column-content.d.ts.map +1 -1
- package/build/table/header-column-content.js +12 -4
- package/build/table/header-column.d.ts +50 -0
- package/build/table/header-column.d.ts.map +1 -1
- package/build/table/header-column.js +32 -5
- package/build/table/header-select.d.ts +18 -0
- package/build/table/header-select.d.ts.map +1 -1
- package/build/table/header-select.js +19 -4
- package/build/table/model-callback-args.d.ts +116 -3
- package/build/table/model-callback-args.d.ts.map +1 -1
- package/build/table/model-callback-args.js +10 -3
- package/build/table/model-column.d.ts +136 -0
- package/build/table/model-column.d.ts.map +1 -1
- package/build/table/model-column.js +27 -4
- package/build/table/model-row.d.ts +19 -0
- package/build/table/model-row.d.ts.map +1 -1
- package/build/table/model-row.js +24 -4
- package/build/table/select-calculator.d.ts +37 -2
- package/build/table/select-calculator.d.ts.map +1 -1
- package/build/table/select-calculator.js +29 -6
- package/build/table/settings/column-row.d.ts +6 -0
- package/build/table/settings/column-row.d.ts.map +1 -1
- package/build/table/settings/column-row.js +13 -12
- package/build/table/settings/download-action.d.ts +5 -0
- package/build/table/settings/download-action.d.ts.map +1 -1
- package/build/table/settings/download-action.js +10 -4
- package/build/table/settings/index.d.ts +5 -0
- package/build/table/settings/index.d.ts.map +1 -1
- package/build/table/settings/index.js +10 -4
- package/build/table/should-render-loading-content.d.ts +2 -2
- package/build/table/should-render-loading-content.d.ts.map +1 -1
- package/build/table/should-render-loading-content.js +3 -2
- package/build/table/table-settings.d.ts +236 -43
- package/build/table/table-settings.d.ts.map +1 -1
- package/build/table/table-settings.js +104 -20
- package/build/table/table.d.ts +271 -0
- package/build/table/table.d.ts.map +1 -1
- package/build/table/table.js +167 -16
- package/build/table/use-sorting.d.ts +10 -8
- package/build/table/use-sorting.d.ts.map +1 -1
- package/build/table/use-sorting.js +16 -8
- package/build/table/widths.d.ts +55 -8
- package/build/table/widths.d.ts.map +1 -1
- package/build/table/widths.js +25 -2
- package/build/table/worker-plugins-check-all-checkbox.d.ts +18 -0
- package/build/table/worker-plugins-check-all-checkbox.d.ts.map +1 -1
- package/build/table/worker-plugins-check-all-checkbox.js +25 -5
- package/build/table/worker-plugins-checkbox.d.ts +5 -0
- package/build/table/worker-plugins-checkbox.d.ts.map +1 -1
- package/build/table/worker-plugins-checkbox.js +10 -4
- package/build/translated-attributes.d.ts +7 -2
- package/build/translated-attributes.d.ts.map +1 -1
- package/build/translated-attributes.js +8 -2
- package/build/translated-collections.d.ts +11 -2
- package/build/translated-collections.d.ts.map +1 -1
- package/build/translated-collections.js +9 -3
- package/build/updated-attribute.d.ts.map +1 -1
- package/build/updated-attribute.js +2 -1
- package/build/url-encode.d.ts.map +1 -1
- package/build/url-encode.js +2 -1
- package/build/use-can-can.d.ts +2 -2
- package/build/use-can-can.d.ts.map +1 -1
- package/build/use-can-can.js +27 -12
- package/build/use-collection.d.ts +167 -121
- package/build/use-collection.d.ts.map +1 -1
- package/build/use-collection.js +113 -44
- package/build/use-created-event.d.ts +120 -11
- package/build/use-created-event.d.ts.map +1 -1
- package/build/use-created-event.js +10 -7
- package/build/use-current-user-context.d.ts +2 -2
- package/build/use-current-user-context.d.ts.map +1 -1
- package/build/use-current-user-context.js +3 -2
- package/build/use-current-user.d.ts +86 -70
- package/build/use-current-user.d.ts.map +1 -1
- package/build/use-current-user.js +36 -8
- package/build/use-destroyed-event.d.ts +117 -8
- package/build/use-destroyed-event.d.ts.map +1 -1
- package/build/use-destroyed-event.js +29 -22
- package/build/use-input.d.ts +74 -12
- package/build/use-input.d.ts.map +1 -1
- package/build/use-input.js +33 -5
- package/build/use-model-class-event.d.ts +124 -10
- package/build/use-model-class-event.d.ts.map +1 -1
- package/build/use-model-class-event.js +26 -16
- package/build/use-model-event.d.ts +121 -8
- package/build/use-model-event.d.ts.map +1 -1
- package/build/use-model-event.js +24 -19
- package/build/use-model.d.ts +162 -244
- package/build/use-model.d.ts.map +1 -1
- package/build/use-model.js +85 -32
- package/build/use-resize-observer.d.ts.map +1 -1
- package/build/use-resize-observer.js +2 -1
- package/build/use-router.d.ts.map +1 -1
- package/build/use-router.js +2 -1
- package/build/use-screen-layout.d.ts +7 -2
- package/build/use-screen-layout.d.ts.map +1 -1
- package/build/use-screen-layout.js +8 -5
- package/build/use-shape.js +2 -1
- package/build/use-styles.d.ts +11 -5
- package/build/use-styles.d.ts.map +1 -1
- package/build/use-styles.js +16 -9
- package/build/use-updated-event.d.ts +66 -182
- package/build/use-updated-event.d.ts.map +1 -1
- package/build/use-updated-event.js +22 -18
- package/build/use-validation-errors.d.ts.map +1 -1
- package/build/use-validation-errors.js +2 -1
- package/build/utils/button.d.ts +14 -0
- package/build/utils/button.d.ts.map +1 -1
- package/build/utils/button.js +24 -7
- package/build/utils/card.d.ts +9 -0
- package/build/utils/card.d.ts.map +1 -1
- package/build/utils/card.js +13 -2
- package/build/utils/checkbox.d.ts +12 -0
- package/build/utils/checkbox.d.ts.map +1 -1
- package/build/utils/checkbox.js +18 -4
- package/build/utils/checkboxes.d.ts +25 -0
- package/build/utils/checkboxes.d.ts.map +1 -1
- package/build/utils/checkboxes.js +29 -3
- package/build/utils/default-style.d.ts +10 -4
- package/build/utils/default-style.d.ts.map +1 -1
- package/build/utils/default-style.js +12 -4
- package/build/utils/header.d.ts +6 -1
- package/build/utils/header.d.ts.map +1 -1
- package/build/utils/header.js +4 -2
- package/build/utils/icon.d.ts +7 -6
- package/build/utils/icon.d.ts.map +1 -1
- package/build/utils/icon.js +12 -11
- package/build/utils/invalid-feedback.d.ts +4 -0
- package/build/utils/invalid-feedback.d.ts.map +1 -1
- package/build/utils/invalid-feedback.js +8 -2
- package/build/utils/modal.d.ts +2 -0
- package/build/utils/modal.d.ts.map +1 -1
- package/build/utils/modal.js +9 -7
- package/build/utils/text.d.ts +8 -1
- package/build/utils/text.d.ts.map +1 -1
- package/build/utils/text.js +9 -2
- package/build/validation-error.d.ts +5 -2
- package/build/validation-error.d.ts.map +1 -1
- package/build/validation-error.js +5 -2
- package/build/validation-errors.d.ts +57 -15
- package/build/validation-errors.d.ts.map +1 -1
- package/build/validation-errors.js +37 -8
- package/build/websocket-request-client.d.ts +61 -15
- package/build/websocket-request-client.d.ts.map +1 -1
- package/build/websocket-request-client.js +35 -9
- package/build/with-api-maker.d.ts.map +1 -1
- package/build/with-api-maker.js +2 -1
- package/build/with-collection.d.ts.map +1 -1
- package/build/with-collection.js +2 -1
- package/build/with-current-user.d.ts.map +1 -1
- package/build/with-current-user.js +2 -1
- package/build/with-model.d.ts.map +1 -1
- package/build/with-model.js +2 -1
- package/build/with-router.d.ts.map +1 -1
- package/build/with-router.js +2 -1
- package/package.json +4 -3
- package/build/base-component.d.ts +0 -5
- package/build/base-component.d.ts.map +0 -1
- package/build/base-component.js +0 -4
|
@@ -1,26 +1,200 @@
|
|
|
1
|
+
/** @typedef {import("./base-model.js").default} BaseModel */
|
|
2
|
+
/** @typedef {{append(value: string): void, end(): string}} HashWriter */
|
|
3
|
+
/** @typedef {string | number} ModelIdentifier */
|
|
4
|
+
/** @typedef {string | number | boolean | null | undefined | {toString(): string}} CacheKeyAttributeValue */
|
|
5
|
+
/** @typedef {{name: string}} CacheKeyModelClassData */
|
|
6
|
+
/**
|
|
7
|
+
* @typedef {object} CacheKeyModel
|
|
8
|
+
* @property {() => Record<string, CacheKeyAttributeValue>} attributes
|
|
9
|
+
* @property {() => boolean} markedForDestruction
|
|
10
|
+
* @property {() => CacheKeyModelClassData} modelClassData
|
|
11
|
+
* @property {() => {primaryKey(): string}} modelClass
|
|
12
|
+
* @property {() => ModelIdentifier | null | undefined | ""} primaryKey
|
|
13
|
+
* @property {(attributeName: string) => CacheKeyAttributeValue} readAttributeUnderscore
|
|
14
|
+
* @property {(attributeName: string) => boolean} isAttributeLoaded
|
|
15
|
+
* @property {Record<string, CacheKeyModel | Array<CacheKeyModel> | null | undefined>} relationships
|
|
16
|
+
* @property {() => ModelIdentifier} uniqueKey
|
|
17
|
+
*/
|
|
1
18
|
/** Generates local/full cache keys for models. */
|
|
2
19
|
export default class CacheKeyGenerator {
|
|
3
|
-
/**
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
20
|
+
/**
|
|
21
|
+
* Creates a cache-key generator rooted at one model instance.
|
|
22
|
+
* @param {CacheKeyModel} model
|
|
23
|
+
*/
|
|
24
|
+
constructor(model: CacheKeyModel);
|
|
25
|
+
model: CacheKeyModel;
|
|
26
|
+
allModels: CacheKeyModel[];
|
|
7
27
|
readModels: {};
|
|
8
28
|
filledModels: boolean;
|
|
9
|
-
/**
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Builds a cache key from the root model only.
|
|
31
|
+
* @returns {string}
|
|
32
|
+
*/
|
|
33
|
+
local(): string;
|
|
34
|
+
/**
|
|
35
|
+
* Ensures one relationship type has a tracking bucket.
|
|
36
|
+
* @param {string} relationshipType
|
|
37
|
+
*/
|
|
38
|
+
recordModelType(relationshipType: string): void;
|
|
39
|
+
/**
|
|
40
|
+
* Records one related model under its relationship type.
|
|
41
|
+
* @param {string} relationshipType
|
|
42
|
+
* @param {CacheKeyModel} model
|
|
43
|
+
*/
|
|
44
|
+
recordModel(relationshipType: string, model: CacheKeyModel): void;
|
|
45
|
+
/**
|
|
46
|
+
* Returns true when a related model has already been visited for one relationship type.
|
|
47
|
+
* @param {string} relationshipType
|
|
48
|
+
* @param {CacheKeyModel} model
|
|
49
|
+
* @returns {boolean}
|
|
50
|
+
*/
|
|
51
|
+
isModelRecorded(relationshipType: string, model: CacheKeyModel): boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Traverses loaded relationships so they are included in the full cache key.
|
|
54
|
+
* @param {CacheKeyModel} model
|
|
55
|
+
*/
|
|
56
|
+
fillModels(model: CacheKeyModel): void;
|
|
57
|
+
/**
|
|
58
|
+
* Builds a cache key that includes the root model and all loaded related models.
|
|
59
|
+
* @returns {string}
|
|
60
|
+
*/
|
|
61
|
+
cacheKey(): string;
|
|
62
|
+
/**
|
|
63
|
+
* Appends one model's identity and loaded attributes to the running hash.
|
|
64
|
+
* @param {CacheKeyModel} model
|
|
65
|
+
* @param {HashWriter} md5
|
|
66
|
+
*/
|
|
67
|
+
feedModel(model: CacheKeyModel, md5: HashWriter): void;
|
|
68
|
+
/**
|
|
69
|
+
* Returns the persisted primary key when available, otherwise the temporary unique key.
|
|
70
|
+
* @param {CacheKeyModel} model
|
|
71
|
+
* @returns {ModelIdentifier}
|
|
72
|
+
*/
|
|
73
|
+
modelIdentity(model: CacheKeyModel): ModelIdentifier;
|
|
25
74
|
}
|
|
75
|
+
export type BaseModel = {
|
|
76
|
+
abilities: import("./base-model.js").ModelAbilityMap;
|
|
77
|
+
changes: import("./base-model.js").ModelDataMap;
|
|
78
|
+
collection: import("./collection.js").default<any>;
|
|
79
|
+
_identifierKey: string | number;
|
|
80
|
+
_markedForDestruction: boolean;
|
|
81
|
+
modelData: import("./base-model.js").ModelDataMap;
|
|
82
|
+
newRecord: boolean;
|
|
83
|
+
previousModelData: any;
|
|
84
|
+
preloadedRelationships: import("./base-model.js").PreloadedRelationshipMap;
|
|
85
|
+
relationshipsCache: import("./base-model.js").LoadedRelationshipMap;
|
|
86
|
+
relationships: import("./base-model.js").LoadedRelationshipMap;
|
|
87
|
+
uniqueKeyValue: number;
|
|
88
|
+
assignAttributes(newAttributes: ModelDataMap): void;
|
|
89
|
+
attributes(): ModelDataMap;
|
|
90
|
+
can(givenAbilityName: string): boolean;
|
|
91
|
+
clone(): /*elided*/ any;
|
|
92
|
+
cacheKey(): number | string;
|
|
93
|
+
localCacheKey(): string;
|
|
94
|
+
fullCacheKey(): string;
|
|
95
|
+
create(attributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
|
|
96
|
+
model: /*elided*/ any;
|
|
97
|
+
response: ModelCommandResponse;
|
|
98
|
+
}>;
|
|
99
|
+
createRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions): Promise<{
|
|
100
|
+
model: /*elided*/ any;
|
|
101
|
+
response: ModelCommandResponse;
|
|
102
|
+
}>;
|
|
103
|
+
destroy(): Promise<{
|
|
104
|
+
model: /*elided*/ any;
|
|
105
|
+
response: ModelCommandResponse;
|
|
106
|
+
}>;
|
|
107
|
+
ensureAbilities(listOfAbilities: string[]): Promise<void>;
|
|
108
|
+
getAttributes(): ModelDataMap;
|
|
109
|
+
handleResponseError(response: ModelCommandResponse): never;
|
|
110
|
+
identifierKey(): number | string;
|
|
111
|
+
isAssociationLoaded(associationName: string): boolean;
|
|
112
|
+
isAssociationLoadedUnderscore(associationNameUnderscore: string): boolean;
|
|
113
|
+
isAssociationPresent(associationName: string): boolean;
|
|
114
|
+
ensureAssociationLoaded(associationName: string): Promise<LoadedRelationshipValue>;
|
|
115
|
+
ensureAssociationLoadedUnderscore(associationNameUnderscore: string): Promise<LoadedRelationshipValue>;
|
|
116
|
+
isAttributeChanged(attributeName: string): boolean;
|
|
117
|
+
isChanged(): boolean;
|
|
118
|
+
isNewRecord(): boolean;
|
|
119
|
+
isPersisted(): boolean;
|
|
120
|
+
savedChangeToAttribute(attributeName: string): boolean;
|
|
121
|
+
setNewModel(model: /*elided*/ any): void;
|
|
122
|
+
setNewModelData(model: /*elided*/ any): void;
|
|
123
|
+
_isDateChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
|
|
124
|
+
_isIntegerChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
|
|
125
|
+
_isStringChanged(oldValue: ModelValue | null | undefined, newValue: ModelValue | null | undefined): boolean | void;
|
|
126
|
+
modelClassData(): ModelClassDataType;
|
|
127
|
+
reload(): Promise<void>;
|
|
128
|
+
save(): Promise<{
|
|
129
|
+
model: /*elided*/ any;
|
|
130
|
+
response?: object;
|
|
131
|
+
}>;
|
|
132
|
+
saveRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
|
|
133
|
+
simpleModelErrors?: boolean;
|
|
134
|
+
}): Promise<{
|
|
135
|
+
model: /*elided*/ any;
|
|
136
|
+
response: ModelCommandResponse;
|
|
137
|
+
}>;
|
|
138
|
+
update(newAttributes?: ModelDataMap, options?: ParseValidationErrorsOptions): Promise<{
|
|
139
|
+
model: /*elided*/ any;
|
|
140
|
+
response?: object;
|
|
141
|
+
}>;
|
|
142
|
+
_refreshModelFromResponse(response: ModelCommandResponse): void;
|
|
143
|
+
_refreshModelDataFromResponse(response: ModelCommandResponse): void;
|
|
144
|
+
updateRaw(rawData: RawDataInput, options?: ParseValidationErrorsOptions & {
|
|
145
|
+
simpleModelErrors?: boolean;
|
|
146
|
+
}): Promise<{
|
|
147
|
+
response: ModelCommandResponse;
|
|
148
|
+
model: /*elided*/ any;
|
|
149
|
+
}>;
|
|
150
|
+
isValid(): never;
|
|
151
|
+
isValidOnServer(): Promise<{
|
|
152
|
+
valid: boolean;
|
|
153
|
+
errors: ValidationResponseErrors;
|
|
154
|
+
}>;
|
|
155
|
+
modelClass(): BaseModelClassType;
|
|
156
|
+
preloadRelationship(relationshipName: string, model: /*elided*/ any | /*elided*/ any[] | null): void;
|
|
157
|
+
markForDestruction(): void;
|
|
158
|
+
markedForDestruction(): boolean;
|
|
159
|
+
uniqueKey(): number;
|
|
160
|
+
_callMemberCommand(args: ModelCommandDescriptor, commandArgs: ModelCommandOptions): import("./command-execution.js").default;
|
|
161
|
+
readAttribute(attributeName: string): ModelValue | null | undefined;
|
|
162
|
+
readAttributeUnderscore(attributeName: string): ModelValue | null | undefined;
|
|
163
|
+
isAttributeLoaded(attributeName: string): boolean;
|
|
164
|
+
_isPresent(value: ModelValue | null | undefined): boolean;
|
|
165
|
+
_loadBelongsToReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
|
|
166
|
+
_readBelongsToReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
|
|
167
|
+
_loadHasManyReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any[]>;
|
|
168
|
+
_loadHasOneReflection(args: RelationshipLoadArgs, queryArgs?: import("./collection.js").QueryArgsType): Promise</*elided*/ any | null>;
|
|
169
|
+
_readHasOneReflection({ reflectionName }: RelationshipLoadArgs): /*elided*/ any | null;
|
|
170
|
+
_readModelDataFromArgs(args?: BaseModelArgsObject): void;
|
|
171
|
+
_readPreloadedRelationships(preloaded: {
|
|
172
|
+
getModel: (relationshipType: string, relationshipId: number | string) => /*elided*/ any;
|
|
173
|
+
}): void;
|
|
174
|
+
primaryKey(): number | string;
|
|
175
|
+
};
|
|
176
|
+
export type HashWriter = {
|
|
177
|
+
append(value: string): void;
|
|
178
|
+
end(): string;
|
|
179
|
+
};
|
|
180
|
+
export type ModelIdentifier = string | number;
|
|
181
|
+
export type CacheKeyAttributeValue = string | number | boolean | null | undefined | {
|
|
182
|
+
toString(): string;
|
|
183
|
+
};
|
|
184
|
+
export type CacheKeyModelClassData = {
|
|
185
|
+
name: string;
|
|
186
|
+
};
|
|
187
|
+
export type CacheKeyModel = {
|
|
188
|
+
attributes: () => Record<string, CacheKeyAttributeValue>;
|
|
189
|
+
markedForDestruction: () => boolean;
|
|
190
|
+
modelClassData: () => CacheKeyModelClassData;
|
|
191
|
+
modelClass: () => {
|
|
192
|
+
primaryKey(): string;
|
|
193
|
+
};
|
|
194
|
+
primaryKey: () => ModelIdentifier | null | undefined | "";
|
|
195
|
+
readAttributeUnderscore: (attributeName: string) => CacheKeyAttributeValue;
|
|
196
|
+
isAttributeLoaded: (attributeName: string) => boolean;
|
|
197
|
+
relationships: Record<string, CacheKeyModel | Array<CacheKeyModel> | null | undefined>;
|
|
198
|
+
uniqueKey: () => ModelIdentifier;
|
|
199
|
+
};
|
|
26
200
|
//# sourceMappingURL=cache-key-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-key-generator.d.ts","sourceRoot":"/src/","sources":["cache-key-generator.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cache-key-generator.d.ts","sourceRoot":"/src/","sources":["cache-key-generator.js"],"names":[],"mappings":"AAGA,6DAA6D;AAC7D,yEAAyE;AACzE,iDAAiD;AACjD,4GAA4G;AAC5G,uDAAuD;AACvD;;;;;;;;;;;GAWG;AAEH,kDAAkD;AAClD;IACE;;;OAGG;IACH,mBAFW,aAAa,EASvB;IANC,qBAAkB;IAClB,2BAAwB;IACxB,eAAoB;IAGpB,sBAAyB;IAG3B;;;OAGG;IACH,SAFa,MAAM,CAQlB;IAED;;;OAGG;IACH,kCAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,8BAHW,MAAM,SACN,aAAa,QAKvB;IAED;;;;;OAKG;IACH,kCAJW,MAAM,SACN,aAAa,GACX,OAAO,CAQnB;IAED;;;OAGG;IACH,kBAFW,aAAa,QAwBvB;IAED;;;OAGG;IACH,YAFa,MAAM,CAclB;IAED;;;;OAIG;IACH,iBAHW,aAAa,OACb,UAAU,QAqBpB;IAED;;;;OAIG;IACH,qBAHW,aAAa,GACX,eAAe,CAc3B;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBACggwB,CAAC;;;yBAA6O,CAAC;;;;;;;gBAAoc,CAAC;;;;;yBAAm7E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBAzK3l2B;IAAC,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,GAAG,IAAI,MAAM,CAAA;CAAC;8BAC5C,MAAM,GAAG,MAAM;qCACf,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG;IAAC,QAAQ,IAAI,MAAM,CAAA;CAAC;qCACnE;IAAC,IAAI,EAAE,MAAM,CAAA;CAAC;;gBAGd,MAAM,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC;0BAC5C,MAAM,OAAO;oBACb,MAAM,sBAAsB;gBAC5B,MAAM;QAAC,UAAU,IAAI,MAAM,CAAA;KAAC;gBAC5B,MAAM,eAAe,GAAG,IAAI,GAAG,SAAS,GAAG,EAAE;6BAC7C,CAAC,aAAa,EAAE,MAAM,KAAK,sBAAsB;uBACjD,CAAC,aAAa,EAAE,MAAM,KAAK,OAAO;mBAClC,MAAM,CAAC,MAAM,EAAE,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;eACvE,MAAM,eAAe"}
|
|
@@ -1,7 +1,28 @@
|
|
|
1
|
+
// @ts-check
|
|
1
2
|
import SparkMD5 from "spark-md5";
|
|
3
|
+
/** @typedef {import("./base-model.js").default} BaseModel */
|
|
4
|
+
/** @typedef {{append(value: string): void, end(): string}} HashWriter */
|
|
5
|
+
/** @typedef {string | number} ModelIdentifier */
|
|
6
|
+
/** @typedef {string | number | boolean | null | undefined | {toString(): string}} CacheKeyAttributeValue */
|
|
7
|
+
/** @typedef {{name: string}} CacheKeyModelClassData */
|
|
8
|
+
/**
|
|
9
|
+
* @typedef {object} CacheKeyModel
|
|
10
|
+
* @property {() => Record<string, CacheKeyAttributeValue>} attributes
|
|
11
|
+
* @property {() => boolean} markedForDestruction
|
|
12
|
+
* @property {() => CacheKeyModelClassData} modelClassData
|
|
13
|
+
* @property {() => {primaryKey(): string}} modelClass
|
|
14
|
+
* @property {() => ModelIdentifier | null | undefined | ""} primaryKey
|
|
15
|
+
* @property {(attributeName: string) => CacheKeyAttributeValue} readAttributeUnderscore
|
|
16
|
+
* @property {(attributeName: string) => boolean} isAttributeLoaded
|
|
17
|
+
* @property {Record<string, CacheKeyModel | Array<CacheKeyModel> | null | undefined>} relationships
|
|
18
|
+
* @property {() => ModelIdentifier} uniqueKey
|
|
19
|
+
*/
|
|
2
20
|
/** Generates local/full cache keys for models. */
|
|
3
21
|
export default class CacheKeyGenerator {
|
|
4
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Creates a cache-key generator rooted at one model instance.
|
|
24
|
+
* @param {CacheKeyModel} model
|
|
25
|
+
*/
|
|
5
26
|
constructor(model) {
|
|
6
27
|
this.model = model;
|
|
7
28
|
this.allModels = [model];
|
|
@@ -10,30 +31,49 @@ export default class CacheKeyGenerator {
|
|
|
10
31
|
this.recordModel(model.modelClassData().name, model);
|
|
11
32
|
this.filledModels = false;
|
|
12
33
|
}
|
|
13
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Builds a cache key from the root model only.
|
|
36
|
+
* @returns {string}
|
|
37
|
+
*/
|
|
14
38
|
local() {
|
|
15
39
|
const md5 = new SparkMD5();
|
|
16
40
|
this.feedModel(this.model, md5);
|
|
17
41
|
return md5.end();
|
|
18
42
|
}
|
|
19
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Ensures one relationship type has a tracking bucket.
|
|
45
|
+
* @param {string} relationshipType
|
|
46
|
+
*/
|
|
20
47
|
recordModelType(relationshipType) {
|
|
21
48
|
if (!(relationshipType in this.readModels)) {
|
|
22
49
|
this.readModels[relationshipType] = {};
|
|
23
50
|
}
|
|
24
51
|
}
|
|
25
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Records one related model under its relationship type.
|
|
54
|
+
* @param {string} relationshipType
|
|
55
|
+
* @param {CacheKeyModel} model
|
|
56
|
+
*/
|
|
26
57
|
recordModel(relationshipType, model) {
|
|
27
58
|
this.allModels.push(model);
|
|
28
59
|
this.readModels[relationshipType][this.modelIdentity(model)] = true;
|
|
29
60
|
}
|
|
30
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Returns true when a related model has already been visited for one relationship type.
|
|
63
|
+
* @param {string} relationshipType
|
|
64
|
+
* @param {CacheKeyModel} model
|
|
65
|
+
* @returns {boolean}
|
|
66
|
+
*/
|
|
31
67
|
isModelRecorded(relationshipType, model) {
|
|
32
68
|
if (this.modelIdentity(model) in this.readModels[relationshipType]) {
|
|
33
69
|
return true;
|
|
34
70
|
}
|
|
71
|
+
return false;
|
|
35
72
|
}
|
|
36
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Traverses loaded relationships so they are included in the full cache key.
|
|
75
|
+
* @param {CacheKeyModel} model
|
|
76
|
+
*/
|
|
37
77
|
fillModels(model) {
|
|
38
78
|
for (const relationshipType in model.relationships) {
|
|
39
79
|
this.recordModelType(relationshipType);
|
|
@@ -55,7 +95,10 @@ export default class CacheKeyGenerator {
|
|
|
55
95
|
}
|
|
56
96
|
this.filledModels = true;
|
|
57
97
|
}
|
|
58
|
-
/**
|
|
98
|
+
/**
|
|
99
|
+
* Builds a cache key that includes the root model and all loaded related models.
|
|
100
|
+
* @returns {string}
|
|
101
|
+
*/
|
|
59
102
|
cacheKey() {
|
|
60
103
|
if (!this.filledModels) {
|
|
61
104
|
this.fillModels(this.model);
|
|
@@ -66,12 +109,16 @@ export default class CacheKeyGenerator {
|
|
|
66
109
|
}
|
|
67
110
|
return md5.end();
|
|
68
111
|
}
|
|
69
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Appends one model's identity and loaded attributes to the running hash.
|
|
114
|
+
* @param {CacheKeyModel} model
|
|
115
|
+
* @param {HashWriter} md5
|
|
116
|
+
*/
|
|
70
117
|
feedModel(model, md5) {
|
|
71
118
|
md5.append("--model--");
|
|
72
119
|
md5.append(model.modelClassData().name);
|
|
73
120
|
md5.append("--unique-key--");
|
|
74
|
-
md5.append(this.modelIdentity(model));
|
|
121
|
+
md5.append(String(this.modelIdentity(model)));
|
|
75
122
|
if (model.markedForDestruction()) {
|
|
76
123
|
md5.append("--marked-for-destruction--");
|
|
77
124
|
}
|
|
@@ -80,10 +127,14 @@ export default class CacheKeyGenerator {
|
|
|
80
127
|
for (const attributeName in attributes) {
|
|
81
128
|
md5.append(attributeName);
|
|
82
129
|
md5.append("--attribute--");
|
|
83
|
-
md5.append(
|
|
130
|
+
md5.append(String(model.readAttributeUnderscore(attributeName)));
|
|
84
131
|
}
|
|
85
132
|
}
|
|
86
|
-
/**
|
|
133
|
+
/**
|
|
134
|
+
* Returns the persisted primary key when available, otherwise the temporary unique key.
|
|
135
|
+
* @param {CacheKeyModel} model
|
|
136
|
+
* @returns {ModelIdentifier}
|
|
137
|
+
*/
|
|
87
138
|
modelIdentity(model) {
|
|
88
139
|
const primaryKeyName = model.modelClass().primaryKey();
|
|
89
140
|
if (model.isAttributeLoaded(primaryKeyName)) {
|
|
@@ -95,4 +146,4 @@ export default class CacheKeyGenerator {
|
|
|
95
146
|
return model.uniqueKey();
|
|
96
147
|
}
|
|
97
148
|
}
|
|
98
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUta2V5LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FjaGUta2V5LWdlbmVyYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFFBQVEsTUFBTSxXQUFXLENBQUE7QUFFaEMsa0RBQWtEO0FBQ2xELE1BQU0sQ0FBQyxPQUFPLE9BQU8saUJBQWlCO0lBQ3BDLG1CQUFtQjtJQUNuQixZQUFZLEtBQUs7UUFDZixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDeEIsSUFBSSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUE7UUFDcEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFBO1FBQ3BELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFBO0lBQzNCLENBQUM7SUFFRCxhQUFhO0lBQ2IsS0FBSztRQUNILE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFFMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRS9CLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLENBQUM7SUFFRCx1QkFBdUI7SUFDdkIsZUFBZSxDQUFDLGdCQUFnQjtRQUM5QixJQUFJLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsRUFBRSxDQUFBO1FBQ3hDLENBQUM7SUFDSCxDQUFDO0lBRUQsbUJBQW1CO0lBQ25CLFdBQVcs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QTtRQUMxQyxDQUFDO1FBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUUxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFckMsS0FBSyxNQUFNLGFBQWEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDM0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUE7UUFDL0QsQ0FBQztJQUNILENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsYUFBYSxDQUFDLEtBQUs7UUFDakIsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBRXRELElBQUksS0FBSyxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7WUFDNUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFBO1lBRTFDLElBQUksZUFBZSxLQUFLLElBQUksSUFBSSxlQUFlLEtBQUssU0FBUyxJQUFJLGVBQWUsS0FBSyxFQUFFLEVBQUUsQ0FBQztnQkFDeEYsT0FBTyxlQUFlLENBQUE7WUFDeEIsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQyxTQUFTLEVBQUUsQ0FBQTtJQUMxQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3BhcmtNRDUgZnJvbSBcInNwYXJrLW1kNVwiXG5cbi8qKiBHZW5lcmF0ZXMgbG9jYWwvZnVsbCBjYWNoZSBrZXlzIGZvciBtb2RlbHMuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDYWNoZUtleUdlbmVyYXRvciB7XG4gIC8qKiBDb25zdHJ1Y3Rvci4gKi9cbiAgY29uc3RydWN0b3IobW9kZWwpIHtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLmFsbE1vZGVscyA9IFttb2RlbF1cbiAgICB0aGlzLnJlYWRNb2RlbHMgPSB7fVxuICAgIHRoaXMucmVjb3JkTW9kZWxUeXBlKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICB0aGlzLnJlY29yZE1vZGVsKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgbW9kZWwpXG4gICAgdGhpcy5maWxsZWRNb2RlbHMgPSBmYWxzZVxuICB9XG5cbiAgLyoqIGxvY2FsLiAqL1xuICBsb2NhbCgpIHtcbiAgICBjb25zdCBtZDUgPSBuZXcgU3BhcmtNRDUoKVxuXG4gICAgdGhpcy5mZWVkTW9kZWwodGhpcy5tb2RlbCwgbWQ1KVxuXG4gICAgcmV0dXJuIG1kNS5lbmQoKVxuICB9XG5cbiAgLyoqIHJlY29yZE1vZGVsVHlwZS4gKi9cbiAgcmVjb3JkTW9kZWxUeXBlKHJlbGF0aW9uc2hpcFR5cGUpIHtcbiAgICBpZiAoIShyZWxhdGlvbnNoaXBUeXBlIGluIHRoaXMucmVhZE1vZGVscykpIHtcbiAgICAgIHRoaXMucmVhZE1vZGVsc1tyZWxhdGlvbnNoaXBUeXBlXSA9IHt9XG4gICAgfVxuICB9XG5cbiAgLyoqIHJlY29yZE1vZGVsLiAqL1xuICByZWNvcmRNb2RlbChyZWxhdGlvbnNoaXBUeXBlLCBtb2RlbCkge1xuICAgIHRoaXMuYWxsTW9kZWxzLnB1c2gobW9kZWwpXG4gICAgdGhpcy5yZWFkTW9kZWxzW3JlbGF0aW9uc2hpcFR5cGVdW3RoaXMubW9kZWxJZGVudGl0eShtb2RlbCldID0gdHJ1ZVxuICB9XG5cbiAgLyoqIGlzTW9kZWxSZWNvcmRlZC4gKi9cbiAgaXNNb2RlbFJlY29yZGVkKHJlbGF0aW9uc2hpcFR5cGUsIG1vZGVsKSB7XG4gICAgaWYgKHRoaXMubW9kZWxJZGVudGl0eShtb2RlbCkgaW4gdGhpcy5yZWFkTW9kZWxzW3JlbGF0aW9uc2hpcFR5cGVdKSB7XG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cbiAgfVxuXG4gIC8qKiBmaWxsTW9kZWxzLiAqL1xuICBmaWxsTW9kZWxzKG1vZGVsKSB7XG4gICAgZm9yIChjb25zdCByZWxhdGlvbnNoaXBUeXBlIGluIG1vZGVsLnJlbGF0aW9uc2hpcHMpIHtcbiAgICAgIHRoaXMucmVjb3JkTW9kZWxUeXBlKHJlbGF0aW9uc2hpcFR5cGUpXG5cbiAgICAgIGNvbnN0IGxvYWRlZFJlbGF0aW9uc2hpcCA9IG1vZGVsLnJlbGF0aW9uc2hpcHNbcmVsYXRpb25zaGlwVHlwZV1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkobG9hZGVkUmVsYXRpb25zaGlwKSkgeyAvLyBoYXNfbWFueVxuICAgICAgICBmb3IgKGNvbnN0IGFub3RoZXJNb2RlbCBvZiBsb2FkZWRSZWxhdGlvbnNoaXApIHtcbiAgICAgICAgICBpZiAoIXRoaXMuaXNNb2RlbFJlY29yZGVkKHJlbGF0aW9uc2hpcFR5cGUsIGFub3RoZXJNb2RlbCkpIHtcbiAgICAgICAgICAgIHRoaXMucmVjb3JkTW9kZWwocmVsYXRpb25zaGlwVHlwZSwgYW5vdGhlck1vZGVsKVxuICAgICAgICAgICAgdGhpcy5maWxsTW9kZWxzKGFub3RoZXJNb2RlbClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAobG9hZGVkUmVsYXRpb25zaGlwKSB7IC8vIGJlbG9uZ3NfdG8sIGhhc19vbmVcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9kZWxSZWNvcmRlZChyZWxhdGlvbnNoaXBUeXBlLCBsb2FkZWRSZWxhdGlvbnNoaXApKSB7XG4gICAgICAgICAgdGhpcy5yZWNvcmRNb2RlbChyZWxhdGlvbnNoaXBUeXBlLCBsb2FkZWRSZWxhdGlvbnNoaXApXG4gICAgICAgICAgdGhpcy5maWxsTW9kZWxzKGxvYWRlZFJlbGF0aW9uc2hpcClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuZmlsbGVkTW9kZWxzID0gdHJ1ZVxuICB9XG5cbiAgLyoqIGNhY2hlS2V5LiAqL1xuICBjYWNoZUtleSgpIHtcbiAgICBpZiAoIXRoaXMuZmlsbGVkTW9kZWxzKSB7XG4gICAgICB0aGlzLmZpbGxNb2RlbHModGhpcy5tb2RlbClcbiAgICB9XG5cbiAgICBjb25zdCBtZDUgPSBuZXcgU3BhcmtNRDUoKVxuXG4gICAgZm9yIChjb25zdCBtb2RlbCBvZiB0aGlzLmFsbE1vZGVscykge1xuICAgICAgdGhpcy5mZWVkTW9kZWwobW9kZWwsIG1kNSlcbiAgICB9XG5cbiAgICByZXR1cm4gbWQ1LmVuZCgpXG4gIH1cblxuICAvKiogZmVlZE1vZGVsLiAqL1xuICBmZWVkTW9kZWwobW9kZWwsIG1kNSkge1xuICAgIG1kNS5hcHBlbmQoXCItLW1vZGVsLS1cIilcbiAgICBtZDUuYXBwZW5kKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICBtZDUuYXBwZW5kKFwiLS11bmlxdWUta2V5LS1cIilcbiAgICBtZDUuYXBwZW5kKHRoaXMubW9kZWxJZGVudGl0eShtb2RlbCkpXG5cbiAgICBpZiAobW9kZWwubWFya2VkRm9yRGVzdHJ1Y3Rpb24oKSkge1xuICAgICAgbWQ1LmFwcGVuZChcIi0tbWFya2VkLWZvci1kZXN0cnVjdGlvbi0tXCIpXG4gICAgfVxuXG4gICAgbWQ1LmFwcGVuZChcIi1hdHRyaWJ1dGVzLVwiKVxuXG4gICAgY29uc3QgYXR0cmlidXRlcyA9IG1vZGVsLmF0dHJpYnV0ZXMoKVxuXG4gICAgZm9yIChjb25zdCBhdHRyaWJ1dGVOYW1lIGluIGF0dHJpYnV0ZXMpIHtcbiAgICAgIG1kNS5hcHBlbmQoYXR0cmlidXRlTmFtZSlcbiAgICAgIG1kNS5hcHBlbmQoXCItLWF0dHJpYnV0ZS0tXCIpXG4gICAgICBtZDUuYXBwZW5kKGAke21vZGVsLnJlYWRBdHRyaWJ1dGVVbmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWUpfWApXG4gICAgfVxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtudW1iZXIgfCBzdHJpbmd9ICovXG4gIG1vZGVsSWRlbnRpdHkobW9kZWwpIHtcbiAgICBjb25zdCBwcmltYXJ5S2V5TmFtZSA9IG1vZGVsLm1vZGVsQ2xhc3MoKS5wcmltYXJ5S2V5KClcblxuICAgIGlmIChtb2RlbC5pc0F0dHJpYnV0ZUxvYWRlZChwcmltYXJ5S2V5TmFtZSkpIHtcbiAgICAgIGNvbnN0IHByaW1hcnlLZXlWYWx1ZSA9IG1vZGVsLnByaW1hcnlLZXkoKVxuXG4gICAgICBpZiAocHJpbWFyeUtleVZhbHVlICE9PSBudWxsICYmIHByaW1hcnlLZXlWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByaW1hcnlLZXlWYWx1ZSAhPT0gXCJcIikge1xuICAgICAgICByZXR1cm4gcHJpbWFyeUtleVZhbHVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGVsLnVuaXF1ZUtleSgpXG4gIH1cbn1cbiJdfQ==
|
|
149
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUta2V5LWdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIvc3JjLyIsInNvdXJjZXMiOlsiY2FjaGUta2V5LWdlbmVyYXRvci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBQ1osT0FBTyxRQUFRLE1BQU0sV0FBVyxDQUFBO0FBRWhDLDZEQUE2RDtBQUM3RCx5RUFBeUU7QUFDekUsaURBQWlEO0FBQ2pELDRHQUE0RztBQUM1Ryx1REFBdUQ7QUFDdkQ7Ozs7Ozs7Ozs7O0dBV0c7QUFFSCxrREFBa0Q7QUFDbEQsTUFBTSxDQUFDLE9BQU8sT0FBTyxpQkFBaUI7SUFDcEM7OztPQUdHO0lBQ0gsWUFBWSxLQUFLO1FBQ2YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUE7UUFDbEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3hCLElBQUksQ0FBQyxVQUFVLEdBQUcsRUFBRSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQTtJQUMzQixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSztRQUNILE1BQU0sR0FBRyxHQUFHLElBQUksUUFBUSxFQUFFLENBQUE7UUFFMUIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFBO1FBRS9CLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFBO0lBQ2xCLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsZ0JBQWdCO1FBQzlCLElBQUksQ0FBQyxDQUFDLGdCQUFnQixJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO1lB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SUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFFN0MsSUFBSSxLQUFLLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxDQUFDO1lBQ2pDLEdBQUcsQ0FBQyxNQUFNLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtRQUMxQyxDQUFDO1FBRUQsR0FBRyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQTtRQUUxQixNQUFNLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFckMsS0FBSyxNQUFNLGFBQWEsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxHQUFHLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFBO1lBQ3pCLEdBQUcsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUE7WUFDM0IsR0FBRyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsS0FBSztRQUNqQixNQUFNLGNBQWMsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFdEQsSUFBSSxLQUFLLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsVUFBVSxFQUFFLENBQUE7WUFFMUMsSUFBSSxlQUFlLEtBQUssSUFBSSxJQUFJLGVBQWUsS0FBSyxTQUFTLElBQUksZUFBZSxLQUFLLEVBQUUsRUFBRSxDQUFDO2dCQUN4RixPQUFPLGVBQWUsQ0FBQTtZQUN4QixDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFBO0lBQzFCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1jaGVja1xuaW1wb3J0IFNwYXJrTUQ1IGZyb20gXCJzcGFyay1tZDVcIlxuXG4vKiogQHR5cGVkZWYge2ltcG9ydChcIi4vYmFzZS1tb2RlbC5qc1wiKS5kZWZhdWx0fSBCYXNlTW9kZWwgKi9cbi8qKiBAdHlwZWRlZiB7e2FwcGVuZCh2YWx1ZTogc3RyaW5nKTogdm9pZCwgZW5kKCk6IHN0cmluZ319IEhhc2hXcml0ZXIgKi9cbi8qKiBAdHlwZWRlZiB7c3RyaW5nIHwgbnVtYmVyfSBNb2RlbElkZW50aWZpZXIgKi9cbi8qKiBAdHlwZWRlZiB7c3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgfCB1bmRlZmluZWQgfCB7dG9TdHJpbmcoKTogc3RyaW5nfX0gQ2FjaGVLZXlBdHRyaWJ1dGVWYWx1ZSAqL1xuLyoqIEB0eXBlZGVmIHt7bmFtZTogc3RyaW5nfX0gQ2FjaGVLZXlNb2RlbENsYXNzRGF0YSAqL1xuLyoqXG4gKiBAdHlwZWRlZiB7b2JqZWN0fSBDYWNoZUtleU1vZGVsXG4gKiBAcHJvcGVydHkgeygpID0+IFJlY29yZDxzdHJpbmcsIENhY2hlS2V5QXR0cmlidXRlVmFsdWU+fSBhdHRyaWJ1dGVzXG4gKiBAcHJvcGVydHkgeygpID0+IGJvb2xlYW59IG1hcmtlZEZvckRlc3RydWN0aW9uXG4gKiBAcHJvcGVydHkgeygpID0+IENhY2hlS2V5TW9kZWxDbGFzc0RhdGF9IG1vZGVsQ2xhc3NEYXRhXG4gKiBAcHJvcGVydHkgeygpID0+IHtwcmltYXJ5S2V5KCk6IHN0cmluZ319IG1vZGVsQ2xhc3NcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gTW9kZWxJZGVudGlmaWVyIHwgbnVsbCB8IHVuZGVmaW5lZCB8IFwiXCJ9IHByaW1hcnlLZXlcbiAqIEBwcm9wZXJ0eSB7KGF0dHJpYnV0ZU5hbWU6IHN0cmluZykgPT4gQ2FjaGVLZXlBdHRyaWJ1dGVWYWx1ZX0gcmVhZEF0dHJpYnV0ZVVuZGVyc2NvcmVcbiAqIEBwcm9wZXJ0eSB7KGF0dHJpYnV0ZU5hbWU6IHN0cmluZykgPT4gYm9vbGVhbn0gaXNBdHRyaWJ1dGVMb2FkZWRcbiAqIEBwcm9wZXJ0eSB7UmVjb3JkPHN0cmluZywgQ2FjaGVLZXlNb2RlbCB8IEFycmF5PENhY2hlS2V5TW9kZWw+IHwgbnVsbCB8IHVuZGVmaW5lZD59IHJlbGF0aW9uc2hpcHNcbiAqIEBwcm9wZXJ0eSB7KCkgPT4gTW9kZWxJZGVudGlmaWVyfSB1bmlxdWVLZXlcbiAqL1xuXG4vKiogR2VuZXJhdGVzIGxvY2FsL2Z1bGwgY2FjaGUga2V5cyBmb3IgbW9kZWxzLiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2FjaGVLZXlHZW5lcmF0b3Ige1xuICAvKipcbiAgICogQ3JlYXRlcyBhIGNhY2hlLWtleSBnZW5lcmF0b3Igcm9vdGVkIGF0IG9uZSBtb2RlbCBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHtDYWNoZUtleU1vZGVsfSBtb2RlbFxuICAgKi9cbiAgY29uc3RydWN0b3IobW9kZWwpIHtcbiAgICB0aGlzLm1vZGVsID0gbW9kZWxcbiAgICB0aGlzLmFsbE1vZGVscyA9IFttb2RlbF1cbiAgICB0aGlzLnJlYWRNb2RlbHMgPSB7fVxuICAgIHRoaXMucmVjb3JkTW9kZWxUeXBlKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICB0aGlzLnJlY29yZE1vZGVsKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSwgbW9kZWwpXG4gICAgdGhpcy5maWxsZWRNb2RlbHMgPSBmYWxzZVxuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkcyBhIGNhY2hlIGtleSBmcm9tIHRoZSByb290IG1vZGVsIG9ubHkuXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBsb2NhbCgpIHtcbiAgICBjb25zdCBtZDUgPSBuZXcgU3BhcmtNRDUoKVxuXG4gICAgdGhpcy5mZWVkTW9kZWwodGhpcy5tb2RlbCwgbWQ1KVxuXG4gICAgcmV0dXJuIG1kNS5lbmQoKVxuICB9XG5cbiAgLyoqXG4gICAqIEVuc3VyZXMgb25lIHJlbGF0aW9uc2hpcCB0eXBlIGhhcyBhIHRyYWNraW5nIGJ1Y2tldC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aW9uc2hpcFR5cGVcbiAgICovXG4gIHJlY29yZE1vZGVsVHlwZShyZWxhdGlvbnNoaXBUeXBlKSB7XG4gICAgaWYgKCEocmVsYXRpb25zaGlwVHlwZSBpbiB0aGlzLnJlYWRNb2RlbHMpKSB7XG4gICAgICB0aGlzLnJlYWRNb2RlbHNbcmVsYXRpb25zaGlwVHlwZV0gPSB7fVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWNvcmRzIG9uZSByZWxhdGVkIG1vZGVsIHVuZGVyIGl0cyByZWxhdGlvbnNoaXAgdHlwZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlbGF0aW9uc2hpcFR5cGVcbiAgICogQHBhcmFtIHtDYWNoZUtleU1vZGVsfSBtb2RlbFxuICAgKi9cbiAgcmVjb3JkTW9kZWwocmVsYXRpb25zaGlwVHlwZSwgbW9kZWwpIHtcbiAgICB0aGlzLmFsbE1vZGVscy5wdXNoKG1vZGVsKVxuICAgIHRoaXMucmVhZE1vZGVsc1tyZWxhdGlvbnNoaXBUeXBlXVt0aGlzLm1vZGVsSWRlbnRpdHkobW9kZWwpXSA9IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRydWUgd2hlbiBhIHJlbGF0ZWQgbW9kZWwgaGFzIGFscmVhZHkgYmVlbiB2aXNpdGVkIGZvciBvbmUgcmVsYXRpb25zaGlwIHR5cGUuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWxhdGlvbnNoaXBUeXBlXG4gICAqIEBwYXJhbSB7Q2FjaGVLZXlNb2RlbH0gbW9kZWxcbiAgICogQHJldHVybnMge2Jvb2xlYW59XG4gICAqL1xuICBpc01vZGVsUmVjb3JkZWQocmVsYXRpb25zaGlwVHlwZSwgbW9kZWwpIHtcbiAgICBpZiAodGhpcy5tb2RlbElkZW50aXR5KG1vZGVsKSBpbiB0aGlzLnJlYWRNb2RlbHNbcmVsYXRpb25zaGlwVHlwZV0pIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICAvKipcbiAgICogVHJhdmVyc2VzIGxvYWRlZCByZWxhdGlvbnNoaXBzIHNvIHRoZXkgYXJlIGluY2x1ZGVkIGluIHRoZSBmdWxsIGNhY2hlIGtleS5cbiAgICogQHBhcmFtIHtDYWNoZUtleU1vZGVsfSBtb2RlbFxuICAgKi9cbiAgZmlsbE1vZGVscyhtb2RlbCkge1xuICAgIGZvciAoY29uc3QgcmVsYXRpb25zaGlwVHlwZSBpbiBtb2RlbC5yZWxhdGlvbnNoaXBzKSB7XG4gICAgICB0aGlzLnJlY29yZE1vZGVsVHlwZShyZWxhdGlvbnNoaXBUeXBlKVxuXG4gICAgICBjb25zdCBsb2FkZWRSZWxhdGlvbnNoaXAgPSBtb2RlbC5yZWxhdGlvbnNoaXBzW3JlbGF0aW9uc2hpcFR5cGVdXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGxvYWRlZFJlbGF0aW9uc2hpcCkpIHsgLy8gaGFzX21hbnlcbiAgICAgICAgZm9yIChjb25zdCBhbm90aGVyTW9kZWwgb2YgbG9hZGVkUmVsYXRpb25zaGlwKSB7XG4gICAgICAgICAgaWYgKCF0aGlzLmlzTW9kZWxSZWNvcmRlZChyZWxhdGlvbnNoaXBUeXBlLCBhbm90aGVyTW9kZWwpKSB7XG4gICAgICAgICAgICB0aGlzLnJlY29yZE1vZGVsKHJlbGF0aW9uc2hpcFR5cGUsIGFub3RoZXJNb2RlbClcbiAgICAgICAgICAgIHRoaXMuZmlsbE1vZGVscyhhbm90aGVyTW9kZWwpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGxvYWRlZFJlbGF0aW9uc2hpcCkgeyAvLyBiZWxvbmdzX3RvLCBoYXNfb25lXG4gICAgICAgIGlmICghdGhpcy5pc01vZGVsUmVjb3JkZWQocmVsYXRpb25zaGlwVHlwZSwgbG9hZGVkUmVsYXRpb25zaGlwKSkge1xuICAgICAgICAgIHRoaXMucmVjb3JkTW9kZWwocmVsYXRpb25zaGlwVHlwZSwgbG9hZGVkUmVsYXRpb25zaGlwKVxuICAgICAgICAgIHRoaXMuZmlsbE1vZGVscyhsb2FkZWRSZWxhdGlvbnNoaXApXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmZpbGxlZE1vZGVscyA9IHRydWVcbiAgfVxuXG4gIC8qKlxuICAgKiBCdWlsZHMgYSBjYWNoZSBrZXkgdGhhdCBpbmNsdWRlcyB0aGUgcm9vdCBtb2RlbCBhbmQgYWxsIGxvYWRlZCByZWxhdGVkIG1vZGVscy5cbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGNhY2hlS2V5KCkge1xuICAgIGlmICghdGhpcy5maWxsZWRNb2RlbHMpIHtcbiAgICAgIHRoaXMuZmlsbE1vZGVscyh0aGlzLm1vZGVsKVxuICAgIH1cblxuICAgIGNvbnN0IG1kNSA9IG5ldyBTcGFya01ENSgpXG5cbiAgICBmb3IgKGNvbnN0IG1vZGVsIG9mIHRoaXMuYWxsTW9kZWxzKSB7XG4gICAgICB0aGlzLmZlZWRNb2RlbChtb2RlbCwgbWQ1KVxuICAgIH1cblxuICAgIHJldHVybiBtZDUuZW5kKClcbiAgfVxuXG4gIC8qKlxuICAgKiBBcHBlbmRzIG9uZSBtb2RlbCdzIGlkZW50aXR5IGFuZCBsb2FkZWQgYXR0cmlidXRlcyB0byB0aGUgcnVubmluZyBoYXNoLlxuICAgKiBAcGFyYW0ge0NhY2hlS2V5TW9kZWx9IG1vZGVsXG4gICAqIEBwYXJhbSB7SGFzaFdyaXRlcn0gbWQ1XG4gICAqL1xuICBmZWVkTW9kZWwobW9kZWwsIG1kNSkge1xuICAgIG1kNS5hcHBlbmQoXCItLW1vZGVsLS1cIilcbiAgICBtZDUuYXBwZW5kKG1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkubmFtZSlcbiAgICBtZDUuYXBwZW5kKFwiLS11bmlxdWUta2V5LS1cIilcbiAgICBtZDUuYXBwZW5kKFN0cmluZyh0aGlzLm1vZGVsSWRlbnRpdHkobW9kZWwpKSlcblxuICAgIGlmIChtb2RlbC5tYXJrZWRGb3JEZXN0cnVjdGlvbigpKSB7XG4gICAgICBtZDUuYXBwZW5kKFwiLS1tYXJrZWQtZm9yLWRlc3RydWN0aW9uLS1cIilcbiAgICB9XG5cbiAgICBtZDUuYXBwZW5kKFwiLWF0dHJpYnV0ZXMtXCIpXG5cbiAgICBjb25zdCBhdHRyaWJ1dGVzID0gbW9kZWwuYXR0cmlidXRlcygpXG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZU5hbWUgaW4gYXR0cmlidXRlcykge1xuICAgICAgbWQ1LmFwcGVuZChhdHRyaWJ1dGVOYW1lKVxuICAgICAgbWQ1LmFwcGVuZChcIi0tYXR0cmlidXRlLS1cIilcbiAgICAgIG1kNS5hcHBlbmQoU3RyaW5nKG1vZGVsLnJlYWRBdHRyaWJ1dGVVbmRlcnNjb3JlKGF0dHJpYnV0ZU5hbWUpKSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGVyc2lzdGVkIHByaW1hcnkga2V5IHdoZW4gYXZhaWxhYmxlLCBvdGhlcndpc2UgdGhlIHRlbXBvcmFyeSB1bmlxdWUga2V5LlxuICAgKiBAcGFyYW0ge0NhY2hlS2V5TW9kZWx9IG1vZGVsXG4gICAqIEByZXR1cm5zIHtNb2RlbElkZW50aWZpZXJ9XG4gICAqL1xuICBtb2RlbElkZW50aXR5KG1vZGVsKSB7XG4gICAgY29uc3QgcHJpbWFyeUtleU5hbWUgPSBtb2RlbC5tb2RlbENsYXNzKCkucHJpbWFyeUtleSgpXG5cbiAgICBpZiAobW9kZWwuaXNBdHRyaWJ1dGVMb2FkZWQocHJpbWFyeUtleU5hbWUpKSB7XG4gICAgICBjb25zdCBwcmltYXJ5S2V5VmFsdWUgPSBtb2RlbC5wcmltYXJ5S2V5KClcblxuICAgICAgaWYgKHByaW1hcnlLZXlWYWx1ZSAhPT0gbnVsbCAmJiBwcmltYXJ5S2V5VmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcmltYXJ5S2V5VmFsdWUgIT09IFwiXCIpIHtcbiAgICAgICAgcmV0dXJuIHByaW1hcnlLZXlWYWx1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtb2RlbC51bmlxdWVLZXkoKVxuICB9XG59XG4iXX0=
|
package/build/can-can.d.ts
CHANGED
|
@@ -1,7 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {{debug?: boolean}} CanOptions
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* @typedef {import("./base-model.js").BaseModelClassType | {
|
|
6
|
+
* modelClassData?: () => {name?: string},
|
|
7
|
+
* name?: string,
|
|
8
|
+
* resourceData?: () => {name?: string}
|
|
9
|
+
* } | string} AbilitySubject
|
|
10
|
+
*/
|
|
11
|
+
/** @typedef {{ability: string, can: boolean, subject: string}} LoadedAbility */
|
|
12
|
+
/** @typedef {{ability: string, callbacks: Array<() => void>, subject: AbilitySubject}} PendingAbility */
|
|
13
|
+
/** @typedef {{request: Array<{ability: string, subject: AbilitySubject}>}} LoadAbilitiesRequest */
|
|
14
|
+
/** @typedef {{abilities: LoadedAbility[]}} LoadAbilitiesResponse */
|
|
15
|
+
/** @typedef {[AbilitySubject, string[]]} AbilityRequest */
|
|
1
16
|
/** Ability helper and query mapper. */
|
|
2
17
|
export default class ApiMakerCanCan {
|
|
3
|
-
/**
|
|
4
|
-
|
|
18
|
+
/**
|
|
19
|
+
* Returns the shared CanCan helper instance.
|
|
20
|
+
* @returns {ApiMakerCanCan}
|
|
21
|
+
*/
|
|
22
|
+
static current(): ApiMakerCanCan;
|
|
5
23
|
abilities: any[];
|
|
6
24
|
abilitiesToLoad: any[];
|
|
7
25
|
abilitiesToLoadData: any[];
|
|
@@ -17,47 +35,146 @@ export default class ApiMakerCanCan {
|
|
|
17
35
|
lock: ReadersWriterLock;
|
|
18
36
|
abilitiesByName: Map<any, any>;
|
|
19
37
|
debugTokens: Set<any>;
|
|
20
|
-
/**
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Returns the loaded permission value for one ability and subject pair.
|
|
40
|
+
* @param {string} ability
|
|
41
|
+
* @param {AbilitySubject} subject
|
|
42
|
+
* @param {CanOptions} options
|
|
43
|
+
* @returns {boolean | null}
|
|
44
|
+
*/
|
|
45
|
+
can(ability: string, subject: AbilitySubject, options?: CanOptions): boolean | null;
|
|
46
|
+
/**
|
|
47
|
+
* Queues one ability lookup to be loaded from the backend.
|
|
48
|
+
* @param {string} ability
|
|
49
|
+
* @param {AbilitySubject} subject
|
|
50
|
+
*/
|
|
51
|
+
recordMissingAbility(ability: string, subject: AbilitySubject): void;
|
|
24
52
|
/** queueMissingAbilitiesLoad. */
|
|
25
53
|
queueMissingAbilitiesLoad(): void;
|
|
26
54
|
/** loadMissingAbilities. */
|
|
27
55
|
loadMissingAbilities: () => void;
|
|
28
|
-
/**
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
56
|
+
/**
|
|
57
|
+
* Finds one previously loaded ability result.
|
|
58
|
+
* @param {string} ability
|
|
59
|
+
* @param {AbilitySubject} subject
|
|
60
|
+
* @returns {LoadedAbility | undefined}
|
|
61
|
+
*/
|
|
62
|
+
findAbility(ability: string, subject: AbilitySubject): LoadedAbility | undefined;
|
|
63
|
+
/**
|
|
64
|
+
* Returns whether one ability has already been loaded.
|
|
65
|
+
* @param {string} ability
|
|
66
|
+
* @param {AbilitySubject} subject
|
|
67
|
+
* @returns {boolean}
|
|
68
|
+
*/
|
|
69
|
+
isAbilityLoaded(ability: string, subject: AbilitySubject): boolean;
|
|
70
|
+
/**
|
|
71
|
+
* Returns whether abilities are currently loading or resetting.
|
|
72
|
+
* @returns {boolean}
|
|
73
|
+
*/
|
|
33
74
|
isReloading(): boolean;
|
|
34
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Returns the cache key that changes whenever loaded abilities change.
|
|
77
|
+
* @returns {number}
|
|
78
|
+
*/
|
|
35
79
|
getCacheKey(): number;
|
|
36
|
-
/**
|
|
37
|
-
|
|
38
|
-
|
|
80
|
+
/**
|
|
81
|
+
* Enables or disables debug logging for one caller token.
|
|
82
|
+
* @param {string | symbol} token
|
|
83
|
+
* @param {boolean} enabled
|
|
84
|
+
*/
|
|
85
|
+
setDebug(token: string | symbol, enabled: boolean): void;
|
|
86
|
+
/**
|
|
87
|
+
* Returns whether any caller has enabled CanCan debug logging.
|
|
88
|
+
* @returns {boolean}
|
|
89
|
+
*/
|
|
39
90
|
isDebugging(): boolean;
|
|
40
|
-
/**
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
91
|
+
/**
|
|
92
|
+
* Writes one debug log message when debugging is enabled.
|
|
93
|
+
* @param {string} message
|
|
94
|
+
*/
|
|
95
|
+
debugLog(message: string): void;
|
|
96
|
+
/**
|
|
97
|
+
* Loads a batch of abilities from the backend.
|
|
98
|
+
* @param {AbilityRequest[]} abilities
|
|
99
|
+
* @returns {Promise<void>}
|
|
100
|
+
*/
|
|
101
|
+
loadAbilities(abilities: AbilityRequest[]): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Loads one ability and resolves once it is available locally.
|
|
104
|
+
* @param {string} ability
|
|
105
|
+
* @param {AbilitySubject} subject
|
|
106
|
+
* @returns {Promise<void>}
|
|
107
|
+
*/
|
|
108
|
+
loadAbility(ability: string, subject: AbilitySubject): Promise<void>;
|
|
45
109
|
/** queueAbilitiesRequest. */
|
|
46
110
|
queueAbilitiesRequest(): void;
|
|
47
111
|
queueAbilitiesRequestTimeout: NodeJS.Timeout;
|
|
48
112
|
resetAbilities(): Promise<any>;
|
|
49
|
-
|
|
113
|
+
/**
|
|
114
|
+
* Resets and reloads one batch of abilities, optionally deduped by key.
|
|
115
|
+
* @param {AbilityRequest[]} abilities
|
|
116
|
+
* @param {string | undefined} reloadKey
|
|
117
|
+
* @returns {Promise<void>}
|
|
118
|
+
*/
|
|
119
|
+
reloadAbilities(abilities: AbilityRequest[], reloadKey: string | undefined): Promise<void>;
|
|
50
120
|
/** sendAbilitiesRequest. */
|
|
51
121
|
sendAbilitiesRequest: () => Promise<void>;
|
|
52
|
-
/**
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
122
|
+
/**
|
|
123
|
+
* Indexes loaded abilities by the lookup key used by `findAbility`.
|
|
124
|
+
* @param {LoadedAbility[]} abilities
|
|
125
|
+
*/
|
|
126
|
+
indexAbilitiesByName(abilities: LoadedAbility[]): void;
|
|
127
|
+
/**
|
|
128
|
+
* Builds the internal key used to look up one ability result.
|
|
129
|
+
* @param {string} ability
|
|
130
|
+
* @param {AbilitySubject} subject
|
|
131
|
+
* @returns {null | string}
|
|
132
|
+
*/
|
|
133
|
+
abilityKey(ability: string, subject: AbilitySubject): null | string;
|
|
134
|
+
/**
|
|
135
|
+
* Extracts the subject name sent to the backend ability loader.
|
|
136
|
+
* @param {AbilitySubject} subject
|
|
137
|
+
* @returns {string | null}
|
|
138
|
+
*/
|
|
139
|
+
subjectName(subject: AbilitySubject): string | null;
|
|
140
|
+
/**
|
|
141
|
+
* Re-throws an async error on the microtask queue for existing handlers.
|
|
142
|
+
* @param {Error} error
|
|
143
|
+
*/
|
|
144
|
+
reportUnhandledAsyncError(error: Error): void;
|
|
60
145
|
}
|
|
146
|
+
export type CanOptions = {
|
|
147
|
+
debug?: boolean;
|
|
148
|
+
};
|
|
149
|
+
export type AbilitySubject = import("./base-model.js").BaseModelClassType | {
|
|
150
|
+
modelClassData?: () => {
|
|
151
|
+
name?: string;
|
|
152
|
+
};
|
|
153
|
+
name?: string;
|
|
154
|
+
resourceData?: () => {
|
|
155
|
+
name?: string;
|
|
156
|
+
};
|
|
157
|
+
} | string;
|
|
158
|
+
export type LoadedAbility = {
|
|
159
|
+
ability: string;
|
|
160
|
+
can: boolean;
|
|
161
|
+
subject: string;
|
|
162
|
+
};
|
|
163
|
+
export type PendingAbility = {
|
|
164
|
+
ability: string;
|
|
165
|
+
callbacks: Array<() => void>;
|
|
166
|
+
subject: AbilitySubject;
|
|
167
|
+
};
|
|
168
|
+
export type LoadAbilitiesRequest = {
|
|
169
|
+
request: Array<{
|
|
170
|
+
ability: string;
|
|
171
|
+
subject: AbilitySubject;
|
|
172
|
+
}>;
|
|
173
|
+
};
|
|
174
|
+
export type LoadAbilitiesResponse = {
|
|
175
|
+
abilities: LoadedAbility[];
|
|
176
|
+
};
|
|
177
|
+
export type AbilityRequest = [AbilitySubject, string[]];
|
|
61
178
|
import { EventEmitter } from "eventemitter3";
|
|
62
179
|
import { ReadersWriterLock } from "epic-locks";
|
|
63
180
|
//# sourceMappingURL=can-can.d.ts.map
|
package/build/can-can.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"can-can.d.ts","sourceRoot":"/src/","sources":["can-can.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"can-can.d.ts","sourceRoot":"/src/","sources":["can-can.js"],"names":[],"mappings":"AAUA;;GAEG;AACH;;;;;;GAMG;AACH,gFAAgF;AAChF,yGAAyG;AACzG,mGAAmG;AACnG,oEAAoE;AACpE,2DAA2D;AAE3D,uCAAuC;AACvC;IAiBE;;;OAGG;IACH,kBAFa,cAAc,CAM1B;IAxBD,iBAAc;IACd,uBAAoB;IACpB,2BAAwB;IACxB,4BAAuB;IACvB,iBAAY;IACZ,qBAAgB;IAChB,gCAA4B;IAC5B,6BAA8B;IAC9B,8BAA0B;IAC1B,kBAAmB;IACnB,yBAA0B;IAC1B,2CAA2B;IAC3B,wBAA8B;IAC9B,+BAA2B;IAC3B,sBAAuB;IAYvB;;;;;;OAMG;IACH,aALW,MAAM,WACN,cAAc,YACd,UAAU,GACR,OAAO,GAAG,IAAI,CAwB1B;IAED;;;;OAIG;IACH,8BAHW,MAAM,WACN,cAAc,QAcxB;IAED,iCAAiC;IACjC,kCAIC;IAED,4BAA4B;IAC5B,iCAeC;IAED;;;;;OAKG;IACH,qBAJW,MAAM,WACN,cAAc,GACZ,aAAa,GAAG,SAAS,CAOrC;IAED;;;;;OAKG;IACH,yBAJW,MAAM,WACN,cAAc,GACZ,OAAO,CAInB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;OAGG;IACH,eAFa,MAAM,CAIlB;IAED;;;;OAIG;IACH,gBAHW,MAAM,GAAG,MAAM,WACf,OAAO,QAUjB;IAED;;;OAGG;IACH,eAFa,OAAO,CAInB;IAED;;;OAGG;IACH,kBAFW,MAAM,QAMhB;IAED;;;;OAIG;IACH,yBAHW,cAAc,EAAE,GACd,OAAO,CAAC,IAAI,CAAC,CA2CzB;IAED;;;;;OAKG;IACH,qBAJW,MAAM,WACN,cAAc,GACZ,OAAO,CAAC,IAAI,CAAC,CAwBzB;IAED,6BAA6B;IAC7B,8BAIC;IADC,6CAA4E;IAG9E,+BA0BC;IAED;;;;;OAKG;IACH,2BAJW,cAAc,EAAE,aAChB,MAAM,GAAG,SAAS,GAChB,OAAO,CAAC,IAAI,CAAC,CA8BzB;IAED,4BAA4B;IAC5B,0CA2EC;IAED;;;OAGG;IACH,gCAFW,aAAa,EAAE,QAYzB;IAED;;;;;OAKG;IACH,oBAJW,MAAM,WACN,cAAc,GACZ,IAAI,GAAG,MAAM,CASzB;IAED;;;;OAIG;IACH,qBAHW,cAAc,GACZ,MAAM,GAAG,IAAI,CAsBzB;IAED;;;OAGG;IACH,iCAFW,KAAK,QAMf;CACF;yBApeY;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAC;6BAGjB,OAAO,iBAAiB,EAAE,kBAAkB,GAAG;IACvD,cAAc,CAAC,EAAE,MAAM;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAC,CAAA;CACrC,GAAG,MAAM;4BAEC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAC;6BAChD;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;IAAC,OAAO,EAAE,cAAc,CAAA;CAAC;mCACxE;IAAC,OAAO,EAAE,KAAK,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,cAAc,CAAA;KAAC,CAAC,CAAA;CAAC;oCAC5D;IAAC,SAAS,EAAE,aAAa,EAAE,CAAA;CAAC;6BAC5B,CAAC,cAAc,EAAE,MAAM,EAAE,CAAC;6BArBb,eAAe;kCACV,YAAY"}
|