@rexnow/rslib-plugin 3.1.1 → 3.1.2
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.
|
@@ -2,4 +2,7 @@ import type { SourceFile } from "ts-morph";
|
|
|
2
2
|
/**
|
|
3
3
|
* 生成弹幕模块接口
|
|
4
4
|
*/
|
|
5
|
-
export declare function generateDanmuModuleInterfaces(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule
|
|
5
|
+
export declare function generateDanmuModuleInterfaces(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule, typeNames?: {
|
|
6
|
+
paramsTypeName: string;
|
|
7
|
+
returnTypeName: string;
|
|
8
|
+
}): void;
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import type { SourceFile } from "ts-morph";
|
|
2
|
-
export declare function generateStreamModuleInterface(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule
|
|
2
|
+
export declare function generateStreamModuleInterface(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule, typeNames?: {
|
|
3
|
+
paramsTypeName: string;
|
|
4
|
+
returnTypeName: string;
|
|
5
|
+
}): void;
|
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
import type { SourceFile } from "ts-morph";
|
|
2
|
-
export declare function generateSubtitleModuleInterface(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule
|
|
2
|
+
export declare function generateSubtitleModuleInterface(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule, typeNames?: {
|
|
3
|
+
paramsTypeName: string;
|
|
4
|
+
returnTypeName: string;
|
|
5
|
+
}): void;
|
|
@@ -2,4 +2,7 @@ import type { SourceFile } from 'ts-morph';
|
|
|
2
2
|
/**
|
|
3
3
|
* 生成 Video 模块接口
|
|
4
4
|
*/
|
|
5
|
-
export declare function generateVideoModuleInterface(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule
|
|
5
|
+
export declare function generateVideoModuleInterface(nameSpaceName: string, sourceFile: SourceFile, module: WidgetModule, typeNames?: {
|
|
6
|
+
paramsTypeName: string;
|
|
7
|
+
returnTypeName: string;
|
|
8
|
+
}): void;
|
package/dist/index.js
CHANGED
|
@@ -6225,9 +6225,9 @@ function generateParamType(param) {
|
|
|
6225
6225
|
]
|
|
6226
6226
|
};
|
|
6227
6227
|
}
|
|
6228
|
-
function generateTypeName(module) {
|
|
6229
|
-
const paramsTypeName = toPascalCase(`${module.functionName}Params`);
|
|
6230
|
-
const returnTypeName = toPascalCase(`${module.functionName}ReturnType`);
|
|
6228
|
+
function generateTypeName(module, distinct = false) {
|
|
6229
|
+
const paramsTypeName = distinct ? `${toPascalCase(module.id)}${toPascalCase(module.functionName)}Params` : toPascalCase(`${module.functionName}Params`);
|
|
6230
|
+
const returnTypeName = distinct ? `${toPascalCase(module.id)}${toPascalCase(module.functionName)}ReturnType` : toPascalCase(`${module.functionName}ReturnType`);
|
|
6231
6231
|
return {
|
|
6232
6232
|
paramsTypeName,
|
|
6233
6233
|
returnTypeName
|
|
@@ -6271,10 +6271,10 @@ function getReturnTypeExtends(moduleId) {
|
|
|
6271
6271
|
return;
|
|
6272
6272
|
}
|
|
6273
6273
|
}
|
|
6274
|
-
function generateDanmuModuleInterfaces(nameSpaceName, sourceFile, module) {
|
|
6274
|
+
function generateDanmuModuleInterfaces(nameSpaceName, sourceFile, module, typeNames = generateTypeName(module)) {
|
|
6275
6275
|
if ("danmu" !== module.type) return;
|
|
6276
6276
|
const { id, title } = module;
|
|
6277
|
-
const { paramsTypeName, returnTypeName } =
|
|
6277
|
+
const { paramsTypeName, returnTypeName } = typeNames;
|
|
6278
6278
|
sourceFile.addInterface({
|
|
6279
6279
|
name: paramsTypeName,
|
|
6280
6280
|
docs: [
|
|
@@ -6300,10 +6300,9 @@ function generateDanmuModuleInterfaces(nameSpaceName, sourceFile, module) {
|
|
|
6300
6300
|
}
|
|
6301
6301
|
] : []
|
|
6302
6302
|
});
|
|
6303
|
-
generateModuleFunctionType(sourceFile, module);
|
|
6304
6303
|
}
|
|
6305
|
-
function generateStreamModuleInterface(nameSpaceName, sourceFile, module) {
|
|
6306
|
-
const { paramsTypeName, returnTypeName } =
|
|
6304
|
+
function generateStreamModuleInterface(nameSpaceName, sourceFile, module, typeNames = generateTypeName(module)) {
|
|
6305
|
+
const { paramsTypeName, returnTypeName } = typeNames;
|
|
6307
6306
|
sourceFile.addInterface({
|
|
6308
6307
|
name: paramsTypeName,
|
|
6309
6308
|
docs: [
|
|
@@ -6330,10 +6329,9 @@ function generateStreamModuleInterface(nameSpaceName, sourceFile, module) {
|
|
|
6330
6329
|
if ("loadResource" === module.id) writer.write("Array<StreamSourceItem>");
|
|
6331
6330
|
}
|
|
6332
6331
|
});
|
|
6333
|
-
generateModuleFunctionType(sourceFile, module);
|
|
6334
6332
|
}
|
|
6335
|
-
function generateSubtitleModuleInterface(nameSpaceName, sourceFile, module) {
|
|
6336
|
-
const { paramsTypeName, returnTypeName } =
|
|
6333
|
+
function generateSubtitleModuleInterface(nameSpaceName, sourceFile, module, typeNames = generateTypeName(module)) {
|
|
6334
|
+
const { paramsTypeName, returnTypeName } = typeNames;
|
|
6337
6335
|
sourceFile.addInterface({
|
|
6338
6336
|
name: paramsTypeName,
|
|
6339
6337
|
docs: [
|
|
@@ -6360,10 +6358,9 @@ function generateSubtitleModuleInterface(nameSpaceName, sourceFile, module) {
|
|
|
6360
6358
|
if ("loadSubtitle" === module.id) writer.write("Array<SubtitleItem>");
|
|
6361
6359
|
}
|
|
6362
6360
|
});
|
|
6363
|
-
generateModuleFunctionType(sourceFile, module);
|
|
6364
6361
|
}
|
|
6365
|
-
function generateVideoModuleInterface(nameSpaceName, sourceFile, module) {
|
|
6366
|
-
const { paramsTypeName, returnTypeName } =
|
|
6362
|
+
function generateVideoModuleInterface(nameSpaceName, sourceFile, module, typeNames = generateTypeName(module)) {
|
|
6363
|
+
const { paramsTypeName, returnTypeName } = typeNames;
|
|
6367
6364
|
sourceFile.addInterface({
|
|
6368
6365
|
name: paramsTypeName,
|
|
6369
6366
|
docs: [
|
|
@@ -6389,7 +6386,6 @@ function generateVideoModuleInterface(nameSpaceName, sourceFile, module) {
|
|
|
6389
6386
|
'Array<VideoItem>'
|
|
6390
6387
|
]
|
|
6391
6388
|
});
|
|
6392
|
-
generateModuleFunctionType(sourceFile, module);
|
|
6393
6389
|
}
|
|
6394
6390
|
function toExecutableWidgetMetadataSource(content) {
|
|
6395
6391
|
return content.replace(/\b(?:export\s+)?(?:const|let|var)\s+WidgetMetadata\b/g, 'WidgetMetadata');
|
|
@@ -6428,7 +6424,8 @@ function generateFunctionTypesFactory(api, sourceFile) {
|
|
|
6428
6424
|
if (!widgetMetadataObject) return;
|
|
6429
6425
|
const nameSpaceName = upperFirst(camelCase(widgetMetadataObject.id));
|
|
6430
6426
|
const nameSpace = sourceFile.addModule({
|
|
6431
|
-
name: nameSpaceName
|
|
6427
|
+
name: nameSpaceName,
|
|
6428
|
+
hasDeclareKeyword: true
|
|
6432
6429
|
});
|
|
6433
6430
|
nameSpace.addInterface({
|
|
6434
6431
|
name: "GlobalParams",
|
|
@@ -6441,25 +6438,49 @@ function generateFunctionTypesFactory(api, sourceFile) {
|
|
|
6441
6438
|
};
|
|
6442
6439
|
}
|
|
6443
6440
|
function generateModuleInterfaces(nameSpaceName, sourceFile, modules) {
|
|
6441
|
+
const modulesByFunctionName = new Map();
|
|
6442
|
+
for (const module of modules){
|
|
6443
|
+
const group = modulesByFunctionName.get(module.functionName);
|
|
6444
|
+
if (group) group.push(module);
|
|
6445
|
+
else modulesByFunctionName.set(module.functionName, [
|
|
6446
|
+
module
|
|
6447
|
+
]);
|
|
6448
|
+
}
|
|
6444
6449
|
for (const module of modules){
|
|
6445
6450
|
const { id, type: moduleType } = module;
|
|
6451
|
+
const shared = (modulesByFunctionName.get(module.functionName)?.length ?? 0) > 1;
|
|
6452
|
+
const typeNames = generateTypeName(module, shared);
|
|
6446
6453
|
sourceFile.addStatements(`\n//#region ${id}`);
|
|
6447
6454
|
switch(moduleType){
|
|
6448
6455
|
case "danmu":
|
|
6449
|
-
generateDanmuModuleInterfaces(nameSpaceName, sourceFile, module);
|
|
6456
|
+
generateDanmuModuleInterfaces(nameSpaceName, sourceFile, module, typeNames);
|
|
6450
6457
|
break;
|
|
6451
6458
|
case "stream":
|
|
6452
|
-
generateStreamModuleInterface(nameSpaceName, sourceFile, module);
|
|
6459
|
+
generateStreamModuleInterface(nameSpaceName, sourceFile, module, typeNames);
|
|
6453
6460
|
break;
|
|
6454
6461
|
case "subtitle":
|
|
6455
|
-
generateSubtitleModuleInterface(nameSpaceName, sourceFile, module);
|
|
6462
|
+
generateSubtitleModuleInterface(nameSpaceName, sourceFile, module, typeNames);
|
|
6456
6463
|
break;
|
|
6457
6464
|
default:
|
|
6458
|
-
generateVideoModuleInterface(nameSpaceName, sourceFile, module);
|
|
6465
|
+
generateVideoModuleInterface(nameSpaceName, sourceFile, module, typeNames);
|
|
6459
6466
|
break;
|
|
6460
6467
|
}
|
|
6468
|
+
if (!shared) generateModuleFunctionType(sourceFile, module);
|
|
6461
6469
|
sourceFile.addStatements(`//#endregion ${id}`);
|
|
6462
6470
|
}
|
|
6471
|
+
for (const group of modulesByFunctionName.values()){
|
|
6472
|
+
if (group.length < 2) continue;
|
|
6473
|
+
const { paramsTypeName, returnTypeName } = generateTypeName(group[0]);
|
|
6474
|
+
sourceFile.addTypeAlias({
|
|
6475
|
+
name: paramsTypeName,
|
|
6476
|
+
type: group.map((module)=>generateTypeName(module, true).paramsTypeName).join(" | ")
|
|
6477
|
+
});
|
|
6478
|
+
sourceFile.addTypeAlias({
|
|
6479
|
+
name: returnTypeName,
|
|
6480
|
+
type: group.map((module)=>generateTypeName(module, true).returnTypeName).join(" | ")
|
|
6481
|
+
});
|
|
6482
|
+
generateModuleFunctionType(sourceFile, group[0]);
|
|
6483
|
+
}
|
|
6463
6484
|
}
|
|
6464
6485
|
async function clearExportDeclaration(distPath) {
|
|
6465
6486
|
if (!node_fs.existsSync(distPath)) return;
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export declare const toPascalCase: (str: string) => string;
|
|
|
7
7
|
* 生成参数类型
|
|
8
8
|
*/
|
|
9
9
|
export declare function generateParamType(param: WidgetModuleParam): OptionalKind<PropertySignatureStructure>;
|
|
10
|
-
export declare function generateTypeName(module: WidgetModule): {
|
|
10
|
+
export declare function generateTypeName(module: WidgetModule, distinct?: boolean): {
|
|
11
11
|
paramsTypeName: string;
|
|
12
12
|
returnTypeName: string;
|
|
13
13
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rexnow/rslib-plugin",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": {
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"provenance": true
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@rexnow/libs": "3.1.
|
|
20
|
+
"@rexnow/libs": "3.1.2",
|
|
21
21
|
"@rsbuild/core": "^2.2.5",
|
|
22
22
|
"@rslib/core": "^1.0.0",
|
|
23
23
|
"@rstest/adapter-rslib": "^0.11.12",
|