Skip to content

Commit ecbe2f2

Browse files
committed
Open-source stack initial commit
1 parent f5812bb commit ecbe2f2

37 files changed

Lines changed: 13731 additions & 0 deletions

.eslintrc

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{
2+
"env": {
3+
"browser": true,
4+
"es2021": true
5+
},
6+
"extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended"],
7+
"parser": "@typescript-eslint/parser",
8+
"parserOptions": {
9+
"ecmaVersion": "latest",
10+
"sourceType": "module"
11+
},
12+
13+
"plugins": ["@typescript-eslint", "unused-imports"],
14+
"rules": {
15+
"quotes": ["error", "double"],
16+
"semi": ["error", "always"],
17+
"@typescript-eslint/no-explicit-any": "off",
18+
"unused-imports/no-unused-imports": "error"
19+
}
20+
}

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
Fixes #
2+
3+
# Description
4+
5+
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
6+
List any dependencies that are required for this change.
7+
8+
## Type of change
9+
10+
Please mark relevant options with an `x` in the brackets.
11+
12+
- [ ] Bug fix (non-breaking change which fixes an issue)
13+
- [ ] New feature (non-breaking change which adds functionality)
14+
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
15+
- [ ] This change requires a documentation update
16+
- [ ] Algorithm update - updates algorithm documentation/questions/answers etc.
17+
- [ ] Other (please describe):
18+
19+
# How Has This Been Tested?
20+
21+
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also
22+
list any relevant details for your test configuration
23+
24+
- [ ] Integration tests
25+
- [ ] Unit tests
26+
- [ ] Manual tests
27+
- [ ] No tests required
28+
29+
# Reviewer checklist
30+
31+
Mark everything that needs to be checked before merging the PR.
32+
33+
- [ ] Check if the UI is working as expected and is satisfactory
34+
- [ ] Check if the code is well documented
35+
- [ ] Check if the behavior is what is expected
36+
- [ ] Check if the code is well tested
37+
- [ ] Check if the code is readable and well formatted
38+
- [ ] Additional checks (document below if any)
39+
40+
# Screenshots (if appropriate):
41+
42+
# Questions (if appropriate):

.github/workflows/publish.yaml

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
name: Publish Package to npmjs
2+
on:
3+
release:
4+
types: [published]
5+
jobs:
6+
npm-publish:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v4
10+
# Setup .npmrc file to publish to npm
11+
- uses: actions/setup-node@v4
12+
with:
13+
node-version: "20.x"
14+
registry-url: "https://registry.npmjs.org"
15+
- run: npm ci
16+
- run: npm publish
17+
env:
18+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
19+
github-packages:
20+
runs-on: ubuntu-latest
21+
permissions:
22+
contents: read
23+
packages: write
24+
steps:
25+
- uses: actions/checkout@v4
26+
# Setup .npmrc file to publish to GitHub Packages
27+
- uses: actions/setup-node@v4
28+
with:
29+
node-version: "20.x"
30+
registry-url: "https://npm.pkg.github.com"
31+
- run: npm ci
32+
- run: npm publish
33+
env:
34+
NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,3 +128,4 @@ dist
128128
.yarn/build-state.yml
129129
.yarn/install-state.gz
130130
.pnp.*
131+
/dist

.prettierrc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"printWidth": 120
3+
}

CODE_OF_CONDUCT.md

Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
1+
# Contributor Covenant Code of Conduct
2+
3+
## Our Pledge
4+
5+
We as members, contributors, and leaders pledge to make participation in our
6+
community a harassment-free experience for everyone, regardless of age, body
7+
size, visible or invisible disability, ethnicity, sex characteristics, gender
8+
identity and expression, level of experience, education, socio-economic status,
9+
nationality, personal appearance, race, religion, or sexual identity
10+
and orientation.
11+
12+
We pledge to act and interact in ways that contribute to an open, welcoming,
13+
diverse, inclusive, and healthy community.
14+
15+
## Our Standards
16+
17+
Examples of behavior that contributes to a positive environment for our
18+
community include:
19+
20+
* Demonstrating empathy and kindness toward other people
21+
* Being respectful of differing opinions, viewpoints, and experiences
22+
* Giving and gracefully accepting constructive feedback
23+
* Accepting responsibility and apologizing to those affected by our mistakes,
24+
and learning from the experience
25+
* Focusing on what is best not just for us as individuals, but for the
26+
overall community
27+
28+
Examples of unacceptable behavior include:
29+
30+
* The use of sexualized language or imagery, and sexual attention or
31+
advances of any kind
32+
* Trolling, insulting or derogatory comments, and personal or political attacks
33+
* Public or private harassment
34+
* Publishing others' private information, such as a physical or email
35+
address, without their explicit permission
36+
* Other conduct which could reasonably be considered inappropriate in a
37+
professional setting
38+
39+
## Enforcement Responsibilities
40+
41+
Community leaders are responsible for clarifying and enforcing our standards of
42+
acceptable behavior and will take appropriate and fair corrective action in
43+
response to any behavior that they deem inappropriate, threatening, offensive,
44+
or harmful.
45+
46+
Community leaders have the right and responsibility to remove, edit, or reject
47+
comments, commits, code, wiki edits, issues, and other contributions that are
48+
not aligned to this Code of Conduct, and will communicate reasons for moderation
49+
decisions when appropriate.
50+
51+
## Scope
52+
53+
This Code of Conduct applies within all community spaces, and also applies when
54+
an individual is officially representing the community in public spaces.
55+
Examples of representing our community include using an official e-mail address,
56+
posting via an official social media account, or acting as an appointed
57+
representative at an online or offline event.
58+
59+
## Enforcement
60+
61+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62+
reported to the community leaders responsible for enforcement at
63+
.
64+
All complaints will be reviewed and investigated promptly and fairly.
65+
66+
All community leaders are obligated to respect the privacy and security of the
67+
reporter of any incident.
68+
69+
## Enforcement Guidelines
70+
71+
Community leaders will follow these Community Impact Guidelines in determining
72+
the consequences for any action they deem in violation of this Code of Conduct:
73+
74+
### 1. Correction
75+
76+
**Community Impact**: Use of inappropriate language or other behavior deemed
77+
unprofessional or unwelcome in the community.
78+
79+
**Consequence**: A private, written warning from community leaders, providing
80+
clarity around the nature of the violation and an explanation of why the
81+
behavior was inappropriate. A public apology may be requested.
82+
83+
### 2. Warning
84+
85+
**Community Impact**: A violation through a single incident or series
86+
of actions.
87+
88+
**Consequence**: A warning with consequences for continued behavior. No
89+
interaction with the people involved, including unsolicited interaction with
90+
those enforcing the Code of Conduct, for a specified period of time. This
91+
includes avoiding interactions in community spaces as well as external channels
92+
like social media. Violating these terms may lead to a temporary or
93+
permanent ban.
94+
95+
### 3. Temporary Ban
96+
97+
**Community Impact**: A serious violation of community standards, including
98+
sustained inappropriate behavior.
99+
100+
**Consequence**: A temporary ban from any sort of interaction or public
101+
communication with the community for a specified period of time. No public or
102+
private interaction with the people involved, including unsolicited interaction
103+
with those enforcing the Code of Conduct, is allowed during this period.
104+
Violating these terms may lead to a permanent ban.
105+
106+
### 4. Permanent Ban
107+
108+
**Community Impact**: Demonstrating a pattern of violation of community
109+
standards, including sustained inappropriate behavior, harassment of an
110+
individual, or aggression toward or disparagement of classes of individuals.
111+
112+
**Consequence**: A permanent ban from any sort of public interaction within
113+
the community.
114+
115+
## Attribution
116+
117+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118+
version 2.0, available at
119+
https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
120+
121+
Community Impact Guidelines were inspired by [Mozilla's code of conduct
122+
enforcement ladder](https://github.com/mozilla/diversity).
123+
124+
[homepage]: https://www.contributor-covenant.org
125+
126+
For answers to common questions about this code of conduct, see the FAQ at
127+
https://www.contributor-covenant.org/faq. Translations are available at
128+
https://www.contributor-covenant.org/translations.

README.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Open-source stack
2+
3+
Full starter stack to develop CJS/ESM compatible packages with TypeScript, Vitest, ESLint, Prettier, and GitHub Actions.
4+
5+
## Tools
6+
7+
- **TypeScript**: TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
8+
- **Vitest**: A modern test runner built on top of Vite.
9+
- **ESLint**: ESLint statically analyzes your code to quickly find problems.
10+
- **Prettier**: Prettier is an opinionated code formatter.
11+
- **GitHub Actions**: Automate your workflow from idea to production.
12+
- **tsup** - Zero-config bundler for tiny TypeScript libraries.
13+
14+
## Features
15+
16+
- **ESM/CJS ready** - Write your code in TypeScript and publish it as ESM and CJS with 0 configuration.
17+
- **Are The types wrong? ready** - Passes all the checks for typings on https://arethetypeswrong.github.io/ by default.
18+
- **ESM/CJS test apps setup** - Test your package in both ESM and CJS environments already setup for you.
19+
- **Test runner setup** - Test your open source package with Vitest already setup for you.
20+
- **Linting setup** - Lint your code with ESLint and Prettier already setup for you.
21+
- **GitHub Actions setup** - Automate deployments to npm by using GitHub Actions.
22+
23+
## Setup
24+
25+
1. Use this template to create a new repository.
26+
2. Clone the repository.
27+
3. Install the dependencies with `npm install`.
28+
4. Change the package name in `package.json`.
29+
5. Change the `repository`, `bugs`, and `homepage` fields in `package.json` to your github repo.
30+
6. Change the license if required.
31+
7. Change the `open-source-stack` dependency in your test-apps to your name
32+
8. Add the NPM_TOKEN secret to your GitHub repository.
33+
9. Start coding!
34+
35+
## Scripts
36+
37+
- `npm run build` - Build the package.
38+
- `npm run test` - Run the tests.
39+
- `npm run lint` - Lint the code.
40+
- `npm run dev` - Start the package and ESM test app in watch mode for development.
41+
- `npm run dev:cjs` - Start the package and CJS test app in watch mode for development.
42+

SECURITY.MD

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
| Version | Supported |
6+
| ------- | ------------------ |
7+
| 1.0.x | :white_check_mark: |
8+
9+
## Reporting a Vulnerability
10+
11+
In case of a vulnerability please reach out to active maintainers of the project and report it to them.

0 commit comments

Comments
 (0)