@kroy665/code-editor-engine 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 (39) hide show
  1. package/README.md +127 -0
  2. package/dist/.tsbuildinfo +1 -0
  3. package/dist/__tests__/editor.spec.d.ts +2 -0
  4. package/dist/__tests__/editor.spec.d.ts.map +1 -0
  5. package/dist/__tests__/editor.spec.js +141 -0
  6. package/dist/__tests__/editor.spec.js.map +1 -0
  7. package/dist/core/CodeEditor.d.ts +70 -0
  8. package/dist/core/CodeEditor.d.ts.map +1 -0
  9. package/dist/core/CodeEditor.js +392 -0
  10. package/dist/core/CodeEditor.js.map +1 -0
  11. package/dist/core/CommandSystem.d.ts +158 -0
  12. package/dist/core/CommandSystem.d.ts.map +1 -0
  13. package/dist/core/CommandSystem.js +358 -0
  14. package/dist/core/CommandSystem.js.map +1 -0
  15. package/dist/core/EventSystem.d.ts +87 -0
  16. package/dist/core/EventSystem.d.ts.map +1 -0
  17. package/dist/core/EventSystem.js +330 -0
  18. package/dist/core/EventSystem.js.map +1 -0
  19. package/dist/core/TextDocument.d.ts +110 -0
  20. package/dist/core/TextDocument.d.ts.map +1 -0
  21. package/dist/core/TextDocument.js +340 -0
  22. package/dist/core/TextDocument.js.map +1 -0
  23. package/dist/index.d.ts +178 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +302 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/language/Extensions.d.ts +280 -0
  28. package/dist/language/Extensions.d.ts.map +1 -0
  29. package/dist/language/Extensions.js +368 -0
  30. package/dist/language/Extensions.js.map +1 -0
  31. package/dist/language/Tokenizer.d.ts +108 -0
  32. package/dist/language/Tokenizer.d.ts.map +1 -0
  33. package/dist/language/Tokenizer.js +630 -0
  34. package/dist/language/Tokenizer.js.map +1 -0
  35. package/dist/types/core.d.ts +355 -0
  36. package/dist/types/core.d.ts.map +1 -0
  37. package/dist/types/core.js +93 -0
  38. package/dist/types/core.js.map +1 -0
  39. package/package.json +82 -0
@@ -0,0 +1,630 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TokenizerLanguageService = exports.BuiltInLanguages = exports.Tokenizer = void 0;
4
+ const core_1 = require("../types/core");
5
+ /**
6
+ * Fast, incremental tokenizer
7
+ */
8
+ class Tokenizer {
9
+ constructor() {
10
+ this.languageDefinitions = new Map();
11
+ this.tokenCache = new Map();
12
+ this.stateStack = [];
13
+ }
14
+ /**
15
+ * Register a language definition
16
+ */
17
+ registerLanguage(definition) {
18
+ this.languageDefinitions.set(definition.languageId, definition);
19
+ // Clear cache for this language
20
+ this.clearCacheForLanguage(definition.languageId);
21
+ }
22
+ /**
23
+ * Get language definition
24
+ */
25
+ getLanguage(languageId) {
26
+ return this.languageDefinitions.get(languageId);
27
+ }
28
+ /**
29
+ * Tokenize a document
30
+ */
31
+ tokenize(document, range) {
32
+ const language = this.languageDefinitions.get(document.languageId);
33
+ if (!language) {
34
+ return this.tokenizeAsPlainText(document, range);
35
+ }
36
+ const cacheKey = this.getCacheKey(document, range);
37
+ const cached = this.tokenCache.get(cacheKey);
38
+ if (cached) {
39
+ return cached;
40
+ }
41
+ const tokens = this.tokenizeWithLanguage(document, language, range);
42
+ this.tokenCache.set(cacheKey, tokens);
43
+ return tokens;
44
+ }
45
+ /**
46
+ * Tokenize incrementally after a change
47
+ */
48
+ tokenizeIncremental(document, _previousTokens, _change) {
49
+ // For now, just re-tokenize the entire document
50
+ // In production, you'd implement smart incremental tokenization
51
+ this.clearCacheForDocument(document.uri);
52
+ return this.tokenize(document);
53
+ }
54
+ tokenizeWithLanguage(document, language, range) {
55
+ const tokens = [];
56
+ const text = range ? document.getText(range) : document.getText();
57
+ const startLine = range?.start.line || 0;
58
+ const startColumn = range?.start.column || 0;
59
+ let currentState = language.defaultState;
60
+ let line = startLine;
61
+ let column = startColumn;
62
+ const lines = text.split('\n');
63
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex++) {
64
+ const lineText = lines[lineIndex];
65
+ column = lineIndex === 0 ? startColumn : 0;
66
+ const lineTokens = this.tokenizeLine(lineText, language, currentState, line, column);
67
+ tokens.push(...lineTokens);
68
+ line++;
69
+ }
70
+ return tokens;
71
+ }
72
+ tokenizeLine(lineText, language, initialState, line, startColumn) {
73
+ const tokens = [];
74
+ let column = startColumn;
75
+ let index = 0;
76
+ let currentState = initialState;
77
+ while (index < lineText.length) {
78
+ let matched = false;
79
+ const remainingText = lineText.substring(index);
80
+ const currentRules = language.states[currentState] || [];
81
+ // Try each rule in the current state
82
+ for (const rule of currentRules) {
83
+ const match = rule.pattern.exec(remainingText);
84
+ if (match && match.index === 0) {
85
+ const matchText = match[0];
86
+ const tokenType = this.resolveTokenType(matchText, rule.type, language);
87
+ tokens.push({
88
+ type: tokenType,
89
+ range: {
90
+ start: { line, column },
91
+ end: { line, column: column + matchText.length },
92
+ },
93
+ text: matchText,
94
+ priority: rule.priority || 0,
95
+ scopes: rule.scopes || [tokenType],
96
+ modifiers: this.getTokenModifiers(matchText, tokenType, language),
97
+ });
98
+ // Handle state changes
99
+ if (rule.push) {
100
+ this.stateStack.push({
101
+ name: currentState,
102
+ line,
103
+ column,
104
+ index,
105
+ });
106
+ currentState = rule.push;
107
+ }
108
+ else if (rule.pop && this.stateStack.length > 0) {
109
+ const prevState = this.stateStack.pop();
110
+ currentState = prevState?.name || language.defaultState;
111
+ }
112
+ else if (rule.set) {
113
+ currentState = rule.set;
114
+ }
115
+ column += matchText.length;
116
+ index += matchText.length;
117
+ matched = true;
118
+ // Reset regex state
119
+ rule.pattern.lastIndex = 0;
120
+ break;
121
+ }
122
+ // Reset regex state
123
+ rule.pattern.lastIndex = 0;
124
+ }
125
+ if (!matched) {
126
+ // No rule matched, advance by one character
127
+ const char = lineText[index];
128
+ tokens.push({
129
+ type: core_1.TokenType.Text,
130
+ range: {
131
+ start: { line, column },
132
+ end: { line, column: column + 1 },
133
+ },
134
+ text: char,
135
+ priority: -1,
136
+ scopes: [core_1.TokenType.Text],
137
+ modifiers: [],
138
+ });
139
+ column++;
140
+ index++;
141
+ }
142
+ }
143
+ return tokens;
144
+ }
145
+ resolveTokenType(text, baseType, language) {
146
+ // Check if it's a keyword
147
+ if (baseType === core_1.TokenType.Identifier && language.keywords?.includes(text)) {
148
+ return core_1.TokenType.Keyword;
149
+ }
150
+ // Check if it's a builtin
151
+ if (baseType === core_1.TokenType.Identifier && language.builtins?.includes(text)) {
152
+ return core_1.TokenType.Function; // Or a new TokenType.Builtin
153
+ }
154
+ // Check if it's an operator
155
+ if (language.operators?.includes(text)) {
156
+ return core_1.TokenType.Operator;
157
+ }
158
+ return baseType;
159
+ }
160
+ getTokenModifiers(text, type, _language) {
161
+ const modifiers = [];
162
+ // Add common modifiers based on token characteristics
163
+ if (type === core_1.TokenType.Identifier) {
164
+ if (text[0] === text[0].toUpperCase()) {
165
+ modifiers.push('capitalized');
166
+ }
167
+ if (text.includes('_')) {
168
+ modifiers.push('snake_case');
169
+ }
170
+ if (/^[A-Z_]+$/.test(text)) {
171
+ modifiers.push('constant');
172
+ }
173
+ }
174
+ return modifiers;
175
+ }
176
+ tokenizeAsPlainText(document, range) {
177
+ const text = range ? document.getText(range) : document.getText();
178
+ const startLine = range?.start.line || 0;
179
+ const startColumn = range?.start.column || 0;
180
+ return [
181
+ {
182
+ type: core_1.TokenType.Text,
183
+ range: {
184
+ start: { line: startLine, column: startColumn },
185
+ end: { line: startLine, column: startColumn + text.length },
186
+ },
187
+ text,
188
+ priority: 0,
189
+ scopes: [core_1.TokenType.Text],
190
+ modifiers: [],
191
+ },
192
+ ];
193
+ }
194
+ getCacheKey(document, range) {
195
+ const rangeKey = range
196
+ ? `${range.start.line},${range.start.column}-${range.end.line},${range.end.column}`
197
+ : 'full';
198
+ return `${document.uri}:${document.version}:${rangeKey}`;
199
+ }
200
+ clearCacheForLanguage(_languageId) {
201
+ // In a real implementation, you'd associate cache keys with languages
202
+ // For now, just clear everything
203
+ this.tokenCache.clear();
204
+ }
205
+ clearCacheForDocument(uri) {
206
+ for (const [key, _] of this.tokenCache) {
207
+ if (key.startsWith(uri + ':')) {
208
+ this.tokenCache.delete(key);
209
+ }
210
+ }
211
+ }
212
+ }
213
+ exports.Tokenizer = Tokenizer;
214
+ /**
215
+ * Built-in language definitions
216
+ */
217
+ class BuiltInLanguages {
218
+ static javascript() {
219
+ return {
220
+ languageId: 'javascript',
221
+ name: 'JavaScript',
222
+ extensions: ['.js', '.mjs', '.jsx'],
223
+ defaultState: 'root',
224
+ keywords: [
225
+ 'break',
226
+ 'case',
227
+ 'catch',
228
+ 'class',
229
+ 'const',
230
+ 'continue',
231
+ 'debugger',
232
+ 'default',
233
+ 'delete',
234
+ 'do',
235
+ 'else',
236
+ 'export',
237
+ 'extends',
238
+ 'finally',
239
+ 'for',
240
+ 'function',
241
+ 'if',
242
+ 'import',
243
+ 'in',
244
+ 'instanceof',
245
+ 'let',
246
+ 'new',
247
+ 'return',
248
+ 'super',
249
+ 'switch',
250
+ 'this',
251
+ 'throw',
252
+ 'try',
253
+ 'typeof',
254
+ 'var',
255
+ 'void',
256
+ 'while',
257
+ 'with',
258
+ 'yield',
259
+ 'async',
260
+ 'await',
261
+ ],
262
+ builtins: [
263
+ 'console',
264
+ 'window',
265
+ 'document',
266
+ 'Array',
267
+ 'Object',
268
+ 'String',
269
+ 'Number',
270
+ 'Boolean',
271
+ 'Function',
272
+ 'RegExp',
273
+ 'Date',
274
+ 'Math',
275
+ 'JSON',
276
+ 'Promise',
277
+ 'Set',
278
+ 'Map',
279
+ 'WeakSet',
280
+ 'WeakMap',
281
+ ],
282
+ operators: [
283
+ '+',
284
+ '-',
285
+ '*',
286
+ '/',
287
+ '%',
288
+ '++',
289
+ '--',
290
+ '=',
291
+ '+=',
292
+ '-=',
293
+ '*=',
294
+ '/=',
295
+ '%=',
296
+ '==',
297
+ '!=',
298
+ '===',
299
+ '!==',
300
+ '<',
301
+ '>',
302
+ '<=',
303
+ '>=',
304
+ '&&',
305
+ '||',
306
+ '!',
307
+ '&',
308
+ '|',
309
+ '^',
310
+ '~',
311
+ '<<',
312
+ '>>',
313
+ '>>>',
314
+ '?',
315
+ ':',
316
+ '=>',
317
+ ],
318
+ states: {
319
+ root: [
320
+ // Comments
321
+ { pattern: /\/\/.*$/gm, type: core_1.TokenType.Comment },
322
+ { pattern: /\/\*/, type: core_1.TokenType.Comment, push: 'blockComment' },
323
+ // Strings
324
+ { pattern: /"([^"\\]|\\.)*"/g, type: core_1.TokenType.String },
325
+ { pattern: /'([^'\\]|\\.)*'/g, type: core_1.TokenType.String },
326
+ { pattern: /`/, type: core_1.TokenType.String, push: 'templateString' },
327
+ // Numbers
328
+ { pattern: /\b\d+\.?\d*([eE][+-]?\d+)?\b/g, type: core_1.TokenType.Number },
329
+ { pattern: /\b0[xX][0-9a-fA-F]+\b/g, type: core_1.TokenType.Number },
330
+ { pattern: /\b0[bB][01]+\b/g, type: core_1.TokenType.Number },
331
+ { pattern: /\b0[oO][0-7]+\b/g, type: core_1.TokenType.Number },
332
+ // Identifiers (will be checked against keywords/builtins)
333
+ { pattern: /[a-zA-Z_$][a-zA-Z0-9_$]*/g, type: core_1.TokenType.Identifier },
334
+ // Operators and punctuation
335
+ { pattern: /[+\-*/%=<>!&|^~?:]+/g, type: core_1.TokenType.Operator },
336
+ { pattern: /[{}()[\];,\.]/g, type: core_1.TokenType.Operator },
337
+ // Whitespace
338
+ { pattern: /\s+/g, type: core_1.TokenType.Text },
339
+ ],
340
+ blockComment: [
341
+ { pattern: /\*\//, type: core_1.TokenType.Comment, pop: true },
342
+ { pattern: /./, type: core_1.TokenType.Comment },
343
+ ],
344
+ templateString: [
345
+ { pattern: /`/, type: core_1.TokenType.String, pop: true },
346
+ { pattern: /\$\{/, type: core_1.TokenType.Operator, push: 'templateExpression' },
347
+ { pattern: /[^`$]+/, type: core_1.TokenType.String },
348
+ { pattern: /\$/, type: core_1.TokenType.String },
349
+ ],
350
+ templateExpression: [
351
+ { pattern: /\}/, type: core_1.TokenType.Operator, pop: true },
352
+ // Include root rules for expressions
353
+ { pattern: /[a-zA-Z_$][a-zA-Z0-9_$]*/, type: core_1.TokenType.Identifier },
354
+ { pattern: /[+\-*/%=<>!&|^~?:]+/, type: core_1.TokenType.Operator },
355
+ { pattern: /\d+/, type: core_1.TokenType.Number },
356
+ { pattern: /\s+/, type: core_1.TokenType.Text },
357
+ ],
358
+ },
359
+ brackets: [
360
+ { open: '(', close: ')', type: 'round' },
361
+ { open: '[', close: ']', type: 'square' },
362
+ { open: '{', close: '}', type: 'curly' },
363
+ { open: '<', close: '>', type: 'angle' },
364
+ ],
365
+ comments: {
366
+ line: '//',
367
+ block: { start: '/*', end: '*/' },
368
+ },
369
+ strings: [
370
+ { delimiter: '"', escape: '\\' },
371
+ { delimiter: "'", escape: '\\' },
372
+ { delimiter: '`', escape: '\\', multiline: true },
373
+ ],
374
+ };
375
+ }
376
+ static typescript() {
377
+ const jsDefinition = this.javascript();
378
+ return {
379
+ ...jsDefinition,
380
+ languageId: 'typescript',
381
+ name: 'TypeScript',
382
+ extensions: ['.ts', '.tsx'],
383
+ keywords: [
384
+ ...jsDefinition.keywords,
385
+ 'interface',
386
+ 'type',
387
+ 'namespace',
388
+ 'module',
389
+ 'declare',
390
+ 'abstract',
391
+ 'implements',
392
+ 'private',
393
+ 'protected',
394
+ 'public',
395
+ 'readonly',
396
+ 'static',
397
+ 'as',
398
+ 'is',
399
+ 'keyof',
400
+ 'unique',
401
+ 'infer',
402
+ 'never',
403
+ 'unknown',
404
+ 'any',
405
+ ],
406
+ };
407
+ }
408
+ static python() {
409
+ return {
410
+ languageId: 'python',
411
+ name: 'Python',
412
+ extensions: ['.py', '.pyw', '.pyi'],
413
+ defaultState: 'root',
414
+ keywords: [
415
+ 'False',
416
+ 'None',
417
+ 'True',
418
+ 'and',
419
+ 'as',
420
+ 'assert',
421
+ 'async',
422
+ 'await',
423
+ 'break',
424
+ 'class',
425
+ 'continue',
426
+ 'def',
427
+ 'del',
428
+ 'elif',
429
+ 'else',
430
+ 'except',
431
+ 'finally',
432
+ 'for',
433
+ 'from',
434
+ 'global',
435
+ 'if',
436
+ 'import',
437
+ 'in',
438
+ 'is',
439
+ 'lambda',
440
+ 'nonlocal',
441
+ 'not',
442
+ 'or',
443
+ 'pass',
444
+ 'raise',
445
+ 'return',
446
+ 'try',
447
+ 'while',
448
+ 'with',
449
+ 'yield',
450
+ ],
451
+ builtins: [
452
+ 'abs',
453
+ 'all',
454
+ 'any',
455
+ 'bin',
456
+ 'bool',
457
+ 'bytes',
458
+ 'callable',
459
+ 'chr',
460
+ 'classmethod',
461
+ 'compile',
462
+ 'complex',
463
+ 'delattr',
464
+ 'dict',
465
+ 'dir',
466
+ 'divmod',
467
+ 'enumerate',
468
+ 'eval',
469
+ 'exec',
470
+ 'filter',
471
+ 'float',
472
+ 'format',
473
+ 'frozenset',
474
+ 'getattr',
475
+ 'globals',
476
+ 'hasattr',
477
+ 'hash',
478
+ 'help',
479
+ 'hex',
480
+ 'id',
481
+ 'input',
482
+ 'int',
483
+ 'isinstance',
484
+ 'issubclass',
485
+ 'iter',
486
+ 'len',
487
+ 'list',
488
+ 'locals',
489
+ 'map',
490
+ 'max',
491
+ 'memoryview',
492
+ 'min',
493
+ 'next',
494
+ 'object',
495
+ 'oct',
496
+ 'open',
497
+ 'ord',
498
+ 'pow',
499
+ 'print',
500
+ 'property',
501
+ 'range',
502
+ 'repr',
503
+ 'reversed',
504
+ 'round',
505
+ 'set',
506
+ 'setattr',
507
+ 'slice',
508
+ 'sorted',
509
+ 'staticmethod',
510
+ 'str',
511
+ 'sum',
512
+ 'super',
513
+ 'tuple',
514
+ 'type',
515
+ 'vars',
516
+ 'zip',
517
+ ],
518
+ operators: [
519
+ '+',
520
+ '-',
521
+ '*',
522
+ '/',
523
+ '//',
524
+ '%',
525
+ '**',
526
+ '=',
527
+ '+=',
528
+ '-=',
529
+ '*=',
530
+ '/=',
531
+ '//=',
532
+ '%=',
533
+ '**=',
534
+ '==',
535
+ '!=',
536
+ '<',
537
+ '>',
538
+ '<=',
539
+ '>=',
540
+ 'and',
541
+ 'or',
542
+ 'not',
543
+ '&',
544
+ '|',
545
+ '^',
546
+ '~',
547
+ '<<',
548
+ '>>',
549
+ '&=',
550
+ '|=',
551
+ '^=',
552
+ '<<=',
553
+ '>>=',
554
+ 'is',
555
+ 'is not',
556
+ 'in',
557
+ 'not in',
558
+ ],
559
+ states: {
560
+ root: [
561
+ // Comments
562
+ { pattern: /#.*$/gm, type: core_1.TokenType.Comment },
563
+ // Strings
564
+ { pattern: /"""/, type: core_1.TokenType.String, push: 'tripleDoubleString' },
565
+ { pattern: /'''/, type: core_1.TokenType.String, push: 'tripleSingleString' },
566
+ { pattern: /"([^"\\]|\\.)*"/g, type: core_1.TokenType.String },
567
+ { pattern: /'([^'\\]|\\.)*'/g, type: core_1.TokenType.String },
568
+ { pattern: /r"[^"]*"/g, type: core_1.TokenType.String },
569
+ { pattern: /r'[^']*'/g, type: core_1.TokenType.String },
570
+ // Numbers
571
+ { pattern: /\b\d+\.?\d*([eE][+-]?\d+)?[jJ]?\b/g, type: core_1.TokenType.Number },
572
+ { pattern: /\b0[xX][0-9a-fA-F]+\b/g, type: core_1.TokenType.Number },
573
+ { pattern: /\b0[bB][01]+\b/g, type: core_1.TokenType.Number },
574
+ { pattern: /\b0[oO][0-7]+\b/g, type: core_1.TokenType.Number },
575
+ // Identifiers
576
+ { pattern: /[a-zA-Z_][a-zA-Z0-9_]*/g, type: core_1.TokenType.Identifier },
577
+ // Operators and punctuation
578
+ { pattern: /[+\-*/%=<>!&|^~]+/g, type: core_1.TokenType.Operator },
579
+ { pattern: /[{}()[\];,\.]/g, type: core_1.TokenType.Operator },
580
+ // Whitespace
581
+ { pattern: /\s+/g, type: core_1.TokenType.Text },
582
+ ],
583
+ tripleDoubleString: [
584
+ { pattern: /"""/, type: core_1.TokenType.String, pop: true },
585
+ { pattern: /./, type: core_1.TokenType.String },
586
+ ],
587
+ tripleSingleString: [
588
+ { pattern: /'''/, type: core_1.TokenType.String, pop: true },
589
+ { pattern: /./, type: core_1.TokenType.String },
590
+ ],
591
+ },
592
+ brackets: [
593
+ { open: '(', close: ')', type: 'round' },
594
+ { open: '[', close: ']', type: 'square' },
595
+ { open: '{', close: '}', type: 'curly' },
596
+ ],
597
+ comments: {
598
+ line: '#',
599
+ },
600
+ strings: [
601
+ { delimiter: '"', escape: '\\' },
602
+ { delimiter: "'", escape: '\\' },
603
+ { delimiter: '"""', escape: '\\', multiline: true },
604
+ { delimiter: "'''", escape: '\\', multiline: true },
605
+ ],
606
+ };
607
+ }
608
+ }
609
+ exports.BuiltInLanguages = BuiltInLanguages;
610
+ /**
611
+ * Language service that provides tokenization
612
+ */
613
+ class TokenizerLanguageService {
614
+ constructor(languageId) {
615
+ this.languageId = languageId;
616
+ this.tokenizer = new Tokenizer();
617
+ // Register built-in languages
618
+ this.tokenizer.registerLanguage(BuiltInLanguages.javascript());
619
+ this.tokenizer.registerLanguage(BuiltInLanguages.typescript());
620
+ this.tokenizer.registerLanguage(BuiltInLanguages.python());
621
+ }
622
+ async tokenize(document, range) {
623
+ return this.tokenizer.tokenize(document, range);
624
+ }
625
+ registerLanguage(definition) {
626
+ this.tokenizer.registerLanguage(definition);
627
+ }
628
+ }
629
+ exports.TokenizerLanguageService = TokenizerLanguageService;
630
+ //# sourceMappingURL=Tokenizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Tokenizer.js","sourceRoot":"","sources":["../../src/language/Tokenizer.ts"],"names":[],"mappings":"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"}