@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.
Files changed (123) hide show
  1. package/bin/create-sdk.js +107 -0
  2. package/package.json +14 -0
  3. package/template/.editorconfig +0 -0
  4. package/template/.github/CODEOWNERS +2 -0
  5. package/template/.github/ISSUE_TEMPLATE/bug_report.md +35 -0
  6. package/template/.github/ISSUE_TEMPLATE/feature_request.md +26 -0
  7. package/template/.github/dependabot.yml +18 -0
  8. package/template/.github/pull_request_template.md +25 -0
  9. package/template/.github/workflows/auto-release.yml +77 -0
  10. package/template/.github/workflows/ci.yml +35 -0
  11. package/template/.github/workflows/deploy-pages.yml +73 -0
  12. package/template/.github/workflows/docs-ci.yml +38 -0
  13. package/template/.github/workflows/docs.yml +19 -0
  14. package/template/.github/workflows/release.yml +51 -0
  15. package/template/.husky/commit-msg +4 -0
  16. package/template/.husky/pre-commit +4 -0
  17. package/template/.prettierrc +0 -0
  18. package/template/CHANGELOG.md +49 -0
  19. package/template/CODE_OF_CONDUCT.md +40 -0
  20. package/template/CONTRIBUTING.md +38 -0
  21. package/template/LICENSE +21 -0
  22. package/template/README.md +49 -0
  23. package/template/SECURITY.md +16 -0
  24. package/template/TEST_DEPLOY.md +0 -0
  25. package/template/api-extractor.json +33 -0
  26. package/template/ci-cd.md +93 -0
  27. package/template/commitlint.config.cjs +3 -0
  28. package/template/coverage/base.css +224 -0
  29. package/template/coverage/block-navigation.js +87 -0
  30. package/template/coverage/clover.xml +6 -0
  31. package/template/coverage/coverage-final.json +1 -0
  32. package/template/coverage/favicon.png +0 -0
  33. package/template/coverage/index.html +101 -0
  34. package/template/coverage/prettify.css +1 -0
  35. package/template/coverage/prettify.js +2 -0
  36. package/template/coverage/sort-arrow-sprite.png +0 -0
  37. package/template/coverage/sorter.js +210 -0
  38. package/template/docs/api/README.md +5 -0
  39. package/template/docs/api-auto/README.md +5 -0
  40. package/template/docs/index.html +73 -0
  41. package/template/docs/index.md +28 -0
  42. package/template/docusaurus-build/.github/workflows/deploy-docs.yml +46 -0
  43. package/template/docusaurus-build/.github/workflows/deploy-pages.yml +43 -0
  44. package/template/docusaurus-build/README.md +44 -0
  45. package/template/docusaurus-build/blog/authors.yml +34 -0
  46. package/template/docusaurus-build/blog/hello-world.md +9 -0
  47. package/template/docusaurus-build/docs/ci-cd.md +62 -0
  48. package/template/docusaurus-build/docs/conventions.md +50 -0
  49. package/template/docusaurus-build/docs/folder-structure.md +24 -0
  50. package/template/docusaurus-build/docs/getting-started.md +24 -0
  51. package/template/docusaurus-build/docs/intro.md +14 -0
  52. package/template/docusaurus-build/docs/project-architecture.md +125 -0
  53. package/template/docusaurus-build/docs/project-template/architecture.md +82 -0
  54. package/template/docusaurus-build/docs/project-template/getting-started.md +24 -0
  55. package/template/docusaurus-build/docs/project-template/overview.md +78 -0
  56. package/template/docusaurus-build/docs/project-template/structure.md +145 -0
  57. package/template/docusaurus-build/docs/scripts.md +42 -0
  58. package/template/docusaurus-build/docs/testing.md +30 -0
  59. package/template/docusaurus-build/docusaurus-build/sidebars.ts +30 -0
  60. package/template/docusaurus-build/docusaurus-build/tsconfig.json +8 -0
  61. package/template/docusaurus-build/docusaurus-build/typedoc.tsconfig.json +28 -0
  62. package/template/docusaurus-build/docusaurus.config.ts +129 -0
  63. package/template/docusaurus-build/package-lock.json +18235 -0
  64. package/template/docusaurus-build/package.json +51 -0
  65. package/template/docusaurus-build/project-template/README.md +44 -0
  66. package/template/docusaurus-build/project-template/src/index.ts +4 -0
  67. package/template/docusaurus-build/project-template/src/modules/user.ts +20 -0
  68. package/template/docusaurus-build/project-template/src/types/user.ts +5 -0
  69. package/template/docusaurus-build/sidebars.ts +20 -0
  70. package/template/docusaurus-build/src/components/HomepageFeatures/index.tsx +71 -0
  71. package/template/docusaurus-build/src/components/HomepageFeatures/styles.module.css +11 -0
  72. package/template/docusaurus-build/src/css/custom.css +30 -0
  73. package/template/docusaurus-build/src/pages/index.module.css +23 -0
  74. package/template/docusaurus-build/src/pages/index.tsx +52 -0
  75. package/template/docusaurus-build/src/pages/markdown-page.md +7 -0
  76. package/template/docusaurus-build/static/.nojekyll +0 -0
  77. package/template/docusaurus-build/static/api/.nojekyll +1 -0
  78. package/template/docusaurus-build/static/api/assets/hierarchy.js +1 -0
  79. package/template/docusaurus-build/static/api/assets/highlight.css +22 -0
  80. package/template/docusaurus-build/static/api/assets/icons.js +18 -0
  81. package/template/docusaurus-build/static/api/assets/icons.svg +1 -0
  82. package/template/docusaurus-build/static/api/assets/main.js +60 -0
  83. package/template/docusaurus-build/static/api/assets/navigation.js +1 -0
  84. package/template/docusaurus-build/static/api/assets/search.js +1 -0
  85. package/template/docusaurus-build/static/api/assets/style.css +1633 -0
  86. package/template/docusaurus-build/static/api/functions/modules_user.getUser.html +1 -0
  87. package/template/docusaurus-build/static/api/functions/modules_user.sumAges.html +1 -0
  88. package/template/docusaurus-build/static/api/hierarchy.html +1 -0
  89. package/template/docusaurus-build/static/api/index.html +1 -0
  90. package/template/docusaurus-build/static/api/modules/index.html +1 -0
  91. package/template/docusaurus-build/static/api/modules/modules_user.html +1 -0
  92. package/template/docusaurus-build/static/api/modules/types_user.html +1 -0
  93. package/template/docusaurus-build/static/api/types/types_user.ApiResult.html +3 -0
  94. package/template/docusaurus-build/static/api/types/types_user.User.html +4 -0
  95. package/template/docusaurus-build/static/img/docusaurus-social-card.jpg +0 -0
  96. package/template/docusaurus-build/static/img/docusaurus.png +0 -0
  97. package/template/docusaurus-build/static/img/favicon.ico +0 -0
  98. package/template/docusaurus-build/static/img/logo.svg +1 -0
  99. package/template/docusaurus-build/static/img/undraw_docusaurus_mountain.svg +171 -0
  100. package/template/docusaurus-build/static/img/undraw_docusaurus_react.svg +170 -0
  101. package/template/docusaurus-build/static/img/undraw_docusaurus_tree.svg +40 -0
  102. package/template/docusaurus-build/tsconfig.json +8 -0
  103. package/template/docusaurus-build/typedoc.json +14 -0
  104. package/template/docusaurus-build/typedoc.tsconfig.json +7 -0
  105. package/template/eslint.config.mjs +72 -0
  106. package/template/etc/project-template.api.md +32 -0
  107. package/template/morda-dev-project-template-0.1.1.tgz +0 -0
  108. package/template/package-lock.json +45 -0
  109. package/template/package.json +35 -0
  110. package/template/scripts/commitlint-runner.mjs +10 -0
  111. package/template/src/index.ts +19 -0
  112. package/template/src/modules/user.ts +12 -0
  113. package/template/src/types/user.ts +9 -0
  114. package/template/test.ts +4 -0
  115. package/template/tests/example.test.js +3 -0
  116. package/template/tests/public-api.snapshot.test.ts +13 -0
  117. package/template/tests/public-api.test.ts +58 -0
  118. package/template/tests/user.test.ts +16 -0
  119. package/template/tsconfig.build.json +11 -0
  120. package/template/tsconfig.eslint.json +14 -0
  121. package/template/tsconfig.json +12 -0
  122. package/template/typedoc.json +6 -0
  123. 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,2 @@
1
+ # Автоматический выбор ревьювера для всех файлов
2
+ * @mordaHQ
@@ -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
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+ . "$(dirname "$0")/_/husky.sh"
3
+
4
+ node scripts/commitlint-runner.mjs "$1"
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env sh
2
+ . "$(dirname -- "$0")/_/husky.sh"
3
+
4
+ npx lint-staged
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