Skip to content

Commit 17e35fe

Browse files
authored
feat: initial implementation (#1)
1 parent 8a1b13a commit 17e35fe

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+8510
-3
lines changed

.eslintrc.cjs

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// This is a workaround for https://github.com/eslint/eslint/issues/3458
2+
require('@rushstack/eslint-config/patch/modern-module-resolution');
3+
4+
module.exports = {
5+
ignorePatterns: ['vitest.config.mjs'],
6+
parserOptions: {
7+
project: 'tsconfig.json',
8+
tsconfigRootDir: __dirname,
9+
ecmaVersion: 'latest',
10+
sourceType: 'module'
11+
},
12+
settings: {
13+
'import/extensions': ['.js', '.jsx', '.ts', '.tsx'],
14+
'import/parsers': {
15+
'@typescript-eslint/parser': ['.ts', '.tsx']
16+
},
17+
'import/resolver': {
18+
node: {
19+
extensions: ['.js', '.jsx', '.ts', '.tsx']
20+
}
21+
}
22+
},
23+
extends: [
24+
'@runespoorstack/eslint-config/core/base-ts',
25+
'@runespoorstack/eslint-config/mixins/prettier'
26+
],
27+
overrides: [
28+
{
29+
files: ['**/*.@(spec|test).[tj]s?(x)'],
30+
extends: ['@runespoorstack/eslint-config/mixins/vitest'],
31+
rules: {
32+
'@typescript-eslint/no-explicit-any': 'off'
33+
}
34+
}
35+
],
36+
rules: {
37+
'no-console': 'off',
38+
'import/extensions': [
39+
'error',
40+
'ignorePackages',
41+
{
42+
js: 'never',
43+
jsx: 'never',
44+
ts: 'never',
45+
tsx: 'never'
46+
}
47+
]
48+
}
49+
};

.github/CODEOWNERS

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* @BorysShulyak

.github/FUNDING.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,5 @@ liberapay: # Replace with a single Liberapay username
1010
issuehunt: # Replace with a single IssueHunt username
1111
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
1212
polar: # Replace with a single Polar username
13-
buy_me_a_coffee: coff.ee/borisshulyak
14-
thanks_dev: # Replace with a single thanks.dev username
13+
buy_me_a_coffee: borisshulyak
1514
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

.github/ISSUE_TEMPLATE/bug.yml

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
name: 🐞 Bug Report
2+
description: Something does not work or is flaky! let us know!
3+
labels: ['type::bug', 'workflow::problem validation']
4+
title: '[Bug]:'
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to fill out this bug report!
10+
11+
- type: textarea
12+
id: description
13+
attributes:
14+
description: 'A clear and concise description of what you expected to happen instead. If you intend to submit a PR for this issue, tell us in the description. Thanks!'
15+
label: Describe the bug
16+
placeholder: Actual Result ... Expected Result...
17+
18+
validations:
19+
required: true
20+
21+
- type: input
22+
id: reproduction
23+
attributes:
24+
label: Reproduction
25+
description: Please provide a link to a repo that can reproduce the problem you ran into. A [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) is required ([Why?](https://antfu.me/posts/why-reproductions-are-required)). If a report is vague (e.g. just a generic error message) and has no reproduction, it will receive a "need reproduction" label.
26+
placeholder: Reproduction URL
27+
validations:
28+
required: true
29+
30+
- type: textarea
31+
id: reproduction-steps
32+
attributes:
33+
label: Steps to reproduce
34+
description: Please provide any reproduction steps that may need to be described. E.g. if it happens only when running the dev or build script make sure it's clear which one to use.
35+
36+
- type: textarea
37+
id: system-info
38+
attributes:
39+
label: System Info
40+
description: Output of `npx envinfo --system --binaries --browsers`. [More details.](https://www.npmjs.com/package/envinfo)
41+
render: shell
42+
placeholder: System, Binaries, Browsers
43+
validations:
44+
required: true
45+
46+
- type: textarea
47+
id: additional_information
48+
attributes:
49+
label: Additional Information
50+
validations:
51+
required: false
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
name: 📖 Documentation Suggestion
2+
description: Suggestions on how we can improve the documentation.
3+
title: '[Docs]:'
4+
labels: ['type::maintenance', 'workflow::problem validation']
5+
body:
6+
- type: markdown
7+
attributes:
8+
value: |
9+
Thanks for taking the time to fill out docs suggestion! However, if you think it's something you can fix yourself, please submit a PR instead.
10+
In every doc page, you will be able to find the "Edit this page" in the right menu!
11+
12+
- type: textarea
13+
id: description
14+
attributes:
15+
description: 'A clear and concise description of your suggestion to improve the docs.'
16+
label: Suggestion
17+
validations:
18+
required: true

.github/ISSUE_TEMPLATE/feature.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
name: ✨ Feature Request
2+
description: Suggest an idea for this project.
3+
labels: ['type::feature', 'workflow::backlog validation']
4+
title: '[Feature Request]:'
5+
body:
6+
- type: textarea
7+
id: use_case
8+
attributes:
9+
label: 'Is your feature request related to a problem?'
10+
description: "A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]"
11+
validations:
12+
required: true
13+
14+
- type: textarea
15+
id: solution
16+
attributes:
17+
label: "Describe the solution you'd like"
18+
description: 'A clear and concise description of what you want to happen.'
19+
validations:
20+
required: true
21+
22+
- type: textarea
23+
id: alternatives
24+
attributes:
25+
label: "Describe alternatives you've considered"
26+
description: "A clear and concise description of any alternative solutions or features you've considered."
27+
validations:
28+
required: true
29+
30+
- type: textarea
31+
id: additional_context
32+
attributes:
33+
label: 'Additional context'
34+
description: 'Add any other context or screenshots about the feature request here.'
35+
validations:
36+
required: false

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# Pull Request Template
2+
3+
- [ ] Changes were structured by the logical commits/MRs: one logical change - one commit/MR.
4+
- [ ] MR pipeline is green.
5+
- [ ] Tests are added/updated (if relevant).
6+
- [ ] Change are fully described in the MR description.
7+
- [ ] The related MRs are linked to the current (if relevant).
8+
- [ ] Reviewers are assigned.
9+
10+
## High-level description of changes
11+
12+
<!--
13+
Describe the purposes and results of your changes.
14+
-->
15+
16+
## Related links
17+
18+
<!--
19+
Links to related tickets, documentation, guides, etc. Use the bullet list.
20+
-->
21+
22+
## Result examples (optionally)
23+
24+
<!--
25+
Screenshots for result. Use the collapsable images to make your description human-readable
26+
27+
<details><summary>Click to expand</summary>
28+
29+
</details>
30+
-->

.github/workflows/main-ci.yml

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
name: Main CI
2+
on:
3+
push:
4+
branches:
5+
- main
6+
paths-ignore:
7+
- '.cursor/**'
8+
- '.prompt/**'
9+
- 'drawio/**'
10+
- 'excalidraw/**'
11+
- '.coderabbit.yaml'
12+
- '.unimportedrc.json'
13+
- 'README.md'
14+
- 'changes/**'
15+
- 'CHANGELOG.*'
16+
- 'codecov.yml'
17+
18+
concurrency:
19+
group: ${{ github.workflow }}-${{ github.ref }}
20+
cancel-in-progress: ${{ github.ref == 'refs/heads/main' }}
21+
22+
jobs:
23+
test:
24+
uses: ./.github/workflows/reusable-test.yml
25+
with:
26+
type: main
27+
28+
changelog-apply:
29+
runs-on: ubuntu-latest
30+
timeout-minutes: 5
31+
needs: [test]
32+
steps:
33+
- name: Checkout Repository
34+
uses: actions/checkout@v4
35+
with:
36+
fetch-depth: 0
37+
token: ${{ secrets.ACTIONS_PTA }}
38+
39+
- name: Git set author name
40+
run: git config --global user.name "runespoorengineering"
41+
42+
- name: Git set author email
43+
run: git config --global user.email "runespoorengineering@gmail.com"
44+
45+
- name: Use Node.js/20.9.0
46+
uses: actions/setup-node@v4
47+
with:
48+
registry-url: ${{ secrets.NPM_REGISTRY_URL }}
49+
always-auth: true
50+
node-version: 20.9.0
51+
env:
52+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
53+
54+
- name: Install pnpm
55+
uses: pnpm/action-setup@v4
56+
with:
57+
version: 9
58+
run_install: false
59+
60+
- name: Install dependencies
61+
run: pnpm install
62+
63+
- name: Apply Changelog
64+
run: pnpm run changelog:apply
65+
66+
build:
67+
uses: ./.github/workflows/reusable-build.yml
68+
with:
69+
artifact_name: ${{ vars.ARTIFACT_NAME }}
70+
artifact_path: ${{ vars.ARTIFACT_PATH }}
71+
72+
publish:
73+
uses: ./.github/workflows/reusable-publish.yml
74+
with:
75+
artifact_name: ${{ vars.ARTIFACT_NAME }}
76+
artifact_path: ${{ vars.ARTIFACT_PATH }}

.github/workflows/mr-ci.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
---
2+
name: Merge Request CI
3+
on:
4+
pull_request:
5+
branches:
6+
- '*'
7+
paths-ignore:
8+
- '.cursor/**'
9+
- '.prompt/**'
10+
- 'drawio/**'
11+
- 'excalidraw/**'
12+
- '.coderabbit.yaml'
13+
- '.unimportedrc.json'
14+
- 'README.md'
15+
- 'src/stories/**'
16+
- 'changes/**'
17+
- 'CHANGELOG.*'
18+
- 'codecov.yml'
19+
20+
concurrency:
21+
group: ${{ github.workflow }}-${{ github.ref }}
22+
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
23+
24+
jobs:
25+
verify:
26+
uses: ./.github/workflows/reusable-pull-request-verification.yml
27+
28+
build:
29+
needs: [verify]
30+
uses: ./.github/workflows/reusable-build.yml
31+
with:
32+
artifact_name: ${{ vars.ARTIFACT_NAME }}
33+
artifact_path: ${{ vars.ARTIFACT_PATH }}
34+
35+
test:
36+
needs: [build]
37+
uses: ./.github/workflows/reusable-test.yml
38+
with:
39+
type: mr
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: Build
2+
on:
3+
workflow_call:
4+
inputs:
5+
artifact_name:
6+
required: true
7+
type: string
8+
artifact_path:
9+
required: true
10+
type: string
11+
12+
jobs:
13+
build:
14+
runs-on: ubuntu-latest
15+
timeout-minutes: 5
16+
steps:
17+
- name: Checkout Repository
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
22+
- name: Use Node.js/20.9.0
23+
uses: actions/setup-node@v4
24+
with:
25+
node-version: 20.9.0
26+
27+
- name: Install pnpm
28+
uses: pnpm/action-setup@v4
29+
with:
30+
version: 9
31+
run_install: false
32+
33+
- name: Install dependencies
34+
run: pnpm install
35+
36+
- name: Build
37+
run: pnpm run build
38+
39+
- name: Upload Artifacts
40+
uses: actions/upload-artifact@v4
41+
with:
42+
name: ${{ inputs.artifact_name }}
43+
path: ${{ inputs.artifact_path }}

0 commit comments

Comments
 (0)