ember-inspector 4.13.1-alpha.2024.8.8 → 4.13.1-alpha.2025.6.7
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.6a5edcbbcf29cbe1b167.js +40 -0
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.582.b77d8494154b524e9f91.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.6a5edcbbcf29cbe1b167.js +40 -0
- package/dist/chrome/panes-3-16-0/assets/chunk.582.b77d8494154b524e9f91.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.6a5edcbbcf29cbe1b167.js +40 -0
- package/dist/firefox/panes-3-16-0/assets/chunk.582.b77d8494154b524e9f91.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.6a5edcbbcf29cbe1b167.js +40 -0
- package/dist/websocket/assets/chunk.582.b77d8494154b524e9f91.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.152107b52f1d9b56abd2.js +0 -28
- package/dist/bookmarklet/panes-3-16-0/assets/chunk.178.fd17fd3a54b4e3a24554.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.152107b52f1d9b56abd2.js +0 -28
- package/dist/chrome/panes-3-16-0/assets/chunk.178.fd17fd3a54b4e3a24554.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.152107b52f1d9b56abd2.js +0 -28
- package/dist/firefox/panes-3-16-0/assets/chunk.178.fd17fd3a54b4e3a24554.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.152107b52f1d9b56abd2.js +0 -28
- package/dist/websocket/assets/chunk.178.fd17fd3a54b4e3a24554.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
@@ -0,0 +1,93 @@
|
|
1
|
+
import EmberObject, { set } from '@ember/object';
|
2
|
+
import { inject as service } from '@ember/service';
|
3
|
+
import { Promise } from 'rsvp';
|
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 type RenderTreeController from '../controllers/render-tree';
|
10
|
+
import TabRoute from './tab';
|
11
|
+
|
12
|
+
export interface Profile {
|
13
|
+
children: Array<Profile>;
|
14
|
+
name: string;
|
15
|
+
}
|
16
|
+
|
17
|
+
export interface RenderTreeModel {
|
18
|
+
isHighlightSupported: boolean;
|
19
|
+
profiles: Array<Profile>;
|
20
|
+
}
|
21
|
+
|
22
|
+
export default class RenderTreeRoute extends TabRoute {
|
23
|
+
@service declare port: PortService;
|
24
|
+
|
25
|
+
declare controller: RenderTreeController;
|
26
|
+
|
27
|
+
model() {
|
28
|
+
return new Promise((resolve) => {
|
29
|
+
this.port.one(
|
30
|
+
'render:profilesAdded',
|
31
|
+
function ({ profiles, isHighlightSupported }: RenderTreeModel) {
|
32
|
+
resolve(
|
33
|
+
EmberObject.create({
|
34
|
+
// @ts-expect-error TODO: fix this
|
35
|
+
profiles: new TrackedArray(profiles),
|
36
|
+
isHighlightSupported,
|
37
|
+
}),
|
38
|
+
);
|
39
|
+
},
|
40
|
+
);
|
41
|
+
this.port.send('render:watchProfiles');
|
42
|
+
});
|
43
|
+
}
|
44
|
+
|
45
|
+
setupController(
|
46
|
+
controller: RenderTreeController,
|
47
|
+
model: RenderTreeModel,
|
48
|
+
transition: Transition,
|
49
|
+
) {
|
50
|
+
super.setupController(controller, model, transition);
|
51
|
+
|
52
|
+
if (model.profiles.length === 0) {
|
53
|
+
controller.initialEmpty = true;
|
54
|
+
}
|
55
|
+
|
56
|
+
this.port.on('render:profilesUpdated', this, this.profilesUpdated);
|
57
|
+
this.port.on('render:profilesAdded', this, this.profilesAdded);
|
58
|
+
}
|
59
|
+
|
60
|
+
deactivate(transition: Transition) {
|
61
|
+
super.deactivate(transition);
|
62
|
+
|
63
|
+
this.port.off('render:profilesUpdated', this, this.profilesUpdated);
|
64
|
+
this.port.off('render:profilesAdded', this, this.profilesAdded);
|
65
|
+
this.port.send('render:releaseProfiles');
|
66
|
+
}
|
67
|
+
|
68
|
+
profilesUpdated = (message: RenderTreeModel) => {
|
69
|
+
set(this.controller.model, 'profiles', message.profiles);
|
70
|
+
};
|
71
|
+
|
72
|
+
profilesAdded = (message: RenderTreeModel) => {
|
73
|
+
const currentProfiles = this.controller.model.profiles;
|
74
|
+
const profiles = message.profiles;
|
75
|
+
if (
|
76
|
+
message.isHighlightSupported !== undefined &&
|
77
|
+
message.isHighlightSupported !==
|
78
|
+
this.controller.model.isHighlightSupported
|
79
|
+
) {
|
80
|
+
set(
|
81
|
+
this.controller.model,
|
82
|
+
'isHighlightSupported',
|
83
|
+
message.isHighlightSupported,
|
84
|
+
);
|
85
|
+
}
|
86
|
+
|
87
|
+
// @ts-expect-error TODO: fix this type error
|
88
|
+
currentProfiles.push(profiles);
|
89
|
+
if (currentProfiles.length > 100) {
|
90
|
+
set(this.controller.model, 'profiles', currentProfiles.slice(0, 100));
|
91
|
+
}
|
92
|
+
};
|
93
|
+
}
|
package/app/routes/route-tree.js
CHANGED
@@ -1,14 +1,21 @@
|
|
1
|
+
import type Controller from '@ember/controller';
|
1
2
|
import Route from '@ember/routing/route';
|
2
3
|
import { scheduleOnce } from '@ember/runloop';
|
4
|
+
import type Transition from '@ember/routing/transition';
|
3
5
|
|
4
6
|
export default class TabRoute extends Route {
|
5
|
-
setupController(
|
6
|
-
|
7
|
+
setupController(
|
8
|
+
controller: Controller,
|
9
|
+
model: unknown,
|
10
|
+
transition: Transition,
|
11
|
+
) {
|
12
|
+
super.setupController(controller, model, transition);
|
7
13
|
|
8
14
|
function setToolbarContainer() {
|
9
15
|
controller.set('toolbarContainer', document.querySelector('#toolbar'));
|
10
16
|
}
|
11
17
|
|
18
|
+
// eslint-disable-next-line ember/no-runloop
|
12
19
|
scheduleOnce('afterRender', this, setToolbarContainer);
|
13
20
|
}
|
14
21
|
}
|
package/app/routes/whats-new.js
CHANGED
@@ -44,7 +44,7 @@ export default class WhatsNewRoute extends TabRoute {
|
|
44
44
|
|
45
45
|
let ref = version.indexOf('alpha') === -1 ? `v${version}` : 'main';
|
46
46
|
let url = `https://raw.githubusercontent.com/emberjs/ember-inspector/${encodeURIComponent(
|
47
|
-
ref
|
47
|
+
ref,
|
48
48
|
)}/CHANGELOG.md`;
|
49
49
|
|
50
50
|
return fetch(url)
|
@@ -14,22 +14,27 @@
|
|
14
14
|
import Service, { inject as service } from '@ember/service';
|
15
15
|
import { action } from '@ember/object';
|
16
16
|
import { tracked } from '@glimmer/tracking';
|
17
|
+
import type { AnyFn } from '@ember/-internals/utility-types';
|
17
18
|
import config from 'ember-inspector/config/environment';
|
19
|
+
import type PortService from '../port';
|
20
|
+
import type { Message } from '../port';
|
18
21
|
|
19
22
|
export default class Basic extends Service {
|
20
|
-
@service port;
|
23
|
+
@service declare port: PortService;
|
21
24
|
|
22
|
-
|
25
|
+
_messageCallbacks: Array<AnyFn>;
|
23
26
|
name = 'basic';
|
24
27
|
|
28
|
+
@tracked canOpenResource = false;
|
29
|
+
|
25
30
|
/**
|
26
31
|
* Called when the adapter is created (when
|
27
32
|
* the inspector app boots).
|
28
|
-
*
|
29
|
-
* @method init
|
30
33
|
*/
|
31
|
-
|
32
|
-
|
34
|
+
constructor() {
|
35
|
+
// eslint-disable-next-line prefer-rest-params
|
36
|
+
super(...arguments);
|
37
|
+
|
33
38
|
this._messageCallbacks = [];
|
34
39
|
this._checkVersion();
|
35
40
|
}
|
@@ -41,20 +46,22 @@ export default class Basic extends Service {
|
|
41
46
|
* Ember version and needs to switch to an inspector version
|
42
47
|
* that does.
|
43
48
|
*
|
44
|
-
* @method _checkVersion
|
45
49
|
* @private
|
46
50
|
*/
|
47
51
|
_checkVersion() {
|
48
|
-
this.onMessageReceived((message) => {
|
49
|
-
|
52
|
+
this.onMessageReceived((message: Message) => {
|
53
|
+
const { name, version } = message;
|
50
54
|
if (name === 'version-mismatch') {
|
51
|
-
|
52
|
-
|
55
|
+
const previousVersions = config.previousEmberVersionsSupported;
|
56
|
+
const [fromVersion, tillVersion] = config.emberVersionsSupported;
|
53
57
|
let neededVersion;
|
54
58
|
|
55
|
-
if (compareVersion(version, fromVersion) === -1) {
|
59
|
+
if (compareVersion(version as string, fromVersion) === -1) {
|
56
60
|
neededVersion = previousVersions[previousVersions.length - 1];
|
57
|
-
} else if (
|
61
|
+
} else if (
|
62
|
+
tillVersion &&
|
63
|
+
compareVersion(version as string, tillVersion) !== -1
|
64
|
+
) {
|
58
65
|
neededVersion = tillVersion;
|
59
66
|
} else {
|
60
67
|
return;
|
@@ -73,35 +80,35 @@ export default class Basic extends Service {
|
|
73
80
|
* to switch to an older/new inspector version
|
74
81
|
* that supports this Ember version.
|
75
82
|
*
|
76
|
-
* @
|
77
|
-
* @param {String} neededVersion (The version to go to)
|
83
|
+
* @param _neededVersion (The version to go to)
|
78
84
|
*/
|
79
|
-
onVersionMismatch() {}
|
85
|
+
onVersionMismatch(_neededVersion?: string) {}
|
80
86
|
|
81
87
|
/**
|
82
88
|
Used to send messages to EmberDebug
|
83
89
|
|
84
|
-
@param
|
90
|
+
@param _message the message to send
|
85
91
|
**/
|
86
|
-
sendMessage() {}
|
92
|
+
sendMessage(_message: Partial<Message>) {}
|
87
93
|
|
88
94
|
/**
|
89
95
|
Register functions to be called
|
90
96
|
when a message from EmberDebug is received
|
91
97
|
**/
|
92
|
-
onMessageReceived(callback) {
|
98
|
+
onMessageReceived(callback: AnyFn) {
|
93
99
|
this._messageCallbacks.push(callback);
|
94
100
|
}
|
95
101
|
|
96
|
-
_messageReceived(...args) {
|
102
|
+
_messageReceived(...args: Array<unknown>) {
|
97
103
|
this._messageCallbacks.forEach((callback) => {
|
98
104
|
callback(...args);
|
99
105
|
});
|
100
106
|
}
|
101
107
|
|
108
|
+
reloadTab?(): void;
|
102
109
|
// Called when the "Reload" is clicked by the user
|
103
110
|
willReload() {}
|
104
|
-
openResource
|
111
|
+
openResource(_file: string, _line: number) {}
|
105
112
|
|
106
113
|
@action
|
107
114
|
refreshPage() {
|
@@ -126,15 +133,14 @@ export default class Basic extends Service {
|
|
126
133
|
* 0 if version1 == version2
|
127
134
|
* 1 if version1 > version2
|
128
135
|
*
|
129
|
-
* @
|
130
|
-
* @param {String} version2
|
131
|
-
* @return {Boolean} result of the comparison
|
136
|
+
* @return result of the comparison
|
132
137
|
*/
|
133
|
-
function compareVersion(version1, version2) {
|
134
|
-
|
135
|
-
|
138
|
+
function compareVersion(version1: string, version2: string) {
|
139
|
+
const v1 = cleanupVersion(version1).split('.');
|
140
|
+
const v2 = cleanupVersion(version2).split('.');
|
136
141
|
for (let i = 0; i < 3; i++) {
|
137
|
-
|
142
|
+
// @ts-expect-error TODO: refactor this to make TS happy
|
143
|
+
const compared = compare(+v1[i], +v2[i]);
|
138
144
|
if (compared !== 0) {
|
139
145
|
return compared;
|
140
146
|
}
|
@@ -143,11 +149,11 @@ function compareVersion(version1, version2) {
|
|
143
149
|
}
|
144
150
|
|
145
151
|
/* Remove -alpha, -beta, etc from versions */
|
146
|
-
function cleanupVersion(version) {
|
152
|
+
function cleanupVersion(version: string) {
|
147
153
|
return version.replace(/-.*/g, '');
|
148
154
|
}
|
149
155
|
|
150
|
-
function compare(val, number) {
|
156
|
+
function compare(val: number, number: number) {
|
151
157
|
if (val === number) {
|
152
158
|
return 0;
|
153
159
|
} else if (val < number) {
|
@@ -1,53 +1,46 @@
|
|
1
|
-
/* eslint-disable no-useless-escape */
|
2
|
-
import { computed } from '@ember/object';
|
3
|
-
|
4
1
|
import BasicAdapter from './basic';
|
2
|
+
import type { Message } from '../port';
|
5
3
|
|
6
4
|
export default class Bookmarklet extends BasicAdapter {
|
7
5
|
name = 'bookmarklet';
|
8
6
|
|
9
7
|
/**
|
10
8
|
* Called when the adapter is created.
|
11
|
-
*
|
12
|
-
* @method init
|
13
9
|
*/
|
14
|
-
|
10
|
+
constructor() {
|
11
|
+
// @ts-expect-error Using ...arguments is fine.
|
12
|
+
// eslint-disable-next-line prefer-rest-params
|
13
|
+
super(...arguments);
|
14
|
+
|
15
15
|
this._connect();
|
16
|
-
return super.init(...arguments);
|
17
16
|
}
|
18
17
|
|
19
|
-
@computed
|
20
18
|
get inspectedWindow() {
|
21
|
-
return window.opener || window.parent;
|
19
|
+
return (window.opener as Window | undefined) || window.parent;
|
22
20
|
}
|
23
21
|
|
24
|
-
@computed
|
25
22
|
get inspectedWindowURL() {
|
26
23
|
return loadPageVar('inspectedWindowURL');
|
27
24
|
}
|
28
25
|
|
29
|
-
sendMessage(
|
30
|
-
|
31
|
-
this.inspectedWindow.postMessage(options, this.inspectedWindowURL);
|
26
|
+
sendMessage(message?: Partial<Message>) {
|
27
|
+
this.inspectedWindow.postMessage(message ?? {}, this.inspectedWindowURL);
|
32
28
|
}
|
33
29
|
|
34
30
|
/**
|
35
31
|
* Redirect to the correct inspector version.
|
36
|
-
*
|
37
|
-
* @method onVersionMismatch
|
38
|
-
* @param {String} goToVersion
|
39
32
|
*/
|
40
|
-
onVersionMismatch(goToVersion) {
|
33
|
+
onVersionMismatch(goToVersion: string) {
|
41
34
|
this.sendMessage({ name: 'version-mismatch', version: goToVersion });
|
42
35
|
window.location.href = `../panes-${goToVersion.replace(
|
43
36
|
/\./g,
|
44
|
-
'-'
|
37
|
+
'-',
|
45
38
|
)}/index.html${window.location.search}`;
|
46
39
|
}
|
47
40
|
|
48
41
|
_connect() {
|
49
42
|
window.addEventListener('message', (e) => {
|
50
|
-
|
43
|
+
const message = e.data as Message;
|
51
44
|
if (e.origin !== this.inspectedWindowURL) {
|
52
45
|
return;
|
53
46
|
}
|
@@ -62,17 +55,17 @@ export default class Bookmarklet extends BasicAdapter {
|
|
62
55
|
}
|
63
56
|
}
|
64
57
|
|
65
|
-
function loadPageVar(sVar) {
|
58
|
+
function loadPageVar(sVar: string) {
|
66
59
|
return decodeURI(
|
67
60
|
window.location.search.replace(
|
68
61
|
new RegExp(
|
69
62
|
`^(?:.*[&\\?]${encodeURI(sVar).replace(
|
70
63
|
/[\.\+\*]/g,
|
71
|
-
'\\$&'
|
64
|
+
'\\$&',
|
72
65
|
)}(?:\\=([^&]*))?)?.*$`,
|
73
|
-
'i'
|
66
|
+
'i',
|
74
67
|
),
|
75
|
-
'$1'
|
76
|
-
)
|
68
|
+
'$1',
|
69
|
+
),
|
77
70
|
);
|
78
71
|
}
|
@@ -5,8 +5,7 @@ export default class Chrome extends WebExtension {
|
|
5
5
|
name = 'chrome';
|
6
6
|
@tracked canOpenResource = true;
|
7
7
|
|
8
|
-
openResource(file, line) {
|
9
|
-
/*global chrome */
|
8
|
+
openResource(file: string, line: number) {
|
10
9
|
// For some reason it opens the line after the one specified
|
11
10
|
chrome.devtools.panels.openResource(file, line - 1);
|
12
11
|
}
|
@@ -1,11 +1,10 @@
|
|
1
|
-
/* globals chrome */
|
2
|
-
import { computed } from '@ember/object';
|
3
1
|
import { tracked } from '@glimmer/tracking';
|
4
2
|
|
5
3
|
import BasicAdapter from './basic';
|
6
4
|
import config from 'ember-inspector/config/environment';
|
5
|
+
import type { Message } from '../port';
|
7
6
|
|
8
|
-
let emberDebug = null;
|
7
|
+
let emberDebug: string | null = null;
|
9
8
|
|
10
9
|
export default class WebExtension extends BasicAdapter {
|
11
10
|
@tracked canOpenResource = false;
|
@@ -13,27 +12,27 @@ export default class WebExtension extends BasicAdapter {
|
|
13
12
|
|
14
13
|
/**
|
15
14
|
* Called when the adapter is created.
|
16
|
-
*
|
17
|
-
* @method init
|
18
15
|
*/
|
19
|
-
|
16
|
+
constructor(...args: unknown[]) {
|
17
|
+
// @ts-expect-error ignore
|
18
|
+
super(...args);
|
19
|
+
|
20
20
|
this._connect();
|
21
21
|
this._handleReload();
|
22
22
|
this._setThemeColors();
|
23
23
|
|
24
|
-
Promise.resolve().then(() => this._sendEmberDebug());
|
25
|
-
|
26
|
-
return super.init(...arguments);
|
24
|
+
void Promise.resolve().then(() => this._sendEmberDebug());
|
27
25
|
}
|
28
26
|
|
29
|
-
sendMessage(
|
30
|
-
|
31
|
-
this._chromePort.postMessage(options);
|
27
|
+
sendMessage(message?: Partial<Message>) {
|
28
|
+
this._chromePort.postMessage(message ?? {});
|
32
29
|
}
|
33
30
|
|
34
31
|
_sendEmberDebug() {
|
35
|
-
|
36
|
-
|
32
|
+
const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
|
33
|
+
const url = chrome.runtime.getURL(
|
34
|
+
`/panes-${minimumVersion}/ember_debug.js`,
|
35
|
+
);
|
37
36
|
// first send to all frames in current tab
|
38
37
|
this.sendMessage({
|
39
38
|
from: 'devtools',
|
@@ -44,23 +43,23 @@ export default class WebExtension extends BasicAdapter {
|
|
44
43
|
this.onMessageReceived((message, sender) => {
|
45
44
|
if (message === 'ember-content-script-ready') {
|
46
45
|
this.sendMessage({
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-assignment
|
47
|
+
frameId: sender.frameId,
|
47
48
|
from: 'devtools',
|
49
|
+
tabId: chrome.devtools.inspectedWindow.tabId,
|
48
50
|
type: 'inject-ember-debug',
|
49
51
|
value: url,
|
50
|
-
tabId: chrome.devtools.inspectedWindow.tabId,
|
51
|
-
frameId: sender.frameId,
|
52
52
|
});
|
53
53
|
}
|
54
54
|
});
|
55
55
|
}
|
56
56
|
|
57
|
-
@computed
|
58
57
|
get _chromePort() {
|
59
58
|
return chrome.runtime.connect();
|
60
59
|
}
|
61
60
|
|
62
61
|
_connect() {
|
63
|
-
|
62
|
+
const chromePort = this._chromePort;
|
64
63
|
chromePort.postMessage({ appId: chrome.devtools.inspectedWindow.tabId });
|
65
64
|
|
66
65
|
chromePort.onMessage.addListener((...args) => {
|
@@ -68,36 +67,38 @@ export default class WebExtension extends BasicAdapter {
|
|
68
67
|
});
|
69
68
|
|
70
69
|
chromePort.onDisconnect.addListener(() => {
|
71
|
-
this.notifyPropertyChange('_chromePort');
|
72
70
|
this._connect();
|
73
71
|
});
|
74
72
|
}
|
75
73
|
|
76
74
|
_handleReload() {
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
location.reload(true);
|
75
|
+
chrome.devtools.network.onNavigated.addListener(() => {
|
76
|
+
this._injectDebugger();
|
77
|
+
location.reload();
|
81
78
|
});
|
82
79
|
}
|
83
80
|
|
84
81
|
_injectDebugger() {
|
85
|
-
loadEmberDebug().then((emberDebug) => {
|
86
|
-
chrome.devtools.inspectedWindow.eval(
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
82
|
+
void loadEmberDebug().then((emberDebug) => {
|
83
|
+
chrome.devtools.inspectedWindow.eval(
|
84
|
+
emberDebug as string,
|
85
|
+
(success, error) => {
|
86
|
+
if (success === undefined && error) {
|
87
|
+
// eslint-disable-next-line @typescript-eslint/only-throw-error
|
88
|
+
throw error;
|
89
|
+
}
|
90
|
+
},
|
91
|
+
);
|
91
92
|
});
|
92
93
|
}
|
93
94
|
|
94
95
|
_setThemeColors() {
|
95
96
|
// Remove old theme colors to ensure switching themes works
|
96
|
-
document.body.classList.remove('theme
|
97
|
+
document.body.classList.remove('theme-light', 'theme-dark');
|
97
98
|
|
98
|
-
let theme = 'theme
|
99
|
+
let theme = 'theme-light';
|
99
100
|
if (chrome.devtools.panels.themeName === 'dark') {
|
100
|
-
theme = 'theme
|
101
|
+
theme = 'theme-dark';
|
101
102
|
}
|
102
103
|
document.body.classList.add(theme);
|
103
104
|
}
|
@@ -108,11 +109,8 @@ export default class WebExtension extends BasicAdapter {
|
|
108
109
|
|
109
110
|
/**
|
110
111
|
* Open the devtools "Elements" or "Sources" tab and select a specific DOM node or function.
|
111
|
-
*
|
112
|
-
* @method inspectJSValue
|
113
|
-
* @param {String} name
|
114
112
|
*/
|
115
|
-
inspectJSValue(name) {
|
113
|
+
inspectJSValue(name: string) {
|
116
114
|
chrome.devtools.inspectedWindow.eval(`
|
117
115
|
inspect(window[${JSON.stringify(name)}]);
|
118
116
|
delete window[${JSON.stringify(name)}];
|
@@ -121,14 +119,11 @@ export default class WebExtension extends BasicAdapter {
|
|
121
119
|
|
122
120
|
/**
|
123
121
|
* Redirect to the correct inspector version.
|
124
|
-
*
|
125
|
-
* @method onVersionMismatch
|
126
|
-
* @param {String} goToVersion
|
127
122
|
*/
|
128
|
-
onVersionMismatch(goToVersion) {
|
123
|
+
onVersionMismatch(goToVersion: string) {
|
129
124
|
window.location.href = `../panes-${goToVersion.replace(
|
130
125
|
/\./g,
|
131
|
-
'-'
|
126
|
+
'-',
|
132
127
|
)}/index.html`;
|
133
128
|
}
|
134
129
|
|
@@ -137,22 +132,24 @@ export default class WebExtension extends BasicAdapter {
|
|
137
132
|
scripts as soon as possible into the new page.
|
138
133
|
*/
|
139
134
|
reloadTab() {
|
140
|
-
loadEmberDebug().then((emberDebug) => {
|
141
|
-
chrome.devtools.inspectedWindow.reload({
|
135
|
+
void loadEmberDebug().then((emberDebug) => {
|
136
|
+
chrome.devtools.inspectedWindow.reload({
|
137
|
+
injectedScript: emberDebug as string,
|
138
|
+
});
|
142
139
|
});
|
143
140
|
}
|
144
141
|
}
|
145
142
|
|
146
143
|
function loadEmberDebug() {
|
147
|
-
|
148
|
-
let xhr;
|
144
|
+
const minimumVersion = config.emberVersionsSupported[0].replace(/\./g, '-');
|
145
|
+
let xhr: XMLHttpRequest;
|
149
146
|
|
150
147
|
return new Promise((resolve) => {
|
151
148
|
if (!emberDebug) {
|
152
149
|
xhr = new XMLHttpRequest();
|
153
150
|
xhr.open(
|
154
151
|
'GET',
|
155
|
-
chrome.runtime.getURL(`/panes-${minimumVersion}/ember_debug.js`)
|
152
|
+
chrome.runtime.getURL(`/panes-${minimumVersion}/ember_debug.js`),
|
156
153
|
);
|
157
154
|
xhr.onload = function () {
|
158
155
|
if (xhr.readyState === 4) {
|
@@ -0,0 +1,40 @@
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
|
2
|
+
import { run } from '@ember/runloop';
|
3
|
+
import BasicAdapter from './basic';
|
4
|
+
import type { Message } from '../port';
|
5
|
+
|
6
|
+
export default class Websocket extends BasicAdapter {
|
7
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
8
|
+
socket: any;
|
9
|
+
|
10
|
+
constructor() {
|
11
|
+
// @ts-expect-error Using ...arguments is fine.
|
12
|
+
// eslint-disable-next-line prefer-rest-params
|
13
|
+
super(...arguments);
|
14
|
+
// @ts-expect-error TODO: figure out how to type this stuff
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
16
|
+
this.socket = window.EMBER_INSPECTOR_CONFIG.remoteDebugSocket;
|
17
|
+
this._connect();
|
18
|
+
}
|
19
|
+
|
20
|
+
sendMessage(message?: Partial<Message>) {
|
21
|
+
this.socket.emit('emberInspectorMessage', message ?? {});
|
22
|
+
}
|
23
|
+
|
24
|
+
_connect() {
|
25
|
+
this.socket.on('emberInspectorMessage', (message: Message) => {
|
26
|
+
// eslint-disable-next-line ember/no-runloop
|
27
|
+
run(() => {
|
28
|
+
this._messageReceived(message);
|
29
|
+
});
|
30
|
+
});
|
31
|
+
}
|
32
|
+
|
33
|
+
_disconnect() {
|
34
|
+
this.socket.removeAllListeners('emberInspectorMessage');
|
35
|
+
}
|
36
|
+
|
37
|
+
willDestroy() {
|
38
|
+
this._disconnect();
|
39
|
+
}
|
40
|
+
}
|