@origostudio/core 0.0.40

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 (40) hide show
  1. package/CHANGELOG.md +365 -0
  2. package/README.md +11 -0
  3. package/package.json +25 -0
  4. package/package.json.bak +25 -0
  5. package/src/extension-api/extension-manager.d.ts +35 -0
  6. package/src/extension-api/extension-manager.js +300 -0
  7. package/src/extension-api/extension-manager.js.map +1 -0
  8. package/src/extension-api/index.d.ts +2 -0
  9. package/src/extension-api/index.js +6 -0
  10. package/src/extension-api/index.js.map +1 -0
  11. package/src/extension-api/types.d.ts +34 -0
  12. package/src/extension-api/types.js +3 -0
  13. package/src/extension-api/types.js.map +1 -0
  14. package/src/index.d.ts +3 -0
  15. package/src/index.js +7 -0
  16. package/src/index.js.map +1 -0
  17. package/src/schemas/capability.schema.json +104 -0
  18. package/src/schemas/contract.schema.json +52 -0
  19. package/src/schemas/domain.schema.json +47 -0
  20. package/src/schemas/entity.schema.json +72 -0
  21. package/src/schemas/extension.schema.json +39 -0
  22. package/src/schemas/permission.schema.json +21 -0
  23. package/src/types/ast.d.ts +17 -0
  24. package/src/types/ast.js +3 -0
  25. package/src/types/ast.js.map +1 -0
  26. package/src/types/domain.d.ts +101 -0
  27. package/src/types/domain.js +8 -0
  28. package/src/types/domain.js.map +1 -0
  29. package/src/types/validation.d.ts +12 -0
  30. package/src/types/validation.js +16 -0
  31. package/src/types/validation.js.map +1 -0
  32. package/src/validator/ast-validator.d.ts +11 -0
  33. package/src/validator/ast-validator.js +388 -0
  34. package/src/validator/ast-validator.js.map +1 -0
  35. package/src/validator/index.d.ts +23 -0
  36. package/src/validator/index.js +143 -0
  37. package/src/validator/index.js.map +1 -0
  38. package/src/validator/serializer.d.ts +11 -0
  39. package/src/validator/serializer.js +99 -0
  40. package/src/validator/serializer.js.map +1 -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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"}