@webneat/codewiki 0.0.6 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.cjs +217 -205
- package/dist/bin.cjs.map +1 -1
- package/dist/bin.js +217 -205
- package/dist/bin.js.map +1 -1
- package/dist/cli.cjs +217 -205
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +217 -205
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +18 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -4
- package/dist/index.d.ts +2 -4
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/cli.js
CHANGED
|
@@ -1183,12 +1183,6 @@ async function create_context(sqlite, db6, config) {
|
|
|
1183
1183
|
);
|
|
1184
1184
|
return ctx;
|
|
1185
1185
|
}
|
|
1186
|
-
async function context_from_config(config) {
|
|
1187
|
-
const sqlite = new Database(config.db_path);
|
|
1188
|
-
sqlite.pragma("foreign_keys = ON");
|
|
1189
|
-
const db6 = drizzle(sqlite, { schema: schema_exports });
|
|
1190
|
-
return create_context(sqlite, db6, config);
|
|
1191
|
-
}
|
|
1192
1186
|
async function context_from_db(db_path) {
|
|
1193
1187
|
const sqlite = new Database(db_path);
|
|
1194
1188
|
sqlite.pragma("foreign_keys = ON");
|
|
@@ -1245,6 +1239,7 @@ async function get_github_repo(node_modules_paths, package_name) {
|
|
|
1245
1239
|
// src/cli/env.ts
|
|
1246
1240
|
var env = {
|
|
1247
1241
|
read_file,
|
|
1242
|
+
cwd: () => process.cwd(),
|
|
1248
1243
|
file_exists: (path7) => existsSync(path7),
|
|
1249
1244
|
argv: () => process.argv,
|
|
1250
1245
|
log: (...args) => console.log(...args),
|
|
@@ -1255,119 +1250,6 @@ var env = {
|
|
|
1255
1250
|
// src/cli/commands/_common.ts
|
|
1256
1251
|
import "zod";
|
|
1257
1252
|
|
|
1258
|
-
// src/cli/schema.ts
|
|
1259
|
-
import { z } from "zod";
|
|
1260
|
-
var Config = z.object({
|
|
1261
|
-
db_path: z.string().describe("Path to SQLite database"),
|
|
1262
|
-
project_path: z.string().describe("Path to TypeScript project"),
|
|
1263
|
-
description: z.string().optional(),
|
|
1264
|
-
package_json_path: z.string().optional(),
|
|
1265
|
-
node_modules_paths: z.array(z.string()).optional()
|
|
1266
|
-
});
|
|
1267
|
-
var StringFilter = z.union([
|
|
1268
|
-
z.string(),
|
|
1269
|
-
z.object({ contains: z.string() }),
|
|
1270
|
-
z.object({ starts_with: z.string() }),
|
|
1271
|
-
z.object({ ends_with: z.string() })
|
|
1272
|
-
]);
|
|
1273
|
-
var OrderDirection = z.enum(["asc", "desc"]);
|
|
1274
|
-
var FileField = z.enum(["id", "directory_id", "path", "description", "state", "error"]);
|
|
1275
|
-
var FileState = z.enum(["to_scan", "to_describe", "ready"]);
|
|
1276
|
-
var FileSearchOptions = z.object({
|
|
1277
|
-
select: z.array(FileField).optional(),
|
|
1278
|
-
limit: z.number().int().positive().optional(),
|
|
1279
|
-
offset: z.number().int().nonnegative().optional(),
|
|
1280
|
-
where: z.object({
|
|
1281
|
-
id: z.number().optional(),
|
|
1282
|
-
directory_id: z.number().optional(),
|
|
1283
|
-
path: StringFilter.optional(),
|
|
1284
|
-
description: StringFilter.optional(),
|
|
1285
|
-
state: z.union([FileState, z.object({ contains: z.string() })]).optional(),
|
|
1286
|
-
error: StringFilter.optional()
|
|
1287
|
-
}).optional(),
|
|
1288
|
-
order_by: z.tuple([FileField, OrderDirection]).optional()
|
|
1289
|
-
});
|
|
1290
|
-
var FileRelationOptions = z.object({
|
|
1291
|
-
select: z.array(FileField).optional(),
|
|
1292
|
-
limit: z.number().int().positive().optional(),
|
|
1293
|
-
offset: z.number().int().nonnegative().optional(),
|
|
1294
|
-
deep: z.boolean().optional()
|
|
1295
|
-
});
|
|
1296
|
-
var SymbolField = z.enum(["id", "file_id", "type", "name", "text", "meta", "description", "is_exported", "state", "error"]);
|
|
1297
|
-
var SymbolType = z.enum(["function", "class", "class_method", "class_property", "variable", "type"]);
|
|
1298
|
-
var SymbolState = z.enum(["to_link", "to_describe", "ready"]);
|
|
1299
|
-
var SymbolSearchOptions = z.object({
|
|
1300
|
-
select: z.array(SymbolField).optional(),
|
|
1301
|
-
limit: z.number().int().positive().optional(),
|
|
1302
|
-
offset: z.number().int().nonnegative().optional(),
|
|
1303
|
-
where: z.object({
|
|
1304
|
-
id: z.number().optional(),
|
|
1305
|
-
file_id: z.number().optional(),
|
|
1306
|
-
type: z.union([SymbolType, z.object({ contains: z.string() })]).optional(),
|
|
1307
|
-
name: StringFilter.optional(),
|
|
1308
|
-
text: StringFilter.optional(),
|
|
1309
|
-
meta: StringFilter.optional(),
|
|
1310
|
-
description: StringFilter.optional(),
|
|
1311
|
-
is_exported: z.boolean().optional(),
|
|
1312
|
-
state: z.union([SymbolState, z.object({ contains: z.string() })]).optional(),
|
|
1313
|
-
error: StringFilter.optional()
|
|
1314
|
-
}).optional(),
|
|
1315
|
-
order_by: z.tuple([SymbolField, OrderDirection]).optional()
|
|
1316
|
-
});
|
|
1317
|
-
var SymbolRelationOptions = z.object({
|
|
1318
|
-
select: z.array(SymbolField).optional(),
|
|
1319
|
-
limit: z.number().int().positive().optional(),
|
|
1320
|
-
offset: z.number().int().nonnegative().optional(),
|
|
1321
|
-
deep: z.boolean().optional()
|
|
1322
|
-
});
|
|
1323
|
-
var DirectoryField = z.enum(["id", "parent_id", "path", "description", "state", "error"]);
|
|
1324
|
-
var DirectoryState = z.enum(["to_describe", "ready"]);
|
|
1325
|
-
var DirectorySearchOptions = z.object({
|
|
1326
|
-
select: z.array(DirectoryField).optional(),
|
|
1327
|
-
limit: z.number().int().positive().optional(),
|
|
1328
|
-
offset: z.number().int().nonnegative().optional(),
|
|
1329
|
-
where: z.object({
|
|
1330
|
-
id: z.number().optional(),
|
|
1331
|
-
parent_id: z.number().optional(),
|
|
1332
|
-
path: StringFilter.optional(),
|
|
1333
|
-
description: StringFilter.optional(),
|
|
1334
|
-
state: z.union([DirectoryState, z.object({ contains: z.string() })]).optional(),
|
|
1335
|
-
error: StringFilter.optional()
|
|
1336
|
-
}).optional(),
|
|
1337
|
-
order_by: z.tuple([DirectoryField, OrderDirection]).optional()
|
|
1338
|
-
});
|
|
1339
|
-
var DirectoryRelationOptions = z.object({
|
|
1340
|
-
select: z.array(DirectoryField).optional(),
|
|
1341
|
-
limit: z.number().int().positive().optional(),
|
|
1342
|
-
offset: z.number().int().nonnegative().optional(),
|
|
1343
|
-
deep: z.boolean().optional()
|
|
1344
|
-
});
|
|
1345
|
-
var DependencyField = z.enum(["id", "package", "subpath", "name", "version", "github_repo", "is_builtin", "description", "state", "error"]);
|
|
1346
|
-
var DependencyState = z.enum(["to_describe", "ready"]);
|
|
1347
|
-
var DependencySearchOptions = z.object({
|
|
1348
|
-
select: z.array(DependencyField).optional(),
|
|
1349
|
-
limit: z.number().int().positive().optional(),
|
|
1350
|
-
offset: z.number().int().nonnegative().optional(),
|
|
1351
|
-
where: z.object({
|
|
1352
|
-
id: z.number().optional(),
|
|
1353
|
-
package: StringFilter.optional(),
|
|
1354
|
-
subpath: StringFilter.optional(),
|
|
1355
|
-
name: StringFilter.optional(),
|
|
1356
|
-
version: StringFilter.optional(),
|
|
1357
|
-
github_repo: StringFilter.optional(),
|
|
1358
|
-
is_builtin: z.boolean().optional(),
|
|
1359
|
-
description: StringFilter.optional(),
|
|
1360
|
-
state: z.union([DependencyState, z.object({ contains: z.string() })]).optional(),
|
|
1361
|
-
error: StringFilter.optional()
|
|
1362
|
-
}).optional(),
|
|
1363
|
-
order_by: z.tuple([DependencyField, OrderDirection]).optional()
|
|
1364
|
-
});
|
|
1365
|
-
var DependencySelectOptions = z.object({
|
|
1366
|
-
select: z.array(DependencyField).optional(),
|
|
1367
|
-
limit: z.number().int().positive().optional(),
|
|
1368
|
-
offset: z.number().int().nonnegative().optional()
|
|
1369
|
-
});
|
|
1370
|
-
|
|
1371
1253
|
// src/update/track_changes.ts
|
|
1372
1254
|
import path3 from "path";
|
|
1373
1255
|
import "typescript";
|
|
@@ -1518,6 +1400,7 @@ import ts4 from "typescript";
|
|
|
1518
1400
|
import path4 from "path";
|
|
1519
1401
|
import ts3 from "typescript";
|
|
1520
1402
|
function is_external_module(ctx, source_file, module_path) {
|
|
1403
|
+
if (module_path.startsWith("#")) return false;
|
|
1521
1404
|
const resolved = ts3.resolveModuleName(module_path, source_file.fileName, ctx.program.getCompilerOptions(), ts3.sys);
|
|
1522
1405
|
if (!resolved.resolvedModule) return true;
|
|
1523
1406
|
const resolved_path = path4.resolve(resolved.resolvedModule.resolvedFileName);
|
|
@@ -2464,6 +2347,21 @@ async function update6(ctx) {
|
|
|
2464
2347
|
await link_symbols(ctx);
|
|
2465
2348
|
}
|
|
2466
2349
|
|
|
2350
|
+
// src/update_config.ts
|
|
2351
|
+
function update_config(ctx, config, updates) {
|
|
2352
|
+
if (Object.keys(updates).length === 0) return;
|
|
2353
|
+
const new_config = { ...config, ...updates };
|
|
2354
|
+
err.or_throw(
|
|
2355
|
+
configs_exports.upsert(ctx, {
|
|
2356
|
+
project_path: new_config.project_path,
|
|
2357
|
+
description: new_config.description ?? null,
|
|
2358
|
+
package_json_path: new_config.package_json_path ?? null,
|
|
2359
|
+
node_modules_paths: new_config.node_modules_paths ? JSON.stringify(new_config.node_modules_paths) : null
|
|
2360
|
+
})
|
|
2361
|
+
);
|
|
2362
|
+
Object.assign(config, updates);
|
|
2363
|
+
}
|
|
2364
|
+
|
|
2467
2365
|
// src/counts.ts
|
|
2468
2366
|
import { count as count10 } from "drizzle-orm";
|
|
2469
2367
|
function counts(ctx) {
|
|
@@ -2779,19 +2677,6 @@ function directories_to_describe(ctx, limit) {
|
|
|
2779
2677
|
}
|
|
2780
2678
|
|
|
2781
2679
|
// src/index.ts
|
|
2782
|
-
async function create(config) {
|
|
2783
|
-
const ctx = await context_from_config(config);
|
|
2784
|
-
return {
|
|
2785
|
-
config,
|
|
2786
|
-
update: () => update6(ctx),
|
|
2787
|
-
counts: () => counts(ctx),
|
|
2788
|
-
to_describe: (limit) => to_describe(ctx, limit),
|
|
2789
|
-
files: files_wiki(ctx),
|
|
2790
|
-
symbols: symbols_wiki(ctx),
|
|
2791
|
-
directories: directories_wiki(ctx),
|
|
2792
|
-
dependencies: dependencies_wiki(ctx)
|
|
2793
|
-
};
|
|
2794
|
-
}
|
|
2795
2680
|
async function load(db_path) {
|
|
2796
2681
|
const ctx = await context_from_db(db_path);
|
|
2797
2682
|
const stored = ctx.db.select().from(schema_exports.configs).get();
|
|
@@ -2804,6 +2689,7 @@ async function load(db_path) {
|
|
|
2804
2689
|
};
|
|
2805
2690
|
return {
|
|
2806
2691
|
config,
|
|
2692
|
+
update_config: (updates) => update_config(ctx, config, updates),
|
|
2807
2693
|
update: () => update6(ctx),
|
|
2808
2694
|
counts: () => counts(ctx),
|
|
2809
2695
|
to_describe: (limit) => to_describe(ctx, limit),
|
|
@@ -2815,30 +2701,18 @@ async function load(db_path) {
|
|
|
2815
2701
|
}
|
|
2816
2702
|
|
|
2817
2703
|
// src/cli/commands/_common.ts
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2823
|
-
|
|
2824
|
-
|
|
2825
|
-
|
|
2826
|
-
|
|
2827
|
-
return
|
|
2828
|
-
} catch (error) {
|
|
2829
|
-
if (error.type === "could_not_read_file") {
|
|
2830
|
-
env.error(`Error: Configuration file ${config_path} not found`);
|
|
2831
|
-
} else if (error.type === "invalid_json") {
|
|
2832
|
-
env.error(`Error: Invalid JSON in ${config_path}`);
|
|
2833
|
-
} else if (error.type === "invalid_config") {
|
|
2834
|
-
env.error("Error: Invalid configuration");
|
|
2835
|
-
} else if (error.message) {
|
|
2836
|
-
env.error(`Error: ${error.message}`);
|
|
2837
|
-
} else {
|
|
2838
|
-
env.error(`Error: ${String(error)}`);
|
|
2839
|
-
}
|
|
2840
|
-
process.exit(1);
|
|
2704
|
+
function get_db_path(...args) {
|
|
2705
|
+
const cmd = args[args.length - 1];
|
|
2706
|
+
return cmd.optsWithGlobals().db;
|
|
2707
|
+
}
|
|
2708
|
+
async function load_wiki(db_path) {
|
|
2709
|
+
if (!env.file_exists(db_path)) {
|
|
2710
|
+
env.error(`Error: No wiki found at ${db_path}`);
|
|
2711
|
+
env.error(`Run \`codewiki init\` to create one.`);
|
|
2712
|
+
env.exit(1);
|
|
2713
|
+
return void 0;
|
|
2841
2714
|
}
|
|
2715
|
+
return load(db_path);
|
|
2842
2716
|
}
|
|
2843
2717
|
function parse_options(options_json, schema, context) {
|
|
2844
2718
|
let parsed_json;
|
|
@@ -2886,8 +2760,8 @@ function count_text({ total, ...states }) {
|
|
|
2886
2760
|
// src/cli/commands/update.ts
|
|
2887
2761
|
var update7 = new Command("update");
|
|
2888
2762
|
update7.description("Reads current files and updates the wiki database");
|
|
2889
|
-
update7.action(async () => {
|
|
2890
|
-
const wiki = await load_wiki();
|
|
2763
|
+
update7.action(async (...args) => {
|
|
2764
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
2891
2765
|
await wiki.update();
|
|
2892
2766
|
env.log("Update complete.\n");
|
|
2893
2767
|
const counts2 = wiki.counts();
|
|
@@ -2899,8 +2773,8 @@ update7.action(async () => {
|
|
|
2899
2773
|
import { Command as Command2 } from "commander";
|
|
2900
2774
|
var status = new Command2("status");
|
|
2901
2775
|
status.description("Show the status of the wiki");
|
|
2902
|
-
status.action(async () => {
|
|
2903
|
-
const wiki = await load_wiki();
|
|
2776
|
+
status.action(async (...args) => {
|
|
2777
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
2904
2778
|
const counts2 = wiki.counts();
|
|
2905
2779
|
env.log(format_counts(counts2));
|
|
2906
2780
|
});
|
|
@@ -2910,8 +2784,8 @@ import dedent2 from "dedent";
|
|
|
2910
2784
|
import { Command as Command3 } from "commander";
|
|
2911
2785
|
var describe = new Command3("describe");
|
|
2912
2786
|
describe.description("Show the next item to describe");
|
|
2913
|
-
describe.action(async () => {
|
|
2914
|
-
const wiki = await load_wiki();
|
|
2787
|
+
describe.action(async (...args) => {
|
|
2788
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
2915
2789
|
const result = wiki.to_describe(1);
|
|
2916
2790
|
if (result.type === "none") {
|
|
2917
2791
|
return env.log("All items are described!");
|
|
@@ -2991,19 +2865,136 @@ import { Command as Command4 } from "commander";
|
|
|
2991
2865
|
var get6 = new Command4("get");
|
|
2992
2866
|
get6.description("Get a file by ID");
|
|
2993
2867
|
get6.argument("<id>", "File ID");
|
|
2994
|
-
get6.action(async (
|
|
2995
|
-
const
|
|
2868
|
+
get6.action(async (...args) => {
|
|
2869
|
+
const [id] = args;
|
|
2870
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
2996
2871
|
const file = wiki.files.get(Number(id));
|
|
2997
2872
|
env.log(JSON.stringify(file, null, 2));
|
|
2998
2873
|
});
|
|
2999
2874
|
|
|
3000
2875
|
// src/cli/commands/files/search.ts
|
|
3001
2876
|
import { Command as Command5 } from "commander";
|
|
2877
|
+
|
|
2878
|
+
// src/cli/schema.ts
|
|
2879
|
+
import { z as z2 } from "zod";
|
|
2880
|
+
var Config = z2.object({
|
|
2881
|
+
db_path: z2.string().describe("Path to SQLite database"),
|
|
2882
|
+
project_path: z2.string().describe("Path to TypeScript project"),
|
|
2883
|
+
description: z2.string().optional(),
|
|
2884
|
+
package_json_path: z2.string().optional(),
|
|
2885
|
+
node_modules_paths: z2.array(z2.string()).optional()
|
|
2886
|
+
});
|
|
2887
|
+
var StringFilter = z2.union([
|
|
2888
|
+
z2.string(),
|
|
2889
|
+
z2.object({ contains: z2.string() }),
|
|
2890
|
+
z2.object({ starts_with: z2.string() }),
|
|
2891
|
+
z2.object({ ends_with: z2.string() })
|
|
2892
|
+
]);
|
|
2893
|
+
var OrderDirection = z2.enum(["asc", "desc"]);
|
|
2894
|
+
var FileField = z2.enum(["id", "directory_id", "path", "description", "state", "error"]);
|
|
2895
|
+
var FileState = z2.enum(["to_scan", "to_describe", "ready"]);
|
|
2896
|
+
var FileSearchOptions = z2.object({
|
|
2897
|
+
select: z2.array(FileField).optional(),
|
|
2898
|
+
limit: z2.number().int().positive().optional(),
|
|
2899
|
+
offset: z2.number().int().nonnegative().optional(),
|
|
2900
|
+
where: z2.object({
|
|
2901
|
+
id: z2.number().optional(),
|
|
2902
|
+
directory_id: z2.number().optional(),
|
|
2903
|
+
path: StringFilter.optional(),
|
|
2904
|
+
description: StringFilter.optional(),
|
|
2905
|
+
state: z2.union([FileState, z2.object({ contains: z2.string() })]).optional(),
|
|
2906
|
+
error: StringFilter.optional()
|
|
2907
|
+
}).optional(),
|
|
2908
|
+
order_by: z2.tuple([FileField, OrderDirection]).optional()
|
|
2909
|
+
});
|
|
2910
|
+
var FileRelationOptions = z2.object({
|
|
2911
|
+
select: z2.array(FileField).optional(),
|
|
2912
|
+
limit: z2.number().int().positive().optional(),
|
|
2913
|
+
offset: z2.number().int().nonnegative().optional(),
|
|
2914
|
+
deep: z2.boolean().optional()
|
|
2915
|
+
});
|
|
2916
|
+
var SymbolField = z2.enum(["id", "file_id", "type", "name", "text", "meta", "description", "is_exported", "state", "error"]);
|
|
2917
|
+
var SymbolType = z2.enum(["function", "class", "class_method", "class_property", "variable", "type"]);
|
|
2918
|
+
var SymbolState = z2.enum(["to_link", "to_describe", "ready"]);
|
|
2919
|
+
var SymbolSearchOptions = z2.object({
|
|
2920
|
+
select: z2.array(SymbolField).optional(),
|
|
2921
|
+
limit: z2.number().int().positive().optional(),
|
|
2922
|
+
offset: z2.number().int().nonnegative().optional(),
|
|
2923
|
+
where: z2.object({
|
|
2924
|
+
id: z2.number().optional(),
|
|
2925
|
+
file_id: z2.number().optional(),
|
|
2926
|
+
type: z2.union([SymbolType, z2.object({ contains: z2.string() })]).optional(),
|
|
2927
|
+
name: StringFilter.optional(),
|
|
2928
|
+
text: StringFilter.optional(),
|
|
2929
|
+
meta: StringFilter.optional(),
|
|
2930
|
+
description: StringFilter.optional(),
|
|
2931
|
+
is_exported: z2.boolean().optional(),
|
|
2932
|
+
state: z2.union([SymbolState, z2.object({ contains: z2.string() })]).optional(),
|
|
2933
|
+
error: StringFilter.optional()
|
|
2934
|
+
}).optional(),
|
|
2935
|
+
order_by: z2.tuple([SymbolField, OrderDirection]).optional()
|
|
2936
|
+
});
|
|
2937
|
+
var SymbolRelationOptions = z2.object({
|
|
2938
|
+
select: z2.array(SymbolField).optional(),
|
|
2939
|
+
limit: z2.number().int().positive().optional(),
|
|
2940
|
+
offset: z2.number().int().nonnegative().optional(),
|
|
2941
|
+
deep: z2.boolean().optional()
|
|
2942
|
+
});
|
|
2943
|
+
var DirectoryField = z2.enum(["id", "parent_id", "path", "description", "state", "error"]);
|
|
2944
|
+
var DirectoryState = z2.enum(["to_describe", "ready"]);
|
|
2945
|
+
var DirectorySearchOptions = z2.object({
|
|
2946
|
+
select: z2.array(DirectoryField).optional(),
|
|
2947
|
+
limit: z2.number().int().positive().optional(),
|
|
2948
|
+
offset: z2.number().int().nonnegative().optional(),
|
|
2949
|
+
where: z2.object({
|
|
2950
|
+
id: z2.number().optional(),
|
|
2951
|
+
parent_id: z2.number().optional(),
|
|
2952
|
+
path: StringFilter.optional(),
|
|
2953
|
+
description: StringFilter.optional(),
|
|
2954
|
+
state: z2.union([DirectoryState, z2.object({ contains: z2.string() })]).optional(),
|
|
2955
|
+
error: StringFilter.optional()
|
|
2956
|
+
}).optional(),
|
|
2957
|
+
order_by: z2.tuple([DirectoryField, OrderDirection]).optional()
|
|
2958
|
+
});
|
|
2959
|
+
var DirectoryRelationOptions = z2.object({
|
|
2960
|
+
select: z2.array(DirectoryField).optional(),
|
|
2961
|
+
limit: z2.number().int().positive().optional(),
|
|
2962
|
+
offset: z2.number().int().nonnegative().optional(),
|
|
2963
|
+
deep: z2.boolean().optional()
|
|
2964
|
+
});
|
|
2965
|
+
var DependencyField = z2.enum(["id", "package", "subpath", "name", "version", "github_repo", "is_builtin", "description", "state", "error"]);
|
|
2966
|
+
var DependencyState = z2.enum(["to_describe", "ready"]);
|
|
2967
|
+
var DependencySearchOptions = z2.object({
|
|
2968
|
+
select: z2.array(DependencyField).optional(),
|
|
2969
|
+
limit: z2.number().int().positive().optional(),
|
|
2970
|
+
offset: z2.number().int().nonnegative().optional(),
|
|
2971
|
+
where: z2.object({
|
|
2972
|
+
id: z2.number().optional(),
|
|
2973
|
+
package: StringFilter.optional(),
|
|
2974
|
+
subpath: StringFilter.optional(),
|
|
2975
|
+
name: StringFilter.optional(),
|
|
2976
|
+
version: StringFilter.optional(),
|
|
2977
|
+
github_repo: StringFilter.optional(),
|
|
2978
|
+
is_builtin: z2.boolean().optional(),
|
|
2979
|
+
description: StringFilter.optional(),
|
|
2980
|
+
state: z2.union([DependencyState, z2.object({ contains: z2.string() })]).optional(),
|
|
2981
|
+
error: StringFilter.optional()
|
|
2982
|
+
}).optional(),
|
|
2983
|
+
order_by: z2.tuple([DependencyField, OrderDirection]).optional()
|
|
2984
|
+
});
|
|
2985
|
+
var DependencySelectOptions = z2.object({
|
|
2986
|
+
select: z2.array(DependencyField).optional(),
|
|
2987
|
+
limit: z2.number().int().positive().optional(),
|
|
2988
|
+
offset: z2.number().int().nonnegative().optional()
|
|
2989
|
+
});
|
|
2990
|
+
|
|
2991
|
+
// src/cli/commands/files/search.ts
|
|
3002
2992
|
var search13 = new Command5("search");
|
|
3003
2993
|
search13.description("Search files with JSON options");
|
|
3004
2994
|
search13.argument("<options>", "JSON options for search");
|
|
3005
|
-
search13.action(async (
|
|
3006
|
-
const
|
|
2995
|
+
search13.action(async (...args) => {
|
|
2996
|
+
const [options_json] = args;
|
|
2997
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3007
2998
|
const options = parse_options(options_json, FileSearchOptions, "files search");
|
|
3008
2999
|
const results = wiki.files.search(options);
|
|
3009
3000
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3016,8 +3007,9 @@ var set_description5 = new Command6("set-description");
|
|
|
3016
3007
|
set_description5.description("Set description for a file");
|
|
3017
3008
|
set_description5.argument("<file-id>", "File ID");
|
|
3018
3009
|
set_description5.argument("<markdown-file>", "Path to markdown file");
|
|
3019
|
-
set_description5.action(async (
|
|
3020
|
-
const
|
|
3010
|
+
set_description5.action(async (...args) => {
|
|
3011
|
+
const [id, file] = args;
|
|
3012
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3021
3013
|
try {
|
|
3022
3014
|
const content = readFileSync2(file, "utf-8");
|
|
3023
3015
|
wiki.files.set_description(Number(id), content);
|
|
@@ -3034,8 +3026,9 @@ var imported_by_file2 = new Command7("imported-by-file");
|
|
|
3034
3026
|
imported_by_file2.description("Files imported by the given file");
|
|
3035
3027
|
imported_by_file2.argument("<file-id>", "File ID");
|
|
3036
3028
|
imported_by_file2.argument("<options>", "JSON options");
|
|
3037
|
-
imported_by_file2.action(async (
|
|
3038
|
-
const
|
|
3029
|
+
imported_by_file2.action(async (...args) => {
|
|
3030
|
+
const [file_id, options_json] = args;
|
|
3031
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3039
3032
|
const options = parse_options(options_json, FileRelationOptions, "files imported-by-file");
|
|
3040
3033
|
const results = wiki.files.imported_by_file(Number(file_id), options);
|
|
3041
3034
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3047,8 +3040,9 @@ var importing_file2 = new Command8("importing-file");
|
|
|
3047
3040
|
importing_file2.description("Files importing the given file");
|
|
3048
3041
|
importing_file2.argument("<file-id>", "File ID");
|
|
3049
3042
|
importing_file2.argument("<options>", "JSON options");
|
|
3050
|
-
importing_file2.action(async (
|
|
3051
|
-
const
|
|
3043
|
+
importing_file2.action(async (...args) => {
|
|
3044
|
+
const [file_id, options_json] = args;
|
|
3045
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3052
3046
|
const options = parse_options(options_json, FileRelationOptions, "files importing-file");
|
|
3053
3047
|
const results = wiki.files.importing_file(Number(file_id), options);
|
|
3054
3048
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3060,8 +3054,9 @@ var importing_dependency2 = new Command9("importing-dependency");
|
|
|
3060
3054
|
importing_dependency2.description("Files importing the given dependency");
|
|
3061
3055
|
importing_dependency2.argument("<dep-id>", "Dependency ID");
|
|
3062
3056
|
importing_dependency2.argument("<options>", "JSON options");
|
|
3063
|
-
importing_dependency2.action(async (
|
|
3064
|
-
const
|
|
3057
|
+
importing_dependency2.action(async (...args) => {
|
|
3058
|
+
const [dep_id, options_json] = args;
|
|
3059
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3065
3060
|
const options = parse_options(options_json, FileRelationOptions, "files importing-dependency");
|
|
3066
3061
|
const results = wiki.files.importing_dependency(Number(dep_id), options);
|
|
3067
3062
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3114,8 +3109,9 @@ import { Command as Command11 } from "commander";
|
|
|
3114
3109
|
var get7 = new Command11("get");
|
|
3115
3110
|
get7.description("Get a symbol by ID");
|
|
3116
3111
|
get7.argument("<id>", "Symbol ID");
|
|
3117
|
-
get7.action(async (
|
|
3118
|
-
const
|
|
3112
|
+
get7.action(async (...args) => {
|
|
3113
|
+
const [id] = args;
|
|
3114
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3119
3115
|
const symbol = wiki.symbols.get(Number(id));
|
|
3120
3116
|
env.log(JSON.stringify(symbol, null, 2));
|
|
3121
3117
|
});
|
|
@@ -3125,8 +3121,9 @@ import { Command as Command12 } from "commander";
|
|
|
3125
3121
|
var search14 = new Command12("search");
|
|
3126
3122
|
search14.description("Search symbols with JSON options");
|
|
3127
3123
|
search14.argument("<options>", "JSON options");
|
|
3128
|
-
search14.action(async (
|
|
3129
|
-
const
|
|
3124
|
+
search14.action(async (...args) => {
|
|
3125
|
+
const [options_json] = args;
|
|
3126
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3130
3127
|
const options = parse_options(options_json, SymbolSearchOptions, "symbols search");
|
|
3131
3128
|
const results = wiki.symbols.search(options);
|
|
3132
3129
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3139,8 +3136,9 @@ var set_description6 = new Command13("set-description");
|
|
|
3139
3136
|
set_description6.description("Set description for a symbol");
|
|
3140
3137
|
set_description6.argument("<symbol-id>", "Symbol ID");
|
|
3141
3138
|
set_description6.argument("<markdown-file>", "Path to markdown file");
|
|
3142
|
-
set_description6.action(async (
|
|
3143
|
-
const
|
|
3139
|
+
set_description6.action(async (...args) => {
|
|
3140
|
+
const [id, file] = args;
|
|
3141
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3144
3142
|
try {
|
|
3145
3143
|
const content = readFileSync3(file, "utf-8");
|
|
3146
3144
|
wiki.symbols.set_description(Number(id), content);
|
|
@@ -3157,8 +3155,9 @@ var referencing_symbol2 = new Command14("referencing-symbol");
|
|
|
3157
3155
|
referencing_symbol2.description("Symbols referencing the given symbol");
|
|
3158
3156
|
referencing_symbol2.argument("<symbol-id>", "Symbol ID");
|
|
3159
3157
|
referencing_symbol2.argument("<options>", "JSON options");
|
|
3160
|
-
referencing_symbol2.action(async (
|
|
3161
|
-
const
|
|
3158
|
+
referencing_symbol2.action(async (...args) => {
|
|
3159
|
+
const [symbol_id, options_json] = args;
|
|
3160
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3162
3161
|
const options = parse_options(options_json, SymbolRelationOptions, "symbols referencing-symbol");
|
|
3163
3162
|
const results = wiki.symbols.referencing_symbol(Number(symbol_id), options);
|
|
3164
3163
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3170,8 +3169,9 @@ var referenced_by_symbol2 = new Command15("referenced-by-symbol");
|
|
|
3170
3169
|
referenced_by_symbol2.description("Symbols referenced by the given symbol");
|
|
3171
3170
|
referenced_by_symbol2.argument("<symbol-id>", "Symbol ID");
|
|
3172
3171
|
referenced_by_symbol2.argument("<options>", "JSON options");
|
|
3173
|
-
referenced_by_symbol2.action(async (
|
|
3174
|
-
const
|
|
3172
|
+
referenced_by_symbol2.action(async (...args) => {
|
|
3173
|
+
const [symbol_id, options_json] = args;
|
|
3174
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3175
3175
|
const options = parse_options(options_json, SymbolRelationOptions, "symbols referenced-by-symbol");
|
|
3176
3176
|
const results = wiki.symbols.referenced_by_symbol(Number(symbol_id), options);
|
|
3177
3177
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3183,8 +3183,9 @@ var using_dependency4 = new Command16("using-dependency");
|
|
|
3183
3183
|
using_dependency4.description("Symbols using the given dependency");
|
|
3184
3184
|
using_dependency4.argument("<dep-id>", "Dependency ID");
|
|
3185
3185
|
using_dependency4.argument("<options>", "JSON options");
|
|
3186
|
-
using_dependency4.action(async (
|
|
3187
|
-
const
|
|
3186
|
+
using_dependency4.action(async (...args) => {
|
|
3187
|
+
const [dep_id, options_json] = args;
|
|
3188
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3188
3189
|
const options = parse_options(options_json, SymbolRelationOptions, "symbols using-dependency");
|
|
3189
3190
|
const results = wiki.symbols.using_dependency(Number(dep_id), options);
|
|
3190
3191
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3237,8 +3238,9 @@ import { Command as Command18 } from "commander";
|
|
|
3237
3238
|
var get8 = new Command18("get");
|
|
3238
3239
|
get8.description("Get a directory by ID");
|
|
3239
3240
|
get8.argument("<id>", "Directory ID");
|
|
3240
|
-
get8.action(async (
|
|
3241
|
-
const
|
|
3241
|
+
get8.action(async (...args) => {
|
|
3242
|
+
const [id] = args;
|
|
3243
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3242
3244
|
const directory = wiki.directories.get(Number(id));
|
|
3243
3245
|
env.log(JSON.stringify(directory, null, 2));
|
|
3244
3246
|
});
|
|
@@ -3248,8 +3250,9 @@ import { Command as Command19 } from "commander";
|
|
|
3248
3250
|
var search15 = new Command19("search");
|
|
3249
3251
|
search15.description("Search directories with JSON options");
|
|
3250
3252
|
search15.argument("<options>", "JSON options");
|
|
3251
|
-
search15.action(async (
|
|
3252
|
-
const
|
|
3253
|
+
search15.action(async (...args) => {
|
|
3254
|
+
const [options_json] = args;
|
|
3255
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3253
3256
|
const options = parse_options(options_json, DirectorySearchOptions, "directories search");
|
|
3254
3257
|
const results = wiki.directories.search(options);
|
|
3255
3258
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3262,8 +3265,9 @@ var set_description7 = new Command20("set-description");
|
|
|
3262
3265
|
set_description7.description("Set description for a directory");
|
|
3263
3266
|
set_description7.argument("<directory-id>", "Directory ID");
|
|
3264
3267
|
set_description7.argument("<markdown-file>", "Path to markdown file");
|
|
3265
|
-
set_description7.action(async (
|
|
3266
|
-
const
|
|
3268
|
+
set_description7.action(async (...args) => {
|
|
3269
|
+
const [id, file] = args;
|
|
3270
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3267
3271
|
try {
|
|
3268
3272
|
const content = readFileSync4(file, "utf-8");
|
|
3269
3273
|
wiki.directories.set_description(Number(id), content);
|
|
@@ -3280,8 +3284,9 @@ var children2 = new Command21("children");
|
|
|
3280
3284
|
children2.description("Child directories of the given directory");
|
|
3281
3285
|
children2.argument("<parent-id>", "Parent directory ID");
|
|
3282
3286
|
children2.argument("<options>", "JSON options");
|
|
3283
|
-
children2.action(async (
|
|
3284
|
-
const
|
|
3287
|
+
children2.action(async (...args) => {
|
|
3288
|
+
const [parent_id, options_json] = args;
|
|
3289
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3285
3290
|
const options = parse_options(options_json, DirectoryRelationOptions, "directories children");
|
|
3286
3291
|
const results = wiki.directories.children(Number(parent_id), options);
|
|
3287
3292
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3293,8 +3298,9 @@ var files4 = new Command22("files");
|
|
|
3293
3298
|
files4.description("Files in the given directory");
|
|
3294
3299
|
files4.argument("<directory-id>", "Directory ID");
|
|
3295
3300
|
files4.argument("<options>", "JSON options");
|
|
3296
|
-
files4.action(async (
|
|
3297
|
-
const
|
|
3301
|
+
files4.action(async (...args) => {
|
|
3302
|
+
const [directory_id, options_json] = args;
|
|
3303
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3298
3304
|
const options = parse_options(options_json, FileRelationOptions, "directories files");
|
|
3299
3305
|
const results = wiki.directories.files(Number(directory_id), options);
|
|
3300
3306
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3346,8 +3352,9 @@ import { Command as Command24 } from "commander";
|
|
|
3346
3352
|
var get9 = new Command24("get");
|
|
3347
3353
|
get9.description("Get a dependency by ID");
|
|
3348
3354
|
get9.argument("<id>", "Dependency ID");
|
|
3349
|
-
get9.action(async (
|
|
3350
|
-
const
|
|
3355
|
+
get9.action(async (...args) => {
|
|
3356
|
+
const [id] = args;
|
|
3357
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3351
3358
|
const dependency = wiki.dependencies.get(Number(id));
|
|
3352
3359
|
env.log(JSON.stringify(dependency, null, 2));
|
|
3353
3360
|
});
|
|
@@ -3357,8 +3364,9 @@ import { Command as Command25 } from "commander";
|
|
|
3357
3364
|
var search16 = new Command25("search");
|
|
3358
3365
|
search16.description("Search dependencies with JSON options");
|
|
3359
3366
|
search16.argument("<options>", "JSON options");
|
|
3360
|
-
search16.action(async (
|
|
3361
|
-
const
|
|
3367
|
+
search16.action(async (...args) => {
|
|
3368
|
+
const [options_json] = args;
|
|
3369
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3362
3370
|
const options = parse_options(options_json, DependencySearchOptions, "dependencies search");
|
|
3363
3371
|
const results = wiki.dependencies.search(options);
|
|
3364
3372
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3371,8 +3379,9 @@ var set_description8 = new Command26("set-description");
|
|
|
3371
3379
|
set_description8.description("Set description for a dependency");
|
|
3372
3380
|
set_description8.argument("<dependency-id>", "Dependency ID");
|
|
3373
3381
|
set_description8.argument("<markdown-file>", "Path to markdown file");
|
|
3374
|
-
set_description8.action(async (
|
|
3375
|
-
const
|
|
3382
|
+
set_description8.action(async (...args) => {
|
|
3383
|
+
const [id, file] = args;
|
|
3384
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3376
3385
|
try {
|
|
3377
3386
|
const content = readFileSync5(file, "utf-8");
|
|
3378
3387
|
wiki.dependencies.set_description(Number(id), content);
|
|
@@ -3389,8 +3398,9 @@ var used_by_file3 = new Command27("used-by-file");
|
|
|
3389
3398
|
used_by_file3.description("Dependencies used by the given file");
|
|
3390
3399
|
used_by_file3.argument("<file-id>", "File ID");
|
|
3391
3400
|
used_by_file3.argument("<options>", "JSON options");
|
|
3392
|
-
used_by_file3.action(async (
|
|
3393
|
-
const
|
|
3401
|
+
used_by_file3.action(async (...args) => {
|
|
3402
|
+
const [file_id, options_json] = args;
|
|
3403
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3394
3404
|
const options = parse_options(options_json, DependencySelectOptions, "dependencies used-by-file");
|
|
3395
3405
|
const results = wiki.dependencies.used_by_file(Number(file_id), options);
|
|
3396
3406
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3402,8 +3412,9 @@ var used_by_symbol3 = new Command28("used-by-symbol");
|
|
|
3402
3412
|
used_by_symbol3.description("Dependencies used by the given symbol");
|
|
3403
3413
|
used_by_symbol3.argument("<symbol-id>", "Symbol ID");
|
|
3404
3414
|
used_by_symbol3.argument("<options>", "JSON options");
|
|
3405
|
-
used_by_symbol3.action(async (
|
|
3406
|
-
const
|
|
3415
|
+
used_by_symbol3.action(async (...args) => {
|
|
3416
|
+
const [symbol_id, options_json] = args;
|
|
3417
|
+
const wiki = await load_wiki(get_db_path(...args));
|
|
3407
3418
|
const options = parse_options(options_json, DependencySelectOptions, "dependencies used-by-symbol");
|
|
3408
3419
|
const results = wiki.dependencies.used_by_symbol(Number(symbol_id), options);
|
|
3409
3420
|
env.log(JSON.stringify(results, null, 2));
|
|
@@ -3452,6 +3463,7 @@ var commands = [update7, status, describe, files3, symbols3, directories3, depen
|
|
|
3452
3463
|
async function run(argv) {
|
|
3453
3464
|
const program = new Command30();
|
|
3454
3465
|
program.name("codewiki").description("Describe and explore TypeScript codebases").version("0.0.1");
|
|
3466
|
+
program.option("--db <path>", "Database location", "./wiki.db");
|
|
3455
3467
|
for (const cmd of commands) program.addCommand(cmd);
|
|
3456
3468
|
return program.parseAsync(argv, { from: "user" });
|
|
3457
3469
|
}
|