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 .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -61,4 +61,4 @@ jobs:
uses: cycjimmy/semantic-release-action@v4
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
7 changes: 7 additions & 0 deletions .oxfmtrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"$schema": "./node_modules/oxfmt/configuration_schema.json",
"printWidth": 100,
"trailingComma": "none",
"arrowParens": "avoid",
"ignorePatterns": ["**/dist/"]
}
67 changes: 67 additions & 0 deletions .oxlintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
{
"$schema": "./node_modules/oxlint/configuration_schema.json",
"plugins": ["typescript", "react"],
"categories": {
"correctness": "off",
"suspicious": "off"
},
"ignorePatterns": ["**/dist/", "**/*.d.ts"],
"rules": {
"curly": ["error"],
"no-array-constructor": "error",
"no-unused-vars": "warn",
"no-use-before-define": "off",
"react/display-name": "error",
"react/jsx-key": "error",
"react/jsx-no-comment-textnodes": "error",
"react/jsx-no-duplicate-props": "error",
"react/jsx-no-target-blank": "error",
"react/jsx-no-undef": "error",
"react/no-children-prop": "error",
"react/no-danger-with-children": "error",
"react/no-direct-mutation-state": "error",
"react/no-find-dom-node": "error",
"react/no-is-mounted": "error",
"react/no-render-return-value": "error",
"react/no-string-refs": "error",
"react/no-unescaped-entities": "error",
"react/no-unknown-property": "error",
"react/no-unsafe": "off",
"react/react-in-jsx-scope": "off",
"typescript/ban-ts-comment": [
"error",
{
"ts-check": true,
"ts-ignore": "allow-with-description",
"ts-nocheck": "allow-with-description",
"ts-expect-error": false
}
],
"typescript/explicit-function-return-type": "off",
"typescript/explicit-module-boundary-types": "off",
"typescript/no-duplicate-enum-values": "error",
"typescript/no-empty-object-type": [
"error",
{
"allowInterfaces": "always",
"allowObjectTypes": "never"
}
],
"typescript/no-explicit-any": "off",
"typescript/no-extra-non-null-assertion": "error",
"typescript/no-misused-new": "error",
"typescript/no-namespace": "off",
"typescript/no-non-null-asserted-optional-chain": "error",
"typescript/no-non-null-assertion": "off",
"typescript/no-require-imports": "error",
"typescript/no-restricted-types": "error",
"typescript/no-this-alias": "error",
"typescript/no-unnecessary-type-constraint": "error",
"typescript/no-unsafe-declaration-merging": "error",
"typescript/no-unsafe-function-type": "error",
"typescript/no-wrapper-object-types": "error",
"typescript/prefer-as-const": "error",
"typescript/prefer-namespace-keyword": "error",
"typescript/triple-slash-reference": "error"
}
}
5 changes: 0 additions & 5 deletions .prettierrc.mjs

This file was deleted.

940 changes: 0 additions & 940 deletions .yarn/releases/yarn-4.15.0.cjs

This file was deleted.

944 changes: 944 additions & 0 deletions .yarn/releases/yarn-4.16.0.cjs

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion .yarnrc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ nodeLinker: node-modules

npmMinimalAgeGate: 3d

yarnPath: .yarn/releases/yarn-4.15.0.cjs
yarnPath: .yarn/releases/yarn-4.16.0.cjs
37 changes: 26 additions & 11 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,21 +22,36 @@ src/
- **Package manager**: Yarn 4 — always use `yarn`, never `npm` or `npx`.
- **Module system**: ESM only (`"type": "module"`). All internal imports use `.js` extensions.
- **TypeScript**: strict mode, `verbatimModuleSyntax`, `isolatedDeclarations`. All exported functions must have explicit return types.
- **Formatting**: Prettier. Run `yarn lint:fix` before committing.
- **Formatting**: oxfmt. Run `yarn format:fix` to auto-format.
- **Linting**: oxlint. Run `yarn lint:fix` to auto-fix.
- **No runtime dependencies**. React is an optional peer dependency.

## Pre-commit checklist

Before every commit, **all** of the following must pass with zero errors or warnings:

```
yarn format:check && yarn lint && yarn test && yarn build
```

Do not commit if any check fails. Fix all issues first — no known errors should be left unresolved.

**CRITICAL — No leaked secrets.** Before every commit, triple-check that no API keys, tokens, passwords, or secrets are present in the diff. Run `git diff --cached` and scan for anything that looks like a key. If in doubt, do not commit — ask first.

## Commands

| Task | Command |
|------|---------|
| Type-check | `yarn tsc --noEmit` |
| Build | `yarn build` |
| Test all | `yarn test` |
| Test web only | `yarn test:web` |
| Test node only | `yarn test:node` |
| Test react only | `yarn test:react` |
| Lint check | `yarn lint` |
| Lint fix | `yarn lint:fix` |
| Task | Command |
| --------------- | ------------------- |
| Type-check | `yarn tsc --noEmit` |
| Build | `yarn build` |
| Test all | `yarn test` |
| Test web only | `yarn test:web` |
| Test node only | `yarn test:node` |
| Test react only | `yarn test:react` |
| Format check | `yarn format:check` |
| Format fix | `yarn format:fix` |
| Lint check | `yarn lint` |
| Lint fix | `yarn lint:fix` |

## Testing

Expand Down
Loading
Loading