Skip to content

Commit

Permalink
Add '@acme/' from commit 'f05fe8013a38bffaeff0594efee76d46c6bee004'
Browse files Browse the repository at this point in the history
git-subtree-dir: @acme
git-subtree-mainline: b9a5f1b
git-subtree-split: f05fe80
  • Loading branch information
vyductan committed Aug 22, 2024
2 parents b9a5f1b + f05fe80 commit 3637063
Show file tree
Hide file tree
Showing 293 changed files with 28,773 additions and 0 deletions.
1 change: 1 addition & 0 deletions @acme/.git_
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
gitdir: ../.git/modules/@acme
57 changes: 57 additions & 0 deletions @acme/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# dependencies
node_modules
.pnp
.pnp.js

# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*

# Editor directories and files
.vscode/*
!.vscode/extensions.json
.idea
.DS_Store
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
*.pem

# Local files
*.local

# next.js
.next/
out/
next-env.d.ts
# expo
.expo/
dist/
expo-env.d.ts
apps/expo/.gitignore
# tauri
dist
dist-ssr

# production
build

# testing
coverage

# typescript
*.tsbuildinfo

# turbo
.turbo

# vercel
.vercel

2 changes: 2 additions & 0 deletions @acme/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
# vyductan-react

114 changes: 114 additions & 0 deletions @acme/eslint/base.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
// https://github.com/t3-oss/create-t3-app/blob/main/cli/template/base/_eslintrc.cjs
// https://github.com/t3-oss/create-t3-turbo/blob/main/tooling/eslint/base.js

/// <reference types="./types.d.ts" />
import * as path from "node:path";
import { includeIgnoreFile } from "@eslint/compat";
import eslint from "@eslint/js";
import importPlugin from "eslint-plugin-import";
import turboPlugin from "eslint-plugin-turbo";
import tseslint from "typescript-eslint";

import unicornPlugin from "./unicorn.js";

/**
* All packages that leverage t3-env should use this rule
*/
export const restrictEnvAccess = tseslint.config(
{ ignores: ["**/env.ts"] },
{
rules: {
"no-restricted-properties": [
"error",
{
object: "process",
property: "env",
message:
"Use `import { env } from '~/env'` instead to ensure validated types.",
},
],
"no-restricted-imports": [
"error",
{
name: "process",
importNames: ["env"],
message:
"Use `import { env } from '~/env'` instead to ensure validated types.",
},
],
},
},
);

export default tseslint.config(
...unicornPlugin,
// Ignore files not tracked by VCS and any config files
includeIgnoreFile(path.join(import.meta.dirname, "../../.gitignore")),
{ ignores: ["**/*.config.*"] },
{
files: ["**/*.js", "**/*.ts", "**/*.tsx"],
plugins: {
import: importPlugin,
turbo: turboPlugin,
},
extends: [
eslint.configs.recommended,
...tseslint.configs.recommended,
...tseslint.configs.recommendedTypeChecked,
...tseslint.configs.stylisticTypeChecked,
],
rules: {
...turboPlugin.configs.recommended.rules,
/*
* t3-turbo
*/
"@typescript-eslint/no-unused-vars": [
"error",
{
argsIgnorePattern: "^_",
varsIgnorePattern: "^_",
},
],
"@typescript-eslint/consistent-type-imports": [
"warn",
{ prefer: "type-imports", fixStyle: "separate-type-imports" },
],
"@typescript-eslint/no-misused-promises": [
"error",
{
checksVoidReturn: { attributes: false },
},
],
"@typescript-eslint/no-unnecessary-condition": [
"error",
{
allowConstantLoopConditions: true,
},
],
// "@typescript-eslint/no-non-null-assertion": "error",
"import/consistent-type-specifier-style": ["error", "prefer-top-level"],

/*
* t3
*/
"@typescript-eslint/array-type": "off",
"@typescript-eslint/consistent-type-definitions": "off",
"@typescript-eslint/require-await": "off",

/*
* Nextjs
* that rules allowed by Nextjs
*/
// "@typescript-eslint/unbound-method": "off",
// "@typescript-eslint/no-non-null-assertion": "error",
// "@typescript-eslint/prefer-nullish-coalescing": "off",
"@typescript-eslint/no-unsafe-assignment": "off",
"@typescript-eslint/no-unsafe-argument": "off",
"@typescript-eslint/no-explicit-any": "off",
},
},
{
linterOptions: { reportUnusedDisableDirectives: true },
languageOptions: { parserOptions: { projectService: true } },
},
);
7 changes: 7 additions & 0 deletions @acme/eslint/drizzle.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
/** @type {import('eslint').Linter.Config} */
const config = {
extends: ["plugin:drizzle/recommended"],
plugins: ["drizzle"],
};

module.exports = config;
17 changes: 17 additions & 0 deletions @acme/eslint/nextjs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import nextPlugin from "@next/eslint-plugin-next";

/** @type {Awaited<import('typescript-eslint').Config>} */
export default [
{
files: ["**/*.ts", "**/*.tsx"],
plugins: {
"@next/next": nextPlugin,
},
rules: {
...nextPlugin.configs.recommended.rules,
...nextPlugin.configs["core-web-vitals"].rules,
// TypeError: context.getAncestors is not a function
"@next/next/no-duplicate-head": "off",
},
},
];
39 changes: 39 additions & 0 deletions @acme/eslint/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
{
"$schema": "https://json.schemastore.org/package.json",
"name": "@acme/eslint-config",
"version": "0.3.0",
"private": true,
"type": "module",
"exports": {
"./base": "./base.js",
"./nextjs": "./nextjs.js",
"./react": "./react.js",
"./tailwind": "./tailwind.js"
},
"scripts": {
"clean": "git clean -xdf .cache .turbo node_modules",
"format": "prettier --check . --ignore-path ../../.gitignore",
"typecheck": "tsc --noEmit"
},
"prettier": "@acme/prettier-config",
"dependencies": {
"@eslint/compat": "^1.1.1",
"@next/eslint-plugin-next": "^14.2.5",
"eslint-plugin-drizzle": "^0.2.3",
"eslint-plugin-import": "^2.29.1",
"eslint-plugin-jsx-a11y": "^6.9.0",
"eslint-plugin-react": "^7.35.0",
"eslint-plugin-react-hooks": "rc",
"eslint-plugin-tailwindcss": "^3.17.4",
"eslint-plugin-turbo": "^2.0.14",
"typescript-eslint": "^8.2.0"
},
"devDependencies": {
"@acme/prettier-config": "workspace:*",
"@acme/tsconfig": "workspace:*",
"eslint": "catalog:",
"eslint-plugin-unicorn": "^55.0.0",
"prettier": "catalog:",
"typescript": "catalog:"
}
}
22 changes: 22 additions & 0 deletions @acme/eslint/react.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import reactPlugin from "eslint-plugin-react";
import hooksPlugin from "eslint-plugin-react-hooks";

/** @type {Awaited<import('typescript-eslint').Config>} */
export default [
{
files: ["**/*.ts", "**/*.tsx"],
plugins: {
react: reactPlugin,
"react-hooks": hooksPlugin,
},
rules: {
...reactPlugin.configs["jsx-runtime"].rules,
...hooksPlugin.configs.recommended.rules,
},
languageOptions: {
globals: {
React: "writable",
},
},
},
];
37 changes: 37 additions & 0 deletions @acme/eslint/tailwind.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
import * as path from "node:path";
import { fileURLToPath } from "url";
// @ts-expect-error
import tailwindPlugin from "eslint-plugin-tailwindcss";

const __filename = fileURLToPath(import.meta.url);
const config = path.join(import.meta.dirname, "../tailwind/web.ts");

/** @type {Awaited<import('typescript-eslint').Config>} */
export default [
...tailwindPlugin.configs["flat/recommended"],
{
// plugins: {
// tailwindcss: tailwindPlugin,
// },
// rules: {
// ...tailwindPlugin.rules,
// },
settings: {
tailwindcss: {
callees: ["clsm", "cva", "cx"],
config,
// config: fileURLToPath(
// new URL("../tailwind/web.ts", "file://" + __filename),
// ),
cssFiles: [
"**/*.{css,scss}",
"!**/node_modules",
"!**/.*",
"!**/dist",
"!**/build",
],
whitelist: ["_.+"],
},
},
},
];
6 changes: 6 additions & 0 deletions @acme/eslint/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"$schema": "https://json.schemastore.org/tsconfig.json",
"extends": "@acme/tsconfig/base.json",
"include": ["."],
"exclude": ["node_modules"]
}
67 changes: 67 additions & 0 deletions @acme/eslint/types.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
/**
* Since the ecosystem hasn't fully migrated to ESLint's new FlatConfig system yet,
* we "need" to type some of the plugins manually :(
*/

declare module "@eslint/js" {
// Why the hell doesn't eslint themselves export their types?
import type { Linter } from "eslint";

export const configs: {
readonly recommended: { readonly rules: Readonly<Linter.RulesRecord> };
readonly all: { readonly rules: Readonly<Linter.RulesRecord> };
};
}

declare module "eslint-plugin-import" {
import type { Linter, Rule } from "eslint";

export const configs: {
recommended: { rules: Linter.RulesRecord };
};
export const rules: Record<string, Rule.RuleModule>;
}

declare module "eslint-plugin-react" {
import type { Linter, Rule } from "eslint";

export const configs: {
recommended: { rules: Linter.RulesRecord };
all: { rules: Linter.RulesRecord };
"jsx-runtime": { rules: Linter.RulesRecord };
};
export const rules: Record<string, Rule.RuleModule>;
}

declare module "eslint-plugin-react-hooks" {
import type { Linter, Rule } from "eslint";

export const configs: {
recommended: {
rules: {
"rules-of-hooks": Linter.RuleEntry;
"exhaustive-deps": Linter.RuleEntry;
};
};
};
export const rules: Record<string, Rule.RuleModule>;
}

declare module "@next/eslint-plugin-next" {
import type { Linter, Rule } from "eslint";

export const configs: {
recommended: { rules: Linter.RulesRecord };
"core-web-vitals": { rules: Linter.RulesRecord };
};
export const rules: Record<string, Rule.RuleModule>;
}

declare module "eslint-plugin-turbo" {
import type { Linter, Rule } from "eslint";

export const configs: {
recommended: { rules: Linter.RulesRecord };
};
export const rules: Record<string, Rule.RuleModule>;
}
Loading

0 comments on commit 3637063

Please sign in to comment.