@atproto/lex-cli 0.5.6 → 0.6.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/CHANGELOG.md +32 -0
- package/dist/codegen/client.d.ts.map +1 -1
- package/dist/codegen/client.js +18 -50
- package/dist/codegen/client.js.map +1 -1
- package/dist/codegen/common.d.ts.map +1 -1
- package/dist/codegen/common.js +174 -26
- package/dist/codegen/common.js.map +1 -1
- package/dist/codegen/lex-gen.d.ts +4 -5
- package/dist/codegen/lex-gen.d.ts.map +1 -1
- package/dist/codegen/lex-gen.js +161 -49
- package/dist/codegen/lex-gen.js.map +1 -1
- package/dist/codegen/server.d.ts.map +1 -1
- package/dist/codegen/server.js +9 -45
- package/dist/codegen/server.js.map +1 -1
- package/dist/codegen/util.d.ts +1 -1
- package/dist/codegen/util.d.ts.map +1 -1
- package/dist/index.js +5 -5
- package/dist/index.js.map +1 -1
- package/dist/mdgen/index.js +3 -3
- package/dist/mdgen/index.js.map +1 -1
- package/dist/util.d.ts +1 -1
- package/dist/util.d.ts.map +1 -1
- package/dist/util.js +16 -16
- package/dist/util.js.map +1 -1
- package/package.json +6 -3
- package/src/codegen/client.ts +27 -65
- package/src/codegen/common.ts +182 -27
- package/src/codegen/lex-gen.ts +219 -78
- package/src/codegen/server.ts +17 -60
- package/src/codegen/util.ts +1 -1
- package/src/index.ts +7 -7
- package/src/mdgen/index.ts +1 -1
- package/src/util.ts +5 -5
package/dist/index.js
CHANGED
|
@@ -27,13 +27,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
27
27
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
28
28
|
};
|
|
29
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
-
const
|
|
30
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
31
31
|
const commander_1 = require("commander");
|
|
32
32
|
const yesno_1 = __importDefault(require("yesno"));
|
|
33
|
-
const util_1 = require("./util");
|
|
34
|
-
const mdGen = __importStar(require("./mdgen"));
|
|
35
33
|
const client_1 = require("./codegen/client");
|
|
36
34
|
const server_1 = require("./codegen/server");
|
|
35
|
+
const mdGen = __importStar(require("./mdgen"));
|
|
36
|
+
const util_1 = require("./util");
|
|
37
37
|
const program = new commander_1.Command();
|
|
38
38
|
program.name('lex').description('Lexicon CLI').version('0.0.0');
|
|
39
39
|
program
|
|
@@ -97,11 +97,11 @@ program
|
|
|
97
97
|
});
|
|
98
98
|
program.parse();
|
|
99
99
|
function toPath(v) {
|
|
100
|
-
return v ?
|
|
100
|
+
return v ? node_path_1.default.resolve(v) : undefined;
|
|
101
101
|
}
|
|
102
102
|
function toPaths(v, acc) {
|
|
103
103
|
acc = acc || [];
|
|
104
|
-
acc.push(
|
|
104
|
+
acc.push(node_path_1.default.resolve(v));
|
|
105
105
|
return acc;
|
|
106
106
|
}
|
|
107
107
|
async function confirmOrExit() {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/mdgen/index.js
CHANGED
|
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.process = process;
|
|
7
|
-
const
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
8
|
const INSERT_START = [
|
|
9
9
|
'<!-- START lex generated content. Please keep comment here to allow auto update -->',
|
|
10
10
|
"<!-- DON'T EDIT THIS SECTION! INSTEAD RE-RUN lex TO UPDATE -->",
|
|
@@ -15,7 +15,7 @@ const INSERT_END = [
|
|
|
15
15
|
async function process(outFilePath, lexicons) {
|
|
16
16
|
let existingContent = '';
|
|
17
17
|
try {
|
|
18
|
-
existingContent =
|
|
18
|
+
existingContent = node_fs_1.default.readFileSync(outFilePath, 'utf8');
|
|
19
19
|
}
|
|
20
20
|
catch (e) {
|
|
21
21
|
// ignore - no existing content
|
|
@@ -36,7 +36,7 @@ async function process(outFilePath, lexicons) {
|
|
|
36
36
|
await genMdLines(lexicons),
|
|
37
37
|
INSERT_END,
|
|
38
38
|
]);
|
|
39
|
-
|
|
39
|
+
node_fs_1.default.writeFileSync(outFilePath, merge(fileLines), 'utf8');
|
|
40
40
|
}
|
|
41
41
|
async function genMdLines(lexicons) {
|
|
42
42
|
const doc = [];
|
package/dist/mdgen/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mdgen/index.ts"],"names":[],"mappings":";;;;;AAWA,0BA2BC;AAtCD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mdgen/index.ts"],"names":[],"mappings":";;;;;AAWA,0BA2BC;AAtCD,sDAAwB;AAGxB,MAAM,YAAY,GAAG;IACnB,qFAAqF;IACrF,gEAAgE;CACjE,CAAA;AACD,MAAM,UAAU,GAAG;IACjB,8EAA8E;CAC/E,CAAA;AAEM,KAAK,UAAU,OAAO,CAAC,WAAmB,EAAE,QAAsB;IACvE,IAAI,eAAe,GAAG,EAAE,CAAA;IACxB,IAAI,CAAC;QACH,eAAe,GAAG,iBAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IACxD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,+BAA+B;IACjC,CAAC;IACD,MAAM,SAAS,GAAe,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAEzD,oCAAoC;IACpC,IAAI,UAAU,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;IAClE,IAAI,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAC9D,IAAI,UAAU,KAAK,CAAC,CAAC,EAAE,CAAC;QACtB,UAAU,GAAG,SAAS,CAAC,MAAM,CAAA;IAC/B,CAAC;IACD,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAA;IAC7B,CAAC;IAED,4BAA4B;IAC5B,SAAS,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,CAAC,EAAE;QACtD,YAAY;QACZ,MAAM,UAAU,CAAC,QAAQ,CAAC;QAC1B,UAAU;KACX,CAAC,CAAA;IAEF,iBAAE,CAAC,aAAa,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAA;AACzD,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,QAAsB;IAC9C,MAAM,GAAG,GAAe,EAAE,CAAA;IAC1B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QACvB,MAAM,IAAI,GAAe,EAAE,CAAA;QAC3B,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAA;QACpC,CAAC;QACD,GAAG,CAAC,IAAI,CAAC;YACP,KAAK;YACL,EAAE;YACF,MAAM,OAAO,CAAC,EAAE,EAAE;YAClB,EAAE;YACF,IAAI;YACJ,SAAS;YACT,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAChC,KAAK;SACN,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAGD,SAAS,KAAK,CAAC,GAAe;IAC5B,OAAO,GAAG;SACP,IAAI,CAAC,EAAE,CAAC;SACR,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;SACpC,IAAI,CAAC,IAAI,CAAC,CAAA;AACf,CAAC;AAED,SAAS,YAAY,CAAC,IAAI;IACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACrC,CAAC;AAED,SAAS,UAAU,CAAC,IAAI;IACtB,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACnC,CAAC"}
|
package/dist/util.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LexiconDoc } from '@atproto/lexicon';
|
|
2
|
-
import {
|
|
2
|
+
import { FileDiff, GeneratedAPI } from './types';
|
|
3
3
|
export declare function readAllLexicons(paths: string[]): LexiconDoc[];
|
|
4
4
|
export declare function readLexicon(path: string): LexiconDoc;
|
|
5
5
|
export declare function genTsObj(lexicons: LexiconDoc[]): string;
|
package/dist/util.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAEhD,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,CAa7D;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAiCpD;AAED,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,MAAM,CAEvD;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,cAqB5D;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAc7C;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,QAa7C"}
|
package/dist/util.js
CHANGED
|
@@ -9,15 +9,15 @@ exports.genTsObj = genTsObj;
|
|
|
9
9
|
exports.genFileDiff = genFileDiff;
|
|
10
10
|
exports.printFileDiff = printFileDiff;
|
|
11
11
|
exports.applyFileDiff = applyFileDiff;
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const lexicon_1 = require("@atproto/lexicon");
|
|
15
|
-
const zod_1 = require("zod");
|
|
12
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
13
|
+
const node_path_1 = require("node:path");
|
|
16
14
|
const chalk_1 = __importDefault(require("chalk"));
|
|
15
|
+
const zod_1 = require("zod");
|
|
16
|
+
const lexicon_1 = require("@atproto/lexicon");
|
|
17
17
|
function readAllLexicons(paths) {
|
|
18
18
|
const docs = [];
|
|
19
19
|
for (const path of paths) {
|
|
20
|
-
if (!path.endsWith('.json') || !
|
|
20
|
+
if (!path.endsWith('.json') || !node_fs_1.default.statSync(path).isFile()) {
|
|
21
21
|
continue;
|
|
22
22
|
}
|
|
23
23
|
try {
|
|
@@ -33,7 +33,7 @@ function readLexicon(path) {
|
|
|
33
33
|
let str;
|
|
34
34
|
let obj;
|
|
35
35
|
try {
|
|
36
|
-
str =
|
|
36
|
+
str = node_fs_1.default.readFileSync(path, 'utf8');
|
|
37
37
|
}
|
|
38
38
|
catch (e) {
|
|
39
39
|
console.error(`Failed to read file`, path);
|
|
@@ -72,7 +72,7 @@ function genFileDiff(outDir, api) {
|
|
|
72
72
|
const diffs = [];
|
|
73
73
|
const existingFiles = readdirRecursiveSync(outDir);
|
|
74
74
|
for (const file of api.files) {
|
|
75
|
-
file.path = (0,
|
|
75
|
+
file.path = (0, node_path_1.join)(outDir, file.path);
|
|
76
76
|
if (existingFiles.includes(file.path)) {
|
|
77
77
|
diffs.push({ act: 'mod', path: file.path, content: file.content });
|
|
78
78
|
}
|
|
@@ -110,11 +110,11 @@ function applyFileDiff(diff) {
|
|
|
110
110
|
switch (d.act) {
|
|
111
111
|
case 'add':
|
|
112
112
|
case 'mod':
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
node_fs_1.default.mkdirSync((0, node_path_1.join)(d.path, '..'), { recursive: true }); // lazy way to make sure the parent dir exists
|
|
114
|
+
node_fs_1.default.writeFileSync(d.path, d.content || '', 'utf8');
|
|
115
115
|
break;
|
|
116
116
|
case 'del':
|
|
117
|
-
|
|
117
|
+
node_fs_1.default.unlinkSync(d.path);
|
|
118
118
|
break;
|
|
119
119
|
}
|
|
120
120
|
}
|
|
@@ -138,15 +138,15 @@ function printZodError(node, path = '') {
|
|
|
138
138
|
return false;
|
|
139
139
|
}
|
|
140
140
|
function readdirRecursiveSync(root, files = [], prefix = '') {
|
|
141
|
-
const dir = (0,
|
|
142
|
-
if (!
|
|
141
|
+
const dir = (0, node_path_1.join)(root, prefix);
|
|
142
|
+
if (!node_fs_1.default.existsSync(dir))
|
|
143
143
|
return files;
|
|
144
|
-
if (
|
|
145
|
-
|
|
146
|
-
readdirRecursiveSync(root, files, (0,
|
|
144
|
+
if (node_fs_1.default.statSync(dir).isDirectory())
|
|
145
|
+
node_fs_1.default.readdirSync(dir).forEach(function (name) {
|
|
146
|
+
readdirRecursiveSync(root, files, (0, node_path_1.join)(prefix, name));
|
|
147
147
|
});
|
|
148
148
|
else if (prefix.endsWith('.ts')) {
|
|
149
|
-
files.push((0,
|
|
149
|
+
files.push((0, node_path_1.join)(root, prefix));
|
|
150
150
|
}
|
|
151
151
|
return files;
|
|
152
152
|
}
|
package/dist/util.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":";;;;;AAOA,0CAaC;AAED,kCAiCC;AAED,4BAEC;AAED,kCAqBC;AAED,sCAcC;AAED,sCAaC;AAjHD,
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@atproto/lex-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "TypeScript codegen tool for atproto Lexicon schemas",
|
|
6
6
|
"keywords": [
|
|
@@ -18,6 +18,9 @@
|
|
|
18
18
|
},
|
|
19
19
|
"main": "dist/index.js",
|
|
20
20
|
"types": "dist/index.d.ts",
|
|
21
|
+
"engines": {
|
|
22
|
+
"node": ">=18.7.0"
|
|
23
|
+
},
|
|
21
24
|
"dependencies": {
|
|
22
25
|
"chalk": "^4.1.2",
|
|
23
26
|
"commander": "^9.4.0",
|
|
@@ -25,8 +28,8 @@
|
|
|
25
28
|
"ts-morph": "^16.0.0",
|
|
26
29
|
"yesno": "^0.4.0",
|
|
27
30
|
"zod": "^3.23.8",
|
|
28
|
-
"@atproto/lexicon": "^0.4.
|
|
29
|
-
"@atproto/syntax": "^0.3.
|
|
31
|
+
"@atproto/lexicon": "^0.4.7",
|
|
32
|
+
"@atproto/syntax": "^0.3.3"
|
|
30
33
|
},
|
|
31
34
|
"devDependencies": {
|
|
32
35
|
"typescript": "^5.6.3"
|
package/src/codegen/client.ts
CHANGED
|
@@ -4,26 +4,26 @@ import {
|
|
|
4
4
|
SourceFile,
|
|
5
5
|
VariableDeclarationKind,
|
|
6
6
|
} from 'ts-morph'
|
|
7
|
-
import {
|
|
7
|
+
import { LexRecord, LexiconDoc, Lexicons } from '@atproto/lexicon'
|
|
8
8
|
import { NSID } from '@atproto/syntax'
|
|
9
|
-
import { gen, utilTs, lexiconsTs } from './common'
|
|
10
9
|
import { GeneratedAPI } from '../types'
|
|
10
|
+
import { gen, lexiconsTs, utilTs } from './common'
|
|
11
11
|
import {
|
|
12
|
+
genCommonImports,
|
|
12
13
|
genImports,
|
|
14
|
+
genRecord,
|
|
13
15
|
genUserType,
|
|
14
|
-
genObject,
|
|
15
|
-
genXrpcParams,
|
|
16
16
|
genXrpcInput,
|
|
17
17
|
genXrpcOutput,
|
|
18
|
-
|
|
18
|
+
genXrpcParams,
|
|
19
19
|
} from './lex-gen'
|
|
20
20
|
import {
|
|
21
|
-
lexiconsToDefTree,
|
|
22
21
|
DefTreeNode,
|
|
22
|
+
lexiconsToDefTree,
|
|
23
23
|
schemasToNsidTokens,
|
|
24
24
|
toCamelCase,
|
|
25
|
-
toTitleCase,
|
|
26
25
|
toScreamingSnakeCase,
|
|
26
|
+
toTitleCase,
|
|
27
27
|
} from './util'
|
|
28
28
|
|
|
29
29
|
const ATP_METHODS = {
|
|
@@ -70,9 +70,9 @@ const indexTs = (
|
|
|
70
70
|
{ name: 'FetchHandler' },
|
|
71
71
|
{ name: 'FetchHandlerOptions' },
|
|
72
72
|
])
|
|
73
|
-
//= import {schemas} from './lexicons'
|
|
73
|
+
//= import {schemas} from './lexicons.js'
|
|
74
74
|
file
|
|
75
|
-
.addImportDeclaration({ moduleSpecifier: './lexicons' })
|
|
75
|
+
.addImportDeclaration({ moduleSpecifier: './lexicons.js' })
|
|
76
76
|
.addNamedImports([{ name: 'schemas' }])
|
|
77
77
|
//= import {CID} from 'multiformats/cid'
|
|
78
78
|
file
|
|
@@ -81,9 +81,14 @@ const indexTs = (
|
|
|
81
81
|
})
|
|
82
82
|
.addNamedImports([{ name: 'CID' }])
|
|
83
83
|
|
|
84
|
+
//= import {OmitKey} from './util.js'
|
|
85
|
+
file
|
|
86
|
+
.addImportDeclaration({ moduleSpecifier: `./util.js` })
|
|
87
|
+
.addNamedImports([{ name: 'OmitKey' }, { name: 'Un$Typed' }])
|
|
88
|
+
|
|
84
89
|
// generate type imports and re-exports
|
|
85
90
|
for (const lexicon of lexiconDocs) {
|
|
86
|
-
const moduleSpecifier = `./types/${lexicon.id.split('.').join('/')}`
|
|
91
|
+
const moduleSpecifier = `./types/${lexicon.id.split('.').join('/')}.js`
|
|
87
92
|
file
|
|
88
93
|
.addImportDeclaration({ moduleSpecifier })
|
|
89
94
|
.setNamespaceImport(toTitleCase(lexicon.id))
|
|
@@ -312,7 +317,7 @@ function genRecordCls(file: SourceFile, nsid: string, lexRecord: LexRecord) {
|
|
|
312
317
|
})
|
|
313
318
|
method.addParameter({
|
|
314
319
|
name: 'params',
|
|
315
|
-
type: `
|
|
320
|
+
type: `OmitKey<${toTitleCase(ATP_METHODS.list)}.QueryParams, "collection">`,
|
|
316
321
|
})
|
|
317
322
|
method.setBodyText(
|
|
318
323
|
[
|
|
@@ -330,7 +335,7 @@ function genRecordCls(file: SourceFile, nsid: string, lexRecord: LexRecord) {
|
|
|
330
335
|
})
|
|
331
336
|
method.addParameter({
|
|
332
337
|
name: 'params',
|
|
333
|
-
type: `
|
|
338
|
+
type: `OmitKey<${toTitleCase(ATP_METHODS.get)}.QueryParams, "collection">`,
|
|
334
339
|
})
|
|
335
340
|
method.setBodyText(
|
|
336
341
|
[
|
|
@@ -348,13 +353,13 @@ function genRecordCls(file: SourceFile, nsid: string, lexRecord: LexRecord) {
|
|
|
348
353
|
})
|
|
349
354
|
method.addParameter({
|
|
350
355
|
name: 'params',
|
|
351
|
-
type: `
|
|
356
|
+
type: `OmitKey<${toTitleCase(
|
|
352
357
|
ATP_METHODS.create,
|
|
353
358
|
)}.InputSchema, "collection" | "record">`,
|
|
354
359
|
})
|
|
355
360
|
method.addParameter({
|
|
356
361
|
name: 'record',
|
|
357
|
-
type:
|
|
362
|
+
type: `Un$Typed<${typeModule}.Record>`,
|
|
358
363
|
})
|
|
359
364
|
method.addParameter({
|
|
360
365
|
name: 'headers?',
|
|
@@ -365,8 +370,8 @@ function genRecordCls(file: SourceFile, nsid: string, lexRecord: LexRecord) {
|
|
|
365
370
|
: ''
|
|
366
371
|
method.setBodyText(
|
|
367
372
|
[
|
|
368
|
-
`
|
|
369
|
-
`const res = await this._client.call('${ATP_METHODS.create}', undefined, { collection
|
|
373
|
+
`const collection = '${nsid}'`,
|
|
374
|
+
`const res = await this._client.call('${ATP_METHODS.create}', undefined, { collection, ${maybeRkeyPart}...params, record: { ...record, $type: collection} }, {encoding: 'application/json', headers })`,
|
|
370
375
|
`return res.data`,
|
|
371
376
|
].join('\n'),
|
|
372
377
|
)
|
|
@@ -380,7 +385,7 @@ function genRecordCls(file: SourceFile, nsid: string, lexRecord: LexRecord) {
|
|
|
380
385
|
// })
|
|
381
386
|
// method.addParameter({
|
|
382
387
|
// name: 'params',
|
|
383
|
-
// type: `
|
|
388
|
+
// type: `OmitKey<${toTitleCase(ATP_METHODS.put)}.InputSchema, "collection" | "record">`,
|
|
384
389
|
// })
|
|
385
390
|
// method.addParameter({
|
|
386
391
|
// name: 'record',
|
|
@@ -407,7 +412,7 @@ function genRecordCls(file: SourceFile, nsid: string, lexRecord: LexRecord) {
|
|
|
407
412
|
})
|
|
408
413
|
method.addParameter({
|
|
409
414
|
name: 'params',
|
|
410
|
-
type: `
|
|
415
|
+
type: `OmitKey<${toTitleCase(
|
|
411
416
|
ATP_METHODS.delete,
|
|
412
417
|
)}.InputSchema, "collection">`,
|
|
413
418
|
})
|
|
@@ -429,8 +434,6 @@ const lexiconTs = (project, lexicons: Lexicons, lexiconDoc: LexiconDoc) =>
|
|
|
429
434
|
project,
|
|
430
435
|
`/types/${lexiconDoc.id.split('.').join('/')}.ts`,
|
|
431
436
|
async (file) => {
|
|
432
|
-
const imports: Set<string> = new Set()
|
|
433
|
-
|
|
434
437
|
const main = lexiconDoc.defs.main
|
|
435
438
|
if (
|
|
436
439
|
main?.type === 'query' ||
|
|
@@ -446,37 +449,10 @@ const lexiconTs = (project, lexicons: Lexicons, lexiconDoc: LexiconDoc) =>
|
|
|
446
449
|
{ name: 'XRPCError' },
|
|
447
450
|
])
|
|
448
451
|
}
|
|
449
|
-
//= import {ValidationResult, BlobRef} from '@atproto/lexicon'
|
|
450
|
-
file
|
|
451
|
-
.addImportDeclaration({
|
|
452
|
-
moduleSpecifier: '@atproto/lexicon',
|
|
453
|
-
})
|
|
454
|
-
.addNamedImports([{ name: 'ValidationResult' }, { name: 'BlobRef' }])
|
|
455
|
-
//= import {isObj, hasProp} from '../../util.ts'
|
|
456
|
-
file
|
|
457
|
-
.addImportDeclaration({
|
|
458
|
-
moduleSpecifier: `${lexiconDoc.id
|
|
459
|
-
.split('.')
|
|
460
|
-
.map((_str) => '..')
|
|
461
|
-
.join('/')}/util`,
|
|
462
|
-
})
|
|
463
|
-
.addNamedImports([{ name: 'isObj' }, { name: 'hasProp' }])
|
|
464
|
-
//= import {lexicons} from '../../lexicons.ts'
|
|
465
|
-
file
|
|
466
|
-
.addImportDeclaration({
|
|
467
|
-
moduleSpecifier: `${lexiconDoc.id
|
|
468
|
-
.split('.')
|
|
469
|
-
.map((_str) => '..')
|
|
470
|
-
.join('/')}/lexicons`,
|
|
471
|
-
})
|
|
472
|
-
.addNamedImports([{ name: 'lexicons' }])
|
|
473
|
-
//= import {CID} from 'multiformats/cid'
|
|
474
|
-
file
|
|
475
|
-
.addImportDeclaration({
|
|
476
|
-
moduleSpecifier: 'multiformats/cid',
|
|
477
|
-
})
|
|
478
|
-
.addNamedImports([{ name: 'CID' }])
|
|
479
452
|
|
|
453
|
+
genCommonImports(file, lexiconDoc.id)
|
|
454
|
+
|
|
455
|
+
const imports: Set<string> = new Set()
|
|
480
456
|
for (const defId in lexiconDoc.defs) {
|
|
481
457
|
const def = lexiconDoc.defs[defId]
|
|
482
458
|
const lexUri = `${lexiconDoc.id}#${defId}`
|
|
@@ -489,7 +465,7 @@ const lexiconTs = (project, lexicons: Lexicons, lexiconDoc: LexiconDoc) =>
|
|
|
489
465
|
} else if (def.type === 'subscription') {
|
|
490
466
|
continue
|
|
491
467
|
} else if (def.type === 'record') {
|
|
492
|
-
|
|
468
|
+
genRecord(file, imports, lexicons, lexUri)
|
|
493
469
|
} else {
|
|
494
470
|
genUserType(file, imports, lexicons, lexUri)
|
|
495
471
|
}
|
|
@@ -586,17 +562,3 @@ function genClientXrpcCommon(
|
|
|
586
562
|
: ['return e'],
|
|
587
563
|
})
|
|
588
564
|
}
|
|
589
|
-
|
|
590
|
-
function genClientRecord(
|
|
591
|
-
file: SourceFile,
|
|
592
|
-
imports: Set<string>,
|
|
593
|
-
lexicons: Lexicons,
|
|
594
|
-
lexUri: string,
|
|
595
|
-
) {
|
|
596
|
-
const def = lexicons.getDefOrThrow(lexUri, ['record'])
|
|
597
|
-
|
|
598
|
-
//= export interface Record {...}
|
|
599
|
-
genObject(file, imports, lexUri, def.record, 'Record')
|
|
600
|
-
//= export function isRecord(v: unknown): v is Record {...}
|
|
601
|
-
genObjHelpers(file, lexUri, 'Record')
|
|
602
|
-
}
|