@atproto/lex-builder 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/dist/filter.d.ts +7 -0
  2. package/dist/filter.d.ts.map +1 -0
  3. package/dist/filter.js +30 -0
  4. package/dist/filter.js.map +1 -0
  5. package/dist/filtered-indexer.d.ts +2123 -0
  6. package/dist/filtered-indexer.d.ts.map +1 -0
  7. package/dist/filtered-indexer.js +56 -0
  8. package/dist/filtered-indexer.js.map +1 -0
  9. package/dist/formatter.d.ts +13 -0
  10. package/dist/formatter.d.ts.map +1 -0
  11. package/dist/formatter.js +34 -0
  12. package/dist/formatter.js.map +1 -0
  13. package/dist/index.d.ts +6 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +13 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lex-builder.d.ts +20 -0
  18. package/dist/lex-builder.d.ts.map +1 -0
  19. package/dist/lex-builder.js +123 -0
  20. package/dist/lex-builder.js.map +1 -0
  21. package/dist/lex-def-builder.d.ts +66 -0
  22. package/dist/lex-def-builder.d.ts.map +1 -0
  23. package/dist/lex-def-builder.js +682 -0
  24. package/dist/lex-def-builder.js.map +1 -0
  25. package/dist/lexicon-directory-indexer.d.ts +11 -0
  26. package/dist/lexicon-directory-indexer.d.ts.map +1 -0
  27. package/dist/lexicon-directory-indexer.js +51 -0
  28. package/dist/lexicon-directory-indexer.js.map +1 -0
  29. package/dist/ref-resolver.d.ts +48 -0
  30. package/dist/ref-resolver.d.ts.map +1 -0
  31. package/dist/ref-resolver.js +246 -0
  32. package/dist/ref-resolver.js.map +1 -0
  33. package/dist/ts-lang.d.ts +3 -0
  34. package/dist/ts-lang.d.ts.map +1 -0
  35. package/dist/ts-lang.js +138 -0
  36. package/dist/ts-lang.js.map +1 -0
  37. package/dist/util.d.ts +11 -0
  38. package/dist/util.d.ts.map +1 -0
  39. package/dist/util.js +67 -0
  40. package/dist/util.js.map +1 -0
  41. package/package.json +49 -0
  42. package/src/filter.ts +41 -0
  43. package/src/filtered-indexer.test.ts +83 -0
  44. package/src/filtered-indexer.ts +60 -0
  45. package/src/formatter.ts +42 -0
  46. package/src/index.ts +17 -0
  47. package/src/lex-builder.ts +149 -0
  48. package/src/lex-def-builder.ts +912 -0
  49. package/src/lexicon-directory-indexer.ts +57 -0
  50. package/src/ref-resolver.ts +301 -0
  51. package/src/ts-lang.ts +134 -0
  52. package/src/util.ts +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filtered-indexer.d.ts","sourceRoot":"","sources":["../src/filtered-indexer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FilteredIndexer = void 0;
4
+ /**
5
+ * A lexicon indexer that filters documents based on a provided filter.
6
+ *
7
+ * If a document was filtered out but later requested via `get()`, the filter
8
+ * will be bypassed for that document.
9
+ */
10
+ class FilteredIndexer {
11
+ indexer;
12
+ filter;
13
+ returned = new Set();
14
+ constructor(indexer, filter) {
15
+ this.indexer = indexer;
16
+ this.filter = filter;
17
+ }
18
+ async get(id) {
19
+ this.returned.add(id);
20
+ return this.indexer.get(id);
21
+ }
22
+ async *[Symbol.asyncIterator]() {
23
+ const returned = new Set();
24
+ for await (const doc of this.indexer) {
25
+ if (returned.has(doc.id)) {
26
+ // Should never happen
27
+ throw new Error(`Duplicate lexicon document id: ${doc.id}`);
28
+ }
29
+ if (this.returned.has(doc.id) || this.filter(doc.id)) {
30
+ this.returned.add(doc.id);
31
+ returned.add(doc.id);
32
+ yield doc;
33
+ }
34
+ }
35
+ // When we yield control back to the caller, there may be requests (.get())
36
+ // for documents that were initially ignored (filtered out). We won't be
37
+ // done iterating until every document that may have been requested when the
38
+ // control was yielded to the caller has been returned.
39
+ let returnedAny;
40
+ do {
41
+ returnedAny = false;
42
+ for (const id of this.returned) {
43
+ if (!returned.has(id)) {
44
+ yield await this.indexer.get(id);
45
+ returned.add(id);
46
+ returnedAny = true;
47
+ }
48
+ }
49
+ } while (returnedAny);
50
+ }
51
+ async [Symbol.asyncDispose]() {
52
+ await this.indexer[Symbol.asyncDispose]?.();
53
+ }
54
+ }
55
+ exports.FilteredIndexer = FilteredIndexer;
56
+ //# sourceMappingURL=filtered-indexer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"filtered-indexer.js","sourceRoot":"","sources":["../src/filtered-indexer.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,MAAa,eAAe;IAIf;IACA;IAJQ,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAE/C,YACW,OAAwD,EACxD,MAAc;QADd,YAAO,GAAP,OAAO,CAAiD;QACxD,WAAM,GAAN,MAAM,CAAQ;IACtB,CAAC;IAEJ,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;QAElC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACzB,sBAAsB;gBACtB,MAAM,IAAI,KAAK,CAAC,kCAAkC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;YAC7D,CAAC;YAED,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACzB,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACpB,MAAM,GAAG,CAAA;YACX,CAAC;QACH,CAAC;QAED,2EAA2E;QAC3E,wEAAwE;QACxE,4EAA4E;QAC5E,uDAAuD;QAEvD,IAAI,WAAoB,CAAA;QACxB,GAAG,CAAC;YACF,WAAW,GAAG,KAAK,CAAA;YACnB,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;oBACtB,MAAM,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;oBAChB,WAAW,GAAG,IAAI,CAAA;gBACpB,CAAC;YACH,CAAC;QACH,CAAC,QAAQ,WAAW,EAAC;IACvB,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;QACzB,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,CAAA;IAC7C,CAAC;CACF;AAlDD,0CAkDC","sourcesContent":["import { LexiconDocument, LexiconIndexer } from '@atproto/lex-document'\nimport { Filter } from './filter.js'\n\n/**\n * A lexicon indexer that filters documents based on a provided filter.\n *\n * If a document was filtered out but later requested via `get()`, the filter\n * will be bypassed for that document.\n */\nexport class FilteredIndexer implements LexiconIndexer, AsyncDisposable {\n protected readonly returned = new Set<string>()\n\n constructor(\n readonly indexer: LexiconIndexer & AsyncIterable<LexiconDocument>,\n readonly filter: Filter,\n ) {}\n\n async get(id: string): Promise<LexiconDocument> {\n this.returned.add(id)\n return this.indexer.get(id)\n }\n\n async *[Symbol.asyncIterator]() {\n const returned = new Set<string>()\n\n for await (const doc of this.indexer) {\n if (returned.has(doc.id)) {\n // Should never happen\n throw new Error(`Duplicate lexicon document id: ${doc.id}`)\n }\n\n if (this.returned.has(doc.id) || this.filter(doc.id)) {\n this.returned.add(doc.id)\n returned.add(doc.id)\n yield doc\n }\n }\n\n // When we yield control back to the caller, there may be requests (.get())\n // for documents that were initially ignored (filtered out). We won't be\n // done iterating until every document that may have been requested when the\n // control was yielded to the caller has been returned.\n\n let returnedAny: boolean\n do {\n returnedAny = false\n for (const id of this.returned) {\n if (!returned.has(id)) {\n yield await this.indexer.get(id)\n returned.add(id)\n returnedAny = true\n }\n }\n } while (returnedAny)\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.indexer[Symbol.asyncDispose]?.()\n }\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Options as PrettierOptions } from 'prettier';
2
+ export type FormatterOptions = {
3
+ /** @default false */
4
+ pretty?: boolean | PrettierOptions;
5
+ banner?: string;
6
+ };
7
+ export declare class Formatter {
8
+ readonly banner: string;
9
+ readonly prettierOptions: PrettierOptions | null;
10
+ constructor(options?: FormatterOptions);
11
+ format(code: string): Promise<string>;
12
+ }
13
+ //# sourceMappingURL=formatter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.d.ts","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,eAAe,EAA4B,MAAM,UAAU,CAAA;AAc/E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,qBAAqB;IACrB,MAAM,CAAC,EAAE,OAAO,GAAG,eAAe,CAAA;IAClC,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,qBAAa,SAAS;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI,CAAA;gBAEpC,OAAO,GAAE,gBAAqB;IASpC,MAAM,CAAC,IAAI,EAAE,MAAM;CAQ1B"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Formatter = void 0;
4
+ const prettier_1 = require("prettier");
5
+ const DEFAULT_FORMAT_OPTIONS = {
6
+ parser: 'typescript',
7
+ tabWidth: 2,
8
+ semi: false,
9
+ singleQuote: true,
10
+ trailingComma: 'all',
11
+ };
12
+ const DEFAULT_BANNER = `/*
13
+ * THIS FILE WAS GENERATED BY "@atproto/lex". DO NOT EDIT.
14
+ */`;
15
+ class Formatter {
16
+ banner;
17
+ prettierOptions;
18
+ constructor(options = {}) {
19
+ this.banner = options?.banner ?? DEFAULT_BANNER;
20
+ this.prettierOptions =
21
+ options?.pretty === true
22
+ ? DEFAULT_FORMAT_OPTIONS
23
+ : options?.pretty || null;
24
+ }
25
+ async format(code) {
26
+ const bannerPadding = this.banner && !this.banner.endsWith('\n') ? '\n\n' : '';
27
+ const codePretty = this.prettierOptions
28
+ ? await (0, prettier_1.format)(code, this.prettierOptions)
29
+ : code;
30
+ return `${this.banner}${bannerPadding}${codePretty}`;
31
+ }
32
+ }
33
+ exports.Formatter = Formatter;
34
+ //# sourceMappingURL=formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":";;;AAAA,uCAA+E;AAE/E,MAAM,sBAAsB,GAAoB;IAC9C,MAAM,EAAE,YAAY;IACpB,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,IAAI;IACjB,aAAa,EAAE,KAAK;CACrB,CAAA;AAED,MAAM,cAAc,GAAG;;IAEnB,CAAA;AAQJ,MAAa,SAAS;IACX,MAAM,CAAQ;IACd,eAAe,CAAwB;IAEhD,YAAY,UAA4B,EAAE;QACxC,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,cAAc,CAAA;QAE/C,IAAI,CAAC,eAAe;YAClB,OAAO,EAAE,MAAM,KAAK,IAAI;gBACtB,CAAC,CAAC,sBAAsB;gBACxB,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,IAAI,CAAA;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAAY;QACvB,MAAM,aAAa,GACjB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;QAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe;YACrC,CAAC,CAAC,MAAM,IAAA,iBAAc,EAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC;YAClD,CAAC,CAAC,IAAI,CAAA;QACR,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,aAAa,GAAG,UAAU,EAAE,CAAA;IACtD,CAAC;CACF;AArBD,8BAqBC","sourcesContent":["import { Options as PrettierOptions, format as prettierFormat } from 'prettier'\n\nconst DEFAULT_FORMAT_OPTIONS: PrettierOptions = {\n parser: 'typescript',\n tabWidth: 2,\n semi: false,\n singleQuote: true,\n trailingComma: 'all',\n}\n\nconst DEFAULT_BANNER = `/*\n * THIS FILE WAS GENERATED BY \"@atproto/lex\". DO NOT EDIT.\n */`\n\nexport type FormatterOptions = {\n /** @default false */\n pretty?: boolean | PrettierOptions\n banner?: string\n}\n\nexport class Formatter {\n readonly banner: string\n readonly prettierOptions: PrettierOptions | null\n\n constructor(options: FormatterOptions = {}) {\n this.banner = options?.banner ?? DEFAULT_BANNER\n\n this.prettierOptions =\n options?.pretty === true\n ? DEFAULT_FORMAT_OPTIONS\n : options?.pretty || null\n }\n\n async format(code: string) {\n const bannerPadding =\n this.banner && !this.banner.endsWith('\\n') ? '\\n\\n' : ''\n const codePretty = this.prettierOptions\n ? await prettierFormat(code, this.prettierOptions)\n : code\n return `${this.banner}${bannerPadding}${codePretty}`\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import { LexBuilderLoadOptions, LexBuilderSaveOptions } from './lex-builder.js';
2
+ export * from './lex-builder.js';
3
+ export * from './lexicon-directory-indexer.js';
4
+ export type TsProjectBuildOptions = LexBuilderLoadOptions & LexBuilderSaveOptions;
5
+ export declare function build(options: TsProjectBuildOptions): Promise<void>;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,qBAAqB,EACtB,MAAM,kBAAkB,CAAA;AAEzB,cAAc,kBAAkB,CAAA;AAChC,cAAc,gCAAgC,CAAA;AAE9C,MAAM,MAAM,qBAAqB,GAAG,qBAAqB,GACvD,qBAAqB,CAAA;AAEvB,wBAAsB,KAAK,CAAC,OAAO,EAAE,qBAAqB,iBAIzD"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.build = build;
4
+ const tslib_1 = require("tslib");
5
+ const lex_builder_js_1 = require("./lex-builder.js");
6
+ tslib_1.__exportStar(require("./lex-builder.js"), exports);
7
+ tslib_1.__exportStar(require("./lexicon-directory-indexer.js"), exports);
8
+ async function build(options) {
9
+ const builder = new lex_builder_js_1.LexBuilder();
10
+ await builder.load(options);
11
+ await builder.save(options);
12
+ }
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAYA,sBAIC;;AAhBD,qDAIyB;AAEzB,2DAAgC;AAChC,yEAA8C;AAKvC,KAAK,UAAU,KAAK,CAAC,OAA8B;IACxD,MAAM,OAAO,GAAG,IAAI,2BAAU,EAAE,CAAA;IAChC,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IAC3B,MAAM,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;AAC7B,CAAC","sourcesContent":["import {\n LexBuilder,\n LexBuilderLoadOptions,\n LexBuilderSaveOptions,\n} from './lex-builder.js'\n\nexport * from './lex-builder.js'\nexport * from './lexicon-directory-indexer.js'\n\nexport type TsProjectBuildOptions = LexBuilderLoadOptions &\n LexBuilderSaveOptions\n\nexport async function build(options: TsProjectBuildOptions) {\n const builder = new LexBuilder()\n await builder.load(options)\n await builder.save(options)\n}\n"]}
@@ -0,0 +1,20 @@
1
+ import { BuildFilterOptions } from './filter.js';
2
+ import { FormatterOptions } from './formatter.js';
3
+ import { LexDefBuilderOptions } from './lex-def-builder.js';
4
+ import { LexiconDirectoryIndexerOptions } from './lexicon-directory-indexer.js';
5
+ export type LexBuilderLoadOptions = LexDefBuilderOptions & LexiconDirectoryIndexerOptions & BuildFilterOptions;
6
+ export type LexBuilderSaveOptions = FormatterOptions & {
7
+ out: string;
8
+ clear?: boolean;
9
+ override?: boolean;
10
+ };
11
+ export declare class LexBuilder {
12
+ #private;
13
+ load(options: LexBuilderLoadOptions): Promise<void>;
14
+ save(options: LexBuilderSaveOptions): Promise<void>;
15
+ private createFile;
16
+ private getFile;
17
+ private createExportTree;
18
+ private createDefsFile;
19
+ }
20
+ //# sourceMappingURL=lex-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lex-builder.d.ts","sourceRoot":"","sources":["../src/lex-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,kBAAkB,EAAe,MAAM,aAAa,CAAA;AAE7D,OAAO,EAAa,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAC5D,OAAO,EAAiB,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC1E,OAAO,EAEL,8BAA8B,EAC/B,MAAM,gCAAgC,CAAA;AAGvC,MAAM,MAAM,qBAAqB,GAAG,oBAAoB,GACtD,8BAA8B,GAC9B,kBAAkB,CAAA;AAEpB,MAAM,MAAM,qBAAqB,GAAG,gBAAgB,GAAG;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,qBAAa,UAAU;;IAOR,IAAI,CAAC,OAAO,EAAE,qBAAqB;IAkBnC,IAAI,CAAC,OAAO,EAAE,qBAAqB;IA4BhD,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,OAAO;YAID,gBAAgB;YA0ChB,cAAc;CAW7B"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LexBuilder = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const promises_1 = require("node:fs/promises");
6
+ const node_path_1 = require("node:path");
7
+ const ts_morph_1 = require("ts-morph");
8
+ const filter_js_1 = require("./filter.js");
9
+ const filtered_indexer_js_1 = require("./filtered-indexer.js");
10
+ const formatter_js_1 = require("./formatter.js");
11
+ const lex_def_builder_js_1 = require("./lex-def-builder.js");
12
+ const lexicon_directory_indexer_js_1 = require("./lexicon-directory-indexer.js");
13
+ const ts_lang_js_1 = require("./ts-lang.js");
14
+ class LexBuilder {
15
+ #imported = new Set();
16
+ #project = new ts_morph_1.Project({
17
+ useInMemoryFileSystem: true,
18
+ manipulationSettings: { indentationText: ts_morph_1.IndentationText.TwoSpaces },
19
+ });
20
+ async load(options) {
21
+ const env_1 = { stack: [], error: void 0, hasError: false };
22
+ try {
23
+ const indexer = tslib_1.__addDisposableResource(env_1, new filtered_indexer_js_1.FilteredIndexer(new lexicon_directory_indexer_js_1.LexiconDirectoryIndexer(options), (0, filter_js_1.buildFilter)(options)), true);
24
+ for await (const doc of indexer) {
25
+ if (!this.#imported.has(doc.id)) {
26
+ this.#imported.add(doc.id);
27
+ }
28
+ else {
29
+ throw new Error(`Duplicate lexicon document id: ${doc.id}`);
30
+ }
31
+ await this.createDefsFile(doc, indexer, options);
32
+ await this.createExportTree(doc);
33
+ }
34
+ }
35
+ catch (e_1) {
36
+ env_1.error = e_1;
37
+ env_1.hasError = true;
38
+ }
39
+ finally {
40
+ const result_1 = tslib_1.__disposeResources(env_1);
41
+ if (result_1)
42
+ await result_1;
43
+ }
44
+ }
45
+ async save(options) {
46
+ const files = this.#project.getSourceFiles();
47
+ const destination = (0, node_path_1.resolve)(options.out);
48
+ if (options.clear) {
49
+ await (0, promises_1.rm)(destination, { recursive: true, force: true });
50
+ }
51
+ else if (!options.override) {
52
+ await Promise.all(files.map(async (f) => assertNotFileExists((0, node_path_1.join)(destination, f.getFilePath()))));
53
+ }
54
+ const formatter = new formatter_js_1.Formatter(options);
55
+ await Promise.all(Array.from(files, async (file) => {
56
+ const filePath = (0, node_path_1.join)(destination, file.getFilePath());
57
+ const content = await formatter.format(file.getFullText());
58
+ await (0, promises_1.mkdir)((0, node_path_1.join)(filePath, '..'), { recursive: true });
59
+ await (0, promises_1.rm)(filePath, { recursive: true, force: true });
60
+ await (0, promises_1.writeFile)(filePath, content, 'utf8');
61
+ }));
62
+ }
63
+ createFile(path) {
64
+ return this.#project.createSourceFile(path);
65
+ }
66
+ getFile(path) {
67
+ return this.#project.getSourceFile(path) || this.createFile(path);
68
+ }
69
+ async createExportTree(doc) {
70
+ const namespaces = doc.id.split('.');
71
+ // First create the parent namespaces
72
+ for (let i = 0; i < namespaces.length - 1; i++) {
73
+ const currentNs = namespaces[i];
74
+ const childNs = namespaces[i + 1];
75
+ const path = (0, node_path_1.join)('/', ...namespaces.slice(0, i + 1));
76
+ const file = this.getFile(`${path}.ts`);
77
+ const childModuleSpecifier = `./${currentNs}/${childNs}.js`;
78
+ const dec = file.getExportDeclaration(childModuleSpecifier);
79
+ if (!dec) {
80
+ file.addExportDeclaration({
81
+ moduleSpecifier: childModuleSpecifier,
82
+ namespaceExport: (0, ts_lang_js_1.isSafeIdentifier)(childNs)
83
+ ? childNs
84
+ : JSON.stringify(childNs),
85
+ });
86
+ }
87
+ }
88
+ // The child file exports the schemas (as *)
89
+ const path = (0, node_path_1.join)('/', ...namespaces);
90
+ const file = this.getFile(`${path}.ts`);
91
+ file.addExportDeclaration({
92
+ moduleSpecifier: `./${namespaces.at(-1)}.defs.js`,
93
+ });
94
+ // @NOTE Individual exports exports from the defs file might conflict with
95
+ // child namespaces. For this reason, we also add a namespace export for the
96
+ // defs (export * as $defs from './xyz.defs.js'). This is an escape hatch
97
+ // allowing to still access the definitions if a hash get shadowed by a
98
+ // child namespace.
99
+ file.addExportDeclaration({
100
+ moduleSpecifier: `./${namespaces.at(-1)}.defs.js`,
101
+ namespaceExport: '$defs',
102
+ });
103
+ }
104
+ async createDefsFile(doc, indexer, options) {
105
+ const path = (0, node_path_1.join)('/', ...doc.id.split('.'));
106
+ const file = this.createFile(`${path}.defs.ts`);
107
+ const fileBuilder = new lex_def_builder_js_1.LexDefBuilder(options, file, doc, indexer);
108
+ await fileBuilder.build();
109
+ }
110
+ }
111
+ exports.LexBuilder = LexBuilder;
112
+ async function assertNotFileExists(file) {
113
+ try {
114
+ await (0, promises_1.stat)(file);
115
+ throw new Error(`File already exists: ${file}`);
116
+ }
117
+ catch (err) {
118
+ if (err instanceof Error && 'code' in err && err.code === 'ENOENT')
119
+ return;
120
+ throw err;
121
+ }
122
+ }
123
+ //# sourceMappingURL=lex-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lex-builder.js","sourceRoot":"","sources":["../src/lex-builder.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdir, rm, stat, writeFile } from 'node:fs/promises'\nimport { join, resolve } from 'node:path'\nimport { IndentationText, Project } from 'ts-morph'\nimport { LexiconDocument, LexiconIndexer } from '@atproto/lex-document'\nimport { BuildFilterOptions, buildFilter } from './filter.js'\nimport { FilteredIndexer } from './filtered-indexer.js'\nimport { Formatter, FormatterOptions } from './formatter.js'\nimport { LexDefBuilder, LexDefBuilderOptions } from './lex-def-builder.js'\nimport {\n LexiconDirectoryIndexer,\n LexiconDirectoryIndexerOptions,\n} from './lexicon-directory-indexer.js'\nimport { isSafeIdentifier } from './ts-lang.js'\n\nexport type LexBuilderLoadOptions = LexDefBuilderOptions &\n LexiconDirectoryIndexerOptions &\n BuildFilterOptions\n\nexport type LexBuilderSaveOptions = FormatterOptions & {\n out: string\n clear?: boolean\n override?: boolean\n}\n\nexport class LexBuilder {\n readonly #imported = new Set<string>()\n readonly #project = new Project({\n useInMemoryFileSystem: true,\n manipulationSettings: { indentationText: IndentationText.TwoSpaces },\n })\n\n public async load(options: LexBuilderLoadOptions) {\n await using indexer = new FilteredIndexer(\n new LexiconDirectoryIndexer(options),\n buildFilter(options),\n )\n\n for await (const doc of indexer) {\n if (!this.#imported.has(doc.id)) {\n this.#imported.add(doc.id)\n } else {\n throw new Error(`Duplicate lexicon document id: ${doc.id}`)\n }\n\n await this.createDefsFile(doc, indexer, options)\n await this.createExportTree(doc)\n }\n }\n\n public async save(options: LexBuilderSaveOptions) {\n const files = this.#project.getSourceFiles()\n\n const destination = resolve(options.out)\n\n if (options.clear) {\n await rm(destination, { recursive: true, force: true })\n } else if (!options.override) {\n await Promise.all(\n files.map(async (f) =>\n assertNotFileExists(join(destination, f.getFilePath())),\n ),\n )\n }\n\n const formatter = new Formatter(options)\n\n await Promise.all(\n Array.from(files, async (file) => {\n const filePath = join(destination, file.getFilePath())\n const content = await formatter.format(file.getFullText())\n await mkdir(join(filePath, '..'), { recursive: true })\n await rm(filePath, { recursive: true, force: true })\n await writeFile(filePath, content, 'utf8')\n }),\n )\n }\n\n private createFile(path: string) {\n return this.#project.createSourceFile(path)\n }\n\n private getFile(path: string) {\n return this.#project.getSourceFile(path) || this.createFile(path)\n }\n\n private async createExportTree(doc: LexiconDocument) {\n const namespaces = doc.id.split('.')\n\n // First create the parent namespaces\n for (let i = 0; i < namespaces.length - 1; i++) {\n const currentNs = namespaces[i]\n const childNs = namespaces[i + 1]\n\n const path = join('/', ...namespaces.slice(0, i + 1))\n const file = this.getFile(`${path}.ts`)\n\n const childModuleSpecifier = `./${currentNs}/${childNs}.js`\n const dec = file.getExportDeclaration(childModuleSpecifier)\n if (!dec) {\n file.addExportDeclaration({\n moduleSpecifier: childModuleSpecifier,\n namespaceExport: isSafeIdentifier(childNs)\n ? childNs\n : JSON.stringify(childNs),\n })\n }\n }\n\n // The child file exports the schemas (as *)\n const path = join('/', ...namespaces)\n const file = this.getFile(`${path}.ts`)\n\n file.addExportDeclaration({\n moduleSpecifier: `./${namespaces.at(-1)}.defs.js`,\n })\n\n // @NOTE Individual exports exports from the defs file might conflict with\n // child namespaces. For this reason, we also add a namespace export for the\n // defs (export * as $defs from './xyz.defs.js'). This is an escape hatch\n // allowing to still access the definitions if a hash get shadowed by a\n // child namespace.\n file.addExportDeclaration({\n moduleSpecifier: `./${namespaces.at(-1)}.defs.js`,\n namespaceExport: '$defs',\n })\n }\n\n private async createDefsFile(\n doc: LexiconDocument,\n indexer: LexiconIndexer,\n options: LexDefBuilderOptions,\n ): Promise<void> {\n const path = join('/', ...doc.id.split('.'))\n const file = this.createFile(`${path}.defs.ts`)\n\n const fileBuilder = new LexDefBuilder(options, file, doc, indexer)\n await fileBuilder.build()\n }\n}\n\nasync function assertNotFileExists(file: string): Promise<void> {\n try {\n await stat(file)\n throw new Error(`File already exists: ${file}`)\n } catch (err) {\n if (err instanceof Error && 'code' in err && err.code === 'ENOENT') return\n throw err\n }\n}\n"]}
@@ -0,0 +1,66 @@
1
+ import { SourceFile } from 'ts-morph';
2
+ import { LexiconDocument, LexiconIndexer } from '@atproto/lex-document';
3
+ export type LexDefBuilderOptions = {
4
+ lib?: string;
5
+ allowLegacyBlobs?: boolean;
6
+ pureAnnotations?: boolean;
7
+ };
8
+ /**
9
+ * Utility class to build a TypeScript source file from a lexicon document.
10
+ */
11
+ export declare class LexDefBuilder {
12
+ private readonly options;
13
+ private readonly file;
14
+ private readonly doc;
15
+ private readonly refResolver;
16
+ constructor(options: LexDefBuilderOptions, file: SourceFile, doc: LexiconDocument, indexer: LexiconIndexer);
17
+ private pure;
18
+ build(): Promise<void>;
19
+ private addUtils;
20
+ private addDef;
21
+ private addPermissionSet;
22
+ private addProcedure;
23
+ private addQuery;
24
+ private addSubscription;
25
+ private addRecord;
26
+ private addObject;
27
+ private addToken;
28
+ private addArray;
29
+ private addSchema;
30
+ private compilePayload;
31
+ private compileBodySchema;
32
+ private compileParamsSchema;
33
+ private compileErrors;
34
+ private compileObjectSchema;
35
+ private compilePropertiesSchemas;
36
+ private compilePropertiesTypes;
37
+ private compilePropertyEntrySchema;
38
+ private compilePropertyEntryType;
39
+ private compileContainedSchema;
40
+ private compileContainedType;
41
+ private compileArraySchema;
42
+ private compileArrayType;
43
+ private compileUnknownSchema;
44
+ private compileUnknownType;
45
+ private compileBooleanSchema;
46
+ private compileBooleanType;
47
+ private compileIntegerSchema;
48
+ private compileIntegerType;
49
+ private compileStringSchema;
50
+ private compileStringType;
51
+ private compileBytesSchema;
52
+ private compileBytesType;
53
+ private compileBlobSchema;
54
+ private compileBlobType;
55
+ private compileCidLinkSchema;
56
+ private compileCidLinkType;
57
+ private compileRefSchema;
58
+ private compileRefType;
59
+ private compileRefUnionSchema;
60
+ private compileRefUnionType;
61
+ private compileConstSchema;
62
+ private compileConstType;
63
+ private compileEnumSchema;
64
+ private compileEnumType;
65
+ }
66
+ //# sourceMappingURL=lex-def-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lex-def-builder.d.ts","sourceRoot":"","sources":["../src/lex-def-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAA2B,MAAM,UAAU,CAAA;AAC9D,OAAO,EAOL,eAAe,EAEf,cAAc,EAef,MAAM,uBAAuB,CAAA;AAS9B,MAAM,MAAM,oBAAoB,GAAG;IACjC,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAC1B,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B,CAAA;AAED;;GAEG;AACH,qBAAa,aAAa;IAItB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,GAAG;IALtB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;gBAGtB,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,eAAe,EACrC,OAAO,EAAE,cAAc;IAKzB,OAAO,CAAC,IAAI;IAIN,KAAK;IAyBX,OAAO,CAAC,QAAQ;YAgBF,MAAM;YA8BN,gBAAgB;YAqBhB,YAAY;YAkDZ,QAAQ;YAoCR,eAAe;YAoCf,SAAS;YAsBT,SAAS;YAiBT,QAAQ;YAQR,QAAQ;YAwBR,SAAS;YA2FT,cAAc;YAYd,iBAAiB;YAQjB,mBAAmB;YAYnB,aAAa;YAKb,mBAAmB;YAUnB,wBAAwB;YAkBxB,sBAAsB;YAYtB,0BAA0B;YAS1B,wBAAwB;YAoBxB,sBAAsB;YA8BtB,oBAAoB;YA8BpB,kBAAkB;YAUlB,gBAAgB;YAIhB,oBAAoB;YAIpB,kBAAkB;YAIlB,oBAAoB;YAOpB,kBAAkB;YAKlB,oBAAoB;YAuBpB,kBAAkB;YAOlB,mBAAmB;YAwBnB,iBAAiB;YA+BjB,kBAAkB;YAKlB,gBAAgB;YAIhB,iBAAiB;YAQjB,eAAe;YAMf,oBAAoB;YAKpB,kBAAkB;YAIlB,gBAAgB;YAOhB,cAAc;YAKd,qBAAqB;YAmBrB,mBAAmB;YAWnB,kBAAkB;YAUlB,gBAAgB;YAShB,iBAAiB;YAYjB,eAAe;CAK9B"}