Skip to content

Commit 2330f20

Browse files
committed
Update TypeScript Declaration
Thinking if WenyanConfig should be exposed.
1 parent 17fedb8 commit 2330f20

4 files changed

Lines changed: 101 additions & 35 deletions

File tree

src/javascript/CoreHandler.js

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ import {
2222
} from "./Misc.js";
2323

2424
export class WenyanConfig {
25+
/**
26+
* 魔曰 文言文加密参数
27+
*
28+
* @param{bool}PunctuationMark 指定是否为密文添加标点符号,默认 true/添加;
29+
* @param{int}RandomIndex 密文算法的随机程度,越大随机性越强,默认 50,最大100,超过100将会出错;
30+
* @param{bool}PianwenMode 指定是否强制生成骈文密文,默认 false;
31+
* @param{bool}LogicMode 指定是否强制生成逻辑密文,默认 false;
32+
*/
2533
constructor(
2634
PunctuationMark = true,
2735
RandomIndex = 50,
@@ -62,10 +70,16 @@ export function Enc(input, key, WenyanConfigObj) {
6270
//映射
6371
let Res = WenyanSimulatorObj.enMap(
6472
OriginStr,
65-
WenyanConfigObj.PunctuationMark,
66-
WenyanConfigObj.RandomIndex,
67-
WenyanConfigObj.PianwenMode,
68-
WenyanConfigObj.LogicMode
73+
WenyanConfigObj.PunctuationMark !== undefined
74+
? WenyanConfigObj.PunctuationMark
75+
: true,
76+
WenyanConfigObj.RandomIndex !== undefined
77+
? WenyanConfigObj.RandomIndex
78+
: 50,
79+
WenyanConfigObj.PianwenMode !== undefined
80+
? WenyanConfigObj.PianwenMode
81+
: false,
82+
WenyanConfigObj.LogicMode !== undefined ? WenyanConfigObj.LogicMode : false
6983
);
7084

7185
return Res;

src/javascript/main.d.ts

Lines changed: 51 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
declare module "abracadabra-cn";
2+
3+
export interface WenyanConfig {
4+
/** 指定是否为密文添加标点符号,默认 true/添加; */
5+
PunctuationMark?: boolean;
6+
/** 密文算法的随机程度,越大随机性越强,默认 50,最大100,超过100将会出错; */
7+
RandomIndex?: number;
8+
/** 指定是否强制生成骈文密文,默认 false; */
9+
PianwenMode?: boolean;
10+
/** 指定是否强制生成逻辑密文,默认 false; */
11+
LogicMode?: boolean;
12+
}
213
export class Abracadabra {
314
static TEXT: "TEXT";
415
static UINT8: "UINT8";
@@ -14,6 +25,22 @@ export class Abracadabra {
1425
*/
1526
constructor(inputType?: "TEXT" | "UINT8", outputType?: "TEXT" | "UINT8");
1627

28+
/**
29+
* 魔曰 文言文加密模式
30+
*
31+
* @param {string | Uint8Array} input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
32+
* @param {string} mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
33+
* @param {string} key 指定密钥,默认是 ABRACADABRA;
34+
* @param {WenyanConfig} WenyanConfigObj 文言文的生成配置;
35+
* @return {number} 成功则返回 0(失败不会返回,会抛出异常)
36+
*/
37+
WenyanInput(
38+
input: string | Uint8Array,
39+
mode: "ENCRYPT" | "DECRYPT",
40+
key?: string,
41+
WenyanConfigObj?: WenyanConfig
42+
): number;
43+
1744
/**
1845
* 魔曰 传统加密模式
1946
*
@@ -23,22 +50,36 @@ export class Abracadabra {
2350
* @param {bool} q 指定是否在加密后省略标志位,默认 false/不省略;
2451
* @return {number} 成功则返回 0(失败不会返回,会抛出异常)
2552
*/
26-
Input(
53+
OldInput(
2754
input: string | Uint8Array,
2855
mode: "ENCRYPT" | "DECRYPT" | "AUTO",
2956
key?: string,
3057
q?: boolean
3158
): number;
3259

3360
/**
34-
* 魔曰 获取加密/解密后的结果
35-
* @returns {string | Uint8Array} 根据此前指定的输出类型,可能是字符串或字节数组
61+
* 魔曰 传统加密模式
62+
*
63+
* **这是一个过时的接口,请尽可能切换到新接口 OldInput()**
64+
*
65+
* @param {string | Uint8Array} input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
66+
* @param {string} mode 指定模式,可以是 ENCRYPT DECRYPT AUTO 中的一种;
67+
* @param {string} key 指定密钥,默认是 ABRACADABRA;
68+
* @param {bool} q 指定是否在加密后省略标志位,默认 false/不省略;
69+
* @return {number} 成功则返回 0(失败不会返回,会抛出异常)
3670
*/
37-
Output(): string | Uint8Array;
71+
Input(
72+
input: string | Uint8Array,
73+
mode: "ENCRYPT" | "DECRYPT" | "AUTO",
74+
key?: string,
75+
q?: boolean
76+
): number;
3877

3978
/**
4079
* 魔曰 文言文加密模式
4180
*
81+
* **这是一个过时的接口,请尽可能切换到新接口 WenyanInput()**
82+
*
4283
* @param {string | Uint8Array} input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
4384
* @param {string} mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
4485
* @param {string} key 指定密钥,默认是 ABRACADABRA;
@@ -57,4 +98,10 @@ export class Abracadabra {
5798
p?: boolean,
5899
l?: boolean
59100
): number;
101+
102+
/**
103+
* 魔曰 获取加密/解密后的结果
104+
* @returns {string | Uint8Array} 根据此前指定的输出类型,可能是字符串或字节数组
105+
*/
106+
Output(): string | Uint8Array;
60107
}

src/javascript/main.js

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import { Base64 } from "js-base64";
3232
import * as Core from "./CoreHandler.js";
3333
//import * as Util_Next from "./utils_next.js";
3434
import { preCheck_OLD, PreCheckResult, stringToUint8Array } from "./Misc.js";
35-
3635
export class Abracadabra {
3736
//主类
3837

@@ -71,9 +70,14 @@ export class Abracadabra {
7170
* @param{string | Uint8Array}input 输入的数据,根据此前指定的输入类型,可能是字符串或字节数组
7271
* @param{string}mode 指定模式,可以是 ENCRYPT DECRYPT 中的一种;
7372
* @param{string}key 指定密钥,默认是 ABRACADABRA;
74-
* @param{Core.WenyanConfig}WenyanConfigObj 文言文的生成配置;
73+
* @param{WenyanConfig}WenyanConfigObj 文言文的生成配置;
7574
*/
76-
WenyanInput(input, mode, key = "ABRACADABRA", WenyanConfigObj) {
75+
WenyanInput(
76+
input,
77+
mode,
78+
key = "ABRACADABRA",
79+
WenyanConfigObj = new Core.WenyanConfig(true, 50, false, false)
80+
) {
7781
if (this.#input == Abracadabra.UINT8) {
7882
//如果指定输入类型是UINT8
7983
if (Object.prototype.toString.call(input) != "[object Uint8Array]") {

src/javascript/main.test.js

Lines changed: 25 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -56,41 +56,38 @@ test("加/解密测试", { timeout: 15000 }, () => {
5656

5757
//将随机字符串用仿真加密循环加/解密6次,判断一致性和中途是否出错。
5858
for (let i = 0; i <= 6; i++) {
59-
Abra.Input_Next(
60-
TestTemp,
61-
"ENCRYPT",
62-
"ABRACADABRA",
63-
i % 2 == 0,
64-
50,
65-
i % 2 == 0,
66-
i % 2 != 0
67-
);
59+
Abra.WenyanInput(TestTemp, "ENCRYPT", "ABRACADABRA", {
60+
PunctuationMark: i % 2 == 0,
61+
RandomIndex: 50,
62+
PianwenMode: i % 2 == 0,
63+
LogicMode: i % 2 != 0,
64+
});
6865
TestTemp = Abra.Output();
6966
}
7067

7168
for (let i = 0; i <= 6; i++) {
72-
Abra.Input_Next(TestTemp, "DECRYPT", "ABRACADABRA");
69+
Abra.WenyanInput(TestTemp, "DECRYPT", "ABRACADABRA");
7370
TestTemp = Abra.Output();
7471
}
7572

7673
//将随机字符串用传统加密循环加/解密6次,判断一致性和中途是否出错。
7774
for (let i = 0; i <= 6; i++) {
78-
Abra.Input(TestTemp2, "ENCRYPT", "ABRACADABRA", true);
75+
Abra.OldInput(TestTemp2, "ENCRYPT", "ABRACADABRA", true);
7976
TestTemp2 = Abra.Output();
8077
}
8178

8279
for (let i = 0; i <= 6; i++) {
83-
Abra.Input(TestTemp2, "DECRYPT", "ABRACADABRA");
80+
Abra.OldInput(TestTemp2, "DECRYPT", "ABRACADABRA");
8481
TestTemp2 = Abra.Output();
8582
}
8683
expect(TestTemp).toBe(TestString);
8784
expect(TestTemp2).toBe(TestString);
8885

8986
//测试传统加密标志位
9087

91-
Abra.Input(TestTemp3, "AUTO", "ABRACADABRA");
88+
Abra.OldInput(TestTemp3, "AUTO", "ABRACADABRA");
9289
TestTemp3 = Abra.Output();
93-
Abra.Input(TestTemp3, "AUTO", "ABRACADABRA");
90+
Abra.OldInput(TestTemp3, "AUTO", "ABRACADABRA");
9491
TestTemp3 = Abra.Output();
9592

9693
expect(TestTemp3).toBe(TestString);
@@ -104,14 +101,16 @@ test("链接压缩测试", { timeout: 15000 }, () => {
104101
//测试不同链接的加解密一致性
105102
let TestTemp = "";
106103
let TestTemp2 = "";
107-
Abra.Input_Next(item, "ENCRYPT", "ABRACADABRA", true, 100);
104+
Abra.WenyanInput(item, "ENCRYPT", "ABRACADABRA", {
105+
RandomIndex: 100,
106+
});
108107
TestTemp = Abra.Output();
109-
Abra.Input_Next(TestTemp, "DECRYPT", "ABRACADABRA");
108+
Abra.WenyanInput(TestTemp, "DECRYPT", "ABRACADABRA");
110109
TestTemp = Abra.Output();
111110

112-
Abra.Input(item, "ENCRYPT", "ABRACADABRA", true);
111+
Abra.OldInput(item, "ENCRYPT", "ABRACADABRA", true);
113112
TestTemp2 = Abra.Output();
114-
Abra.Input(TestTemp2, "DECRYPT", "ABRACADABRA");
113+
Abra.OldInput(TestTemp2, "DECRYPT", "ABRACADABRA");
115114
TestTemp2 = Abra.Output();
116115

117116
expect(TestTemp).toBe(item);
@@ -127,20 +126,22 @@ test("随机数据加密测试", { timeout: 15000 }, () => {
127126
let TestTemp;
128127
let TestTemp2;
129128
let TestTemp3;
130-
Abra.Input_Next(data, "ENCRYPT", "ABRACADABRA", true, 100);
129+
Abra.WenyanInput(data, "ENCRYPT", "ABRACADABRA", {
130+
RandomIndex: 100,
131+
});
131132
TestTemp = Abra.Output();
132-
Abra.Input_Next(TestTemp, "DECRYPT", "ABRACADABRA");
133+
Abra.WenyanInput(TestTemp, "DECRYPT", "ABRACADABRA");
133134
TestTemp = Abra.Output();
134135

135-
Abra.Input(data, "ENCRYPT", "ABRACADABRA", true);
136+
Abra.OldInput(data, "ENCRYPT", "ABRACADABRA", true);
136137
TestTemp2 = Abra.Output();
137-
Abra.Input(TestTemp2, "DECRYPT", "ABRACADABRA");
138+
Abra.OldInput(TestTemp2, "DECRYPT", "ABRACADABRA");
138139
TestTemp2 = Abra.Output();
139140

140141
//传统模式,自动判别
141-
Abra.Input(data, "AUTO", "ABRACADABRA");
142+
Abra.OldInput(data, "AUTO", "ABRACADABRA");
142143
TestTemp3 = Abra.Output();
143-
Abra.Input(TestTemp3, "AUTO", "ABRACADABRA");
144+
Abra.OldInput(TestTemp3, "AUTO", "ABRACADABRA");
144145
TestTemp3 = Abra.Output();
145146

146147
expect(TestTemp).toStrictEqual(data);

0 commit comments

Comments
 (0)