astn 0.110.5 → 0.110.8

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 (61) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +414 -0
  3. package/dist/bin/validate_astn.d.ts +2 -0
  4. package/dist/bin/validate_astn.js +48 -0
  5. package/dist/index.d.ts +7 -4
  6. package/dist/index.js +9 -9
  7. package/dist/lib/create_error_message.d.ts +3 -3
  8. package/dist/lib/create_error_message.js +1 -1
  9. package/dist/lib/format.d.ts +18 -38
  10. package/dist/lib/format.js +1 -1
  11. package/dist/lib/parse.d.ts +16 -42
  12. package/dist/lib/parse.js +19 -19
  13. package/dist/lib/transformations/create_error_message.d.ts +5 -0
  14. package/dist/lib/transformations/create_error_message.js +75 -0
  15. package/dist/lib/transformations/format.d.ts +42 -0
  16. package/dist/lib/transformations/format.js +172 -0
  17. package/dist/lib/transformations/parse.d.ts +11 -0
  18. package/dist/lib/transformations/parse.js +253 -0
  19. package/dist/lib/transformations/parse_generic.d.ts +44 -0
  20. package/dist/lib/transformations/parse_generic.js +644 -0
  21. package/dist/lib/types/ast.d.ts +123 -0
  22. package/dist/lib/types/ast.js +3 -0
  23. package/dist/lib/types/ide.d.ts +21 -0
  24. package/dist/lib/types/ide.js +3 -0
  25. package/dist/lib/types/parse_result.d.ts +30 -0
  26. package/dist/lib/types/parse_result.js +3 -0
  27. package/dist/lib/types/tokenize_result.d.ts +14 -0
  28. package/dist/lib/types/tokenize_result.js +3 -0
  29. package/documentation/railroad_diagram/diagram/apostrophed_string.png +0 -0
  30. package/documentation/railroad_diagram/diagram/astn_document.png +0 -0
  31. package/documentation/railroad_diagram/diagram/backticked_string.png +0 -0
  32. package/documentation/railroad_diagram/diagram/comment.png +0 -0
  33. package/documentation/railroad_diagram/diagram/concise_group.png +0 -0
  34. package/documentation/railroad_diagram/diagram/content.png +0 -0
  35. package/documentation/railroad_diagram/diagram/dictionary.png +0 -0
  36. package/documentation/railroad_diagram/diagram/elements.png +0 -0
  37. package/documentation/railroad_diagram/diagram/escaped_character.png +0 -0
  38. package/documentation/railroad_diagram/diagram/four_hexadecimal_digits.png +0 -0
  39. package/documentation/railroad_diagram/diagram/header.png +0 -0
  40. package/documentation/railroad_diagram/diagram/hexadecimal_digit.png +0 -0
  41. package/documentation/railroad_diagram/diagram/ignorable.png +0 -0
  42. package/documentation/railroad_diagram/diagram/include.png +0 -0
  43. package/documentation/railroad_diagram/diagram/key_value_pairs.png +0 -0
  44. package/documentation/railroad_diagram/diagram/line_comment.png +0 -0
  45. package/documentation/railroad_diagram/diagram/list.png +0 -0
  46. package/documentation/railroad_diagram/diagram/newline_character.png +0 -0
  47. package/documentation/railroad_diagram/diagram/normal_character.png +0 -0
  48. package/documentation/railroad_diagram/diagram/normal_or_newline_character.png +0 -0
  49. package/documentation/railroad_diagram/diagram/quoted_string.png +0 -0
  50. package/documentation/railroad_diagram/diagram/rr-2.5.png +0 -0
  51. package/documentation/railroad_diagram/diagram/set_optional_value.png +0 -0
  52. package/documentation/railroad_diagram/diagram/string.png +0 -0
  53. package/documentation/railroad_diagram/diagram/string_content_character.png +0 -0
  54. package/documentation/railroad_diagram/diagram/tagged_value.png +0 -0
  55. package/documentation/railroad_diagram/diagram/traditional_comment.png +0 -0
  56. package/documentation/railroad_diagram/diagram/undelimited_string.png +0 -0
  57. package/documentation/railroad_diagram/diagram/value.png +0 -0
  58. package/documentation/railroad_diagram/diagram/verbose_group.png +0 -0
  59. package/documentation/railroad_diagram/diagram/whitespace.png +0 -0
  60. package/documentation/railroad_diagram/index.md +425 -0
  61. package/package.json +59 -3
package/LICENSE ADDED
@@ -0,0 +1,17 @@
1
+ Apache License
2
+ Version 2.0, January 2004
3
+ http://www.apache.org/licenses/
4
+
5
+ Copyright (c) 2025 Corno
6
+
7
+ Licensed under the Apache License, Version 2.0 (the "License");
8
+ you may not use this file except in compliance with the License.
9
+ You may obtain a copy of the License at
10
+
11
+ http://www.apache.org/licenses/LICENSE-2.0
12
+
13
+ Unless required by applicable law or agreed to in writing, software
14
+ distributed under the License is distributed on an "AS IS" BASIS,
15
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ See the License for the specific language governing permissions and
17
+ limitations under the License.
package/README.md ADDED
@@ -0,0 +1,414 @@
1
+ # ASTN (Abstract Syntax Tree Notation)
2
+
3
+ A TypeScript library for parsing and formatting ASTN documents (Abstract Syntax Tree Notation) - a human-editable data format designed for structured content.
4
+
5
+ **ASTN is a superset of JSON** - any valid JSON document is also valid ASTN, but ASTN provides a number additional features for enhanced readability and functionality.
6
+
7
+ ## Features of the ASTN specification
8
+
9
+ - 📋 **Multiple string types** - Support for quoted, backticked, apostrophed, and undelimited strings
10
+ - 💬 **Comments** - Line and block comment support
11
+ - 🏗️ **Rich data structures** - dictionaries, lists, groups, tagged values, include, set, not set
12
+ - 📄 **Document headers** - Optional header metadata for documents
13
+ - 🔗 **File inclusion** - Import other ASTN files with `@` syntax
14
+ - ✨ **Flexible punctuation** - Commas are optional, trailing commas are allowed
15
+
16
+ ## Features of this tool
17
+
18
+ - 🚀 **Fast parsing** - Efficient lexer and parser implementation
19
+ - 📝 **Format validation** - Comprehensive error reporting with location information
20
+ - 🎨 **Code formatting** - Built-in formatter for consistent code style
21
+
22
+ ## Installation
23
+
24
+ ```bash
25
+ npm install astn
26
+ ```
27
+
28
+ ## Quick Start
29
+
30
+ ### Parsing ASTN
31
+
32
+ ```typescript
33
+ import { Parser } from 'astn';
34
+
35
+ const source = `
36
+ ! header "example"
37
+ {
38
+ \`name\`: "John Doe"
39
+ \`age\`: | 'number' "30"
40
+ \`hobbies\`: [
41
+ "reading"
42
+ "coding"
43
+ ]
44
+ }
45
+ `;
46
+
47
+ const result = Parser.parse(source, { 'tab size': 4 });
48
+
49
+ if (result[0] === 'success') {
50
+ console.log('Parsed successfully:', result[1]);
51
+ } else {
52
+ console.error('Parse error:', result[1]);
53
+ }
54
+ ```
55
+
56
+ ### Formatting ASTN
57
+
58
+ ```typescript
59
+ import * as format from 'astn/format';
60
+ import * as types from 'astn';
61
+
62
+ // Format a parsed document
63
+ const edits = format.Document(document, {
64
+ 'remove commas': false,
65
+ 'indentation string': ' ',
66
+ 'current indentation': ''
67
+ });
68
+ ```
69
+
70
+ ### Error Handling
71
+
72
+ ```typescript
73
+ import * as create_error_message from 'astn/create_error_message';
74
+
75
+ const result = Parser.parse(invalidSource, { 'tab size': 4 });
76
+
77
+ if (result[0] === 'failure') {
78
+ const errorMessage = create_error_message.Parse_Error(result[1], {
79
+ 'position info': ['one based', null]
80
+ });
81
+ console.error('Parse Error:', errorMessage);
82
+ }
83
+ ```
84
+
85
+ ## ASTN Syntax Overview
86
+
87
+ ASTN supports various data types and structures:
88
+
89
+ ### JSON Compatibility
90
+
91
+ Since ASTN is a superset of JSON, any valid JSON works as-is:
92
+
93
+ ```json
94
+ {
95
+ "name": "John Doe",
96
+ "age": 30,
97
+ "hobbies": ["reading", "coding"],
98
+ "active": true,
99
+ "metadata": null
100
+ }
101
+ ```
102
+
103
+ But ASTN extends JSON with additional features for better readability and functionality.
104
+
105
+ ### JSON vs ASTN Comparison
106
+
107
+ Here's the same data structure in JSON vs ASTN, showing ASTN's enhanced features:
108
+
109
+ <table>
110
+ <tr>
111
+ <th>JSON</th>
112
+ <th>ASTN</th>
113
+ </tr>
114
+ <tr>
115
+ <td>
116
+
117
+ ```json
118
+ {
119
+ "config": {
120
+ "name": "MyApp",
121
+ "version": "1.2.3",
122
+ "enabled": true,
123
+ "created": "2025-07-21T10:30:00Z",
124
+ "tags": ["web", "typescript"],
125
+ "databases": {
126
+ "local": {
127
+ "host": "localhost",
128
+ "port": 5432,
129
+ "ssl": null
130
+ },
131
+ "remote": {
132
+ "host": "localhost",
133
+ "port": 1234,
134
+ "ssl": null
135
+ },
136
+ }
137
+ }
138
+ }
139
+ ```
140
+
141
+ </td>
142
+ <td>
143
+
144
+ ```astn
145
+ ! "Application Configuration"
146
+ (
147
+ 'config': {
148
+ 'name': "MyApp"
149
+ 'version': "1.2.3"
150
+ 'enabled': true
151
+ 'created': 2025-07-21 // undelimited date
152
+ 'tags': ["web", "typescript"]
153
+ 'databases': (
154
+ `local`: {
155
+ 'host': "localhost"
156
+ 'port': | 'number' "5432" // tagged value
157
+ 'ssl': ~ // not set
158
+ },
159
+ `remote": <"localhost" 'number' 1234 ~>
160
+ )
161
+ }
162
+ )
163
+ ```
164
+
165
+ </td>
166
+ </tr>
167
+ </table>
168
+
169
+ **ASTN advantages shown above:**
170
+ - 📄 **Headers** - `! header "..."` for document metadata
171
+ - 💬 **Comments** - `//` and `/* */` supported throughout
172
+ - 🏷️ **Tagged values** - `| 'number' "5432"` for type information
173
+ - ✨ **Flexible literals** - `2025-07-21` without quotes
174
+ - 🚫 **Explicit "not set"** - `~` instead of `null`
175
+ - **Instance keys** - `` `key` `` for data identifiers
176
+ - ✨ **Optional commas** - cleaner syntax without mandatory commas
177
+
178
+ ### Schema vs Instance Data Distinction
179
+
180
+ One of ASTN's key improvements over JSON is the clear distinction between **schema keys** (fixed structure) and **instance keys** (dynamic data):
181
+
182
+ **JSON Problem:** In JSON, it's difficult to distinguish between:
183
+ ```json
184
+ {
185
+ "config": { // Is this a schema key or instance data?
186
+ "host": "localhost" // Are these fixed fields or dynamic entries?
187
+ }
188
+ }
189
+ ```
190
+
191
+ **ASTN Solution:** Uses different structures for different purposes:
192
+
193
+ ```astn
194
+ // Verbose Group - for schema/structure ( () and apostrophe keys)
195
+ ('config': (
196
+ 'host': "localhost" // Fixed schema fields
197
+ 'port': 5432
198
+ ))
199
+
200
+ // Dictionary - for instance/dynamic data ( {} and backtick keys)
201
+ {
202
+ `user_123`: "John" // Dynamic user IDs
203
+ `user_456`: "Jane" // Runtime-determined keys
204
+ }
205
+ ```
206
+
207
+ This makes the data's intent much clearer to both humans and tools!
208
+
209
+ ### Lists vs Concise Groups Distinction
210
+
211
+ ASTN also distinguishes between **lists** (ordered instance data) and **groups** (ordered schema data):
212
+
213
+ **JSON Problem:** Arrays in JSON are ambiguous about their purpose:
214
+ ```json
215
+ {
216
+ "coordinates": [10, 20, 30], // Is this a list or structured data?
217
+ "users": ["John", "Jane"] // Dynamic list or fixed schema fields?
218
+ }
219
+ ```
220
+
221
+ **ASTN Solution:** Four different structures for different purposes:
222
+
223
+ ```astn
224
+ // 1. List - for dynamic/instance data (square brackets)
225
+ {
226
+ `users`: [ // Dynamic list of users
227
+ "John"
228
+ "Jane"
229
+ "Bob" // Can add/remove items
230
+ ]
231
+ }
232
+
233
+ // 2. Dictionary - for key-value instance data (curly braces + backticks)
234
+ {
235
+ `user_data`: {
236
+ `user_123`: "John" // Dynamic user IDs as keys
237
+ `user_456`: "Jane" // Runtime-determined keys
238
+ `user_789`: "Bob"
239
+ }
240
+ }
241
+
242
+ // 3. Concise Group - for schema/structure (angle brackets)
243
+ {
244
+ `coordinates`: <10 20 30> // Fixed x, y, z coordinates
245
+ `rgb_color`: <255 128 0> // Fixed red, green, blue values
246
+ }
247
+
248
+ // 4. Verbose Group - explicit schema names (parentheses)
249
+ {
250
+ `coordinates`: (
251
+ 'x': 10
252
+ 'y': 20
253
+ 'z': 30
254
+ )
255
+ }
256
+ ```
257
+
258
+ **Example: Same data in concise vs verbose groups:**
259
+ ```astn
260
+ // Concise - implicit positional names
261
+ `person`: <"John" 30 "Engineer">
262
+
263
+ // Verbose - explicit schema names (equivalent to above)
264
+ `person`: (
265
+ 'name': "John"
266
+ 'age': 30
267
+ 'job': "Engineer"
268
+ )
269
+ ```
270
+ schema-aware tooling can create support to toggle between these 2 representations
271
+
272
+ **Concise vs Verbose Groups:** These are interchangeable - concise groups are just verbose groups with implicit position-based schema names (first, second, third, etc.).
273
+
274
+ ### Document Structure
275
+ ```astn
276
+ // Optional header
277
+ ! header "Document metadata or title"
278
+
279
+ // Main document content
280
+ {
281
+ "content": "value"
282
+ }
283
+ ```
284
+
285
+ ### Basic Values
286
+ ```astn
287
+ "quoted string" // Can contain newlines and escape sequences
288
+ 'apostrophed string' // Used for schema/meta names (keys, state names)
289
+ `backticked string` // Used for identifiers
290
+ undelimited_string // Flexible literals (dates, numbers, booleans, etc.)
291
+ ```
292
+
293
+ **String Type Usage:**
294
+ - **Quoted strings** (`"..."`) - General purpose strings that support newlines and escape sequences like `\n`, `\t`, `\"`, etc.
295
+ - **Apostrophed strings** (`'...'`) - Specifically for schema and metadata names such as verbose group keys and tagged value state names
296
+ - **Backticked strings** (`` `...` ``) - Used for identifiers and instance data such as dictionary keys
297
+ - **Undelimited strings** - More flexible than JSON primitives; can represent:
298
+ - Booleans: `true`, `false`
299
+ - Numbers: `42`, `3.14`, `-123`
300
+ - Dates: `2025-07-21`, `2025-07-21T10:30:00Z`
301
+ - Custom literals: `null`, `undefined`, or domain-specific values
302
+
303
+ ### Collections
304
+ ```astn
305
+ // Dictionary (commas optional, trailing commas allowed)
306
+ {
307
+ `key`: "value" // backtick for instance data key
308
+ `number`: | 'number' "42" // backtick for key, apostrophe for state name
309
+ `description`: "Multi-line
310
+ strings are supported
311
+ in quoted strings"
312
+ `date`: 2025-07-21 // undelimited date
313
+ `enabled`: true // undelimited boolean
314
+ }
315
+
316
+ // List with flexible comma usage
317
+ [
318
+ "item1"
319
+ 'schema_name' // apostrophe for schema identifier
320
+ `instance_id` // backtick for instance identifier
321
+ 2025-07-21 // undelimited date
322
+ 42 // undelimited number
323
+ ]
324
+
325
+ // Concise Group
326
+ <"item1" 'meta_name' `instance_id`>
327
+
328
+ // Verbose Group (apostrophes for schema keys)
329
+ ('schema_key': "value1" 'another_key': "value2")
330
+ ```
331
+
332
+ ### Special Values
333
+ ```astn
334
+ // Tagged values (apostrophe for state names)
335
+ | 'number' "42"
336
+ | 'date' 2025-07-21
337
+ | 'boolean' true
338
+ | 'custom_type' "some value"
339
+
340
+ // Optional values
341
+ * "optional value"
342
+ * 2025-12-31 // undelimited date as optional
343
+
344
+ // Not set
345
+ ~
346
+
347
+ // File inclusion
348
+ @ "path/to/config.astn"
349
+ @ "../shared/constants.astn"
350
+ ```
351
+
352
+ ### Comments
353
+ ```astn
354
+ // Line comment
355
+ /* Block comment */
356
+ {
357
+ "key": "value" // Trailing comment
358
+ }
359
+ ```
360
+
361
+ ## VS Code Extension
362
+
363
+ For the best development experience with ASTN files, install the **ASTN** VS Code extension:
364
+
365
+ - **Extension ID**: `astn`
366
+ - **Features**: Syntax highlighting, error detection, and formatting support
367
+ - **Installation**: Search for "astn" in the VS Code Extensions marketplace
368
+
369
+ The extension provides:
370
+ - 🎨 Syntax highlighting for `.astn` files
371
+ - 🔍 Real-time error detection and validation
372
+ - 📝 IntelliSense and autocompletion
373
+ - 🔧 Integrated formatting support
374
+
375
+ ## CLI Usage
376
+
377
+ Validate ASTN files:
378
+
379
+ ```bash
380
+ npx astn-validate < input.astn
381
+ ```
382
+
383
+ ## API Reference
384
+
385
+ ### Types
386
+
387
+ - `Document` - Root document structure
388
+ - `Value` - Any ASTN value
389
+ - `StringX` - String with type information
390
+ - `Parse_Error` - Detailed error information
391
+ - `Location` - Position information in source
392
+
393
+ ### Functions
394
+
395
+ - `Parser.parse(source, options)` - Parse ASTN source
396
+ - `format.Document(doc, options)` - Format a document
397
+ - `create_error_message.Parse_Error(error, options)` - Create human-readable error messages
398
+
399
+ ## Documentation
400
+
401
+ - [Railroad Diagrams](./documentation/railroad_diagram/index.md)
402
+ - [EBNF Grammar](./extra/astn.ebnf)
403
+
404
+ ## Contributing
405
+
406
+ Contributions are welcome! Please feel free to submit a Pull Request.
407
+
408
+ ## License
409
+
410
+ Apache 2.0 License - see LICENSE file for details.
411
+
412
+ ## Version
413
+
414
+ Current version: 0.110.5
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -0,0 +1,48 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const _er = __importStar(require("exupery-core-resources"));
28
+ const _ea = __importStar(require("exupery-core-alg"));
29
+ const parse = __importStar(require("../lib/transformations/parse"));
30
+ const create_error_message = __importStar(require("../lib/transformations/create_error_message"));
31
+ _er.temp_resources.process["get instream data"](($) => {
32
+ _ea.cc(parse.Parse_Result($, {
33
+ 'tab size': 4,
34
+ }), ($) => {
35
+ switch ($[0]) {
36
+ case 'failure': return _ea.ss($, ($) => {
37
+ _er.temp_resources.console.error(`Parse Error: ${create_error_message.Parse_Error($, { 'position info': ['one based', null] })}`);
38
+ // process.exit(1)
39
+ });
40
+ case 'success': return _ea.ss($, ($) => {
41
+ _er.temp_resources.console.log(`document is valid ASTN`);
42
+ // process.exit(0)
43
+ });
44
+ default: return _ea.au($[0]);
45
+ }
46
+ });
47
+ });
48
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGVfYXN0bi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9iaW4vdmFsaWRhdGVfYXN0bi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLDREQUE2QztBQUM3QyxzREFBdUM7QUFFdkMsb0VBQXFEO0FBQ3JELGtHQUFtRjtBQUduRixHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsR0FBRyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUNyQixDQUFDLEVBQ0Q7UUFDSSxVQUFVLEVBQUUsQ0FBQztLQUNoQixDQUNKLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNMLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDWCxLQUFLLFNBQVMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDbkMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixvQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLEVBQUUsZUFBZSxFQUFFLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUE7Z0JBQ2pJLGtCQUFrQjtZQUN0QixDQUFDLENBQUMsQ0FBQTtZQUNGLEtBQUssU0FBUyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNuQyxHQUFHLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtnQkFDeEQsa0JBQWtCO1lBQ3RCLENBQUMsQ0FBQyxDQUFBO1lBQ0YsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQyxDQUFBIn0=
package/dist/index.d.ts CHANGED
@@ -1,4 +1,7 @@
1
- export * from "./lib/types";
2
- export * from "./lib/parse";
3
- export * as format from "./lib/format";
4
- export * as create_error_message from "./lib/create_error_message";
1
+ export * as d_ast from "./lib/types/ast";
2
+ export * as d_ide from "./lib/types/ide";
3
+ export * as d_parse_result from "./lib/types/parse_result";
4
+ export * as d_tokenize_result from "./lib/types/tokenize_result";
5
+ export * as t_parse from "./lib/transformations/parse";
6
+ export * as t_format from "./lib/transformations/format";
7
+ export * as t_create_error_message from "./lib/transformations/create_error_message";
package/dist/index.js CHANGED
@@ -15,9 +15,6 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
15
15
  }) : function(o, v) {
16
16
  o["default"] = v;
17
17
  });
18
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
- };
21
18
  var __importStar = (this && this.__importStar) || function (mod) {
22
19
  if (mod && mod.__esModule) return mod;
23
20
  var result = {};
@@ -26,9 +23,12 @@ var __importStar = (this && this.__importStar) || function (mod) {
26
23
  return result;
27
24
  };
28
25
  Object.defineProperty(exports, "__esModule", { value: true });
29
- exports.create_error_message = exports.format = void 0;
30
- __exportStar(require("./lib/types"), exports);
31
- __exportStar(require("./lib/parse"), exports);
32
- exports.format = __importStar(require("./lib/format"));
33
- exports.create_error_message = __importStar(require("./lib/create_error_message"));
34
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBMkI7QUFDM0IsOENBQTJCO0FBQzNCLHVEQUFzQztBQUN0QyxtRkFBa0UifQ==
26
+ exports.t_create_error_message = exports.t_format = exports.t_parse = exports.d_tokenize_result = exports.d_parse_result = exports.d_ide = exports.d_ast = void 0;
27
+ exports.d_ast = __importStar(require("./lib/types/ast"));
28
+ exports.d_ide = __importStar(require("./lib/types/ide"));
29
+ exports.d_parse_result = __importStar(require("./lib/types/parse_result"));
30
+ exports.d_tokenize_result = __importStar(require("./lib/types/tokenize_result"));
31
+ exports.t_parse = __importStar(require("./lib/transformations/parse"));
32
+ exports.t_format = __importStar(require("./lib/transformations/format"));
33
+ exports.t_create_error_message = __importStar(require("./lib/transformations/create_error_message"));
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBd0M7QUFDeEMseURBQXdDO0FBQ3hDLDJFQUEwRDtBQUMxRCxpRkFBZ0U7QUFFaEUsdUVBQXNEO0FBQ3RELHlFQUF3RDtBQUN4RCxxR0FBb0YifQ==
@@ -1,5 +1,5 @@
1
- import * as parse from "./parse";
2
- export declare const Parse_Error_Type: ($: parse.Parse_Error_Type) => string;
3
- export declare const Parse_Error: ($: parse.Parse_Error, $p: {
1
+ import * as parse_result from "./types/parse_result";
2
+ export declare const Parse_Error_Type: ($: parse_result.Parse_Error_Type) => string;
3
+ export declare const Parse_Error: ($: parse_result.Parse_Error, $p: {
4
4
  "position info": ["zero based", null] | ["one based", null];
5
5
  }) => string;
@@ -72,4 +72,4 @@ const Parse_Error = ($, $p) => {
72
72
  return `failed to parse ASTN, ${(0, exports.Parse_Error_Type)($.type)} @ ${$.range.start.relative.line + extra}:${$.range.start.relative.column + extra}`;
73
73
  };
74
74
  exports.Parse_Error = Parse_Error;
75
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2Vycm9yX21lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NyZWF0ZV9lcnJvcl9tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQXVDO0FBSXZDLGdFQUFpRDtBQUUxQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBeUIsRUFBVSxFQUFFO0lBQ2xFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNuQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1gsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNsRCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNYLEtBQUssOEJBQThCLENBQUMsQ0FBQyxPQUFPLG9DQUFvQyxDQUFBO29CQUNoRixLQUFLLDRDQUE0QyxDQUFDLENBQUMsT0FBTyxrREFBa0QsQ0FBQTtvQkFDNUcsS0FBSyxnQ0FBZ0MsQ0FBQyxDQUFDLE9BQU8sc0NBQXNDLENBQUE7b0JBQ3BGLEtBQUssc0JBQXNCLENBQUMsQ0FBQyxPQUFPLDRCQUE0QixDQUFBO29CQUNoRSxLQUFLLHFCQUFxQixDQUFDLENBQUMsT0FBTywyQkFBMkIsQ0FBQTtvQkFDOUQsS0FBSyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sa0NBQWtDLENBQUE7b0JBQzVFLEtBQUssc0NBQXNDLENBQUMsQ0FBQyxPQUFPLDRDQUE0QyxDQUFBO29CQUNoRyxLQUFLLGlDQUFpQyxDQUFDLENBQUMsT0FBTyx1Q0FBdUMsQ0FBQTtvQkFDdEYsS0FBSywwQkFBMEIsQ0FBQyxDQUFDLE9BQU8sZ0NBQWdDLENBQUE7b0JBQ3hFLEtBQUsseUJBQXlCLENBQUMsQ0FBQyxPQUFPLCtCQUErQixDQUFBO29CQUN0RSxLQUFLLGdCQUFnQixDQUFDLENBQUMsT0FBTyxzQkFBc0IsQ0FBQTtvQkFDcEQsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNILEtBQUssUUFBUSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsWUFBWSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLENBQUMsV0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtnQkFDekssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDWCxLQUFLLGtCQUFrQixDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUM1QyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7b0JBQ3JCLENBQUMsQ0FBQyxDQUFBO29CQUNGLEtBQUssZUFBZSxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO3dCQUN6QyxPQUFPLFNBQVMsQ0FBQTtvQkFDcEIsQ0FBQyxDQUFDLENBQUE7b0JBQ0YsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO2dCQUNoQyxDQUFDO1lBQ0wsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFBO1lBQ0wsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQWpDWSxRQUFBLGdCQUFnQixvQkFpQzVCO0FBRU0sTUFBTSxXQUFXLEdBQUcsQ0FDdkIsQ0FBb0IsRUFDcEIsRUFJQyxFQUNLLEVBQUU7SUFDUixNQUFNLEtBQUssR0FBVyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ3BELFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDWCxLQUFLLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQzNCLEtBQUssV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUE7WUFDMUIsT0FBTyxDQUFDLENBQUMsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2hDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQTtJQUNGLE9BQU8seUJBQXlCLElBQUEsd0JBQWdCLEVBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUcsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsS0FBSyxFQUFFLENBQUE7QUFDaEosQ0FBQyxDQUFDO0FBaEJXLFFBQUEsV0FBVyxlQWdCdEIifQ==
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlX2Vycm9yX21lc3NhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NyZWF0ZV9lcnJvcl9tZXNzYWdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsc0RBQXVDO0FBSXZDLGdFQUFpRDtBQUUxQyxNQUFNLGdCQUFnQixHQUFHLENBQUMsQ0FBZ0MsRUFBVSxFQUFFO0lBQ3pFLE9BQU8sR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNuQixRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ1gsS0FBSyxPQUFPLENBQUMsQ0FBQyxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUNsRCxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNYLEtBQUssOEJBQThCLENBQUMsQ0FBQyxPQUFPLG9DQUFvQyxDQUFBO29CQUNoRixLQUFLLDRDQUE0QyxDQUFDLENBQUMsT0FBTyxrREFBa0QsQ0FBQTtvQkFDNUcsS0FBSyxnQ0FBZ0MsQ0FBQyxDQUFDLE9BQU8sc0NBQXNDLENBQUE7b0JBQ3BGLEtBQUssc0JBQXNCLENBQUMsQ0FBQyxPQUFPLDRCQUE0QixDQUFBO29CQUNoRSxLQUFLLHFCQUFxQixDQUFDLENBQUMsT0FBTywyQkFBMkIsQ0FBQTtvQkFDOUQsS0FBSyw0QkFBNEIsQ0FBQyxDQUFDLE9BQU8sa0NBQWtDLENBQUE7b0JBQzVFLEtBQUssc0NBQXNDLENBQUMsQ0FBQyxPQUFPLDRDQUE0QyxDQUFBO29CQUNoRyxLQUFLLGlDQUFpQyxDQUFDLENBQUMsT0FBTyx1Q0FBdUMsQ0FBQTtvQkFDdEYsS0FBSywwQkFBMEIsQ0FB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
@@ -1,62 +1,42 @@
1
- import * as _et from 'exupery-core-types';
2
- import * as types from "./types";
3
- export type Range = types.Range;
4
- export type Text_Edit = [
5
- 'insert',
6
- {
7
- 'location': types.Relative_Location;
8
- 'text': string;
9
- }
10
- ] | [
11
- 'replace',
12
- {
13
- 'range': Range;
14
- 'text': string;
15
- }
16
- ] | [
17
- 'delete',
18
- {
19
- 'range': Range;
20
- }
21
- ];
22
- export type Text_Edits = _et.Array<Text_Edit>;
23
- export declare const Whitespace: ($: types.Whitespace, $p: {
1
+ import * as ast from "./types/ast";
2
+ import * as ide from "./types/ide";
3
+ export declare const Whitespace: ($: ast.Whitespace, $p: {
24
4
  "remove commas": boolean;
25
5
  "indentation string": string;
26
6
  "current indentation": string;
27
- }) => Text_Edits;
28
- export declare const Trivia: ($: types.Trivia, $p: {
7
+ }) => ide.Text_Edits;
8
+ export declare const Trivia: ($: ast.Trivia, $p: {
29
9
  "remove commas": boolean;
30
10
  "indentation string": string;
31
11
  "current indentation": string;
32
- }) => Text_Edits;
33
- export declare const Structural_Token: ($: types.Structural_Token, $p: {
12
+ }) => ide.Text_Edits;
13
+ export declare const Structural_Token: ($: ast.Structural_Token, $p: {
34
14
  "remove commas": boolean;
35
15
  "indentation string": string;
36
16
  "current indentation": string;
37
- }) => Text_Edits;
38
- export declare const String: ($: types.StringX, $p: {
17
+ }) => ide.Text_Edits;
18
+ export declare const String: ($: ast.StringX, $p: {
39
19
  "remove commas": boolean;
40
20
  "indentation string": string;
41
21
  "current indentation": string;
42
- }) => Text_Edits;
43
- export declare const Key_Value_Pairs: ($: types.Key_Value_Pairs, $p: {
22
+ }) => ide.Text_Edits;
23
+ export declare const Key_Value_Pairs: ($: ast.Key_Value_Pairs, $p: {
44
24
  "remove commas": boolean;
45
25
  "indentation string": string;
46
26
  "current indentation": string;
47
- }) => Text_Edits;
48
- export declare const Elements: ($: types.Elements, $p: {
27
+ }) => ide.Text_Edits;
28
+ export declare const Elements: ($: ast.Elements, $p: {
49
29
  "remove commas": boolean;
50
30
  "indentation string": string;
51
31
  "current indentation": string;
52
- }) => Text_Edits;
53
- export declare const Value: ($: types.Value, $p: {
32
+ }) => ide.Text_Edits;
33
+ export declare const Value: ($: ast.Value, $p: {
54
34
  "remove commas": boolean;
55
35
  "indentation string": string;
56
36
  "current indentation": string;
57
- }) => Text_Edits;
58
- export declare const Document: ($: types.Document, $p: {
37
+ }) => ide.Text_Edits;
38
+ export declare const Document: ($: ast.Document, $p: {
59
39
  "remove commas": boolean;
60
40
  "indentation string": string;
61
41
  "current indentation": string;
62
- }) => Text_Edits;
42
+ }) => ide.Text_Edits;