create-quadrokit 0.2.4 → 0.2.6
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 +2 -2
- package/dist/index.mjs +3 -2
- package/package.json +1 -1
- package/template-common/.env.example +2 -0
- package/template-common/tsconfig.app.json +4 -2
- package/{templates/ecommerce → template-common}/vite.config.ts +1 -0
- package/templates/README.md +5 -3
- package/templates/admin-shell/.cursor/rules/commitlint-conventional.mdc +0 -47
- package/templates/admin-shell/.env.example +0 -7
- package/templates/admin-shell/biome.json +0 -12
- package/templates/admin-shell/postcss.config.js +0 -6
- package/templates/admin-shell/src/vite-env.d.ts +0 -9
- package/templates/admin-shell/tsconfig.app.json +0 -16
- package/templates/admin-shell/tsconfig.base.json +0 -20
- package/templates/admin-shell/tsconfig.json +0 -4
- package/templates/admin-shell/tsconfig.node.json +0 -10
- package/templates/admin-shell/vite.config.ts +0 -25
- package/templates/dashboard/.cursor/rules/commitlint-conventional.mdc +0 -47
- package/templates/dashboard/.env.example +0 -7
- package/templates/dashboard/biome.json +0 -12
- package/templates/dashboard/postcss.config.js +0 -6
- package/templates/dashboard/src/vite-env.d.ts +0 -9
- package/templates/dashboard/tsconfig.app.json +0 -16
- package/templates/dashboard/tsconfig.base.json +0 -20
- package/templates/dashboard/tsconfig.json +0 -4
- package/templates/dashboard/tsconfig.node.json +0 -10
- package/templates/dashboard/vite.config.ts +0 -25
- package/templates/ecommerce/.cursor/rules/commitlint-conventional.mdc +0 -47
- package/templates/ecommerce/.env.example +0 -7
- package/templates/ecommerce/biome.json +0 -12
- package/templates/ecommerce/postcss.config.js +0 -6
- package/templates/ecommerce/src/vite-env.d.ts +0 -9
- package/templates/ecommerce/tsconfig.app.json +0 -16
- package/templates/ecommerce/tsconfig.base.json +0 -20
- package/templates/ecommerce/tsconfig.json +0 -4
- package/templates/ecommerce/tsconfig.node.json +0 -10
- package/templates/website/.cursor/rules/commitlint-conventional.mdc +0 -47
- package/templates/website/.env.example +0 -7
- package/templates/website/biome.json +0 -12
- package/templates/website/postcss.config.js +0 -6
- package/templates/website/src/vite-env.d.ts +0 -9
- package/templates/website/tsconfig.app.json +0 -16
- package/templates/website/tsconfig.base.json +0 -20
- package/templates/website/tsconfig.json +0 -4
- package/templates/website/tsconfig.node.json +0 -10
- package/templates/website/vite.config.ts +0 -25
package/README.md
CHANGED
|
@@ -31,8 +31,8 @@ Interactive mode: run without `--template` / `--dir` / `--name` to be prompted.
|
|
|
31
31
|
## What it does
|
|
32
32
|
|
|
33
33
|
1. Copies the chosen template from `create-quadrokit/templates/<name>` when installed from npm, or `packages/templates/<name>` when you run the CLI from the monorepo (skips `node_modules`, `dist`, `.quadrokit`, lockfiles).
|
|
34
|
-
2. Overlays **`template-common/`** (shared across all templates): `.env.example`, `tsconfig*.json`, `postcss.config.js`, `biome.json`, `src/vite-env.d.ts`, `.cursor/rules/commitlint-conventional.mdc`, etc. In the monorepo,
|
|
35
|
-
3. Rewrites `src/lib/quadro-client.ts` to import from
|
|
34
|
+
2. Overlays **`template-common/`** (shared across all templates): `.env.example`, `vite.config.ts`, `tsconfig*.json`, `postcss.config.js`, `biome.json`, `src/vite-env.d.ts`, `.cursor/rules/commitlint-conventional.mdc`, etc. In the monorepo, `packages/templates/*` receives the same overlay via `bun run sync:template-common` (root **postinstall** and `bun run build`); those paths are gitignored under `packages/templates/` so only `template-common/` is the source of truth in git.
|
|
35
|
+
3. Rewrites `src/lib/quadro-client.ts` to import from `@quadrokit/generated/client.gen.js` (alias in `vite.config.ts` / `tsconfig.app.json`).
|
|
36
36
|
4. Removes `@quadrokit/sample-client` and rewrites `workspace:*` on `@quadrokit/*` deps to `^<version>` matching **create-quadrokit**’s own `package.json` `version` (run `bun run version:set` at repo root to bump public packages) unless `--keep-workspace`.
|
|
37
37
|
5. Writes `QUADROKIT.md` with proxy and `quadrokit:generate` instructions. Does **not** copy `.quadrokit/generated` — run `bun run quadrokit:generate` after install.
|
|
38
38
|
6. Adds a root `.gitignore` (unless the template already shipped one).
|
package/dist/index.mjs
CHANGED
|
@@ -319,7 +319,7 @@ async function writeStandaloneBiome(dest, keepWorkspace) {
|
|
|
319
319
|
}
|
|
320
320
|
async function writeQuadroClientImport(dest) {
|
|
321
321
|
const p = path.join(dest, 'src', 'lib', 'quadro-client.ts');
|
|
322
|
-
const body = `import { createClient } from '
|
|
322
|
+
const body = `import { createClient } from '@quadrokit/generated/client.gen.js';
|
|
323
323
|
|
|
324
324
|
/** Same-origin \`/rest\` in dev (Vite proxy) and production (reverse proxy). */
|
|
325
325
|
export const quadro = createClient({ baseURL: '/rest' });
|
|
@@ -348,8 +348,9 @@ Created with **create-quadrokit** (template: \`${template}\`).
|
|
|
348
348
|
|
|
349
349
|
- \`QUADROKIT_ACCESS_KEY\` — multipart \`accessKey\` to \`/api/login\`; then \`4DAdminSID\` for the catalog request.
|
|
350
350
|
- \`QUADROKIT_LOGIN_URL\` — full login URL if not \`\${catalog origin}/api/login\`.
|
|
351
|
+
- \`QUADROKIT_GENERATE_VERBOSE\` / \`QUADROKIT_INSECURE_TLS\` — \`1\` / \`true\` / \`yes\` for chatty logs or self-signed HTTPS (dev only).
|
|
351
352
|
|
|
352
|
-
Flags: \`--url\`, \`--access-key\`, \`--login-url\`, \`--token\` / \`QUADROKIT_CATALOG_TOKEN\` (Bearer)
|
|
353
|
+
Flags: \`--url\`, \`--access-key\`, \`--login-url\`, \`--token\` / \`QUADROKIT_CATALOG_TOKEN\` (Bearer), \`-v\` / \`--verbose\`, \`--insecure-tls\`.
|
|
353
354
|
|
|
354
355
|
4. \`bun run dev\` — the dev server proxies \`/rest\` to \`VITE_4D_ORIGIN\` so **4DSID_** cookies stay same-origin.
|
|
355
356
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "./tsconfig.base.json",
|
|
3
3
|
"compilerOptions": {
|
|
4
|
+
"baseUrl": ".",
|
|
4
5
|
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
5
6
|
"useDefineForClassFields": true,
|
|
6
7
|
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
@@ -9,8 +10,9 @@
|
|
|
9
10
|
"jsx": "react-jsx",
|
|
10
11
|
"verbatimModuleSyntax": true,
|
|
11
12
|
"paths": {
|
|
12
|
-
"@/*": ["./src/*"]
|
|
13
|
+
"@/*": ["./src/*"],
|
|
14
|
+
"@quadrokit/generated/*": [".quadrokit/generated/*"]
|
|
13
15
|
}
|
|
14
16
|
},
|
|
15
|
-
"include": ["src/**/*.ts", "src/**/*.tsx"]
|
|
17
|
+
"include": ["src/**/*.ts", "src/**/*.tsx", ".quadrokit/generated/**/*.ts"]
|
|
16
18
|
}
|
package/templates/README.md
CHANGED
|
@@ -11,17 +11,19 @@ Vite + React 19 + React Router 7 + **Tailwind 3.4** + **i18next** + **react-hook
|
|
|
11
11
|
|
|
12
12
|
## Monorepo
|
|
13
13
|
|
|
14
|
+
Shared config (Vite, TypeScript, Biome, PostCSS, `.env.example`, etc.) lives in **`../../create-quadrokit/template-common/`** and is copied into each template by **`bun run sync:template-common`** (runs on root **postinstall** and before template builds). Do not edit those files inside `packages/templates/<name>/`—change **`template-common`** and re-sync.
|
|
15
|
+
|
|
14
16
|
```bash
|
|
15
17
|
cd packages/templates/dashboard # or website / ecommerce / admin-shell
|
|
16
|
-
bun install # from repo root once
|
|
18
|
+
bun install # from repo root once (runs sync:template-common)
|
|
17
19
|
bun run dev
|
|
18
20
|
```
|
|
19
21
|
|
|
20
|
-
Copy [
|
|
22
|
+
Copy [`template-common/.env.example`](../../create-quadrokit/template-common/.env.example) to `.env` in the template directory and set `VITE_4D_ORIGIN`.
|
|
21
23
|
|
|
22
24
|
## Biome (per template)
|
|
23
25
|
|
|
24
|
-
Each template
|
|
26
|
+
Each template uses a `biome.json` (from `template-common`) with `"root": false` and `"extends": "//"` (Biome v2 monorepo pattern: inherit repo root, scope files to that template). `vcs.useIgnoreFile` is off so Biome does not require a `.gitignore` next to the template.
|
|
25
27
|
|
|
26
28
|
| Script | Purpose |
|
|
27
29
|
|--------|---------|
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Commit messages must follow Conventional Commits (commitlint @commitlint/config-conventional)
|
|
3
|
-
alwaysApply: true
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Git commits (Conventional Commits / commitlint)
|
|
7
|
-
|
|
8
|
-
When proposing or writing **commit messages** (including one-line suggestions, full messages, or PR squash titles), use **Conventional Commits** compatible with **@commitlint/config-conventional**.
|
|
9
|
-
|
|
10
|
-
## Header format
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
<type>(<optional-scope>): <short description>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
- **type** (pick one): `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
|
|
17
|
-
- **scope** (optional): lowercase, short package or area (e.g. `client`, `templates`, `ui`, `create-quadrokit`)
|
|
18
|
-
- **description**: imperative mood, **lowercase**, **no trailing period**, **≤ ~72 characters** for the subject line
|
|
19
|
-
|
|
20
|
-
## Breaking changes
|
|
21
|
-
|
|
22
|
-
- Add `!` after type or scope: `feat(api)!: remove legacy login endpoint`
|
|
23
|
-
- Or explain in the body with a line starting with `BREAKING CHANGE:`
|
|
24
|
-
|
|
25
|
-
## Body and footer (when needed)
|
|
26
|
-
|
|
27
|
-
- Separate body from subject with a blank line.
|
|
28
|
-
- Wrap body at ~100 chars.
|
|
29
|
-
- Footer: `Refs: #123` / `Fixes: #123` if applicable.
|
|
30
|
-
|
|
31
|
-
## Examples
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
feat(client): add entity set release helper
|
|
35
|
-
|
|
36
|
-
fix(templates): correct vite proxy target env var
|
|
37
|
-
|
|
38
|
-
chore: bump biome to 2.4.10
|
|
39
|
-
|
|
40
|
-
docs(readme): document ci:quick script
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Do not
|
|
44
|
-
|
|
45
|
-
- Vague subjects: `update`, `fix stuff`, `wip`
|
|
46
|
-
- End the subject line with a period
|
|
47
|
-
- Use title case for the description (use sentence case / lowercase)
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Origin of your 4D web server (REST). The Vite dev server proxies /rest here.
|
|
2
|
-
VITE_4D_ORIGIN=http://127.0.0.1:7080
|
|
3
|
-
|
|
4
|
-
# Generator only (quadrokit:generate): multipart accessKey → 4DAdminSID cookie for fetching /rest/$catalog.
|
|
5
|
-
# Not used by the browser runtime.
|
|
6
|
-
# QUADROKIT_ACCESS_KEY=
|
|
7
|
-
# QUADROKIT_LOGIN_URL=https://127.0.0.1:7443/api/login
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
5
|
-
"useDefineForClassFields": true,
|
|
6
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"noEmit": true,
|
|
9
|
-
"jsx": "react-jsx",
|
|
10
|
-
"verbatimModuleSyntax": true,
|
|
11
|
-
"paths": {
|
|
12
|
-
"@/*": ["./src/*"]
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
"include": ["src/**/*.ts", "src/**/*.tsx"]
|
|
16
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "bundler",
|
|
7
|
-
"resolveJsonModule": true,
|
|
8
|
-
"strict": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"noEmit": true,
|
|
11
|
-
"jsx": "react-jsx",
|
|
12
|
-
"isolatedModules": true,
|
|
13
|
-
"verbatimModuleSyntax": true,
|
|
14
|
-
"noUnusedLocals": true,
|
|
15
|
-
"noUnusedParameters": true,
|
|
16
|
-
"noFallthroughCasesInSwitch": true,
|
|
17
|
-
"esModuleInterop": true,
|
|
18
|
-
"allowSyntheticDefaultImports": true
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
5
|
-
"noEmit": true,
|
|
6
|
-
"moduleDetection": "force",
|
|
7
|
-
"types": ["node"]
|
|
8
|
-
},
|
|
9
|
-
"include": ["vite.config.ts", "tailwind.config.ts"]
|
|
10
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import path from 'node:path'
|
|
2
|
-
import react from '@vitejs/plugin-react'
|
|
3
|
-
import { defineConfig, loadEnv } from 'vite'
|
|
4
|
-
|
|
5
|
-
export default defineConfig(({ mode }) => {
|
|
6
|
-
const env = loadEnv(mode, process.cwd(), '')
|
|
7
|
-
const target4d = env.VITE_4D_ORIGIN ?? 'http://127.0.0.1:7080'
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
plugins: [react()],
|
|
11
|
-
resolve: {
|
|
12
|
-
alias: {
|
|
13
|
-
'@': path.resolve(__dirname, 'src'),
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
server: {
|
|
17
|
-
proxy: {
|
|
18
|
-
'/rest': {
|
|
19
|
-
target: target4d,
|
|
20
|
-
changeOrigin: true,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
}
|
|
25
|
-
})
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Commit messages must follow Conventional Commits (commitlint @commitlint/config-conventional)
|
|
3
|
-
alwaysApply: true
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Git commits (Conventional Commits / commitlint)
|
|
7
|
-
|
|
8
|
-
When proposing or writing **commit messages** (including one-line suggestions, full messages, or PR squash titles), use **Conventional Commits** compatible with **@commitlint/config-conventional**.
|
|
9
|
-
|
|
10
|
-
## Header format
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
<type>(<optional-scope>): <short description>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
- **type** (pick one): `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
|
|
17
|
-
- **scope** (optional): lowercase, short package or area (e.g. `client`, `templates`, `ui`, `create-quadrokit`)
|
|
18
|
-
- **description**: imperative mood, **lowercase**, **no trailing period**, **≤ ~72 characters** for the subject line
|
|
19
|
-
|
|
20
|
-
## Breaking changes
|
|
21
|
-
|
|
22
|
-
- Add `!` after type or scope: `feat(api)!: remove legacy login endpoint`
|
|
23
|
-
- Or explain in the body with a line starting with `BREAKING CHANGE:`
|
|
24
|
-
|
|
25
|
-
## Body and footer (when needed)
|
|
26
|
-
|
|
27
|
-
- Separate body from subject with a blank line.
|
|
28
|
-
- Wrap body at ~100 chars.
|
|
29
|
-
- Footer: `Refs: #123` / `Fixes: #123` if applicable.
|
|
30
|
-
|
|
31
|
-
## Examples
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
feat(client): add entity set release helper
|
|
35
|
-
|
|
36
|
-
fix(templates): correct vite proxy target env var
|
|
37
|
-
|
|
38
|
-
chore: bump biome to 2.4.10
|
|
39
|
-
|
|
40
|
-
docs(readme): document ci:quick script
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Do not
|
|
44
|
-
|
|
45
|
-
- Vague subjects: `update`, `fix stuff`, `wip`
|
|
46
|
-
- End the subject line with a period
|
|
47
|
-
- Use title case for the description (use sentence case / lowercase)
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Origin of your 4D web server (REST). The Vite dev server proxies /rest here.
|
|
2
|
-
VITE_4D_ORIGIN=http://127.0.0.1:7080
|
|
3
|
-
|
|
4
|
-
# Generator only (quadrokit:generate): multipart accessKey → 4DAdminSID cookie for fetching /rest/$catalog.
|
|
5
|
-
# Not used by the browser runtime.
|
|
6
|
-
# QUADROKIT_ACCESS_KEY=
|
|
7
|
-
# QUADROKIT_LOGIN_URL=https://127.0.0.1:7443/api/login
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
5
|
-
"useDefineForClassFields": true,
|
|
6
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"noEmit": true,
|
|
9
|
-
"jsx": "react-jsx",
|
|
10
|
-
"verbatimModuleSyntax": true,
|
|
11
|
-
"paths": {
|
|
12
|
-
"@/*": ["./src/*"]
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
"include": ["src/**/*.ts", "src/**/*.tsx"]
|
|
16
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "bundler",
|
|
7
|
-
"resolveJsonModule": true,
|
|
8
|
-
"strict": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"noEmit": true,
|
|
11
|
-
"jsx": "react-jsx",
|
|
12
|
-
"isolatedModules": true,
|
|
13
|
-
"verbatimModuleSyntax": true,
|
|
14
|
-
"noUnusedLocals": true,
|
|
15
|
-
"noUnusedParameters": true,
|
|
16
|
-
"noFallthroughCasesInSwitch": true,
|
|
17
|
-
"esModuleInterop": true,
|
|
18
|
-
"allowSyntheticDefaultImports": true
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
5
|
-
"noEmit": true,
|
|
6
|
-
"moduleDetection": "force",
|
|
7
|
-
"types": ["node"]
|
|
8
|
-
},
|
|
9
|
-
"include": ["vite.config.ts", "tailwind.config.ts"]
|
|
10
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import path from 'node:path'
|
|
2
|
-
import react from '@vitejs/plugin-react'
|
|
3
|
-
import { defineConfig, loadEnv } from 'vite'
|
|
4
|
-
|
|
5
|
-
export default defineConfig(({ mode }) => {
|
|
6
|
-
const env = loadEnv(mode, process.cwd(), '')
|
|
7
|
-
const target4d = env.VITE_4D_ORIGIN ?? 'http://127.0.0.1:7080'
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
plugins: [react()],
|
|
11
|
-
resolve: {
|
|
12
|
-
alias: {
|
|
13
|
-
'@': path.resolve(__dirname, 'src'),
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
server: {
|
|
17
|
-
proxy: {
|
|
18
|
-
'/rest': {
|
|
19
|
-
target: target4d,
|
|
20
|
-
changeOrigin: true,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
}
|
|
25
|
-
})
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Commit messages must follow Conventional Commits (commitlint @commitlint/config-conventional)
|
|
3
|
-
alwaysApply: true
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Git commits (Conventional Commits / commitlint)
|
|
7
|
-
|
|
8
|
-
When proposing or writing **commit messages** (including one-line suggestions, full messages, or PR squash titles), use **Conventional Commits** compatible with **@commitlint/config-conventional**.
|
|
9
|
-
|
|
10
|
-
## Header format
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
<type>(<optional-scope>): <short description>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
- **type** (pick one): `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
|
|
17
|
-
- **scope** (optional): lowercase, short package or area (e.g. `client`, `templates`, `ui`, `create-quadrokit`)
|
|
18
|
-
- **description**: imperative mood, **lowercase**, **no trailing period**, **≤ ~72 characters** for the subject line
|
|
19
|
-
|
|
20
|
-
## Breaking changes
|
|
21
|
-
|
|
22
|
-
- Add `!` after type or scope: `feat(api)!: remove legacy login endpoint`
|
|
23
|
-
- Or explain in the body with a line starting with `BREAKING CHANGE:`
|
|
24
|
-
|
|
25
|
-
## Body and footer (when needed)
|
|
26
|
-
|
|
27
|
-
- Separate body from subject with a blank line.
|
|
28
|
-
- Wrap body at ~100 chars.
|
|
29
|
-
- Footer: `Refs: #123` / `Fixes: #123` if applicable.
|
|
30
|
-
|
|
31
|
-
## Examples
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
feat(client): add entity set release helper
|
|
35
|
-
|
|
36
|
-
fix(templates): correct vite proxy target env var
|
|
37
|
-
|
|
38
|
-
chore: bump biome to 2.4.10
|
|
39
|
-
|
|
40
|
-
docs(readme): document ci:quick script
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Do not
|
|
44
|
-
|
|
45
|
-
- Vague subjects: `update`, `fix stuff`, `wip`
|
|
46
|
-
- End the subject line with a period
|
|
47
|
-
- Use title case for the description (use sentence case / lowercase)
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Origin of your 4D web server (REST). The Vite dev server proxies /rest here.
|
|
2
|
-
VITE_4D_ORIGIN=http://127.0.0.1:7080
|
|
3
|
-
|
|
4
|
-
# Generator only (quadrokit:generate): multipart accessKey → 4DAdminSID cookie for fetching /rest/$catalog.
|
|
5
|
-
# Not used by the browser runtime.
|
|
6
|
-
# QUADROKIT_ACCESS_KEY=
|
|
7
|
-
# QUADROKIT_LOGIN_URL=https://127.0.0.1:7443/api/login
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
5
|
-
"useDefineForClassFields": true,
|
|
6
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"noEmit": true,
|
|
9
|
-
"jsx": "react-jsx",
|
|
10
|
-
"verbatimModuleSyntax": true,
|
|
11
|
-
"paths": {
|
|
12
|
-
"@/*": ["./src/*"]
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
"include": ["src/**/*.ts", "src/**/*.tsx"]
|
|
16
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "bundler",
|
|
7
|
-
"resolveJsonModule": true,
|
|
8
|
-
"strict": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"noEmit": true,
|
|
11
|
-
"jsx": "react-jsx",
|
|
12
|
-
"isolatedModules": true,
|
|
13
|
-
"verbatimModuleSyntax": true,
|
|
14
|
-
"noUnusedLocals": true,
|
|
15
|
-
"noUnusedParameters": true,
|
|
16
|
-
"noFallthroughCasesInSwitch": true,
|
|
17
|
-
"esModuleInterop": true,
|
|
18
|
-
"allowSyntheticDefaultImports": true
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
5
|
-
"noEmit": true,
|
|
6
|
-
"moduleDetection": "force",
|
|
7
|
-
"types": ["node"]
|
|
8
|
-
},
|
|
9
|
-
"include": ["vite.config.ts", "tailwind.config.ts"]
|
|
10
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Commit messages must follow Conventional Commits (commitlint @commitlint/config-conventional)
|
|
3
|
-
alwaysApply: true
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Git commits (Conventional Commits / commitlint)
|
|
7
|
-
|
|
8
|
-
When proposing or writing **commit messages** (including one-line suggestions, full messages, or PR squash titles), use **Conventional Commits** compatible with **@commitlint/config-conventional**.
|
|
9
|
-
|
|
10
|
-
## Header format
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
<type>(<optional-scope>): <short description>
|
|
14
|
-
```
|
|
15
|
-
|
|
16
|
-
- **type** (pick one): `feat`, `fix`, `docs`, `style`, `refactor`, `perf`, `test`, `build`, `ci`, `chore`, `revert`
|
|
17
|
-
- **scope** (optional): lowercase, short package or area (e.g. `client`, `templates`, `ui`, `create-quadrokit`)
|
|
18
|
-
- **description**: imperative mood, **lowercase**, **no trailing period**, **≤ ~72 characters** for the subject line
|
|
19
|
-
|
|
20
|
-
## Breaking changes
|
|
21
|
-
|
|
22
|
-
- Add `!` after type or scope: `feat(api)!: remove legacy login endpoint`
|
|
23
|
-
- Or explain in the body with a line starting with `BREAKING CHANGE:`
|
|
24
|
-
|
|
25
|
-
## Body and footer (when needed)
|
|
26
|
-
|
|
27
|
-
- Separate body from subject with a blank line.
|
|
28
|
-
- Wrap body at ~100 chars.
|
|
29
|
-
- Footer: `Refs: #123` / `Fixes: #123` if applicable.
|
|
30
|
-
|
|
31
|
-
## Examples
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
feat(client): add entity set release helper
|
|
35
|
-
|
|
36
|
-
fix(templates): correct vite proxy target env var
|
|
37
|
-
|
|
38
|
-
chore: bump biome to 2.4.10
|
|
39
|
-
|
|
40
|
-
docs(readme): document ci:quick script
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
## Do not
|
|
44
|
-
|
|
45
|
-
- Vague subjects: `update`, `fix stuff`, `wip`
|
|
46
|
-
- End the subject line with a period
|
|
47
|
-
- Use title case for the description (use sentence case / lowercase)
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
# Origin of your 4D web server (REST). The Vite dev server proxies /rest here.
|
|
2
|
-
VITE_4D_ORIGIN=http://127.0.0.1:7080
|
|
3
|
-
|
|
4
|
-
# Generator only (quadrokit:generate): multipart accessKey → 4DAdminSID cookie for fetching /rest/$catalog.
|
|
5
|
-
# Not used by the browser runtime.
|
|
6
|
-
# QUADROKIT_ACCESS_KEY=
|
|
7
|
-
# QUADROKIT_LOGIN_URL=https://127.0.0.1:7443/api/login
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo",
|
|
5
|
-
"useDefineForClassFields": true,
|
|
6
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
7
|
-
"moduleDetection": "force",
|
|
8
|
-
"noEmit": true,
|
|
9
|
-
"jsx": "react-jsx",
|
|
10
|
-
"verbatimModuleSyntax": true,
|
|
11
|
-
"paths": {
|
|
12
|
-
"@/*": ["./src/*"]
|
|
13
|
-
}
|
|
14
|
-
},
|
|
15
|
-
"include": ["src/**/*.ts", "src/**/*.tsx"]
|
|
16
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
|
5
|
-
"module": "ESNext",
|
|
6
|
-
"moduleResolution": "bundler",
|
|
7
|
-
"resolveJsonModule": true,
|
|
8
|
-
"strict": true,
|
|
9
|
-
"skipLibCheck": true,
|
|
10
|
-
"noEmit": true,
|
|
11
|
-
"jsx": "react-jsx",
|
|
12
|
-
"isolatedModules": true,
|
|
13
|
-
"verbatimModuleSyntax": true,
|
|
14
|
-
"noUnusedLocals": true,
|
|
15
|
-
"noUnusedParameters": true,
|
|
16
|
-
"noFallthroughCasesInSwitch": true,
|
|
17
|
-
"esModuleInterop": true,
|
|
18
|
-
"allowSyntheticDefaultImports": true
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"extends": "./tsconfig.base.json",
|
|
3
|
-
"compilerOptions": {
|
|
4
|
-
"tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo",
|
|
5
|
-
"noEmit": true,
|
|
6
|
-
"moduleDetection": "force",
|
|
7
|
-
"types": ["node"]
|
|
8
|
-
},
|
|
9
|
-
"include": ["vite.config.ts", "tailwind.config.ts"]
|
|
10
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import path from 'node:path'
|
|
2
|
-
import react from '@vitejs/plugin-react'
|
|
3
|
-
import { defineConfig, loadEnv } from 'vite'
|
|
4
|
-
|
|
5
|
-
export default defineConfig(({ mode }) => {
|
|
6
|
-
const env = loadEnv(mode, process.cwd(), '')
|
|
7
|
-
const target4d = env.VITE_4D_ORIGIN ?? 'http://127.0.0.1:7080'
|
|
8
|
-
|
|
9
|
-
return {
|
|
10
|
-
plugins: [react()],
|
|
11
|
-
resolve: {
|
|
12
|
-
alias: {
|
|
13
|
-
'@': path.resolve(__dirname, 'src'),
|
|
14
|
-
},
|
|
15
|
-
},
|
|
16
|
-
server: {
|
|
17
|
-
proxy: {
|
|
18
|
-
'/rest': {
|
|
19
|
-
target: target4d,
|
|
20
|
-
changeOrigin: true,
|
|
21
|
-
},
|
|
22
|
-
},
|
|
23
|
-
},
|
|
24
|
-
}
|
|
25
|
-
})
|