mirror of
https://github.com/bitwarden/browser.git
synced 2025-03-01 03:31:15 +01:00
* feat: implement Rc * feat: use Rc in sdk service * docs: add an example to `take()` * fix: clarify function doc * Add custom eslint rule package with enforced `using` rule (#13009) * feat: add custom eslint rule * feat: check for `UsingRequired` instead of hardcoding `Rc` * chore: move package to libs * wip: add tests. Tests work when run from same folder but not from root * fix: add dependencies to renovate * fix: add empty ts file to avoid typechecking throwing errors * fix: tests not running from root * chore: remove unecessary config * fix: linting * docs: add readme * chore: add platform ownership * chore: clean up comment * Add support for flat config to "Improved sdk referencing" (#13054) * WIP flat config for eslint * Add rxjs * Configure vscode to use flat config * Fix some new linting errors * Remove directory overrides of .eslintrc * Remove explicit dependencies on typescript-eslint/ and @angular-eslint/ * Add missing rules * Add rxjs recommended rules * Add storybook and enabled rxjs-angular rule * Add buildNoRestrictedImports helper * Ignore platform import restrictions * Remove unused ignores * feat: migrate rules over to .mjs and flat config * feat: implement support for .mjs tests * chore: remove old package approach * chore: update package-lock * fix: add empty TS file to stop errors * chore: clean up comments --------- Co-authored-by: Hinton <hinton@users.noreply.github.com> * fix: update CODEOWNERS to match folder name * fix: renovate.json after merge * fix: package.json, pin versions, sort order * fix: update package-lock.json --------- Co-authored-by: Hinton <hinton@users.noreply.github.com>
99 lines
1.8 KiB
JavaScript
99 lines
1.8 KiB
JavaScript
import { RuleTester } from "@typescript-eslint/rule-tester";
|
|
|
|
import rule, { errorMessage } from "./required-using.mjs";
|
|
|
|
const ruleTester = new RuleTester({
|
|
languageOptions: {
|
|
parserOptions: {
|
|
project: [__dirname + "/../tsconfig.spec.json"],
|
|
projectService: {
|
|
allowDefaultProject: ["*.ts*"],
|
|
},
|
|
tsconfigRootDir: __dirname + "/..",
|
|
},
|
|
},
|
|
});
|
|
|
|
const setup = `
|
|
interface UsingRequired {}
|
|
class Ref implements UsingRequired {}
|
|
|
|
const rc = {
|
|
take(): Ref {
|
|
return new Ref();
|
|
},
|
|
};
|
|
`;
|
|
|
|
ruleTester.run("required-using", rule.default, {
|
|
valid: [
|
|
{
|
|
name: "Direct declaration with `using`",
|
|
code: `
|
|
${setup}
|
|
using client = rc.take();
|
|
`,
|
|
},
|
|
{
|
|
name: "Function reference with `using`",
|
|
code: `
|
|
${setup}
|
|
const t = rc.take;
|
|
using client = t();
|
|
`,
|
|
},
|
|
],
|
|
invalid: [
|
|
{
|
|
name: "Direct declaration without `using`",
|
|
code: `
|
|
${setup}
|
|
const client = rc.take();
|
|
`,
|
|
errors: [
|
|
{
|
|
message: errorMessage,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "Assignment without `using`",
|
|
code: `
|
|
${setup}
|
|
let client;
|
|
client = rc.take();
|
|
`,
|
|
errors: [
|
|
{
|
|
message: errorMessage,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "Function reference without `using`",
|
|
code: `
|
|
${setup}
|
|
const t = rc.take;
|
|
const client = t();
|
|
`,
|
|
errors: [
|
|
{
|
|
message: errorMessage,
|
|
},
|
|
],
|
|
},
|
|
{
|
|
name: "Destructuring without `using`",
|
|
code: `
|
|
${setup}
|
|
const { value } = rc.take();
|
|
`,
|
|
errors: [
|
|
{
|
|
message: errorMessage,
|
|
},
|
|
],
|
|
},
|
|
],
|
|
});
|