diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ec85371042..ee36536d2f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -104,13 +104,13 @@ jobs: cache: pnpm - run: pnpm install - name: Download panes - working-directory: packages/ember-inspector - run: node scripts/download-panes.js + working-directory: packages/build + run: pnpm panes:download env: EMBER_ENV: production - name: Update manifest.json (nightly) if: github.event_name == 'schedule' - working-directory: packages/ember-inspector + working-directory: packages/build run: | DATE="$(date +"%Y.%-m.%-d")" SHA="${GITHUB_SHA:0:7}" @@ -127,7 +127,7 @@ jobs: .version_name = "\($version) (nightly build \($date) / \($sha))" - name: Update manifest.json (pull request) if: github.event_name == 'pull_request' - working-directory: packages/ember-inspector + working-directory: packages/build run: | SHA="${SHA:0:7}" CONTENT="$(cat "$FILE")" @@ -144,7 +144,7 @@ jobs: SHA: ${{ github.event.pull_request.head.sha }} - name: Update package.json (nightly) if: github.event_name == 'schedule' - working-directory: packages/ember-inspector + working-directory: packages/build run: | DATE="$(date +"%Y.%-m.%-d")" SHA="${GITHUB_SHA:0:7}" @@ -157,7 +157,7 @@ jobs: FILTER: .version += "-alpha.\($date)+\($sha)" - name: Update package.json (pull request) if: github.event_name == 'pull_request' - working-directory: packages/ember-inspector + working-directory: packages/build run: | SHA="${SHA:0:7}" CONTENT="$(cat "$FILE")" @@ -191,22 +191,22 @@ jobs: uses: actions/upload-artifact@v4 with: name: bookmarklet - path: packages/ember-inspector/dist/bookmarklet + path: packages/build/dist/bookmarklet - name: Upload artifacts (Chrome) uses: actions/upload-artifact@v4 with: name: chrome - path: packages/ember-inspector/dist/chrome + path: packages/build/dist/chrome - name: Upload artifacts (Firefox) uses: actions/upload-artifact@v4 with: name: firefox - path: packages/ember-inspector/dist/firefox + path: packages/build/dist/firefox - name: Upload artifacts (npm) uses: actions/upload-artifact@v4 with: name: npm - path: packages/ember-inspector/dist/npm + path: packages/build/dist/npm publish-chrome: name: Publish Chrome extension diff --git a/README.md b/README.md index 5202c45c1f..9c00df599d 100644 --- a/README.md +++ b/README.md @@ -14,11 +14,11 @@ OR: - Clone the repository - cd into the repo directory - run `pnpm install` -- run `pnpm build` to build the `dist` directory +- run `pnpm build:production` to build the `packages/build/dist` directory - Visit `chrome://extensions` in Chrome - Make sure `Developer mode` is checked - Click on 'Load unpacked extension...' -- Choose the `dist/chrome` folder in the cloned repo +- Choose the `packages/build/dist/chrome` folder in the cloned repo - Close and re-open developer tools if it's already open ### Firefox @@ -30,21 +30,21 @@ OR: - Clone the repository - cd into the repo directory - run `pnpm install` -- run `pnpm build` to build the `dist` directory +- run `pnpm build:production` to build the `packages/build/dist` directory - Visit `about:debugging#/runtime/this-firefox` in Firefox - Click on 'Load Temporary Add-on…' -- Choose the `dist/firefox/manifest.json` file in the cloned repo +- Choose the `packages/build/dist/firefox/manifest.json` file in the cloned repo ### Opera - Clone the repository - cd into the repo directory - run `pnpm install` -- run `pnpm build` to build the `dist` directory +- run `pnpm build:production` to build the `packages/build/dist` directory - Visit `chrome://extensions` in Opera - Make sure `Developer mode` is checked - Click on 'Load unpacked extension...' -- Choose the `dist/chrome` folder in the cloned repo +- Choose the `packages/build/dist/chrome` folder in the cloned repo - Close and re-open developer tools if it's already open ### Bookmarklet (All Browsers) diff --git a/package.json b/package.json index 260bef8666..c512b2b106 100644 --- a/package.json +++ b/package.json @@ -7,10 +7,10 @@ "url": "git@github.com:emberjs/ember-inspector.git" }, "scripts": { - "build": "pnpm --filter ember-debug build && pnpm --filter ember-inspector build", + "build": "pnpm --filter ember-debug build && pnpm --filter ember-inspector build && pnpm --filter build build", "build:ember-debug": "pnpm --filter ember-debug build", "build:ember-inspector": "pnpm --filter ember-inspector build", - "build:production": "pnpm --filter ember-debug build && pnpm --filter ember-inspector build:production", + "build:production": "pnpm --filter ember-debug build && pnpm --filter ember-inspector build:production && pnpm --filter build build:production", "lint": "pnpm --parallel -r --aggregate-output lint", "lint:fix": "pnpm --parallel -r --aggregate-output lint:fix", "serve:bookmarklet": "pnpm --filter ember-inspector serve:bookmarklet", diff --git a/packages/build/.gitignore b/packages/build/.gitignore new file mode 100644 index 0000000000..67cec6c323 --- /dev/null +++ b/packages/build/.gitignore @@ -0,0 +1,2 @@ +/dist_prev +/node_modules diff --git a/packages/build/.npmignore b/packages/build/.npmignore new file mode 100644 index 0000000000..fd8c8c4dc3 --- /dev/null +++ b/packages/build/.npmignore @@ -0,0 +1,5 @@ +# Development tooling — not needed in the published package +babel.config.js +ember-cli-build.js +eslint.config.mjs +scripts/ diff --git a/packages/build/.prettierignore b/packages/build/.prettierignore new file mode 100644 index 0000000000..599a164a2d --- /dev/null +++ b/packages/build/.prettierignore @@ -0,0 +1,19 @@ +# unconventional js +/blueprints/*/files/ + +# compiled output +/dist/ +/ember_debug/dist/ + +# misc +/coverage/ +!.* +.*/ + +# ember-try +/.node_modules.ember-try/ + +# vendor +/vendor/ + +/skeletons diff --git a/packages/build/.prettierrc.js b/packages/build/.prettierrc.js new file mode 100644 index 0000000000..fa8e80a86c --- /dev/null +++ b/packages/build/.prettierrc.js @@ -0,0 +1,12 @@ +'use strict'; + +module.exports = { + overrides: [ + { + files: '*.{js,gjs,ts,gts,mjs,mts,cjs,cts}', + options: { + singleQuote: true, + }, + }, + ], +}; diff --git a/packages/build/babel.config.js b/packages/build/babel.config.js new file mode 100644 index 0000000000..db6a5ccbe0 --- /dev/null +++ b/packages/build/babel.config.js @@ -0,0 +1,10 @@ +module.exports = { + plugins: [ + [ + require('@babel/plugin-proposal-decorators').default, + { + legacy: true, + }, + ], + ], +}; diff --git a/packages/build/config/targets.js b/packages/build/config/targets.js new file mode 100644 index 0000000000..1e48e0599f --- /dev/null +++ b/packages/build/config/targets.js @@ -0,0 +1,11 @@ +'use strict'; + +const browsers = [ + 'last 1 Chrome versions', + 'last 1 Firefox versions', + 'last 1 Safari versions', +]; + +module.exports = { + browsers, +}; diff --git a/packages/build/ember-cli-build.js b/packages/build/ember-cli-build.js new file mode 100644 index 0000000000..e7551d3f7f --- /dev/null +++ b/packages/build/ember-cli-build.js @@ -0,0 +1,191 @@ +/* eslint-disable no-undef */ + +'use strict'; +const mergeTrees = require('broccoli-merge-trees'); +const stew = require('broccoli-stew'); +const writeFile = require('broccoli-file-creator'); +const replace = require('broccoli-string-replace'); +const Funnel = require('broccoli-funnel'); +const { mv, rename, rm } = stew; +const { dirname, join } = require('path'); +const emberInspectorPackage = require('ember-inspector/package.json'); + +const { + EMBER_VERSIONS_SUPPORTED, + PREVIOUS_EMBER_VERSIONS_SUPPORTED, +} = require('ember-debug/versions'); + +const emberInspectorDist = join( + dirname(require.resolve('ember-inspector/package.json')), + 'dist', +); + +module.exports = function () { + const { EMBER_INSPECTOR_TAB, EMBER_ENV } = process.env; + const minimumVersion = EMBER_VERSIONS_SUPPORTED[0].replace(/\./g, '-'); + + const emberInspector = new Funnel(join(emberInspectorDist), { + destDir: '.', + }); + + const patterns = [ + { + match: /{{EMBER_INSPECTOR_VERSION}}/g, + replacement: emberInspectorPackage.version, + }, + { + match: /{{TAB_LABEL}}/, + replacement: (() => { + if (EMBER_INSPECTOR_TAB) { + return `Ember [${EMBER_INSPECTOR_TAB}]`; + } else if (EMBER_ENV === 'development') { + return `Ember [DEV]`; + } + + return 'Ember'; + })(), + }, + { + match: /{{PANE_ROOT}}/g, + replacement: `panes-${minimumVersion}`, + }, + { + match: /{{PREVIOUS_EMBER_VERSIONS_SUPPORTED}}/g, + replacement: JSON.stringify(PREVIOUS_EMBER_VERSIONS_SUPPORTED), + }, + { + match: /{{EMBER_VERSIONS_SUPPORTED}}/g, + replacement: JSON.stringify(EMBER_VERSIONS_SUPPORTED), + }, + ]; + + const firefoxBackgroundServiceReplacement = [ + { + match: /"service_worker": "background.js"/g, + replacement: '"scripts": ["background.js"]', + }, + ]; + + const skeletonWebExtension = replace('skeletons/web-extension', { + files: ['*'], + patterns, + }); + + const skeletonFirefoxWebExtension = replace('skeletons/web-extension', { + files: ['*'], + patterns: patterns.concat(firefoxBackgroundServiceReplacement), + }); + + const skeletonBookmarklet = replace('skeletons/bookmarklet', { + files: ['*'], + patterns, + }); + + const webExtensionRoot = `panes-${minimumVersion}`; + + let firefox = mergeTrees([ + mv(emberInspector, webExtensionRoot), + skeletonFirefoxWebExtension, + ]); + + let chrome = mergeTrees([ + mv(emberInspector, webExtensionRoot), + skeletonWebExtension, + ]); + + let bookmarklet = mergeTrees([ + mv(emberInspector, webExtensionRoot), + skeletonBookmarklet, + ]); + + PREVIOUS_EMBER_VERSIONS_SUPPORTED.forEach(function (rawVersion) { + const version = rawVersion.replace(/\./g, '-'); + + if (EMBER_ENV === 'production') { + const prevDist = `dist_prev/${EMBER_ENV}`; + + bookmarklet = mergeTrees([ + mv(`${prevDist}/bookmarklet/panes-${version}`, `panes-${version}`), + bookmarklet, + ]); + + firefox = mergeTrees([ + mv(`${prevDist}/firefox/panes-${version}`, `panes-${version}`), + firefox, + ]); + + chrome = mergeTrees([ + mv(`${prevDist}/chrome/panes-${version}`, `panes-${version}`), + chrome, + ]); + } else { + const file = writeFile( + 'index.html', + 'This Ember version is not supported in development environment.', + ); + + const emberDebugFile = writeFile('ember_debug.js', 'void(0);'); + + chrome = mergeTrees([mv(file, `panes-${version}`), chrome]); + firefox = mergeTrees([mv(file, `panes-${version}`), firefox]); + bookmarklet = mergeTrees([ + mv(file, `panes-${version}`), + mv(emberDebugFile, `panes-${version}`), + bookmarklet, + ]); + } + }); + + const emberDebug = new Funnel( + join(dirname(require.resolve('ember-debug/package.json')), 'dist'), + ); + + // Pass the current dist to the Ember Inspector app. + const dists = { + chrome, + firefox, + bookmarklet, + websocket: emberInspector, + }; + + const debugRoot = { + chrome: webExtensionRoot, + firefox: webExtensionRoot, + bookmarklet: webExtensionRoot, + websocket: '.', + }; + + Object.keys(dists).forEach(function (key) { + dists[key] = replace(dists[key], { + files: ['**/*.js'], + patterns: [ + { + match: /{{EMBER_DIST}}/g, + replacement: key, + }, + ], + }); + + let debug = rename(emberDebug, (relativePath) => { + // rename dist specific entrypoint to ember_debug.js + if (relativePath === `${key}-debug.js`) { + return `ember_debug.js`; + } + + return relativePath; + }); + + // remove other unused entrypoints + debug = rm(debug, '*-debug.js'); + debug = mv(debug, debugRoot[key]); + + dists[key] = mergeTrees([dists[key], debug]); + }); + + return mergeTrees([ + mv(dists.bookmarklet, 'bookmarklet'), + mv(dists.firefox, 'firefox'), + mv(dists.chrome, 'chrome'), + mv(dists.websocket, 'websocket'), + ]); +}; diff --git a/packages/build/eslint.config.mjs b/packages/build/eslint.config.mjs new file mode 100644 index 0000000000..faf66dec6e --- /dev/null +++ b/packages/build/eslint.config.mjs @@ -0,0 +1,134 @@ +/** + * Debugging: + * https://eslint.org/docs/latest/use/configure/debug + * ---------------------------------------------------- + * + * Print a file's calculated configuration + * + * npx eslint --print-config path/to/file.js + * + * Inspecting the config + * + * npx eslint --inspect-config + * + */ +import globals from 'globals'; +import js from '@eslint/js'; +import { defineConfig, globalIgnores } from 'eslint/config'; + +import ember from 'eslint-plugin-ember/recommended'; +import eslintConfigPrettier from 'eslint-config-prettier'; +import qunit from 'eslint-plugin-qunit'; +import n from 'eslint-plugin-n'; + +import babelParser from '@babel/eslint-parser/experimental-worker'; + +const esmParserOptions = { + ecmaFeatures: { modules: true }, + ecmaVersion: 'latest', +}; + +export default defineConfig([ + globalIgnores([ + 'dist/', + 'dist_prev/', + 'vendor/', + 'coverage/', + 'skeletons/', + '!**/.*', + ]), + js.configs.recommended, + eslintConfigPrettier, + ember.configs.base, + ember.configs.gjs, + /** + * https://eslint.org/docs/latest/use/configure/configuration-files#configuring-linter-options + */ + { + linterOptions: { + reportUnusedDisableDirectives: 'error', + }, + }, + { + files: ['**/*.js'], + languageOptions: { + parser: babelParser, + }, + rules: { + 'no-useless-escape': 'off', + }, + }, + { + files: ['**/*.{js,gjs}'], + languageOptions: { + parserOptions: esmParserOptions, + globals: { + ...globals.browser, + }, + }, + }, + { + ...qunit.configs.recommended, + files: ['tests/**/*-test.{js,gjs}'], + plugins: { + qunit, + }, + }, + /** + * CJS node files + */ + { + ...n.configs['flat/recommended-script'], + files: [ + '**/*.cjs', + '.prettierrc.js', + '.stylelintrc.js', + '.template-lintrc.js', + 'babel.config.js', + 'config/**/*.js', + 'testem.js', + ], + plugins: { + n, + }, + + languageOptions: { + sourceType: 'script', + ecmaVersion: 'latest', + globals: { + ...globals.node, + }, + }, + }, + /** + * ESM node files + */ + { + ...n.configs['flat/recommended-module'], + files: ['**/*.mjs'], + plugins: { + n, + }, + + languageOptions: { + sourceType: 'module', + ecmaVersion: 'latest', + parserOptions: esmParserOptions, + globals: { + ...globals.node, + }, + }, + }, + /** + * Gulp files + */ + { + files: ['gulpfile.mjs'], + languageOptions: { + globals: { + ...globals.node, + gulp: 'readonly', + }, + }, + }, +]); diff --git a/packages/build/gulpfile.mjs b/packages/build/gulpfile.mjs new file mode 100644 index 0000000000..76525ee316 --- /dev/null +++ b/packages/build/gulpfile.mjs @@ -0,0 +1,32 @@ +import { src, dest, parallel, series } from 'gulp'; +import zip from 'gulp-zip'; +import { deleteAsync } from 'del'; +import pkg from 'ember-inspector/package.json' with { type: 'json' }; + +const versionedPane = `panes-${pkg.emberVersionsSupported[0].replace( + /\./g, + '-', +)}`; + +const compress = (baseSrc, archiveName) => + function compress() { + return src(`${baseSrc}/**/*`).pipe(zip(archiveName)).pipe(dest('dist')); + }; + +export const cleanDist = () => deleteAsync('./dist'); + +export const cleanTmp = () => deleteAsync('./tmp'); + +export const compressExtensions = parallel( + compress('dist/chrome', 'chrome/ember-inspector.zip'), + compress('dist/firefox', 'firefox/ember-inspector.zip'), +); + +export const compressPanes = series( + parallel( + compress(`dist/chrome/${versionedPane}`, 'chrome.zip'), + compress(`dist/firefox/${versionedPane}`, 'firefox.zip'), + compress(`dist/bookmarklet/${versionedPane}`, 'bookmarklet.zip'), + ), + cleanTmp, +); diff --git a/packages/build/package.json b/packages/build/package.json new file mode 100644 index 0000000000..e9342ac740 --- /dev/null +++ b/packages/build/package.json @@ -0,0 +1,87 @@ +{ + "name": "build", + "version": "0.0.0", + "description": "Builds extensions and bookmarklet", + "repository": "https://github.com/emberjs/ember-inspector", + "license": "MIT", + "directories": { + "doc": "doc", + "test": "tests" + }, + "exports": { + ".": "./", + "./load_inspector": "./skeletons/bookmarklet/load_inspector.js", + "./package.json": "./package.json" + }, + "scripts": { + "build": "gulp cleanDist && ember build", + "build:production": "pnpm panes:download && ember build -e production && pnpm extensions:compress", + "panes:download": "node scripts/download-panes.mjs", + "panes:compress": "gulp compressPanes", + "extensions:compress": "gulp compressExtensions", + "lint": "pnpm \"/^lint:(?!fix$)[^:]+$/\"", + "lint:fix": "pnpm \"/^lint:[^:]+:fix$/\" && pnpm format", + "lint:format": "prettier --cache --check \"**/*.{js,cjs,mjs}\"", + "format": "prettier --cache --write \"**/*.{js,cjs,mjs}\"", + "lint:js": "eslint . --cache", + "lint:js:fix": "eslint . --fix", + "lock-version": "pnpm build:production && pnpm panes:compress", + "prepublishOnly": "node -e 'process.exit(!require(\"fs\").existsSync(\"./dist\"))' || pnpm build:production" + }, + "dependencies": { + "del": "^8.0.1", + "ember-inspector": "workspace:*", + "got": "^11.8.6", + "gulp": "^5.0.1", + "gulp-zip": "^5.1.0", + "rimraf": "^5.0.10", + "yauzl": "^3.2.0" + }, + "devDependencies": { + "@babel/core": "^7.26.0", + "@babel/eslint-parser": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.25.9", + "@ember/optional-features": "^2.2.0", + "@eslint/js": "^9.39.4", + "@glimmer/component": "^1.1.2", + "broccoli-concat": "^4.2.5", + "broccoli-file-creator": "^2.1.1", + "broccoli-funnel": "^3.0.8", + "broccoli-merge-trees": "^4.2.0", + "broccoli-stew": "^3.0.0", + "broccoli-string-replace": "^0.1.2", + "ember-cli": "~6.1.0", + "ember-cli-babel": "^8.2.0", + "ember-debug": "workspace:*", + "ember-source": "^5.0.0", + "eslint": "^9.39.4", + "eslint-config-prettier": "^10.1.8", + "eslint-plugin-ember": "^12.7.5", + "eslint-plugin-n": "^17.24.0", + "eslint-plugin-qunit": "^8.2.6", + "globals": "^15.14.0", + "prettier": "^3.4.2", + "webpack": "^5.97.1" + }, + "ember": { + "edition": "octane" + }, + "release-it": { + "plugins": { + "release-it-lerna-changelog": { + "infile": "CHANGELOG.md", + "launchEditor": true + } + }, + "git": { + "tagName": "v${version}" + }, + "github": { + "release": false, + "tokenRef": "GITHUB_AUTH" + }, + "npm": { + "publish": false + } + } +} diff --git a/packages/ember-inspector/scripts/download-panes.js b/packages/build/scripts/download-panes.mjs similarity index 85% rename from packages/ember-inspector/scripts/download-panes.js rename to packages/build/scripts/download-panes.mjs index c9d5fa06ee..b303ea0fa3 100644 --- a/packages/ember-inspector/scripts/download-panes.js +++ b/packages/build/scripts/download-panes.mjs @@ -8,17 +8,17 @@ * package. */ -const got = require('got'); -const fs = require('fs'); -const { promisify } = require('util'); -const stream = require('stream'); -const packageJson = require('../package.json'); -const yauzl = require('yauzl'); -const path = require('path'); +import got from 'got'; +import fs from 'fs'; +import { promisify } from 'util'; +import stream from 'stream'; +import yauzl from 'yauzl'; +import path from 'path'; +import { rimraf } from 'rimraf'; +import packageJson from 'ember-inspector/package.json' with { type: 'json' }; const yauzlFromBuffer = promisify(yauzl.fromBuffer); const pipeline = promisify(stream.pipeline); -const { rimraf } = require('rimraf'); async function main() { await rimraf('dist_prev'); @@ -34,7 +34,7 @@ async function main() { } async function downloadPane(paneFolder, dist) { - console.log(`Downloading ${paneFolder}`); + console.log(`Downloading ${dist} ${paneFolder}`); let response = await got( `https://github.com/emberjs/ember-inspector/blob/panes/${paneFolder}/${dist}.zip?raw=true`, diff --git a/packages/ember-inspector/skeletons/bookmarklet/load_inspector.js b/packages/build/skeletons/bookmarklet/load_inspector.js similarity index 100% rename from packages/ember-inspector/skeletons/bookmarklet/load_inspector.js rename to packages/build/skeletons/bookmarklet/load_inspector.js diff --git a/packages/ember-inspector/skeletons/web-extension/background.js b/packages/build/skeletons/web-extension/background.js similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/background.js rename to packages/build/skeletons/web-extension/background.js diff --git a/packages/ember-inspector/skeletons/web-extension/boot.js b/packages/build/skeletons/web-extension/boot.js similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/boot.js rename to packages/build/skeletons/web-extension/boot.js diff --git a/packages/ember-inspector/skeletons/web-extension/chrome-bootstrap.css b/packages/build/skeletons/web-extension/chrome-bootstrap.css similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/chrome-bootstrap.css rename to packages/build/skeletons/web-extension/chrome-bootstrap.css diff --git a/packages/ember-inspector/skeletons/web-extension/content-script.js b/packages/build/skeletons/web-extension/content-script.js similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/content-script.js rename to packages/build/skeletons/web-extension/content-script.js diff --git a/packages/ember-inspector/skeletons/web-extension/devtools.html b/packages/build/skeletons/web-extension/devtools.html similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/devtools.html rename to packages/build/skeletons/web-extension/devtools.html diff --git a/packages/ember-inspector/skeletons/web-extension/devtools.js b/packages/build/skeletons/web-extension/devtools.js similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/devtools.js rename to packages/build/skeletons/web-extension/devtools.js diff --git a/packages/ember-inspector/skeletons/web-extension/manifest.json b/packages/build/skeletons/web-extension/manifest.json similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/manifest.json rename to packages/build/skeletons/web-extension/manifest.json diff --git a/packages/ember-inspector/skeletons/web-extension/options-dialog.html b/packages/build/skeletons/web-extension/options-dialog.html similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/options-dialog.html rename to packages/build/skeletons/web-extension/options-dialog.html diff --git a/packages/ember-inspector/skeletons/web-extension/options.css b/packages/build/skeletons/web-extension/options.css similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/options.css rename to packages/build/skeletons/web-extension/options.css diff --git a/packages/ember-inspector/skeletons/web-extension/options.js b/packages/build/skeletons/web-extension/options.js similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/options.js rename to packages/build/skeletons/web-extension/options.js diff --git a/packages/ember-inspector/skeletons/web-extension/scripts/in-page-script.js b/packages/build/skeletons/web-extension/scripts/in-page-script.js similarity index 100% rename from packages/ember-inspector/skeletons/web-extension/scripts/in-page-script.js rename to packages/build/skeletons/web-extension/scripts/in-page-script.js diff --git a/packages/ember-debug/entrypoints/basic-debug.js b/packages/ember-debug/entrypoints/basic.js similarity index 100% rename from packages/ember-debug/entrypoints/basic-debug.js rename to packages/ember-debug/entrypoints/basic.js diff --git a/packages/ember-debug/entrypoints/bookmarklet-debug.js b/packages/ember-debug/entrypoints/bookmarklet.js similarity index 100% rename from packages/ember-debug/entrypoints/bookmarklet-debug.js rename to packages/ember-debug/entrypoints/bookmarklet.js diff --git a/packages/ember-debug/entrypoints/chrome-debug.js b/packages/ember-debug/entrypoints/chrome.js similarity index 100% rename from packages/ember-debug/entrypoints/chrome-debug.js rename to packages/ember-debug/entrypoints/chrome.js diff --git a/packages/ember-debug/entrypoints/firefox-debug.js b/packages/ember-debug/entrypoints/firefox.js similarity index 100% rename from packages/ember-debug/entrypoints/firefox-debug.js rename to packages/ember-debug/entrypoints/firefox.js diff --git a/packages/ember-debug/entrypoints/websocket-debug.js b/packages/ember-debug/entrypoints/websocket.js similarity index 100% rename from packages/ember-debug/entrypoints/websocket-debug.js rename to packages/ember-debug/entrypoints/websocket.js diff --git a/packages/ember-debug/index.js b/packages/ember-debug/index.js deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/ember-debug/lib/start-inspector.js b/packages/ember-debug/lib/start-inspector.js index ee88e6eac8..8063b5ac7e 100644 --- a/packages/ember-debug/lib/start-inspector.js +++ b/packages/ember-debug/lib/start-inspector.js @@ -8,7 +8,7 @@ import { import bootEmberInspector from './boot-ember-inspector.js'; import setupInstanceInitializer from './setup-instance-initializer.js'; import sendVersionMiss from './send-version-miss.js'; -import getEmberDebug from '../main.js'; +import getEmberDebug from '../src/main.js'; import { guidFor, Application, VERSION } from './ember.js'; import { onEmberReady } from '../utils/on-ready.js'; diff --git a/packages/ember-debug/rollup.config.js b/packages/ember-debug/rollup.config.js index 6b94c1b30f..b7d93ecbc8 100644 --- a/packages/ember-debug/rollup.config.js +++ b/packages/ember-debug/rollup.config.js @@ -3,22 +3,35 @@ import commonjs from '@rollup/plugin-commonjs'; import { babel } from '@rollup/plugin-babel'; import { globSync } from 'glob'; import del from 'rollup-plugin-delete'; +import { basename, extname } from 'path'; export default { - input: [ - 'lib/ember.js', - 'lib/promise-assembler.js', - 'lib/type-check.js', - 'main.js', - 'models/profile-node.js', - 'port.js', - 'utils/version.js', - 'utils/versions.js', - ...globSync('entrypoints/*.js'), - ], + input: Object.fromEntries([ + ...[ + 'lib/ember.js', + 'lib/promise-assembler.js', + 'lib/type-check.js', + 'models/profile-node.js', + 'src/main.js', + 'src/port.js', + 'utils/version.js', + 'utils/versions.js', + ].map((f) => [basename(f, extname(f)), f]), + ...globSync('entrypoints/*.js').map((f) => [ + `${basename(f, extname(f))}-debug`, + f, + ]), + ]), output: { dir: 'dist', }, - plugins: [babel(), nodeResolve(), commonjs(), del({ targets: 'dist' })], + plugins: [ + babel({ + babelHelpers: 'bundled', + }), + nodeResolve(), + commonjs(), + del({ targets: 'dist' }), + ], }; diff --git a/packages/ember-debug/container-debug.js b/packages/ember-debug/src/container-debug.js similarity index 100% rename from packages/ember-debug/container-debug.js rename to packages/ember-debug/src/container-debug.js diff --git a/packages/ember-debug/data-debug.js b/packages/ember-debug/src/data-debug.js similarity index 98% rename from packages/ember-debug/data-debug.js rename to packages/ember-debug/src/data-debug.js index c7a1189894..e18f7cc25c 100644 --- a/packages/ember-debug/data-debug.js +++ b/packages/ember-debug/src/data-debug.js @@ -1,5 +1,5 @@ import DebugPort from './debug-port.js'; -import { guidFor } from './lib/ember/object/internals.js'; +import { guidFor } from '../lib/ember/object/internals.js'; export default class extends DebugPort { // eslint-disable-next-line ember/classic-decorator-hooks diff --git a/packages/ember-debug/debug-port.js b/packages/ember-debug/src/debug-port.js similarity index 95% rename from packages/ember-debug/debug-port.js rename to packages/ember-debug/src/debug-port.js index 4ce5410bd8..a014334c54 100644 --- a/packages/ember-debug/debug-port.js +++ b/packages/ember-debug/src/debug-port.js @@ -1,4 +1,4 @@ -import BaseObject from './utils/base-object.js'; +import BaseObject from '../utils/base-object.js'; export default class extends BaseObject { port = null; diff --git a/packages/ember-debug/deprecation-debug.js b/packages/ember-debug/src/deprecation-debug.js similarity index 96% rename from packages/ember-debug/deprecation-debug.js rename to packages/ember-debug/src/deprecation-debug.js index 5fc0bbd7e8..1e7e8e5445 100644 --- a/packages/ember-debug/deprecation-debug.js +++ b/packages/ember-debug/src/deprecation-debug.js @@ -1,9 +1,9 @@ import DebugPort from './debug-port.js'; -import SourceMap from './lib/source-map.js'; +import SourceMap from '../lib/source-map.js'; -import { Debug } from './lib/ember.js'; -import { guidFor } from './lib/ember/object/internals.js'; -import { cancel, debounce } from './lib/ember/runloop.js'; +import { Debug } from '../lib/ember.js'; +import { guidFor } from '../lib/ember/object/internals.js'; +import { cancel, debounce } from '../lib/ember/runloop.js'; export default class extends DebugPort { static { diff --git a/packages/ember-debug/general-debug.js b/packages/ember-debug/src/general-debug.js similarity index 98% rename from packages/ember-debug/general-debug.js rename to packages/ember-debug/src/general-debug.js index 6e94bd483d..e3e51a9a57 100644 --- a/packages/ember-debug/general-debug.js +++ b/packages/ember-debug/src/general-debug.js @@ -1,7 +1,7 @@ /* eslint no-empty:0 */ import DebugPort from './debug-port.js'; -import { libraries } from './lib/ember.js'; +import { libraries } from '../lib/ember.js'; /** * Class that handles gathering general information of the inspected app. diff --git a/packages/ember-debug/main.js b/packages/ember-debug/src/main.js similarity index 91% rename from packages/ember-debug/main.js rename to packages/ember-debug/src/main.js index fc6553f8df..0ae3990138 100644 --- a/packages/ember-debug/main.js +++ b/packages/ember-debug/src/main.js @@ -1,4 +1,4 @@ -import BasicAdapter from './adapters/basic.js'; +import BasicAdapter from '../adapters/basic.js'; import Port from './port.js'; import ObjectInspector from './object-inspector.js'; import GeneralDebug from './general-debug.js'; @@ -9,12 +9,15 @@ import DataDebug from './data-debug.js'; import PromiseDebug from './promise-debug.js'; import ContainerDebug from './container-debug.js'; import DeprecationDebug from './deprecation-debug.js'; -import Session from './services/session.js'; - -import { getApplications, getApplicationInstance } from './lib/applications.js'; -import { guidFor, setGuidPrefix } from './lib/ember/object/internals.js'; -import { run } from './lib/ember/runloop.js'; -import BaseObject from './utils/base-object.js'; +import Session from '../services/session.js'; + +import { + getApplications, + getApplicationInstance, +} from '../lib/applications.js'; +import { guidFor, setGuidPrefix } from '../lib/ember/object/internals.js'; +import { run } from '../lib/ember/runloop.js'; +import BaseObject from '../utils/base-object.js'; export class EmberDebug extends BaseObject { /** diff --git a/packages/ember-debug/object-inspector.js b/packages/ember-debug/src/object-inspector.js similarity index 98% rename from packages/ember-debug/object-inspector.js rename to packages/ember-debug/src/object-inspector.js index c4ae7c96e8..747acc0911 100644 --- a/packages/ember-debug/object-inspector.js +++ b/packages/ember-debug/src/object-inspector.js @@ -1,13 +1,13 @@ /* eslint-disable ember/no-private-routing-service */ import DebugPort from './debug-port.js'; -import bound from './utils/bound-method.js'; +import bound from '../utils/bound-method.js'; import { isComputed, getDescriptorFor, typeOf, inspect, -} from './lib/type-check.js'; -import { compareVersion } from './utils/version.js'; +} from '../lib/type-check.js'; +import { compareVersion } from '../utils/version.js'; import { EmberObject, meta as emberMeta, @@ -22,11 +22,11 @@ import { GlimmerReference, GlimmerValidator, getOwner, -} from './lib/ember.js'; -import { cacheFor, guidFor } from './lib/ember/object/internals.js'; -import { _backburner, join } from './lib/ember/runloop.js'; -import emberNames from './lib/ember-object-names.js'; -import getObjectName from './lib/get-object-name.js'; +} from '../lib/ember.js'; +import { cacheFor, guidFor } from '../lib/ember/object/internals.js'; +import { _backburner, join } from '../lib/ember/runloop.js'; +import emberNames from '../lib/ember-object-names.js'; +import getObjectName from '../lib/get-object-name.js'; let tagValue, tagValidate, track, tagForProperty; diff --git a/packages/ember-debug/port.js b/packages/ember-debug/src/port.js similarity index 93% rename from packages/ember-debug/port.js rename to packages/ember-debug/src/port.js index 3153086cb8..6858d36aff 100644 --- a/packages/ember-debug/port.js +++ b/packages/ember-debug/src/port.js @@ -1,7 +1,7 @@ -import { guidFor } from './lib/ember/object/internals.js'; -import { run } from './lib/ember/runloop.js'; -import BaseObject from './utils/base-object.js'; -import Evented from './utils/evented.js'; +import { guidFor } from '../lib/ember/object/internals.js'; +import { run } from '../lib/ember/runloop.js'; +import BaseObject from '../utils/base-object.js'; +import Evented from '../utils/evented.js'; export default class extends BaseObject { constructor(data) { diff --git a/packages/ember-debug/promise-debug.js b/packages/ember-debug/src/promise-debug.js similarity index 97% rename from packages/ember-debug/promise-debug.js rename to packages/ember-debug/src/promise-debug.js index 51a59dc66c..38de531b56 100644 --- a/packages/ember-debug/promise-debug.js +++ b/packages/ember-debug/src/promise-debug.js @@ -1,7 +1,7 @@ import DebugPort from './debug-port.js'; -import PromiseAssembler from './lib/promise-assembler.js'; -import { debounce } from './lib/ember/runloop.js'; -import { RSVP } from './lib/ember.js'; +import PromiseAssembler from '../lib/promise-assembler.js'; +import { debounce } from '../lib/ember/runloop.js'; +import { RSVP } from '../lib/ember.js'; export default class extends DebugPort { get objectInspector() { diff --git a/packages/ember-debug/render-debug.js b/packages/ember-debug/src/render-debug.js similarity index 92% rename from packages/ember-debug/render-debug.js rename to packages/ember-debug/src/render-debug.js index 9e6927e646..c031cae51f 100644 --- a/packages/ember-debug/render-debug.js +++ b/packages/ember-debug/src/render-debug.js @@ -1,9 +1,9 @@ import DebugPort from './debug-port.js'; -import ProfileManager from './models/profile-manager.js'; +import ProfileManager from '../models/profile-manager.js'; -import { subscribe } from './lib/ember.js'; -import { _backburner } from './lib/ember/runloop.js'; -import bound from './utils/bound-method.js'; +import { subscribe } from '../lib/ember.js'; +import { _backburner } from '../lib/ember/runloop.js'; +import bound from '../utils/bound-method.js'; // Initial setup, that has to occur before the EmberObject init for some reason let profileManager = new ProfileManager(); diff --git a/packages/ember-debug/route-debug.js b/packages/ember-debug/src/route-debug.js similarity index 96% rename from packages/ember-debug/route-debug.js rename to packages/ember-debug/src/route-debug.js index f298c431d8..c537706b88 100644 --- a/packages/ember-debug/route-debug.js +++ b/packages/ember-debug/src/route-debug.js @@ -1,11 +1,11 @@ /* eslint-disable ember/no-private-routing-service */ import DebugPort from './debug-port.js'; -import { compareVersion } from './utils/version.js'; -import { VERSION } from './lib/ember.js'; -import classify from './utils/classify.js'; -import dasherize from './utils/dasherize.js'; -import { _backburner, later } from './lib/ember/runloop.js'; -import bound from './utils/bound-method.js'; +import { compareVersion } from '../utils/version.js'; +import { VERSION } from '../lib/ember.js'; +import classify from '../utils/classify.js'; +import dasherize from '../utils/dasherize.js'; +import { _backburner, later } from '../lib/ember/runloop.js'; +import bound from '../utils/bound-method.js'; const { hasOwnProperty } = Object.prototype; diff --git a/packages/ember-debug/view-debug.js b/packages/ember-debug/src/view-debug.js similarity index 96% rename from packages/ember-debug/view-debug.js rename to packages/ember-debug/src/view-debug.js index 566076c55a..6878768457 100644 --- a/packages/ember-debug/view-debug.js +++ b/packages/ember-debug/src/view-debug.js @@ -1,8 +1,8 @@ /* eslint no-cond-assign:0 */ import DebugPort from './debug-port.js'; -import RenderTree from './lib/render-tree.js'; -import ViewInspection from './lib/view-inspection.js'; -import bound from './utils/bound-method.js'; +import RenderTree from '../lib/render-tree.js'; +import ViewInspection from '../lib/view-inspection.js'; +import bound from '../utils/bound-method.js'; export default class extends DebugPort { get adapter() { diff --git a/packages/ember-inspector/.npmignore b/packages/ember-inspector/.npmignore index 1c25ab038a..fa500322b7 100644 --- a/packages/ember-inspector/.npmignore +++ b/packages/ember-inspector/.npmignore @@ -6,3 +6,4 @@ gulpfile.js testem.js scripts/ tests/ +server/ diff --git a/packages/ember-inspector/app/app.js b/packages/ember-inspector/app/app.js index 5a6dfda50f..f0b492e127 100644 --- a/packages/ember-inspector/app/app.js +++ b/packages/ember-inspector/app/app.js @@ -3,14 +3,12 @@ import Resolver from 'ember-resolver'; import loadInitializers from 'ember-load-initializers'; import config from 'ember-inspector/config/environment'; -const version = '{{EMBER_INSPECTOR_VERSION}}'; - export default class App extends Application { modulePrefix = config.modulePrefix; podModulePrefix = config.podModulePrefix; Resolver = Resolver; } -config.VERSION = version; +config.VERSION = '{{EMBER_INSPECTOR_VERSION}}'; loadInitializers(App, config.modulePrefix); diff --git a/packages/ember-inspector/app/components/deprecation-item-source.js b/packages/ember-inspector/app/components/deprecation-item-source.js index 91f7c28562..6ccb51d666 100644 --- a/packages/ember-inspector/app/components/deprecation-item-source.js +++ b/packages/ember-inspector/app/components/deprecation-item-source.js @@ -32,7 +32,9 @@ export default class DeprecationItemSource extends Component { } @action - handleRedirect() { + handleRedirect(event) { + // FIXME: this should be attached to a