@origostudio/origo-design 0.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 (209) hide show
  1. package/.editorconfig +13 -0
  2. package/.gitattributes +22 -0
  3. package/.perf-baseline.json +12 -0
  4. package/.prettierignore +13 -0
  5. package/.prettierrc +10 -0
  6. package/.vscode/extensions.json +3 -0
  7. package/BRANCH-PROTECTION.md +25 -0
  8. package/CHANGELOG.md +292 -0
  9. package/LICENSE +21 -0
  10. package/README.md +11 -0
  11. package/commitlint.config.js +6 -0
  12. package/dist/packages/cli/CHANGELOG.md +92 -0
  13. package/dist/packages/cli/README.md +11 -0
  14. package/dist/packages/cli/package.json +16 -0
  15. package/dist/packages/cli/package.json.bak +16 -0
  16. package/dist/packages/cli/src/commands/generate/entity.d.ts +2 -0
  17. package/dist/packages/cli/src/commands/generate/entity.js +24 -0
  18. package/dist/packages/cli/src/commands/generate/entity.js.map +1 -0
  19. package/dist/packages/cli/src/commands/generate/index.d.ts +2 -0
  20. package/dist/packages/cli/src/commands/generate/index.js +30 -0
  21. package/dist/packages/cli/src/commands/generate/index.js.map +1 -0
  22. package/dist/packages/cli/src/commands/init.d.ts +5 -0
  23. package/dist/packages/cli/src/commands/init.js +27 -0
  24. package/dist/packages/cli/src/commands/init.js.map +1 -0
  25. package/dist/packages/cli/src/commands/new.d.ts +2 -0
  26. package/dist/packages/cli/src/commands/new.js +24 -0
  27. package/dist/packages/cli/src/commands/new.js.map +1 -0
  28. package/dist/packages/cli/src/commands/validate.d.ts +2 -0
  29. package/dist/packages/cli/src/commands/validate.js +50 -0
  30. package/dist/packages/cli/src/commands/validate.js.map +1 -0
  31. package/dist/packages/cli/src/index.d.ts +11 -0
  32. package/dist/packages/cli/src/index.js +15 -0
  33. package/dist/packages/cli/src/index.js.map +1 -0
  34. package/dist/packages/cli/src/lib/cli.d.ts +1 -0
  35. package/dist/packages/cli/src/lib/cli.js +7 -0
  36. package/dist/packages/cli/src/lib/cli.js.map +1 -0
  37. package/dist/packages/cli/src/lib/generator.d.ts +16 -0
  38. package/dist/packages/cli/src/lib/generator.js +165 -0
  39. package/dist/packages/cli/src/lib/generator.js.map +1 -0
  40. package/dist/packages/cli/src/lib/scaffolding.d.ts +5 -0
  41. package/dist/packages/cli/src/lib/scaffolding.js +87 -0
  42. package/dist/packages/cli/src/lib/scaffolding.js.map +1 -0
  43. package/dist/packages/cli/src/lib/validation.d.ts +4 -0
  44. package/dist/packages/cli/src/lib/validation.js +191 -0
  45. package/dist/packages/cli/src/lib/validation.js.map +1 -0
  46. package/dist/packages/cli/src/main.d.ts +4 -0
  47. package/dist/packages/cli/src/main.js +38 -0
  48. package/dist/packages/cli/src/main.js.map +1 -0
  49. package/dist/packages/cli/src/templates/entity.json +6 -0
  50. package/dist/packages/cli/src/templates/extension.json +8 -0
  51. package/dist/packages/cli/src/templates/index.d.ts +29 -0
  52. package/dist/packages/cli/src/templates/index.js +61 -0
  53. package/dist/packages/cli/src/templates/index.js.map +1 -0
  54. package/dist/packages/cli/src/templates/origo.json +16 -0
  55. package/dist/packages/cli/src/utils/errors.d.ts +15 -0
  56. package/dist/packages/cli/src/utils/errors.js +58 -0
  57. package/dist/packages/cli/src/utils/errors.js.map +1 -0
  58. package/dist/packages/core/CHANGELOG.md +275 -0
  59. package/dist/packages/core/README.md +11 -0
  60. package/dist/packages/core/package.json +21 -0
  61. package/dist/packages/core/package.json.bak +21 -0
  62. package/dist/packages/core/src/extension-api/extension-manager.d.ts +35 -0
  63. package/dist/packages/core/src/extension-api/extension-manager.js +300 -0
  64. package/dist/packages/core/src/extension-api/extension-manager.js.map +1 -0
  65. package/dist/packages/core/src/extension-api/index.d.ts +2 -0
  66. package/dist/packages/core/src/extension-api/index.js +6 -0
  67. package/dist/packages/core/src/extension-api/index.js.map +1 -0
  68. package/dist/packages/core/src/extension-api/types.d.ts +34 -0
  69. package/dist/packages/core/src/extension-api/types.js +3 -0
  70. package/dist/packages/core/src/extension-api/types.js.map +1 -0
  71. package/dist/packages/core/src/index.d.ts +3 -0
  72. package/dist/packages/core/src/index.js +7 -0
  73. package/dist/packages/core/src/index.js.map +1 -0
  74. package/dist/packages/core/src/schemas/capability.schema.json +104 -0
  75. package/dist/packages/core/src/schemas/contract.schema.json +52 -0
  76. package/dist/packages/core/src/schemas/domain.schema.json +47 -0
  77. package/dist/packages/core/src/schemas/entity.schema.json +72 -0
  78. package/dist/packages/core/src/schemas/extension.schema.json +39 -0
  79. package/dist/packages/core/src/schemas/permission.schema.json +21 -0
  80. package/dist/packages/core/src/types/ast.d.ts +17 -0
  81. package/dist/packages/core/src/types/ast.js +3 -0
  82. package/dist/packages/core/src/types/ast.js.map +1 -0
  83. package/dist/packages/core/src/types/domain.d.ts +101 -0
  84. package/dist/packages/core/src/types/domain.js +8 -0
  85. package/dist/packages/core/src/types/domain.js.map +1 -0
  86. package/dist/packages/core/src/types/validation.d.ts +12 -0
  87. package/dist/packages/core/src/types/validation.js +16 -0
  88. package/dist/packages/core/src/types/validation.js.map +1 -0
  89. package/dist/packages/core/src/validator/ast-validator.d.ts +11 -0
  90. package/dist/packages/core/src/validator/ast-validator.js +388 -0
  91. package/dist/packages/core/src/validator/ast-validator.js.map +1 -0
  92. package/dist/packages/core/src/validator/index.d.ts +23 -0
  93. package/dist/packages/core/src/validator/index.js +143 -0
  94. package/dist/packages/core/src/validator/index.js.map +1 -0
  95. package/dist/packages/core/src/validator/serializer.d.ts +11 -0
  96. package/dist/packages/core/src/validator/serializer.js +99 -0
  97. package/dist/packages/core/src/validator/serializer.js.map +1 -0
  98. package/eslint.config.js +114 -0
  99. package/generate_prompts.js +19 -0
  100. package/jest.config.ts +5 -0
  101. package/jest.preset.js +3 -0
  102. package/nx.json +169 -0
  103. package/package.json +115 -0
  104. package/packages/angular-renderer/CHANGELOG.md +274 -0
  105. package/packages/angular-renderer/README.md +11 -0
  106. package/packages/angular-renderer/package.json +20 -0
  107. package/packages/angular-renderer/playwright-ct.config.ts +23 -0
  108. package/packages/angular-renderer/src/adapters/web/adapter.ts +145 -0
  109. package/packages/angular-renderer/src/adapters/web/experience-adapter.service.ts +21 -0
  110. package/packages/angular-renderer/src/components/primitives/button/button.component.html +9 -0
  111. package/packages/angular-renderer/src/components/primitives/button/button.component.pw.ts +19 -0
  112. package/packages/angular-renderer/src/components/primitives/button/button.component.scss +31 -0
  113. package/packages/angular-renderer/src/components/primitives/button/button.component.ts +67 -0
  114. package/packages/angular-renderer/src/components/primitives/primitives.a11y.pw.ts +33 -0
  115. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.html +10 -0
  116. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.pw.ts +29 -0
  117. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.scss +42 -0
  118. package/packages/angular-renderer/src/components/primitives/text-input/text-input.component.ts +84 -0
  119. package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.html +2 -0
  120. package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.pw.ts +19 -0
  121. package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.scss +5 -0
  122. package/packages/angular-renderer/src/components/primitives/vbox/vbox.component.ts +74 -0
  123. package/packages/angular-renderer/src/index.ts +7 -0
  124. package/packages/angular-renderer/src/lib/renderer.component.ts +118 -0
  125. package/packages/angular-renderer/src/lib/renderer.tokens.ts +9 -0
  126. package/packages/angular-renderer/src/lib/test-utils.ts +26 -0
  127. package/packages/angular-renderer/src/lib/theme.provider.ts +83 -0
  128. package/packages/angular-renderer/src/test-setup.ts +8 -0
  129. package/packages/cli/CHANGELOG.md +92 -0
  130. package/packages/cli/README.md +11 -0
  131. package/packages/cli/package.json +16 -0
  132. package/packages/cli/src/commands/generate/entity.ts +20 -0
  133. package/packages/cli/src/commands/generate/index.ts +28 -0
  134. package/packages/cli/src/commands/init.ts +28 -0
  135. package/packages/cli/src/commands/new.ts +22 -0
  136. package/packages/cli/src/commands/validate.ts +47 -0
  137. package/packages/cli/src/index.ts +11 -0
  138. package/packages/cli/src/lib/cli.ts +3 -0
  139. package/packages/cli/src/lib/generator.ts +181 -0
  140. package/packages/cli/src/lib/scaffolding.ts +104 -0
  141. package/packages/cli/src/lib/validation.ts +218 -0
  142. package/packages/cli/src/main.ts +38 -0
  143. package/packages/cli/src/templates/entity.json +6 -0
  144. package/packages/cli/src/templates/extension.json +8 -0
  145. package/packages/cli/src/templates/index.ts +94 -0
  146. package/packages/cli/src/templates/origo.json +16 -0
  147. package/packages/cli/src/utils/errors.ts +80 -0
  148. package/packages/core/CHANGELOG.md +275 -0
  149. package/packages/core/README.md +11 -0
  150. package/packages/core/package-lock.json +1035 -0
  151. package/packages/core/package.json +21 -0
  152. package/packages/core/scripts/generate-types.ts +23 -0
  153. package/packages/core/src/extension-api/extension-manager.ts +378 -0
  154. package/packages/core/src/extension-api/index.ts +2 -0
  155. package/packages/core/src/extension-api/types.ts +37 -0
  156. package/packages/core/src/index.ts +3 -0
  157. package/packages/core/src/schemas/__fixtures__/target-page.json +222 -0
  158. package/packages/core/src/schemas/capability.schema.json +104 -0
  159. package/packages/core/src/schemas/contract.schema.json +52 -0
  160. package/packages/core/src/schemas/domain.schema.json +47 -0
  161. package/packages/core/src/schemas/entity.schema.json +72 -0
  162. package/packages/core/src/schemas/extension.schema.json +39 -0
  163. package/packages/core/src/schemas/permission.schema.json +21 -0
  164. package/packages/core/src/types/ast.ts +20 -0
  165. package/packages/core/src/types/domain.ts +105 -0
  166. package/packages/core/src/types/validation.ts +29 -0
  167. package/packages/core/src/validator/ast-validator.ts +406 -0
  168. package/packages/core/src/validator/index.ts +207 -0
  169. package/packages/core/src/validator/serializer.ts +120 -0
  170. package/packages/core/test/fixtures/target-page.json +87 -0
  171. package/packages/design-tokens/CHANGELOG.md +273 -0
  172. package/packages/design-tokens/README.md +11 -0
  173. package/packages/design-tokens/package.json +25 -0
  174. package/packages/design-tokens/src/build.ts +97 -0
  175. package/packages/design-tokens/src/compile.ts +60 -0
  176. package/packages/design-tokens/src/index.ts +7 -0
  177. package/packages/design-tokens/src/runtime/index.ts +2 -0
  178. package/packages/design-tokens/src/runtime/theme-fetcher.ts +90 -0
  179. package/packages/design-tokens/src/runtime/theme-injector.ts +149 -0
  180. package/packages/design-tokens/src/schemas/base-tokens.schema.json +127 -0
  181. package/packages/design-tokens/src/schemas/semantic-tokens.schema.json +52 -0
  182. package/packages/design-tokens/src/tokens/base.json +46 -0
  183. package/packages/design-tokens/src/tokens/semantic.json +33 -0
  184. package/packages/playground/CHANGELOG.md +12 -0
  185. package/packages/playground/package.json +10 -0
  186. package/packages/playground/public/favicon.ico +0 -0
  187. package/packages/playground/src/app/app.component.html +1 -0
  188. package/packages/playground/src/app/app.component.scss +4 -0
  189. package/packages/playground/src/app/app.component.ts +13 -0
  190. package/packages/playground/src/app/app.config.ts +9 -0
  191. package/packages/playground/src/editor/badl-editor.component.html +1 -0
  192. package/packages/playground/src/editor/badl-editor.component.scss +10 -0
  193. package/packages/playground/src/editor/badl-editor.component.ts +57 -0
  194. package/packages/playground/src/editor/editor.worker.ts +1 -0
  195. package/packages/playground/src/editor/json.worker.ts +1 -0
  196. package/packages/playground/src/editor/monaco-environment.ts +11 -0
  197. package/packages/playground/src/editor/schema-registry.ts +30 -0
  198. package/packages/playground/src/index.html +13 -0
  199. package/packages/playground/src/main.ts +5 -0
  200. package/packages/playground/src/schemas/capability.schema.json +104 -0
  201. package/packages/playground/src/schemas/contract.schema.json +52 -0
  202. package/packages/playground/src/schemas/domain.schema.json +47 -0
  203. package/packages/playground/src/schemas/entity.schema.json +72 -0
  204. package/packages/playground/src/schemas/extension.schema.json +39 -0
  205. package/packages/playground/src/schemas/permission.schema.json +21 -0
  206. package/packages/playground/src/styles.scss +8 -0
  207. package/packages/playground/src/test-setup.ts +146 -0
  208. package/packages/playground/vite.config.ts +12 -0
  209. package/packages/playground/vitest.config.mjs +24 -0
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.serializeAST = serializeAST;
4
+ const ast_validator_1 = require("./ast-validator");
5
+ /**
6
+ * Deep clones and canonically sorts an object/array.
7
+ * Also detects circular references and unsupported types.
8
+ */
9
+ function canonicalize(obj, seen = new WeakSet(), errors = [], depth = 1) {
10
+ if (depth > ast_validator_1.MAX_AST_DEPTH) {
11
+ errors.push({
12
+ type: 'MAX_DEPTH_EXCEEDED',
13
+ message: `Maximum AST depth exceeded (${ast_validator_1.MAX_AST_DEPTH}) during canonicalization`,
14
+ });
15
+ return null;
16
+ }
17
+ if (obj === null || typeof obj !== 'object') {
18
+ return obj;
19
+ }
20
+ if (seen.has(obj)) {
21
+ errors.push({
22
+ type: 'CIRCULAR_REFERENCE',
23
+ message: 'Invalid AST: Circular reference detected during canonicalization',
24
+ });
25
+ return null;
26
+ }
27
+ if (Object.prototype.toString.call(obj) !== '[object Object]' && !Array.isArray(obj)) {
28
+ errors.push({
29
+ type: 'INVALID_TYPE',
30
+ message: `Invalid AST: Unsupported type ${obj.constructor?.name || typeof obj}`,
31
+ });
32
+ return null;
33
+ }
34
+ seen.add(obj);
35
+ if (Array.isArray(obj)) {
36
+ // Process children first
37
+ const mapped = obj.map(item => canonicalize(item, seen, errors, depth + 1));
38
+ // Sort deterministically
39
+ mapped.sort((a, b) => {
40
+ const aIsObj = typeof a === 'object' && a !== null;
41
+ const bIsObj = typeof b === 'object' && b !== null;
42
+ if (aIsObj && bIsObj) {
43
+ if ('id' in a && 'id' in b) {
44
+ const idA = String(a.id);
45
+ const idB = String(b.id);
46
+ return idA < idB ? -1 : idA > idB ? 1 : 0;
47
+ }
48
+ if ('name' in a && 'name' in b) {
49
+ const nameA = String(a.name);
50
+ const nameB = String(b.name);
51
+ return nameA < nameB ? -1 : nameA > nameB ? 1 : 0;
52
+ }
53
+ }
54
+ // Fallback for primitives, heterogeneous objects, or objects without id/name
55
+ const strA = JSON.stringify(a);
56
+ const strB = JSON.stringify(b);
57
+ return strA < strB ? -1 : strA > strB ? 1 : 0;
58
+ });
59
+ seen.delete(obj);
60
+ return mapped;
61
+ }
62
+ // It is an object, sort its keys
63
+ const objAsRecord = obj;
64
+ const sortedKeys = Object.keys(objAsRecord).sort();
65
+ const result = {};
66
+ for (const key of sortedKeys) {
67
+ result[key] = canonicalize(objAsRecord[key], seen, errors, depth + 1);
68
+ }
69
+ seen.delete(obj);
70
+ return result;
71
+ }
72
+ /**
73
+ * Serializes the parsed memory model into a canonical JSON AST.
74
+ * Enforces `schemaVersion`, stable key ordering, and stable array ordering.
75
+ *
76
+ * @param ast The canonical AST to serialize
77
+ * @returns Byte-for-byte deterministic JSON string
78
+ * @throws {ASTValidationError} If validation or canonicalization fails
79
+ */
80
+ function serializeAST(ast) {
81
+ if (!ast || !ast.schemaVersion) {
82
+ return [null, [{ type: 'INVALID_FORMAT', message: 'Invalid AST: Missing schemaVersion' }]];
83
+ }
84
+ if (!Array.isArray(ast.domains)) {
85
+ return [null, [{ type: 'INVALID_FORMAT', message: 'Invalid AST: domains must be an array' }]];
86
+ }
87
+ // Validate semantics before serializing
88
+ const errors = (0, ast_validator_1.validateAST)(ast);
89
+ if (errors.length > 0) {
90
+ return [null, errors];
91
+ }
92
+ const canonicalErrors = [];
93
+ const canonical = canonicalize(ast, new WeakSet(), canonicalErrors, 1);
94
+ if (canonicalErrors.length > 0) {
95
+ return [null, canonicalErrors];
96
+ }
97
+ return [JSON.stringify(canonical), []];
98
+ }
99
+ //# sourceMappingURL=serializer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serializer.js","sourceRoot":"","sources":["../../../../../packages/core/src/validator/serializer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ const nx = require('@nx/eslint-plugin');
2
+
3
+ module.exports = [
4
+ ...nx.configs['flat/base'],
5
+ ...nx.configs['flat/typescript'],
6
+ ...nx.configs['flat/javascript'],
7
+ {
8
+ ignores: [
9
+ '**/dist',
10
+ '**/tmp',
11
+ '**/out-tsc',
12
+ '**/.astro',
13
+ '**/_bmad-output',
14
+ '**/_bmad',
15
+ '**/.agent',
16
+ 'tools/spikes/**/worker.bundle.js',
17
+ ],
18
+ },
19
+ {
20
+ files: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
21
+ rules: {
22
+ '@nx/enforce-module-boundaries': [
23
+ 'error',
24
+ {
25
+ enforceBuildableLibDependency: true,
26
+ allow: [],
27
+ depConstraints: [
28
+ {
29
+ sourceTag: 'type:app',
30
+ onlyDependOnLibsWithTags: [
31
+ 'type:feature',
32
+ 'type:ui',
33
+ 'type:data-access',
34
+ 'type:util',
35
+ ],
36
+ },
37
+ {
38
+ sourceTag: 'type:feature',
39
+ onlyDependOnLibsWithTags: ['type:ui', 'type:data-access', 'type:util'],
40
+ },
41
+ {
42
+ sourceTag: 'type:ui',
43
+ onlyDependOnLibsWithTags: ['type:util'],
44
+ },
45
+ {
46
+ sourceTag: 'type:data-access',
47
+ onlyDependOnLibsWithTags: ['type:util'],
48
+ },
49
+ {
50
+ sourceTag: 'type:util',
51
+ onlyDependOnLibsWithTags: ['type:util', 'type:lib', 'type:tokens'],
52
+ },
53
+ {
54
+ sourceTag: 'type:lib',
55
+ onlyDependOnLibsWithTags: ['type:lib', 'type:tokens', 'type:util'],
56
+ },
57
+ {
58
+ sourceTag: 'type:tokens',
59
+ onlyDependOnLibsWithTags: [],
60
+ },
61
+ ],
62
+ },
63
+ ],
64
+ },
65
+ },
66
+ {
67
+ files: ['**/*.ts', '**/*.tsx'],
68
+ // Override or add rules here
69
+ rules: {
70
+ 'no-restricted-imports': [
71
+ 'error',
72
+ {
73
+ patterns: [
74
+ {
75
+ group: [
76
+ '**/*.fixture.json',
77
+ '**/*.mock.json',
78
+ '**/*.data.json',
79
+ '**/*.large.json',
80
+ '**/seed.json',
81
+ ],
82
+ message:
83
+ 'Importing massive JSON fixtures directly can cause TypeScript compiler OOM crashes (NFR-PREP-008). Use fs.readFile at runtime or stream parsing instead.',
84
+ },
85
+ ],
86
+ },
87
+ ],
88
+ },
89
+ },
90
+ {
91
+ files: ['**/*.js', '**/*.jsx'],
92
+ // Override or add rules here
93
+ rules: {
94
+ 'no-restricted-imports': [
95
+ 'error',
96
+ {
97
+ patterns: [
98
+ {
99
+ group: [
100
+ '**/*.fixture.json',
101
+ '**/*.mock.json',
102
+ '**/*.data.json',
103
+ '**/*.large.json',
104
+ '**/seed.json',
105
+ ],
106
+ message:
107
+ 'Importing massive JSON fixtures directly can cause TypeScript compiler OOM crashes (NFR-PREP-008). Use fs.readFile at runtime or stream parsing instead.',
108
+ },
109
+ ],
110
+ },
111
+ ],
112
+ },
113
+ },
114
+ ];
@@ -0,0 +1,19 @@
1
+ const fs = require('fs');
2
+ const diff = fs.readFileSync('_bmad-output/implementation-artifacts/diff.txt', 'utf8');
3
+ const specPath =
4
+ '_bmad-output/implementation-artifacts/stories/4-4-extensibility-and-plugin-schema.md';
5
+
6
+ const blindHunterPrompt = `Invoke the \`bmad-review-adversarial-general\` skill on this diff:\n\n${diff}`;
7
+ const edgeCaseHunterPrompt = `Invoke the \`bmad-review-edge-case-hunter\` skill on this diff:\n\n${diff}`;
8
+ const acceptanceAuditorPrompt = `You are an Acceptance Auditor. Review the provided diff against \`${specPath}\` and any loaded context docs. Check for: violations of acceptance criteria, deviations from spec intent, missing implementation of specified behavior, contradictions between spec constraints and actual code. Output findings as a Markdown list. Each finding: one-line title, which AC/constraint it violates, and evidence from the diff.\n\nDiff:\n${diff}`;
9
+
10
+ fs.writeFileSync('_bmad-output/implementation-artifacts/prompt-blind-hunter.md', blindHunterPrompt);
11
+ fs.writeFileSync(
12
+ '_bmad-output/implementation-artifacts/prompt-edge-case-hunter.md',
13
+ edgeCaseHunterPrompt
14
+ );
15
+ fs.writeFileSync(
16
+ '_bmad-output/implementation-artifacts/prompt-acceptance-auditor.md',
17
+ acceptanceAuditorPrompt
18
+ );
19
+ console.log('Prompts generated successfully.');
package/jest.config.ts ADDED
@@ -0,0 +1,5 @@
1
+ import { getJestProjectsAsync } from '@nx/jest';
2
+
3
+ export default async () => ({
4
+ projects: await getJestProjectsAsync(),
5
+ });
package/jest.preset.js ADDED
@@ -0,0 +1,3 @@
1
+ const nxPreset = require('@nx/jest/preset').default;
2
+
3
+ module.exports = { ...nxPreset };
package/nx.json ADDED
@@ -0,0 +1,169 @@
1
+ {
2
+ "$schema": "./node_modules/nx/schemas/nx-schema.json",
3
+ "cacheDirectory": ".nx/cache",
4
+ "namedInputs": {
5
+ "default": ["{projectRoot}/**/*", "sharedGlobals"],
6
+ "production": [
7
+ "default",
8
+ "!{projectRoot}/**/?(*.)+(spec|test|cy).[jt]s?(x)?(.snap)",
9
+ "!{projectRoot}/tsconfig.spec.json",
10
+ "!{projectRoot}/jest.config.[jt]s",
11
+ "!{projectRoot}/src/test-setup.[jt]s",
12
+ "!{projectRoot}/test-setup.[jt]s"
13
+ ],
14
+ "sharedGlobals": []
15
+ },
16
+ "plugins": [
17
+ {
18
+ "plugin": "@nx/eslint/plugin",
19
+ "options": {
20
+ "targetName": "lint"
21
+ }
22
+ },
23
+ {
24
+ "plugin": "@nx/jest/plugin",
25
+ "options": {
26
+ "targetName": "test"
27
+ }
28
+ },
29
+ {
30
+ "plugin": "@nx/playwright/plugin",
31
+ "options": {
32
+ "targetName": "e2e"
33
+ }
34
+ }
35
+ ],
36
+ "targetDefaults": {
37
+ "@angular-devkit/build-angular:application": {
38
+ "cache": true,
39
+ "dependsOn": ["^build"],
40
+ "inputs": ["production", "^production"]
41
+ },
42
+ "@nx/eslint:lint": {
43
+ "cache": true,
44
+ "inputs": [
45
+ "default",
46
+ "^default",
47
+ "{workspaceRoot}/.eslintrc.json",
48
+ "{workspaceRoot}/.eslintignore",
49
+ "{workspaceRoot}/eslint.config.js",
50
+ "{workspaceRoot}/tools/eslint-rules/**/*"
51
+ ]
52
+ },
53
+ "@nx/jest:jest": {
54
+ "cache": true,
55
+ "inputs": ["default", "^production", "{workspaceRoot}/jest.preset.js"],
56
+ "options": {
57
+ "passWithNoTests": true
58
+ },
59
+ "configurations": {
60
+ "ci": {
61
+ "ci": true,
62
+ "codeCoverage": true
63
+ }
64
+ }
65
+ },
66
+ "@nx/js:tsc": {
67
+ "cache": true,
68
+ "dependsOn": ["^build"],
69
+ "inputs": ["production", "^production"]
70
+ },
71
+ "@nx/esbuild:esbuild": {
72
+ "cache": true,
73
+ "dependsOn": ["^build"],
74
+ "inputs": ["production", "^production"]
75
+ },
76
+ "@angular/build:application": {
77
+ "cache": true,
78
+ "dependsOn": ["^build"],
79
+ "inputs": ["production", "^production"]
80
+ },
81
+ "@angular/build:unit-test": {
82
+ "cache": true,
83
+ "inputs": ["default", "^production"]
84
+ }
85
+ },
86
+ "workspaceLayout": {
87
+ "appsDir": "apps",
88
+ "libsDir": "packages"
89
+ },
90
+ "generators": {
91
+ "@nx/angular:component": {
92
+ "type": "component",
93
+ "standalone": true
94
+ },
95
+ "@schematics/angular:component": {
96
+ "type": "component"
97
+ },
98
+ "@nx/angular:directive": {
99
+ "type": "directive"
100
+ },
101
+ "@schematics/angular:directive": {
102
+ "type": "directive"
103
+ },
104
+ "@nx/angular:service": {
105
+ "type": "service"
106
+ },
107
+ "@schematics/angular:service": {
108
+ "type": "service"
109
+ },
110
+ "@nx/angular:scam": {
111
+ "type": "component"
112
+ },
113
+ "@nx/angular:scam-directive": {
114
+ "type": "directive"
115
+ },
116
+ "@nx/angular:guard": {
117
+ "typeSeparator": "."
118
+ },
119
+ "@schematics/angular:guard": {
120
+ "typeSeparator": "."
121
+ },
122
+ "@nx/angular:interceptor": {
123
+ "typeSeparator": "."
124
+ },
125
+ "@schematics/angular:interceptor": {
126
+ "typeSeparator": "."
127
+ },
128
+ "@nx/angular:module": {
129
+ "typeSeparator": "."
130
+ },
131
+ "@schematics/angular:module": {
132
+ "typeSeparator": "."
133
+ },
134
+ "@nx/angular:pipe": {
135
+ "typeSeparator": "."
136
+ },
137
+ "@schematics/angular:pipe": {
138
+ "typeSeparator": "."
139
+ },
140
+ "@nx/angular:resolver": {
141
+ "typeSeparator": "."
142
+ },
143
+ "@schematics/angular:resolver": {
144
+ "typeSeparator": "."
145
+ },
146
+ "@nx/angular:application": {
147
+ "e2eTestRunner": "playwright",
148
+ "linter": "eslint",
149
+ "style": "scss",
150
+ "unitTestRunner": "vitest-angular"
151
+ }
152
+ },
153
+ "analytics": true,
154
+ "nxCloudId": "6a75f22a66c65db5106c4220",
155
+ "release": {
156
+ "projects": ["packages/*"],
157
+ "version": {
158
+ "conventionalCommits": true,
159
+ "fallbackCurrentVersionResolver": "disk"
160
+ },
161
+ "changelog": {
162
+ "automaticFromRef": true,
163
+ "workspaceChangelog": {
164
+ "createRelease": "github"
165
+ },
166
+ "projectChangelogs": true
167
+ }
168
+ }
169
+ }
package/package.json ADDED
@@ -0,0 +1,115 @@
1
+ {
2
+ "name": "@origostudio/origo-design",
3
+ "version": "0.0.0",
4
+ "license": "MIT",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/OrigoStudio/origo-design.git"
8
+ },
9
+ "scripts": {
10
+ "start": "nx serve origo-design",
11
+ "build": "nx run-many -t build",
12
+ "test": "nx run-many -t test",
13
+ "lint": "nx run-many -t lint",
14
+ "e2e": "nx run-many -t e2e",
15
+ "perf:benchmark": "ts-node tools/benchmarks/compare-baseline.ts",
16
+ "perf:test": "ts-node tools/benchmarks/run-tests.ts",
17
+ "spike:epic7": "node tools/spikes/epic7-worker-csp/build-spike.js",
18
+ "prepare": "husky",
19
+ "release": "nx release --skip-publish",
20
+ "validate:registry": "ts-node --project tsconfig.base.json tools/test-registry/validate-registry.ts"
21
+ },
22
+ "private": false,
23
+ "dependencies": {
24
+ "@angular/animations": "22.0.8",
25
+ "@angular/common": "22.0.8",
26
+ "@angular/compiler": "22.0.8",
27
+ "@angular/core": "22.0.8",
28
+ "@angular/forms": "22.0.8",
29
+ "@angular/platform-browser": "22.0.8",
30
+ "@angular/platform-browser-dynamic": "22.0.8",
31
+ "@angular/router": "22.0.8",
32
+ "ajv": "^8.20.0",
33
+ "ajv-errors": "^3.0.0",
34
+ "ajv-formats": "^3.0.1",
35
+ "comlink": "^4.4.2",
36
+ "commander": "^15.0.0",
37
+ "monaco-editor": "^0.50.0",
38
+ "rxjs": "~7.8.0",
39
+ "tslib": "^2.3.0"
40
+ },
41
+ "engines": {
42
+ "node": ">=22.0.0"
43
+ },
44
+ "devDependencies": {
45
+ "@analogjs/vite-plugin-angular": "^2.7.1",
46
+ "@angular-devkit/build-angular": "22.0.9",
47
+ "@angular-devkit/core": "22.0.9",
48
+ "@angular-devkit/schematics": "22.0.9",
49
+ "@angular/build": "22.0.9",
50
+ "@angular/cli": "22.0.9",
51
+ "@angular/compiler-cli": "22.0.8",
52
+ "@angular/language-service": "22.0.8",
53
+ "@astrojs/starlight": "^0.25.0",
54
+ "@axe-core/playwright": "^4.13.0",
55
+ "@commitlint/cli": "^21.2.1",
56
+ "@commitlint/config-conventional": "^21.2.0",
57
+ "@nx/angular": "23.1.0",
58
+ "@nx/devkit": "23.1.0",
59
+ "@nx/esbuild": "23.1.0",
60
+ "@nx/eslint": "23.1.0",
61
+ "@nx/eslint-plugin": "23.1.0",
62
+ "@nx/jest": "23.1.0",
63
+ "@nx/js": "23.1.0",
64
+ "@nx/playwright": "23.1.0",
65
+ "@nx/vite": "23.1.0",
66
+ "@nx/web": "23.1.0",
67
+ "@nx/workspace": "23.1.0",
68
+ "@playwright/test": "^1.36.0",
69
+ "@schematics/angular": "22.0.9",
70
+ "@swc/helpers": "~0.5.18",
71
+ "@types/jest": "30.0.0",
72
+ "@types/json-source-map": "^0.6.0",
73
+ "@types/node": "^22.12.0",
74
+ "@types/semver": "^7.8.0",
75
+ "@typescript-eslint/eslint-plugin": "8.65.0",
76
+ "@typescript-eslint/parser": "8.65.0",
77
+ "@typescript-eslint/utils": "^8.58.0",
78
+ "angular-eslint": "^22.0.0",
79
+ "astro": "^4.13.2",
80
+ "cookie": "^2.0.1",
81
+ "esbuild": "^0.27.0",
82
+ "eslint": "9.9.1",
83
+ "eslint-config-prettier": "10.1.8",
84
+ "eslint-plugin-playwright": "^1.6.2",
85
+ "husky": "^9.0.11",
86
+ "jest": "30.3.0",
87
+ "jest-environment-jsdom": "30.0.5",
88
+ "jest-environment-node": "~30.3.0",
89
+ "jest-preset-angular": "17.0.0",
90
+ "jest-util": "30.0.5",
91
+ "jsdom": "^27.4.0",
92
+ "json-schema-to-typescript": "^14.1.0",
93
+ "json-source-map": "^0.6.1",
94
+ "jsonc-eslint-parser": "^2.1.0",
95
+ "lint-staged": "^15.2.2",
96
+ "nx": "23.1.0",
97
+ "prettier": "~3.6.2",
98
+ "sharp": "^0.34.5",
99
+ "ts-jest": "^29.1.0",
100
+ "ts-node": "10.9.1",
101
+ "typescript": "~6.0.0",
102
+ "typescript-eslint": "^8.65.0",
103
+ "vite": "^8.2.2",
104
+ "vitest": "^4.1.11",
105
+ "zone.js": "^0.16.3"
106
+ },
107
+ "lint-staged": {
108
+ "*.{js,ts,html,scss,json,md,yaml,yml}": [
109
+ "npx prettier --write"
110
+ ],
111
+ "*.{js,ts}": [
112
+ "npx eslint --fix"
113
+ ]
114
+ }
115
+ }