Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion e2e/acceptance/crate-navtabs.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect } from '@/e2e/helper';
import { expect, test } from '@/e2e/helper';
import { Locator } from '@playwright/test';

test.describe('Acceptance | crate navigation tabs', { tag: '@acceptance' }, () => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/acceptance/login.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect } from '@/e2e/helper';
import { expect, test } from '@/e2e/helper';
import { http, HttpResponse } from 'msw';

test.describe('Acceptance | Login', { tag: '@acceptance' }, () => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/acceptance/read-only-mode.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect, AppFixtures } from '@/e2e/helper';
import { AppFixtures, expect, test } from '@/e2e/helper';
import { http, HttpResponse } from 'msw';

test.describe('Acceptance | Read-only Mode', { tag: '@acceptance' }, () => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/acceptance/sudo.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect } from '@/e2e/helper';
import { expect, test } from '@/e2e/helper';
import { format } from 'date-fns/format';

test.describe('Acceptance | sudo', { tag: '@acceptance' }, () => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/acceptance/support.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect } from '@/e2e/helper';
import { expect, test } from '@/e2e/helper';

test.describe('Acceptance | support page', { tag: '@acceptance' }, () => {
test.beforeEach(async ({ page, msw }) => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/bugs/11772.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect } from '@/e2e/helper';
import { expect, test } from '@/e2e/helper';

test.describe('Bug #11772', { tag: '@bugs' }, () => {
async function prepare(msw: any) {
Expand Down
3 changes: 1 addition & 2 deletions e2e/fixtures/a11y.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import { Page } from '@playwright/test';
import { AxeBuilder } from '@axe-core/playwright';
import { expect } from '@playwright/test';
import { expect, Page } from '@playwright/test';

// Ref: https://playwright.dev/docs/accessibility-testing#scanning-an-entire-page
export class A11yPage {
Expand Down
6 changes: 3 additions & 3 deletions e2e/fixtures/ember.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
import type _Ember from 'ember';

import { APP_HOOK_CUSTOM_EVENTS, APP_HOOK_KEY, SENTRY_HOOK_KEY } from '@/app/consts';
import { Page } from '@playwright/test';
import { APP_HOOK_KEY, APP_HOOK_CUSTOM_EVENTS, SENTRY_HOOK_KEY } from '@/app/consts';

const HOOK_MAPPING = {
hook: APP_HOOK_KEY,
Expand Down Expand Up @@ -69,8 +71,6 @@ export class EmberPage {
}
}

import type _Ember from 'ember';

type _Ember = typeof _Ember;
type HookFn = (owner: _Ember.ApplicationInstance, app: _Ember.Application) => void | Promise<void>;
type HookScript = Exclude<Parameters<Page['addInitScript']>[0], Function>;
Expand Down
2 changes: 1 addition & 1 deletion e2e/fixtures/fake-timers.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Page } from '@playwright/test';
import { withGlobal, FakeTimerWithContext, FakeTimerInstallOpts } from '@sinonjs/fake-timers';
import { FakeTimerInstallOpts, FakeTimerWithContext, withGlobal } from '@sinonjs/fake-timers';

export type FakeTimersOptions = Omit<FakeTimerInstallOpts, 'now'> & { now?: FakeTimerInstallOpts['now'] | string };

Expand Down
2 changes: 1 addition & 1 deletion e2e/fixtures/percy.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { Page, TestInfo } from '@playwright/test';
import { default as percySnapshot } from '@percy/playwright';
import { Page, TestInfo } from '@playwright/test';

export class PercyPage {
constructor(
Expand Down
10 changes: 5 additions & 5 deletions e2e/helper.ts
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import axeConfig from '@/tests/axe-config';
import { db, handlers } from '@crates-io/msw';
import { test as base } from '@playwright/test';
import * as pwFakeTimers from '@sinonjs/fake-timers';
import type { MockServiceWorker } from 'playwright-msw';
import { createWorker } from 'playwright-msw';
import { db, handlers } from '@crates-io/msw';

import * as pwFakeTimers from '@sinonjs/fake-timers';
import { FakeTimers, FakeTimersOptions } from './fixtures/fake-timers';
import { PercyPage } from './fixtures/percy';
import { A11yPage } from './fixtures/a11y';
import { EmberPage, EmberPageOptions } from './fixtures/ember';
import axeConfig from '@/tests/axe-config';
import { FakeTimers, FakeTimersOptions } from './fixtures/fake-timers';
import { PercyPage } from './fixtures/percy';

export type AppOptions = {
clockOptions: FakeTimersOptions;
Expand Down
2 changes: 1 addition & 1 deletion e2e/routes/crate/settings.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { expect, test } from '@/e2e/helper';
import { defer } from '@/e2e/deferred';
import { expect, test } from '@/e2e/helper';
import { http, HttpResponse } from 'msw';

test.describe('Route | crate.settings', { tag: '@routes' }, () => {
Expand Down
2 changes: 1 addition & 1 deletion e2e/routes/crate/settings/new-trusted-publisher.spec.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { defer } from '@/e2e/deferred';
import { expect, test } from '@/e2e/helper';
import { http, HttpResponse } from 'msw';
import { defer } from '@/e2e/deferred';

test.describe('Route | crate.settings.new-trusted-publisher', { tag: '@routes' }, () => {
async function prepare(msw) {
Expand Down
2 changes: 1 addition & 1 deletion e2e/routes/support.spec.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { test, expect } from '@/e2e/helper';
import { expect, test } from '@/e2e/helper';

test.describe('Route | support', { tag: '@routes' }, () => {
test('should not retain query params when exiting and then returning', async ({ page }) => {
Expand Down
29 changes: 3 additions & 26 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
import path from 'node:path';
import { fileURLToPath } from 'node:url';

import { FlatCompat } from '@eslint/eslintrc';
import js from '@eslint/js';
import emberEslintParser from 'ember-eslint-parser';
import ember from 'eslint-plugin-ember';
import emberConcurrency from 'eslint-plugin-ember-concurrency';
import importHelpers from 'eslint-plugin-import-helpers';
import prettier from 'eslint-plugin-prettier';
import eslintPluginUnicorn from 'eslint-plugin-unicorn';
import globals from 'globals';
import path from 'node:path';
import { fileURLToPath } from 'node:url';

const filename = fileURLToPath(import.meta.url);
const dirname = path.dirname(filename);
Expand Down Expand Up @@ -59,7 +59,6 @@ export default [
ember,
'ember-concurrency': emberConcurrency,
prettier,
'import-helpers': importHelpers,
},

languageOptions: {
Expand Down Expand Up @@ -91,9 +90,6 @@ export default [
// it's fine to use `return` without a value and rely on the implicit `undefined` return value
'getter-return': 'off',

// declaration sort is taken care of by `import-helpers/order-imports`
'sort-imports': ['error', { ignoreDeclarationSort: true, ignoreCase: true }],

'prettier/prettier': 'error',

// disabled because we still use `this.set()` in a few places and it works just fine
Expand Down Expand Up @@ -145,25 +141,6 @@ export default [
// disabled because of false positives
'unicorn/consistent-destructuring': 'off',
'unicorn/filename-case': ['error', { case: 'kebabCase', ignore: ['^-'] }],

'import-helpers/order-imports': [
'error',
{
newlinesBetween: 'always',
groups: [
// Node.js built-in modules
'/^(assert|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|http2|https|inspector|module|net|os|path|perf_hooks|process|punycode|querystring|readline|repl|stream|string_decoder|timers|tls|trace_events|tty|url|util|v8|vm|zli)/',
// Testing modules
['/^(qunit|ember-qunit|@ember/test-helpers|htmlbars-inline-precompile)$/', '/^ember-exam\\//'],
// Ember.js modules
['/^@(ember|ember-data|glimmer)\\//', '/^(ember|ember-data|rsvp)$/', '/^ember-data\\//'],
['module'],
['/^crates-io\\//'],
['parent', 'sibling', 'index'],
],
alphabetize: { order: 'asc', ignoreCase: true },
},
],
},
},

Expand Down
23 changes: 22 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,30 @@
},
"prettier": {
"plugins": [
"@ianvs/prettier-plugin-sort-imports",
"prettier-plugin-ember-template-tag"
],
"arrowParens": "avoid",
"importOrder": [
"^(node:)?(assert|async_hooks|buffer|child_process|cluster|console|constants|crypto|dgram|dns|domain|events|fs|http|http2|https|inspector|module|net|os|path|perf_hooks|process|punycode|querystring|readline|repl|stream|string_decoder|timers|tls|trace_events|tty|url|util|v8|vm|zli)",
"",
"^(qunit|ember-qunit|@ember/test-helpers|htmlbars-inline-precompile)$",
"^ember-exam/",
"",
"^@(ember|ember-data|glimmer)/",
"^(ember|ember-data|rsvp)$",
"^ember-data/",
"",
"<THIRD_PARTY_MODULES>",
"",
"^crates-io/",
"",
"^[.]"
],
"importOrderParserPlugins": [
"decorators",
"typescript"
],
"printWidth": 120,
"singleQuote": true,
"tabWidth": 2,
Expand Down Expand Up @@ -72,6 +93,7 @@
"@eslint/js": "9.39.1",
"@glimmer/component": "2.0.0",
"@glimmer/tracking": "1.1.2",
"@ianvs/prettier-plugin-sort-imports": "^4.7.0",
"@mainmatter/ember-api-actions": "0.6.0",
"@percy/cli": "1.31.5",
"@percy/ember": "5.0.0",
Expand Down Expand Up @@ -123,7 +145,6 @@
"eslint-config-prettier": "10.1.8",
"eslint-plugin-ember": "12.7.5",
"eslint-plugin-ember-concurrency": "0.5.1",
"eslint-plugin-import-helpers": "2.0.1",
"eslint-plugin-prettier": "5.5.4",
"eslint-plugin-qunit": "8.2.5",
"eslint-plugin-qunit-dom": "0.2.0",
Expand Down
55 changes: 39 additions & 16 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion script/generate-deploy-changelog.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
#!/usr/bin/env node

import { execSync } from 'node:child_process';

function exec(command, options = {}) {
Expand Down
3 changes: 2 additions & 1 deletion script/precompress-assets.mjs
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { globby } from 'globby';
import { createReadStream, createWriteStream } from 'node:fs';
import { stat } from 'node:fs/promises';
import { pipeline } from 'node:stream/promises';
import { constants, createBrotliCompress, createGzip } from 'node:zlib';

import { globby } from 'globby';

let paths = await globby(['**/*.css', '**/*.html', '**/*.js', '**/*.map', '**/*.svg', '**/*.txt', '**/*.xml'], {
cwd: 'dist',
});
Expand Down
Loading