From d719ab5fa5746412ba9b13d9e076e830f4443785 Mon Sep 17 00:00:00 2001 From: "moxey.eth" Date: Wed, 7 Feb 2024 12:33:02 +1100 Subject: [PATCH] initial commit --- .../actions/install-dependencies/action.yml | 12 ++++ .github/dependabot.yml | 6 ++ .github/workflows/canary.yml | 38 ++++++++++++ .github/workflows/on-pull-request.yml | 14 +++++ .github/workflows/on-push-to-main.yml | 41 +++++++++++++ .github/workflows/verify.yml | 57 ++++++++++++++++++ .gitignore | 6 ++ .vscode/extensions.json | 3 + .vscode/settings.json | 25 ++++++++ README.md | 3 + biome.json | 26 ++++++++ bun.lockb | Bin 0 -> 175432 bytes example/.gitignore | 1 + example/README.md | 11 ++++ example/package.json | 11 ++++ example/src/index.ts | 9 +++ example/tsconfig.json | 7 +++ package.json | 25 ++++++++ src/index.ts | 1 + src/package.json | 12 ++++ tsconfig.base.json | 39 ++++++++++++ tsconfig.build.json | 18 ++++++ tsconfig.json | 9 +++ 23 files changed, 374 insertions(+) create mode 100644 .github/actions/install-dependencies/action.yml create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/canary.yml create mode 100644 .github/workflows/on-pull-request.yml create mode 100644 .github/workflows/on-push-to-main.yml create mode 100644 .github/workflows/verify.yml create mode 100644 .gitignore create mode 100644 .vscode/extensions.json create mode 100644 .vscode/settings.json create mode 100644 README.md create mode 100644 biome.json create mode 100755 bun.lockb create mode 100644 example/.gitignore create mode 100644 example/README.md create mode 100644 example/package.json create mode 100644 example/src/index.ts create mode 100644 example/tsconfig.json create mode 100644 package.json create mode 100644 src/index.ts create mode 100644 src/package.json create mode 100644 tsconfig.base.json create mode 100644 tsconfig.build.json create mode 100644 tsconfig.json diff --git a/.github/actions/install-dependencies/action.yml b/.github/actions/install-dependencies/action.yml new file mode 100644 index 00000000..42c45f93 --- /dev/null +++ b/.github/actions/install-dependencies/action.yml @@ -0,0 +1,12 @@ +name: "Install dependencies" +description: "Prepare repository and all dependencies" + +runs: + using: "composite" + steps: + - name: Set up Bun + uses: oven-sh/setup-bun@v1 + + - name: Install dependencies + shell: bash + run: bun install \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 00000000..bc63aca3 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: 'github-actions' + directory: '/' + schedule: + interval: 'monthly' diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml new file mode 100644 index 00000000..63062818 --- /dev/null +++ b/.github/workflows/canary.yml @@ -0,0 +1,38 @@ +name: Release (Canary) +on: + push: + branches: [main] + workflow_dispatch: + +jobs: + canary: + name: Release canary + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Install dependencies + uses: ./.github/actions/install-dependencies + + - name: Setup .npmrc file + uses: actions/setup-node@v3 + with: + registry-url: 'https://registry.npmjs.org' + + - name: Set version + run: | + jq --arg prop "workspaces" 'del(.[$prop])' package.json > package.tmp.json && rm package.json && cp package.tmp.json package.json && rm package.tmp.json + cd src + npm --no-git-tag-version version 0.0.0 + npm --no-git-tag-version version $(npm pkg get version | sed 's/"//g')-$(git branch --show-current | tr -cs '[:alnum:]-' '-' | tr '[:upper:]' '[:lower:]' | sed 's/-$//').$(date +'%Y%m%dT%H%M%S') + + - name: Build + run: bun run build + + - name: Publish to npm + run: cd src && npm publish --tag $(git branch --show-current | tr -cs '[:alnum:]-' '-' | tr '[:upper:]' '[:lower:]' | sed 's/-$//') + env: + NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} diff --git a/.github/workflows/on-pull-request.yml b/.github/workflows/on-pull-request.yml new file mode 100644 index 00000000..0b555d2c --- /dev/null +++ b/.github/workflows/on-pull-request.yml @@ -0,0 +1,14 @@ +name: Pull request +on: + pull_request: + types: [opened, reopened, synchronize, ready_for_review] + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +jobs: + verify: + name: Verify + uses: ./.github/workflows/verify.yml + secrets: inherit \ No newline at end of file diff --git a/.github/workflows/on-push-to-main.yml b/.github/workflows/on-push-to-main.yml new file mode 100644 index 00000000..470d0b80 --- /dev/null +++ b/.github/workflows/on-push-to-main.yml @@ -0,0 +1,41 @@ +name: Main +on: + push: + branches: [main] + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + verify: + name: Verify + uses: ./.github/workflows/verify.yml + secrets: inherit + + changesets: + name: Changesets + needs: verify + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - name: Clone repository + uses: actions/checkout@v4 + with: + # This makes Actions fetch all Git history so that Changesets can generate changelogs with the correct commits + fetch-depth: 0 + + - name: Install dependencies + uses: ./.github/actions/install-dependencies + + - name: Create version pull request or publish to npm + uses: changesets/action@v1 + with: + title: 'chore: version packages' + commit: 'chore: version packages' + publish: bun run changeset:release + version: bun run changeset:version + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml new file mode 100644 index 00000000..c50d8e5c --- /dev/null +++ b/.github/workflows/verify.yml @@ -0,0 +1,57 @@ +name: Verify +on: + workflow_call: + +jobs: + lint: + name: Lint + runs-on: ubuntu-latest + timeout-minutes: 5 + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Install dependencies + uses: ./.github/actions/install-dependencies + + - name: Lint code + run: bun run format && bun run lint + + - uses: stefanzweifel/git-auto-commit-action@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + commit_message: 'chore: format' + commit_user_name: 'github-actions[bot]' + commit_user_email: 'github-actions[bot]@users.noreply.github.com' + + types: + name: Types + runs-on: ubuntu-latest + + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Install dependencies + uses: ./.github/actions/install-dependencies + + - name: Check types + run: bun run typecheck + + test: + name: Test + runs-on: ubuntu-latest + steps: + - name: Clone repository + uses: actions/checkout@v4 + + - name: Install dependencies + uses: ./.github/actions/install-dependencies + + - name: Build + run: bun run build + + - name: Run tests + run: bun run test \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..fc347eff --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +*.map +coverage +lib +node_modules +tsconfig.*.tsbuildinfo +tsconfig.tsbuildinfo \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 00000000..699ed733 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["biomejs.biome"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..223cd892 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,25 @@ +{ + "editor.defaultFormatter": "biomejs.biome", + "editor.formatOnSave": true, + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true, + "editor.codeActionsOnSave": { + "source.organizeImports.biome": "explicit" + }, + "[json]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[javascriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescript]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "[typescriptreact]": { + "editor.defaultFormatter": "biomejs.biome" + }, + "css.validate": false +} diff --git a/README.md b/README.md new file mode 100644 index 00000000..9a6bbc2e --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# π‘­π’“π’‚π’Žπ’†work + +A Framework for Farcaster Frames. \ No newline at end of file diff --git a/biome.json b/biome.json new file mode 100644 index 00000000..64196dbd --- /dev/null +++ b/biome.json @@ -0,0 +1,26 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.5.3/schema.json", + "files": { + "ignore": [ + "coverage", + "node_modules", + "src/vendor", + "tsconfig.json", + "tsconfig.*.json" + ] + }, + "organizeImports": { + "enabled": true + }, + "formatter": { + "enabled": true, + "indentStyle": "space", + "indentWidth": 2 + }, + "linter": { + "enabled": true, + "rules": { + "recommended": true + } + } +} diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..a5cf57fb6eb4fba4cbee5a175896b0db5130064a GIT binary patch literal 175432 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%0DN*F+S41 z3wS(#{&xP9WLf(MCu^VX-w*gH;Qw#e-#*}R{gAzb-F}e%3&{Pv|E0%;pMRGKum21G zJBD6I_)y^S`bYBgHoyB!+Mfa5un+UcE6-YgIBs0j@jJhyj`*JnJefbVLCQ(H|E8qf z3W~?|gFL76*9bhmej(SKu5YwYcoX2!Ki^;S%PIbE*Iy0r2H+pp zAI4AOf{(vVq@Cbc*8B~C)>uZ$e+$#vnFEje54LBQrMKNc`N#ev&+Z%$Usr%P0spx6 zkmZyYS7u$mkjL*1+1J?m8m<9|0%dbgKWPjGX}_ZC!xJ^~3JC5!-~%>?404c=*@5{@5KmjDh$c zGLf}@IbrGiEa36|+28g*33wae@w~&BNL=XScZsxX0^R_4k|+8*7VAhm5eOdFKZ&2y z^%Ds^xqjgoa>|zgkL!=b#OeO?9(ZG_|JWx^{o71p-G89}zuEsvfJgu67Y{P7XzzE4 zwEGA=OkppN?a6cG?^vuO{6skUbZNZgpFpaf@Ug(-`Gfa8=zAcC{6XMx{}%-g?|lYy z$iJrI$9UkY6prWb0XRqhxPH+Fr|U-n1`oe~fnUR6kb5Zj_{T)XZz=H8fENRTtbsqm z(17r@z{4f{pZ9N^-haLY9`B#g-rxAwgOit>KNvTs>u(wGFonJQ*WaxFmk8^jPr|j_iYfih=l_4?M>IxBMR9as3i|MA`K}2yPy6{R#nq zv6DF1<)eU~2D~uEa(e#M01s2p+kbXr$Jj{QufSvfaowSBPUF{tm&bVika^=YelOq+ zfG6>A>VMxaJamDrMEpGk9)1(zKW)I` z+1)pYZNlT?!~KJkwTm_guMIq&|CncY?&*9G@Ob_rPi$iSpAu=ii{g3z1pHD@_(tGy z{UcAxerfuzS<-fpA#4BVqFRyj;9ntHA>r+TNB@Lpw;zPx0K65&FbwM|3l&7oAB)R9s5Sc&jxthzpxB>c5M)T4e+@CV%%892M0Te@E2(DBgg6a zD`xuh{6m|Zj$btJj#T{UpHu!S@MQlWV}N%4lt}+&;O2J@%|EC84+p+4=g%GB@%l~r zP2yrVey3SK*B>&RuK&zmcuv<(Bk-_<{)wMcUJ_p3;qwRf|8M5c19)=&{Z0RO08h>z z$1albI}SX#|Hg85p92X026(c6Bg<|Kgtxb5 z#ZU5_@@2q72)*NnHaH!BCQQB|@Hp=1o74Uq15fr3+&egpe=YFj`5W+m<^@0hE|Kv% z4?G!vY){I6$I{ykw`E;F2uGA%-W_;c|76@bUB3r_H>BndeR6vKegxit#&bG(hw&>19@e8t?|dBZoFP<&%J?&mZX*nEGuZ?G6Kv z_pg}8gVXiX2|V7v5_`XON~2Oj4i&|a2P|2e=<2Oigt1RU({A;kZC;PL(+^Eh^- z96tUwk#@S?Kd(RR`bNWqUjjU?KO8$w65%U=w*sDw8@n+Op3jFh{$%cmoj=7w_!+<( zQvUI8K-ldE;a37r_8;`kDPK$ZC-cwg`WN(N?H}xNWL!x6CcxwSFU+$$_Gp9fw}5w{ z%|E+w5Z=-6=kMR5T~6okBJid(|D4{x3j4F3e=#0*W5+oEi63|a%0DT?`adPoHWzrj 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 { + return c.text("Hello Hono!"); +}); + +export default app; diff --git a/example/tsconfig.json b/example/tsconfig.json new file mode 100644 index 00000000..c442b33f --- /dev/null +++ b/example/tsconfig.json @@ -0,0 +1,7 @@ +{ + "compilerOptions": { + "strict": true, + "jsx": "react-jsx", + "jsxImportSource": "hono/jsx" + } +} \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 00000000..5452ac79 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "workspaces": ["src"], + "scripts": { + "build": "bun run clean && tsc --project ./tsconfig.build.json", + "changeset": "changeset", + "changeset:release": "bun run build && changeset publish", + "changeset:version": "changeset version && bun install --lockfile-only", + "clean": "rimraf src/index.js src/lib src/tsconfig.build.tsbuildinfo", + "format": "biome format . --write", + "lint": "biome check . --apply", + "test": "vitest", + "typecheck": "tsc --noEmit" + }, + "devDependencies": { + "@biomejs/biome": "^1.5.3", + "@changesets/changelog-github": "^0.5.0", + "@changesets/cli": "^2.27.1", + "@types/bun": "latest", + "@vitest/coverage-v8": "^1.2.2", + "hono": "^3.12.8", + "rimraf": "^5.0.5", + "typescript": "^5.0.0", + "vitest": "^1.2.2" + } +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 00000000..1e29c457 --- /dev/null +++ b/src/index.ts @@ -0,0 +1 @@ +export const hello = "world"; diff --git a/src/package.json b/src/package.json new file mode 100644 index 00000000..87f254c4 --- /dev/null +++ b/src/package.json @@ -0,0 +1,12 @@ +{ + "name": "@wevm/framework", + "version": "0.0.0", + "type": "module", + "module": "lib/index.js", + "types": "lib/index.d.ts", + "typings": "lib/index.d.ts", + "sideEffects": false, + "peerDependencies": { + "hono": "^3" + } +} diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 00000000..ece0415b --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,39 @@ +{ + // This tsconfig file contains the shared config for the build (tsconfig.build.json) and type checking (tsconfig.json) config. + "include": [], + "compilerOptions": { + // Incremental builds + // NOTE: Enabling incremental builds speeds up `tsc`. Keep in mind though that it does not reliably bust the cache when the `tsconfig.json` file changes. + "incremental": true, + + // Type checking + "strict": true, + "useDefineForClassFields": true, // Not enabled by default in `strict` mode unless we bump `target` to ES2022. + "noFallthroughCasesInSwitch": true, // Not enabled by default in `strict` mode. + "noImplicitReturns": true, // Not enabled by default in `strict` mode. + "useUnknownInCatchVariables": true, // TODO: This would normally be enabled in `strict` mode but would require some adjustments to the codebase. + "noImplicitOverride": true, // Not enabled by default in `strict` mode. + "noUnusedLocals": true, // Not enabled by default in `strict` mode. + "noUnusedParameters": true, // Not enabled by default in `strict` mode. + + // JavaScript support + "allowJs": false, + "checkJs": false, + + // Interop constraints + "esModuleInterop": false, + "allowSyntheticDefaultImports": false, + "forceConsistentCasingInFileNames": true, + "verbatimModuleSyntax": true, + "importHelpers": true, // This is only used for build validation. Since we do not have `tslib` installed, this will fail if we accidentally make use of anything that'd require injection of helpers. + + // Language and environment + "moduleResolution": "NodeNext", + "module": "NodeNext", + "target": "ES2021", // Setting this to `ES2021` enables native support for `Node v16+`: https://github.com/microsoft/TypeScript/wiki/Node-Target-Mapping. + "lib": ["ES2022", "DOM"], + + // Skip type checking for node modules + "skipLibCheck": true + } +} \ No newline at end of file diff --git a/tsconfig.build.json b/tsconfig.build.json new file mode 100644 index 00000000..d8c2f06e --- /dev/null +++ b/tsconfig.build.json @@ -0,0 +1,18 @@ +{ + // This file is used to compile the for cjs and esm (see package.json build scripts). It should exclude all test files. + "extends": "./tsconfig.base.json", + "include": ["src"], + "exclude": [ + "src/**/*.test.ts", + "src/**/*.test.tsx", + "src/**/*.test-d.ts", + "src/**/*.test-d.tsx" + ], + "compilerOptions": { + "declaration": true, + "declarationMap": true, + "sourceMap": true, + "outDir": "./src/lib", + "rootDir": "./src" + } +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 00000000..c9624a66 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,9 @@ +{ + // This configuration is used for local development and type checking. + "extends": "./tsconfig.base.json", + "include": ["src"], + "compilerOptions": { + "jsx": "react-jsx", + "jsxImportSource": "hono/jsx" + } +} \ No newline at end of file