@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.
- package/LICENSE +21 -0
- package/dist/ast.d.ts +121 -0
- package/dist/ast.d.ts.map +1 -0
- package/dist/ast.js +26 -0
- package/dist/ast.js.map +1 -0
- package/dist/codegen.d.ts +25 -0
- package/dist/codegen.d.ts.map +1 -0
- package/dist/codegen.js +30 -0
- package/dist/codegen.js.map +1 -0
- package/dist/decompile.d.ts +11 -0
- package/dist/decompile.d.ts.map +1 -0
- package/dist/decompile.js +524 -0
- package/dist/decompile.js.map +1 -0
- package/dist/emit.d.ts +6 -0
- package/dist/emit.d.ts.map +1 -0
- package/dist/emit.js +16 -0
- package/dist/emit.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +9 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +145 -0
- package/dist/index.js.map +1 -0
- package/dist/lexer.d.ts +38 -0
- package/dist/lexer.d.ts.map +1 -0
- package/dist/lexer.js +97 -0
- package/dist/lexer.js.map +1 -0
- package/dist/lexicon.d.ts +138 -0
- package/dist/lexicon.d.ts.map +1 -0
- package/dist/lexicon.js +3 -0
- package/dist/lexicon.js.map +1 -0
- package/dist/lower.d.ts +6 -0
- package/dist/lower.d.ts.map +1 -0
- package/dist/lower.js +447 -0
- package/dist/lower.js.map +1 -0
- package/dist/parser.d.ts +7 -0
- package/dist/parser.d.ts.map +1 -0
- package/dist/parser.js +684 -0
- package/dist/parser.js.map +1 -0
- package/dist/registry.d.ts +31 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +99 -0
- package/dist/registry.js.map +1 -0
- package/dist/stdlib-imports.d.ts +8 -0
- package/dist/stdlib-imports.d.ts.map +1 -0
- package/dist/stdlib-imports.js +20 -0
- package/dist/stdlib-imports.js.map +1 -0
- package/dist/validate.d.ts +5 -0
- package/dist/validate.d.ts.map +1 -0
- package/dist/validate.js +52 -0
- package/dist/validate.js.map +1 -0
- package/package.json +41 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { ModuleRegistry } from './registry.js';
|
|
2
|
+
import type { CompiledLexicon, LexiconDoc } from './lexicon.js';
|
|
3
|
+
import type { LexdFile } from './ast.js';
|
|
4
|
+
export type { LexdFile, SourceSpan, TypeDecl, Field, ImportDecl, TypeExpr, Attribute, NamespaceDecl, TypeBlock, PrimitiveName, } from './ast.js';
|
|
5
|
+
export { PRIMITIVES, PRIMARY_ATTRS, SECTION_NAMES, } from './ast.js';
|
|
6
|
+
/** Known constraint / meta attribute names for editor completion. */
|
|
7
|
+
export declare const CONSTRAINT_ATTRS: readonly ["description", "format", "maxLength", "minLength", "maxGraphemes", "minGraphemes", "minimum", "maximum", "maxSize", "accept", "default", "const", "enum", "knownValues", "nullable", "title", "detail", "token", "scalar"];
|
|
8
|
+
export type { CompiledLexicon, LexiconDoc } from './lexicon.js';
|
|
9
|
+
export { LexdSyntaxError } from './parser.js';
|
|
10
|
+
export { LexdCompileError } from './errors.js';
|
|
11
|
+
export { emitJson, nestedOutputPath, lexdOutputPath } from './emit.js';
|
|
12
|
+
export { decompile, decompileFile } from './decompile.js';
|
|
13
|
+
export { planLexCodegen, tryAtprotoLexCodegen } from './codegen.js';
|
|
14
|
+
export type { LexCodegenOptions, LexCodegenArtifact, LexCodegenPlan } from './codegen.js';
|
|
15
|
+
export { validateLexiconDoc, validateLexiconDocs } from './validate.js';
|
|
16
|
+
export { parseLexd } from './parser.js';
|
|
17
|
+
export { lower } from './lower.js';
|
|
18
|
+
export { ModuleRegistry, buildImportMap } from './registry.js';
|
|
19
|
+
export type { ModuleExport } from './registry.js';
|
|
20
|
+
/** Locate bundled stdlib .lexd files via package exports / package root. */
|
|
21
|
+
export declare function discoverStdlibLexdFiles(fromDir?: string, extraRoots?: string[]): string[];
|
|
22
|
+
export interface CompileOptions {
|
|
23
|
+
/** Extra .lexd paths to register for imports (e.g. stdlib) without requiring them in the result set filter */
|
|
24
|
+
dependencyPaths?: string[];
|
|
25
|
+
/**
|
|
26
|
+
* When true (default for compileFiles), also discover @lexd/stdlib-* packages.
|
|
27
|
+
*/
|
|
28
|
+
includeStdlib?: boolean;
|
|
29
|
+
/** Working directory for stdlib resolution */
|
|
30
|
+
cwd?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Compile source text. For imports to resolve, pass a registry already
|
|
34
|
+
* populated via compileProject / compileFiles, or only use local defs.
|
|
35
|
+
*/
|
|
36
|
+
export declare function compile(source: string, filename?: string, registry?: ModuleRegistry): CompiledLexicon[];
|
|
37
|
+
/** Multi-file compile with shared registry and optional stdlib. */
|
|
38
|
+
export declare function compileFiles(paths: string[], options?: CompileOptions): CompiledLexicon[];
|
|
39
|
+
/**
|
|
40
|
+
* Compile a project: all source paths plus stdlib deps registered;
|
|
41
|
+
* returns every lexicon from the source paths (not silent stdlib unless listed).
|
|
42
|
+
*/
|
|
43
|
+
export declare function compileProject(sourcePaths: string[], options?: CompileOptions): CompiledLexicon[];
|
|
44
|
+
export declare function parse(source: string, filename?: string): LexdFile;
|
|
45
|
+
export declare function compileToMap(source: string, filename?: string): Map<string, LexiconDoc>;
|
|
46
|
+
export declare function docsEqual(a: LexiconDoc, b: LexiconDoc): boolean;
|
|
47
|
+
/** Helper for tests / tooling that need the package directory. */
|
|
48
|
+
export declare function corePackageDir(): string;
|
|
49
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AAExC,YAAY,EACV,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,KAAK,EACL,UAAU,EACV,QAAQ,EACR,SAAS,EACT,aAAa,EACb,SAAS,EACT,aAAa,GACd,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,UAAU,EACV,aAAa,EACb,aAAa,GACd,MAAM,UAAU,CAAA;AAEjB,qEAAqE;AACrE,eAAO,MAAM,gBAAgB,sOAoBnB,CAAA;AAEV,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACnE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACzF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9D,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAiBjD,4EAA4E;AAC5E,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,MAAsB,EAC/B,UAAU,GAAE,MAAM,EAAO,GACxB,MAAM,EAAE,CAwBV;AAED,MAAM,WAAW,cAAc;IAC7B,8GAA8G;IAC9G,eAAe,CAAC,EAAE,MAAM,EAAE,CAAA;IAC1B;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAMD;;;GAGG;AACH,wBAAgB,OAAO,CACrB,MAAM,EAAE,MAAM,EACd,QAAQ,CAAC,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,cAAc,GACxB,eAAe,EAAE,CAKnB;AAED,mEAAmE;AACnE,wBAAgB,YAAY,CAC1B,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,cAAmB,GAC3B,eAAe,EAAE,CAyBnB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EAAE,EACrB,OAAO,GAAE,cAAmB,GAC3B,eAAe,EAAE,CAEnB;AAED,wBAAgB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,QAAQ,CAEjE;AAED,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAMvF;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAE/D;AAED,kEAAkE;AAClE,wBAAgB,cAAc,IAAI,MAAM,CAEvC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { existsSync, readFileSync, readdirSync, statSync } from 'node:fs';
|
|
2
|
+
import { createRequire } from 'node:module';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { parseLexd } from './parser.js';
|
|
6
|
+
import { lower } from './lower.js';
|
|
7
|
+
import { ModuleRegistry } from './registry.js';
|
|
8
|
+
export { PRIMITIVES, PRIMARY_ATTRS, SECTION_NAMES, } from './ast.js';
|
|
9
|
+
/** Known constraint / meta attribute names for editor completion. */
|
|
10
|
+
export const CONSTRAINT_ATTRS = [
|
|
11
|
+
'description',
|
|
12
|
+
'format',
|
|
13
|
+
'maxLength',
|
|
14
|
+
'minLength',
|
|
15
|
+
'maxGraphemes',
|
|
16
|
+
'minGraphemes',
|
|
17
|
+
'minimum',
|
|
18
|
+
'maximum',
|
|
19
|
+
'maxSize',
|
|
20
|
+
'accept',
|
|
21
|
+
'default',
|
|
22
|
+
'const',
|
|
23
|
+
'enum',
|
|
24
|
+
'knownValues',
|
|
25
|
+
'nullable',
|
|
26
|
+
'title',
|
|
27
|
+
'detail',
|
|
28
|
+
'token',
|
|
29
|
+
'scalar',
|
|
30
|
+
];
|
|
31
|
+
export { LexdSyntaxError } from './parser.js';
|
|
32
|
+
export { LexdCompileError } from './errors.js';
|
|
33
|
+
export { emitJson, nestedOutputPath, lexdOutputPath } from './emit.js';
|
|
34
|
+
export { decompile, decompileFile } from './decompile.js';
|
|
35
|
+
export { planLexCodegen, tryAtprotoLexCodegen } from './codegen.js';
|
|
36
|
+
export { validateLexiconDoc, validateLexiconDocs } from './validate.js';
|
|
37
|
+
export { parseLexd } from './parser.js';
|
|
38
|
+
export { lower } from './lower.js';
|
|
39
|
+
export { ModuleRegistry, buildImportMap } from './registry.js';
|
|
40
|
+
const require = createRequire(import.meta.url);
|
|
41
|
+
const STDLIB_PACKAGES = ['@lexd/stdlib-atproto', '@lexd/stdlib-standard'];
|
|
42
|
+
function walkLexdFiles(dir, out = []) {
|
|
43
|
+
if (!existsSync(dir))
|
|
44
|
+
return out;
|
|
45
|
+
for (const name of readdirSync(dir)) {
|
|
46
|
+
const p = join(dir, name);
|
|
47
|
+
const st = statSync(p);
|
|
48
|
+
if (st.isDirectory())
|
|
49
|
+
walkLexdFiles(p, out);
|
|
50
|
+
else if (name.endsWith('.lexd'))
|
|
51
|
+
out.push(p);
|
|
52
|
+
}
|
|
53
|
+
return out;
|
|
54
|
+
}
|
|
55
|
+
/** Locate bundled stdlib .lexd files via package exports / package root. */
|
|
56
|
+
export function discoverStdlibLexdFiles(fromDir = process.cwd(), extraRoots = []) {
|
|
57
|
+
const coreDir = dirname(fileURLToPath(import.meta.url));
|
|
58
|
+
const searchPaths = [
|
|
59
|
+
fromDir,
|
|
60
|
+
coreDir,
|
|
61
|
+
join(coreDir, '..'),
|
|
62
|
+
join(coreDir, '../..'),
|
|
63
|
+
];
|
|
64
|
+
const found = [];
|
|
65
|
+
for (const pkg of STDLIB_PACKAGES) {
|
|
66
|
+
try {
|
|
67
|
+
const pkgJson = require.resolve(`${pkg}/package.json`, { paths: searchPaths });
|
|
68
|
+
const root = dirname(pkgJson);
|
|
69
|
+
const pkgMeta = JSON.parse(readFileSync(pkgJson, 'utf8'));
|
|
70
|
+
const srcDir = pkgMeta.lexd ? join(root, pkgMeta.lexd) : join(root, 'src');
|
|
71
|
+
found.push(...walkLexdFiles(srcDir));
|
|
72
|
+
}
|
|
73
|
+
catch {
|
|
74
|
+
// package not installed — skip
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
for (const root of extraRoots) {
|
|
78
|
+
found.push(...walkLexdFiles(root));
|
|
79
|
+
}
|
|
80
|
+
return [...new Set(found)].sort();
|
|
81
|
+
}
|
|
82
|
+
function parsePath(path) {
|
|
83
|
+
return parseLexd(readFileSync(path, 'utf8'), path);
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Compile source text. For imports to resolve, pass a registry already
|
|
87
|
+
* populated via compileProject / compileFiles, or only use local defs.
|
|
88
|
+
*/
|
|
89
|
+
export function compile(source, filename, registry) {
|
|
90
|
+
const ast = parseLexd(source, filename);
|
|
91
|
+
const reg = registry ?? new ModuleRegistry();
|
|
92
|
+
if (!registry)
|
|
93
|
+
reg.registerFile(ast);
|
|
94
|
+
return lower(ast, reg);
|
|
95
|
+
}
|
|
96
|
+
/** Multi-file compile with shared registry and optional stdlib. */
|
|
97
|
+
export function compileFiles(paths, options = {}) {
|
|
98
|
+
const cwd = options.cwd ?? process.cwd();
|
|
99
|
+
const includeStdlib = options.includeStdlib !== false;
|
|
100
|
+
const depPaths = [
|
|
101
|
+
...(options.dependencyPaths ?? []),
|
|
102
|
+
...(includeStdlib ? discoverStdlibLexdFiles(cwd) : []),
|
|
103
|
+
];
|
|
104
|
+
const uniquePaths = [...new Set([...depPaths, ...paths])].sort();
|
|
105
|
+
const files = uniquePaths.map(parsePath);
|
|
106
|
+
const registry = new ModuleRegistry();
|
|
107
|
+
for (const f of files)
|
|
108
|
+
registry.registerFile(f);
|
|
109
|
+
const pathSet = new Set(paths.map((p) => p));
|
|
110
|
+
const results = [];
|
|
111
|
+
for (const f of files) {
|
|
112
|
+
// Always lower for side-effect-free output; filter to requested paths
|
|
113
|
+
// but still emit stdlib if it was explicitly in paths
|
|
114
|
+
const compiled = lower(f, registry);
|
|
115
|
+
if (!f.filename || pathSet.has(f.filename)) {
|
|
116
|
+
results.push(...compiled);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
return results;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Compile a project: all source paths plus stdlib deps registered;
|
|
123
|
+
* returns every lexicon from the source paths (not silent stdlib unless listed).
|
|
124
|
+
*/
|
|
125
|
+
export function compileProject(sourcePaths, options = {}) {
|
|
126
|
+
return compileFiles(sourcePaths, options);
|
|
127
|
+
}
|
|
128
|
+
export function parse(source, filename) {
|
|
129
|
+
return parseLexd(source, filename);
|
|
130
|
+
}
|
|
131
|
+
export function compileToMap(source, filename) {
|
|
132
|
+
const map = new Map();
|
|
133
|
+
for (const item of compile(source, filename)) {
|
|
134
|
+
map.set(item.id, item.doc);
|
|
135
|
+
}
|
|
136
|
+
return map;
|
|
137
|
+
}
|
|
138
|
+
export function docsEqual(a, b) {
|
|
139
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
140
|
+
}
|
|
141
|
+
/** Helper for tests / tooling that need the package directory. */
|
|
142
|
+
export function corePackageDir() {
|
|
143
|
+
return dirname(fileURLToPath(import.meta.url));
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/lexer.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { Lexer } from 'chevrotain';
|
|
2
|
+
export declare const WhiteSpace: import("chevrotain").TokenType;
|
|
3
|
+
export declare const LineComment: import("chevrotain").TokenType;
|
|
4
|
+
export declare const BlockComment: import("chevrotain").TokenType;
|
|
5
|
+
export declare const StringLiteral: import("chevrotain").TokenType;
|
|
6
|
+
export declare const NumberLiteral: import("chevrotain").TokenType;
|
|
7
|
+
export declare const BooleanLiteral: import("chevrotain").TokenType;
|
|
8
|
+
export declare const NamespaceKw: import("chevrotain").TokenType;
|
|
9
|
+
export declare const ImportKw: import("chevrotain").TokenType;
|
|
10
|
+
export declare const FromKw: import("chevrotain").TokenType;
|
|
11
|
+
export declare const AsKw: import("chevrotain").TokenType;
|
|
12
|
+
export declare const TypeKw: import("chevrotain").TokenType;
|
|
13
|
+
export declare const UnionKw: import("chevrotain").TokenType;
|
|
14
|
+
export declare const ClosedKw: import("chevrotain").TokenType;
|
|
15
|
+
export declare const ParamsKw: import("chevrotain").TokenType;
|
|
16
|
+
export declare const InputKw: import("chevrotain").TokenType;
|
|
17
|
+
export declare const OutputKw: import("chevrotain").TokenType;
|
|
18
|
+
export declare const MessageKw: import("chevrotain").TokenType;
|
|
19
|
+
export declare const ErrorsKw: import("chevrotain").TokenType;
|
|
20
|
+
export declare const EncodingKw: import("chevrotain").TokenType;
|
|
21
|
+
export declare const SchemaKw: import("chevrotain").TokenType;
|
|
22
|
+
export declare const PermissionsKw: import("chevrotain").TokenType;
|
|
23
|
+
export declare const LCurly: import("chevrotain").TokenType;
|
|
24
|
+
export declare const RCurly: import("chevrotain").TokenType;
|
|
25
|
+
export declare const LParen: import("chevrotain").TokenType;
|
|
26
|
+
export declare const RParen: import("chevrotain").TokenType;
|
|
27
|
+
export declare const LBracket: import("chevrotain").TokenType;
|
|
28
|
+
export declare const RBracket: import("chevrotain").TokenType;
|
|
29
|
+
export declare const Colon: import("chevrotain").TokenType;
|
|
30
|
+
export declare const Comma: import("chevrotain").TokenType;
|
|
31
|
+
export declare const Question: import("chevrotain").TokenType;
|
|
32
|
+
export declare const At: import("chevrotain").TokenType;
|
|
33
|
+
export declare const Hash: import("chevrotain").TokenType;
|
|
34
|
+
export declare const Dot: import("chevrotain").TokenType;
|
|
35
|
+
export declare const Identifier: import("chevrotain").TokenType;
|
|
36
|
+
export declare const allTokens: import("chevrotain").TokenType[];
|
|
37
|
+
export declare const lexdLexer: Lexer;
|
|
38
|
+
//# sourceMappingURL=lexer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexer.d.ts","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,EAAE,MAAM,YAAY,CAAA;AAE/C,eAAO,MAAM,UAAU,gCAIrB,CAAA;AAEF,eAAO,MAAM,WAAW,gCAItB,CAAA;AAEF,eAAO,MAAM,YAAY,gCAIvB,CAAA;AAEF,eAAO,MAAM,aAAa,gCAGxB,CAAA;AAEF,eAAO,MAAM,aAAa,gCAGxB,CAAA;AAEF,eAAO,MAAM,cAAc,gCAGzB,CAAA;AAEF,eAAO,MAAM,WAAW,gCAA6D,CAAA;AACrF,eAAO,MAAM,QAAQ,gCAAuD,CAAA;AAC5E,eAAO,MAAM,MAAM,gCAAmD,CAAA;AACtE,eAAO,MAAM,IAAI,gCAA+C,CAAA;AAChE,eAAO,MAAM,MAAM,gCAAmD,CAAA;AACtE,eAAO,MAAM,OAAO,gCAAqD,CAAA;AACzE,eAAO,MAAM,QAAQ,gCAAuD,CAAA;AAE5E,eAAO,MAAM,QAAQ,gCAAuD,CAAA;AAC5E,eAAO,MAAM,OAAO,gCAAqD,CAAA;AACzE,eAAO,MAAM,QAAQ,gCAAuD,CAAA;AAC5E,eAAO,MAAM,SAAS,gCAAyD,CAAA;AAC/E,eAAO,MAAM,QAAQ,gCAAuD,CAAA;AAC5E,eAAO,MAAM,UAAU,gCAA2D,CAAA;AAClF,eAAO,MAAM,QAAQ,gCAAuD,CAAA;AAC5E,eAAO,MAAM,aAAa,gCAAiE,CAAA;AAE3F,eAAO,MAAM,MAAM,gCAAiD,CAAA;AACpE,eAAO,MAAM,MAAM,gCAAiD,CAAA;AACpE,eAAO,MAAM,MAAM,gCAAiD,CAAA;AACpE,eAAO,MAAM,MAAM,gCAAiD,CAAA;AACpE,eAAO,MAAM,QAAQ,gCAAmD,CAAA;AACxE,eAAO,MAAM,QAAQ,gCAAmD,CAAA;AACxE,eAAO,MAAM,KAAK,gCAA+C,CAAA;AACjE,eAAO,MAAM,KAAK,gCAA+C,CAAA;AACjE,eAAO,MAAM,QAAQ,gCAAmD,CAAA;AACxE,eAAO,MAAM,EAAE,gCAA4C,CAAA;AAC3D,eAAO,MAAM,IAAI,gCAA8C,CAAA;AAC/D,eAAO,MAAM,GAAG,gCAA8C,CAAA;AAE9D,eAAO,MAAM,UAAU,gCAGrB,CAAA;AAEF,eAAO,MAAM,SAAS,kCAmCrB,CAAA;AAED,eAAO,MAAM,SAAS,OAAuB,CAAA"}
|
package/dist/lexer.js
ADDED
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { createToken, Lexer } from 'chevrotain';
|
|
2
|
+
export const WhiteSpace = createToken({
|
|
3
|
+
name: 'WhiteSpace',
|
|
4
|
+
pattern: /[ \t\r\n]+/,
|
|
5
|
+
group: Lexer.SKIPPED,
|
|
6
|
+
});
|
|
7
|
+
export const LineComment = createToken({
|
|
8
|
+
name: 'LineComment',
|
|
9
|
+
pattern: /\/\/[^\n]*/,
|
|
10
|
+
group: Lexer.SKIPPED,
|
|
11
|
+
});
|
|
12
|
+
export const BlockComment = createToken({
|
|
13
|
+
name: 'BlockComment',
|
|
14
|
+
pattern: /\/\*[\s\S]*?\*\//,
|
|
15
|
+
group: Lexer.SKIPPED,
|
|
16
|
+
});
|
|
17
|
+
export const StringLiteral = createToken({
|
|
18
|
+
name: 'StringLiteral',
|
|
19
|
+
pattern: /"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'/,
|
|
20
|
+
});
|
|
21
|
+
export const NumberLiteral = createToken({
|
|
22
|
+
name: 'NumberLiteral',
|
|
23
|
+
pattern: /-?\d+/,
|
|
24
|
+
});
|
|
25
|
+
export const BooleanLiteral = createToken({
|
|
26
|
+
name: 'BooleanLiteral',
|
|
27
|
+
pattern: /true|false/,
|
|
28
|
+
});
|
|
29
|
+
export const NamespaceKw = createToken({ name: 'NamespaceKw', pattern: /namespace/ });
|
|
30
|
+
export const ImportKw = createToken({ name: 'ImportKw', pattern: /import/ });
|
|
31
|
+
export const FromKw = createToken({ name: 'FromKw', pattern: /from/ });
|
|
32
|
+
export const AsKw = createToken({ name: 'AsKw', pattern: /as/ });
|
|
33
|
+
export const TypeKw = createToken({ name: 'TypeKw', pattern: /type/ });
|
|
34
|
+
export const UnionKw = createToken({ name: 'UnionKw', pattern: /union/ });
|
|
35
|
+
export const ClosedKw = createToken({ name: 'ClosedKw', pattern: /closed/ });
|
|
36
|
+
export const ParamsKw = createToken({ name: 'ParamsKw', pattern: /params/ });
|
|
37
|
+
export const InputKw = createToken({ name: 'InputKw', pattern: /input/ });
|
|
38
|
+
export const OutputKw = createToken({ name: 'OutputKw', pattern: /output/ });
|
|
39
|
+
export const MessageKw = createToken({ name: 'MessageKw', pattern: /message/ });
|
|
40
|
+
export const ErrorsKw = createToken({ name: 'ErrorsKw', pattern: /errors/ });
|
|
41
|
+
export const EncodingKw = createToken({ name: 'EncodingKw', pattern: /encoding/ });
|
|
42
|
+
export const SchemaKw = createToken({ name: 'SchemaKw', pattern: /schema/ });
|
|
43
|
+
export const PermissionsKw = createToken({ name: 'PermissionsKw', pattern: /permissions/ });
|
|
44
|
+
export const LCurly = createToken({ name: 'LCurly', pattern: /\{/ });
|
|
45
|
+
export const RCurly = createToken({ name: 'RCurly', pattern: /\}/ });
|
|
46
|
+
export const LParen = createToken({ name: 'LParen', pattern: /\(/ });
|
|
47
|
+
export const RParen = createToken({ name: 'RParen', pattern: /\)/ });
|
|
48
|
+
export const LBracket = createToken({ name: 'LBracket', pattern: /\[/ });
|
|
49
|
+
export const RBracket = createToken({ name: 'RBracket', pattern: /\]/ });
|
|
50
|
+
export const Colon = createToken({ name: 'Colon', pattern: /:/ });
|
|
51
|
+
export const Comma = createToken({ name: 'Comma', pattern: /,/ });
|
|
52
|
+
export const Question = createToken({ name: 'Question', pattern: /\?/ });
|
|
53
|
+
export const At = createToken({ name: 'At', pattern: /@/ });
|
|
54
|
+
export const Hash = createToken({ name: 'Hash', pattern: /#/ });
|
|
55
|
+
export const Dot = createToken({ name: 'Dot', pattern: /\./ });
|
|
56
|
+
export const Identifier = createToken({
|
|
57
|
+
name: 'Identifier',
|
|
58
|
+
pattern: /[A-Za-z_][A-Za-z0-9_-]*/,
|
|
59
|
+
});
|
|
60
|
+
export const allTokens = [
|
|
61
|
+
WhiteSpace,
|
|
62
|
+
LineComment,
|
|
63
|
+
BlockComment,
|
|
64
|
+
StringLiteral,
|
|
65
|
+
NumberLiteral,
|
|
66
|
+
BooleanLiteral,
|
|
67
|
+
NamespaceKw,
|
|
68
|
+
ImportKw,
|
|
69
|
+
FromKw,
|
|
70
|
+
AsKw,
|
|
71
|
+
TypeKw,
|
|
72
|
+
ClosedKw,
|
|
73
|
+
UnionKw,
|
|
74
|
+
ParamsKw,
|
|
75
|
+
InputKw,
|
|
76
|
+
OutputKw,
|
|
77
|
+
MessageKw,
|
|
78
|
+
ErrorsKw,
|
|
79
|
+
EncodingKw,
|
|
80
|
+
SchemaKw,
|
|
81
|
+
PermissionsKw,
|
|
82
|
+
LCurly,
|
|
83
|
+
RCurly,
|
|
84
|
+
LParen,
|
|
85
|
+
RParen,
|
|
86
|
+
LBracket,
|
|
87
|
+
RBracket,
|
|
88
|
+
Colon,
|
|
89
|
+
Comma,
|
|
90
|
+
Question,
|
|
91
|
+
At,
|
|
92
|
+
Hash,
|
|
93
|
+
Dot,
|
|
94
|
+
Identifier,
|
|
95
|
+
];
|
|
96
|
+
export const lexdLexer = new Lexer(allTokens);
|
|
97
|
+
//# sourceMappingURL=lexer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexer.js","sourceRoot":"","sources":["../src/lexer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/** Subset of AT Proto Lexicon JSON types used by the emitter. */
|
|
2
|
+
export interface LexiconDoc {
|
|
3
|
+
lexicon: 1;
|
|
4
|
+
id: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
defs: Record<string, LexUserType>;
|
|
7
|
+
}
|
|
8
|
+
export type LexUserType = LexRecord | LexObject | LexToken | LexQuery | LexProcedure | LexSubscription | LexPermissionSet | LexPrimitive | LexArray | LexBlob | LexRef | LexUnion | LexUnknown;
|
|
9
|
+
export interface LexRecord {
|
|
10
|
+
type: 'record';
|
|
11
|
+
description?: string;
|
|
12
|
+
key: string;
|
|
13
|
+
record: LexObject;
|
|
14
|
+
}
|
|
15
|
+
export interface LexObject {
|
|
16
|
+
type: 'object';
|
|
17
|
+
description?: string;
|
|
18
|
+
required?: string[];
|
|
19
|
+
properties: Record<string, LexFieldType>;
|
|
20
|
+
nullable?: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface LexParams {
|
|
23
|
+
type: 'params';
|
|
24
|
+
required?: string[];
|
|
25
|
+
properties: Record<string, LexFieldType>;
|
|
26
|
+
}
|
|
27
|
+
export interface LexXrpcBody {
|
|
28
|
+
description?: string;
|
|
29
|
+
encoding: string;
|
|
30
|
+
schema?: LexFieldType;
|
|
31
|
+
}
|
|
32
|
+
export interface LexXrpcError {
|
|
33
|
+
name: string;
|
|
34
|
+
description?: string;
|
|
35
|
+
}
|
|
36
|
+
export interface LexQuery {
|
|
37
|
+
type: 'query';
|
|
38
|
+
description?: string;
|
|
39
|
+
parameters?: LexParams;
|
|
40
|
+
output?: LexXrpcBody;
|
|
41
|
+
errors?: LexXrpcError[];
|
|
42
|
+
}
|
|
43
|
+
export interface LexProcedure {
|
|
44
|
+
type: 'procedure';
|
|
45
|
+
description?: string;
|
|
46
|
+
parameters?: LexParams;
|
|
47
|
+
input?: LexXrpcBody;
|
|
48
|
+
output?: LexXrpcBody;
|
|
49
|
+
errors?: LexXrpcError[];
|
|
50
|
+
}
|
|
51
|
+
export interface LexSubscription {
|
|
52
|
+
type: 'subscription';
|
|
53
|
+
description?: string;
|
|
54
|
+
parameters?: LexParams;
|
|
55
|
+
message: {
|
|
56
|
+
description?: string;
|
|
57
|
+
schema: LexUnion | LexRef;
|
|
58
|
+
};
|
|
59
|
+
errors?: LexXrpcError[];
|
|
60
|
+
}
|
|
61
|
+
export interface LexPermission {
|
|
62
|
+
type: 'permission';
|
|
63
|
+
resource: string;
|
|
64
|
+
[key: string]: unknown;
|
|
65
|
+
}
|
|
66
|
+
export interface LexPermissionSet {
|
|
67
|
+
type: 'permission-set';
|
|
68
|
+
description?: string;
|
|
69
|
+
title?: string;
|
|
70
|
+
detail?: string;
|
|
71
|
+
permissions: LexPermission[];
|
|
72
|
+
errors?: LexXrpcError[];
|
|
73
|
+
}
|
|
74
|
+
export type LexFieldType = LexPrimitive | LexArray | LexObject | LexRef | LexUnion | LexBlob | LexUnknown | LexCidLink | LexBytes;
|
|
75
|
+
export interface LexPrimitive {
|
|
76
|
+
type: 'string' | 'integer' | 'boolean';
|
|
77
|
+
description?: string;
|
|
78
|
+
format?: string;
|
|
79
|
+
maxLength?: number;
|
|
80
|
+
minLength?: number;
|
|
81
|
+
maxGraphemes?: number;
|
|
82
|
+
minGraphemes?: number;
|
|
83
|
+
knownValues?: string[];
|
|
84
|
+
enum?: Array<string | number>;
|
|
85
|
+
default?: string | number | boolean;
|
|
86
|
+
const?: string | number | boolean;
|
|
87
|
+
minimum?: number;
|
|
88
|
+
maximum?: number;
|
|
89
|
+
}
|
|
90
|
+
export interface LexBytes {
|
|
91
|
+
type: 'bytes';
|
|
92
|
+
description?: string;
|
|
93
|
+
minLength?: number;
|
|
94
|
+
maxLength?: number;
|
|
95
|
+
}
|
|
96
|
+
export interface LexCidLink {
|
|
97
|
+
type: 'cid-link';
|
|
98
|
+
description?: string;
|
|
99
|
+
}
|
|
100
|
+
export interface LexBlob {
|
|
101
|
+
type: 'blob';
|
|
102
|
+
description?: string;
|
|
103
|
+
accept?: string[];
|
|
104
|
+
maxSize?: number;
|
|
105
|
+
}
|
|
106
|
+
export interface LexArray {
|
|
107
|
+
type: 'array';
|
|
108
|
+
description?: string;
|
|
109
|
+
items: LexFieldType;
|
|
110
|
+
minLength?: number;
|
|
111
|
+
maxLength?: number;
|
|
112
|
+
}
|
|
113
|
+
export interface LexRef {
|
|
114
|
+
type: 'ref';
|
|
115
|
+
description?: string;
|
|
116
|
+
ref: string;
|
|
117
|
+
}
|
|
118
|
+
export interface LexUnion {
|
|
119
|
+
type: 'union';
|
|
120
|
+
description?: string;
|
|
121
|
+
refs: string[];
|
|
122
|
+
closed?: boolean;
|
|
123
|
+
}
|
|
124
|
+
export interface LexUnknown {
|
|
125
|
+
type: 'unknown';
|
|
126
|
+
description?: string;
|
|
127
|
+
}
|
|
128
|
+
export interface LexToken {
|
|
129
|
+
type: 'token';
|
|
130
|
+
description?: string;
|
|
131
|
+
}
|
|
132
|
+
export interface CompiledLexicon {
|
|
133
|
+
id: string;
|
|
134
|
+
filename: string;
|
|
135
|
+
doc: LexiconDoc;
|
|
136
|
+
sourceFile?: string;
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=lexicon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexicon.d.ts","sourceRoot":"","sources":["../src/lexicon.ts"],"names":[],"mappings":"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"}
|
package/dist/lexicon.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lexicon.js","sourceRoot":"","sources":["../src/lexicon.ts"],"names":[],"mappings":"AAAA,iEAAiE"}
|
package/dist/lower.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { LexdFile } from './ast.js';
|
|
2
|
+
import type { CompiledLexicon } from './lexicon.js';
|
|
3
|
+
import { ModuleRegistry } from './registry.js';
|
|
4
|
+
export { LexdCompileError } from './errors.js';
|
|
5
|
+
export declare function lower(file: LexdFile, registry?: ModuleRegistry): CompiledLexicon[];
|
|
6
|
+
//# sourceMappingURL=lower.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lower.d.ts","sourceRoot":"","sources":["../src/lower.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAKV,QAAQ,EAMT,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EACV,eAAe,EAkBhB,MAAM,cAAc,CAAA;AAErB,OAAO,EAAE,cAAc,EAAkB,MAAM,eAAe,CAAA;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AA0d9C,wBAAgB,KAAK,CACnB,IAAI,EAAE,QAAQ,EACd,QAAQ,GAAE,cAAqC,GAC9C,eAAe,EAAE,CAwCnB"}
|