qcobjects-cli 2.5.146-beta → 2.5.150-beta

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.
@@ -16,7 +16,7 @@ on:
16
16
  branches: [ main ]
17
17
  pull_request:
18
18
  # The branches below must be a subset of the branches above
19
- branches: [ "v2.3", "v2.4" ]
19
+ branches: [ "main", "development" ]
20
20
  schedule:
21
21
  - cron: '23 16 * * 2'
22
22
 
@@ -1,7 +1,4 @@
1
- # This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
2
- # For more information see: https://help.github.com/actions/language-and-framework-guides/publishing-nodejs-packages
3
-
4
- name: Node.js Publish Package
1
+ name: Node.js Publish
5
2
 
6
3
  on:
7
4
  push:
@@ -39,4 +36,12 @@ jobs:
39
36
  - name: Upgrade npm for OIDC support (requires >=11.5.1)
40
37
  run: npm install -g npm@latest
41
38
  - run: npm i --legacy-peer-deps
42
- - run: npm publish
39
+ - name: Publish to npm
40
+ run: |
41
+ if [[ "${{ github.ref }}" == *-beta ]]; then
42
+ npm publish --tag beta
43
+ elif [[ "${{ github.ref }}" == *-lts ]]; then
44
+ npm publish --tag lts
45
+ else
46
+ npm publish
47
+ fi
package/AGENTS.md CHANGED
@@ -3,57 +3,56 @@
3
3
  TypeScript CLI tool and HTTP/HTTP2 server for the [QCObjects](https://qcobjects.dev) framework.
4
4
  Node >=22, npm >=10.
5
5
 
6
- ## Git workflow
7
-
8
- See `.opencode/instructions/git-workflow.md` — topic branches from `development`, no rebase, SemVer tags.
9
-
10
6
  ## Commands
11
7
 
12
8
  | Action | Command |
13
9
  |--------|---------|
14
- | Install | `npm install` |
15
- | Lint | `npm run lint` (`eslint src/**/*.ts --fix`) |
16
- | Test | `npm test` (lint jasmine) |
10
+ | Install | `npm i --legacy-peer-deps` (peer deps don't auto-install on npm >=10) |
11
+ | Lint | `npm run lint` |
12
+ | Test | `npm test` (lint + jasmine) |
17
13
  | Run single test | `npx ts-node --project ./tsconfig.jasmine.json ./node_modules/jasmine/bin/jasmine` |
18
- | Build (types → tsesm) | `npm run build` |
19
- | Build TS only | `npm run build:ts` — **runs `npm test` first**, then `node ./transpile.js tsconfig.json` |
14
+ | Full build (types → CJSESM) | `npm run build` |
15
+ | Build CJS only | `npm run build:ts` — runs test first |
20
16
  | Build types only | `npm run build:ts-types` |
21
- | Build ESM bundle | `npm run build:esbuild` |
22
- | Dev server | `npm start` (aliased to `qcobjects-shell`) |
17
+ | Build ESM + browser IIFE | `npm run build:esbuild` |
18
+ | Dev server | `npm start` (aliases to `qcobjects-shell`) |
23
19
 
24
20
  ## Architecture
25
21
 
26
22
  - **CLI framework:** Commander (`src/cli-main.ts` — `SwitchCommander` class)
27
23
  - **Commands** in `src/cli-commands-*.ts`, registered via `src/cli-commands.ts`
28
24
  - **Servers:** HTTP (`src/main-http-server.ts`), HTTP/2 (`src/main-http2-server.ts`), GAE variant
29
- - **Build pipeline:** Custom `transpile.js` (TS compiler API) produces CJS `esbuild` produces ESM + browser IIFE
25
+ - **Build pipeline:** Custom `transpile.js` (TS compiler API) CJS, then `build-esbuild-esm.js` ESM + browser IIFE
30
26
  - **Output:** `public/cjs/`, `public/esm/`, `public/browser/`, `public/types/`
27
+ - Also ships `deno.json` + `mod.ts` for Deno compatibility
31
28
 
32
- ## Testing quirks
29
+ ## Testing
33
30
 
34
- - **Framework:** Jasmine v3.7 (`spec/support/jasmine.json`)
35
- - Single spec: `spec/testsSpec.ts` — verifies `qcobjects` version matches between `peerDependencies` and `devDependencies`
31
+ - **Framework:** Jasmine v3.7, single spec at `spec/testsSpec.ts`
32
+ - Verifies `qcobjects` version matches between `peerDependencies` and `devDependencies`
36
33
  - Mock path in `tsconfig.jasmine.json`: `qcobjects-sdk` → `spec/mocks/qcobjects-sdk.mock.ts`
37
34
  - Config: `stopSpecOnExpectationFailure: true`, `failSpecWithNoExpectations: true`, `random: false`
38
35
 
39
- ## QCObjects patterns used in source
36
+ ## QCObjects patterns in source
40
37
 
41
38
  - `InheritClass`, `Package()`, `Export()`, `CONFIG`, `logger`, `Service`, `Component`
42
39
  - Plugin autodiscovery: scans `dependencies`/`devDependencies` for packages with `qcobjects-lib`, `qcobjects-handler`, `qcobjects-command` keywords
43
40
 
44
41
  ## Config & env
45
42
 
46
- - `config.json` at root — runtime config
43
+ - `config.json` at root — **gitignored** (local dev only), default: `{"devmode":"debug"}`
47
44
  - `src/defaultsettings.ts` — `$ENV(VAR)` template syntax resolved at runtime
48
45
  - `process.env.PORT` overrides HTTP listen port
49
- - Dev mode: `config.json` `{"devmode":"debug"}`
46
+ - Version tracked in `VERSION` file, CLI has built-in `v-patch`/`v-minor`/`v-major`/`v-sync`/`v-changelog` commands
50
47
 
51
- ## Pre-commit
48
+ ## Gotchas
52
49
 
53
- `.pre-commit-config.yaml`: trailing-whitespace, end-of-file-fixer, check-yaml, check-added-large-files (500 KB max).
54
- Run `pre-commit install` to activate hooks.
50
+ - **Duplicate files:** Source has `* 2.ts`, `* 2.json`, `* 2.yml` files always edit the version without ` 2` suffix
51
+ - **ESLint** uses `recommendedTypeChecked` but many core rules are explicitly disabled (`no-explicit-any: off`, `no-unused-vars: off`, `no-var: off`, etc.) — lint is permissive
52
+ - **CI workflows** (`ci.yml`) are placeholders with TODOs; real publish happens via `.github/workflows/npmpublish.yml` (single OIDC workflow handling all 3 channels)
53
+ - **Postversion** configured as `"git push"` (only pushes the branch) to avoid duplicate CI — the tag is pushed separately by `syncGit`
55
54
 
56
- ## Build artifacts
55
+ ## Git workflow
57
56
 
58
- - `build/templates/`compiled template copies
59
- - Lockfile: `package-lock.json` only (no yarn/pnpm)
57
+ See `.opencode/instructions/git-workflow.md` — topic branches from `development`, no rebase, SemVer tags.
58
+ See `docs/release-pipeline.md` branch model, release channels, archive info.
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.146-beta
1
+ 2.5.151-beta
@@ -112,6 +112,28 @@ const buildConfigs = {
112
112
  content = content
113
113
  .replace(/const\s+{([^}]+)}\s*=\s*require\(['"]([^'"]+)['"]\)/g, 'import { $1 } from "$2"')
114
114
  .replace(/const\s+([^=]+)\s*=\s*require\(['"]([^'"]+)['"]\)/g, 'import $1 from "$2"');
115
+
116
+ // Convert await import(var) → JSON.parse(fs.readFileSync(var, "utf8"))
117
+ // for variables referencing paths ending in .json/.jsonp/.md/.mdc/.text/.txt
118
+ const extensionsToConvert = ['json', 'jsonp', 'md', 'mdc', 'text', 'txt'];
119
+ const extPattern = extensionsToConvert.join('|');
120
+ const varDeclRegex = new RegExp(
121
+ `(?:const|let|var)\\s+(\\w+)\\s*=[^;]*?\\.(?:${extPattern})["'\`][^;]*;`,
122
+ 'g'
123
+ );
124
+ const jsonVars = new Set();
125
+ let match;
126
+ while ((match = varDeclRegex.exec(content)) !== null) {
127
+ jsonVars.add(match[1]);
128
+ }
129
+ if (jsonVars.size > 0) {
130
+ const importRegex = new RegExp(
131
+ `await import\\((${[...jsonVars].join('|')})\\)`,
132
+ 'g'
133
+ );
134
+ content = content.replace(importRegex, 'JSON.parse(fs.readFileSync($1, "utf8"))');
135
+ }
136
+
115
137
  writeFileSync(file, content, 'utf8');
116
138
  });
117
139
  });
@@ -0,0 +1,253 @@
1
+ # Launch & Server Architecture
2
+
3
+ ## How to launch an app
4
+
5
+ After creating a project with `qcobjects create myapp --pwa`, enter the project directory and run:
6
+
7
+ ```shell
8
+ npm start
9
+ ```
10
+
11
+ This executes `npm run createcert && npm run serve` (defined in the generated `package.json`). The `serve` script runs `qcobjects-server`.
12
+
13
+ Alternatively, from anywhere:
14
+
15
+ ```shell
16
+ qcobjects launch <appname>
17
+ ```
18
+
19
+ **Note:** The `<appname>` argument is accepted for interface consistency but is not used by the server — the server discovers the app from the current working directory.
20
+
21
+ ## The launch chain
22
+
23
+ ```
24
+ qcobjects launch <appname>
25
+
26
+
27
+ src/cli-main.ts:455-472
28
+ └─ exec("qcobjects-server")
29
+
30
+
31
+ package.json bin → public/cjs/qcobjects-http2-server.js
32
+
33
+
34
+ src/qcobjects-http2-server.ts
35
+ ├─ import "./defaultsettings" ← loads CONFIG defaults + project config.json
36
+ ├─ choose server class:
37
+ │ CONFIG.get("useLegacyHTTP", false)
38
+ │ → false (default): HTTP2Server (src/main-http2-server.ts)
39
+ │ → true: HTTPServer (src/main-http-server.ts)
40
+ └─ New(serverClass).start()
41
+ ```
42
+
43
+ ## CLI command handler
44
+
45
+ **File:** `src/cli-main.ts:455-472`
46
+
47
+ ```typescript
48
+ switchCommander.program.command("launch <appname>")
49
+ .description("Launches the application")
50
+ .action(function () {
51
+ logger.info("Launching...");
52
+ setTimeout(() => {
53
+ logger.info("Go to the browser and open https://localhost ");
54
+ logger.info("Press Ctrl-C to stop serving ");
55
+ exec("qcobjects-server", () => {})
56
+ .stdout?.on("data", data => console.log(data));
57
+ }, 5000);
58
+ });
59
+ ```
60
+
61
+ The handler:
62
+ 1. Logs `"Launching..."` immediately
63
+ 2. Waits 5 seconds
64
+ 3. Spawns `qcobjects-server` (the HTTP/2 server binary) via `child_process.exec()`
65
+ 4. Pipes the server's stdout to the console
66
+
67
+ The 5-second delay exists so the CLI process can exit gracefully before the server takes over.
68
+
69
+ ## Server binary
70
+
71
+ The `qcobjects-server` binary is defined in `package.json`:
72
+
73
+ | Binary | Path | Source |
74
+ |--------|------|--------|
75
+ | `qcobjects-server` | `public/cjs/qcobjects-http2-server.js` | `src/qcobjects-http2-server.ts` |
76
+ | `qcobjects-http-server` | `public/cjs/qcobjects-http-server.js` | `src/qcobjects-http-server.ts` |
77
+ | `qcobjects-gae-server` | `public/cjs/qcobjects-gae-http-server.js` | `src/qcobjects-gae-http-server.ts` |
78
+
79
+ ## Server selection
80
+
81
+ **File:** `src/qcobjects-http2-server.ts`
82
+
83
+ ```typescript
84
+ import "./defaultsettings";
85
+ import { CONFIG, New } from "qcobjects";
86
+ import { HTTPServer } from "./main-http-server";
87
+ import { HTTP2Server } from "./main-http2-server";
88
+
89
+ const _ServerClass_ = CONFIG.get("useLegacyHTTP", false)
90
+ ? HTTPServer
91
+ : HTTP2Server;
92
+ const app = New(_ServerClass_);
93
+ app.start();
94
+ ```
95
+
96
+ The default is **HTTP/2** (`useLegacyHTTP: false`). Set `useLegacyHTTP: true` in the project's `config.json` to use HTTP/1.1.
97
+
98
+ | Server | File | Listens on | Default port |
99
+ |--------|------|------------|--------------|
100
+ | HTTP/2 (default) | `src/main-http2-server.ts` | HTTP redirect (port 8080 → 8443) + HTTPS/2 (port 8443) | 8443 |
101
+ | Legacy HTTP | `src/main-http-server.ts` | HTTP (plain, single port) | `process.env.PORT` \|\| 8080 |
102
+ | GAE HTTP | `src/main-http-gae-server.ts` | HTTP (single port, GAE compatible) | `process.env.PORT` \|\| 8080 |
103
+
104
+ ## App discovery
105
+
106
+ The server does not use the `<appname>` argument. Instead, the app is discovered through the **current working directory**:
107
+
108
+ 1. **`src/defaultsettings.ts:133`** — `CONFIG.set("projectPath", \`${process.cwd()}/\`)`
109
+ 2. **`src/defaultsettings.ts:173-178`** — reads `<projectPath>/config.json` and merges every key into CONFIG, overriding all defaults
110
+ 3. **`src/defaultsettings.ts:90`** — `documentRoot` defaults to `<projectPath>/public/`
111
+ 4. **`src/main-file.ts`** — `FileDispatcher` resolves all file requests relative to `documentRoot`
112
+
113
+ The implicit contract is that the user is `cd`'d into the project directory, and the project contains a `config.json` and a `public/` directory.
114
+
115
+ ## CONFIG settings reference
116
+
117
+ All defaults are set in `src/defaultsettings.ts:83-136`.
118
+
119
+ ### Server & network
120
+
121
+ | Setting | Default | Description |
122
+ |---------|---------|-------------|
123
+ | `serverPortHTTP` | `"8080"` | Port for HTTP (and HTTP→HTTPS redirect in HTTP/2 mode) |
124
+ | `serverPortHTTPS` | `"8443"` | Port for HTTPS/HTTP/2 |
125
+ | `useLegacyHTTP` | `false` | Use HTTP/1.1 instead of HTTP/2 |
126
+ | `allowHTTP1` | `true` | Allow HTTP/1.1 fallback on the HTTP/2 server |
127
+ | `documentRoot` | `$config(projectPath)public/` | Root directory for static file serving |
128
+ | `documentRootFileIndex` | `"index.html"` | Default file served for directory paths |
129
+ | `cacheControl` | `"max-age=31536000"` | Cache-Control header for static files |
130
+ | `backendTimeout` | `20000` | Request timeout in ms (set at runtime) |
131
+
132
+ ### TLS / certificates
133
+
134
+ | Setting | Default | Description |
135
+ |---------|---------|-------------|
136
+ | `private-key-pem` | `$config(domain)-privkey.pem` | TLS private key file |
137
+ | `private-cert-pem` | `$config(domain)-cert.pem` | TLS certificate file |
138
+ | `certificate_provider` | `$ENV(CERTIFICATE_PROVIDER)` | `self_signed` or `letsencrypt` |
139
+
140
+ ### Backend
141
+
142
+ | Setting | Default | Description |
143
+ |---------|---------|-------------|
144
+ | `backend.db_engine.name` | `$ENV(ENGINE_NAME)` | Database engine name |
145
+ | `backend.auth.enabled` | `true` | Enable authentication |
146
+ | `backend.routes` | `[]` | Route definitions (microservice dispatch) |
147
+
148
+ ### Autodiscovery
149
+
150
+ | Setting | Default | Description |
151
+ |---------|---------|-------------|
152
+ | `autodiscover` | `true` | Master switch for plugin autodiscovery |
153
+ | `autodiscover_commands` | `true` | Auto-load `qcobjects-command` plugins |
154
+ | `autodiscover_handlers` | `true` | Auto-load `qcobjects-handler` plugins |
155
+
156
+ ### Config resolution order
157
+
158
+ 1. Hardcoded defaults (`defaultsettings.ts:83-136`)
159
+ 2. `$ENV(VAR)` template literals resolved at runtime from environment variables
160
+ 3. `$config(key)` template literals resolved from CONFIG values
161
+ 4. Project `<projectPath>/config.json` values merged on top (overrides all)
162
+
163
+ ## HTTP/2 server start
164
+
165
+ **File:** `src/main-http2-server.ts:433-448`
166
+
167
+ ```typescript
168
+ start() {
169
+ var server = this.server;
170
+
171
+ const httpServer = http.createServer((req, res) => {
172
+ res.writeHead(301, {
173
+ Location: `https://${req.headers.host}${req.url}`
174
+ });
175
+ res.end();
176
+ });
177
+
178
+ httpServer.listen(CONFIG.get("serverPortHTTP")); // 8080 → redirects to HTTPS
179
+ server.listen(CONFIG.get("serverPortHTTPS")); // 8443 → HTTP/2
180
+ }
181
+ ```
182
+
183
+ - Creates an HTTP redirector on `serverPortHTTP` (8080) that sends 301 redirects to HTTPS
184
+ - Creates the HTTP/2 secure server on `serverPortHTTPS` (8443) using `http2.createSecureServer()` with TLS key and cert from CONFIG
185
+
186
+ ## Legacy HTTP server start
187
+
188
+ **File:** `src/main-http-server.ts:595-598`
189
+
190
+ ```typescript
191
+ start() {
192
+ var server = this.server;
193
+ server.listen(process.env.PORT || CONFIG.get("serverPortHTTP"));
194
+ }
195
+ ```
196
+
197
+ Single HTTP listener on `process.env.PORT || serverPortHTTP` (default 8080).
198
+
199
+ ## Request handling flow
200
+
201
+ Both server variants follow the same pattern on each request:
202
+
203
+ ```
204
+ Incoming request
205
+
206
+
207
+ Check global.get("backendAvailable")?
208
+
209
+ ├─ Yes (project config.json has "backend" key)
210
+ │ │
211
+ │ ├─ Load interceptors from CONFIG.get("backend").interceptors
212
+ │ ├─ Match request path against CONFIG.get("backend").routes
213
+ │ │
214
+ │ ├─ Route matched?
215
+ │ │ ├─ Yes → Instantiate route.microservice + ".Microservice"
216
+ │ │ │ via New(microServiceClassFactory, { ...CONFIG values })
217
+ │ │ └─ No → Fall through to HTTPServerResponse / HTTP2ServerResponse
218
+ │ │
219
+ │ └─ Response class serves file via FileDispatcher
220
+
221
+ └─ No (no backend config)
222
+
223
+ └─ HTTPServerResponse / HTTP2ServerResponse
224
+ └─ FileDispatcher resolves <documentRoot>/<path>
225
+ ```
226
+
227
+ ### Key files
228
+
229
+ | File | Role |
230
+ |------|------|
231
+ | `src/qcobjects-http2-server.ts` | Server bootstrap — chooses HTTP vs HTTP/2 |
232
+ | `src/qcobjects-http-server.ts` | Legacy HTTP bootstrap |
233
+ | `src/qcobjects-gae-http-server.ts` | GAE-compatible bootstrap |
234
+ | `src/main-http2-server.ts` | HTTP2Server, HTTP2ServerResponse, HTTP2ServerRequest |
235
+ | `src/main-http-server.ts` | HTTPServer, BackendMicroservice, HTTPServerResponse |
236
+ | `src/main-http-gae-server.ts` | GAE-compatible server classes |
237
+ | `src/main-file.ts` | FileDispatcher — filesystem resolution |
238
+ | `src/defaultsettings.ts` | All CONFIG defaults + config.json loading + plugin autodiscovery |
239
+ | `src/common-pipelog.ts` | PipeLog logging utility |
240
+
241
+ ## Template-generated app scripts
242
+
243
+ Running `qcobjects create myapp --pwa` generates a `package.json` with these relevant scripts:
244
+
245
+ | Script | Command | Purpose |
246
+ |--------|---------|---------|
247
+ | `start` | `npm run createcert && npm run serve` | Full launch (generate TLS cert then serve) |
248
+ | `serve` | `qcobjects-server` | Start HTTP/2 server |
249
+ | `http-server` | `qcobjects-http-server` | Start legacy HTTP server |
250
+ | `createcert` | `qcobjects-createcert` | Generate self-signed TLS certificate |
251
+ | `prestart` | `npm run publish:web` | Build before launching |
252
+
253
+ The recommended workflow: `npm start` → generates a self-signed cert (if needed) → builds the web assets → starts the HTTP/2 server.
@@ -0,0 +1,122 @@
1
+ # Release Pipeline
2
+
3
+ ## Why this change
4
+
5
+ Previously the repo used version-specific branches (v2.3, v2.4-beta, v2.4-ts,
6
+ v2.5-beta) to track different architecture waves (ECMA5, ES6+JS, full TS+JS).
7
+ As the number of active tracks grew, branch-based management added complexity:
8
+ CI workflows needed per-branch configuration, PR paths were unclear, and
9
+ promoting a beta to LTS required manual cross-branch coordination.
10
+
11
+ ## What changed
12
+
13
+ - Removed all version-specific branches (v2.3, v2.4-beta, v2.4-ts, v2.5-beta)
14
+ - Single active development branch: `development`
15
+ - Release channel is encoded in the tag suffix, not in a branch name
16
+ - Old version tracks preserved as archive tags
17
+
18
+ ## Branch model
19
+
20
+ main ← release digest (merged from development via PR)
21
+ development ← single active development branch
22
+ feature/* ← topic branches, PR into development
23
+ fix/*
24
+ bugfix/*
25
+
26
+ No more version-specific branches. Every release is a tag on `main`.
27
+
28
+ ## Release channels (tags)
29
+
30
+ | Tag pattern | npm dist-tag | Triggered by |
31
+ |-------------|-------------|--------------|
32
+ | `vX.Y.Z` | `latest` | `npmpublish.yml` (suffix detection) |
33
+ | `vX.Y.Z-lts` | `lts` | `npmpublish.yml` (suffix detection) |
34
+ | `vX.Y.Z-beta` | `beta` | `npmpublish.yml` (suffix detection) |
35
+ | (future) `-dev` | `dev` | (add pattern to `npmpublish.yml`) |
36
+ | (future) `-alpha` | `alpha` | (add pattern to `npmpublish.yml`) |
37
+
38
+ ## Promotion workflow
39
+
40
+ 1. Daily work on `development` branch
41
+ 2. `v-patch --git --npm` → tag `vX.Y.Z-beta` (beta publish)
42
+ 3. Change VERSION suffix → `v-patch --git --npm` → tag `vX.Y.Z-lts` (LTS publish)
43
+ 4. PR `development` → `main` → merge → tag `vX.Y.Z` on `main` (latest publish)
44
+
45
+ ## Branch snapshot and removal steps
46
+
47
+ These steps preserve the latest state of every old version branch as a tag,
48
+ then delete the branches. Run them once during migration.
49
+
50
+ ### Prerequisites
51
+
52
+ ```bash
53
+ git fetch --all --prune
54
+ ```
55
+
56
+ ### 1. Archive v2.4-beta
57
+
58
+ ```bash
59
+ git tag archive/v2.4-beta origin/v2.4-beta
60
+ git push origin archive/v2.4-beta
61
+ ```
62
+
63
+ ### 2. Archive v2.4-ts
64
+
65
+ ```bash
66
+ git tag archive/v2.4-ts origin/v2.4-ts
67
+ git push origin archive/v2.4-ts
68
+ ```
69
+
70
+ ### 3. Bootstrap development from v2.5-beta
71
+
72
+ ```bash
73
+ git checkout -b development origin/v2.5-beta
74
+ git push -u origin development
75
+ ```
76
+
77
+ ### 4. Delete old remote branches
78
+
79
+ ```bash
80
+ git push origin --delete v2.5-beta v2.4-beta v2.4-ts
81
+ ```
82
+
83
+ ### 5. Delete old local branches
84
+
85
+ ```bash
86
+ git branch -d v2.5-beta
87
+ ```
88
+
89
+ ### 6. Verify
90
+
91
+ ```bash
92
+ git branch -a # should show only main, development
93
+ git tag -ln archive/* # should show archive/v2.4-beta, archive/v2.4-ts
94
+ ```
95
+
96
+ ## Archived tracks
97
+
98
+ v2.3 is already captured by existing tags `v2.3.1` through `v2.3.50` — no
99
+ separate archive tag needed. Its commits are ancestors of `main`.
100
+
101
+ | Archive tag | Source branch | Created |
102
+ |-------------|--------------|---------|
103
+ | `archive/v2.4-beta` | `origin/v2.4-beta` | migration date |
104
+ | `archive/v2.4-ts` | `origin/v2.4-ts` | migration date |
105
+ | `v2.3.50` (existing tag) | `v2.3` branch (GitLab, merged to master) | n/a |
106
+
107
+ ## CI pipeline updates
108
+
109
+ | File | Change |
110
+ |------|--------|
111
+ | `.github/workflows/codeql-analysis.yml` | branch targets from `[v2.3, v2.4]` to `[main, development]` |
112
+ | `.github/workflows/npmpublish.yml` | consolidated single workflow (was 3 separate) |
113
+ | `.github/workflows/open-pr-to-development.yml` | already targets `development`, no changes needed |
114
+ | `.github/workflows/main-pr-source.yml` | already enforces `development` → `main`, no changes needed |
115
+ | `.github/workflows/ci.yml` | already targets `main`/`development`, no changes needed |
116
+
117
+ ## Future considerations
118
+
119
+ - When starting a new architecture wave (e.g. v2.6), branch from `main` into a
120
+ feature branch, develop on `development`, and release via the same tag flow
121
+ - Archived branches are never deleted from git history — the tags ensure
122
+ the code is always accessible for reference or hotfix branching
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "qcobjects-cli",
3
- "version": "2.5.146-beta",
3
+ "version": "2.5.150-beta",
4
4
  "description": "qcobjects cli command line tool",
5
5
  "main": "public/cjs/index.js",
6
6
  "module": "public/esm/index.mjs",
@@ -156,7 +156,7 @@
156
156
  "@types/node": "^22.10.2",
157
157
  "@typescript-eslint/eslint-plugin": "^5.58.0",
158
158
  "@typescript-eslint/parser": "^5.58.0",
159
- "esbuild": "^0.24.0",
159
+ "esbuild": "^0.28.0",
160
160
  "esbuild-plugin-alias": "^0.2.1",
161
161
  "eslint": "^8.56.0",
162
162
  "eslint-config-prettier": "^8.10.0",
@@ -163,7 +163,7 @@ const absolutePath = node_path_1.default.resolve(__dirname, "./");
163
163
  }
164
164
  catch (e) {
165
165
  qcobjects_1.logger.warn("\u{1F926} Something went wrong \u{1F926} when trying to deliver a static path: " + microservice.fileName);
166
- reject(e);
166
+ reject(e instanceof Error ? e : new Error(String(e)));
167
167
  }
168
168
  }
169
169
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"backend-microservice-static.js","sourceRoot":"","sources":["../../../src/backend/backend-microservice-static.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"backend-microservice-static.js","sourceRoot":"","sources":["../../../src/backend/backend-microservice-static.ts"],"names":[],"mappings":"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"}
@@ -182,26 +182,22 @@ class CommandHandler extends qcobjects_1.InheritClass {
182
182
  });
183
183
  }
184
184
  syncGit(versionString, commitMsg, syncNpm = false) {
185
- let _commands_ = [];
185
+ let _commands_ = ["git fetch --tags -f"];
186
+ // Commit VERSION file first so working directory is clean
187
+ // (v_patch/v_minor/v_major write to VERSION before calling syncGit)
188
+ _commands_.push(`git add . && git commit -am "${commitMsg}"`);
186
189
  if (syncNpm) {
187
- _commands_ = _commands_.concat([
188
- "git fetch --tags -f",
189
- `npm version "${versionString}" -m "${commitMsg}"`
190
- ]);
190
+ // npm version requires a clean working directory
191
+ _commands_.push(`npm version "${versionString}" -m "${commitMsg}"`);
191
192
  }
192
193
  _commands_ = _commands_.concat([
193
- `git add . && git commit -am "${commitMsg}"`,
194
194
  "git fetch origin --tags",
195
- "git tag -ln"
195
+ "git tag -ln",
196
196
  ]);
197
197
  if (!syncNpm) {
198
- _commands_ = _commands_.concat([
199
- `git tag -a "v${versionString}" -m "${commitMsg}"`,
200
- ]);
198
+ _commands_.push(`git tag -a "v${versionString}" -m "${commitMsg}"`);
201
199
  }
202
- _commands_ = _commands_.concat([
203
- "git push && git push --tags"
204
- ]);
200
+ _commands_.push("git push && git push --tags");
205
201
  this.switchCommander.shellCommands(_commands_).then(function (response) {
206
202
  qcobjects_1.logger.info("Synced to Git");
207
203
  qcobjects_1.logger.debug(response);