skir-internal 0.0.1

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 (132) hide show
  1. package/README.md +2 -0
  2. package/dist/casing.d.ts +8 -0
  3. package/dist/casing.d.ts.map +1 -0
  4. package/dist/casing.js +43 -0
  5. package/dist/casing.js.map +1 -0
  6. package/dist/casing.test.d.ts.map +1 -0
  7. package/dist/casing.test.js +136 -0
  8. package/dist/casing.test.js.map +1 -0
  9. package/dist/command_line_parser.d.ts +33 -0
  10. package/dist/command_line_parser.d.ts.map +1 -0
  11. package/dist/command_line_parser.js +168 -0
  12. package/dist/command_line_parser.js.map +1 -0
  13. package/dist/command_line_parser.test.d.ts +2 -0
  14. package/dist/command_line_parser.test.d.ts.map +1 -0
  15. package/dist/command_line_parser.test.js +297 -0
  16. package/dist/command_line_parser.test.js.map +1 -0
  17. package/dist/compatibility_checker.d.ts +74 -0
  18. package/dist/compatibility_checker.d.ts.map +1 -0
  19. package/dist/compatibility_checker.js +341 -0
  20. package/dist/compatibility_checker.js.map +1 -0
  21. package/dist/compatibility_checker.test.d.ts +2 -0
  22. package/dist/compatibility_checker.test.d.ts.map +1 -0
  23. package/dist/compatibility_checker.test.js +582 -0
  24. package/dist/compatibility_checker.test.js.map +1 -0
  25. package/dist/compiler.d.ts.map +1 -0
  26. package/dist/compiler.js +375 -0
  27. package/dist/compiler.js.map +1 -0
  28. package/dist/config.d.ts +47 -0
  29. package/dist/config.d.ts.map +1 -0
  30. package/dist/config.js +23 -0
  31. package/dist/config.js.map +1 -0
  32. package/dist/definition_finder.d.ts +12 -0
  33. package/dist/definition_finder.d.ts.map +1 -0
  34. package/dist/definition_finder.js +180 -0
  35. package/dist/definition_finder.js.map +1 -0
  36. package/dist/definition_finder.test.d.ts +2 -0
  37. package/dist/definition_finder.test.d.ts.map +1 -0
  38. package/dist/definition_finder.test.js +164 -0
  39. package/dist/definition_finder.test.js.map +1 -0
  40. package/dist/doc_comment_parser.d.ts +3 -0
  41. package/dist/doc_comment_parser.d.ts.map +1 -0
  42. package/dist/doc_comment_parser.js +219 -0
  43. package/dist/doc_comment_parser.js.map +1 -0
  44. package/dist/doc_comment_parser.test.d.ts +2 -0
  45. package/dist/doc_comment_parser.test.d.ts.map +1 -0
  46. package/dist/doc_comment_parser.test.js +494 -0
  47. package/dist/doc_comment_parser.test.js.map +1 -0
  48. package/dist/encoding.d.ts +2 -0
  49. package/dist/encoding.d.ts.map +1 -0
  50. package/dist/encoding.js +38 -0
  51. package/dist/encoding.js.map +1 -0
  52. package/dist/encoding.test.d.ts +2 -0
  53. package/dist/encoding.test.d.ts.map +1 -0
  54. package/dist/encoding.test.js +23 -0
  55. package/dist/encoding.test.js.map +1 -0
  56. package/dist/error_renderer.d.ts +10 -0
  57. package/dist/error_renderer.d.ts.map +1 -0
  58. package/dist/error_renderer.js +266 -0
  59. package/dist/error_renderer.js.map +1 -0
  60. package/dist/formatter.d.ts +16 -0
  61. package/dist/formatter.d.ts.map +1 -0
  62. package/dist/formatter.js +220 -0
  63. package/dist/formatter.js.map +1 -0
  64. package/dist/formatter.test.d.ts +2 -0
  65. package/dist/formatter.test.d.ts.map +1 -0
  66. package/dist/formatter.test.js +390 -0
  67. package/dist/formatter.test.js.map +1 -0
  68. package/dist/formatter2.d.ts +3 -0
  69. package/dist/formatter2.d.ts.map +1 -0
  70. package/dist/formatter2.js +67 -0
  71. package/dist/formatter2.js.map +1 -0
  72. package/dist/index.d.ts +6 -0
  73. package/dist/index.d.ts.map +1 -0
  74. package/dist/index.js +5 -0
  75. package/dist/index.js.map +1 -0
  76. package/dist/index.test.d.ts.map +1 -0
  77. package/dist/index.test.js +14 -0
  78. package/dist/index.test.js.map +1 -0
  79. package/dist/io.d.ts.map +1 -0
  80. package/dist/io.js +22 -0
  81. package/dist/io.js.map +1 -0
  82. package/dist/language_server.d.ts +15 -0
  83. package/dist/language_server.d.ts.map +1 -0
  84. package/dist/language_server.js +248 -0
  85. package/dist/language_server.js.map +1 -0
  86. package/dist/literals.d.ts +13 -0
  87. package/dist/literals.d.ts.map +1 -0
  88. package/dist/literals.js +100 -0
  89. package/dist/literals.js.map +1 -0
  90. package/dist/literals.test.d.ts.map +1 -0
  91. package/dist/literals.test.js +149 -0
  92. package/dist/literals.test.js.map +1 -0
  93. package/dist/module_collector.d.ts +3 -0
  94. package/dist/module_collector.d.ts.map +1 -0
  95. package/dist/module_collector.js +22 -0
  96. package/dist/module_collector.js.map +1 -0
  97. package/dist/module_set.d.ts +40 -0
  98. package/dist/module_set.d.ts.map +1 -0
  99. package/dist/module_set.js +1178 -0
  100. package/dist/module_set.js.map +1 -0
  101. package/dist/module_set.test.d.ts.map +1 -0
  102. package/dist/module_set.test.js +1897 -0
  103. package/dist/module_set.test.js.map +1 -0
  104. package/dist/parser.d.ts +7 -0
  105. package/dist/parser.d.ts.map +1 -0
  106. package/dist/parser.js +1075 -0
  107. package/dist/parser.js.map +1 -0
  108. package/dist/parser.test.d.ts.map +1 -0
  109. package/dist/parser.test.js +1594 -0
  110. package/dist/parser.test.js.map +1 -0
  111. package/dist/project_initializer.d.ts +2 -0
  112. package/dist/project_initializer.d.ts.map +1 -0
  113. package/dist/project_initializer.js +30 -0
  114. package/dist/project_initializer.js.map +1 -0
  115. package/dist/snapshotter.d.ts +9 -0
  116. package/dist/snapshotter.d.ts.map +1 -0
  117. package/dist/snapshotter.js +144 -0
  118. package/dist/snapshotter.js.map +1 -0
  119. package/dist/tokenizer.d.ts +10 -0
  120. package/dist/tokenizer.d.ts.map +1 -0
  121. package/dist/tokenizer.js +198 -0
  122. package/dist/tokenizer.js.map +1 -0
  123. package/dist/tokenizer.test.d.ts.map +1 -0
  124. package/dist/tokenizer.test.js +441 -0
  125. package/dist/tokenizer.test.js.map +1 -0
  126. package/dist/types.d.ts +439 -0
  127. package/dist/types.d.ts.map +1 -0
  128. package/dist/types.js +2 -0
  129. package/dist/types.js.map +1 -0
  130. package/package.json +58 -0
  131. package/src/casing.ts +53 -0
  132. package/src/types.ts +585 -0
@@ -0,0 +1,494 @@
1
+ import { expect } from "buckwheat";
2
+ import { describe, it } from "mocha";
3
+ import { parseDocComments } from "./doc_comment_parser.js";
4
+ function makeToken(text, position = 0) {
5
+ const line = {
6
+ lineNumber: 0,
7
+ line: text,
8
+ position: 0,
9
+ modulePath: "test",
10
+ };
11
+ return {
12
+ text,
13
+ originalText: text,
14
+ position,
15
+ line,
16
+ colNumber: 0,
17
+ };
18
+ }
19
+ describe("doc_comment_parser", () => {
20
+ it("parses simple text", () => {
21
+ const tokens = [makeToken("/// Hello, world!")];
22
+ const result = parseDocComments(tokens);
23
+ expect(result).toMatch({
24
+ errors: [],
25
+ result: {
26
+ pieces: [{ kind: "text", text: "Hello, world!" }],
27
+ },
28
+ });
29
+ });
30
+ it("skips exactly one space after ///", () => {
31
+ const tokens = [
32
+ makeToken("/// Hello"),
33
+ makeToken("/// Two spaces"),
34
+ makeToken("///No space"),
35
+ ];
36
+ const result = parseDocComments(tokens);
37
+ expect(result).toMatch({
38
+ errors: [],
39
+ result: {
40
+ pieces: [{ kind: "text", text: "Hello\n Two spaces\nNo space" }],
41
+ },
42
+ });
43
+ });
44
+ it("parses multiple lines as single text fragment", () => {
45
+ const tokens = [
46
+ makeToken("/// Hello,"),
47
+ makeToken("/// world!"),
48
+ makeToken("/// How are you?"),
49
+ ];
50
+ const result = parseDocComments(tokens);
51
+ expect(result).toMatch({
52
+ errors: [],
53
+ result: {
54
+ pieces: [{ kind: "text", text: "Hello,\nworld!\nHow are you?" }],
55
+ },
56
+ });
57
+ });
58
+ it("parses simple reference", () => {
59
+ const tokens = [makeToken("/// See [.foo.Bar] for details")];
60
+ const result = parseDocComments(tokens);
61
+ expect(result).toMatch({
62
+ errors: [],
63
+ result: {
64
+ pieces: [
65
+ { kind: "text", text: "See " },
66
+ {
67
+ kind: "reference",
68
+ nameChain: [{ text: "foo" }, { text: "Bar" }],
69
+ absolute: true,
70
+ },
71
+ { kind: "text", text: " for details" },
72
+ ],
73
+ },
74
+ });
75
+ });
76
+ it("parses reference without leading dot", () => {
77
+ const tokens = [makeToken("/// See [Foo] for details")];
78
+ const result = parseDocComments(tokens);
79
+ expect(result).toMatch({
80
+ errors: [],
81
+ result: {
82
+ pieces: [
83
+ {},
84
+ {
85
+ kind: "reference",
86
+ nameChain: [{ text: "Foo" }],
87
+ absolute: false,
88
+ },
89
+ {},
90
+ ],
91
+ },
92
+ });
93
+ });
94
+ it("rejects reference with whitespace", () => {
95
+ const tokens = [makeToken("/// See [ .foo ] for details")];
96
+ const result = parseDocComments(tokens);
97
+ expect(result).toMatch({
98
+ errors: [
99
+ {
100
+ token: {
101
+ text: "[ .foo ]",
102
+ },
103
+ message: "Invalid character in reference at column 10",
104
+ },
105
+ ],
106
+ });
107
+ });
108
+ it("parses escaped brackets", () => {
109
+ const tokens = [makeToken("/// Hello [[world]]!")];
110
+ const result = parseDocComments(tokens);
111
+ expect(result).toMatch({
112
+ errors: [],
113
+ result: {
114
+ pieces: [{ kind: "text", text: "Hello [world]!" }],
115
+ },
116
+ });
117
+ });
118
+ it("handles unmatched closing bracket", () => {
119
+ const tokens = [makeToken("/// Hello ] world")];
120
+ const result = parseDocComments(tokens);
121
+ expect(result).toMatch({
122
+ errors: [],
123
+ result: {
124
+ pieces: [{ kind: "text", text: "Hello ] world" }],
125
+ },
126
+ });
127
+ });
128
+ it("parses multiple references and text fragments", () => {
129
+ const tokens = [
130
+ makeToken("/// Hello,"),
131
+ makeToken("/// world [.foo.Bar], how are"),
132
+ makeToken("/// you?"),
133
+ ];
134
+ const result = parseDocComments(tokens);
135
+ expect(result).toMatch({
136
+ errors: [],
137
+ result: {
138
+ pieces: [
139
+ { kind: "text", text: "Hello,\nworld " },
140
+ { kind: "reference" },
141
+ { kind: "text", text: ", how are\nyou?" },
142
+ ],
143
+ },
144
+ });
145
+ });
146
+ it("reports error for empty reference", () => {
147
+ const tokens = [makeToken("/// See [] for details")];
148
+ const result = parseDocComments(tokens);
149
+ expect(result).toMatch({
150
+ result: {},
151
+ errors: [
152
+ {
153
+ token: {
154
+ text: "]",
155
+ },
156
+ expected: "identifier or '.'",
157
+ },
158
+ ],
159
+ });
160
+ });
161
+ it("reports error for unterminated reference", () => {
162
+ const tokens = [makeToken("/// See [.foo.Bar")];
163
+ const result = parseDocComments(tokens);
164
+ expect(result).toMatch({
165
+ result: {
166
+ pieces: [
167
+ { kind: "text", text: "See " },
168
+ { kind: "reference", nameChain: [], absolute: true },
169
+ ],
170
+ },
171
+ errors: [{ message: "Unterminated reference" }],
172
+ });
173
+ });
174
+ it("reports error for invalid character in reference", () => {
175
+ const tokens = [makeToken("/// See [foo@bar] for details")];
176
+ const result = parseDocComments(tokens);
177
+ expect(result).toMatch({
178
+ errors: [
179
+ {
180
+ token: {
181
+ text: "[foo@bar]",
182
+ },
183
+ message: "Invalid character in reference at column 13",
184
+ },
185
+ ],
186
+ });
187
+ });
188
+ it("rejects digit at start of word in reference", () => {
189
+ const tokens = [makeToken("/// See [.foo.9Bar] for details")];
190
+ const result = parseDocComments(tokens);
191
+ expect(result).toMatch({
192
+ errors: [
193
+ {
194
+ token: {
195
+ text: "[.foo.9Bar]",
196
+ },
197
+ message: "Invalid character in reference at column 15",
198
+ },
199
+ ],
200
+ });
201
+ });
202
+ it("allows underscore and digits in word after first letter", () => {
203
+ const tokens = [makeToken("/// See [Foo_Bar_123] for details")];
204
+ const result = parseDocComments(tokens);
205
+ expect(result).toMatch({
206
+ errors: [],
207
+ result: {
208
+ pieces: [
209
+ {},
210
+ {
211
+ kind: "reference",
212
+ nameChain: [{ text: "Foo_Bar_123" }],
213
+ absolute: false,
214
+ },
215
+ {},
216
+ ],
217
+ },
218
+ });
219
+ });
220
+ it("handles mixed escaped brackets and references", () => {
221
+ const tokens = [
222
+ makeToken("/// [[Not a reference]] but [RealReference] is"),
223
+ ];
224
+ const result = parseDocComments(tokens);
225
+ expect(result).toMatch({
226
+ errors: [],
227
+ result: {
228
+ pieces: [
229
+ { kind: "text", text: "[Not a reference] but " },
230
+ { kind: "reference" },
231
+ { kind: "text", text: " is" },
232
+ ],
233
+ },
234
+ });
235
+ });
236
+ it("handles empty doc comments", () => {
237
+ const tokens = [];
238
+ const result = parseDocComments(tokens);
239
+ expect(result).toMatch({
240
+ errors: [],
241
+ result: {
242
+ pieces: [],
243
+ },
244
+ });
245
+ });
246
+ it("handles only whitespace after ///", () => {
247
+ const tokens = [makeToken("///"), makeToken("/// ")];
248
+ const result = parseDocComments(tokens);
249
+ expect(result).toMatch({
250
+ errors: [],
251
+ result: {
252
+ pieces: [{ kind: "text", text: "\n " }],
253
+ },
254
+ });
255
+ });
256
+ it("continues parsing after error", () => {
257
+ const tokens = [
258
+ makeToken("/// Invalid [@ but"),
259
+ makeToken("/// valid [Link] here"),
260
+ ];
261
+ const result = parseDocComments(tokens);
262
+ expect(result).toMatch({
263
+ errors: [
264
+ {
265
+ token: {
266
+ text: "[@ but",
267
+ position: 12,
268
+ },
269
+ message: "Unterminated reference",
270
+ },
271
+ {
272
+ token: {
273
+ text: "[@ but",
274
+ },
275
+ message: "Invalid character in reference at column 14",
276
+ },
277
+ ],
278
+ });
279
+ });
280
+ it("handles reference at start of comment", () => {
281
+ const tokens = [makeToken("///[Reference] at start")];
282
+ const result = parseDocComments(tokens);
283
+ expect(result).toMatch({
284
+ errors: [],
285
+ result: {
286
+ pieces: [{ kind: "reference" }, { kind: "text", text: " at start" }],
287
+ },
288
+ });
289
+ });
290
+ it("handles reference at end of comment", () => {
291
+ const tokens = [makeToken("/// End with [Reference]")];
292
+ const result = parseDocComments(tokens);
293
+ expect(result).toMatch({
294
+ errors: [],
295
+ result: {
296
+ pieces: [{ kind: "text", text: "End with " }, { kind: "reference" }],
297
+ },
298
+ });
299
+ });
300
+ it("handles reference at end of line followed by text on next line", () => {
301
+ const tokens = [
302
+ makeToken("/// End with [Reference]"),
303
+ makeToken("/// and continue text"),
304
+ ];
305
+ const result = parseDocComments(tokens);
306
+ expect(result).toMatch({
307
+ errors: [],
308
+ result: {
309
+ pieces: [
310
+ { kind: "text", text: "End with " },
311
+ {
312
+ kind: "reference",
313
+ nameChain: [{ text: "Reference" }],
314
+ absolute: false,
315
+ },
316
+ { kind: "text", text: "\nand continue text" },
317
+ ],
318
+ },
319
+ });
320
+ });
321
+ it("handles consecutive references", () => {
322
+ const tokens = [makeToken("/// [Ref1][Ref2][Ref3]")];
323
+ const result = parseDocComments(tokens);
324
+ expect(result).toMatch({
325
+ errors: [],
326
+ result: {
327
+ pieces: [
328
+ { kind: "reference" },
329
+ { kind: "reference" },
330
+ { kind: "reference" },
331
+ ],
332
+ },
333
+ });
334
+ });
335
+ it("preserves correct token positions with space after ///", () => {
336
+ const tokens = [makeToken("/// [Foo]", 100)];
337
+ const result = parseDocComments(tokens);
338
+ // Position should be 100 (start) + 3 (///) + 1 (space) + 1 (opening bracket) = 105
339
+ expect(result).toMatch({
340
+ errors: [],
341
+ result: {
342
+ pieces: [
343
+ {
344
+ kind: "reference",
345
+ nameChain: [{ text: "Foo", position: 105 }],
346
+ absolute: false,
347
+ },
348
+ ],
349
+ },
350
+ });
351
+ });
352
+ it("preserves correct token positions without space after ///", () => {
353
+ const tokens = [makeToken("///[Foo]", 100)];
354
+ const result = parseDocComments(tokens);
355
+ // Position should be 100 (start) + 3 (///) + 1 (opening bracket) = 104
356
+ expect(result).toMatch({
357
+ errors: [],
358
+ result: {
359
+ pieces: [
360
+ {
361
+ kind: "reference",
362
+ nameChain: [{ text: "Foo", position: 104 }],
363
+ absolute: false,
364
+ },
365
+ ],
366
+ },
367
+ });
368
+ });
369
+ it("preserves correct error positions with space after ///", () => {
370
+ const tokens = [makeToken("/// [@invalid]", 100)];
371
+ const result = parseDocComments(tokens);
372
+ // Error should be at position 100 + 3 (///) + 1 (space) = 104
373
+ expect(result).toMatch({
374
+ errors: [
375
+ {
376
+ token: {
377
+ text: "[@invalid]",
378
+ position: 104,
379
+ },
380
+ },
381
+ ],
382
+ });
383
+ });
384
+ it("preserves correct error positions without space after ///", () => {
385
+ const tokens = [makeToken("///[@invalid]", 100)];
386
+ const result = parseDocComments(tokens);
387
+ // Error should be at position 100 + 3 (///) = 103
388
+ expect(result).toMatch({
389
+ errors: [
390
+ {
391
+ token: {
392
+ text: "[@invalid]",
393
+ position: 103,
394
+ },
395
+ },
396
+ ],
397
+ });
398
+ });
399
+ it("parses multiple references on different lines", () => {
400
+ const tokens = [
401
+ makeToken("/// See [Ref1] and"),
402
+ makeToken("/// also [Ref2] here"),
403
+ ];
404
+ const result = parseDocComments(tokens);
405
+ expect(result).toMatch({
406
+ errors: [],
407
+ result: {
408
+ pieces: [
409
+ { kind: "text", text: "See " },
410
+ {
411
+ kind: "reference",
412
+ nameChain: [{ text: "Ref1" }],
413
+ absolute: false,
414
+ },
415
+ { kind: "text", text: " and\nalso " },
416
+ {
417
+ kind: "reference",
418
+ nameChain: [{ text: "Ref2" }],
419
+ absolute: false,
420
+ },
421
+ { kind: "text", text: " here" },
422
+ ],
423
+ },
424
+ });
425
+ });
426
+ it("reports error for unterminated reference at end of line", () => {
427
+ const tokens = [makeToken("/// See [.foo.Bar")];
428
+ const result = parseDocComments(tokens);
429
+ expect(result).toMatch({
430
+ result: {},
431
+ errors: [{ message: "Unterminated reference" }],
432
+ });
433
+ });
434
+ it("sets docComment field in reference", () => {
435
+ const tokens = [makeToken("/// See [Foo] here")];
436
+ const result = parseDocComments(tokens);
437
+ expect(result).toMatch({
438
+ errors: [],
439
+ result: {
440
+ pieces: [
441
+ {},
442
+ {
443
+ kind: "reference",
444
+ docComment: tokens[0],
445
+ },
446
+ {},
447
+ ],
448
+ },
449
+ });
450
+ });
451
+ it("sets referenceRange field to include brackets", () => {
452
+ const tokens = [makeToken("/// See [.foo.Bar] here", 100)];
453
+ const result = parseDocComments(tokens);
454
+ // Position: 100 (start) + 4 (/// ) + 4 (See ) = 108
455
+ expect(result).toMatch({
456
+ errors: [],
457
+ result: {
458
+ pieces: [
459
+ {},
460
+ {
461
+ kind: "reference",
462
+ referenceRange: {
463
+ text: "[.foo.Bar]",
464
+ originalText: "[.foo.Bar]",
465
+ position: 108,
466
+ colNumber: 108,
467
+ },
468
+ },
469
+ {},
470
+ ],
471
+ },
472
+ });
473
+ });
474
+ it("referenceRange works without space after ///", () => {
475
+ const tokens = [makeToken("///[Foo]", 50)];
476
+ const result = parseDocComments(tokens);
477
+ // Position: 50 (start) + 3 (///) = 53
478
+ expect(result).toMatch({
479
+ errors: [],
480
+ result: {
481
+ pieces: [
482
+ {
483
+ kind: "reference",
484
+ referenceRange: {
485
+ text: "[Foo]",
486
+ position: 53,
487
+ },
488
+ },
489
+ ],
490
+ },
491
+ });
492
+ });
493
+ });
494
+ //# sourceMappingURL=doc_comment_parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doc_comment_parser.test.js","sourceRoot":"","sources":["../src/doc_comment_parser.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function encodeInt32(i: number): Uint8Array;
2
+ //# sourceMappingURL=encoding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.d.ts","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,UAAU,CA+BjD"}
@@ -0,0 +1,38 @@
1
+ export function encodeInt32(i) {
2
+ const buffer = new ArrayBuffer(5);
3
+ const dataView = new DataView(buffer);
4
+ let n;
5
+ if (i < 0) {
6
+ if (i >= -256) {
7
+ dataView.setUint8(0, 235);
8
+ dataView.setUint8(1, i + 256);
9
+ n = 2;
10
+ }
11
+ else if (i >= -65536) {
12
+ dataView.setUint8(0, 236);
13
+ dataView.setUint16(1, i + 65536, true);
14
+ n = 3;
15
+ }
16
+ else {
17
+ dataView.setUint8(0, 237);
18
+ dataView.setInt32(1, i, true);
19
+ n = 5;
20
+ }
21
+ }
22
+ else if (i < 232) {
23
+ dataView.setUint8(0, i);
24
+ n = 1;
25
+ }
26
+ else if (i < 65536) {
27
+ dataView.setUint8(0, 232);
28
+ dataView.setUint16(1, i, true);
29
+ n = 3;
30
+ }
31
+ else {
32
+ dataView.setUint8(0, 233);
33
+ dataView.setInt32(1, i, true);
34
+ n = 5;
35
+ }
36
+ return new Uint8Array(buffer, 0, n);
37
+ }
38
+ //# sourceMappingURL=encoding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.js","sourceRoot":"","sources":["../src/encoding.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,WAAW,CAAC,CAAS;IACnC,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAS,CAAC;IACd,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACV,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YACd,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC;YAC9B,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;YACvB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1B,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;YACvC,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YAC1B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC,GAAG,CAAC,CAAC;QACR,CAAC;IACH,CAAC;SAAM,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QACnB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACxB,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;SAAM,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;QACrB,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1B,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;SAAM,CAAC;QACN,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAC1B,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC9B,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;IACD,OAAO,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=encoding.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.test.d.ts","sourceRoot":"","sources":["../src/encoding.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { expect } from "buckwheat";
2
+ import { describe, it } from "mocha";
3
+ import { encodeInt32 } from "./encoding.js";
4
+ function toHexString(a) {
5
+ return [...a].map((x) => x.toString(16).padStart(2, "0")).join("");
6
+ }
7
+ describe("encoding", () => {
8
+ it("encodeInt32 works", () => {
9
+ expect(toHexString(encodeInt32(4))).toMatch("04");
10
+ expect(toHexString(encodeInt32(231))).toMatch("e7");
11
+ expect(toHexString(encodeInt32(232))).toMatch("e8e800");
12
+ expect(toHexString(encodeInt32(65535))).toMatch("e8ffff");
13
+ expect(toHexString(encodeInt32(65536))).toMatch("e900000100");
14
+ expect(toHexString(encodeInt32(2147483647))).toMatch("e9ffffff7f");
15
+ expect(toHexString(encodeInt32(-255))).toMatch("eb01");
16
+ expect(toHexString(encodeInt32(-256))).toMatch("eb00");
17
+ expect(toHexString(encodeInt32(-257))).toMatch("ecfffe");
18
+ expect(toHexString(encodeInt32(-65536))).toMatch("ec0000");
19
+ expect(toHexString(encodeInt32(-65537))).toMatch("edfffffeff");
20
+ expect(toHexString(encodeInt32(-2147483648))).toMatch("ed00000080");
21
+ });
22
+ });
23
+ //# sourceMappingURL=encoding.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"encoding.test.js","sourceRoot":"","sources":["../src/encoding.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,SAAS,WAAW,CAAC,CAAa;IAChC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACrE,CAAC;AAED,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC3B,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC9D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC3D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { BeforeAfter, BreakingChange } from "./compatibility_checker.js";
2
+ import { ModuleSet } from "./module_set.js";
3
+ import { SkirError } from "./types.js";
4
+ export declare function renderErrors(errors: readonly SkirError[]): void;
5
+ export declare function formatError(error: SkirError): string;
6
+ export declare function renderBreakingChanges(breakingChanges: readonly BreakingChange[], moduleSet: BeforeAfter<ModuleSet>): void;
7
+ export declare function makeRed(text: string): string;
8
+ export declare function makeGreen(text: string): string;
9
+ export declare function makeGray(text: string): string;
10
+ //# sourceMappingURL=error_renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error_renderer.d.ts","sourceRoot":"","sources":["../src/error_renderer.ts"],"names":[],"mappings":"AACA,OAAO,EACL,WAAW,EACX,cAAc,EAGf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAgC,SAAS,EAAS,MAAM,YAAY,CAAC;AAE5E,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAgB/D;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAuBpD;AAED,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,SAAS,cAAc,EAAE,EAC1C,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAChC,IAAI,CAYN;AA8MD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C"}