diff options
| author | 2023-04-28 01:47:57 +0800 | |
|---|---|---|
| committer | 2023-04-28 01:47:57 +0800 | |
| commit | 8b2c4a38a461ff5ecc95972291bc711e2c5dec9a (patch) | |
| tree | 29f552e3df949073e21bf5c76d7abc3044830ec6 /examples/kitchen-sink/packages | |
| parent | fc8c5fdce62fb229202659408798a7b6c98f6e8b (diff) | |
| download | HydroRoll-8b2c4a38a461ff5ecc95972291bc711e2c5dec9a.tar.gz HydroRoll-8b2c4a38a461ff5ecc95972291bc711e2c5dec9a.zip | |
Diffstat (limited to 'examples/kitchen-sink/packages')
25 files changed, 352 insertions, 0 deletions
diff --git a/examples/kitchen-sink/packages/eslint-config-custom-server/index.js b/examples/kitchen-sink/packages/eslint-config-custom-server/index.js new file mode 100644 index 0000000..93e8c74 --- /dev/null +++ b/examples/kitchen-sink/packages/eslint-config-custom-server/index.js @@ -0,0 +1,19 @@ +module.exports = { + extends: ["eslint:recommended", "turbo"], + env: { + node: true, + es6: true, + }, + parserOptions: { + ecmaVersion: "latest", + sourceType: "module", + }, + overrides: [ + { + files: ["**/__tests__/**/*"], + env: { + jest: true, + }, + }, + ], +}; diff --git a/examples/kitchen-sink/packages/eslint-config-custom-server/package.json b/examples/kitchen-sink/packages/eslint-config-custom-server/package.json new file mode 100644 index 0000000..fd58c91 --- /dev/null +++ b/examples/kitchen-sink/packages/eslint-config-custom-server/package.json @@ -0,0 +1,13 @@ +{ + "name": "eslint-config-custom-server", + "version": "0.0.0", + "private": true, + "license": "MIT", + "main": "index.js", + "dependencies": { + "eslint-config-turbo": "latest" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/examples/kitchen-sink/packages/eslint-config-custom/index.js b/examples/kitchen-sink/packages/eslint-config-custom/index.js new file mode 100644 index 0000000..d44cb62 --- /dev/null +++ b/examples/kitchen-sink/packages/eslint-config-custom/index.js @@ -0,0 +1,13 @@ +module.exports = { + extends: ["next", "turbo", "prettier"], + settings: { + react: { + version: "detect", + }, + }, + parserOptions: { + babelOptions: { + presets: [require.resolve("next/babel")], + }, + }, +}; diff --git a/examples/kitchen-sink/packages/eslint-config-custom/package.json b/examples/kitchen-sink/packages/eslint-config-custom/package.json new file mode 100644 index 0000000..1538b63 --- /dev/null +++ b/examples/kitchen-sink/packages/eslint-config-custom/package.json @@ -0,0 +1,16 @@ +{ + "name": "eslint-config-custom", + "version": "0.0.0", + "private": true, + "license": "MIT", + "main": "index.js", + "dependencies": { + "eslint-config-next": "latest", + "eslint-config-prettier": "^8.3.0", + "eslint-plugin-react": "7.28.0", + "eslint-config-turbo": "latest" + }, + "publishConfig": { + "access": "public" + } +} diff --git a/examples/kitchen-sink/packages/jest-presets/jest/node/jest-preset.js b/examples/kitchen-sink/packages/jest-presets/jest/node/jest-preset.js new file mode 100644 index 0000000..b6c2593 --- /dev/null +++ b/examples/kitchen-sink/packages/jest-presets/jest/node/jest-preset.js @@ -0,0 +1,13 @@ +module.exports = { + roots: ["<rootDir>"], + transform: { + "^.+\\.tsx?$": "ts-jest", + }, + moduleFileExtensions: ["ts", "tsx", "js", "jsx", "json", "node"], + modulePathIgnorePatterns: [ + "<rootDir>/test/__fixtures__", + "<rootDir>/node_modules", + "<rootDir>/dist", + ], + preset: "ts-jest", +}; diff --git a/examples/kitchen-sink/packages/jest-presets/package.json b/examples/kitchen-sink/packages/jest-presets/package.json new file mode 100644 index 0000000..c598b40 --- /dev/null +++ b/examples/kitchen-sink/packages/jest-presets/package.json @@ -0,0 +1,9 @@ +{ + "name": "jest-presets", + "version": "0.0.0", + "private": true, + "license": "MIT", + "dependencies": { + "ts-jest": "^26.5.0" + } +} diff --git a/examples/kitchen-sink/packages/logger/.eslintrc.js b/examples/kitchen-sink/packages/logger/.eslintrc.js new file mode 100644 index 0000000..c8df607 --- /dev/null +++ b/examples/kitchen-sink/packages/logger/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ["custom"], +}; diff --git a/examples/kitchen-sink/packages/logger/package.json b/examples/kitchen-sink/packages/logger/package.json new file mode 100644 index 0000000..4b082c7 --- /dev/null +++ b/examples/kitchen-sink/packages/logger/package.json @@ -0,0 +1,31 @@ +{ + "name": "logger", + "version": "0.0.0", + "private": true, + "main": "./dist/index.js", + "source": "./src/index.ts", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsc", + "clean": "rm -rf .turbo && rm -rf node_modules && rm -rf dist", + "dev": "tsc -w", + "lint": "eslint \"src/**/*.ts*\"", + "test": "jest" + }, + "jest": { + "preset": "jest-presets/jest/node" + }, + "devDependencies": { + "@types/jest": "^26.0.22", + "@types/node": "^18.11.9", + "eslint": "^7.32.0", + "eslint-config-custom": "workspace:*", + "jest": "^26.6.3", + "jest-presets": "workspace:*", + "tsconfig": "workspace:*", + "typescript": "^4.8.3" + } +} diff --git a/examples/kitchen-sink/packages/logger/src/__tests__/log.test.ts b/examples/kitchen-sink/packages/logger/src/__tests__/log.test.ts new file mode 100644 index 0000000..fa597a8 --- /dev/null +++ b/examples/kitchen-sink/packages/logger/src/__tests__/log.test.ts @@ -0,0 +1,10 @@ +import { log } from ".."; + +jest.spyOn(global.console, "log"); + +describe("logger", () => { + it("prints a message", () => { + log("hello"); + expect(console.log).toBeCalled(); + }); +}); diff --git a/examples/kitchen-sink/packages/logger/src/__tests__/tsconfig.json b/examples/kitchen-sink/packages/logger/src/__tests__/tsconfig.json new file mode 100644 index 0000000..bf65be6 --- /dev/null +++ b/examples/kitchen-sink/packages/logger/src/__tests__/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "../../tsconfig.json", + "include": [".", "../."] +} diff --git a/examples/kitchen-sink/packages/logger/src/index.ts b/examples/kitchen-sink/packages/logger/src/index.ts new file mode 100644 index 0000000..e472eb3 --- /dev/null +++ b/examples/kitchen-sink/packages/logger/src/index.ts @@ -0,0 +1,3 @@ +export const log = (str: any) => { + console.log("logger: " + str); +}; diff --git a/examples/kitchen-sink/packages/logger/tsconfig.json b/examples/kitchen-sink/packages/logger/tsconfig.json new file mode 100644 index 0000000..74f3de4 --- /dev/null +++ b/examples/kitchen-sink/packages/logger/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "lib": ["ES2015"], + "module": "CommonJS", + "outDir": "./dist", + "rootDir": "./src" + }, + "exclude": ["node_modules"], + "extends": "tsconfig/base.json", + "include": ["src"] +} diff --git a/examples/kitchen-sink/packages/tsconfig/base.json b/examples/kitchen-sink/packages/tsconfig/base.json new file mode 100644 index 0000000..d72a9f3 --- /dev/null +++ b/examples/kitchen-sink/packages/tsconfig/base.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Default", + "compilerOptions": { + "composite": false, + "declaration": true, + "declarationMap": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "inlineSources": false, + "isolatedModules": true, + "moduleResolution": "node", + "noUnusedLocals": false, + "noUnusedParameters": false, + "preserveWatchOutput": true, + "skipLibCheck": true, + "strict": true + }, + "exclude": ["node_modules"] +} diff --git a/examples/kitchen-sink/packages/tsconfig/nextjs.json b/examples/kitchen-sink/packages/tsconfig/nextjs.json new file mode 100644 index 0000000..6af1347 --- /dev/null +++ b/examples/kitchen-sink/packages/tsconfig/nextjs.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "Next.js", + "extends": "./base.json", + "compilerOptions": { + "allowJs": true, + "declaration": false, + "declarationMap": false, + "incremental": true, + "jsx": "preserve", + "lib": ["dom", "dom.iterable", "esnext"], + "module": "esnext", + "noEmit": true, + "resolveJsonModule": true, + "target": "es5" + } +} diff --git a/examples/kitchen-sink/packages/tsconfig/package.json b/examples/kitchen-sink/packages/tsconfig/package.json new file mode 100644 index 0000000..6efb83e --- /dev/null +++ b/examples/kitchen-sink/packages/tsconfig/package.json @@ -0,0 +1,9 @@ +{ + "name": "tsconfig", + "version": "0.0.0", + "private": true, + "license": "MIT", + "publishConfig": { + "access": "public" + } +} diff --git a/examples/kitchen-sink/packages/tsconfig/react-library.json b/examples/kitchen-sink/packages/tsconfig/react-library.json new file mode 100644 index 0000000..af8711c --- /dev/null +++ b/examples/kitchen-sink/packages/tsconfig/react-library.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "display": "React Library", + "extends": "./base.json", + "compilerOptions": { + "jsx": "react-jsx", + "lib": ["ES2015"], + "module": "ESNext", + "target": "es6" + } +} diff --git a/examples/kitchen-sink/packages/tsconfig/vite.json b/examples/kitchen-sink/packages/tsconfig/vite.json new file mode 100644 index 0000000..46c2e55 --- /dev/null +++ b/examples/kitchen-sink/packages/tsconfig/vite.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://json.schemastore.org/tsconfig", + "extends": "./base.json", + "Display": "Vite", + "compilerOptions": { + "allowJs": false, + "esModuleInterop": false, + "jsx": "react", + "lib": ["dom", "dom.iterable", "esnext"], + "module": "ESNext", + "noEmit": true, + "resolveJsonModule": true, + "skipLibCheck": false, + "target": "ESNext", + "types": ["vite/client"] + } +} diff --git a/examples/kitchen-sink/packages/ui/.eslintrc.js b/examples/kitchen-sink/packages/ui/.eslintrc.js new file mode 100644 index 0000000..c8df607 --- /dev/null +++ b/examples/kitchen-sink/packages/ui/.eslintrc.js @@ -0,0 +1,4 @@ +module.exports = { + root: true, + extends: ["custom"], +}; diff --git a/examples/kitchen-sink/packages/ui/package.json b/examples/kitchen-sink/packages/ui/package.json new file mode 100644 index 0000000..2241c40 --- /dev/null +++ b/examples/kitchen-sink/packages/ui/package.json @@ -0,0 +1,39 @@ +{ + "name": "ui", + "version": "0.0.0", + "private": true, + "license": "MIT", + "sideEffects": false, + "main": "./dist/index.js", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "dist/**" + ], + "scripts": { + "build": "tsup src/index.tsx --format esm,cjs --dts --external react", + "clean": "rm -rf dist", + "dev": "tsup src/index.tsx --format esm,cjs --watch --dts --external react", + "lint": "eslint \"src/**/*.ts*\"", + "test": "jest" + }, + "jest": { + "preset": "jest-presets/jest/node" + }, + "devDependencies": { + "@types/jest": "^26.0.22", + "@types/react": "^17.0.13", + "@types/react-dom": "^17.0.8", + "eslint": "^7.32.0", + "eslint-config-custom": "workspace:*", + "jest": "^26.6.3", + "jest-presets": "workspace:*", + "react": "^18.2.0", + "tsconfig": "workspace:*", + "tsup": "^6.2.3", + "typescript": "^4.8.3" + }, + "dependencies": { + "react-dom": "^18.2.0" + } +} diff --git a/examples/kitchen-sink/packages/ui/src/CounterButton.tsx b/examples/kitchen-sink/packages/ui/src/CounterButton.tsx new file mode 100644 index 0000000..ec99b39 --- /dev/null +++ b/examples/kitchen-sink/packages/ui/src/CounterButton.tsx @@ -0,0 +1,45 @@ +import * as React from "react"; + +export const CounterButton = () => { + const [count, setCount] = React.useState(0); + return ( + <div + style={{ + background: `rgba(0,0,0,0.05)`, + borderRadius: `8px`, + padding: "1.5rem", + fontWeight: 500, + }} + > + <p style={{ margin: "0 0 1.5rem 0" }}> + This component is from{" "} + <code + style={{ + padding: "0.2rem 0.3rem", + background: `rgba(0,0,0,0.1)`, + borderRadius: "0.25rem", + }} + > + ui + </code> + </p> + <div> + <button + style={{ + background: "black", + color: "white", + border: "none", + padding: "0.5rem 1rem", + borderRadius: "0.25rem", + display: "inline-block", + cursor: "pointer", + }} + type="button" + onClick={() => setCount((c) => c + 1)} + > + Count: {count} + </button> + </div> + </div> + ); +}; diff --git a/examples/kitchen-sink/packages/ui/src/NewTabLink.tsx b/examples/kitchen-sink/packages/ui/src/NewTabLink.tsx new file mode 100644 index 0000000..e8a00a0 --- /dev/null +++ b/examples/kitchen-sink/packages/ui/src/NewTabLink.tsx @@ -0,0 +1,15 @@ +import * as React from "react"; +export const NewTabLink = ({ + children, + href, + ...other +}: { + children: React.ReactNode; + href: string; +}) => { + return ( + <a target="_blank" rel="noreferrer" href={href} {...other}> + {children} + </a> + ); +}; diff --git a/examples/kitchen-sink/packages/ui/src/__tests__/index.test.tsx b/examples/kitchen-sink/packages/ui/src/__tests__/index.test.tsx new file mode 100644 index 0000000..8956208 --- /dev/null +++ b/examples/kitchen-sink/packages/ui/src/__tests__/index.test.tsx @@ -0,0 +1,11 @@ +import * as React from "react"; +import * as ReactDOM from "react-dom"; +import { CounterButton } from "../CounterButton"; + +describe("CounterButton", () => { + it("renders without crashing", () => { + const div = document.createElement("div"); + ReactDOM.render(<CounterButton />, div); + ReactDOM.unmountComponentAtNode(div); + }); +}); diff --git a/examples/kitchen-sink/packages/ui/src/__tests__/tsconfig.json b/examples/kitchen-sink/packages/ui/src/__tests__/tsconfig.json new file mode 100644 index 0000000..10f19c1 --- /dev/null +++ b/examples/kitchen-sink/packages/ui/src/__tests__/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../tsconfig.json", + "include": [".", "../."], + "compilerOptions": { + "jsx": "react" + } +} diff --git a/examples/kitchen-sink/packages/ui/src/index.tsx b/examples/kitchen-sink/packages/ui/src/index.tsx new file mode 100644 index 0000000..4880f34 --- /dev/null +++ b/examples/kitchen-sink/packages/ui/src/index.tsx @@ -0,0 +1,3 @@ +import * as React from "react"; +export { NewTabLink } from "./NewTabLink"; +export { CounterButton } from "./CounterButton"; diff --git a/examples/kitchen-sink/packages/ui/tsconfig.json b/examples/kitchen-sink/packages/ui/tsconfig.json new file mode 100644 index 0000000..46c4f7b --- /dev/null +++ b/examples/kitchen-sink/packages/ui/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "lib": ["dom", "ES2015"] + }, + "extends": "tsconfig/react-library.json", + "include": ["."], + "exclude": ["dist", "build", "node_modules"] +} |
