create-minions-bundle 1.0.0
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/README.md +16 -0
- package/package.json +41 -0
- package/src/bundle-codegen.js +259 -0
- package/src/generator.js +107 -0
- package/src/github.js +110 -0
- package/src/index.js +144 -0
- package/src/manual.js +171 -0
- package/src/prompts.js +128 -0
- package/src/template.js +62 -0
- package/templates/apps/blog/astro.config.mjs +25 -0
- package/templates/apps/blog/netlify.toml +3 -0
- package/templates/apps/blog/package.json +34 -0
- package/templates/apps/blog/public/favicon.svg +4 -0
- package/templates/apps/blog/src/layouts/BaseLayout.astro +39 -0
- package/templates/apps/blog/src/pages/index.astro +18 -0
- package/templates/apps/blog/src/pages/posts/welcome.md +23 -0
- package/templates/apps/blog/src/styles/global.css.template +6 -0
- package/templates/apps/blog/tsconfig.json +11 -0
- package/templates/apps/docs/astro.config.mjs +42 -0
- package/templates/apps/docs/netlify.toml +4 -0
- package/templates/apps/docs/package.json +21 -0
- package/templates/apps/docs/src/content/docs/api/python.md +24 -0
- package/templates/apps/docs/src/content/docs/api/typescript.md +24 -0
- package/templates/apps/docs/src/content/docs/getting-started/installation.md +27 -0
- package/templates/apps/docs/src/content/docs/getting-started/introduction.md +22 -0
- package/templates/apps/docs/src/content/docs/getting-started/quick-start.md +28 -0
- package/templates/apps/docs/src/content/docs/index.mdx.template +24 -0
- package/templates/apps/docs/src/styles/custom.css.template +14 -0
- package/templates/apps/docs/tsconfig.json +3 -0
- package/templates/apps/web/index.html +17 -0
- package/templates/apps/web/netlify.toml +6 -0
- package/templates/apps/web/package.json +34 -0
- package/templates/apps/web/postcss.config.js +5 -0
- package/templates/apps/web/public/favicon.svg +4 -0
- package/templates/apps/web/src/App.css +111 -0
- package/templates/apps/web/src/App.tsx +46 -0
- package/templates/apps/web/src/index.css.template +12 -0
- package/templates/apps/web/src/main.tsx +10 -0
- package/templates/apps/web/tsconfig.json +36 -0
- package/templates/apps/web/tsconfig.node.json +13 -0
- package/templates/apps/web/vite.config.ts +21 -0
- package/templates/github/CODE_OF_CONDUCT.md +5 -0
- package/templates/github/CONTRIBUTING.md +49 -0
- package/templates/github/FUNDING.yml +2 -0
- package/templates/github/FUNDING.yml.template +1 -0
- package/templates/github/ISSUE_TEMPLATE/bug_report.md +20 -0
- package/templates/github/ISSUE_TEMPLATE/feature_request.md +18 -0
- package/templates/github/workflows/ci.yml +65 -0
- package/templates/github/workflows/publish.yml +81 -0
- package/templates/github/workflows/release.yml +16 -0
- package/templates/packages/cli/README.md +19 -0
- package/templates/packages/cli/package.json +38 -0
- package/templates/packages/cli/src/index.ts +353 -0
- package/templates/packages/cli/tsconfig.json +23 -0
- package/templates/packages/python/README.md +21 -0
- package/templates/packages/python/__pythonModule__/__init__.py +24 -0
- package/templates/packages/python/__pythonModule__/schemas.py.template +8 -0
- package/templates/packages/python/pyproject.toml +34 -0
- package/templates/packages/python/tests/test_basic.py +20 -0
- package/templates/packages/sdk/README.md.template +25 -0
- package/templates/packages/sdk/package.json.template +43 -0
- package/templates/packages/sdk/src/__tests__/bundle.test.ts.template +18 -0
- package/templates/packages/sdk/src/bundle.ts.template +6 -0
- package/templates/packages/sdk/src/index.ts.template +13 -0
- package/templates/packages/sdk/src/relations.ts.template +6 -0
- package/templates/packages/sdk/src/views.ts.template +6 -0
- package/templates/packages/sdk/tsconfig.json +26 -0
- package/templates/root/.release-please-manifest.json +3 -0
- package/templates/root/CHANGELOG.md +15 -0
- package/templates/root/CHANGELOG.md.template +10 -0
- package/templates/root/LICENSE.template +21 -0
- package/templates/root/README.md.template +42 -0
- package/templates/root/SECURITY.md +35 -0
- package/templates/root/SECURITY.md.template +11 -0
- package/templates/root/SKILLS.md.template +10 -0
- package/templates/root/package.json.template +28 -0
- package/templates/root/pnpm-workspace.yaml +4 -0
- package/templates/root/release-please-config.json +61 -0
- package/templates/root/tsconfig.json +31 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Installation
|
|
3
|
+
description: "Install {{projectCapitalized}} packages"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## TypeScript / Node.js
|
|
7
|
+
|
|
8
|
+
```bash
|
|
9
|
+
npm install {{sdkName}} minions-sdk
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
## Python
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
pip install {{pythonPackage}}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## CLI
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm install -g {{cliName}}
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Requirements
|
|
25
|
+
|
|
26
|
+
- **Node.js** 20 or later
|
|
27
|
+
- **Python** 3.11 or later (for Python SDK)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Introduction
|
|
3
|
+
description: "Get started with {{projectCapitalized}}"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# {{projectCapitalized}}
|
|
7
|
+
|
|
8
|
+
{{projectDescription}}
|
|
9
|
+
|
|
10
|
+
## Overview
|
|
11
|
+
|
|
12
|
+
This project is part of the [Minions ecosystem](https://github.com/mxn2020/minions) and provides:
|
|
13
|
+
|
|
14
|
+
- **TypeScript SDK** (`{{sdkName}}`) — Core library for Node.js
|
|
15
|
+
- **Python SDK** (`{{pythonPackage}}`) — Python bindings
|
|
16
|
+
- **CLI Tool** (`{{cliName}}`) — Command-line interface
|
|
17
|
+
- **Web App** — Interactive playground at [{{domainApp}}](https://{{domainApp}})
|
|
18
|
+
|
|
19
|
+
## Next Steps
|
|
20
|
+
|
|
21
|
+
- [Installation](/getting-started/installation/) — Set up the SDK
|
|
22
|
+
- [Quick Start](/getting-started/quick-start/) — Your first project
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Quick Start
|
|
3
|
+
description: "Get up and running with {{projectCapitalized}} in minutes"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
## TypeScript
|
|
7
|
+
|
|
8
|
+
```typescript
|
|
9
|
+
import { createClient } from '{{sdkName}}';
|
|
10
|
+
|
|
11
|
+
const client = createClient();
|
|
12
|
+
console.log('Version:', client.version);
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Python
|
|
16
|
+
|
|
17
|
+
```python
|
|
18
|
+
from {{pythonModule}} import create_client
|
|
19
|
+
|
|
20
|
+
client = create_client()
|
|
21
|
+
print(f"Version: {client['version']}")
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## CLI
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
{{cliCommand}} info
|
|
28
|
+
```
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "{{projectCapitalized}}"
|
|
3
|
+
description: "{{projectDescription}}"
|
|
4
|
+
template: splash
|
|
5
|
+
hero:
|
|
6
|
+
tagline: "{{projectDescription}}"
|
|
7
|
+
actions:
|
|
8
|
+
- text: Quick Start
|
|
9
|
+
link: /getting-started/quick-start/
|
|
10
|
+
icon: right-arrow
|
|
11
|
+
variant: primary
|
|
12
|
+
- text: View on GitHub
|
|
13
|
+
link: https://github.com/{{githubRepo}}
|
|
14
|
+
icon: external
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
import { Card, CardGrid, LinkCard } from '@astrojs/starlight/components';
|
|
18
|
+
|
|
19
|
+
## Start Here
|
|
20
|
+
|
|
21
|
+
<CardGrid>
|
|
22
|
+
<LinkCard title="Quick Start" description="Install the packages and use the bundle." href="/getting-started/quick-start/" />
|
|
23
|
+
<LinkCard title="API Reference" description="TypeScript API Reference for the core types." href="/api/typescript/" />
|
|
24
|
+
</CardGrid>
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/* Custom styles for {{projectCapitalized}} docs */
|
|
2
|
+
:root {
|
|
3
|
+
--sl-color-accent-low: #1a1145;
|
|
4
|
+
--sl-color-accent: {{accentColor}};
|
|
5
|
+
--sl-color-accent-high: #c4b5fd;
|
|
6
|
+
--sl-color-white: #ffffff;
|
|
7
|
+
--sl-color-gray-1: #eceef2;
|
|
8
|
+
--sl-color-gray-2: #c0c2c7;
|
|
9
|
+
--sl-color-gray-3: #888b96;
|
|
10
|
+
--sl-color-gray-4: #555765;
|
|
11
|
+
--sl-color-gray-5: #353841;
|
|
12
|
+
--sl-color-gray-6: #24272f;
|
|
13
|
+
--sl-color-black: #17181c;
|
|
14
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8" />
|
|
6
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
7
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
8
|
+
<title>{{projectCapitalized}}</title>
|
|
9
|
+
<meta name="description" content="{{projectDescription}}" />
|
|
10
|
+
</head>
|
|
11
|
+
|
|
12
|
+
<body>
|
|
13
|
+
<div id="root"></div>
|
|
14
|
+
<script type="module" src="/src/main.tsx"></script>
|
|
15
|
+
</body>
|
|
16
|
+
|
|
17
|
+
</html>
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "{{webName}}",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"private": true,
|
|
5
|
+
"type": "module",
|
|
6
|
+
"engines": {
|
|
7
|
+
"node": ">=18"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"dev": "vite",
|
|
11
|
+
"build": "tsc && vite build",
|
|
12
|
+
"preview": "vite preview"
|
|
13
|
+
},
|
|
14
|
+
"dependencies": {
|
|
15
|
+
"framer-motion": "^12.34.2",
|
|
16
|
+
"lucide-react": "^0.575.0",
|
|
17
|
+
"{{sdkName}}": "workspace:*",
|
|
18
|
+
"react": "^19.2.4",
|
|
19
|
+
"react-dom": "^19.2.4",
|
|
20
|
+
"react-router-dom": "^7.13.0"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@tailwindcss/postcss": "^4.2.0",
|
|
24
|
+
"@types/react": "^19.2.14",
|
|
25
|
+
"@types/react-dom": "^19.2.3",
|
|
26
|
+
"@vitejs/plugin-react": "^5.1.4",
|
|
27
|
+
"autoprefixer": "^10.4.24",
|
|
28
|
+
"postcss": "^8.5.6",
|
|
29
|
+
"tailwindcss": "^4.2.0",
|
|
30
|
+
"typescript": "^5.9.3",
|
|
31
|
+
"vite": "^7.3.1"
|
|
32
|
+
},
|
|
33
|
+
"license": "{{license}}"
|
|
34
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
.app {
|
|
2
|
+
min-height: 100vh;
|
|
3
|
+
background: var(--bg);
|
|
4
|
+
color: var(--text);
|
|
5
|
+
font-family: 'Inter', system-ui, sans-serif;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.hero {
|
|
9
|
+
text-align: center;
|
|
10
|
+
padding: 6rem 2rem 4rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
.hero h1 {
|
|
14
|
+
font-size: 3rem;
|
|
15
|
+
font-weight: 800;
|
|
16
|
+
background: linear-gradient(135deg, var(--accent), #A78BFA);
|
|
17
|
+
-webkit-background-clip: text;
|
|
18
|
+
-webkit-text-fill-color: transparent;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.tagline {
|
|
22
|
+
color: var(--text-dim);
|
|
23
|
+
font-size: 1.25rem;
|
|
24
|
+
margin-top: 1rem;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.cta-buttons {
|
|
28
|
+
display: flex;
|
|
29
|
+
gap: 1rem;
|
|
30
|
+
justify-content: center;
|
|
31
|
+
margin-top: 2rem;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.btn {
|
|
35
|
+
padding: 0.75rem 2rem;
|
|
36
|
+
border-radius: 0.5rem;
|
|
37
|
+
font-weight: 600;
|
|
38
|
+
text-decoration: none;
|
|
39
|
+
transition: all 0.2s;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
.btn-primary {
|
|
43
|
+
background: var(--accent);
|
|
44
|
+
color: white;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.btn-primary:hover {
|
|
48
|
+
background: var(--accent-hover);
|
|
49
|
+
transform: translateY(-1px);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.btn-secondary {
|
|
53
|
+
background: var(--surface);
|
|
54
|
+
color: var(--text);
|
|
55
|
+
border: 1px solid #334155;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.btn-secondary:hover {
|
|
59
|
+
border-color: var(--accent);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.features {
|
|
63
|
+
display: grid;
|
|
64
|
+
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
65
|
+
gap: 1.5rem;
|
|
66
|
+
max-width: 900px;
|
|
67
|
+
margin: 0 auto;
|
|
68
|
+
padding: 2rem;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
.feature-card {
|
|
72
|
+
background: var(--surface);
|
|
73
|
+
border-radius: 0.75rem;
|
|
74
|
+
padding: 2rem;
|
|
75
|
+
border: 1px solid #334155;
|
|
76
|
+
transition: border-color 0.2s;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.feature-card:hover {
|
|
80
|
+
border-color: var(--accent);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.feature-card h3 {
|
|
84
|
+
font-size: 1.125rem;
|
|
85
|
+
margin-bottom: 0.75rem;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
.feature-card code {
|
|
89
|
+
background: #0F0F23;
|
|
90
|
+
padding: 0.5rem 1rem;
|
|
91
|
+
border-radius: 0.25rem;
|
|
92
|
+
font-size: 0.875rem;
|
|
93
|
+
color: var(--accent);
|
|
94
|
+
display: block;
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
.footer {
|
|
98
|
+
text-align: center;
|
|
99
|
+
padding: 3rem 2rem;
|
|
100
|
+
color: var(--text-dim);
|
|
101
|
+
font-size: 0.875rem;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.footer a {
|
|
105
|
+
color: var(--accent);
|
|
106
|
+
text-decoration: none;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
.footer a:hover {
|
|
110
|
+
text-decoration: underline;
|
|
111
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import './App.css';
|
|
2
|
+
|
|
3
|
+
function App() {
|
|
4
|
+
return (
|
|
5
|
+
<div className="app">
|
|
6
|
+
<header className="hero">
|
|
7
|
+
<h1>{{ projectCapitalized }}</h1>
|
|
8
|
+
<p className="tagline">{{ projectDescription }}</p>
|
|
9
|
+
<div className="cta-buttons">
|
|
10
|
+
<a href="https://{{domainHelp}}" className="btn btn-primary">
|
|
11
|
+
Documentation
|
|
12
|
+
</a>
|
|
13
|
+
<a href="https://github.com/{{githubRepo}}" className="btn btn-secondary">
|
|
14
|
+
GitHub
|
|
15
|
+
</a>
|
|
16
|
+
</div>
|
|
17
|
+
</header>
|
|
18
|
+
|
|
19
|
+
<main className="content">
|
|
20
|
+
<section className="features">
|
|
21
|
+
<div className="feature-card">
|
|
22
|
+
<h3>TypeScript SDK</h3>
|
|
23
|
+
<code>npm install {{ sdkName }}</code>
|
|
24
|
+
</div>
|
|
25
|
+
<div className="feature-card">
|
|
26
|
+
<h3>Python SDK</h3>
|
|
27
|
+
<code>pip install {{ pythonPackage }}</code>
|
|
28
|
+
</div>
|
|
29
|
+
<div className="feature-card">
|
|
30
|
+
<h3>CLI Tool</h3>
|
|
31
|
+
<code>npm install -g {{ cliName }}</code>
|
|
32
|
+
</div>
|
|
33
|
+
</section>
|
|
34
|
+
</main>
|
|
35
|
+
|
|
36
|
+
<footer className="footer">
|
|
37
|
+
<p>
|
|
38
|
+
Built on the{' '}
|
|
39
|
+
<a href="https://github.com/mxn2020/minions">Minions SDK</a>
|
|
40
|
+
</p>
|
|
41
|
+
</footer>
|
|
42
|
+
</div>
|
|
43
|
+
);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export default App;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
@import "tailwindcss";
|
|
2
|
+
|
|
3
|
+
:root {
|
|
4
|
+
--accent: {{accentColor}};
|
|
5
|
+
--accent-hover: {{accentHoverColor}};
|
|
6
|
+
--color-accent: {{accentColor}};
|
|
7
|
+
--color-accent-hover: {{accentHoverColor}};
|
|
8
|
+
--bg: #0F0F23;
|
|
9
|
+
--surface: #1A1A2E;
|
|
10
|
+
--text: #E2E8F0;
|
|
11
|
+
--text-dim: #94A3B8;
|
|
12
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
"target": "ES2020",
|
|
4
|
+
"useDefineForClassFields": true,
|
|
5
|
+
"lib": [
|
|
6
|
+
"ES2020",
|
|
7
|
+
"DOM",
|
|
8
|
+
"DOM.Iterable"
|
|
9
|
+
],
|
|
10
|
+
"module": "ESNext",
|
|
11
|
+
"skipLibCheck": true,
|
|
12
|
+
"moduleResolution": "bundler",
|
|
13
|
+
"allowImportingTsExtensions": true,
|
|
14
|
+
"resolveJsonModule": true,
|
|
15
|
+
"isolatedModules": true,
|
|
16
|
+
"noEmit": true,
|
|
17
|
+
"jsx": "react-jsx",
|
|
18
|
+
"strict": true,
|
|
19
|
+
"noUnusedLocals": true,
|
|
20
|
+
"noUnusedParameters": true,
|
|
21
|
+
"noFallthroughCasesInSwitch": true,
|
|
22
|
+
"paths": {
|
|
23
|
+
"@/*": [
|
|
24
|
+
"./src/*"
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
28
|
+
"include": [
|
|
29
|
+
"src"
|
|
30
|
+
],
|
|
31
|
+
"references": [
|
|
32
|
+
{
|
|
33
|
+
"path": "./tsconfig.node.json"
|
|
34
|
+
}
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { defineConfig } from 'vite';
|
|
2
|
+
import react from '@vitejs/plugin-react';
|
|
3
|
+
import path from 'path';
|
|
4
|
+
|
|
5
|
+
export default defineConfig({
|
|
6
|
+
plugins: [react()],
|
|
7
|
+
resolve: {
|
|
8
|
+
alias: {
|
|
9
|
+
'@': path.resolve(__dirname, './src'),
|
|
10
|
+
},
|
|
11
|
+
},
|
|
12
|
+
base: '/',
|
|
13
|
+
optimizeDeps: {
|
|
14
|
+
include: ['{{sdkName}}'],
|
|
15
|
+
},
|
|
16
|
+
build: {
|
|
17
|
+
commonjsOptions: {
|
|
18
|
+
include: [/{{projectSlug}}/, /node_modules/],
|
|
19
|
+
},
|
|
20
|
+
},
|
|
21
|
+
});
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
As contributors and maintainers of this project, we pledge to respect all people who contribute through reporting issues, posting feature requests, updating documentation, submitting pull requests or patches, and other activities.
|
|
4
|
+
|
|
5
|
+
We are committed to making participation in this project a harassment-free experience for everyone, regardless of level of experience, gender, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, or religion.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Contributing to {{projectCapitalized}}
|
|
2
|
+
|
|
3
|
+
Thank you for your interest in contributing to {{projectCapitalized}}!
|
|
4
|
+
|
|
5
|
+
## Getting Started
|
|
6
|
+
|
|
7
|
+
1. Fork the repository
|
|
8
|
+
2. Clone your fork: `git clone https://github.com/YOUR_USERNAME/{{projectName}}.git`
|
|
9
|
+
3. Install dependencies: `pnpm install`
|
|
10
|
+
4. Create a branch: `git checkout -b feature/my-feature`
|
|
11
|
+
|
|
12
|
+
## Development
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Build all packages
|
|
16
|
+
pnpm run build
|
|
17
|
+
|
|
18
|
+
# Run tests
|
|
19
|
+
pnpm run test
|
|
20
|
+
|
|
21
|
+
# Type check
|
|
22
|
+
pnpm run lint
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Project Structure
|
|
26
|
+
|
|
27
|
+
- `packages/core/` — Framework-agnostic core library
|
|
28
|
+
- `packages/cli/` — CLI tool
|
|
29
|
+
- `packages/python/` — Python SDK
|
|
30
|
+
- `apps/docs/` — Astro Starlight documentation site
|
|
31
|
+
- `apps/web/` — Playground web app
|
|
32
|
+
- `apps/blog/` — Blog
|
|
33
|
+
|
|
34
|
+
## Pull Request Process
|
|
35
|
+
|
|
36
|
+
1. Ensure your code passes `pnpm run lint` and `pnpm run test`
|
|
37
|
+
2. Update documentation if your changes affect the public API
|
|
38
|
+
3. Add tests for new functionality
|
|
39
|
+
4. Keep PRs focused — one feature or fix per PR
|
|
40
|
+
|
|
41
|
+
## Code Style
|
|
42
|
+
|
|
43
|
+
- TypeScript strict mode
|
|
44
|
+
- ESM modules
|
|
45
|
+
- JSDoc on all public exports
|
|
46
|
+
|
|
47
|
+
## License
|
|
48
|
+
|
|
49
|
+
By contributing, you agree that your contributions will be licensed under the {{license}} License.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: {{githubOrg}}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Bug Report
|
|
3
|
+
about: Report a bug in the {{projectCapitalized}} library or CLI
|
|
4
|
+
title: '[Bug] '
|
|
5
|
+
labels: bug
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Describe the bug**
|
|
9
|
+
A clear description of the bug.
|
|
10
|
+
|
|
11
|
+
**To Reproduce**
|
|
12
|
+
Steps to reproduce the behavior.
|
|
13
|
+
|
|
14
|
+
**Expected behavior**
|
|
15
|
+
What you expected to happen.
|
|
16
|
+
|
|
17
|
+
**Environment**
|
|
18
|
+
- Node.js version:
|
|
19
|
+
- {{sdkName}} version:
|
|
20
|
+
- OS:
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Feature Request
|
|
3
|
+
about: Suggest a new feature for {{projectCapitalized}}
|
|
4
|
+
title: '[Feature] '
|
|
5
|
+
labels: enhancement
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
**Is your feature request related to a problem?**
|
|
9
|
+
A clear description of the problem.
|
|
10
|
+
|
|
11
|
+
**Describe the solution you'd like**
|
|
12
|
+
What you want to happen.
|
|
13
|
+
|
|
14
|
+
**Describe alternatives you've considered**
|
|
15
|
+
Other approaches you've thought about.
|
|
16
|
+
|
|
17
|
+
**Additional context**
|
|
18
|
+
Any other context (spec section references, examples, etc.)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build-and-test:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
node-version: [20, 22]
|
|
18
|
+
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@v4
|
|
21
|
+
|
|
22
|
+
- name: Install pnpm
|
|
23
|
+
uses: pnpm/action-setup@v4
|
|
24
|
+
with:
|
|
25
|
+
version: 9
|
|
26
|
+
|
|
27
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
28
|
+
uses: actions/setup-node@v4
|
|
29
|
+
with:
|
|
30
|
+
node-version: ${{ matrix.node-version }}
|
|
31
|
+
cache: pnpm
|
|
32
|
+
|
|
33
|
+
- name: Install dependencies
|
|
34
|
+
run: pnpm install
|
|
35
|
+
|
|
36
|
+
- name: Lint
|
|
37
|
+
run: pnpm run lint
|
|
38
|
+
|
|
39
|
+
- name: Build core packages
|
|
40
|
+
run: pnpm --filter {{sdkName}} run build && pnpm --filter {{cliName}} run build && pnpm --filter {{docsName}} run build && pnpm --filter {{blogName}} run build && pnpm --filter {{webName}} run build
|
|
41
|
+
|
|
42
|
+
- name: Test
|
|
43
|
+
run: pnpm run test
|
|
44
|
+
|
|
45
|
+
python-sdk:
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
strategy:
|
|
48
|
+
matrix:
|
|
49
|
+
python-version: ['3.11', '3.12', '3.13']
|
|
50
|
+
|
|
51
|
+
steps:
|
|
52
|
+
- uses: actions/checkout@v4
|
|
53
|
+
|
|
54
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
55
|
+
uses: actions/setup-python@v5
|
|
56
|
+
with:
|
|
57
|
+
python-version: ${{ matrix.python-version }}
|
|
58
|
+
|
|
59
|
+
- name: Install Python SDK
|
|
60
|
+
working-directory: packages/python
|
|
61
|
+
run: pip install -e ".[test]"
|
|
62
|
+
|
|
63
|
+
- name: Run Python tests
|
|
64
|
+
working-directory: packages/python
|
|
65
|
+
run: pytest -v
|