@cyberismo/backend 0.0.27 → 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.
Files changed (77) hide show
  1. package/dist/app.d.ts +1 -1
  2. package/dist/app.js +10 -4
  3. package/dist/app.js.map +1 -1
  4. package/dist/auth/index.d.ts +1 -1
  5. package/dist/auth/index.js +1 -1
  6. package/dist/auth/index.js.map +1 -1
  7. package/dist/auth/mock.d.ts +8 -1
  8. package/dist/auth/mock.js +50 -2
  9. package/dist/auth/mock.js.map +1 -1
  10. package/dist/domain/project/schema.d.ts +2 -0
  11. package/dist/domain/project/schema.js +2 -0
  12. package/dist/domain/project/schema.js.map +1 -1
  13. package/dist/domain/project/service.d.ts +4 -0
  14. package/dist/domain/project/service.js +9 -1
  15. package/dist/domain/project/service.js.map +1 -1
  16. package/dist/domain/projects/index.d.ts +1 -1
  17. package/dist/domain/projects/index.js +66 -3
  18. package/dist/domain/projects/index.js.map +1 -1
  19. package/dist/domain/projects/schema.d.ts +22 -0
  20. package/dist/domain/projects/schema.js +40 -0
  21. package/dist/domain/projects/schema.js.map +1 -0
  22. package/dist/domain/projects/service.d.ts +37 -0
  23. package/dist/domain/projects/service.js +53 -0
  24. package/dist/domain/projects/service.js.map +1 -0
  25. package/dist/index.d.ts +1 -1
  26. package/dist/index.js +2 -2
  27. package/dist/index.js.map +1 -1
  28. package/dist/main.js +0 -4
  29. package/dist/main.js.map +1 -1
  30. package/dist/project-registry.d.ts +2 -1
  31. package/dist/project-registry.js +4 -2
  32. package/dist/project-registry.js.map +1 -1
  33. package/dist/public/THIRD-PARTY.txt +171 -205
  34. package/dist/public/assets/{architectureDiagram-3BPJPVTR--CSL9yP4.js → architectureDiagram-3BPJPVTR-BfDrO6_w.js} +1 -1
  35. package/dist/public/assets/{chunk-727SXJPM-DwCEXlGv.js → chunk-727SXJPM-xJrElvZJ.js} +1 -1
  36. package/dist/public/assets/{chunk-AQP2D5EJ-4K2xdOIK.js → chunk-AQP2D5EJ-DlQQ44Ki.js} +1 -1
  37. package/dist/public/assets/{classDiagram-v2-Q7XG4LA2-BJy5zoel.js → classDiagram-4FO5ZUOK-Dw2NhQGr.js} +1 -1
  38. package/dist/public/assets/{classDiagram-4FO5ZUOK-BJy5zoel.js → classDiagram-v2-Q7XG4LA2-Dw2NhQGr.js} +1 -1
  39. package/dist/public/assets/{dagre-BM42HDAG-BthzRaVA.js → dagre-BM42HDAG-BWzuCoWz.js} +1 -1
  40. package/dist/public/assets/{diagram-2AECGRRQ-CQJQx4k6.js → diagram-2AECGRRQ-BO4dhTfd.js} +1 -1
  41. package/dist/public/assets/{diagram-5GNKFQAL-DZn5aW7S.js → diagram-5GNKFQAL-v25ju5Ui.js} +1 -1
  42. package/dist/public/assets/{diagram-LMA3HP47-DgWJfUcV.js → diagram-LMA3HP47-D7SSAeUZ.js} +1 -1
  43. package/dist/public/assets/{diagram-OG6HWLK6-44JZNjGl.js → diagram-OG6HWLK6-D2CeL9Qd.js} +1 -1
  44. package/dist/public/assets/{erDiagram-TEJ5UH35-BVkYJRJ3.js → erDiagram-TEJ5UH35-CsShdaJw.js} +1 -1
  45. package/dist/public/assets/{flowDiagram-I6XJVG4X-DanY8_jA.js → flowDiagram-I6XJVG4X-BSiUVjsY.js} +1 -1
  46. package/dist/public/assets/{ganttDiagram-6RSMTGT7-DD1Pw4Yz.js → ganttDiagram-6RSMTGT7-BumhHDWI.js} +1 -1
  47. package/dist/public/assets/index-WMbgvnqh.js +487 -0
  48. package/dist/public/assets/{infoDiagram-5YYISTIA-t6t0skjQ.js → infoDiagram-5YYISTIA-CEASd4Im.js} +1 -1
  49. package/dist/public/assets/{ishikawaDiagram-YF4QCWOH-D5HGS4h9.js → ishikawaDiagram-YF4QCWOH-BMZVbhq1.js} +1 -1
  50. package/dist/public/assets/{journeyDiagram-JHISSGLW-DZle34fL.js → journeyDiagram-JHISSGLW-B3iswT_x.js} +1 -1
  51. package/dist/public/assets/{kanban-definition-UN3LZRKU-DvUHZ0z2.js → kanban-definition-UN3LZRKU-xX5kT_P-.js} +1 -1
  52. package/dist/public/assets/{mindmap-definition-RKZ34NQL-Lmrs6IX6.js → mindmap-definition-RKZ34NQL-C77038Zx.js} +1 -1
  53. package/dist/public/assets/{pieDiagram-4H26LBE5-BwD91PEd.js → pieDiagram-4H26LBE5-C1GhVY4H.js} +1 -1
  54. package/dist/public/assets/{quadrantDiagram-W4KKPZXB-DXCkBrKi.js → quadrantDiagram-W4KKPZXB-3v--YO6t.js} +1 -1
  55. package/dist/public/assets/{requirementDiagram-4Y6WPE33-jDFKiwdn.js → requirementDiagram-4Y6WPE33-Bcj6wwJW.js} +1 -1
  56. package/dist/public/assets/{sankeyDiagram-5OEKKPKP-D9xT2nUr.js → sankeyDiagram-5OEKKPKP-BHDSc0nY.js} +1 -1
  57. package/dist/public/assets/{sequenceDiagram-3UESZ5HK-Bmko-3_U.js → sequenceDiagram-3UESZ5HK-B7Huaheu.js} +1 -1
  58. package/dist/public/assets/{stateDiagram-AJRCARHV-DjPm6sNG.js → stateDiagram-AJRCARHV-C1l1yZDH.js} +1 -1
  59. package/dist/public/assets/{stateDiagram-v2-BHNVJYJU-B-cimf9q.js → stateDiagram-v2-BHNVJYJU-DQC9x5mr.js} +1 -1
  60. package/dist/public/assets/{timeline-definition-PNZ67QCA-nKPLYYzI.js → timeline-definition-PNZ67QCA-CwBz01Qw.js} +1 -1
  61. package/dist/public/assets/{vennDiagram-CIIHVFJN-DHORAsW0.js → vennDiagram-CIIHVFJN-DpiZAjsM.js} +1 -1
  62. package/dist/public/assets/{wardleyDiagram-YWT4CUSO-DwqR74vk.js → wardleyDiagram-YWT4CUSO-COVxB67h.js} +1 -1
  63. package/dist/public/assets/{xychartDiagram-2RQKCTM6-CUU1IRcn.js → xychartDiagram-2RQKCTM6-C7lnc5PN.js} +1 -1
  64. package/dist/public/index.html +1 -1
  65. package/package.json +4 -3
  66. package/src/app.ts +11 -4
  67. package/src/auth/index.ts +1 -1
  68. package/src/auth/mock.ts +53 -2
  69. package/src/domain/project/schema.ts +2 -0
  70. package/src/domain/project/service.ts +13 -1
  71. package/src/domain/projects/index.ts +115 -3
  72. package/src/domain/projects/schema.ts +42 -0
  73. package/src/domain/projects/service.ts +98 -0
  74. package/src/index.ts +8 -2
  75. package/src/main.ts +0 -6
  76. package/src/project-registry.ts +7 -2
  77. package/dist/public/assets/index-CKFcPbR1.js +0 -729
@@ -0,0 +1,98 @@
1
+ /**
2
+ Cyberismo
3
+ Copyright © Cyberismo Ltd and contributors 2026
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License version 3 as published by
6
+ the Free Software Foundation.
7
+ This program is distributed in the hope that it will be useful, but WITHOUT
8
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
9
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
10
+ details. You should have received a copy of the GNU Affero General Public
11
+ License along with this program. If not, see <https://www.gnu.org/licenses/>.
12
+ */
13
+
14
+ import { join } from 'node:path';
15
+ import {
16
+ CommandManager,
17
+ Create,
18
+ scanForProjects,
19
+ } from '@cyberismo/data-handler';
20
+ import type { ProjectRegistry } from '../../project-registry.js';
21
+
22
+ export interface CreateProjectParams {
23
+ name: string;
24
+ prefix: string;
25
+ category?: string;
26
+ description?: string;
27
+ }
28
+
29
+ export interface CreateProjectResult {
30
+ prefix: string;
31
+ name: string;
32
+ category?: string;
33
+ description?: string;
34
+ }
35
+
36
+ export async function createProject(
37
+ registry: ProjectRegistry,
38
+ rootPath: string,
39
+ params: CreateProjectParams,
40
+ user?: { name: string; email: string } | null,
41
+ ): Promise<CreateProjectResult> {
42
+ const { name, prefix, category, description } = params;
43
+ const projectPath = join(rootPath, prefix);
44
+
45
+ const commands = await CommandManager.createProjectWithDefaults(
46
+ projectPath,
47
+ params,
48
+ {
49
+ ...registry.options,
50
+ gitUser: user ?? undefined,
51
+ },
52
+ );
53
+
54
+ registry.add(prefix, commands);
55
+
56
+ return {
57
+ prefix,
58
+ name,
59
+ category: category || undefined,
60
+ description: description || undefined,
61
+ };
62
+ }
63
+
64
+ export interface CloneProjectResult {
65
+ projects: { prefix: string; name: string }[];
66
+ skippedDuplicates?: string[];
67
+ }
68
+
69
+ export async function cloneProject(
70
+ registry: ProjectRegistry,
71
+ rootPath: string,
72
+ url: string,
73
+ ): Promise<CloneProjectResult> {
74
+ const clonedPath = await Create.cloneProject(url, rootPath);
75
+ const scanned = await scanForProjects(clonedPath);
76
+
77
+ const registered: { prefix: string; name: string }[] = [];
78
+ const skippedDuplicates: string[] = [];
79
+
80
+ for (const project of scanned) {
81
+ if (registry.has(project.prefix)) {
82
+ skippedDuplicates.push(project.prefix);
83
+ continue;
84
+ }
85
+ const commands = new CommandManager(project.path, registry.options);
86
+ await commands.initialize();
87
+ registry.add(project.prefix, commands);
88
+ registered.push({
89
+ prefix: project.prefix,
90
+ name: project.name,
91
+ });
92
+ }
93
+
94
+ return {
95
+ projects: registered,
96
+ ...(skippedDuplicates.length > 0 && { skippedDuplicates }),
97
+ };
98
+ }
package/src/index.ts CHANGED
@@ -64,7 +64,7 @@ export async function startServer(
64
64
  authProvider: AuthProvider,
65
65
  registry: ProjectRegistry,
66
66
  findPort: boolean = true,
67
- rootPath?: string,
67
+ multiProjectRoot?: string,
68
68
  ) {
69
69
  const useOsAssigned = process.env.CYBERISMO_E2E_OSPORT === 'true';
70
70
  let port = useOsAssigned
@@ -73,7 +73,13 @@ export async function startServer(
73
73
  if (findPort && !useOsAssigned) {
74
74
  port = await findFreePort(port, DEFAULT_MAX_PORT);
75
75
  }
76
- const app = createApp(authProvider, registry, undefined, false, rootPath);
76
+ const app = createApp(
77
+ authProvider,
78
+ registry,
79
+ undefined,
80
+ false,
81
+ multiProjectRoot,
82
+ );
77
83
  startApp(app, port);
78
84
  }
79
85
 
package/src/main.ts CHANGED
@@ -91,12 +91,6 @@ if (args.export) {
91
91
  : undefined,
92
92
  });
93
93
  } else {
94
- if (projects.length === 0) {
95
- console.error(
96
- `No projects found in "${projectPath}". Cannot start the server without at least one project.`,
97
- );
98
- process.exit(1);
99
- }
100
94
  const autocommit = process.env.CYBERISMO_AUTOCOMMIT === 'true';
101
95
  const registry = await ProjectRegistry.fromScannedProjects(projects, {
102
96
  autocommit,
@@ -34,8 +34,13 @@ export interface ScannedProject {
34
34
 
35
35
  export class ProjectRegistry implements ProjectProvider {
36
36
  private projects: Map<string, CommandManager> = new Map();
37
+ readonly options: ConstructorParameters<typeof CommandManager>[1];
37
38
 
38
- constructor(entries: ProjectRegistryEntry[] = []) {
39
+ constructor(
40
+ entries: ProjectRegistryEntry[] = [],
41
+ options?: ConstructorParameters<typeof CommandManager>[1],
42
+ ) {
43
+ this.options = options;
39
44
  for (const entry of entries) {
40
45
  this.add(entry.prefix, entry.commands);
41
46
  }
@@ -120,6 +125,6 @@ export class ProjectRegistry implements ProjectProvider {
120
125
  await commands.initialize();
121
126
  entries.push({ prefix: project.prefix, commands });
122
127
  }
123
- return new ProjectRegistry(entries);
128
+ return new ProjectRegistry(entries, options);
124
129
  }
125
130
  }