ember-inspector 4.13.1-alpha.2024.8.9 → 4.13.1-alpha.2025.6.8
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/README.md +10 -2
- package/app/components/app-picker.hbs +2 -2
- package/app/components/component-tree-item.hbs +13 -13
- package/app/components/component-tree-toolbar.hbs +3 -3
- package/app/components/{date-property-field.js → date-property-field.ts} +6 -5
- package/app/components/deprecation-item-source.hbs +1 -1
- package/app/components/deprecation-item.hbs +1 -1
- package/app/components/deprecations-toolbar.hbs +1 -1
- package/app/components/item-types.hbs +7 -7
- package/app/components/list-cell.hbs +3 -3
- package/app/components/list-content.hbs +4 -3
- package/app/components/list-content.ts +96 -0
- package/app/components/list.hbs +3 -3
- package/app/components/list.js +7 -7
- package/app/components/model-types-toolbar.hbs +3 -3
- package/app/components/object-inspector/dependent-keys.hbs +4 -4
- package/app/components/object-inspector/errors.hbs +4 -4
- package/app/components/object-inspector/properties-all.hbs +1 -1
- package/app/components/object-inspector/properties-grouped.hbs +5 -5
- package/app/components/object-inspector/property.hbs +16 -16
- package/app/components/object-inspector/property.ts +26 -17
- package/app/components/object-inspector/sort-properties.js +12 -4
- package/app/components/object-inspector.hbs +8 -8
- package/app/components/object-inspector.js +1 -1
- package/app/components/promise-item.hbs +11 -11
- package/app/components/promise-item.js +8 -6
- package/app/components/promise-tree-toolbar.hbs +5 -5
- package/app/components/records-toolbar.hbs +2 -2
- package/app/components/render-item.hbs +4 -4
- package/app/components/render-item.ts +12 -9
- package/app/components/render-tree-toolbar.hbs +1 -1
- package/app/components/route-cell-name.hbs +1 -1
- package/app/components/route-cell-name.js +3 -2
- package/app/components/route-tree-toolbar.hbs +2 -2
- package/app/components/scroll-container.js +2 -0
- package/app/components/side-nav.hbs +5 -5
- package/app/components/side-nav.js +1 -1
- package/app/computed/{debounce.js → debounce.ts} +7 -5
- package/app/config/environment.d.ts +5 -2
- package/app/controllers/app-config.js +1 -0
- package/app/controllers/application.js +33 -34
- package/app/controllers/component-tree.js +3 -2
- package/app/controllers/container-type.js +2 -1
- package/app/controllers/container-types/{index.js → index.ts} +5 -2
- package/app/controllers/container-types.js +3 -6
- package/app/controllers/deprecations.js +16 -11
- package/app/controllers/libraries.js +1 -0
- package/app/controllers/model-types.js +1 -0
- package/app/controllers/promise-tree.ts +149 -0
- package/app/controllers/records.js +18 -26
- package/app/controllers/{render-tree.js → render-tree.ts} +54 -45
- package/app/controllers/route-tree.js +7 -5
- package/app/helpers/build-style.js +1 -1
- package/app/initializers/setup.js +1 -1
- package/app/libs/promise-assembler.ts +249 -0
- package/app/libs/resizable-columns.js +10 -10
- package/app/models/{promise.js → promise.ts} +72 -69
- package/app/{router.js → router.ts} +1 -1
- package/app/routes/app-detected.js +3 -5
- package/app/routes/application.js +6 -12
- package/app/routes/deprecations.js +7 -16
- package/app/routes/launch.js +2 -1
- package/app/routes/libraries.js +2 -1
- package/app/routes/model-type.js +2 -3
- package/app/routes/model-types.ts +57 -0
- package/app/routes/promise-tree.ts +63 -0
- package/app/routes/records.ts +78 -0
- package/app/routes/render-tree.ts +93 -0
- package/app/routes/route-tree.js +0 -1
- package/app/routes/{tab.js → tab.ts} +9 -2
- package/app/routes/whats-new.js +1 -1
- package/app/services/adapters/{basic.js → basic.ts} +36 -30
- package/app/services/adapters/{bookmarklet.js → bookmarklet.ts} +17 -24
- package/app/services/adapters/{chrome.js → chrome.ts} +1 -2
- package/app/services/adapters/{web-extension.js → web-extension.ts} +43 -46
- package/app/services/adapters/websocket.ts +40 -0
- package/app/services/layout.ts +88 -0
- package/app/services/port.ts +195 -0
- package/app/services/storage/{local.js → local.ts} +7 -20
- package/app/services/storage/{memory.js → memory.ts} +6 -21
- package/app/services/{storage.js → storage.ts} +9 -20
- package/app/styles/base.scss +4 -2
- package/app/styles/colors.scss +33 -31
- package/app/styles/component_tree.scss +56 -51
- package/app/styles/dropdown.scss +2 -2
- package/app/styles/ember-table.scss +3 -3
- package/app/styles/mixin.scss +26 -26
- package/app/styles/object_inspector.scss +22 -21
- package/app/styles/utils.scss +408 -122
- package/app/templates/application.hbs +11 -11
- package/app/templates/component-tree.hbs +1 -1
- package/app/templates/deprecations.hbs +2 -3
- package/app/templates/info.hbs +10 -10
- package/app/templates/promise-tree.hbs +1 -1
- package/app/templates/render-tree.hbs +1 -1
- package/app/templates/route-tree.hbs +1 -1
- package/app/utils/escape-reg-exp.ts +3 -2
- package/app/utils/nullish.ts +7 -0
- package/app/utils/parse-text.ts +4 -5
- package/app/utils/truncate.js +0 -1
- package/config/ember-cli-update.json +5 -3
- package/config/ember-try.js +117 -72
- package/config/environment.js +1 -1
- package/config/optional-features.json +2 -1
- package/dist/bookmarklet/load_inspector.js +30 -11
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.443.86a005e528b587663b78.js +1135 -0
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.443.86a005e528b587663b78.js.LICENSE.txt +18 -0
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.524.c8707b06d2f496a0d15d.js +40 -0
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.582.6d68f76dc5c8ba2b48a8.js +42 -0
- package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.css +150 -155
- package/dist/bookmarklet/panes-3-16-0/assets/ember-inspector.js +486 -590
- package/dist/bookmarklet/panes-3-16-0/assets/svg/ellipsis.svg +3 -3
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-bug.svg +1 -1
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-components.svg +2 -2
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-container.svg +1 -1
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-data.svg +1 -1
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-deprecations.svg +3 -3
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-info.svg +3 -3
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-promises.svg +2 -2
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-render-performance.svg +2 -2
- package/dist/bookmarklet/panes-3-16-0/assets/svg/nav-route-tree.svg +7 -7
- package/dist/bookmarklet/panes-3-16-0/assets/vendor.css +147 -148
- package/dist/bookmarklet/panes-3-16-0/assets/vendor.js +5153 -5980
- package/dist/bookmarklet/panes-3-16-0/ember_debug.js +250 -268
- package/dist/bookmarklet/panes-3-16-0/index.html +3 -4
- package/dist/chrome/background.js +26 -21
- package/dist/chrome/boot.js +1 -1
- package/dist/chrome/content-script.js +11 -11
- package/dist/chrome/devtools.js +12 -3
- package/dist/chrome/manifest.json +2 -2
- package/dist/chrome/options.js +17 -12
- package/dist/chrome/panes-3-16-0/assets/chunk.443.86a005e528b587663b78.js +1135 -0
- package/dist/chrome/panes-3-16-0/assets/chunk.443.86a005e528b587663b78.js.LICENSE.txt +18 -0
- package/dist/chrome/panes-3-16-0/assets/chunk.524.c8707b06d2f496a0d15d.js +40 -0
- package/dist/chrome/panes-3-16-0/assets/chunk.582.6d68f76dc5c8ba2b48a8.js +42 -0
- package/dist/chrome/panes-3-16-0/assets/ember-inspector.css +150 -155
- package/dist/chrome/panes-3-16-0/assets/ember-inspector.js +486 -590
- package/dist/chrome/panes-3-16-0/assets/svg/ellipsis.svg +3 -3
- package/dist/chrome/panes-3-16-0/assets/svg/nav-bug.svg +1 -1
- package/dist/chrome/panes-3-16-0/assets/svg/nav-components.svg +2 -2
- package/dist/chrome/panes-3-16-0/assets/svg/nav-container.svg +1 -1
- package/dist/chrome/panes-3-16-0/assets/svg/nav-data.svg +1 -1
- package/dist/chrome/panes-3-16-0/assets/svg/nav-deprecations.svg +3 -3
- package/dist/chrome/panes-3-16-0/assets/svg/nav-info.svg +3 -3
- package/dist/chrome/panes-3-16-0/assets/svg/nav-promises.svg +2 -2
- package/dist/chrome/panes-3-16-0/assets/svg/nav-render-performance.svg +2 -2
- package/dist/chrome/panes-3-16-0/assets/svg/nav-route-tree.svg +7 -7
- package/dist/chrome/panes-3-16-0/assets/vendor.css +147 -148
- package/dist/chrome/panes-3-16-0/assets/vendor.js +5153 -5980
- package/dist/chrome/panes-3-16-0/ember_debug.js +250 -268
- package/dist/chrome/panes-3-16-0/index.html +3 -4
- package/dist/chrome/scripts/in-page-script.js +19 -13
- package/dist/firefox/background.js +26 -21
- package/dist/firefox/boot.js +1 -1
- package/dist/firefox/content-script.js +11 -11
- package/dist/firefox/devtools.js +12 -3
- package/dist/firefox/manifest.json +2 -2
- package/dist/firefox/options.js +17 -12
- package/dist/firefox/panes-3-16-0/assets/chunk.443.86a005e528b587663b78.js +1135 -0
- package/dist/firefox/panes-3-16-0/assets/chunk.443.86a005e528b587663b78.js.LICENSE.txt +18 -0
- package/dist/firefox/panes-3-16-0/assets/chunk.524.c8707b06d2f496a0d15d.js +40 -0
- package/dist/firefox/panes-3-16-0/assets/chunk.582.6d68f76dc5c8ba2b48a8.js +42 -0
- package/dist/firefox/panes-3-16-0/assets/ember-inspector.css +150 -155
- package/dist/firefox/panes-3-16-0/assets/ember-inspector.js +486 -590
- package/dist/firefox/panes-3-16-0/assets/svg/ellipsis.svg +3 -3
- package/dist/firefox/panes-3-16-0/assets/svg/nav-bug.svg +1 -1
- package/dist/firefox/panes-3-16-0/assets/svg/nav-components.svg +2 -2
- package/dist/firefox/panes-3-16-0/assets/svg/nav-container.svg +1 -1
- package/dist/firefox/panes-3-16-0/assets/svg/nav-data.svg +1 -1
- package/dist/firefox/panes-3-16-0/assets/svg/nav-deprecations.svg +3 -3
- package/dist/firefox/panes-3-16-0/assets/svg/nav-info.svg +3 -3
- package/dist/firefox/panes-3-16-0/assets/svg/nav-promises.svg +2 -2
- package/dist/firefox/panes-3-16-0/assets/svg/nav-render-performance.svg +2 -2
- package/dist/firefox/panes-3-16-0/assets/svg/nav-route-tree.svg +7 -7
- package/dist/firefox/panes-3-16-0/assets/vendor.css +147 -148
- package/dist/firefox/panes-3-16-0/assets/vendor.js +5153 -5980
- package/dist/firefox/panes-3-16-0/ember_debug.js +250 -268
- package/dist/firefox/panes-3-16-0/index.html +3 -4
- package/dist/firefox/scripts/in-page-script.js +19 -13
- package/dist/websocket/assets/chunk.443.86a005e528b587663b78.js +1135 -0
- package/dist/websocket/assets/chunk.443.86a005e528b587663b78.js.LICENSE.txt +18 -0
- package/dist/websocket/assets/chunk.524.c8707b06d2f496a0d15d.js +40 -0
- package/dist/websocket/assets/chunk.582.6d68f76dc5c8ba2b48a8.js +42 -0
- package/dist/websocket/assets/ember-inspector.css +150 -155
- package/dist/websocket/assets/ember-inspector.js +486 -590
- package/dist/websocket/assets/svg/ellipsis.svg +3 -3
- package/dist/websocket/assets/svg/nav-bug.svg +1 -1
- package/dist/websocket/assets/svg/nav-components.svg +2 -2
- package/dist/websocket/assets/svg/nav-container.svg +1 -1
- package/dist/websocket/assets/svg/nav-data.svg +1 -1
- package/dist/websocket/assets/svg/nav-deprecations.svg +3 -3
- package/dist/websocket/assets/svg/nav-info.svg +3 -3
- package/dist/websocket/assets/svg/nav-promises.svg +2 -2
- package/dist/websocket/assets/svg/nav-render-performance.svg +2 -2
- package/dist/websocket/assets/svg/nav-route-tree.svg +7 -7
- package/dist/websocket/assets/vendor.css +147 -148
- package/dist/websocket/assets/vendor.js +5153 -5980
- package/dist/websocket/ember_debug.js +250 -268
- package/dist/websocket/index.html +3 -4
- package/ember-cli-build.js +11 -11
- package/ember_debug/adapters/basic.js +2 -1
- package/ember_debug/adapters/bookmarklet.js +1 -0
- package/ember_debug/adapters/firefox.js +3 -3
- package/ember_debug/adapters/web-extension.js +2 -1
- package/ember_debug/data-debug.js +5 -6
- package/ember_debug/deprecation-debug.js +8 -8
- package/ember_debug/general-debug.js +1 -1
- package/ember_debug/libs/capture-render-tree.js +0 -1
- package/ember_debug/libs/promise-assembler.js +1 -0
- package/ember_debug/libs/render-tree.js +13 -12
- package/ember_debug/libs/source-map.js +5 -4
- package/ember_debug/libs/view-inspection.js +12 -12
- package/ember_debug/main.js +1 -1
- package/ember_debug/models/profile-manager.js +2 -1
- package/ember_debug/object-inspector.js +19 -18
- package/ember_debug/port.js +1 -0
- package/ember_debug/promise-debug.js +1 -1
- package/ember_debug/route-debug.js +3 -2
- package/ember_debug/services/session.js +1 -1
- package/ember_debug/utils/classify.js +1 -1
- package/ember_debug/utils/ember/debug.js +2 -0
- package/ember_debug/utils/ember/loader.js +2 -2
- package/ember_debug/utils/ember/runloop.js +2 -0
- package/ember_debug/utils/ember-object-names.js +2 -2
- package/ember_debug/utils/ember.js +9 -3
- package/ember_debug/utils/evented.js +1 -1
- package/ember_debug/utils/get-object-name.js +2 -2
- package/ember_debug/utils/rsvp.js +1 -0
- package/ember_debug/utils/type-check.js +5 -1
- package/ember_debug/vendor/startup-wrapper.js +4 -1
- package/ember_debug/view-debug.js +3 -2
- package/eslint.config.mjs +172 -0
- package/gulpfile.js +1 -1
- package/lib/ui/addon/components/drag-handle.hbs +4 -4
- package/lib/ui/addon/components/drag-handle.js +3 -1
- package/lib/ui/addon/components/empty-message.hbs +1 -1
- package/lib/ui/addon/components/error-page.hbs +3 -3
- package/lib/ui/addon/components/resizable-column.js +1 -1
- package/lib/ui/addon/components/toolbar-clear-button.hbs +1 -1
- package/lib/ui/addon/components/toolbar-reload-button.hbs +1 -1
- package/lib/ui/addon/components/toolbar-search-field.hbs +2 -2
- package/lib/ui/addon/styles/_disclosure-triangle.scss +3 -1
- package/lib/ui/addon/styles/_drag-handle.scss +7 -7
- package/lib/ui/addon/styles/_empty-message.scss +1 -1
- package/lib/ui/addon/styles/_error-page.scss +8 -7
- package/lib/ui/addon/styles/_list.scss +46 -45
- package/lib/ui/addon/styles/_nav.scss +29 -27
- package/lib/ui/addon/styles/_object-inspector-toggle.scss +5 -5
- package/lib/ui/addon/styles/_pill.scss +4 -4
- package/lib/ui/addon/styles/_send-to-console.scss +1 -1
- package/lib/ui/addon/styles/_split.scss +17 -20
- package/lib/ui/addon/styles/addon.scss +13 -13
- package/lib/ui/addon/styles/toolbar/_checkbox.scss +5 -5
- package/lib/ui/addon/styles/toolbar/_icon-button.scss +44 -25
- package/lib/ui/addon/styles/toolbar/_index.scss +6 -5
- package/lib/ui/addon/styles/toolbar/_radio.scss +10 -10
- package/lib/ui/addon/styles/toolbar/_search.scss +5 -3
- package/package.json +85 -86
- package/public/assets/svg/ellipsis.svg +3 -3
- package/public/assets/svg/nav-bug.svg +1 -1
- package/public/assets/svg/nav-components.svg +2 -2
- package/public/assets/svg/nav-container.svg +1 -1
- package/public/assets/svg/nav-data.svg +1 -1
- package/public/assets/svg/nav-deprecations.svg +3 -3
- package/public/assets/svg/nav-info.svg +3 -3
- package/public/assets/svg/nav-promises.svg +2 -2
- package/public/assets/svg/nav-render-performance.svg +2 -2
- package/public/assets/svg/nav-route-tree.svg +7 -7
- package/scripts/download-panes.js +1 -1
- package/skeletons/bookmarklet/load_inspector.js +30 -11
- package/skeletons/web-extension/background.js +26 -21
- package/skeletons/web-extension/boot.js +1 -1
- package/skeletons/web-extension/content-script.js +11 -11
- package/skeletons/web-extension/devtools.js +12 -3
- package/skeletons/web-extension/manifest.json +2 -2
- package/skeletons/web-extension/options.js +17 -12
- package/skeletons/web-extension/scripts/in-page-script.js +19 -13
- package/testem.js +0 -1
- package/tests/acceptance/app-picker-test.js +4 -4
- package/tests/acceptance/component-tree-test.js +43 -57
- package/tests/acceptance/container-test.js +0 -2
- package/tests/acceptance/data-test.js +8 -10
- package/tests/acceptance/deprecation-test.js +8 -12
- package/tests/acceptance/info-test.js +2 -2
- package/tests/acceptance/object-inspector-test.js +62 -110
- package/tests/acceptance/promise-test.js +1 -11
- package/tests/acceptance/render-tree-test.js +2 -2
- package/tests/acceptance/route-tree-test.js +12 -14
- package/tests/acceptance/whats-new-test.js +3 -3
- package/tests/ember_debug/container-debug-test.js +4 -4
- package/tests/ember_debug/deprecation-debug-test.js +8 -5
- package/tests/ember_debug/ember-debug-test.js +1 -4
- package/tests/ember_debug/object-inspector-test.js +44 -44
- package/tests/ember_debug/profile-manager-test.js +140 -165
- package/tests/ember_debug/profile-node-test.js +3 -3
- package/tests/ember_debug/promise-assembler-test.js +12 -9
- package/tests/ember_debug/promise-debug-test.js +5 -6
- package/tests/ember_debug/route-debug-test.js +8 -7
- package/tests/ember_debug/view-debug-test.js +179 -181
- package/tests/helpers/{index.js → index.ts} +6 -5
- package/tests/helpers/setup-ember-debug-test.js +14 -0
- package/tests/integration/injection-test.js +12 -13
- package/tests/test-adapter.js +15 -15
- package/tests/test-helper.js +6 -1
- package/tests/unit/check-current-route-test.js +0 -4
- package/tests/unit/resizable-columns-test.js +53 -51
- package/tests/unit/utils/parse-text-test.js +3 -3
- package/tests/unit/utils/search-match-test.js +5 -5
- package/tests/unit/utils/type-check-test.js +22 -0
- package/tsconfig.json +3 -1
- package/types/ember-inspector/index.d.ts +2 -1
- package/types/global.d.ts +1 -7
- package/.editorconfig +0 -19
- package/.ember-cli +0 -15
- package/.eslintignore +0 -33
- package/.eslintrc.js +0 -86
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -30
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
- package/.github/dependabot.yml +0 -14
- package/.github/pull_request_template.md +0 -4
- package/.github/workflows/build.yml +0 -339
- package/.github/workflows/plan-release.yml +0 -83
- package/.github/workflows/publish.yml +0 -60
- package/.prettierignore +0 -25
- package/.prettierrc.js +0 -14
- package/.release-plan.json +0 -17
- package/.stylelintrc.js +0 -3
- package/.template-lintrc.js +0 -12
- package/.tool-versions +0 -2
- package/.watchmanconfig +0 -3
- package/app/components/.gitkeep +0 -0
- package/app/components/list-content.js +0 -130
- package/app/controllers/.gitkeep +0 -0
- package/app/controllers/promise-tree.js +0 -130
- package/app/helpers/.gitkeep +0 -0
- package/app/libs/promise-assembler.js +0 -169
- package/app/models/.gitkeep +0 -0
- package/app/routes/.gitkeep +0 -0
- package/app/routes/model-types.js +0 -47
- package/app/routes/promise-tree.js +0 -48
- package/app/routes/records.js +0 -55
- package/app/routes/render-tree.js +0 -66
- package/app/services/adapters/websocket.js +0 -31
- package/app/services/layout.js +0 -39
- package/app/services/port.js +0 -90
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.143.143ca772b0b28102c74a.js +0 -28
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.178.b50e140d1ed8777b583e.js +0 -9
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.359.0be5d21f60d2b5d6d423.js +0 -2620
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.359.0be5d21f60d2b5d6d423.js.LICENSE.txt +0 -67
- package/dist/chrome/panes-3-16-0/assets/chunk.143.143ca772b0b28102c74a.js +0 -28
- package/dist/chrome/panes-3-16-0/assets/chunk.178.b50e140d1ed8777b583e.js +0 -9
- package/dist/chrome/panes-3-16-0/assets/chunk.359.0be5d21f60d2b5d6d423.js +0 -2620
- package/dist/chrome/panes-3-16-0/assets/chunk.359.0be5d21f60d2b5d6d423.js.LICENSE.txt +0 -67
- package/dist/firefox/panes-3-16-0/assets/chunk.143.143ca772b0b28102c74a.js +0 -28
- package/dist/firefox/panes-3-16-0/assets/chunk.178.b50e140d1ed8777b583e.js +0 -9
- package/dist/firefox/panes-3-16-0/assets/chunk.359.0be5d21f60d2b5d6d423.js +0 -2620
- package/dist/firefox/panes-3-16-0/assets/chunk.359.0be5d21f60d2b5d6d423.js.LICENSE.txt +0 -67
- package/dist/websocket/assets/chunk.143.143ca772b0b28102c74a.js +0 -28
- package/dist/websocket/assets/chunk.178.b50e140d1ed8777b583e.js +0 -9
- package/dist/websocket/assets/chunk.359.0be5d21f60d2b5d6d423.js +0 -2620
- package/dist/websocket/assets/chunk.359.0be5d21f60d2b5d6d423.js.LICENSE.txt +0 -67
- package/ember_debug/.eslintrc.js +0 -13
- package/tests/helpers/trigger-port.js +0 -6
- package/tests/unit/.gitkeep +0 -0
- /package/app/{app.js → app.ts} +0 -0
- /package/app/controllers/{info.js → info.ts} +0 -0
- /package/app/services/adapters/{firefox.js → firefox.ts} +0 -0
@@ -1,17 +1,24 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call */
|
2
|
+
// @ts-expect-error This does not seem to be typed
|
1
3
|
import { observes } from '@ember-decorators/object';
|
2
|
-
import { or, equal, not } from '@ember/object/computed';
|
3
4
|
import { once } from '@ember/runloop';
|
4
|
-
import { typeOf
|
5
|
-
|
5
|
+
import { typeOf } from '@ember/utils';
|
6
|
+
|
7
|
+
// eslint-disable-next-line ember/no-computed-properties-in-native-classes
|
6
8
|
import EmberObject, { computed } from '@ember/object';
|
7
|
-
import
|
9
|
+
import { tracked } from '@glimmer/tracking';
|
10
|
+
|
11
|
+
import { TrackedArray } from 'tracked-built-ins';
|
12
|
+
|
13
|
+
import escapeRegExp from '../utils/escape-reg-exp';
|
14
|
+
import { isNullish } from '../utils/nullish';
|
8
15
|
|
9
16
|
const dateComputed = function () {
|
10
17
|
return computed({
|
11
18
|
get() {
|
12
19
|
return null;
|
13
20
|
},
|
14
|
-
set(
|
21
|
+
set(_key, date: Date | number | string) {
|
15
22
|
if (typeOf(date) === 'date') {
|
16
23
|
return date;
|
17
24
|
} else if (typeof date === 'number' || typeof date === 'string') {
|
@@ -22,61 +29,63 @@ const dateComputed = function () {
|
|
22
29
|
});
|
23
30
|
};
|
24
31
|
|
25
|
-
export default class
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
32
|
+
export default class PromiseModel extends EmberObject {
|
33
|
+
children = new TrackedArray<PromiseModel>([]);
|
34
|
+
declare label?: string;
|
35
|
+
declare guid: string;
|
36
|
+
declare state: string;
|
37
|
+
// @ts-expect-error TODO: figure out types for this
|
38
|
+
@dateComputed() createdAt;
|
39
|
+
// @ts-expect-error TODO: figure out types for this
|
40
|
+
@dateComputed() settledAt;
|
41
|
+
|
42
|
+
@tracked branchLabel = '';
|
43
|
+
@tracked isExpanded = false;
|
44
|
+
@tracked isManuallyExpanded?: boolean = undefined;
|
45
|
+
@tracked parent: PromiseModel | null = null;
|
46
|
+
|
47
|
+
get level(): number {
|
48
|
+
const parent = this.parent;
|
37
49
|
if (!parent) {
|
38
50
|
return 0;
|
39
51
|
}
|
40
|
-
return parent.
|
52
|
+
return parent.level + 1;
|
41
53
|
}
|
42
54
|
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
@equal('state', 'fulfilled')
|
47
|
-
isFulfilled;
|
55
|
+
get isSettled() {
|
56
|
+
return this.isFulfilled || this.isRejected;
|
57
|
+
}
|
48
58
|
|
49
|
-
|
50
|
-
|
59
|
+
get isFulfilled() {
|
60
|
+
return this.state === 'fulfilled';
|
61
|
+
}
|
51
62
|
|
52
|
-
|
53
|
-
|
63
|
+
get isRejected() {
|
64
|
+
return this.state === 'rejected';
|
65
|
+
}
|
54
66
|
|
55
|
-
get
|
56
|
-
return
|
67
|
+
get isPending() {
|
68
|
+
return !this.isSettled;
|
57
69
|
}
|
58
70
|
|
59
|
-
@computed('isPending', 'children.@each.pendingBranch')
|
60
71
|
get pendingBranch() {
|
61
72
|
return this.recursiveState('isPending', 'pendingBranch');
|
62
73
|
}
|
63
74
|
|
64
|
-
@computed('isRejected', 'children.@each.rejectedBranch')
|
65
75
|
get rejectedBranch() {
|
66
76
|
return this.recursiveState('isRejected', 'rejectedBranch');
|
67
77
|
}
|
68
78
|
|
69
|
-
@computed('isFulfilled', 'children.@each.fulfilledBranch')
|
70
79
|
get fulfilledBranch() {
|
71
80
|
return this.recursiveState('isFulfilled', 'fulfilledBranch');
|
72
81
|
}
|
73
82
|
|
74
|
-
recursiveState(prop, cp) {
|
75
|
-
if (this
|
83
|
+
recursiveState(prop: keyof PromiseModel, cp: keyof PromiseModel) {
|
84
|
+
if (this[prop]) {
|
76
85
|
return true;
|
77
86
|
}
|
78
|
-
for (let i = 0; i < this.
|
79
|
-
if (this.children.
|
87
|
+
for (let i = 0; i < this.children.length; i++) {
|
88
|
+
if (this.children.at(i)?.[cp]) {
|
80
89
|
return true;
|
81
90
|
}
|
82
91
|
}
|
@@ -92,9 +101,9 @@ export default class Promise extends EmberObject {
|
|
92
101
|
return;
|
93
102
|
}
|
94
103
|
if (
|
95
|
-
(this.pendingBranch && !this.
|
96
|
-
(this.fulfilledBranch && !this.
|
97
|
-
(this.rejectedBranch && !this.
|
104
|
+
(this.pendingBranch && !this.parent.pendingBranch) ||
|
105
|
+
(this.fulfilledBranch && !this.parent.fulfilledBranch) ||
|
106
|
+
(this.rejectedBranch && !this.parent.rejectedBranch)
|
98
107
|
) {
|
99
108
|
this.parent.notifyPropertyChange('fulfilledBranch');
|
100
109
|
this.parent.notifyPropertyChange('rejectedBranch');
|
@@ -108,31 +117,29 @@ export default class Promise extends EmberObject {
|
|
108
117
|
this.addBranchLabel(this.label, true);
|
109
118
|
}
|
110
119
|
|
111
|
-
addBranchLabel(label, replace) {
|
112
|
-
if (
|
120
|
+
addBranchLabel(label?: string, replace?: boolean) {
|
121
|
+
if (isNullish(label)) {
|
113
122
|
return;
|
114
123
|
}
|
115
124
|
if (replace) {
|
116
|
-
this.
|
125
|
+
this.branchLabel = label;
|
117
126
|
} else {
|
118
|
-
this.
|
127
|
+
this.branchLabel = `${this.branchLabel} ${label}`;
|
119
128
|
}
|
120
129
|
|
121
|
-
|
130
|
+
const parent = this.parent;
|
122
131
|
if (parent) {
|
123
132
|
parent.addBranchLabel(label);
|
124
133
|
}
|
125
134
|
}
|
126
135
|
|
127
|
-
|
128
|
-
|
129
|
-
matches(val) {
|
136
|
+
matches(val: string) {
|
130
137
|
return !!this.branchLabel
|
131
138
|
.toLowerCase()
|
132
139
|
.match(new RegExp(`.*${escapeRegExp(val.toLowerCase())}.*`));
|
133
140
|
}
|
134
141
|
|
135
|
-
matchesExactly(val) {
|
142
|
+
matchesExactly(val: string) {
|
136
143
|
return !!(this.label || '')
|
137
144
|
.toLowerCase()
|
138
145
|
.match(new RegExp(`.*${escapeRegExp(val.toLowerCase())}.*`));
|
@@ -140,21 +147,18 @@ export default class Promise extends EmberObject {
|
|
140
147
|
|
141
148
|
// EXPANDED / COLLAPSED PROMISES
|
142
149
|
|
143
|
-
isExpanded = false;
|
144
|
-
|
145
|
-
isManuallyExpanded = undefined;
|
146
|
-
|
147
150
|
// eslint-disable-next-line ember/no-observers
|
148
151
|
@observes('isPending', 'isFulfilled', 'isRejected', 'parent')
|
149
152
|
stateOrParentChanged() {
|
150
|
-
|
153
|
+
const parent = this.parent;
|
151
154
|
if (parent) {
|
155
|
+
// eslint-disable-next-line ember/no-runloop
|
152
156
|
once(parent, 'recalculateExpanded');
|
153
157
|
}
|
154
158
|
}
|
155
159
|
|
156
|
-
_findTopParent() {
|
157
|
-
|
160
|
+
_findTopParent(): PromiseModel {
|
161
|
+
const parent = this.parent;
|
158
162
|
if (!parent) {
|
159
163
|
return this;
|
160
164
|
} else {
|
@@ -167,36 +171,35 @@ export default class Promise extends EmberObject {
|
|
167
171
|
if (this.isManuallyExpanded !== undefined) {
|
168
172
|
isExpanded = this.isManuallyExpanded;
|
169
173
|
} else {
|
170
|
-
|
171
|
-
for (let i = 0
|
172
|
-
|
173
|
-
if (child.
|
174
|
+
const children = this._allChildren();
|
175
|
+
for (let i = 0; i < children.length; i++) {
|
176
|
+
const child = children[i] as PromiseModel;
|
177
|
+
if (child.isRejected) {
|
174
178
|
isExpanded = true;
|
175
179
|
}
|
176
|
-
if (child.
|
180
|
+
if (child.isPending && !child.parent!.isPending) {
|
177
181
|
isExpanded = true;
|
178
182
|
}
|
179
183
|
if (isExpanded) {
|
180
184
|
break;
|
181
185
|
}
|
182
186
|
}
|
183
|
-
|
187
|
+
const parents = this._allParents();
|
184
188
|
if (isExpanded) {
|
185
189
|
parents.forEach((parent) => {
|
186
190
|
parent.set('isExpanded', true);
|
187
191
|
});
|
188
|
-
} else if (this.
|
192
|
+
} else if (this.parent?.isExpanded) {
|
189
193
|
this.parent.recalculateExpanded();
|
190
194
|
}
|
191
195
|
}
|
192
|
-
this.
|
196
|
+
this.isExpanded = isExpanded;
|
193
197
|
return isExpanded;
|
194
198
|
}
|
195
199
|
|
196
|
-
|
197
|
-
get isVisible() {
|
200
|
+
get isVisible(): boolean {
|
198
201
|
if (this.parent) {
|
199
|
-
return this.
|
202
|
+
return this.parent.isExpanded && this.parent.isVisible;
|
200
203
|
}
|
201
204
|
return true;
|
202
205
|
}
|
@@ -204,13 +207,13 @@ export default class Promise extends EmberObject {
|
|
204
207
|
_allChildren() {
|
205
208
|
let children = [...this.children];
|
206
209
|
children.forEach((item) => {
|
207
|
-
children = [...children, item._allChildren()];
|
210
|
+
children = [...children, ...item._allChildren()];
|
208
211
|
});
|
209
212
|
return children;
|
210
213
|
}
|
211
214
|
|
212
|
-
_allParents() {
|
213
|
-
|
215
|
+
_allParents(): Array<PromiseModel> {
|
216
|
+
const parent = this.parent;
|
214
217
|
if (parent) {
|
215
218
|
return [parent, ...parent._allParents()];
|
216
219
|
} else {
|
@@ -16,18 +16,16 @@ export default class AppDetectedRoute extends Route {
|
|
16
16
|
* @return {Promise}
|
17
17
|
*/
|
18
18
|
model() {
|
19
|
-
let port = this.port;
|
20
|
-
|
21
19
|
return new Promise((resolve) => {
|
22
20
|
this.applicationBooted = ({ booted }) => {
|
23
21
|
if (booted) {
|
24
|
-
port.off('general:applicationBooted', this.applicationBooted);
|
22
|
+
this.port.off('general:applicationBooted', this.applicationBooted);
|
25
23
|
this.applicationBooted = null;
|
26
24
|
resolve();
|
27
25
|
}
|
28
26
|
};
|
29
|
-
port.on('general:applicationBooted', this.applicationBooted);
|
30
|
-
port.send('general:applicationBooted');
|
27
|
+
this.port.on('general:applicationBooted', this.applicationBooted);
|
28
|
+
this.port.send('general:applicationBooted');
|
31
29
|
});
|
32
30
|
}
|
33
31
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
/* eslint-disable ember/no-controller-access-in-routes */
|
1
2
|
import { inject as service } from '@ember/service';
|
2
3
|
import { action, set } from '@ember/object';
|
3
4
|
import Route from '@ember/routing/route';
|
@@ -54,7 +55,6 @@ export default class ApplicationRoute extends Route {
|
|
54
55
|
NativeArray.apply(details);
|
55
56
|
details.forEach(arrayize);
|
56
57
|
|
57
|
-
// eslint-disable-next-line ember/no-controller-access-in-routes
|
58
58
|
let controller = this.controller;
|
59
59
|
|
60
60
|
if (options.parentObject) {
|
@@ -63,23 +63,17 @@ export default class ApplicationRoute extends Route {
|
|
63
63
|
controller.activateMixinDetails(name, objectId, details, errors);
|
64
64
|
}
|
65
65
|
|
66
|
-
// eslint-disable-next-line ember/no-controller-access-in-routes
|
67
66
|
this.controller.showInspector();
|
68
67
|
}
|
69
68
|
|
70
69
|
setDeprecationCount(message) {
|
71
|
-
// eslint-disable-next-line ember/no-controller-access-in-routes
|
72
70
|
this.controller.set('deprecationCount', message.count);
|
73
71
|
}
|
74
72
|
|
75
|
-
// eslint-enable ember/no-controller-access-in-routes
|
76
|
-
|
77
73
|
updateProperty(options) {
|
78
|
-
if (this.
|
79
|
-
const detail = this.
|
80
|
-
|
81
|
-
);
|
82
|
-
let property = detail.properties.findBy('name', options.property);
|
74
|
+
if (this.controller.mixinDetails?.mixins) {
|
75
|
+
const detail = this.controller.mixinDetails.mixins.at(options.mixinIndex);
|
76
|
+
let property = detail.properties.find((x) => x.name === options.property);
|
83
77
|
if (!property) return;
|
84
78
|
set(property, 'value', options.value);
|
85
79
|
if (options.dependentKeys) {
|
@@ -89,7 +83,8 @@ export default class ApplicationRoute extends Route {
|
|
89
83
|
}
|
90
84
|
|
91
85
|
updateErrors(options) {
|
92
|
-
let mixinDetails = this.
|
86
|
+
let mixinDetails = this.controller.mixinDetails;
|
87
|
+
|
93
88
|
if (mixinDetails) {
|
94
89
|
if (mixinDetails.objectId === options.objectId) {
|
95
90
|
set(mixinDetails, 'errors', options.errors);
|
@@ -98,7 +93,6 @@ export default class ApplicationRoute extends Route {
|
|
98
93
|
}
|
99
94
|
|
100
95
|
droppedObject(message) {
|
101
|
-
// eslint-disable-next-line ember/no-controller-access-in-routes
|
102
96
|
this.controller.droppedObject(message.objectId);
|
103
97
|
}
|
104
98
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
import { inject as service } from '@ember/service';
|
2
2
|
import { Promise } from 'rsvp';
|
3
|
-
import {
|
3
|
+
import { setProperties } from '@ember/object';
|
4
4
|
import TabRoute from 'ember-inspector/routes/tab';
|
5
5
|
|
6
6
|
export default class DeprecationsRoute extends TabRoute {
|
@@ -32,30 +32,21 @@ export default class DeprecationsRoute extends TabRoute {
|
|
32
32
|
this.port.off(
|
33
33
|
'deprecation:deprecationsAdded',
|
34
34
|
this,
|
35
|
-
this.deprecationsAdded
|
35
|
+
this.deprecationsAdded,
|
36
36
|
);
|
37
37
|
}
|
38
38
|
|
39
39
|
deprecationsAdded(message) {
|
40
|
-
// eslint-disable-next-line ember/no-controller-access-in-routes
|
41
|
-
let { deprecations } = this.controller;
|
42
|
-
|
43
40
|
message.deprecations.forEach((item) => {
|
44
|
-
let record = deprecations.
|
41
|
+
let record = this.controller.deprecations.find(
|
42
|
+
(deprecation) => deprecation.id === item.id,
|
43
|
+
);
|
44
|
+
|
45
45
|
if (record) {
|
46
46
|
setProperties(record, item);
|
47
47
|
} else {
|
48
|
-
deprecations.
|
48
|
+
this.controller.deprecations.push(item);
|
49
49
|
}
|
50
50
|
});
|
51
51
|
}
|
52
|
-
|
53
|
-
@action
|
54
|
-
clear() {
|
55
|
-
// eslint-disable-next-line ember/no-controller-access-in-routes
|
56
|
-
let { deprecations } = this.controller;
|
57
|
-
|
58
|
-
this.port.send('deprecation:clear');
|
59
|
-
deprecations.clear();
|
60
|
-
}
|
61
52
|
}
|
package/app/routes/launch.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { inject as service } from '@ember/service';
|
2
|
+
// eslint-disable-next-line ember/no-computed-properties-in-native-classes
|
2
3
|
import { readOnly } from '@ember/object/computed';
|
3
4
|
import Route from '@ember/routing/route';
|
4
5
|
import RSVP from 'rsvp';
|
@@ -54,7 +55,7 @@ export default class LaunchRoute extends Route {
|
|
54
55
|
},
|
55
56
|
function () {
|
56
57
|
resolve();
|
57
|
-
}
|
58
|
+
},
|
58
59
|
);
|
59
60
|
});
|
60
61
|
} else {
|
package/app/routes/libraries.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { inject as service } from '@ember/service';
|
2
|
+
// eslint-disable-next-line ember/no-computed-properties-in-native-classes
|
2
3
|
import { readOnly } from '@ember/object/computed';
|
3
4
|
import { Promise } from 'rsvp';
|
4
5
|
import TabRoute from 'ember-inspector/routes/tab';
|
@@ -14,7 +15,7 @@ export default class LibrariesRoute extends TabRoute {
|
|
14
15
|
const port = this.port;
|
15
16
|
return new Promise((resolve) => {
|
16
17
|
port.one('general:libraries', (message) => {
|
17
|
-
message.libraries.
|
18
|
+
message.libraries.splice(0, 0, {
|
18
19
|
name: 'Ember Inspector',
|
19
20
|
version,
|
20
21
|
});
|
package/app/routes/model-type.js
CHANGED
@@ -7,9 +7,8 @@ export default class ModelTypeRoute extends Route {
|
|
7
7
|
|
8
8
|
model(params) {
|
9
9
|
return new Promise((resolve) => {
|
10
|
-
const type = this.modelFor('model-types').
|
11
|
-
|
12
|
-
decodeURIComponent(params.type_id)
|
10
|
+
const type = this.modelFor('model-types').find(
|
11
|
+
(x) => x.name === decodeURIComponent(params.type_id),
|
13
12
|
);
|
14
13
|
if (type) {
|
15
14
|
resolve(type);
|
@@ -0,0 +1,57 @@
|
|
1
|
+
import type Controller from '@ember/controller';
|
2
|
+
import { inject as service } from '@ember/service';
|
3
|
+
import { set } from '@ember/object';
|
4
|
+
import type Transition from '@ember/routing/transition';
|
5
|
+
|
6
|
+
import { TrackedArray } from 'tracked-built-ins';
|
7
|
+
|
8
|
+
import type PortService from '../services/port';
|
9
|
+
import TabRoute from '../routes/tab';
|
10
|
+
import type { Message, ModelType } from '../services/port';
|
11
|
+
|
12
|
+
export default class ModelTypesRoute extends TabRoute {
|
13
|
+
@service declare port: PortService;
|
14
|
+
|
15
|
+
model() {
|
16
|
+
return new Promise<TrackedArray<ModelType>>((resolve) => {
|
17
|
+
this.port.one('data:modelTypesAdded', function (message: Message) {
|
18
|
+
resolve(new TrackedArray(message.modelTypes));
|
19
|
+
});
|
20
|
+
this.port.send('data:getModelTypes');
|
21
|
+
});
|
22
|
+
}
|
23
|
+
|
24
|
+
setupController(
|
25
|
+
controller: Controller,
|
26
|
+
model: unknown,
|
27
|
+
transition: Transition,
|
28
|
+
) {
|
29
|
+
super.setupController(controller, model, transition);
|
30
|
+
|
31
|
+
this.port.on('data:modelTypesAdded', this, this.addModelTypes);
|
32
|
+
this.port.on('data:modelTypesUpdated', this, this.updateModelTypes);
|
33
|
+
}
|
34
|
+
|
35
|
+
deactivate() {
|
36
|
+
this.port.off('data:modelTypesAdded', this, this.addModelTypes);
|
37
|
+
this.port.off('data:modelTypesUpdated', this, this.updateModelTypes);
|
38
|
+
this.port.send('data:releaseModelTypes');
|
39
|
+
}
|
40
|
+
|
41
|
+
get _currentModel(): Array<ModelType> {
|
42
|
+
return this.modelFor(this.routeName) as Array<ModelType>;
|
43
|
+
}
|
44
|
+
|
45
|
+
addModelTypes = (message: Message) => {
|
46
|
+
this._currentModel.push(...message.modelTypes);
|
47
|
+
};
|
48
|
+
|
49
|
+
updateModelTypes = (message: Message) => {
|
50
|
+
message.modelTypes.forEach((modelType) => {
|
51
|
+
const currentType = this._currentModel.find(
|
52
|
+
(x) => x.objectId === modelType.objectId,
|
53
|
+
);
|
54
|
+
set(currentType as ModelType, 'count', modelType.count);
|
55
|
+
});
|
56
|
+
};
|
57
|
+
}
|
@@ -0,0 +1,63 @@
|
|
1
|
+
import { inject as service } from '@ember/service';
|
2
|
+
import { Promise } from 'rsvp';
|
3
|
+
import type Transition from '@ember/routing/transition';
|
4
|
+
|
5
|
+
import PromiseAssembler from '../libs/promise-assembler';
|
6
|
+
import type PortService from '../services/port';
|
7
|
+
import TabRoute from '../routes/tab';
|
8
|
+
import type PromiseTreeController from '../controllers/promise-tree';
|
9
|
+
|
10
|
+
export default class PromiseTreeRoute extends TabRoute {
|
11
|
+
@service declare port: PortService;
|
12
|
+
|
13
|
+
assembler: PromiseAssembler;
|
14
|
+
declare controller: PromiseTreeController;
|
15
|
+
|
16
|
+
constructor() {
|
17
|
+
// eslint-disable-next-line prefer-rest-params
|
18
|
+
super(...arguments);
|
19
|
+
|
20
|
+
this.assembler = PromiseAssembler.create({
|
21
|
+
port: this.port,
|
22
|
+
});
|
23
|
+
}
|
24
|
+
|
25
|
+
model() {
|
26
|
+
// block rendering until first batch arrives
|
27
|
+
// Helps prevent flashing of "please refresh the page"
|
28
|
+
return new Promise((resolve) => {
|
29
|
+
this.assembler.one('firstMessageReceived', () => {
|
30
|
+
resolve(this.assembler.topSort);
|
31
|
+
});
|
32
|
+
this.assembler.start();
|
33
|
+
});
|
34
|
+
}
|
35
|
+
|
36
|
+
setupController(
|
37
|
+
controller: PromiseTreeController,
|
38
|
+
model: unknown,
|
39
|
+
transition: Transition,
|
40
|
+
) {
|
41
|
+
super.setupController(controller, model, transition);
|
42
|
+
|
43
|
+
this.port.on(
|
44
|
+
'promise:instrumentWithStack',
|
45
|
+
this,
|
46
|
+
this.setInstrumentWithStack,
|
47
|
+
);
|
48
|
+
this.port.send('promise:getInstrumentWithStack');
|
49
|
+
}
|
50
|
+
|
51
|
+
deactivate() {
|
52
|
+
this.assembler.stop();
|
53
|
+
this.port.off(
|
54
|
+
'promise:instrumentWithStack',
|
55
|
+
this,
|
56
|
+
this.setInstrumentWithStack,
|
57
|
+
);
|
58
|
+
}
|
59
|
+
|
60
|
+
setInstrumentWithStack = (message: { instrumentWithStack: boolean }) => {
|
61
|
+
this.controller.instrumentWithStack = message.instrumentWithStack;
|
62
|
+
};
|
63
|
+
}
|
@@ -0,0 +1,78 @@
|
|
1
|
+
import type Controller from '@ember/controller';
|
2
|
+
import type Transition from '@ember/routing/transition';
|
3
|
+
import { inject as service } from '@ember/service';
|
4
|
+
import { set } from '@ember/object';
|
5
|
+
|
6
|
+
import { TrackedArray } from 'tracked-built-ins';
|
7
|
+
|
8
|
+
import type PortService from '../services/port';
|
9
|
+
import type { Message, ModelType, RecordType } from '../services/port';
|
10
|
+
import TabRoute from '../routes/tab';
|
11
|
+
// @ts-expect-error TODO: not yet typed
|
12
|
+
import type RecordsController from '../controllers/records';
|
13
|
+
|
14
|
+
export default class RecordsRoute extends TabRoute {
|
15
|
+
@service declare port: PortService;
|
16
|
+
|
17
|
+
declare controller: RecordsController;
|
18
|
+
|
19
|
+
model() {
|
20
|
+
return new TrackedArray([]);
|
21
|
+
}
|
22
|
+
|
23
|
+
setupController(
|
24
|
+
controller: Controller,
|
25
|
+
model: unknown,
|
26
|
+
transition: Transition,
|
27
|
+
) {
|
28
|
+
super.setupController(controller, model, transition);
|
29
|
+
|
30
|
+
const type = this.modelFor('model_type') as ModelType;
|
31
|
+
|
32
|
+
// @ts-expect-error TODO this should be resolved when we type the controller
|
33
|
+
controller.modelType = type;
|
34
|
+
|
35
|
+
this.port.on('data:recordsAdded', this, this.addRecords);
|
36
|
+
this.port.on('data:recordsUpdated', this, this.updateRecords);
|
37
|
+
this.port.on('data:recordsRemoved', this, this.removeRecords);
|
38
|
+
this.port.one('data:filters', this, (message: Message) => {
|
39
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
40
|
+
this.controller.filters = new TrackedArray(message.filters);
|
41
|
+
});
|
42
|
+
this.port.send('data:getFilters');
|
43
|
+
this.port.send('data:getRecords', { objectId: type.objectId });
|
44
|
+
}
|
45
|
+
|
46
|
+
deactivate() {
|
47
|
+
this.port.off('data:recordsAdded', this, this.addRecords);
|
48
|
+
this.port.off('data:recordsUpdated', this, this.updateRecords);
|
49
|
+
this.port.off('data:recordsRemoved', this, this.removeRecords);
|
50
|
+
this.port.send('data:releaseRecords');
|
51
|
+
}
|
52
|
+
|
53
|
+
get _currentModel(): Array<RecordType> {
|
54
|
+
return this.modelFor(this.routeName) as Array<RecordType>;
|
55
|
+
}
|
56
|
+
|
57
|
+
addRecords = (message: Message) => {
|
58
|
+
this._currentModel.push(...message.records);
|
59
|
+
};
|
60
|
+
|
61
|
+
removeRecords = (message: Message) => {
|
62
|
+
this._currentModel.splice(message.index, message.count);
|
63
|
+
};
|
64
|
+
|
65
|
+
updateRecords = (message: Message) => {
|
66
|
+
message.records.forEach((record) => {
|
67
|
+
const currentRecord = this._currentModel.find(
|
68
|
+
(x) => x.objectId === record.objectId,
|
69
|
+
);
|
70
|
+
if (currentRecord) {
|
71
|
+
set(currentRecord, 'columnValues', record.columnValues);
|
72
|
+
set(currentRecord, 'filterValues', record.filterValues);
|
73
|
+
set(currentRecord, 'searchIndex', record.searchIndex);
|
74
|
+
set(currentRecord, 'color', record.color);
|
75
|
+
}
|
76
|
+
});
|
77
|
+
};
|
78
|
+
}
|