@lexd/core 0.1.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 (54) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ast.d.ts +121 -0
  3. package/dist/ast.d.ts.map +1 -0
  4. package/dist/ast.js +26 -0
  5. package/dist/ast.js.map +1 -0
  6. package/dist/codegen.d.ts +25 -0
  7. package/dist/codegen.d.ts.map +1 -0
  8. package/dist/codegen.js +30 -0
  9. package/dist/codegen.js.map +1 -0
  10. package/dist/decompile.d.ts +11 -0
  11. package/dist/decompile.d.ts.map +1 -0
  12. package/dist/decompile.js +524 -0
  13. package/dist/decompile.js.map +1 -0
  14. package/dist/emit.d.ts +6 -0
  15. package/dist/emit.d.ts.map +1 -0
  16. package/dist/emit.js +16 -0
  17. package/dist/emit.js.map +1 -0
  18. package/dist/errors.d.ts +6 -0
  19. package/dist/errors.d.ts.map +1 -0
  20. package/dist/errors.js +9 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/index.d.ts +49 -0
  23. package/dist/index.d.ts.map +1 -0
  24. package/dist/index.js +145 -0
  25. package/dist/index.js.map +1 -0
  26. package/dist/lexer.d.ts +38 -0
  27. package/dist/lexer.d.ts.map +1 -0
  28. package/dist/lexer.js +97 -0
  29. package/dist/lexer.js.map +1 -0
  30. package/dist/lexicon.d.ts +138 -0
  31. package/dist/lexicon.d.ts.map +1 -0
  32. package/dist/lexicon.js +3 -0
  33. package/dist/lexicon.js.map +1 -0
  34. package/dist/lower.d.ts +6 -0
  35. package/dist/lower.d.ts.map +1 -0
  36. package/dist/lower.js +447 -0
  37. package/dist/lower.js.map +1 -0
  38. package/dist/parser.d.ts +7 -0
  39. package/dist/parser.d.ts.map +1 -0
  40. package/dist/parser.js +684 -0
  41. package/dist/parser.js.map +1 -0
  42. package/dist/registry.d.ts +31 -0
  43. package/dist/registry.d.ts.map +1 -0
  44. package/dist/registry.js +99 -0
  45. package/dist/registry.js.map +1 -0
  46. package/dist/stdlib-imports.d.ts +8 -0
  47. package/dist/stdlib-imports.d.ts.map +1 -0
  48. package/dist/stdlib-imports.js +20 -0
  49. package/dist/stdlib-imports.js.map +1 -0
  50. package/dist/validate.d.ts +5 -0
  51. package/dist/validate.d.ts.map +1 -0
  52. package/dist/validate.js +52 -0
  53. package/dist/validate.js.map +1 -0
  54. package/package.json +41 -0
package/dist/lower.js ADDED
@@ -0,0 +1,447 @@
1
+ import { LexdCompileError } from './errors.js';
2
+ import { ModuleRegistry, buildImportMap } from './registry.js';
3
+ export { LexdCompileError } from './errors.js';
4
+ function attr(attrs, name) {
5
+ return attrs.find((a) => a.name === name);
6
+ }
7
+ function stringArg(a, index = 0) {
8
+ const v = a?.args[index];
9
+ return typeof v === 'string' ? v : undefined;
10
+ }
11
+ function numberArg(a, index = 0) {
12
+ const v = a?.args[index];
13
+ return typeof v === 'number' ? v : undefined;
14
+ }
15
+ function arrayArg(a, index = 0) {
16
+ const v = a?.args[index];
17
+ return Array.isArray(v) ? v : undefined;
18
+ }
19
+ function groupTypes(namespace, types) {
20
+ const groups = [];
21
+ let current;
22
+ for (const t of types) {
23
+ if (t.primary) {
24
+ current = { primary: t, secondaries: [], namespace };
25
+ groups.push(current);
26
+ }
27
+ else if (current) {
28
+ current.secondaries.push(t);
29
+ }
30
+ else {
31
+ throw new LexdCompileError(`Type "${t.name}" in namespace "${namespace}" is not a primary and has no preceding primary type to attach to`);
32
+ }
33
+ }
34
+ return groups;
35
+ }
36
+ function localDefNames(group) {
37
+ const names = new Set();
38
+ names.add(group.primary.name);
39
+ for (const s of group.secondaries)
40
+ names.add(s.name);
41
+ return names;
42
+ }
43
+ function resolveRefName(name, locals, imports) {
44
+ if (name.startsWith('#'))
45
+ return name;
46
+ if (name.includes('.'))
47
+ return name;
48
+ const fromImport = imports.get(name);
49
+ if (fromImport)
50
+ return fromImport;
51
+ if (locals.has(name))
52
+ return `#${name}`;
53
+ throw new LexdCompileError(`Unknown type "${name}" (not a local def or import)`);
54
+ }
55
+ function applyConstraints(target, attributes, forArray) {
56
+ const description = stringArg(attr(attributes, 'description'));
57
+ if (description !== undefined)
58
+ target.description = description;
59
+ if (forArray) {
60
+ const maxLength = numberArg(attr(attributes, 'maxLength'));
61
+ const minLength = numberArg(attr(attributes, 'minLength'));
62
+ if (maxLength !== undefined)
63
+ target.maxLength = maxLength;
64
+ if (minLength !== undefined)
65
+ target.minLength = minLength;
66
+ return;
67
+ }
68
+ const format = stringArg(attr(attributes, 'format'));
69
+ if (format !== undefined)
70
+ target.format = format;
71
+ const maxLength = numberArg(attr(attributes, 'maxLength'));
72
+ if (maxLength !== undefined)
73
+ target.maxLength = maxLength;
74
+ const minLength = numberArg(attr(attributes, 'minLength'));
75
+ if (minLength !== undefined)
76
+ target.minLength = minLength;
77
+ const maxGraphemes = numberArg(attr(attributes, 'maxGraphemes'));
78
+ if (maxGraphemes !== undefined)
79
+ target.maxGraphemes = maxGraphemes;
80
+ const minGraphemes = numberArg(attr(attributes, 'minGraphemes'));
81
+ if (minGraphemes !== undefined)
82
+ target.minGraphemes = minGraphemes;
83
+ const minimum = numberArg(attr(attributes, 'minimum'));
84
+ if (minimum !== undefined)
85
+ target.minimum = minimum;
86
+ const maximum = numberArg(attr(attributes, 'maximum'));
87
+ if (maximum !== undefined)
88
+ target.maximum = maximum;
89
+ const maxSize = numberArg(attr(attributes, 'maxSize'));
90
+ if (maxSize !== undefined)
91
+ target.maxSize = maxSize;
92
+ const accept = attr(attributes, 'accept');
93
+ if (accept) {
94
+ const arr = arrayArg(accept, 0);
95
+ if (arr)
96
+ target.accept = arr.map(String);
97
+ else if (accept.args.length > 0)
98
+ target.accept = accept.args.map(String);
99
+ }
100
+ const def = attr(attributes, 'default');
101
+ if (def && def.args[0] !== undefined)
102
+ target.default = def.args[0];
103
+ const cst = attr(attributes, 'const');
104
+ if (cst && cst.args[0] !== undefined)
105
+ target.const = cst.args[0];
106
+ const enumAttr = attr(attributes, 'enum');
107
+ if (enumAttr) {
108
+ const arr = arrayArg(enumAttr, 0);
109
+ if (arr)
110
+ target.enum = arr;
111
+ else if (enumAttr.args.length > 0)
112
+ target.enum = enumAttr.args;
113
+ }
114
+ const known = attr(attributes, 'knownValues');
115
+ if (known) {
116
+ const arr = arrayArg(known, 0);
117
+ if (arr)
118
+ target.knownValues = arr.map(String);
119
+ else
120
+ target.knownValues = known.args.map(String);
121
+ }
122
+ }
123
+ function typeExprToLex(expr, attributes, locals, imports) {
124
+ if (expr.kind === 'array') {
125
+ const items = typeExprToLex(expr.element, [], locals, imports);
126
+ const arr = { type: 'array', items };
127
+ applyConstraints(arr, attributes, true);
128
+ return arr;
129
+ }
130
+ if (expr.kind === 'union') {
131
+ const refs = expr.refs.map((r) => {
132
+ if (r.kind === 'ref')
133
+ return resolveRefName(r.name, locals, imports);
134
+ if (r.kind === 'primitive') {
135
+ throw new LexdCompileError(`union() members must be refs, got primitive ${r.name}`);
136
+ }
137
+ if (r.kind === 'inline') {
138
+ throw new LexdCompileError('union() members must be refs, got inline object', r.span);
139
+ }
140
+ throw new LexdCompileError('union() members must be refs');
141
+ });
142
+ const u = { type: 'union', refs };
143
+ if (expr.closed)
144
+ u.closed = true;
145
+ applyConstraints(u, attributes, false);
146
+ return u;
147
+ }
148
+ if (expr.kind === 'inline') {
149
+ return fieldsToObject(expr.fields, attributes, locals, imports);
150
+ }
151
+ if (expr.kind === 'ref') {
152
+ const ref = {
153
+ type: 'ref',
154
+ ref: resolveRefName(expr.name, locals, imports),
155
+ };
156
+ applyConstraints(ref, attributes, false);
157
+ return ref;
158
+ }
159
+ const name = expr.name;
160
+ if (name === 'bytes') {
161
+ const out = { type: 'bytes' };
162
+ applyConstraints(out, attributes, false);
163
+ return out;
164
+ }
165
+ if (name === 'cid-link') {
166
+ const out = { type: 'cid-link' };
167
+ applyConstraints(out, attributes, false);
168
+ return out;
169
+ }
170
+ if (name === 'blob') {
171
+ const out = { type: 'blob' };
172
+ applyConstraints(out, attributes, false);
173
+ return out;
174
+ }
175
+ if (name === 'unknown') {
176
+ const out = { type: 'unknown' };
177
+ applyConstraints(out, attributes, false);
178
+ return out;
179
+ }
180
+ const prim = {
181
+ type: name,
182
+ };
183
+ applyConstraints(prim, attributes, false);
184
+ return prim;
185
+ }
186
+ function fieldsToObject(fields, attributes, locals, imports) {
187
+ const properties = {};
188
+ const required = [];
189
+ const nullable = [];
190
+ for (const field of fields) {
191
+ properties[field.name] = typeExprToLex(field.type, field.attributes, locals, imports);
192
+ if (!field.optional)
193
+ required.push(field.name);
194
+ if (attr(field.attributes, 'nullable'))
195
+ nullable.push(field.name);
196
+ }
197
+ const obj = {
198
+ type: 'object',
199
+ properties,
200
+ };
201
+ if (required.length > 0)
202
+ obj.required = required;
203
+ if (nullable.length > 0)
204
+ obj.nullable = nullable;
205
+ const description = stringArg(attr(attributes, 'description'));
206
+ if (description !== undefined)
207
+ obj.description = description;
208
+ return obj;
209
+ }
210
+ function fieldsToParams(fields, locals, imports) {
211
+ const properties = {};
212
+ const required = [];
213
+ for (const field of fields) {
214
+ properties[field.name] = typeExprToLex(field.type, field.attributes, locals, imports);
215
+ if (!field.optional)
216
+ required.push(field.name);
217
+ }
218
+ const params = { type: 'params', properties };
219
+ if (required.length > 0)
220
+ params.required = required;
221
+ return params;
222
+ }
223
+ function schemaBodyToLex(schema, locals, imports) {
224
+ if (schema.kind === 'inline') {
225
+ return fieldsToObject(schema.fields, [], locals, imports);
226
+ }
227
+ return typeExprToLex(schema.type, [], locals, imports);
228
+ }
229
+ function ioBlockToLex(block, locals, imports) {
230
+ if (!block.encoding) {
231
+ throw new LexdCompileError(`${block.kind} block requires encoding: "..."`);
232
+ }
233
+ const body = { encoding: block.encoding };
234
+ if (block.schema) {
235
+ body.schema = schemaBodyToLex(block.schema, locals, imports);
236
+ }
237
+ if (block.description)
238
+ body.description = block.description;
239
+ return body;
240
+ }
241
+ function findBlock(blocks, kind) {
242
+ return blocks.find((b) => b.kind === kind);
243
+ }
244
+ function errorsFromBlocks(blocks) {
245
+ const b = findBlock(blocks, 'errors');
246
+ if (!b || b.errors.length === 0)
247
+ return undefined;
248
+ return b.errors.map((e) => {
249
+ const err = { name: e.name };
250
+ if (e.description)
251
+ err.description = e.description;
252
+ return err;
253
+ });
254
+ }
255
+ function permissionEntryToLex(entry) {
256
+ const perm = {
257
+ type: 'permission',
258
+ resource: entry.resource,
259
+ };
260
+ for (const [k, v] of Object.entries(entry.props)) {
261
+ perm[k] = v;
262
+ }
263
+ return perm;
264
+ }
265
+ function typeToNamedDef(decl, locals, imports) {
266
+ if (decl.isToken) {
267
+ const tok = { type: 'token' };
268
+ const description = stringArg(attr(decl.attributes, 'description'));
269
+ if (description !== undefined)
270
+ tok.description = description;
271
+ return tok;
272
+ }
273
+ if (decl.isScalar) {
274
+ const scalarAttr = attr(decl.attributes, 'scalar');
275
+ const scalarType = stringArg(scalarAttr, 0);
276
+ if (scalarType !== 'string' && scalarType !== 'integer' && scalarType !== 'boolean') {
277
+ throw new LexdCompileError(`@scalar on "${decl.name}" requires "string", "integer", or "boolean"`);
278
+ }
279
+ if (decl.fields.length > 0 || decl.blocks.length > 0) {
280
+ throw new LexdCompileError(`@scalar type "${decl.name}" must have an empty body`);
281
+ }
282
+ const prim = { type: scalarType };
283
+ applyConstraints(prim, decl.attributes.filter((a) => a.name !== 'scalar'), false);
284
+ return prim;
285
+ }
286
+ return fieldsToObject(decl.fields, decl.attributes, locals, imports);
287
+ }
288
+ function primaryToMain(decl, locals, imports) {
289
+ const description = stringArg(attr(decl.attributes, 'description'));
290
+ if (attr(decl.attributes, 'record')) {
291
+ const key = stringArg(attr(decl.attributes, 'record'), 0);
292
+ if (!key) {
293
+ throw new LexdCompileError(`@record() on "${decl.name}" requires a string key argument`);
294
+ }
295
+ const record = {
296
+ type: 'record',
297
+ key,
298
+ record: fieldsToObject(decl.fields, [], locals, imports),
299
+ };
300
+ if (description !== undefined)
301
+ record.description = description;
302
+ return record;
303
+ }
304
+ if (attr(decl.attributes, 'object')) {
305
+ return fieldsToObject(decl.fields, decl.attributes.filter((a) => a.name !== 'object'), locals, imports);
306
+ }
307
+ if (attr(decl.attributes, 'query')) {
308
+ const q = { type: 'query' };
309
+ if (description !== undefined)
310
+ q.description = description;
311
+ const params = findBlock(decl.blocks, 'params');
312
+ if (params)
313
+ q.parameters = fieldsToParams(params.fields, locals, imports);
314
+ const output = findBlock(decl.blocks, 'output');
315
+ if (output)
316
+ q.output = ioBlockToLex(output, locals, imports);
317
+ const errors = errorsFromBlocks(decl.blocks);
318
+ if (errors)
319
+ q.errors = errors;
320
+ return q;
321
+ }
322
+ if (attr(decl.attributes, 'procedure')) {
323
+ const p = { type: 'procedure' };
324
+ if (description !== undefined)
325
+ p.description = description;
326
+ const params = findBlock(decl.blocks, 'params');
327
+ if (params)
328
+ p.parameters = fieldsToParams(params.fields, locals, imports);
329
+ const input = findBlock(decl.blocks, 'input');
330
+ if (input)
331
+ p.input = ioBlockToLex(input, locals, imports);
332
+ const output = findBlock(decl.blocks, 'output');
333
+ if (output)
334
+ p.output = ioBlockToLex(output, locals, imports);
335
+ const errors = errorsFromBlocks(decl.blocks);
336
+ if (errors)
337
+ p.errors = errors;
338
+ return p;
339
+ }
340
+ if (attr(decl.attributes, 'subscription')) {
341
+ const message = findBlock(decl.blocks, 'message');
342
+ if (!message) {
343
+ throw new LexdCompileError(`@subscription "${decl.name}" requires a message { schema: ... } block`);
344
+ }
345
+ const schema = typeExprToLex(message.schema, [], locals, imports);
346
+ if (schema.type !== 'union' && schema.type !== 'ref') {
347
+ throw new LexdCompileError(`subscription message schema must be a union or ref`);
348
+ }
349
+ const sub = {
350
+ type: 'subscription',
351
+ message: { schema },
352
+ };
353
+ if (description !== undefined)
354
+ sub.description = description;
355
+ const params = findBlock(decl.blocks, 'params');
356
+ if (params)
357
+ sub.parameters = fieldsToParams(params.fields, locals, imports);
358
+ const errors = errorsFromBlocks(decl.blocks);
359
+ if (errors)
360
+ sub.errors = errors;
361
+ return sub;
362
+ }
363
+ if (attr(decl.attributes, 'permissionSet')) {
364
+ const perms = findBlock(decl.blocks, 'permissions');
365
+ if (!perms || perms.entries.length === 0) {
366
+ throw new LexdCompileError(`@permissionSet "${decl.name}" requires a permissions { ... } block`);
367
+ }
368
+ const set = {
369
+ type: 'permission-set',
370
+ permissions: perms.entries.map(permissionEntryToLex),
371
+ };
372
+ const title = stringArg(attr(decl.attributes, 'title'));
373
+ const detail = stringArg(attr(decl.attributes, 'detail'));
374
+ if (title !== undefined)
375
+ set.title = title;
376
+ if (detail !== undefined)
377
+ set.detail = detail;
378
+ if (description !== undefined)
379
+ set.description = description;
380
+ const errors = errorsFromBlocks(decl.blocks);
381
+ if (errors)
382
+ set.errors = errors;
383
+ return set;
384
+ }
385
+ throw new LexdCompileError(`Primary type "${decl.name}" needs @record, @object, @query, @procedure, @subscription, or @permissionSet`);
386
+ }
387
+ function groupToDoc(group, imports) {
388
+ const locals = localDefNames(group);
389
+ const id = `${group.namespace}.${group.primary.name}`;
390
+ const defs = {
391
+ main: primaryToMain(group.primary, locals, imports),
392
+ };
393
+ for (const secondary of group.secondaries) {
394
+ if (defs[secondary.name]) {
395
+ throw new LexdCompileError(`Duplicate def name "${secondary.name}" in ${id}`);
396
+ }
397
+ defs[secondary.name] = typeToNamedDef(secondary, locals, imports);
398
+ }
399
+ return { lexicon: 1, id, defs };
400
+ }
401
+ function defsModuleToDoc(namespace, types, imports) {
402
+ const locals = new Set(types.map((t) => t.name));
403
+ const defs = {};
404
+ for (const t of types) {
405
+ if (defs[t.name]) {
406
+ throw new LexdCompileError(`Duplicate def name "${t.name}" in ${namespace}`);
407
+ }
408
+ defs[t.name] = typeToNamedDef(t, locals, imports);
409
+ }
410
+ return { lexicon: 1, id: namespace, defs };
411
+ }
412
+ export function lower(file, registry = new ModuleRegistry()) {
413
+ registry.registerFile(file);
414
+ const imports = buildImportMap(file, registry);
415
+ const out = [];
416
+ for (const ns of file.namespaces) {
417
+ if (!ns.name.includes('.')) {
418
+ throw new LexdCompileError(`Namespace "${ns.name}" looks invalid; NSIDs should be dotted (e.g. app.bsky.actor)`);
419
+ }
420
+ const hasPrimary = ns.types.some((t) => t.primary);
421
+ if (!hasPrimary) {
422
+ if (ns.types.length === 0) {
423
+ throw new LexdCompileError(`Namespace "${ns.name}" has no types`);
424
+ }
425
+ const doc = defsModuleToDoc(ns.name, ns.types, imports);
426
+ out.push({
427
+ id: doc.id,
428
+ filename: `${doc.id}.json`,
429
+ doc,
430
+ sourceFile: file.filename,
431
+ });
432
+ continue;
433
+ }
434
+ const groups = groupTypes(ns.name, ns.types);
435
+ for (const group of groups) {
436
+ const doc = groupToDoc(group, imports);
437
+ out.push({
438
+ id: doc.id,
439
+ filename: `${doc.id}.json`,
440
+ doc,
441
+ sourceFile: file.filename,
442
+ });
443
+ }
444
+ }
445
+ return out;
446
+ }
447
+ //# sourceMappingURL=lower.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lower.js","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { LexdFile, SourceSpan } from './ast.js';
2
+ export declare class LexdSyntaxError extends Error {
3
+ readonly span?: SourceSpan | undefined;
4
+ constructor(message: string, span?: SourceSpan | undefined);
5
+ }
6
+ export declare function parseLexd(source: string, filename?: string): LexdFile;
7
+ //# sourceMappingURL=parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAOV,QAAQ,EAOR,UAAU,EAIX,MAAM,UAAU,CAAA;AA2VjB,qBAAa,eAAgB,SAAQ,KAAK;aAGtB,IAAI,CAAC,EAAE,UAAU;gBADjC,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,UAAU,YAAA;CAKpC;AA8VD,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CA4BrE"}