@morda-dev/create-sdk 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/create-sdk.js +107 -0
- package/package.json +14 -0
- package/template/.editorconfig +0 -0
- package/template/.github/CODEOWNERS +2 -0
- package/template/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
- package/template/.github/ISSUE_TEMPLATE/feature_request.md +26 -0
- package/template/.github/dependabot.yml +18 -0
- package/template/.github/pull_request_template.md +25 -0
- package/template/.github/workflows/auto-release.yml +77 -0
- package/template/.github/workflows/ci.yml +35 -0
- package/template/.github/workflows/deploy-pages.yml +73 -0
- package/template/.github/workflows/docs-ci.yml +38 -0
- package/template/.github/workflows/docs.yml +19 -0
- package/template/.github/workflows/release.yml +51 -0
- package/template/.husky/commit-msg +4 -0
- package/template/.husky/pre-commit +4 -0
- package/template/.prettierrc +0 -0
- package/template/CHANGELOG.md +49 -0
- package/template/CODE_OF_CONDUCT.md +40 -0
- package/template/CONTRIBUTING.md +38 -0
- package/template/LICENSE +21 -0
- package/template/README.md +49 -0
- package/template/SECURITY.md +16 -0
- package/template/TEST_DEPLOY.md +0 -0
- package/template/api-extractor.json +33 -0
- package/template/ci-cd.md +93 -0
- package/template/commitlint.config.cjs +3 -0
- package/template/coverage/base.css +224 -0
- package/template/coverage/block-navigation.js +87 -0
- package/template/coverage/clover.xml +6 -0
- package/template/coverage/coverage-final.json +1 -0
- package/template/coverage/favicon.png +0 -0
- package/template/coverage/index.html +101 -0
- package/template/coverage/prettify.css +1 -0
- package/template/coverage/prettify.js +2 -0
- package/template/coverage/sort-arrow-sprite.png +0 -0
- package/template/coverage/sorter.js +210 -0
- package/template/docs/api/README.md +5 -0
- package/template/docs/api-auto/README.md +5 -0
- package/template/docs/index.html +73 -0
- package/template/docs/index.md +28 -0
- package/template/docusaurus-build/.github/workflows/deploy-docs.yml +46 -0
- package/template/docusaurus-build/.github/workflows/deploy-pages.yml +43 -0
- package/template/docusaurus-build/README.md +44 -0
- package/template/docusaurus-build/blog/authors.yml +34 -0
- package/template/docusaurus-build/blog/hello-world.md +9 -0
- package/template/docusaurus-build/docs/ci-cd.md +62 -0
- package/template/docusaurus-build/docs/conventions.md +50 -0
- package/template/docusaurus-build/docs/folder-structure.md +24 -0
- package/template/docusaurus-build/docs/getting-started.md +24 -0
- package/template/docusaurus-build/docs/intro.md +14 -0
- package/template/docusaurus-build/docs/project-architecture.md +125 -0
- package/template/docusaurus-build/docs/project-template/architecture.md +82 -0
- package/template/docusaurus-build/docs/project-template/getting-started.md +24 -0
- package/template/docusaurus-build/docs/project-template/overview.md +78 -0
- package/template/docusaurus-build/docs/project-template/structure.md +145 -0
- package/template/docusaurus-build/docs/scripts.md +42 -0
- package/template/docusaurus-build/docs/testing.md +30 -0
- package/template/docusaurus-build/docusaurus-build/sidebars.ts +30 -0
- package/template/docusaurus-build/docusaurus-build/tsconfig.json +8 -0
- package/template/docusaurus-build/docusaurus-build/typedoc.tsconfig.json +28 -0
- package/template/docusaurus-build/docusaurus.config.ts +129 -0
- package/template/docusaurus-build/package-lock.json +18235 -0
- package/template/docusaurus-build/package.json +51 -0
- package/template/docusaurus-build/project-template/README.md +44 -0
- package/template/docusaurus-build/project-template/src/index.ts +4 -0
- package/template/docusaurus-build/project-template/src/modules/user.ts +20 -0
- package/template/docusaurus-build/project-template/src/types/user.ts +5 -0
- package/template/docusaurus-build/sidebars.ts +20 -0
- package/template/docusaurus-build/src/components/HomepageFeatures/index.tsx +71 -0
- package/template/docusaurus-build/src/components/HomepageFeatures/styles.module.css +11 -0
- package/template/docusaurus-build/src/css/custom.css +30 -0
- package/template/docusaurus-build/src/pages/index.module.css +23 -0
- package/template/docusaurus-build/src/pages/index.tsx +52 -0
- package/template/docusaurus-build/src/pages/markdown-page.md +7 -0
- package/template/docusaurus-build/static/.nojekyll +0 -0
- package/template/docusaurus-build/static/api/.nojekyll +1 -0
- package/template/docusaurus-build/static/api/assets/hierarchy.js +1 -0
- package/template/docusaurus-build/static/api/assets/highlight.css +22 -0
- package/template/docusaurus-build/static/api/assets/icons.js +18 -0
- package/template/docusaurus-build/static/api/assets/icons.svg +1 -0
- package/template/docusaurus-build/static/api/assets/main.js +60 -0
- package/template/docusaurus-build/static/api/assets/navigation.js +1 -0
- package/template/docusaurus-build/static/api/assets/search.js +1 -0
- package/template/docusaurus-build/static/api/assets/style.css +1633 -0
- package/template/docusaurus-build/static/api/functions/modules_user.getUser.html +1 -0
- package/template/docusaurus-build/static/api/functions/modules_user.sumAges.html +1 -0
- package/template/docusaurus-build/static/api/hierarchy.html +1 -0
- package/template/docusaurus-build/static/api/index.html +1 -0
- package/template/docusaurus-build/static/api/modules/index.html +1 -0
- package/template/docusaurus-build/static/api/modules/modules_user.html +1 -0
- package/template/docusaurus-build/static/api/modules/types_user.html +1 -0
- package/template/docusaurus-build/static/api/types/types_user.ApiResult.html +3 -0
- package/template/docusaurus-build/static/api/types/types_user.User.html +4 -0
- package/template/docusaurus-build/static/img/docusaurus-social-card.jpg +0 -0
- package/template/docusaurus-build/static/img/docusaurus.png +0 -0
- package/template/docusaurus-build/static/img/favicon.ico +0 -0
- package/template/docusaurus-build/static/img/logo.svg +1 -0
- package/template/docusaurus-build/static/img/undraw_docusaurus_mountain.svg +171 -0
- package/template/docusaurus-build/static/img/undraw_docusaurus_react.svg +170 -0
- package/template/docusaurus-build/static/img/undraw_docusaurus_tree.svg +40 -0
- package/template/docusaurus-build/tsconfig.json +8 -0
- package/template/docusaurus-build/typedoc.json +14 -0
- package/template/docusaurus-build/typedoc.tsconfig.json +7 -0
- package/template/eslint.config.mjs +72 -0
- package/template/etc/project-template.api.md +32 -0
- package/template/morda-dev-project-template-0.1.1.tgz +0 -0
- package/template/package-lock.json +45 -0
- package/template/package.json +35 -0
- package/template/scripts/commitlint-runner.mjs +10 -0
- package/template/src/index.ts +19 -0
- package/template/src/modules/user.ts +12 -0
- package/template/src/types/user.ts +9 -0
- package/template/test.ts +4 -0
- package/template/tests/example.test.js +3 -0
- package/template/tests/public-api.snapshot.test.ts +13 -0
- package/template/tests/public-api.test.ts +58 -0
- package/template/tests/user.test.ts +16 -0
- package/template/tsconfig.build.json +11 -0
- package/template/tsconfig.eslint.json +14 -0
- package/template/tsconfig.json +12 -0
- package/template/typedoc.json +6 -0
- package/template/vitest.config.ts +12 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from "fs";
|
|
4
|
+
import path from "path";
|
|
5
|
+
import { fileURLToPath } from "url";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Resolve __dirname in ESM
|
|
9
|
+
*/
|
|
10
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
11
|
+
const __dirname = path.dirname(__filename);
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Project name from CLI args
|
|
15
|
+
*/
|
|
16
|
+
const projectName = process.argv[2];
|
|
17
|
+
|
|
18
|
+
if (!projectName) {
|
|
19
|
+
console.error("❌ Please provide a project name");
|
|
20
|
+
console.error(" Usage: npx create-sdk my-sdk");
|
|
21
|
+
process.exit(1);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Paths
|
|
26
|
+
*/
|
|
27
|
+
const targetDir = path.resolve(process.cwd(), projectName);
|
|
28
|
+
const templateDir = path.resolve(__dirname, "../template");
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Safety checks
|
|
32
|
+
*/
|
|
33
|
+
if (!fs.existsSync(templateDir)) {
|
|
34
|
+
console.error("❌ Template directory not found:");
|
|
35
|
+
console.error(" ", templateDir);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (fs.existsSync(targetDir)) {
|
|
40
|
+
console.error(`❌ Directory "${projectName}" already exists`);
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Create project
|
|
46
|
+
*/
|
|
47
|
+
console.log("🚀 Creating SDK:", projectName);
|
|
48
|
+
|
|
49
|
+
copyDir(templateDir, targetDir);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Update package.json
|
|
53
|
+
*/
|
|
54
|
+
const pkgPath = path.join(targetDir, "package.json");
|
|
55
|
+
|
|
56
|
+
if (!fs.existsSync(pkgPath)) {
|
|
57
|
+
console.error("❌ package.json not found in template");
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
|
|
62
|
+
|
|
63
|
+
pkg.name = projectName;
|
|
64
|
+
pkg.version = "0.1.0";
|
|
65
|
+
delete pkg.private;
|
|
66
|
+
|
|
67
|
+
fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + "\n");
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Done
|
|
71
|
+
*/
|
|
72
|
+
console.log("✅ SDK created successfully!");
|
|
73
|
+
console.log("");
|
|
74
|
+
console.log("Next steps:");
|
|
75
|
+
console.log(` cd ${projectName}`);
|
|
76
|
+
console.log(" npm install");
|
|
77
|
+
console.log(" npm run build");
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* ===== Helpers =====
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
function copyDir(src, dest) {
|
|
84
|
+
fs.mkdirSync(dest, { recursive: true });
|
|
85
|
+
|
|
86
|
+
for (const entry of fs.readdirSync(src, { withFileTypes: true })) {
|
|
87
|
+
if (shouldIgnore(entry.name)) continue;
|
|
88
|
+
|
|
89
|
+
const srcPath = path.join(src, entry.name);
|
|
90
|
+
const destPath = path.join(dest, entry.name);
|
|
91
|
+
|
|
92
|
+
if (entry.isDirectory()) {
|
|
93
|
+
copyDir(srcPath, destPath);
|
|
94
|
+
} else {
|
|
95
|
+
fs.copyFileSync(srcPath, destPath);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
function shouldIgnore(name) {
|
|
101
|
+
return (
|
|
102
|
+
name === "node_modules" ||
|
|
103
|
+
name === ".git" ||
|
|
104
|
+
name === "dist" ||
|
|
105
|
+
name === ".DS_Store"
|
|
106
|
+
);
|
|
107
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@morda-dev/create-sdk",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "CLI to scaffold a production-ready TypeScript SDK",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"create-sdk": "./bin/create-sdk.js"
|
|
8
|
+
},
|
|
9
|
+
"files": [
|
|
10
|
+
"bin",
|
|
11
|
+
"template"
|
|
12
|
+
],
|
|
13
|
+
"license": "ISC"
|
|
14
|
+
}
|
|
Binary file
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: Bug Report
|
|
2
|
+
description: Сообщить об ошибке
|
|
3
|
+
title: "[BUG]: "
|
|
4
|
+
labels: ["bug"]
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 🐞 Описание проблемы
|
|
9
|
+
|
|
10
|
+
Опиши баг простыми словами.
|
|
11
|
+
|
|
12
|
+
## 🔁 Шаги для воспроизведения
|
|
13
|
+
|
|
14
|
+
1.
|
|
15
|
+
2.
|
|
16
|
+
3.
|
|
17
|
+
|
|
18
|
+
## ✅ Ожидаемое поведение
|
|
19
|
+
|
|
20
|
+
Что должно происходить?
|
|
21
|
+
|
|
22
|
+
## ❌ Фактическое поведение
|
|
23
|
+
|
|
24
|
+
Что происходит на самом деле?
|
|
25
|
+
|
|
26
|
+
## 🖼 Скриншоты / Видео
|
|
27
|
+
|
|
28
|
+
Если есть, приложи.
|
|
29
|
+
|
|
30
|
+
## 💻 Окружение
|
|
31
|
+
|
|
32
|
+
- ОС:
|
|
33
|
+
- Node.js:
|
|
34
|
+
- Браузер:
|
|
35
|
+
- Версия проекта:
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: Feature Request
|
|
2
|
+
description: Предложить улучшение
|
|
3
|
+
title: "[FEATURE]: "
|
|
4
|
+
labels: ["enhancement"]
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 🚀 Описание предложения
|
|
9
|
+
|
|
10
|
+
Опиши какую функцию или улучшение ты предлагаешь.
|
|
11
|
+
|
|
12
|
+
## 🤔 Почему это важно?
|
|
13
|
+
|
|
14
|
+
Расскажи, какую проблему это решит или что улучшит.
|
|
15
|
+
|
|
16
|
+
## 🧩 Детали реализации
|
|
17
|
+
|
|
18
|
+
Есть ли мысли, как это должно работать?
|
|
19
|
+
|
|
20
|
+
## 📦 Альтернативы
|
|
21
|
+
|
|
22
|
+
Есть ли другие варианты решения?
|
|
23
|
+
|
|
24
|
+
## 🖼 Макеты / Примеры
|
|
25
|
+
|
|
26
|
+
Если есть — приложи.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# 1. Обновление npm зависимостей
|
|
4
|
+
- package-ecosystem: "npm"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
commit-message:
|
|
9
|
+
prefix: "deps"
|
|
10
|
+
open-pull-requests-limit: 5
|
|
11
|
+
|
|
12
|
+
# 2. Обновление GitHub Actions
|
|
13
|
+
- package-ecosystem: "github-actions"
|
|
14
|
+
directory: "/"
|
|
15
|
+
schedule:
|
|
16
|
+
interval: "weekly"
|
|
17
|
+
commit-message:
|
|
18
|
+
prefix: "ci"
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Pull Request
|
|
2
|
+
|
|
3
|
+
## 📌 Описание
|
|
4
|
+
|
|
5
|
+
Кратко опиши, что делает этот PR и зачем он нужен.
|
|
6
|
+
|
|
7
|
+
## 🔧 Что сделано
|
|
8
|
+
|
|
9
|
+
- [ ] Добавлено…
|
|
10
|
+
- [ ] Исправлено…
|
|
11
|
+
- [ ] Оптимизировано…
|
|
12
|
+
|
|
13
|
+
## 🧪 Тестирование
|
|
14
|
+
|
|
15
|
+
- [ ] Код собирается (npm run build)
|
|
16
|
+
- [ ] Линт проходит (npm run lint)
|
|
17
|
+
- [ ] Тесты проходят (npm test)
|
|
18
|
+
|
|
19
|
+
## 🧩 Потенциальные риски
|
|
20
|
+
|
|
21
|
+
Опиши, может ли PR что-то сломать.
|
|
22
|
+
|
|
23
|
+
## 📝 Примечания
|
|
24
|
+
|
|
25
|
+
Любая дополнительная информация.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
name: Auto Release (create release PR)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
prepare-release:
|
|
10
|
+
name: Prepare release and open PR
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write
|
|
14
|
+
pull-requests: write
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- name: Checkout
|
|
18
|
+
uses: actions/checkout@v4
|
|
19
|
+
with:
|
|
20
|
+
fetch-depth: 0
|
|
21
|
+
|
|
22
|
+
- name: Setup Node.js
|
|
23
|
+
uses: actions/setup-node@v4
|
|
24
|
+
with:
|
|
25
|
+
node-version: 20
|
|
26
|
+
cache: "npm"
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: npm ci
|
|
30
|
+
|
|
31
|
+
- name: Run lint
|
|
32
|
+
run: npm run lint --if-present
|
|
33
|
+
|
|
34
|
+
- name: Run tests
|
|
35
|
+
run: npm test --if-present
|
|
36
|
+
|
|
37
|
+
- name: Build
|
|
38
|
+
run: npm run build --if-present
|
|
39
|
+
|
|
40
|
+
- name: Configure git
|
|
41
|
+
run: |
|
|
42
|
+
git config user.name "github-actions[bot]"
|
|
43
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
44
|
+
|
|
45
|
+
- name: Run standard-version
|
|
46
|
+
id: stdver
|
|
47
|
+
run: |
|
|
48
|
+
npx standard-version --no-verify
|
|
49
|
+
echo "new_version=$(node -p \"require('./package.json').version\")" >> $GITHUB_OUTPUT
|
|
50
|
+
echo "new_tag=v$(node -p \"require('./package.json').version\")" >> $GITHUB_OUTPUT
|
|
51
|
+
BRANCH="release/v$(node -p \"require('./package.json').version\")"
|
|
52
|
+
git branch "$BRANCH"
|
|
53
|
+
echo "release_branch=$BRANCH" >> $GITHUB_OUTPUT
|
|
54
|
+
|
|
55
|
+
- name: Push release branch and tags
|
|
56
|
+
env:
|
|
57
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
58
|
+
run: |
|
|
59
|
+
git push origin "refs/heads/${{ steps.stdver.outputs.release_branch }}:${{ steps.stdver.outputs.release_branch }}"
|
|
60
|
+
git push origin --tags
|
|
61
|
+
|
|
62
|
+
- name: Create Pull Request
|
|
63
|
+
uses: peter-evans/create-pull-request@v5
|
|
64
|
+
with:
|
|
65
|
+
token: ${{ secrets.GITHUB_TOKEN }}
|
|
66
|
+
branch: ${{ steps.stdver.outputs.release_branch }}
|
|
67
|
+
title: "chore(release): ${{ steps.stdver.outputs.new_version }}"
|
|
68
|
+
body: |
|
|
69
|
+
## Release ${{ steps.stdver.outputs.new_version }}
|
|
70
|
+
|
|
71
|
+
This PR contains the changelog and version bump generated by standard-version.
|
|
72
|
+
|
|
73
|
+
**Changelog excerpt:**
|
|
74
|
+
```
|
|
75
|
+
$(awk 'BEGIN{p=0} /^## \[/{ if (p==1) exit } /^## \['"${{ steps.stdver.outputs.new_version }}"'\]/{p=1; next} p{print}' CHANGELOG.md || true)
|
|
76
|
+
```
|
|
77
|
+
labels: release, automated
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout repository
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Setup Node.js
|
|
17
|
+
uses: actions/setup-node@v4
|
|
18
|
+
with:
|
|
19
|
+
node-version: 20
|
|
20
|
+
cache: npm
|
|
21
|
+
|
|
22
|
+
- name: Install dependencies
|
|
23
|
+
run: npm ci
|
|
24
|
+
|
|
25
|
+
- name: Lint
|
|
26
|
+
run: npm run lint
|
|
27
|
+
|
|
28
|
+
- name: Typecheck
|
|
29
|
+
run: npm run typecheck
|
|
30
|
+
|
|
31
|
+
- name: Build
|
|
32
|
+
run: npm run build
|
|
33
|
+
|
|
34
|
+
- name: Test
|
|
35
|
+
run: npm run test
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
name: Build and Deploy Docs (Cloudflare Pages)
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-and-deploy:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
# ---- REPO ----
|
|
19
|
+
- name: Checkout repository
|
|
20
|
+
uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
# ---- NODE ----
|
|
23
|
+
- name: Use Node.js 20
|
|
24
|
+
uses: actions/setup-node@v4
|
|
25
|
+
with:
|
|
26
|
+
node-version: 20
|
|
27
|
+
cache: npm
|
|
28
|
+
|
|
29
|
+
# ---- INSTALL ROOT ----
|
|
30
|
+
- name: Install root dependencies
|
|
31
|
+
run: npm install
|
|
32
|
+
|
|
33
|
+
# ---- CLEAN OLD API DOCS ----
|
|
34
|
+
- name: Remove old API docs
|
|
35
|
+
run: rm -rf docusaurus-build/docs/api
|
|
36
|
+
|
|
37
|
+
# ---- GENERATE API DOCS ----
|
|
38
|
+
- name: Generate API docs (TypeDoc)
|
|
39
|
+
run: npm run docs:api
|
|
40
|
+
|
|
41
|
+
# ---- INSTALL DOCUSAURUS ----
|
|
42
|
+
- name: Install Docusaurus dependencies
|
|
43
|
+
run: |
|
|
44
|
+
cd docusaurus-build
|
|
45
|
+
npm ci --legacy-peer-deps
|
|
46
|
+
|
|
47
|
+
# ---- TYPECHECK ----
|
|
48
|
+
- name: Type check Docusaurus
|
|
49
|
+
run: |
|
|
50
|
+
cd docusaurus-build
|
|
51
|
+
npm run typecheck
|
|
52
|
+
|
|
53
|
+
# ---- BUILD DOCUSAURUS ----
|
|
54
|
+
- name: Build Docusaurus site
|
|
55
|
+
run: |
|
|
56
|
+
cd docusaurus-build
|
|
57
|
+
npm run build
|
|
58
|
+
|
|
59
|
+
# ---- ARTIFACT → CF PAGES ----
|
|
60
|
+
- name: Upload Pages build artifact
|
|
61
|
+
uses: actions/upload-pages-artifact@v3
|
|
62
|
+
with:
|
|
63
|
+
path: docusaurus-build/build
|
|
64
|
+
|
|
65
|
+
# ---- DEPLOY ----
|
|
66
|
+
- name: Deploy to Cloudflare Pages
|
|
67
|
+
if: github.ref == 'refs/heads/main'
|
|
68
|
+
uses: cloudflare/pages-action@v1
|
|
69
|
+
with:
|
|
70
|
+
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
71
|
+
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
72
|
+
projectName: ${{ secrets.CLOUDFLARE_PROJECT_NAME }}
|
|
73
|
+
directory: docusaurus-build/build
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
name: Docs CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
docs:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
defaults:
|
|
14
|
+
run:
|
|
15
|
+
working-directory: docusaurus-build
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout repository
|
|
19
|
+
uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Setup Node.js
|
|
22
|
+
uses: actions/setup-node@v4
|
|
23
|
+
with:
|
|
24
|
+
node-version: 20
|
|
25
|
+
cache: npm
|
|
26
|
+
cache-dependency-path: docusaurus-build/package-lock.json
|
|
27
|
+
|
|
28
|
+
- name: Install dependencies
|
|
29
|
+
run: npm ci
|
|
30
|
+
|
|
31
|
+
- name: Type check
|
|
32
|
+
run: npm run typecheck
|
|
33
|
+
|
|
34
|
+
- name: Generate API (TypeDoc)
|
|
35
|
+
run: npm run docs:api
|
|
36
|
+
|
|
37
|
+
- name: Build documentation
|
|
38
|
+
run: npm run build
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
name: Deploy Docs (Deprecated)
|
|
2
|
+
|
|
3
|
+
# 🚫 Workflow отключён и больше не используется
|
|
4
|
+
# Он оставлен только для истории. Деплой осуществляется через Cloudflare Pages.
|
|
5
|
+
|
|
6
|
+
on:
|
|
7
|
+
workflow_dispatch: # можно запустить вручную, но автоматом не запускается
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
deprecated:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- name: Deprecated message
|
|
17
|
+
run: |
|
|
18
|
+
echo "⚠️ This workflow is deprecated and no longer used."
|
|
19
|
+
echo "Deployment is handled by .github/workflows/deploy-pages.yml"
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
release:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
contents: write
|
|
13
|
+
packages: write
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- name: Checkout
|
|
17
|
+
uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- name: Setup Node.js
|
|
20
|
+
uses: actions/setup-node@v4
|
|
21
|
+
with:
|
|
22
|
+
node-version: 20
|
|
23
|
+
|
|
24
|
+
- name: Get tag name
|
|
25
|
+
id: tag
|
|
26
|
+
run: |
|
|
27
|
+
echo "TAG_NAME=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
|
28
|
+
|
|
29
|
+
- name: Extract changelog for tag
|
|
30
|
+
id: changelog
|
|
31
|
+
run: |
|
|
32
|
+
TAG="$TAG_NAME"
|
|
33
|
+
awk_cmd='BEGIN{p=0} /^## \[/{ if (p==1) exit } /^## \['"$TAG"'\]/{p=1; next} p{print}' CHANGELOG.md > /tmp/RELEASE_BODY || true
|
|
34
|
+
if [ -s /tmp/RELEASE_BODY ]; then
|
|
35
|
+
echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
|
|
36
|
+
cat /tmp/RELEASE_BODY >> $GITHUB_ENV
|
|
37
|
+
echo "EOF" >> $GITHUB_ENV
|
|
38
|
+
else
|
|
39
|
+
echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
|
|
40
|
+
echo "See CHANGELOG.md" >> $GITHUB_ENV
|
|
41
|
+
echo "EOF" >> $GITHUB_ENV
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
- name: Create GitHub Release
|
|
45
|
+
uses: ncipollo/release-action@v1
|
|
46
|
+
with:
|
|
47
|
+
tag: ${{ env.TAG_NAME }}
|
|
48
|
+
name: ${{ env.TAG_NAME }}
|
|
49
|
+
body: ${{ env.RELEASE_BODY }}
|
|
50
|
+
draft: false
|
|
51
|
+
prerelease: false
|
|
File without changes
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
|
|
4
|
+
|
|
5
|
+
## [1.2.0](https://github.com/mordaHQ/project-template/compare/v1.1.0...v1.2.0) (2025-12-23)
|
|
6
|
+
|
|
7
|
+
## [1.1.0](https://github.com/mordaHQ/project-template/compare/v1.0.8...v1.1.0) (2025-12-23)
|
|
8
|
+
|
|
9
|
+
### [1.0.8](https://github.com/mordaHQ/project-template/compare/v1.0.4...v1.0.8) (2025-12-23)
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- add initial blog post ([3e67468](https://github.com/mordaHQ/project-template/commit/3e6746893973a1ed6b7df8be7895e190cb6e703c))
|
|
14
|
+
- **sdk:** stabilize public API with api-extractor ([868196b](https://github.com/mordaHQ/project-template/commit/868196b8110bd48c52150a27577a71af30460ecc))
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- **blog:** add morda author + hello-world post ([04ba630](https://github.com/mordaHQ/project-template/commit/04ba6301c9f8638344bd1c8a2bc666fbbe4c9170))
|
|
19
|
+
- **blog:** correct blog post and config ([981dabe](https://github.com/mordaHQ/project-template/commit/981dabe820ce0504afd37c2cd29e99df7db5c20d))
|
|
20
|
+
- correct .gitignore for Docusaurus ([610f389](https://github.com/mordaHQ/project-template/commit/610f3893fc279d07c2bfcea1dbb5517e269810a7))
|
|
21
|
+
- correct docusaurus build for cloudflare ([21908dc](https://github.com/mordaHQ/project-template/commit/21908dc837cf915329d02379e715246f85c468d6))
|
|
22
|
+
- correct npm install process ([135531c](https://github.com/mordaHQ/project-template/commit/135531c9ced1885108bdaa7dfa31aa29b5ecde88))
|
|
23
|
+
- finalize Cloudflare deploy workflow ([8172522](https://github.com/mordaHQ/project-template/commit/8172522675ed91e0044507753898a48d334f82c5))
|
|
24
|
+
- migrate docusaurus config for cloudflare pages ([5fee402](https://github.com/mordaHQ/project-template/commit/5fee40291fe51aeb4961969fb6451ef4cc2d241d))
|
|
25
|
+
- update Docusaurus config ([8d4ec64](https://github.com/mordaHQ/project-template/commit/8d4ec64482c05c2900ee4b208da78b53facb9dd2))
|
|
26
|
+
|
|
27
|
+
### [1.0.7](https://github.com/mordaHQ/project-template/compare/v1.0.4...v1.0.7) (2025-11-25)
|
|
28
|
+
|
|
29
|
+
### Bug Fixes
|
|
30
|
+
|
|
31
|
+
- correct .gitignore for Docusaurus ([610f389](https://github.com/mordaHQ/project-template/commit/610f3893fc279d07c2bfcea1dbb5517e269810a7))
|
|
32
|
+
- update Docusaurus config ([8d4ec64](https://github.com/mordaHQ/project-template/commit/8d4ec64482c05c2900ee4b208da78b53facb9dd2))
|
|
33
|
+
|
|
34
|
+
### [1.0.6](https://github.com/mordaHQ/project-template/compare/v1.0.5...v1.0.6) (2025-11-24)
|
|
35
|
+
|
|
36
|
+
### [1.0.5](https://github.com/mordaHQ/project-template/compare/v1.0.4...v1.0.5) (2025-11-24)
|
|
37
|
+
|
|
38
|
+
### [1.0.4](https://github.com/mordaHQ/project-template/compare/v1.0.3...v1.0.4) (2025-11-24)
|
|
39
|
+
|
|
40
|
+
### [1.0.3](https://github.com/mordaHQ/project-template/compare/v1.0.2...v1.0.3) (2025-11-23)
|
|
41
|
+
|
|
42
|
+
### [1.0.2](https://github.com/mordaHQ/project-template/compare/v1.0.1...v1.0.2) (2025-11-23)
|
|
43
|
+
|
|
44
|
+
### 1.0.1 (2025-11-23)
|
|
45
|
+
|
|
46
|
+
### Bug Fixes
|
|
47
|
+
|
|
48
|
+
- correct commitlint config to CJS ([ce29ae9](https://github.com/mordaHQ/project-template/commit/ce29ae9c73544bff01eefd789e1f38dc0a1cd9e9))
|
|
49
|
+
- remove bom char from example test ([15d151c](https://github.com/mordaHQ/project-template/commit/15d151ced1fcd08662cf3156c91a77ada3c9dca4))
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
This project follows the **Contributor Covenant v2.1** Code of Conduct.
|
|
4
|
+
|
|
5
|
+
## Our Pledge
|
|
6
|
+
|
|
7
|
+
We pledge to make participation in our project and community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.
|
|
8
|
+
|
|
9
|
+
## Our Standards
|
|
10
|
+
|
|
11
|
+
Examples of behavior that contributes to a positive environment:
|
|
12
|
+
|
|
13
|
+
- Demonstrating empathy and kindness
|
|
14
|
+
- Giving and receiving constructive feedback
|
|
15
|
+
- Taking responsibility for mistakes
|
|
16
|
+
- Focusing on what is best for the community
|
|
17
|
+
|
|
18
|
+
Examples of unacceptable behavior:
|
|
19
|
+
|
|
20
|
+
- Harassment or insulting comments
|
|
21
|
+
- Public or private harassment
|
|
22
|
+
- Publishing others' private information
|
|
23
|
+
- Other conduct that would be inappropriate in a professional environment
|
|
24
|
+
|
|
25
|
+
## Enforcement Responsibilities
|
|
26
|
+
|
|
27
|
+
Project maintainers are responsible for clarifying and enforcing our standards.
|
|
28
|
+
|
|
29
|
+
## Scope
|
|
30
|
+
|
|
31
|
+
This Code of Conduct applies within all project spaces and in public spaces when representing the project.
|
|
32
|
+
|
|
33
|
+
## Enforcement
|
|
34
|
+
|
|
35
|
+
Instances of abusive or unacceptable behavior may be reported by creating an issue or contacting the maintainers directly.
|
|
36
|
+
|
|
37
|
+
## Attribution
|
|
38
|
+
|
|
39
|
+
This Code of Conduct is adapted from the Contributor Covenant, version 2.1:
|
|
40
|
+
https://www.contributor-covenant.org/version/2/1/code_of_conduct/
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# Contributing Guide
|
|
2
|
+
|
|
3
|
+
Спасибо, что хочешь улучшить проект!
|
|
4
|
+
|
|
5
|
+
## 🔧 Требования
|
|
6
|
+
|
|
7
|
+
- Node.js 20+
|
|
8
|
+
- NPM 10+
|
|
9
|
+
- TypeScript 5+
|
|
10
|
+
- Перед пушем запускай:
|
|
11
|
+
npm run lint
|
|
12
|
+
npm run test
|
|
13
|
+
|
|
14
|
+
## 📝 Коммиты
|
|
15
|
+
|
|
16
|
+
Мы используем **Conventional Commits**:
|
|
17
|
+
|
|
18
|
+
- feat: новая фича
|
|
19
|
+
- fix: исправление
|
|
20
|
+
- docs: документация
|
|
21
|
+
- test: тесты
|
|
22
|
+
- chore: обслуживание
|
|
23
|
+
- refactor: переработка без изменения логики
|
|
24
|
+
|
|
25
|
+
## 🔀 Ветки
|
|
26
|
+
|
|
27
|
+
- main — стабильная
|
|
28
|
+
- feature/\* — новые фичи
|
|
29
|
+
- fix/\* — багфиксы
|
|
30
|
+
|
|
31
|
+
## 🧪 Тесты
|
|
32
|
+
|
|
33
|
+
Все PR должны включать тесты или объяснение, почему тесты не нужны.
|
|
34
|
+
|
|
35
|
+
## 📦 Публикация релизов
|
|
36
|
+
|
|
37
|
+
Релизы создаются автоматически:
|
|
38
|
+
npm run release
|