@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.
- package/README.md +4 -0
- package/dist/cjs/base/BaseDdu.d.ts +38 -0
- package/dist/cjs/base/BaseDdu.js +78 -0
- package/dist/cjs/base/index.d.ts +1 -0
- package/dist/cjs/base/index.js +5 -0
- package/dist/cjs/charSets/index.d.ts +4 -0
- package/dist/cjs/charSets/index.js +4341 -0
- package/dist/cjs/encoders/Ddu64.d.ts +49 -0
- package/dist/cjs/encoders/Ddu64.js +355 -0
- package/dist/cjs/encoders/index.d.ts +1 -0
- package/dist/cjs/encoders/index.js +6 -0
- package/dist/cjs/index.d.ts +4 -58
- package/dist/cjs/index.js +10 -329
- package/dist/cjs/types/DduDefaultTypes.d.ts +3 -0
- package/dist/cjs/types/DduDefaultTypes.js +12 -0
- package/dist/cjs/types/DduEnums.d.ts +6 -0
- package/dist/cjs/types/DduEnums.js +10 -0
- package/dist/cjs/types/DduInterface.d.ts +24 -0
- package/dist/cjs/types/DduInterface.js +2 -0
- package/dist/cjs/types/index.d.ts +3 -0
- package/dist/cjs/types/index.js +19 -0
- package/dist/mjs/base/BaseDdu.d.ts +38 -0
- package/dist/mjs/base/BaseDdu.js +72 -0
- package/dist/mjs/base/index.d.ts +1 -0
- package/dist/mjs/base/index.js +1 -0
- package/dist/mjs/charSets/index.d.ts +4 -0
- package/dist/mjs/charSets/index.js +4336 -0
- package/dist/mjs/encoders/Ddu64.d.ts +49 -0
- package/dist/mjs/encoders/Ddu64.js +358 -0
- package/dist/mjs/encoders/index.d.ts +1 -0
- package/dist/mjs/encoders/index.js +2 -0
- package/dist/mjs/index.d.ts +4 -58
- package/dist/mjs/index.js +6 -330
- package/dist/mjs/types/DduDefaultTypes.d.ts +3 -0
- package/dist/mjs/types/DduDefaultTypes.js +9 -0
- package/dist/mjs/types/DduEnums.d.ts +6 -0
- package/dist/mjs/types/DduEnums.js +7 -0
- package/dist/mjs/types/DduInterface.d.ts +24 -0
- package/dist/mjs/types/index.d.ts +3 -0
- package/dist/mjs/types/index.js +3 -0
- package/package.json +3 -3
- package/dist/cjs/test/test2.js +0 -44
- package/dist/cjs/test/test3.d.ts +0 -1
- package/dist/cjs/test/test3.js +0 -20
- package/dist/cjs/test/tester2.d.ts +0 -1
- package/dist/cjs/test/tester2.js +0 -46
- package/dist/mjs/test/test2.d.ts +0 -1
- package/dist/mjs/test/test2.js +0 -42
- package/dist/mjs/test/test3.d.ts +0 -1
- package/dist/mjs/test/test3.js +0 -18
- package/dist/mjs/test/tester2.d.ts +0 -1
- package/dist/mjs/test/tester2.js +0 -44
- /package/dist/{cjs/test/test2.d.ts → mjs/types/DduInterface.js} +0 -0
package/README.md
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { DduOptions, BufferToDduBinaryResult } from "../types";
|
|
2
|
+
export declare abstract class BaseDdu {
|
|
3
|
+
protected readonly defaultEncoding: BufferEncoding;
|
|
4
|
+
/**
|
|
5
|
+
* 이진수 변환 룩업 테이블 (0-255 -> 8비트 이진 문자열)
|
|
6
|
+
*/
|
|
7
|
+
protected readonly binaryLookup: string[];
|
|
8
|
+
/**
|
|
9
|
+
* 정규표현식 특수문자 이스케이프
|
|
10
|
+
*/
|
|
11
|
+
protected escapeRegExp(str: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* 문자열을 지정된 길이로 분할하는 제너레이터
|
|
14
|
+
*/
|
|
15
|
+
protected splitString(s: string, length: number): Generator<string>;
|
|
16
|
+
/**
|
|
17
|
+
* 2의 거듭제곱 길이 계산
|
|
18
|
+
*/
|
|
19
|
+
protected getLargestPowerOfTwo(n: number): number;
|
|
20
|
+
/**
|
|
21
|
+
* 2의 거듭제곱 지수 계산
|
|
22
|
+
*/
|
|
23
|
+
protected getLargestPowerOfTwoExponent(n: number): number;
|
|
24
|
+
/**
|
|
25
|
+
* 비트 길이 계산
|
|
26
|
+
*/
|
|
27
|
+
protected getBitLength(setLength: number): number;
|
|
28
|
+
/**
|
|
29
|
+
* Buffer를 DDU Binary 배열로 변환
|
|
30
|
+
*/
|
|
31
|
+
protected bufferToDduBinary(input: Buffer, bitLength: number): BufferToDduBinaryResult;
|
|
32
|
+
/**
|
|
33
|
+
* DDU Binary를 Buffer로 변환
|
|
34
|
+
*/
|
|
35
|
+
protected dduBinaryToBuffer(decodedBin: string, paddingBits: number): Buffer;
|
|
36
|
+
abstract encode(input: Buffer | string, options?: DduOptions): string;
|
|
37
|
+
abstract decode(input: string, options?: DduOptions): string;
|
|
38
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseDdu = void 0;
|
|
4
|
+
class BaseDdu {
|
|
5
|
+
constructor() {
|
|
6
|
+
this.defaultEncoding = "utf-8";
|
|
7
|
+
/**
|
|
8
|
+
* 이진수 변환 룩업 테이블 (0-255 -> 8비트 이진 문자열)
|
|
9
|
+
*/
|
|
10
|
+
this.binaryLookup = Array.from({ length: 256 }, (_, i) => i.toString(2).padStart(8, "0"));
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* 정규표현식 특수문자 이스케이프
|
|
14
|
+
*/
|
|
15
|
+
escapeRegExp(str) {
|
|
16
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* 문자열을 지정된 길이로 분할하는 제너레이터
|
|
20
|
+
*/
|
|
21
|
+
*splitString(s, length) {
|
|
22
|
+
for (let i = 0; i < s.length; i += length) {
|
|
23
|
+
yield s.slice(i, Math.min(i + length, s.length));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 2의 거듭제곱 길이 계산
|
|
28
|
+
*/
|
|
29
|
+
getLargestPowerOfTwo(n) {
|
|
30
|
+
return Math.pow(2, Math.floor(Math.log2(n)));
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 2의 거듭제곱 지수 계산
|
|
34
|
+
*/
|
|
35
|
+
getLargestPowerOfTwoExponent(n) {
|
|
36
|
+
return Math.floor(Math.log2(n));
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* 비트 길이 계산
|
|
40
|
+
*/
|
|
41
|
+
getBitLength(setLength) {
|
|
42
|
+
return Math.ceil(Math.log2(setLength));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Buffer를 DDU Binary 배열로 변환
|
|
46
|
+
*/
|
|
47
|
+
bufferToDduBinary(input, bitLength) {
|
|
48
|
+
// 성능 최적화: reduce 대신 for loop + join 사용
|
|
49
|
+
if (input.length === 0) {
|
|
50
|
+
return { dduBinary: [], padding: 0 };
|
|
51
|
+
}
|
|
52
|
+
const binaryParts = new Array(input.length);
|
|
53
|
+
for (let i = 0; i < input.length; i++) {
|
|
54
|
+
binaryParts[i] = this.binaryLookup[input[i]];
|
|
55
|
+
}
|
|
56
|
+
const encodedBin = binaryParts.join("");
|
|
57
|
+
const dduBinary = Array.from(this.splitString(encodedBin, bitLength));
|
|
58
|
+
const padding = bitLength - dduBinary[dduBinary.length - 1].length;
|
|
59
|
+
if (padding > 0) {
|
|
60
|
+
dduBinary[dduBinary.length - 1] += "0".repeat(padding);
|
|
61
|
+
}
|
|
62
|
+
return { dduBinary, padding };
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* DDU Binary를 Buffer로 변환
|
|
66
|
+
*/
|
|
67
|
+
dduBinaryToBuffer(decodedBin, paddingBits) {
|
|
68
|
+
if (paddingBits > 0) {
|
|
69
|
+
decodedBin = decodedBin.slice(0, -paddingBits);
|
|
70
|
+
}
|
|
71
|
+
const buffer = [];
|
|
72
|
+
for (let i = 0; i < decodedBin.length; i += 8) {
|
|
73
|
+
buffer.push(parseInt(decodedBin.slice(i, i + 8), 2));
|
|
74
|
+
}
|
|
75
|
+
return Buffer.from(buffer);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.BaseDdu = BaseDdu;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { BaseDdu } from "./BaseDdu";
|