qcobjects-cli 2.5.143-beta → 2.5.145-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.
Files changed (270) hide show
  1. package/.cursor/rules/collaboration-features.mdc +25 -0
  2. package/.cursor/rules/development-guidelines.mdc +37 -0
  3. package/.cursor/rules/project-structure.mdc +36 -0
  4. package/.dockerignore +0 -0
  5. package/.github/FUNDING.yml +0 -0
  6. package/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  7. package/.github/ISSUE_TEMPLATE/custom.md +0 -0
  8. package/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  9. package/.github/ISSUE_TEMPLATE/issue-template.md +0 -0
  10. package/.github/workflows/ci.yml +26 -0
  11. package/.github/workflows/codeql-analysis.yml +0 -0
  12. package/.github/workflows/main-pr-source.yml +26 -0
  13. package/.github/workflows/npmpublish-beta.yml +18 -14
  14. package/.github/workflows/npmpublish-lts.yml +18 -14
  15. package/.github/workflows/npmpublish-main.yml +17 -13
  16. package/.github/workflows/open-pr-to-development.yml +70 -0
  17. package/.opencode/instructions/git-workflow.md +46 -0
  18. package/.pre-commit-config.yaml +9 -0
  19. package/AGENTS.md +59 -0
  20. package/CHANGELOG.md +0 -0
  21. package/README.md +75 -0
  22. package/VERSION +1 -1
  23. package/build-esbuild-esm.js +180 -0
  24. package/build-esbuild.js +182 -208
  25. package/deno.json +0 -0
  26. package/dev-requirements.txt +5 -0
  27. package/eslint.config.mjs +0 -0
  28. package/mod.ts +0 -0
  29. package/package.json +45 -44
  30. package/public/browser/api-client_services.js.map +1 -1
  31. package/public/browser/backend/backend-microservice-static.js +211 -219
  32. package/public/browser/backend/backend-microservice-static.js.map +2 -2
  33. package/public/browser/backend/backend-php.js +227 -231
  34. package/public/browser/backend/backend-php.js.map +3 -3
  35. package/public/browser/cli-commands-build-esbuild.js +326 -0
  36. package/public/browser/cli-commands-build-esbuild.js.map +7 -0
  37. package/public/browser/cli-commands-build-typescript.js +114 -0
  38. package/public/browser/cli-commands-build-typescript.js.map +7 -0
  39. package/public/browser/cli-commands-jira.js.map +1 -1
  40. package/public/browser/cli-commands-version.js.map +1 -1
  41. package/public/browser/cli-commands.js +4 -0
  42. package/public/browser/cli-commands.js.map +2 -2
  43. package/public/browser/cli-main.js.map +1 -1
  44. package/public/browser/client_services.js.map +1 -1
  45. package/public/browser/collab-server.js.map +1 -1
  46. package/public/browser/common-pipelog.js.map +1 -1
  47. package/public/browser/defaultsettings.js +68 -27
  48. package/public/browser/defaultsettings.js.map +3 -3
  49. package/public/browser/enterprise-commands.js.map +1 -1
  50. package/public/browser/main-file.js.map +1 -1
  51. package/public/browser/main-http-gae-server.js.map +1 -1
  52. package/public/browser/main-http-server.js.map +1 -1
  53. package/public/browser/main-http2-server.js.map +1 -1
  54. package/public/browser/qcobjects-cli.js.map +1 -1
  55. package/public/browser/qcobjects-collab.js +16 -24
  56. package/public/browser/qcobjects-collab.js.map +2 -2
  57. package/public/browser/qcobjects-createcert.js +46 -54
  58. package/public/browser/qcobjects-createcert.js.map +2 -2
  59. package/public/browser/qcobjects-gae-http-server.js +16 -24
  60. package/public/browser/qcobjects-gae-http-server.js.map +2 -2
  61. package/public/browser/qcobjects-http-server.js +16 -24
  62. package/public/browser/qcobjects-http-server.js.map +2 -2
  63. package/public/browser/qcobjects-http2-server.js +21 -30
  64. package/public/browser/qcobjects-http2-server.js.map +2 -2
  65. package/public/browser/qcobjects-shell.js.map +1 -1
  66. package/public/browser/templates/apps/spa-local.html +0 -0
  67. package/public/browser/templates/apps/spa-local.js +0 -0
  68. package/public/browser/templates/pwa/sw.js +0 -0
  69. package/public/browser/types/global/index.d.js +0 -9
  70. package/public/browser/types/global/index.d.js.map +3 -3
  71. package/public/cjs/api-client_services.js +74 -0
  72. package/public/cjs/api-client_services.js.map +1 -0
  73. package/public/cjs/backend/backend-microservice-static.js +255 -0
  74. package/public/cjs/backend/backend-microservice-static.js.map +1 -0
  75. package/public/cjs/backend/backend-php.js +317 -0
  76. package/public/cjs/backend/backend-php.js.map +1 -0
  77. package/public/cjs/cli-commands-build-esbuild.js +341 -0
  78. package/public/cjs/cli-commands-build-esbuild.js.map +1 -0
  79. package/public/cjs/cli-commands-build-typescript.js +127 -0
  80. package/public/cjs/cli-commands-build-typescript.js.map +1 -0
  81. package/public/cjs/cli-commands-jira.js +115 -0
  82. package/public/cjs/cli-commands-jira.js.map +1 -0
  83. package/public/cjs/cli-commands-publish-static.js +108 -0
  84. package/public/cjs/cli-commands-publish-static.js.map +1 -0
  85. package/public/cjs/cli-commands-version.js +250 -0
  86. package/public/cjs/cli-commands-version.js.map +1 -0
  87. package/public/cjs/cli-commands.js +73 -0
  88. package/public/cjs/cli-commands.js.map +1 -0
  89. package/public/cjs/cli-main.js +487 -0
  90. package/public/cjs/cli-main.js.map +1 -0
  91. package/public/cjs/client_services.js +80 -0
  92. package/public/cjs/client_services.js.map +1 -0
  93. package/public/cjs/collab-server.js +404 -0
  94. package/public/cjs/collab-server.js.map +1 -0
  95. package/public/cjs/common-pipelog.js +57 -0
  96. package/public/cjs/common-pipelog.js.map +1 -0
  97. package/public/cjs/defaultsettings.js +496 -0
  98. package/public/cjs/defaultsettings.js.map +1 -0
  99. package/public/cjs/enterprise-commands.js +173 -0
  100. package/public/cjs/enterprise-commands.js.map +1 -0
  101. package/public/cjs/index.js +38 -0
  102. package/public/cjs/index.js.map +1 -0
  103. package/public/cjs/main-file.js +161 -0
  104. package/public/cjs/main-file.js.map +1 -0
  105. package/public/cjs/main-http-gae-server.js +498 -0
  106. package/public/cjs/main-http-gae-server.js.map +1 -0
  107. package/public/cjs/main-http-server.js +540 -0
  108. package/public/cjs/main-http-server.js.map +1 -0
  109. package/public/cjs/main-http2-server.js +398 -0
  110. package/public/cjs/main-http2-server.js.map +1 -0
  111. package/public/cjs/qcobjects-cli.js +105 -0
  112. package/public/cjs/qcobjects-cli.js.map +1 -0
  113. package/public/cjs/qcobjects-collab.js +51 -0
  114. package/public/cjs/qcobjects-collab.js.map +1 -0
  115. package/public/cjs/qcobjects-createcert.js +89 -0
  116. package/public/cjs/qcobjects-createcert.js.map +1 -0
  117. package/public/cjs/qcobjects-gae-http-server.js +51 -0
  118. package/public/cjs/qcobjects-gae-http-server.js.map +1 -0
  119. package/public/cjs/qcobjects-http-server.js +51 -0
  120. package/public/cjs/qcobjects-http-server.js.map +1 -0
  121. package/public/cjs/qcobjects-http2-server.js +54 -0
  122. package/public/cjs/qcobjects-http2-server.js.map +1 -0
  123. package/public/cjs/qcobjects-shell.js +145 -0
  124. package/public/cjs/qcobjects-shell.js.map +1 -0
  125. package/public/cjs/templates/apps/spa-local.html +0 -0
  126. package/public/cjs/templates/apps/spa-local.js +0 -0
  127. package/public/cjs/templates/pwa/sw.js +0 -0
  128. package/public/esm/api-client_services.mjs.map +1 -1
  129. package/public/esm/backend/backend-microservice-static.mjs +207 -216
  130. package/public/esm/backend/backend-microservice-static.mjs.map +2 -2
  131. package/public/esm/backend/backend-php.mjs +228 -232
  132. package/public/esm/backend/backend-php.mjs.map +2 -2
  133. package/public/esm/cli-commands-build-esbuild.mjs +295 -0
  134. package/public/esm/cli-commands-build-esbuild.mjs.map +7 -0
  135. package/public/esm/cli-commands-build-typescript.mjs +83 -0
  136. package/public/esm/cli-commands-build-typescript.mjs.map +7 -0
  137. package/public/esm/cli-commands-jira.mjs +1 -1
  138. package/public/esm/cli-commands-jira.mjs.map +1 -1
  139. package/public/esm/cli-commands-version.mjs.map +1 -1
  140. package/public/esm/cli-commands.mjs +7 -3
  141. package/public/esm/cli-commands.mjs.map +2 -2
  142. package/public/esm/cli-main.mjs +6 -6
  143. package/public/esm/cli-main.mjs.map +1 -1
  144. package/public/esm/client_services.mjs.map +1 -1
  145. package/public/esm/collab-server.mjs.map +1 -1
  146. package/public/esm/common-pipelog.mjs.map +1 -1
  147. package/public/esm/defaultsettings.mjs +68 -27
  148. package/public/esm/defaultsettings.mjs.map +3 -3
  149. package/public/esm/enterprise-commands.mjs.map +1 -1
  150. package/public/esm/index.mjs +1 -1
  151. package/public/esm/main-file.mjs.map +1 -1
  152. package/public/esm/main-http-gae-server.mjs +2 -2
  153. package/public/esm/main-http-gae-server.mjs.map +1 -1
  154. package/public/esm/main-http-server.mjs +2 -2
  155. package/public/esm/main-http-server.mjs.map +1 -1
  156. package/public/esm/main-http2-server.mjs +2 -2
  157. package/public/esm/main-http2-server.mjs.map +1 -1
  158. package/public/esm/qcobjects-cli.mjs +2 -2
  159. package/public/esm/qcobjects-cli.mjs.map +1 -1
  160. package/public/esm/qcobjects-collab.mjs +14 -23
  161. package/public/esm/qcobjects-collab.mjs.map +2 -2
  162. package/public/esm/qcobjects-createcert.mjs +43 -52
  163. package/public/esm/qcobjects-createcert.mjs.map +2 -2
  164. package/public/esm/qcobjects-gae-http-server.mjs +14 -23
  165. package/public/esm/qcobjects-gae-http-server.mjs.map +2 -2
  166. package/public/esm/qcobjects-http-server.mjs +14 -23
  167. package/public/esm/qcobjects-http-server.mjs.map +2 -2
  168. package/public/esm/qcobjects-http2-server.mjs +21 -31
  169. package/public/esm/qcobjects-http2-server.mjs.map +2 -2
  170. package/public/esm/qcobjects-shell.mjs +1 -1
  171. package/public/esm/qcobjects-shell.mjs.map +1 -1
  172. package/public/esm/templates/apps/spa-local.html +0 -0
  173. package/public/esm/templates/apps/spa-local.js +0 -0
  174. package/public/esm/templates/pwa/sw.js +0 -0
  175. package/public/esm/types/global/index.d.mjs +0 -9
  176. package/public/esm/types/global/index.d.mjs.map +3 -3
  177. package/public/types/index.d.ts +29 -3
  178. package/spec/support/jasmine.json +0 -0
  179. package/spec/testsSpec.ts +0 -0
  180. package/src/api-client_services.ts +1 -1
  181. package/src/backend/backend-microservice-static.ts +196 -196
  182. package/src/backend/backend-php.ts +240 -245
  183. package/src/cli-commands-build-esbuild.ts +375 -0
  184. package/src/cli-commands-build-typescript.ts +139 -0
  185. package/src/cli-commands-jira.ts +1 -1
  186. package/src/cli-commands-publish-static.ts +0 -0
  187. package/src/cli-commands-version.ts +1 -1
  188. package/src/cli-commands.ts +3 -1
  189. package/src/cli-main.ts +1 -1
  190. package/src/client_services.ts +1 -1
  191. package/src/collab-server.ts +1 -1
  192. package/src/common-pipelog.ts +1 -1
  193. package/src/defaultsettings.ts +65 -19
  194. package/src/enterprise-commands.ts +1 -1
  195. package/src/index.ts +0 -0
  196. package/src/main-file.ts +1 -1
  197. package/src/main-http-gae-server.ts +1 -1
  198. package/src/main-http-server.ts +1 -1
  199. package/src/main-http2-server.ts +1 -1
  200. package/src/qcobjects-cli.ts +1 -1
  201. package/src/qcobjects-collab.ts +1 -1
  202. package/src/qcobjects-createcert.ts +1 -1
  203. package/src/qcobjects-gae-http-server.ts +1 -1
  204. package/src/qcobjects-http-server.ts +1 -1
  205. package/src/qcobjects-http2-server.ts +4 -5
  206. package/src/qcobjects-shell.ts +1 -1
  207. package/src/templates/apps/spa-local.html +0 -0
  208. package/src/templates/apps/spa-local.js +0 -0
  209. package/src/templates/pwa/sw.js +0 -0
  210. package/src/types/global/index.d.ts +0 -0
  211. package/transpile.js +0 -0
  212. package/tsconfig.d.json +0 -0
  213. package/tsconfig.jasmine.json +0 -0
  214. package/tsconfig.json +3 -3
  215. package/.gitlab-ci.yml +0 -16
  216. package/public/cjs/api-client_services.cjs +0 -79
  217. package/public/cjs/api-client_services.cjs.map +0 -7
  218. package/public/cjs/backend/backend-microservice-static.cjs +0 -245
  219. package/public/cjs/backend/backend-microservice-static.cjs.map +0 -7
  220. package/public/cjs/backend/backend-php.cjs +0 -301
  221. package/public/cjs/backend/backend-php.cjs.map +0 -7
  222. package/public/cjs/cli-commands-jira.cjs +0 -112
  223. package/public/cjs/cli-commands-jira.cjs.map +0 -7
  224. package/public/cjs/cli-commands-publish-static.cjs +0 -109
  225. package/public/cjs/cli-commands-publish-static.cjs.map +0 -7
  226. package/public/cjs/cli-commands-version.cjs +0 -252
  227. package/public/cjs/cli-commands-version.cjs.map +0 -7
  228. package/public/cjs/cli-commands.cjs +0 -45
  229. package/public/cjs/cli-commands.cjs.map +0 -7
  230. package/public/cjs/cli-main.cjs +0 -417
  231. package/public/cjs/cli-main.cjs.map +0 -7
  232. package/public/cjs/client_services.cjs +0 -86
  233. package/public/cjs/client_services.cjs.map +0 -7
  234. package/public/cjs/collab-server.cjs +0 -444
  235. package/public/cjs/collab-server.cjs.map +0 -7
  236. package/public/cjs/common-pipelog.cjs +0 -50
  237. package/public/cjs/common-pipelog.cjs.map +0 -7
  238. package/public/cjs/defaultsettings.cjs +0 -432
  239. package/public/cjs/defaultsettings.cjs.map +0 -7
  240. package/public/cjs/enterprise-commands.cjs +0 -175
  241. package/public/cjs/enterprise-commands.cjs.map +0 -7
  242. package/public/cjs/index.cjs +0 -36
  243. package/public/cjs/index.cjs.map +0 -7
  244. package/public/cjs/main-file.cjs +0 -194
  245. package/public/cjs/main-file.cjs.map +0 -7
  246. package/public/cjs/main-http-gae-server.cjs +0 -522
  247. package/public/cjs/main-http-gae-server.cjs.map +0 -7
  248. package/public/cjs/main-http-server.cjs +0 -588
  249. package/public/cjs/main-http-server.cjs.map +0 -7
  250. package/public/cjs/main-http2-server.cjs +0 -431
  251. package/public/cjs/main-http2-server.cjs.map +0 -7
  252. package/public/cjs/qcobjects-cli.cjs +0 -92
  253. package/public/cjs/qcobjects-cli.cjs.map +0 -7
  254. package/public/cjs/qcobjects-collab.cjs +0 -43
  255. package/public/cjs/qcobjects-collab.cjs.map +0 -7
  256. package/public/cjs/qcobjects-createcert.cjs +0 -75
  257. package/public/cjs/qcobjects-createcert.cjs.map +0 -7
  258. package/public/cjs/qcobjects-gae-http-server.cjs +0 -43
  259. package/public/cjs/qcobjects-gae-http-server.cjs.map +0 -7
  260. package/public/cjs/qcobjects-http-server.cjs +0 -43
  261. package/public/cjs/qcobjects-http-server.cjs.map +0 -7
  262. package/public/cjs/qcobjects-http2-server.cjs +0 -49
  263. package/public/cjs/qcobjects-http2-server.cjs.map +0 -7
  264. package/public/cjs/qcobjects-shell.cjs +0 -185
  265. package/public/cjs/qcobjects-shell.cjs.map +0 -7
  266. package/public/cjs/types/global/index.d.cjs +0 -2
  267. package/public/cjs/types/global/index.d.cjs.map +0 -7
  268. package/public/types/index.d.ts.map +0 -1
  269. package/src/index.cts +0 -2
  270. package/src/index.mts +0 -2
@@ -0,0 +1,25 @@
1
+ ---
2
+ description:
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+ # Collaboration Features
7
+
8
+ ## Overview
9
+ The project includes real-time collaboration features implemented through:
10
+ - Core collab functionality: [src/qcobjects-collab.ts](mdc:src/qcobjects-collab.ts)
11
+ - Collab server implementation: [src/collab-server.ts](mdc:src/collab-server.ts)
12
+
13
+ ## Client Services
14
+ Client-side services are managed through:
15
+ - Main services: [src/client_services.ts](mdc:src/client_services.ts)
16
+ - API client services: [src/api-client_services.ts](mdc:src/api-client_services.ts)
17
+
18
+ ## Enterprise Features
19
+ Enterprise-specific commands and features:
20
+ - Enterprise commands: [src/enterprise-commands.ts](mdc:src/enterprise-commands.ts)
21
+ - JIRA integration: [src/cli-commands-jira.ts](mdc:src/cli-commands-jira.ts)
22
+
23
+ ## Security
24
+ - Certificate creation utilities: [src/qcobjects-createcert.ts](mdc:src/qcobjects-createcert.ts)
25
+ - Key generation script: [generatekeys.sh](mdc:generatekeys.sh)
@@ -0,0 +1,37 @@
1
+ ---
2
+ description:
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+ # Development Guidelines
7
+
8
+ ## TypeScript Configuration
9
+ The project uses TypeScript with strict type checking. Configuration is split across multiple files:
10
+ - Main config: [tsconfig.json](mdc:tsconfig.json)
11
+ - Declaration config: [tsconfig.d.json](mdc:tsconfig.d.json)
12
+ - Test config: [tsconfig.jasmine.json](mdc:tsconfig.jasmine.json)
13
+
14
+ ## Code Style
15
+ ESLint is used for code style enforcement:
16
+ - ESLint config: [eslint.config.mjs](mdc:eslint.config.mjs)
17
+
18
+ ## Testing
19
+ - Test specifications are located in the [spec/](mdc:spec) directory
20
+ - Use Jasmine for writing tests
21
+
22
+ ## Build Process
23
+ The build process uses ESBuild for bundling:
24
+ - Build script: [build-esbuild.js](mdc:build-esbuild.js)
25
+ - Build command implementation: [src/cli-commands-build-esbuild.ts](mdc:src/cli-commands-build-esbuild.ts)
26
+
27
+ ## Adding New CLI Commands
28
+ When adding new CLI commands:
29
+ 1. Create a new file in `src/` with pattern `cli-commands-*.ts`
30
+ 2. Register the command in [src/cli-commands.ts](mdc:src/cli-commands.ts)
31
+ 3. Implement the command following existing patterns in other command files
32
+
33
+ ## Server Implementation
34
+ When working with server components:
35
+ - Base HTTP server: [src/qcobjects-http-server.ts](mdc:qcobjects-http-server.ts)
36
+ - Main server implementation: [src/main-http-server.ts](mdc:src/main-http-server.ts)
37
+ - Follow existing patterns for error handling and logging
@@ -0,0 +1,36 @@
1
+ ---
2
+ description:
3
+ globs:
4
+ alwaysApply: false
5
+ ---
6
+ # QCObjects CLI Project Structure
7
+
8
+ This is a TypeScript-based CLI tool for QCObjects framework. Here's the key structure:
9
+
10
+ ## Entry Points
11
+ - Main CLI entry: [src/cli-main.ts](mdc:src/cli-main.ts)
12
+ - Core CLI implementation: [src/qcobjects-cli.ts](mdc:src/qcobjects-cli.ts)
13
+
14
+ ## Core Components
15
+ - Server implementations:
16
+ - HTTP: [src/qcobjects-http-server.ts](mdc:src/qcobjects-http-server.ts)
17
+ - HTTP2: [src/qcobjects-http2-server.ts](mdc:src/qcobjects-http2-server.ts)
18
+ - GAE: [src/qcobjects-gae-http-server.ts](mdc:src/qcobjects-gae-http-server.ts)
19
+
20
+ ## CLI Commands
21
+ The CLI commands are modularized in separate files:
22
+ - Build commands:
23
+ - ESBuild: [src/cli-commands-build-esbuild.ts](mdc:src/cli-commands-build-esbuild.ts)
24
+ - TypeScript: [src/cli-commands-build-typescript.ts](mdc:src/cli-commands-build-typescript.ts)
25
+ - Version management: [src/cli-commands-version.ts](mdc:src/cli-commands-version.ts)
26
+ - Static publishing: [src/cli-commands-publish-static.ts](mdc:src/cli-commands-publish-static.ts)
27
+ - JIRA integration: [src/cli-commands-jira.ts](mdc:src/cli-commands-jira.ts)
28
+
29
+ ## Configuration
30
+ - Default settings: [src/defaultsettings.ts](mdc:src/defaultsettings.ts)
31
+ - Project config: [config.json](mdc:config.json)
32
+ - TypeScript config: [tsconfig.json](mdc:tsconfig.json)
33
+
34
+ ## Build System
35
+ - ESBuild configuration: [build-esbuild.js](mdc:build-esbuild.js)
36
+ - Transpilation setup: [transpile.js](mdc:transpile.js)
package/.dockerignore CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,26 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main, development]
6
+ pull_request:
7
+ branches: [main, development]
8
+
9
+ jobs:
10
+ lint:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: actions/checkout@v4
14
+ # TODO: Add setup step for your language/runtime
15
+ # TODO: Add lint step (e.g., ruff check .)
16
+ - name: Lint (placeholder)
17
+ run: echo "Replace with your linter command"
18
+
19
+ test:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ # TODO: Add setup step for your language/runtime
24
+ # TODO: Add test step (e.g., pytest -v)
25
+ - name: Test (placeholder)
26
+ run: echo "Replace with your test command"
File without changes
@@ -0,0 +1,26 @@
1
+ # Enforce that pull requests into main come only from development.
2
+ # In GitHub: Settings -> Branches -> Branch protection for main ->
3
+ # require status checks and select the job from this workflow.
4
+ name: Main PR source
5
+
6
+ on:
7
+ pull_request:
8
+ branches:
9
+ - main
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ jobs:
15
+ allowed-source-for-main:
16
+ runs-on: ubuntu-latest
17
+ steps:
18
+ - name: Require head branch development for PRs to main
19
+ run: |
20
+ head="${{ github.head_ref }}"
21
+ if [ "$head" = "development" ]; then
22
+ echo "OK: PR head is development."
23
+ exit 0
24
+ fi
25
+ echo "::error::Pull requests to main must use development as the head branch (got: $head)."
26
+ exit 1
@@ -5,8 +5,6 @@ name: Node.js Publish Beta version
5
5
 
6
6
  on:
7
7
  push:
8
- branches:
9
- - 'v*.*-beta'
10
8
  tags:
11
9
  - 'v*.*.*-beta'
12
10
 
@@ -14,26 +12,32 @@ jobs:
14
12
  build:
15
13
  runs-on: ubuntu-latest
16
14
  steps:
17
- - uses: actions/checkout@v3.3.0
18
- - uses: actions/setup-node@v3.6.0
15
+ - uses: actions/checkout@v4
16
+ with:
17
+ token: ${{ secrets.GITHUB_TOKEN }}
18
+ ref: ${{ github.ref }}
19
+ - uses: actions/setup-node@v4
19
20
  with:
20
21
  node-version: 22
21
- - run: npm i --legacy-peer-deps && npm ci --legacy-peer-deps --install-strategy=nested
22
+ - run: npm i --legacy-peer-deps
22
23
  - run: npm test
23
24
 
24
25
  publish-npm:
25
26
  needs: build
26
27
  runs-on: ubuntu-latest
28
+ permissions:
29
+ contents: read
30
+ id-token: write
27
31
  steps:
28
- - uses: actions/checkout@v3.3.0
29
- - uses: actions/setup-node@v3.6.0
32
+ - uses: actions/checkout@v4
33
+ with:
34
+ token: ${{ secrets.GITHUB_TOKEN }}
35
+ ref: ${{ github.ref }}
36
+ - uses: actions/setup-node@v4
30
37
  with:
31
38
  node-version: 22
32
- registry-url: https://registry.npmjs.org/
33
- - name: Set up NPM authentication
34
- run: echo "registry=https://registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" >> ~/.npmrc
35
- - run: npm i --legacy-peer-deps && npm ci --legacy-peer-deps --install-strategy=nested
39
+ - name: Upgrade npm for OIDC support (requires >=11.5.1)
40
+ run: npm install -g npm@latest
41
+ - run: npm i --legacy-peer-deps
36
42
  - run: npm test
37
- - run: npm publish --tag ${GITHUB_REF##*/}
38
- env:
39
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
43
+ - run: npm publish --tag beta
@@ -5,8 +5,6 @@ name: Node.js Publish LTS version
5
5
 
6
6
  on:
7
7
  push:
8
- branches:
9
- - 'v*.*-lts'
10
8
  tags:
11
9
  - 'v*.*.*-lts'
12
10
 
@@ -14,25 +12,31 @@ jobs:
14
12
  build:
15
13
  runs-on: ubuntu-latest
16
14
  steps:
17
- - uses: actions/checkout@v3.3.0
18
- - uses: actions/setup-node@v3.6.0
15
+ - uses: actions/checkout@v4
16
+ with:
17
+ token: ${{ secrets.GITHUB_TOKEN }}
18
+ ref: ${{ github.ref }}
19
+ - uses: actions/setup-node@v4
19
20
  with:
20
21
  node-version: 22
21
- - run: npm ci --legacy-peer-deps
22
+ - run: npm i --legacy-peer-deps
22
23
  - run: npm test
23
24
 
24
25
  publish-npm:
25
26
  needs: build
26
27
  runs-on: ubuntu-latest
28
+ permissions:
29
+ contents: read
30
+ id-token: write
27
31
  steps:
28
- - uses: actions/checkout@v3.3.0
29
- - uses: actions/setup-node@v3.6.0
32
+ - uses: actions/checkout@v4
33
+ with:
34
+ token: ${{ secrets.GITHUB_TOKEN }}
35
+ ref: ${{ github.ref }}
36
+ - uses: actions/setup-node@v4
30
37
  with:
31
38
  node-version: 22
32
- registry-url: https://registry.npmjs.org/
33
- - name: Set up NPM authentication
34
- run: echo "registry=https://registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" >> ~/.npmrc
35
- - run: npm ci --legacy-peer-deps
36
- - run: npm publish --tag ${GITHUB_REF##*/}
37
- env:
38
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
39
+ - name: Upgrade npm for OIDC support (requires >=11.5.1)
40
+ run: npm install -g npm@latest
41
+ - run: npm i --legacy-peer-deps
42
+ - run: npm publish --tag lts
@@ -5,8 +5,6 @@ name: Node.js Publish Package
5
5
 
6
6
  on:
7
7
  push:
8
- branches:
9
- - main
10
8
  tags:
11
9
  - 'v*.*.*'
12
10
 
@@ -14,25 +12,31 @@ jobs:
14
12
  build:
15
13
  runs-on: ubuntu-latest
16
14
  steps:
17
- - uses: actions/checkout@v3.3.0
18
- - uses: actions/setup-node@v3.6.0
15
+ - uses: actions/checkout@v4
16
+ with:
17
+ token: ${{ secrets.GITHUB_TOKEN }}
18
+ ref: ${{ github.ref }}
19
+ - uses: actions/setup-node@v4
19
20
  with:
20
21
  node-version: 22
21
- - run: npm ci --legacy-peer-deps
22
+ - run: npm i --legacy-peer-deps
22
23
  - run: npm test
23
24
 
24
25
  publish-npm:
25
26
  needs: build
26
27
  runs-on: ubuntu-latest
28
+ permissions:
29
+ contents: read
30
+ id-token: write
27
31
  steps:
28
- - uses: actions/checkout@v3.3.0
29
- - uses: actions/setup-node@v3.6.0
32
+ - uses: actions/checkout@v4
33
+ with:
34
+ token: ${{ secrets.GITHUB_TOKEN }}
35
+ ref: ${{ github.ref }}
36
+ - uses: actions/setup-node@v4
30
37
  with:
31
38
  node-version: 22
32
- registry-url: https://registry.npmjs.org/
33
- - name: Set up NPM authentication
34
- run: echo "registry=https://registry.npmjs.org/:_authToken=${{secrets.NPM_TOKEN}}" >> ~/.npmrc
35
- - run: npm ci --legacy-peer-deps
39
+ - name: Upgrade npm for OIDC support (requires >=11.5.1)
40
+ run: npm install -g npm@latest
41
+ - run: npm i --legacy-peer-deps
36
42
  - run: npm publish
37
- env:
38
- NODE_AUTH_TOKEN: ${{secrets.NPM_TOKEN}}
@@ -0,0 +1,70 @@
1
+ # When you push to feature/*, fix/*, or bugfix/*, open a PR into development if none exists yet.
2
+ # Runs entirely on GitHub Actions (no local GitHub CLI required).
3
+ #
4
+ # REQUIRED — or POST /pulls returns 403 "not permitted to create or approve pull requests":
5
+ # Repo: Settings -> Actions -> General -> Workflow permissions
6
+ # - Select "Read and write permissions"
7
+ # - Enable "Allow GitHub Actions to create and approve pull requests"
8
+ # Orgs: enable the same policy at the organization level first, then the repo checkbox unlocks.
9
+ name: Open PR to development
10
+
11
+ on:
12
+ push:
13
+ branches:
14
+ - "feature/**"
15
+ - "fix/**"
16
+ - "bugfix/**"
17
+
18
+ permissions:
19
+ contents: read
20
+ pull-requests: write
21
+
22
+ jobs:
23
+ open-pr:
24
+ runs-on: ubuntu-latest
25
+ if: ${{ !github.event.repository.fork }}
26
+ steps:
27
+ - name: Create pull request if missing
28
+ uses: actions/github-script@v8
29
+ with:
30
+ script: |
31
+ const owner = context.repo.owner;
32
+ const repo = context.repo.repo;
33
+ const branch = context.ref.replace("refs/heads/", "");
34
+ const head = `${owner}:${branch}`;
35
+
36
+ const { data: openPrs } = await github.rest.pulls.list({
37
+ owner,
38
+ repo,
39
+ head,
40
+ base: "development",
41
+ state: "open",
42
+ per_page: 100,
43
+ });
44
+ if (openPrs.length > 0) {
45
+ console.log(`Open PR already exists: #${openPrs[0].number}`);
46
+ return;
47
+ }
48
+
49
+ const { data: commit } = await github.rest.repos.getCommit({
50
+ owner,
51
+ repo,
52
+ ref: context.sha,
53
+ });
54
+ const raw = commit.commit.message || "";
55
+ const title = (raw.split("\n")[0] || branch).trim().slice(0, 300) || branch;
56
+ const body = [
57
+ `Opened automatically when \`${branch}\` was pushed.`,
58
+ "",
59
+ "_Edit the title or description if needed._",
60
+ ].join("\n");
61
+
62
+ const { data: created } = await github.rest.pulls.create({
63
+ owner,
64
+ repo,
65
+ title,
66
+ head: branch,
67
+ base: "development",
68
+ body,
69
+ });
70
+ console.log(`Created PR #${created.number}: ${created.html_url}`);
@@ -0,0 +1,46 @@
1
+ ---
2
+ description: Git workflow — topic branches; no rebase; SemVer tags; how to sync
3
+ alwaysApply: true
4
+ ---
5
+
6
+ # Git workflow
7
+
8
+ ## Branching and PRs (default)
9
+
10
+ - **Do not** commit new work **directly** on **`main`** or **`development`**. Use a **topic branch** from **`development`**:
11
+ `git fetch origin` then `git checkout -b feature/<topic> development` (or `fix/<topic>` / `bugfix/<topic>`).
12
+ - **Push** the topic branch and open a PR into **`development`** via the GitHub UI or `gh pr create`.
13
+ - Merge to **`development`** via **PR** after review.
14
+ - Promotion **`development` → `main`** uses a release PR.
15
+
16
+ **Exception:** If the user **explicitly** asks to commit or push **directly** to **`development`** or **`main`** (e.g. maintainer emergency), follow their instruction and remind them it bypasses the usual topic-branch flow.
17
+
18
+ ## Never use `git rebase`
19
+
20
+ Prefer plain **`git pull`** (merge) when updating from remote, unless the user specifies otherwise. Do not use **`git pull --rebase`** or **`git rebase`** for this repo's workflow.
21
+
22
+ ## When the user says "sync git"
23
+
24
+ Meaning: **save local work and push the current branch** to the remote — **not** "skip branching."
25
+
26
+ 1. If the current branch is **`main`** or **`development`** and there are **new** changes, **prefer** moving work to a topic branch first (unless the user explicitly wants a direct push — see Exception above):
27
+ e.g. `git fetch origin && git checkout -b feature/<short-description> development`, then bring commits across if needed.
28
+ 2. Stage, commit with a **clear message**, push:
29
+ ```bash
30
+ git add .
31
+ git commit -m "<concise message describing the changes>"
32
+ git push -u origin HEAD
33
+ ```
34
+ Use `-u origin HEAD` when the branch has no upstream yet; otherwise `git push`. If there is **nothing to commit**, run **`git push`** if there are unpushed commits.
35
+ 3. **Untracked files:** Use **`git add .**` (or add paths explicitly); do not rely on **`git commit -a`** alone if new files exist.
36
+
37
+ Do not substitute stash/rebase flows for "sync git" unless the user asks for a pull-only or merge-from-remote step.
38
+
39
+ ## Opening a PR
40
+
41
+ Use the GitHub UI, **`gh pr create`**, or a configured auto-PR workflow (see `.github/workflows/`). Provide a clear title and description of the changes.
42
+
43
+ ## Releases and tags
44
+
45
+ - **Feature releases:** Open a PR from **`development`** to **`main`**, merge, then tag on **`main`** with an **annotated** SemVer tag: `git tag -a vMAJOR.MINOR.PATCH -m "<description>"`. Push the tag: `git push origin vMAJOR.MINOR.PATCH`.
46
+ - **Integration tags:** After a feature/fix/bugfix PR merges into **`development`**, optionally tag with `vMAJOR.MINOR.PATCH-dev.N` on **`development`**.
@@ -0,0 +1,9 @@
1
+ repos:
2
+ - repo: https://github.com/pre-commit/pre-commit-hooks
3
+ rev: v5.0.0
4
+ hooks:
5
+ - id: trailing-whitespace
6
+ - id: end-of-file-fixer
7
+ - id: check-yaml
8
+ - id: check-added-large-files
9
+ args: [--maxkb=500]
package/AGENTS.md ADDED
@@ -0,0 +1,59 @@
1
+ # qcobjects-cli
2
+
3
+ TypeScript CLI tool and HTTP/HTTP2 server for the [QCObjects](https://qcobjects.dev) framework.
4
+ Node >=22, npm >=10.
5
+
6
+ ## Git workflow
7
+
8
+ See `.opencode/instructions/git-workflow.md` — topic branches from `development`, no rebase, SemVer tags.
9
+
10
+ ## Commands
11
+
12
+ | Action | Command |
13
+ |--------|---------|
14
+ | Install | `npm install` |
15
+ | Lint | `npm run lint` (`eslint src/**/*.ts --fix`) |
16
+ | Test | `npm test` (lint → jasmine) |
17
+ | Run single test | `npx ts-node --project ./tsconfig.jasmine.json ./node_modules/jasmine/bin/jasmine` |
18
+ | Build (types → ts → esm) | `npm run build` |
19
+ | Build TS only | `npm run build:ts` — **runs `npm test` first**, then `node ./transpile.js tsconfig.json` |
20
+ | 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`) |
23
+
24
+ ## Architecture
25
+
26
+ - **CLI framework:** Commander (`src/cli-main.ts` — `SwitchCommander` class)
27
+ - **Commands** in `src/cli-commands-*.ts`, registered via `src/cli-commands.ts`
28
+ - **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
30
+ - **Output:** `public/cjs/`, `public/esm/`, `public/browser/`, `public/types/`
31
+
32
+ ## Testing quirks
33
+
34
+ - **Framework:** Jasmine v3.7 (`spec/support/jasmine.json`)
35
+ - Single spec: `spec/testsSpec.ts` — verifies `qcobjects` version matches between `peerDependencies` and `devDependencies`
36
+ - Mock path in `tsconfig.jasmine.json`: `qcobjects-sdk` → `spec/mocks/qcobjects-sdk.mock.ts`
37
+ - Config: `stopSpecOnExpectationFailure: true`, `failSpecWithNoExpectations: true`, `random: false`
38
+
39
+ ## QCObjects patterns used in source
40
+
41
+ - `InheritClass`, `Package()`, `Export()`, `CONFIG`, `logger`, `Service`, `Component`
42
+ - Plugin autodiscovery: scans `dependencies`/`devDependencies` for packages with `qcobjects-lib`, `qcobjects-handler`, `qcobjects-command` keywords
43
+
44
+ ## Config & env
45
+
46
+ - `config.json` at root — runtime config
47
+ - `src/defaultsettings.ts` — `$ENV(VAR)` template syntax resolved at runtime
48
+ - `process.env.PORT` overrides HTTP listen port
49
+ - Dev mode: `config.json` `{"devmode":"debug"}`
50
+
51
+ ## Pre-commit
52
+
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.
55
+
56
+ ## Build artifacts
57
+
58
+ - `build/templates/` — compiled template copies
59
+ - Lockfile: `package-lock.json` only (no yarn/pnpm)
package/CHANGELOG.md CHANGED
File without changes
package/README.md CHANGED
@@ -35,6 +35,81 @@ To start|stop|prestart the service:
35
35
  > service qcobjects restart
36
36
  ```
37
37
 
38
+ ## Synced Semantic Versioning
39
+
40
+ Version management is handled through the `VERSION` file at the project root. Commands read from and write to this file, and can optionally sync changes to `package.json` and git.
41
+
42
+ ### `v-patch [filename]`
43
+
44
+ Bumps the patch number (e.g., `1.2.3` → `1.2.4`). Default filename is `VERSION`.
45
+
46
+ | Option | Alias | Description |
47
+ |--------|-------|-------------|
48
+ | `--sync-git` | `--git` | Commit changes, tag, and push to git |
49
+ | `--sync-npm` | `--npm` | Also update `package.json` via `npm version` (implies `--git`) |
50
+ | `--commit-msg [message]` | `-m` | Custom commit message |
51
+
52
+ ```shell
53
+ # Just bump the VERSION file
54
+ qcobjects v-patch
55
+
56
+ # Bump, commit, tag, and push
57
+ qcobjects v-patch --git -m "fix: resolve timeout issue"
58
+
59
+ # Bump VERSION + package.json, commit, tag, push
60
+ qcobjects v-patch --git --npm
61
+ ```
62
+
63
+ ### `v-minor [filename]`
64
+
65
+ Bumps the minor number (e.g., `1.2.3` → `1.3.0`). Supports the same options as `v-patch`.
66
+
67
+ ```shell
68
+ qcobjects v-minor --git -m "feat: add collaboration endpoints"
69
+ ```
70
+
71
+ ### `v-major [filename]`
72
+
73
+ Bumps the major number (e.g., `1.2.3` → `2.0.0`). Supports the same options as `v-patch`.
74
+
75
+ ```shell
76
+ qcobjects v-major --git --npm -m "breaking: migrate to new API"
77
+ ```
78
+
79
+ ### `v-sync [filename]`
80
+
81
+ Reads the current version from `git describe` (latest tag), writes it to the `VERSION` file, updates `package.json` with `npm version`, commits, tags, and pushes.
82
+
83
+ | Option | Description |
84
+ |--------|-------------|
85
+ | `-m, --commit-msg [message]` | Commit message (default: `Synced Version v<version>`) |
86
+
87
+ ```shell
88
+ qcobjects v-sync -m "sync after release merge"
89
+ ```
90
+
91
+ ### `v-changelog`
92
+
93
+ Generates a changelog from annotated git tags, grouped by minor version, printed to stdout.
94
+
95
+ ```shell
96
+ qcobjects v-changelog > CHANGELOG.md
97
+ ```
98
+
99
+ ### Typical workflow
100
+
101
+ ```shell
102
+ # 1. Bump the patch version and push everything
103
+ qcobjects v-patch --git --npm -m "your message"
104
+
105
+ # 2. CI publishes the new version to npm
106
+
107
+ # 3. Generate changelog for release notes
108
+ qcobjects v-changelog > CHANGELOG.md
109
+ ```
110
+
111
+ ---
112
+
38
113
  ```shell
39
114
  .d88888b. .d8888b. .d88888b. 888 d8b 888
40
115
  d88P" "Y88bd88P Y88bd88P" "Y88b888 Y8P 888
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.5.143-beta
1
+ 2.5.145-beta