@ddunigma/node 1.0.26 → 1.1.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 (53) hide show
  1. package/README.md +4 -0
  2. package/dist/cjs/base/BaseDdu.d.ts +38 -0
  3. package/dist/cjs/base/BaseDdu.js +78 -0
  4. package/dist/cjs/base/index.d.ts +1 -0
  5. package/dist/cjs/base/index.js +5 -0
  6. package/dist/cjs/charSets/index.d.ts +4 -0
  7. package/dist/cjs/charSets/index.js +4341 -0
  8. package/dist/cjs/encoders/Ddu64.d.ts +49 -0
  9. package/dist/cjs/encoders/Ddu64.js +355 -0
  10. package/dist/cjs/encoders/index.d.ts +1 -0
  11. package/dist/cjs/encoders/index.js +6 -0
  12. package/dist/cjs/index.d.ts +4 -58
  13. package/dist/cjs/index.js +10 -329
  14. package/dist/cjs/types/DduDefaultTypes.d.ts +3 -0
  15. package/dist/cjs/types/DduDefaultTypes.js +12 -0
  16. package/dist/cjs/types/DduEnums.d.ts +6 -0
  17. package/dist/cjs/types/DduEnums.js +10 -0
  18. package/dist/cjs/types/DduInterface.d.ts +24 -0
  19. package/dist/cjs/types/DduInterface.js +2 -0
  20. package/dist/cjs/types/index.d.ts +3 -0
  21. package/dist/cjs/types/index.js +19 -0
  22. package/dist/mjs/base/BaseDdu.d.ts +38 -0
  23. package/dist/mjs/base/BaseDdu.js +72 -0
  24. package/dist/mjs/base/index.d.ts +1 -0
  25. package/dist/mjs/base/index.js +1 -0
  26. package/dist/mjs/charSets/index.d.ts +4 -0
  27. package/dist/mjs/charSets/index.js +4336 -0
  28. package/dist/mjs/encoders/Ddu64.d.ts +49 -0
  29. package/dist/mjs/encoders/Ddu64.js +358 -0
  30. package/dist/mjs/encoders/index.d.ts +1 -0
  31. package/dist/mjs/encoders/index.js +2 -0
  32. package/dist/mjs/index.d.ts +4 -58
  33. package/dist/mjs/index.js +6 -330
  34. package/dist/mjs/types/DduDefaultTypes.d.ts +3 -0
  35. package/dist/mjs/types/DduDefaultTypes.js +9 -0
  36. package/dist/mjs/types/DduEnums.d.ts +6 -0
  37. package/dist/mjs/types/DduEnums.js +7 -0
  38. package/dist/mjs/types/DduInterface.d.ts +24 -0
  39. package/dist/mjs/types/index.d.ts +3 -0
  40. package/dist/mjs/types/index.js +3 -0
  41. package/package.json +3 -3
  42. package/dist/cjs/test/test2.js +0 -44
  43. package/dist/cjs/test/test3.d.ts +0 -1
  44. package/dist/cjs/test/test3.js +0 -20
  45. package/dist/cjs/test/tester2.d.ts +0 -1
  46. package/dist/cjs/test/tester2.js +0 -46
  47. package/dist/mjs/test/test2.d.ts +0 -1
  48. package/dist/mjs/test/test2.js +0 -42
  49. package/dist/mjs/test/test3.d.ts +0 -1
  50. package/dist/mjs/test/test3.js +0 -18
  51. package/dist/mjs/test/tester2.d.ts +0 -1
  52. package/dist/mjs/test/tester2.js +0 -44
  53. /package/dist/{cjs/test/test2.d.ts → mjs/types/DduInterface.js} +0 -0
package/dist/mjs/index.js CHANGED
@@ -1,330 +1,6 @@
1
- export class Ddu64 {
2
- dduChar;
3
- paddingChar;
4
- dduCharKr = [
5
- "뜌",
6
- "",
7
- "이",
8
- "우",
9
- "야",
10
- "!",
11
- "?",
12
- ".",
13
- ];
14
- paddingCharKr = "뭐";
15
- defaultEncoding = "utf-8";
16
- bitLengthMap = new Map();
17
- binaryLookup = Array.from({ length: 256 }, (_, i) => i.toString(2).padStart(8, "0"));
18
- dduBinaryLookup = new Map();
19
- dduBinaryLookupKr = new Map();
20
- paddingRegex = new Map();
21
- constructor(dduChar, paddingChar) {
22
- if (typeof dduChar === "string") {
23
- const removeDuplicatesString = [...new Set(dduChar.trim())].join("");
24
- this.dduChar = removeDuplicatesString.trim().split("");
25
- }
26
- else {
27
- this.dduChar = dduChar || this.dduCharKr;
28
- }
29
- this.paddingChar = paddingChar || this.paddingCharKr;
30
- this.dduChar.forEach((char, index) => this.dduBinaryLookup.set(char, index));
31
- this.dduCharKr.forEach((char, index) => this.dduBinaryLookupKr.set(char, index));
32
- this.paddingRegex.set("default", new RegExp(this.paddingChar, "g"));
33
- this.paddingRegex.set("KR", new RegExp(this.paddingCharKr, "g"));
34
- }
35
- getBitLength(setLength) {
36
- let cached = this.bitLengthMap.get(setLength);
37
- if (cached === undefined) {
38
- cached = Math.ceil(Math.log2(setLength));
39
- this.bitLengthMap.set(setLength, cached);
40
- }
41
- return cached;
42
- }
43
- getLargestPowerOfTwo(n) {
44
- return 2 ** Math.floor(Math.log2(n));
45
- }
46
- *splitString(s, length) {
47
- for (let i = 0; i < s.length; i += length) {
48
- yield s.slice(i, Math.min(i + length, s.length));
49
- }
50
- }
51
- getSelectedSets(dduSetSymbol, usePowerOfTwo) {
52
- const isKR = dduSetSymbol === "KR";
53
- const dduSet = isKR ? this.dduCharKr : this.dduChar;
54
- const padChar = isKR ? this.paddingCharKr : this.paddingChar;
55
- let dduLength = dduSet.length;
56
- if (usePowerOfTwo) {
57
- const powerOfTwoLength = this.getLargestPowerOfTwo(dduLength);
58
- dduLength = powerOfTwoLength;
59
- }
60
- return {
61
- dduSet: usePowerOfTwo ? dduSet.slice(0, dduLength) : dduSet,
62
- padChar,
63
- dduLength,
64
- bitLength: this.getBitLength(dduLength),
65
- lookupTable: isKR ? this.dduBinaryLookupKr : this.dduBinaryLookup,
66
- paddingRegExp: this.paddingRegex.get(isKR ? "KR" : "default"),
67
- };
68
- }
69
- bufferToDduBinary(input, bitLength) {
70
- const encodedBin = input.reduce((acc, byte) => acc + this.binaryLookup[byte], "");
71
- const dduBinary = Array.from(this.splitString(encodedBin, bitLength));
72
- const padding = bitLength - dduBinary[dduBinary.length - 1].length;
73
- if (padding > 0) {
74
- dduBinary[dduBinary.length - 1] += "0".repeat(padding);
75
- }
76
- return { dduBinary, padding };
77
- }
78
- dduBinaryToBuffer(decodedBin, paddingBits) {
79
- if (paddingBits > 0) {
80
- decodedBin = decodedBin.slice(0, -paddingBits);
81
- }
82
- const buffer = [];
83
- for (let i = 0; i < decodedBin.length; i += 8) {
84
- buffer.push(parseInt(decodedBin.slice(i, i + 8), 2));
85
- }
86
- return Buffer.from(buffer);
87
- }
88
- encode(input, options = {}) {
89
- const { dduSetSymbol = "default", encoding = this.defaultEncoding, usePowerOfTwo = true, } = options;
90
- const bufferInput = typeof input === "string" ? Buffer.from(input, encoding) : input;
91
- const { dduSet, padChar, dduLength, bitLength } = this.getSelectedSets(dduSetSymbol, usePowerOfTwo);
92
- const { dduBinary, padding } = this.bufferToDduBinary(bufferInput, bitLength);
93
- let resultString = "";
94
- for (const binaryChunk of dduBinary) {
95
- const charInt = parseInt(binaryChunk, 2);
96
- if (usePowerOfTwo) {
97
- resultString += dduSet[charInt];
98
- }
99
- else {
100
- const quotient = Math.floor(charInt / dduLength);
101
- const remainder = charInt % dduLength;
102
- resultString += dduSet[quotient] + dduSet[remainder];
103
- }
104
- }
105
- return padding > 0
106
- ? resultString + padChar.repeat(Math.floor(padding / 2))
107
- : resultString;
108
- }
109
- decode(input, options = {}) {
110
- const { dduSetSymbol = "default", encoding = this.defaultEncoding, usePowerOfTwo = true, } = options;
111
- const { dduSet, dduLength, bitLength, lookupTable, paddingRegExp } = this.getSelectedSets(dduSetSymbol, usePowerOfTwo);
112
- const paddingCount = (input.match(paddingRegExp) || []).length;
113
- const paddingBits = paddingCount * 2;
114
- input = input.replace(paddingRegExp, "");
115
- let dduBinary = "";
116
- for (let i = 0; i < input.length; i += usePowerOfTwo ? 1 : 2) {
117
- const firstChar = input[i];
118
- const secondChar = input[i + 1];
119
- if (usePowerOfTwo) {
120
- const charIndex = lookupTable.get(firstChar);
121
- if (charIndex === undefined)
122
- throw new Error(`Invalid character: ${firstChar}`);
123
- dduBinary += charIndex.toString(2).padStart(bitLength, "0");
124
- }
125
- else {
126
- const firstIndex = lookupTable.get(firstChar);
127
- const secondIndex = lookupTable.get(secondChar);
128
- if (firstIndex === undefined || secondIndex === undefined)
129
- throw new Error(`Invalid character: ${firstChar} or ${secondChar}`);
130
- const value = firstIndex * dduLength + secondIndex;
131
- dduBinary += value.toString(2).padStart(bitLength, "0");
132
- }
133
- }
134
- const decoded = this.dduBinaryToBuffer(dduBinary, usePowerOfTwo ? paddingBits : paddingCount * bitLength);
135
- return decoded.toString(encoding);
136
- }
137
- }
138
- export class Custom64 {
139
- dduChar;
140
- paddingChar;
141
- dduCharKr = [
142
- "A",
143
- "s",
144
- "q",
145
- "r",
146
- "0",
147
- "z",
148
- "3",
149
- "t",
150
- "y",
151
- "1",
152
- "5",
153
- "2",
154
- "4",
155
- "E",
156
- "B",
157
- "C",
158
- "Q",
159
- "F",
160
- "R",
161
- "T",
162
- "U",
163
- "W",
164
- "V",
165
- "X",
166
- "Y",
167
- "Z",
168
- "b",
169
- "a",
170
- "c",
171
- "d",
172
- "D",
173
- "G",
174
- "L",
175
- "H",
176
- "I",
177
- "+",
178
- "J",
179
- "K",
180
- "M",
181
- "O",
182
- "N",
183
- "f",
184
- "e",
185
- "h",
186
- "g",
187
- "P",
188
- "i",
189
- "S",
190
- "k",
191
- "l",
192
- "m",
193
- "u",
194
- "j",
195
- "v",
196
- "n",
197
- "o",
198
- "p",
199
- "9",
200
- "w",
201
- "6",
202
- "7",
203
- "8",
204
- "x",
205
- "/",
206
- ];
207
- paddingCharKr = "=";
208
- defaultEncoding = "utf-8";
209
- bitLengthMap = new Map();
210
- binaryLookup = Array.from({ length: 256 }, (_, i) => i.toString(2).padStart(8, "0"));
211
- dduBinaryLookup = new Map();
212
- dduBinaryLookupKr = new Map();
213
- paddingRegex = new Map();
214
- constructor(dduChar, paddingChar) {
215
- if (typeof dduChar === "string") {
216
- const removeDuplicatesString = [...new Set(dduChar.trim())].join("");
217
- this.dduChar = removeDuplicatesString.trim().split("");
218
- }
219
- else {
220
- this.dduChar = dduChar || this.dduCharKr;
221
- }
222
- this.paddingChar = paddingChar || this.paddingCharKr;
223
- this.dduChar.forEach((char, index) => this.dduBinaryLookup.set(char, index));
224
- this.dduCharKr.forEach((char, index) => this.dduBinaryLookupKr.set(char, index));
225
- this.paddingRegex.set("default", new RegExp(this.paddingChar, "g"));
226
- this.paddingRegex.set("KR", new RegExp(this.paddingCharKr, "g"));
227
- }
228
- getBitLength(setLength) {
229
- let cached = this.bitLengthMap.get(setLength);
230
- if (cached === undefined) {
231
- cached = Math.ceil(Math.log2(setLength));
232
- this.bitLengthMap.set(setLength, cached);
233
- }
234
- return cached;
235
- }
236
- getLargestPowerOfTwo(n) {
237
- return 2 ** Math.floor(Math.log2(n));
238
- }
239
- *splitString(s, length) {
240
- for (let i = 0; i < s.length; i += length) {
241
- yield s.slice(i, Math.min(i + length, s.length));
242
- }
243
- }
244
- getSelectedSets(dduSetSymbol, usePowerOfTwo) {
245
- const isKR = dduSetSymbol === "KR";
246
- const dduSet = isKR ? this.dduCharKr : this.dduChar;
247
- const padChar = isKR ? this.paddingCharKr : this.paddingChar;
248
- let dduLength = dduSet.length;
249
- if (usePowerOfTwo) {
250
- const powerOfTwoLength = this.getLargestPowerOfTwo(dduLength);
251
- dduLength = powerOfTwoLength;
252
- }
253
- return {
254
- dduSet: usePowerOfTwo ? dduSet.slice(0, dduLength) : dduSet,
255
- padChar,
256
- dduLength,
257
- bitLength: this.getBitLength(dduLength),
258
- lookupTable: isKR ? this.dduBinaryLookupKr : this.dduBinaryLookup,
259
- paddingRegExp: this.paddingRegex.get(isKR ? "KR" : "default"),
260
- };
261
- }
262
- bufferToDduBinary(input, bitLength) {
263
- const encodedBin = input.reduce((acc, byte) => acc + this.binaryLookup[byte], "");
264
- const dduBinary = Array.from(this.splitString(encodedBin, bitLength));
265
- const padding = bitLength - dduBinary[dduBinary.length - 1].length;
266
- if (padding > 0) {
267
- dduBinary[dduBinary.length - 1] += "0".repeat(padding);
268
- }
269
- return { dduBinary, padding };
270
- }
271
- dduBinaryToBuffer(decodedBin, paddingBits) {
272
- if (paddingBits > 0) {
273
- decodedBin = decodedBin.slice(0, -paddingBits);
274
- }
275
- const buffer = [];
276
- for (let i = 0; i < decodedBin.length; i += 8) {
277
- buffer.push(parseInt(decodedBin.slice(i, i + 8), 2));
278
- }
279
- return Buffer.from(buffer);
280
- }
281
- encode(input, options = {}) {
282
- const { dduSetSymbol = "default", encoding = this.defaultEncoding, usePowerOfTwo = true, } = options;
283
- const bufferInput = typeof input === "string" ? Buffer.from(input, encoding) : input;
284
- const { dduSet, padChar, dduLength, bitLength } = this.getSelectedSets(dduSetSymbol, usePowerOfTwo);
285
- const { dduBinary, padding } = this.bufferToDduBinary(bufferInput, bitLength);
286
- let resultString = "";
287
- for (const binaryChunk of dduBinary) {
288
- const charInt = parseInt(binaryChunk, 2);
289
- if (usePowerOfTwo) {
290
- resultString += dduSet[charInt];
291
- }
292
- else {
293
- const quotient = Math.floor(charInt / dduLength);
294
- const remainder = charInt % dduLength;
295
- resultString += dduSet[quotient] + dduSet[remainder];
296
- }
297
- }
298
- return padding > 0
299
- ? resultString + padChar.repeat(Math.floor(padding / 2))
300
- : resultString;
301
- }
302
- decode(input, options = {}) {
303
- const { dduSetSymbol = "default", encoding = this.defaultEncoding, usePowerOfTwo = true, } = options;
304
- const { dduSet, dduLength, bitLength, lookupTable, paddingRegExp } = this.getSelectedSets(dduSetSymbol, usePowerOfTwo);
305
- const paddingCount = (input.match(paddingRegExp) || []).length;
306
- const paddingBits = paddingCount * 2;
307
- input = input.replace(paddingRegExp, "");
308
- let dduBinary = "";
309
- for (let i = 0; i < input.length; i += usePowerOfTwo ? 1 : 2) {
310
- const firstChar = input[i];
311
- const secondChar = input[i + 1];
312
- if (usePowerOfTwo) {
313
- const charIndex = lookupTable.get(firstChar);
314
- if (charIndex === undefined)
315
- throw new Error(`Invalid character: ${firstChar}`);
316
- dduBinary += charIndex.toString(2).padStart(bitLength, "0");
317
- }
318
- else {
319
- const firstIndex = lookupTable.get(firstChar);
320
- const secondIndex = lookupTable.get(secondChar);
321
- if (firstIndex === undefined || secondIndex === undefined)
322
- throw new Error(`Invalid character: ${firstChar} or ${secondChar}`);
323
- const value = firstIndex * dduLength + secondIndex;
324
- dduBinary += value.toString(2).padStart(bitLength, "0");
325
- }
326
- }
327
- const decoded = this.dduBinaryToBuffer(dduBinary, usePowerOfTwo ? paddingBits : paddingCount * bitLength);
328
- return decoded.toString(encoding);
329
- }
330
- }
1
+ // Export enums
2
+ export { DduSetSymbol } from "./types";
3
+ // Export base classes
4
+ export { BaseDdu } from "./base";
5
+ // Export encoders
6
+ export { Ddu64 } from "./encoders";
@@ -0,0 +1,3 @@
1
+ import { DduConstructorOptions } from "./DduInterface";
2
+ declare const dduDefaultConstructorOptions: DduConstructorOptions;
3
+ export { dduDefaultConstructorOptions };
@@ -0,0 +1,9 @@
1
+ import { DduSetSymbol } from "./DduEnums";
2
+ const dduDefaultConstructorOptions = {
3
+ dduSetSymbol: DduSetSymbol.DDU,
4
+ usePowerOfTwo: true,
5
+ requiredLength: 8,
6
+ bitLength: 3,
7
+ useBuildErrorReturn: false,
8
+ };
9
+ export { dduDefaultConstructorOptions };
@@ -0,0 +1,6 @@
1
+ export declare enum DduSetSymbol {
2
+ DDU = "ddu",
3
+ ONECHARSET = "oneCharSet",
4
+ TWOCHARSET = "twoCharSet",
5
+ THREECHARSET = "threeCharSet"
6
+ }
@@ -0,0 +1,7 @@
1
+ export var DduSetSymbol;
2
+ (function (DduSetSymbol) {
3
+ DduSetSymbol["DDU"] = "ddu";
4
+ DduSetSymbol["ONECHARSET"] = "oneCharSet";
5
+ DduSetSymbol["TWOCHARSET"] = "twoCharSet";
6
+ DduSetSymbol["THREECHARSET"] = "threeCharSet";
7
+ })(DduSetSymbol || (DduSetSymbol = {}));
@@ -0,0 +1,24 @@
1
+ import { DduSetSymbol } from "./DduEnums";
2
+ export interface CharSetConfig {
3
+ symbol: DduSetSymbol;
4
+ charSet: string[];
5
+ maxRequiredLength: number;
6
+ bitLength: number;
7
+ paddingChar: string;
8
+ }
9
+ export interface DduOptions {
10
+ }
11
+ export interface DduConstructorOptions {
12
+ dduSetSymbol?: DduSetSymbol;
13
+ dduChar?: string[] | string;
14
+ paddingChar?: string;
15
+ requiredLength?: number;
16
+ bitLength?: number;
17
+ usePowerOfTwo?: boolean;
18
+ useBuildErrorReturn?: boolean;
19
+ encoding?: BufferEncoding;
20
+ }
21
+ export interface BufferToDduBinaryResult {
22
+ dduBinary: string[];
23
+ padding: number;
24
+ }
@@ -0,0 +1,3 @@
1
+ export * from "./DduEnums";
2
+ export * from "./DduInterface";
3
+ export * from "./DduDefaultTypes";
@@ -0,0 +1,3 @@
1
+ export * from "./DduEnums";
2
+ export * from "./DduInterface";
3
+ export * from "./DduDefaultTypes";
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@ddunigma/node",
3
- "version": "1.0.26",
3
+ "version": "1.1.0",
4
4
  "main": "dist/cjs/index.js",
5
5
  "module": "dist/mjs/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "type": "module",
8
8
  "scripts": {
9
9
  "build": "rm -rf dist/* && tsc -p tsconfig.json && tsc -p tsconfig-cjs.json && sh postProcess.sh",
10
- "test": "tsx ./src/test/test3.ts",
11
- "tester": "echo tester2 && tsx ./src/test/tester2.ts && echo tester && tsx ./src/test/tester.ts"
10
+ "test": "NODE_OPTIONS='--expose-gc' tsx ./src/test/test-comprehensive.ts",
11
+ "test:no-gc": "tsx ./src/test/test-comprehensive.ts"
12
12
  },
13
13
  "exports": {
14
14
  ".": {
@@ -1,44 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("..");
4
- const koreanChars = [
5
- // 기본 자음+모음 조합
6
- "가", "나", "다", "라", "마", "바", "사", "아", "자", "차", "카", "타", "파", "하",
7
- "개", "내", "대", "래", "매", "배", "새", "애", "재", "채", "캐", "태", "패", "해",
8
- "고", "노", "도", "로", "모", "보", "소", "오", "조", "초", "코", "토", "포", "호",
9
- "구", "누", "두", "루", "무", "부", "수", "우", "주", "추", "쿠", "투", "푸", "후",
10
- "그", "느", "드", "르", "므", "브", "스", "으", "즈", "츠", "크", "트", "프", "흐",
11
- "기", "니", "디", "리", "미", "비", "시", "이", "지", "치", "키", "티", "피", "히",
12
- "게", "네", "데", "레", "메", "베", "세", "에", "제", "체", "케", "테", "페", "헤",
13
- "겨", "녀", "더", "려", "며", "벼", "셔", "여", "져", "쳐", "켜", "텨", "펴", "혀",
14
- "교", "뇨", "됴", "료", "묘", "뵤", "쇼", "요", "죠", "쵸", "쿄", "툐", "표", "효",
15
- "규", "뉴", "듀", "류", "뮤", "뷰", "슈", "유", "쥬", "츄", "큐", "튜", "퓨", "휴",
16
- // 받침 있는 조합
17
- "각", "낙", "닥", "락", "막", "박", "삭", "악", "작", "착", "칵", "탁", "팍", "학",
18
- "갑", "납", "답", "랍", "맙", "밥", "삽", "압", "잡", "찹", "캅", "탑", "팝", "합",
19
- "곡", "녹", "독", "록", "목", "복", "속", "옥", "족", "촉", "콕", "톡", "폭", "혹",
20
- "국", "눅", "둑", "룩", "묵", "북", "숙", "욱", "죽", "축", "쿡", "툭", "푹", "훅",
21
- "극", "늑", "득", "륵", "믁", "븍", "슥", "윽", "즉", "츰", "큭", "특", "픅", "흑",
22
- "금", "늠", "듬", "름", "뭄", "붐", "숨", "음", "줌", "춤", "큼", "틈", "품", "흠",
23
- "갈", "날", "달", "랄", "말", "발", "살", "알", "잘", "찰", "칼", "탈", "팔", "할",
24
- "감", "남", "담", "람", "맘", "밤", "샘", "암", "잠", "참", "캄", "탐", "팜", "함",
25
- "건", "넌", "던", "런", '먼'
26
- ]; //129
27
- const ddu64 = new __1.Ddu64(["D", "d", "U", "u", "T", "t", "A", "a"], "응");
28
- const answer = "안녕 나 안보고싶었어?12";
29
- const encoded = ddu64.encode(answer, { usePowerOfTwo: true });
30
- console.log(encoded);
31
- const decoded = ddu64.decode(encoded, { usePowerOfTwo: true });
32
- console.log(decoded);
33
- console.log("=-==");
34
- const encoded_eng = ddu64.encode(answer, { dduSetSymbol: "KR" });
35
- console.log(encoded_eng);
36
- const decoded_eng = ddu64.decode(encoded_eng, { dduSetSymbol: "KR" });
37
- console.log(decoded_eng);
38
- console.log("=-==");
39
- const ddu64_other = new __1.Ddu64(koreanChars, "즁");
40
- const answer2 = "안녕나안보고싶었어?스스로칭찬하려니까부담되는걸?하지만기록은완성해야하니까어쩔수없지~엘리시아는상냥하고,친근하고,귀엽고,똑똑하고아름다운소녀야.그녀의초대를거절하거나그녀를냉정하게대할수있는사람은없어.전설속의엘프처럼모든이의마음을사로잡고13명의영웅을이곳에모았으면서첫번째자리를양보하는겸손함까지...영웅들에게엘리시아는가장믿음직스럽고사랑받는동료야.너희도그렇게생각하지?1";
41
- const encoded2 = ddu64_other.encode(answer2, { usePowerOfTwo: true });
42
- console.log(encoded2);
43
- const decoded2 = ddu64_other.decode(encoded2, { usePowerOfTwo: true });
44
- console.log(decoded2);
@@ -1 +0,0 @@
1
- export {};
@@ -1,20 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("..");
4
- const secret = "Asqr0z3ty1524EBCQFRTUWVXYZbacdD+GLHIJKMONfehgPiSklmujvnop9w678x/";
5
- const padding = "=";
6
- function encryptDdu64(content) {
7
- const custom64 = new __1.Custom64();
8
- const encoded = custom64.encode(content);
9
- return encoded;
10
- }
11
- function decryptDdu64(content) {
12
- const custom64 = new __1.Custom64();
13
- const decoded = custom64.decode(content);
14
- return decoded;
15
- }
16
- console.log("타운카 너무좋아123");
17
- console.log("");
18
- console.log(encryptDdu64("타운카 너무좋아123"));
19
- console.log("");
20
- console.log(decryptDdu64(encryptDdu64("타운카 너무좋아123")));
@@ -1 +0,0 @@
1
- export {};
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const __1 = require("..");
4
- function measurePerformance(yaho = -1) {
5
- const encoderDecoder = new __1.Ddu64();
6
- const testData = `Hello,${yaho} World! Thi${yaho}s is ${yaho}a per${yaho}formance te${yaho}st for e${yaho}ncod${yaho}ing an${yaho}d decod${yaho}ing.`;
7
- // 메모리 사용량 측정
8
- const initialMemoryUsage = process.memoryUsage().heapUsed;
9
- // CPU 사용량 측정
10
- const initialCpuUsage = process.cpuUsage();
11
- // 인코딩 성능 테스트
12
- const encodeStartTime = performance.now();
13
- const encodedData = encoderDecoder.encode(testData);
14
- const encodeEndTime = performance.now();
15
- const encodeTime = encodeEndTime - encodeStartTime;
16
- // 디코딩 성능 테스트
17
- const decodeStartTime = performance.now();
18
- const decodedData = encoderDecoder.decode(encodedData);
19
- const decodeEndTime = performance.now();
20
- const decodeTime = decodeEndTime - decodeStartTime;
21
- // 메모리 사용량 측정
22
- const finalMemoryUsage = process.memoryUsage().heapUsed;
23
- const memoryUsage = finalMemoryUsage - initialMemoryUsage;
24
- const finalCpuUsage = process.cpuUsage(initialCpuUsage);
25
- const cpuUsage = finalCpuUsage.user + finalCpuUsage.system;
26
- return { encodeTime, decodeTime, memoryUsage, cpuUsage };
27
- }
28
- const result1 = measurePerformance();
29
- console.log(`Encode Time: ${result1.encodeTime.toFixed(2)} ms`);
30
- console.log(`Decode Time: ${result1.decodeTime.toFixed(2)} ms`);
31
- console.log(`Memory Usage: ${result1.memoryUsage} bytes`);
32
- console.log(`CPU Usage: ${result1.cpuUsage} microseconds\n`);
33
- const yaho = 10000;
34
- let yaho2 = yaho;
35
- console.log(`loop ${yaho}`);
36
- while (--yaho2 > 0) {
37
- const result2 = measurePerformance(yaho);
38
- result1.encodeTime += result2.encodeTime;
39
- result1.decodeTime += result2.decodeTime;
40
- result1.memoryUsage += result2.memoryUsage;
41
- result1.cpuUsage += result2.cpuUsage;
42
- }
43
- console.log(`Encode Time: ${(result1.encodeTime / yaho).toFixed(2)} ms`);
44
- console.log(`Decode Time: ${(result1.decodeTime / yaho).toFixed(2)} ms`);
45
- console.log(`Memory Usage: ${result1.memoryUsage / yaho} bytes`);
46
- console.log(`CPU Usage: ${result1.cpuUsage / yaho} microseconds\n`);
@@ -1 +0,0 @@
1
- export {};
@@ -1,42 +0,0 @@
1
- import { Ddu64 } from "..";
2
- const koreanChars = [
3
- // 기본 자음+모음 조합
4
- "가", "나", "다", "라", "마", "바", "사", "아", "자", "차", "카", "타", "파", "하",
5
- "개", "내", "대", "래", "매", "배", "새", "애", "재", "채", "캐", "태", "패", "해",
6
- "고", "노", "도", "로", "모", "보", "소", "오", "조", "초", "코", "토", "포", "호",
7
- "구", "누", "두", "루", "무", "부", "수", "우", "주", "추", "쿠", "투", "푸", "후",
8
- "그", "느", "드", "르", "므", "브", "스", "으", "즈", "츠", "크", "트", "프", "흐",
9
- "기", "니", "디", "리", "미", "비", "시", "이", "지", "치", "키", "티", "피", "히",
10
- "게", "네", "데", "레", "메", "베", "세", "에", "제", "체", "케", "테", "페", "헤",
11
- "겨", "녀", "더", "려", "며", "벼", "셔", "여", "져", "쳐", "켜", "텨", "펴", "혀",
12
- "교", "뇨", "됴", "료", "묘", "뵤", "쇼", "요", "죠", "쵸", "쿄", "툐", "표", "효",
13
- "규", "뉴", "듀", "류", "뮤", "뷰", "슈", "유", "쥬", "츄", "큐", "튜", "퓨", "휴",
14
- // 받침 있는 조합
15
- "각", "낙", "닥", "락", "막", "박", "삭", "악", "작", "착", "칵", "탁", "팍", "학",
16
- "갑", "납", "답", "랍", "맙", "밥", "삽", "압", "잡", "찹", "캅", "탑", "팝", "합",
17
- "곡", "녹", "독", "록", "목", "복", "속", "옥", "족", "촉", "콕", "톡", "폭", "혹",
18
- "국", "눅", "둑", "룩", "묵", "북", "숙", "욱", "죽", "축", "쿡", "툭", "푹", "훅",
19
- "극", "늑", "득", "륵", "믁", "븍", "슥", "윽", "즉", "츰", "큭", "특", "픅", "흑",
20
- "금", "늠", "듬", "름", "뭄", "붐", "숨", "음", "줌", "춤", "큼", "틈", "품", "흠",
21
- "갈", "날", "달", "랄", "말", "발", "살", "알", "잘", "찰", "칼", "탈", "팔", "할",
22
- "감", "남", "담", "람", "맘", "밤", "샘", "암", "잠", "참", "캄", "탐", "팜", "함",
23
- "건", "넌", "던", "런", '먼'
24
- ]; //129
25
- const ddu64 = new Ddu64(["D", "d", "U", "u", "T", "t", "A", "a"], "응");
26
- const answer = "안녕 나 안보고싶었어?12";
27
- const encoded = ddu64.encode(answer, { usePowerOfTwo: true });
28
- console.log(encoded);
29
- const decoded = ddu64.decode(encoded, { usePowerOfTwo: true });
30
- console.log(decoded);
31
- console.log("=-==");
32
- const encoded_eng = ddu64.encode(answer, { dduSetSymbol: "KR" });
33
- console.log(encoded_eng);
34
- const decoded_eng = ddu64.decode(encoded_eng, { dduSetSymbol: "KR" });
35
- console.log(decoded_eng);
36
- console.log("=-==");
37
- const ddu64_other = new Ddu64(koreanChars, "즁");
38
- const answer2 = "안녕나안보고싶었어?스스로칭찬하려니까부담되는걸?하지만기록은완성해야하니까어쩔수없지~엘리시아는상냥하고,친근하고,귀엽고,똑똑하고아름다운소녀야.그녀의초대를거절하거나그녀를냉정하게대할수있는사람은없어.전설속의엘프처럼모든이의마음을사로잡고13명의영웅을이곳에모았으면서첫번째자리를양보하는겸손함까지...영웅들에게엘리시아는가장믿음직스럽고사랑받는동료야.너희도그렇게생각하지?1";
39
- const encoded2 = ddu64_other.encode(answer2, { usePowerOfTwo: true });
40
- console.log(encoded2);
41
- const decoded2 = ddu64_other.decode(encoded2, { usePowerOfTwo: true });
42
- console.log(decoded2);
@@ -1 +0,0 @@
1
- export {};
@@ -1,18 +0,0 @@
1
- import { Custom64 } from "..";
2
- const secret = "Asqr0z3ty1524EBCQFRTUWVXYZbacdD+GLHIJKMONfehgPiSklmujvnop9w678x/";
3
- const padding = "=";
4
- function encryptDdu64(content) {
5
- const custom64 = new Custom64();
6
- const encoded = custom64.encode(content);
7
- return encoded;
8
- }
9
- function decryptDdu64(content) {
10
- const custom64 = new Custom64();
11
- const decoded = custom64.decode(content);
12
- return decoded;
13
- }
14
- console.log("타운카 너무좋아123");
15
- console.log("");
16
- console.log(encryptDdu64("타운카 너무좋아123"));
17
- console.log("");
18
- console.log(decryptDdu64(encryptDdu64("타운카 너무좋아123")));
@@ -1 +0,0 @@
1
- export {};