@jotx-labs/core 2.2.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 (114) hide show
  1. package/README.md +37 -0
  2. package/dist/__tests__/events.test.d.ts +2 -0
  3. package/dist/__tests__/events.test.d.ts.map +1 -0
  4. package/dist/__tests__/events.test.js +63 -0
  5. package/dist/__tests__/events.test.js.map +1 -0
  6. package/dist/__tests__/idGenerator.test.d.ts +5 -0
  7. package/dist/__tests__/idGenerator.test.d.ts.map +1 -0
  8. package/dist/__tests__/idGenerator.test.js +98 -0
  9. package/dist/__tests__/idGenerator.test.js.map +1 -0
  10. package/dist/__tests__/platform.test.d.ts +2 -0
  11. package/dist/__tests__/platform.test.d.ts.map +1 -0
  12. package/dist/__tests__/platform.test.js +37 -0
  13. package/dist/__tests__/platform.test.js.map +1 -0
  14. package/dist/__tests__/plugin.test.d.ts +2 -0
  15. package/dist/__tests__/plugin.test.d.ts.map +1 -0
  16. package/dist/__tests__/plugin.test.js +72 -0
  17. package/dist/__tests__/plugin.test.js.map +1 -0
  18. package/dist/converters/MarkdownConverter.d.ts +15 -0
  19. package/dist/converters/MarkdownConverter.d.ts.map +1 -0
  20. package/dist/converters/MarkdownConverter.js +519 -0
  21. package/dist/converters/MarkdownConverter.js.map +1 -0
  22. package/dist/document/index.d.ts +4 -0
  23. package/dist/document/index.d.ts.map +1 -0
  24. package/dist/document/index.js +8 -0
  25. package/dist/document/index.js.map +1 -0
  26. package/dist/events/EventEmitter.d.ts +20 -0
  27. package/dist/events/EventEmitter.d.ts.map +1 -0
  28. package/dist/events/EventEmitter.js +51 -0
  29. package/dist/events/EventEmitter.js.map +1 -0
  30. package/dist/events/index.d.ts +2 -0
  31. package/dist/events/index.d.ts.map +1 -0
  32. package/dist/events/index.js +18 -0
  33. package/dist/events/index.js.map +1 -0
  34. package/dist/index.d.ts +47 -0
  35. package/dist/index.d.ts.map +1 -0
  36. package/dist/index.js +118 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/parser/__tests__/parser.test.d.ts +2 -0
  39. package/dist/parser/__tests__/parser.test.d.ts.map +1 -0
  40. package/dist/parser/__tests__/parser.test.js +72 -0
  41. package/dist/parser/__tests__/parser.test.js.map +1 -0
  42. package/dist/parser/__tests__/serializer.test.d.ts +2 -0
  43. package/dist/parser/__tests__/serializer.test.d.ts.map +1 -0
  44. package/dist/parser/__tests__/serializer.test.js +60 -0
  45. package/dist/parser/__tests__/serializer.test.js.map +1 -0
  46. package/dist/parser/__tests__/tokenizer.test.d.ts +2 -0
  47. package/dist/parser/__tests__/tokenizer.test.d.ts.map +1 -0
  48. package/dist/parser/__tests__/tokenizer.test.js +76 -0
  49. package/dist/parser/__tests__/tokenizer.test.js.map +1 -0
  50. package/dist/parser/__tests__/validator.test.d.ts +2 -0
  51. package/dist/parser/__tests__/validator.test.d.ts.map +1 -0
  52. package/dist/parser/__tests__/validator.test.js +281 -0
  53. package/dist/parser/__tests__/validator.test.js.map +1 -0
  54. package/dist/parser/serializer.d.ts +28 -0
  55. package/dist/parser/serializer.d.ts.map +1 -0
  56. package/dist/parser/serializer.js +157 -0
  57. package/dist/parser/serializer.js.map +1 -0
  58. package/dist/parser/tokenizer.new.d.ts +31 -0
  59. package/dist/parser/tokenizer.new.d.ts.map +1 -0
  60. package/dist/parser/tokenizer.new.js +181 -0
  61. package/dist/parser/tokenizer.new.js.map +1 -0
  62. package/dist/parser/v3/BlockParser.d.ts +11 -0
  63. package/dist/parser/v3/BlockParser.d.ts.map +1 -0
  64. package/dist/parser/v3/BlockParser.js +93 -0
  65. package/dist/parser/v3/BlockParser.js.map +1 -0
  66. package/dist/parser/v3/DocumentParser.d.ts +8 -0
  67. package/dist/parser/v3/DocumentParser.d.ts.map +1 -0
  68. package/dist/parser/v3/DocumentParser.js +109 -0
  69. package/dist/parser/v3/DocumentParser.js.map +1 -0
  70. package/dist/parser/v3/Parser.d.ts +11 -0
  71. package/dist/parser/v3/Parser.d.ts.map +1 -0
  72. package/dist/parser/v3/Parser.js +25 -0
  73. package/dist/parser/v3/Parser.js.map +1 -0
  74. package/dist/parser/validator.d.ts +24 -0
  75. package/dist/parser/validator.d.ts.map +1 -0
  76. package/dist/parser/validator.js +177 -0
  77. package/dist/parser/validator.js.map +1 -0
  78. package/dist/platform/NullPlatformAdapter.d.ts +18 -0
  79. package/dist/platform/NullPlatformAdapter.d.ts.map +1 -0
  80. package/dist/platform/NullPlatformAdapter.js +41 -0
  81. package/dist/platform/NullPlatformAdapter.js.map +1 -0
  82. package/dist/platform/PlatformAdapter.d.ts +22 -0
  83. package/dist/platform/PlatformAdapter.d.ts.map +1 -0
  84. package/dist/platform/PlatformAdapter.js +7 -0
  85. package/dist/platform/PlatformAdapter.js.map +1 -0
  86. package/dist/platform/index.d.ts +3 -0
  87. package/dist/platform/index.d.ts.map +1 -0
  88. package/dist/platform/index.js +19 -0
  89. package/dist/platform/index.js.map +1 -0
  90. package/dist/plugin/PluginSystem.d.ts +46 -0
  91. package/dist/plugin/PluginSystem.d.ts.map +1 -0
  92. package/dist/plugin/PluginSystem.js +58 -0
  93. package/dist/plugin/PluginSystem.js.map +1 -0
  94. package/dist/plugin/index.d.ts +2 -0
  95. package/dist/plugin/index.d.ts.map +1 -0
  96. package/dist/plugin/index.js +18 -0
  97. package/dist/plugin/index.js.map +1 -0
  98. package/dist/types/ast.d.ts +118 -0
  99. package/dist/types/ast.d.ts.map +1 -0
  100. package/dist/types/ast.js +331 -0
  101. package/dist/types/ast.js.map +1 -0
  102. package/dist/types/enums.d.ts +67 -0
  103. package/dist/types/enums.d.ts.map +1 -0
  104. package/dist/types/enums.js +278 -0
  105. package/dist/types/enums.js.map +1 -0
  106. package/dist/utils/idGenerator.d.ts +34 -0
  107. package/dist/utils/idGenerator.d.ts.map +1 -0
  108. package/dist/utils/idGenerator.js +105 -0
  109. package/dist/utils/idGenerator.js.map +1 -0
  110. package/dist/version.d.ts +7 -0
  111. package/dist/version.d.ts.map +1 -0
  112. package/dist/version.js +10 -0
  113. package/dist/version.js.map +1 -0
  114. package/package.json +41 -0
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Validator = void 0;
4
+ exports.createValidator = createValidator;
5
+ const registry_1 = require("@jotx/registry");
6
+ const enums_1 = require("../types/enums");
7
+ /**
8
+ * Jotx Validator
9
+ * Validates AST against Registry Schema
10
+ */
11
+ class Validator {
12
+ validate(doc) {
13
+ const errors = [];
14
+ // Validate document-level schema (which blocks are allowed)
15
+ this.validateDocumentSchema(doc, errors);
16
+ // Validate document metadata
17
+ this.validateDocumentMetadata(doc, errors);
18
+ // Validate individual blocks
19
+ this.validateBlocks(doc.blocks, errors);
20
+ return errors;
21
+ }
22
+ /**
23
+ * Validate that all blocks in the document are allowed for this document type
24
+ */
25
+ validateDocumentSchema(doc, errors) {
26
+ const allowedBlocks = enums_1.DOCUMENT_SCHEMAS[doc.type];
27
+ if (!allowedBlocks) {
28
+ errors.push({
29
+ type: 'invalid_document_type',
30
+ message: `Unknown document type: '${doc.type}'`,
31
+ severity: 'error',
32
+ line: 1
33
+ });
34
+ return;
35
+ }
36
+ // Check all blocks recursively
37
+ this.checkBlocksAgainstSchema(doc.blocks, allowedBlocks, doc.type, errors);
38
+ }
39
+ /**
40
+ * Validate document metadata (e.g. type enum)
41
+ */
42
+ validateDocumentMetadata(doc, errors) {
43
+ // Validate type
44
+ if (doc.metadata.type) {
45
+ if (!(0, enums_1.isValidDocumentKind)(doc.metadata.type)) {
46
+ errors.push({
47
+ type: 'invalid_metadata',
48
+ message: `Invalid document type '${doc.metadata.type}'. Expected one of: ${enums_1.DOCUMENT_KINDS.join(', ')}`,
49
+ severity: 'error',
50
+ line: 1
51
+ });
52
+ }
53
+ }
54
+ }
55
+ /**
56
+ * Recursively check if blocks are allowed in this document type
57
+ */
58
+ checkBlocksAgainstSchema(blocks, allowedBlocks, docType, errors) {
59
+ if (!blocks || !Array.isArray(blocks))
60
+ return;
61
+ for (const block of blocks) {
62
+ // Check if block type is allowed in this document type
63
+ if (!allowedBlocks.includes(block.type)) {
64
+ const lineNum = block.line || 1;
65
+ errors.push({
66
+ type: 'schema_violation',
67
+ message: `Block type '${block.type}' is not allowed in '${docType}' documents (line ${lineNum})`,
68
+ severity: 'error',
69
+ line: lineNum,
70
+ column: 1,
71
+ blockId: block.id
72
+ });
73
+ }
74
+ // Do not recursively check children against document schema.
75
+ // Children validation should be handled by the parent block definition (if implemented)
76
+ // or simply allowed. Document schema only restricts ROOT blocks.
77
+ }
78
+ }
79
+ validateBlocks(blocks, errors) {
80
+ if (!blocks || !Array.isArray(blocks))
81
+ return;
82
+ for (const block of blocks) {
83
+ this.validateBlock(block, errors);
84
+ if (block.children) {
85
+ this.validateBlocks(block.children, errors);
86
+ }
87
+ }
88
+ }
89
+ validateBlock(block, errors) {
90
+ const line = block.line || 0;
91
+ const def = registry_1.registry.get(block.type);
92
+ // 1. Check for Unknown Block Type
93
+ if (!def) {
94
+ errors.push({
95
+ type: 'invalid_block_type',
96
+ message: `Unknown block type: '${block.type}'`,
97
+ severity: 'error',
98
+ line: line,
99
+ blockId: block.id
100
+ });
101
+ return;
102
+ }
103
+ if (!def.schema)
104
+ return; // No schema, strict validation skipped
105
+ const schema = def.schema.properties;
106
+ // 2. Check Required Properties
107
+ for (const [key, propSchema] of Object.entries(schema)) {
108
+ if (propSchema.required) {
109
+ if (block.properties[key] === undefined || block.properties[key] === null) {
110
+ errors.push({
111
+ type: 'missing_required',
112
+ message: `Block '${block.type}' is missing required property: '${key}'`,
113
+ severity: 'error',
114
+ line: line,
115
+ blockId: block.id,
116
+ propertyName: key
117
+ });
118
+ }
119
+ }
120
+ }
121
+ // 3. Check Property Types & Enums
122
+ for (const [key, value] of Object.entries(block.properties)) {
123
+ const propSchema = schema[key];
124
+ // Unknown property?
125
+ if (!propSchema) {
126
+ // If strict mode, we could error here. For now, allow extra props?
127
+ // User asked for "comprehensive validator", so maybe warn?
128
+ // skipping for now to avoid noise on flexible blocks.
129
+ continue;
130
+ }
131
+ // Enum Validation
132
+ if (propSchema.type === 'enum' && propSchema.options) {
133
+ if (!propSchema.options.includes(value)) {
134
+ errors.push({
135
+ type: 'invalid_enum',
136
+ message: `Invalid value '${value}' for property '${key}'. Expected one of: ${propSchema.options.join(', ')}`,
137
+ severity: 'error',
138
+ line: line,
139
+ blockId: block.id,
140
+ propertyName: key
141
+ });
142
+ }
143
+ }
144
+ // Boolean Validation
145
+ if (propSchema.type === 'boolean') {
146
+ if (typeof value !== 'boolean') {
147
+ errors.push({
148
+ type: 'invalid_type',
149
+ message: `Property '${key}' expects boolean, got ${typeof value}`,
150
+ severity: 'error',
151
+ line: line,
152
+ blockId: block.id,
153
+ propertyName: key
154
+ });
155
+ }
156
+ }
157
+ // Number Validation
158
+ if (propSchema.type === 'number') {
159
+ if (typeof value !== 'number' || isNaN(value)) {
160
+ errors.push({
161
+ type: 'invalid_type',
162
+ message: `Property '${key}' expects number, got ${typeof value}`,
163
+ severity: 'error',
164
+ line: line,
165
+ blockId: block.id,
166
+ propertyName: key
167
+ });
168
+ }
169
+ }
170
+ }
171
+ }
172
+ }
173
+ exports.Validator = Validator;
174
+ function createValidator() {
175
+ return new Validator();
176
+ }
177
+ //# sourceMappingURL=validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/parser/validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Null platform adapter (default no-op implementation)
3
+ * Used when no platform is injected
4
+ */
5
+ import { PlatformAdapter, PickFileOptions } from './PlatformAdapter';
6
+ export declare class NullPlatformAdapter implements PlatformAdapter {
7
+ readFile(path: string): Promise<string>;
8
+ writeFile(path: string, content: string): Promise<void>;
9
+ exists(path: string): Promise<boolean>;
10
+ listFiles(directory: string): Promise<string[]>;
11
+ openExternal(url: string): Promise<void>;
12
+ showMessage(message: string, type: 'info' | 'warning' | 'error'): void;
13
+ pickFile(options?: PickFileOptions): Promise<string | null>;
14
+ pickDirectory(options?: PickFileOptions): Promise<string | null>;
15
+ getWorkspaceRoot(): string | null;
16
+ getRelativePath(absolutePath: string): string;
17
+ }
18
+ //# sourceMappingURL=NullPlatformAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NullPlatformAdapter.d.ts","sourceRoot":"","sources":["../../src/platform/NullPlatformAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAEpE,qBAAa,mBAAoB,YAAW,eAAe;IACnD,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIvC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9C,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI;IAIhE,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI3D,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAItE,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;CAG9C"}
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ /**
3
+ * Null platform adapter (default no-op implementation)
4
+ * Used when no platform is injected
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.NullPlatformAdapter = void 0;
8
+ class NullPlatformAdapter {
9
+ async readFile(path) {
10
+ throw new Error('Platform not configured: readFile');
11
+ }
12
+ async writeFile(path, content) {
13
+ throw new Error('Platform not configured: writeFile');
14
+ }
15
+ async exists(path) {
16
+ return false;
17
+ }
18
+ async listFiles(directory) {
19
+ return [];
20
+ }
21
+ async openExternal(url) {
22
+ console.warn('Platform not configured: openExternal', url);
23
+ }
24
+ showMessage(message, type) {
25
+ console.log(`[${type}] ${message}`);
26
+ }
27
+ async pickFile(options) {
28
+ throw new Error('Platform not configured: pickFile');
29
+ }
30
+ async pickDirectory(options) {
31
+ throw new Error('Platform not configured: pickDirectory');
32
+ }
33
+ getWorkspaceRoot() {
34
+ return null;
35
+ }
36
+ getRelativePath(absolutePath) {
37
+ return absolutePath;
38
+ }
39
+ }
40
+ exports.NullPlatformAdapter = NullPlatformAdapter;
41
+ //# sourceMappingURL=NullPlatformAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NullPlatformAdapter.js","sourceRoot":"","sources":["../../src/platform/NullPlatformAdapter.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAIH,MAAa,mBAAmB;IAC9B,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY,EAAE,OAAe;QAC3C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAA;IACvD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAiB;QAC/B,OAAO,EAAE,CAAA;IACX,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,GAAW;QAC5B,OAAO,CAAC,IAAI,CAAC,uCAAuC,EAAE,GAAG,CAAC,CAAA;IAC5D,CAAC;IAED,WAAW,CAAC,OAAe,EAAE,IAAkC;QAC7D,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC,CAAA;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAyB;QACtC,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAAyB;QAC3C,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;IAC3D,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAA;IACb,CAAC;IAED,eAAe,CAAC,YAAoB;QAClC,OAAO,YAAY,CAAA;IACrB,CAAC;CACF;AAxCD,kDAwCC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Platform abstraction interface
3
+ * Allows jotx core to work on any platform
4
+ */
5
+ export interface PickFileOptions {
6
+ filters?: Record<string, string[]>;
7
+ multiple?: boolean;
8
+ directory?: boolean;
9
+ }
10
+ export interface PlatformAdapter {
11
+ readFile(path: string): Promise<string>;
12
+ writeFile(path: string, content: string): Promise<void>;
13
+ exists(path: string): Promise<boolean>;
14
+ listFiles(directory: string): Promise<string[]>;
15
+ openExternal(url: string): Promise<void>;
16
+ showMessage(message: string, type: 'info' | 'warning' | 'error'): void;
17
+ pickFile(options?: PickFileOptions): Promise<string | null>;
18
+ pickDirectory(options?: PickFileOptions): Promise<string | null>;
19
+ getWorkspaceRoot(): string | null;
20
+ getRelativePath(absolutePath: string): string;
21
+ }
22
+ //# sourceMappingURL=PlatformAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformAdapter.d.ts","sourceRoot":"","sources":["../../src/platform/PlatformAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,MAAM,WAAW,eAAe;IAE9B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;IACvC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IACtC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAG/C,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAGxC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,GAAG,IAAI,CAAA;IAGtE,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC3D,aAAa,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAGhE,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAA;IACjC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAAA;CAC9C"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ /**
3
+ * Platform abstraction interface
4
+ * Allows jotx core to work on any platform
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ //# sourceMappingURL=PlatformAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PlatformAdapter.js","sourceRoot":"","sources":["../../src/platform/PlatformAdapter.ts"],"names":[],"mappings":";AAAA;;;GAGG"}
@@ -0,0 +1,3 @@
1
+ export * from './PlatformAdapter';
2
+ export * from './NullPlatformAdapter';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAA;AACjC,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./PlatformAdapter"), exports);
18
+ __exportStar(require("./NullPlatformAdapter"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/platform/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAiC;AACjC,wDAAqC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Plugin system - Core plugin interfaces and manager
3
+ */
4
+ export interface Plugin {
5
+ name: string;
6
+ version: string;
7
+ description?: string;
8
+ author?: string;
9
+ onLoad?(core: any): void | Promise<void>;
10
+ onUnload?(): void | Promise<void>;
11
+ blocks?: BlockDefinition[];
12
+ validators?: ValidatorDefinition[];
13
+ serializers?: SerializerDefinition[];
14
+ events?: EventListener[];
15
+ }
16
+ export interface BlockDefinition {
17
+ type: string;
18
+ blockClass: any;
19
+ schema?: any;
20
+ renderer?: any;
21
+ }
22
+ export interface ValidatorDefinition {
23
+ name: string;
24
+ validate: (ast: any) => any;
25
+ }
26
+ export interface SerializerDefinition {
27
+ name: string;
28
+ serialize: (ast: any) => string;
29
+ }
30
+ export interface EventListener {
31
+ event: string;
32
+ handler: (data: any) => void;
33
+ }
34
+ export declare class PluginManager {
35
+ private plugins;
36
+ private loadedPlugins;
37
+ register(plugin: Plugin): void;
38
+ unregister(name: string): void;
39
+ load(name: string, core: any): Promise<void>;
40
+ unload(name: string): Promise<void>;
41
+ get(name: string): Plugin | undefined;
42
+ getAll(): Plugin[];
43
+ getLoaded(): Plugin[];
44
+ isLoaded(name: string): boolean;
45
+ }
46
+ //# sourceMappingURL=PluginSystem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginSystem.d.ts","sourceRoot":"","sources":["../../src/plugin/PluginSystem.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,MAAM,CAAC,EAAE,MAAM,CAAA;IAGf,MAAM,CAAC,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,QAAQ,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAGjC,MAAM,CAAC,EAAE,eAAe,EAAE,CAAA;IAC1B,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAA;IAClC,WAAW,CAAC,EAAE,oBAAoB,EAAE,CAAA;IACpC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,GAAG,CAAA;IACf,MAAM,CAAC,EAAE,GAAG,CAAA;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAA;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAA;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAA;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,CAAA;CAC7B;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,aAAa,CAAoB;IAEzC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ9B,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKxB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAe5C,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQzC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIrC,MAAM,IAAI,MAAM,EAAE;IAIlB,SAAS,IAAI,MAAM,EAAE;IAMrB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;CAGhC"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ /**
3
+ * Plugin system - Core plugin interfaces and manager
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PluginManager = void 0;
7
+ class PluginManager {
8
+ constructor() {
9
+ this.plugins = new Map();
10
+ this.loadedPlugins = new Set();
11
+ }
12
+ register(plugin) {
13
+ if (this.plugins.has(plugin.name)) {
14
+ console.warn(`Plugin ${plugin.name} already registered`);
15
+ return;
16
+ }
17
+ this.plugins.set(plugin.name, plugin);
18
+ }
19
+ unregister(name) {
20
+ this.plugins.delete(name);
21
+ this.loadedPlugins.delete(name);
22
+ }
23
+ async load(name, core) {
24
+ const plugin = this.plugins.get(name);
25
+ if (!plugin) {
26
+ throw new Error(`Plugin ${name} not found`);
27
+ }
28
+ if (this.loadedPlugins.has(name)) {
29
+ console.warn(`Plugin ${name} already loaded`);
30
+ return;
31
+ }
32
+ await plugin.onLoad?.(core);
33
+ this.loadedPlugins.add(name);
34
+ }
35
+ async unload(name) {
36
+ const plugin = this.plugins.get(name);
37
+ if (!plugin)
38
+ return;
39
+ await plugin.onUnload?.();
40
+ this.loadedPlugins.delete(name);
41
+ }
42
+ get(name) {
43
+ return this.plugins.get(name);
44
+ }
45
+ getAll() {
46
+ return Array.from(this.plugins.values());
47
+ }
48
+ getLoaded() {
49
+ return Array.from(this.loadedPlugins)
50
+ .map(name => this.plugins.get(name))
51
+ .filter((p) => p !== undefined);
52
+ }
53
+ isLoaded(name) {
54
+ return this.loadedPlugins.has(name);
55
+ }
56
+ }
57
+ exports.PluginManager = PluginManager;
58
+ //# sourceMappingURL=PluginSystem.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PluginSystem.js","sourceRoot":"","sources":["../../src/plugin/PluginSystem.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAyCH,MAAa,aAAa;IAA1B;QACU,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;QACnC,kBAAa,GAAG,IAAI,GAAG,EAAU,CAAA;IAuD3C,CAAC;IArDC,QAAQ,CAAC,MAAc;QACrB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,UAAU,MAAM,CAAC,IAAI,qBAAqB,CAAC,CAAA;YACxD,OAAM;QACR,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,IAAS;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,YAAY,CAAC,CAAA;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,iBAAiB,CAAC,CAAA;YAC7C,OAAM;QACR,CAAC;QAED,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;QAC3B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,IAAI,CAAC,MAAM;YAAE,OAAM;QAEnB,MAAM,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAA;QACzB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACjC,CAAC;IAED,GAAG,CAAC,IAAY;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC/B,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;IAC1C,CAAC;IAED,SAAS;QACP,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;aAClC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aACnC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAA;IAChD,CAAC;IAED,QAAQ,CAAC,IAAY;QACnB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACrC,CAAC;CACF;AAzDD,sCAyDC"}
@@ -0,0 +1,2 @@
1
+ export * from './PluginSystem';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./PluginSystem"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * jotx 2.0 AST Types - Pure data structures
3
+ * Abstract Syntax Tree node types for parsed jotx documents
4
+ */
5
+ import { BlockType, DocumentType } from './enums';
6
+ export type TokenType = 'keyword' | 'identifier' | 'string' | 'enum' | 'number' | 'boolean' | 'operator' | 'newline' | 'indent' | 'eof';
7
+ export interface Token {
8
+ type: TokenType;
9
+ value: string;
10
+ line: number;
11
+ column: number;
12
+ indent?: number;
13
+ raw?: string;
14
+ }
15
+ /**
16
+ * Base block node - every block has this structure
17
+ * Properties bag contains all block-specific data
18
+ */
19
+ export interface BlockNode {
20
+ type: BlockType | 'item' | 'row' | 'cell' | 'prop';
21
+ id: string;
22
+ properties: Record<string, any>;
23
+ children?: BlockNode[];
24
+ line?: number;
25
+ }
26
+ /**
27
+ * Document metadata - flexible key-value pairs
28
+ */
29
+ export interface DocumentMetadata {
30
+ title?: string;
31
+ type?: string;
32
+ icon?: string;
33
+ created?: string;
34
+ modified?: string;
35
+ author?: string;
36
+ tags?: string[];
37
+ [key: string]: any;
38
+ }
39
+ /**
40
+ * Document root node
41
+ */
42
+ export interface DocumentNode {
43
+ type: DocumentType;
44
+ id: string;
45
+ metadata: DocumentMetadata;
46
+ blocks: BlockNode[];
47
+ }
48
+ /**
49
+ * Complete AST with validation results
50
+ */
51
+ export interface AST {
52
+ document: DocumentNode;
53
+ errors: ValidationError[];
54
+ }
55
+ export type ValidationSeverity = 'error' | 'warning';
56
+ export type ValidationErrorType = 'syntax_error' | 'duplicate_id' | 'invalid_enum' | 'missing_required' | 'invalid_type' | 'invalid_property' | 'invalid_block_type' | 'invalid_nesting' | 'invalid_block_schema' | 'invalid_document_type' | 'schema_violation' | 'invalid_metadata';
57
+ export interface ValidationError {
58
+ type: ValidationErrorType;
59
+ message: string;
60
+ severity: ValidationSeverity;
61
+ line?: number;
62
+ column?: number;
63
+ blockId?: string;
64
+ propertyName?: string;
65
+ }
66
+ export interface ValidationResult {
67
+ isValid: boolean;
68
+ errors: ValidationError[];
69
+ warnings: ValidationError[];
70
+ }
71
+ /**
72
+ * Property schema definition
73
+ */
74
+ export interface PropertySchema {
75
+ type: 'string' | 'enum' | 'number' | 'boolean';
76
+ required: boolean;
77
+ options?: string[];
78
+ default?: any;
79
+ description?: string;
80
+ }
81
+ /**
82
+ * Block property schemas map
83
+ */
84
+ export type BlockPropertySchemaMap = Record<string, PropertySchema>;
85
+ /**
86
+ * Property schemas for all 21 block types
87
+ * Defines what properties each block requires/accepts
88
+ */
89
+ export declare const BLOCK_PROPERTY_SCHEMAS: Record<BlockType, BlockPropertySchemaMap>;
90
+ /**
91
+ * Schema for list items
92
+ */
93
+ export declare const LIST_ITEM_SCHEMA: BlockPropertySchemaMap;
94
+ /**
95
+ * Schema for checklist items
96
+ */
97
+ export declare const CHECKLIST_ITEM_SCHEMA: BlockPropertySchemaMap;
98
+ /**
99
+ * Schema for properties props
100
+ */
101
+ export declare const PROPERTY_SCHEMA: BlockPropertySchemaMap;
102
+ /**
103
+ * Get property schema for a block type
104
+ */
105
+ export declare function getBlockPropertySchema(blockType: BlockType): BlockPropertySchemaMap | undefined;
106
+ /**
107
+ * Check if a property is required for a block type
108
+ */
109
+ export declare function isPropertyRequired(blockType: BlockType, propertyName: string): boolean;
110
+ /**
111
+ * Get default value for a property
112
+ */
113
+ export declare function getPropertyDefault(blockType: BlockType, propertyName: string): any;
114
+ /**
115
+ * Validate enum value
116
+ */
117
+ export declare function isValidEnumValue(blockType: BlockType, propertyName: string, value: string): boolean;
118
+ //# sourceMappingURL=ast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../src/types/ast.ts"],"names":[],"mappings":"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"}