@ddunigma/node 2.0.2 → 2.1.1
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/LICENCE +1 -1
- package/README.md +253 -79
- package/dist/cjs/encoders/Ddu64.d.ts +118 -1
- package/dist/cjs/encoders/Ddu64.js +521 -154
- package/dist/cjs/index.d.ts +2 -1
- package/dist/cjs/index.js +8 -1
- package/dist/cjs/types/DduInterface.d.ts +53 -1
- package/dist/cjs/utils/CharsetBuilder.d.ts +129 -0
- package/dist/cjs/utils/CharsetBuilder.js +246 -0
- package/dist/cjs/utils/DduPipeline.d.ts +114 -0
- package/dist/cjs/utils/DduPipeline.js +229 -0
- package/dist/cjs/utils/DduStream.d.ts +64 -0
- package/dist/cjs/utils/DduStream.js +221 -0
- package/dist/cjs/utils/crypto.d.ts +30 -0
- package/dist/cjs/utils/crypto.js +84 -0
- package/dist/cjs/utils/index.d.ts +3 -0
- package/dist/cjs/utils/index.js +12 -0
- package/dist/mjs/encoders/Ddu64.d.ts +118 -1
- package/dist/mjs/encoders/Ddu64.js +534 -155
- package/dist/mjs/index.d.ts +2 -1
- package/dist/mjs/index.js +1 -0
- package/dist/mjs/types/DduInterface.d.ts +53 -1
- package/dist/mjs/utils/CharsetBuilder.d.ts +129 -0
- package/dist/mjs/utils/CharsetBuilder.js +241 -0
- package/dist/mjs/utils/DduPipeline.d.ts +114 -0
- package/dist/mjs/utils/DduPipeline.js +223 -0
- package/dist/mjs/utils/DduStream.d.ts +64 -0
- package/dist/mjs/utils/DduStream.js +225 -0
- package/dist/mjs/utils/crypto.d.ts +30 -0
- package/dist/mjs/utils/crypto.js +78 -0
- package/dist/mjs/utils/index.d.ts +3 -0
- package/dist/mjs/utils/index.js +3 -0
- package/package.json +4 -3
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseDdu } from "../base/BaseDdu";
|
|
2
|
-
import { DduConstructorOptions, DduOptions } from "../types";
|
|
2
|
+
import { DduConstructorOptions, DduOptions, DduEncodeStats } from "../types";
|
|
3
3
|
/**
|
|
4
4
|
* 커스텀 charset을 사용하는 Base64 스타일 인코더
|
|
5
5
|
*
|
|
@@ -50,6 +50,18 @@ export declare class Ddu64 extends BaseDdu {
|
|
|
50
50
|
private readonly fastAsciiLookup;
|
|
51
51
|
/** ASCII 룩업 사용 여부 */
|
|
52
52
|
private readonly useAsciiLookup;
|
|
53
|
+
/** URL-Safe 모드 여부 */
|
|
54
|
+
private readonly urlSafe;
|
|
55
|
+
/** 암호화 키 해시 (AES-256용 32바이트) */
|
|
56
|
+
private readonly encryptionKeyHash;
|
|
57
|
+
/** 기본 체크섬 사용 여부 */
|
|
58
|
+
private readonly defaultChecksum;
|
|
59
|
+
/** 기본 청크 크기 */
|
|
60
|
+
private readonly defaultChunkSize;
|
|
61
|
+
/** 기본 청크 구분자 */
|
|
62
|
+
private readonly defaultChunkSeparator;
|
|
63
|
+
/** 기본 압축 레벨 (1~9) */
|
|
64
|
+
private readonly defaultCompressionLevel;
|
|
53
65
|
/**
|
|
54
66
|
* Ddu64 인코더 인스턴스를 생성합니다.
|
|
55
67
|
*
|
|
@@ -75,13 +87,23 @@ export declare class Ddu64 extends BaseDdu {
|
|
|
75
87
|
* @param input - 인코딩할 문자열 또는 Buffer
|
|
76
88
|
* @param options - 인코딩 옵션
|
|
77
89
|
* @param options.compress - 압축 사용 여부 (기본값: 생성자 설정)
|
|
90
|
+
* @param options.checksum - 체크섬 추가 여부
|
|
91
|
+
* @param options.chunkSize - 청크 분할 크기
|
|
92
|
+
* @param options.chunkSeparator - 청크 구분자
|
|
93
|
+
* @param options.onProgress - 진행률 콜백
|
|
78
94
|
* @returns 인코딩된 문자열
|
|
79
95
|
*
|
|
80
96
|
* @example
|
|
81
97
|
* encoder.encode("Hello World!");
|
|
82
98
|
* encoder.encode(buffer, { compress: true });
|
|
99
|
+
* encoder.encode(data, { checksum: true, chunkSize: 76 });
|
|
83
100
|
*/
|
|
84
101
|
encode(input: Buffer | string, options?: DduOptions): string;
|
|
102
|
+
/**
|
|
103
|
+
* 인코딩 핵심 로직. encode()와 getStats()가 공유합니다.
|
|
104
|
+
* 압축 크기 등 메타데이터도 함께 반환하여 중복 deflateSync 호출을 방지합니다.
|
|
105
|
+
*/
|
|
106
|
+
private encodeInternal;
|
|
85
107
|
/**
|
|
86
108
|
* 인코딩된 문자열을 Buffer로 디코딩합니다.
|
|
87
109
|
*
|
|
@@ -89,11 +111,13 @@ export declare class Ddu64 extends BaseDdu {
|
|
|
89
111
|
* @param options - 디코딩 옵션
|
|
90
112
|
* @param options.maxDecodedBytes - 최대 디코딩 바이트 수
|
|
91
113
|
* @param options.maxDecompressedBytes - 최대 압축해제 바이트 수
|
|
114
|
+
* @param options.onProgress - 진행률 콜백
|
|
92
115
|
* @returns 디코딩된 Buffer
|
|
93
116
|
*
|
|
94
117
|
* @throws 잘못된 문자가 포함된 경우
|
|
95
118
|
* @throws 패딩 형식이 잘못된 경우
|
|
96
119
|
* @throws 크기 제한 초과 시
|
|
120
|
+
* @throws 체크섬 불일치 시
|
|
97
121
|
*/
|
|
98
122
|
decodeToBuffer(input: string, options?: DduOptions): Buffer;
|
|
99
123
|
/**
|
|
@@ -121,7 +145,89 @@ export declare class Ddu64 extends BaseDdu {
|
|
|
121
145
|
defaultCompress: boolean;
|
|
122
146
|
defaultMaxDecodedBytes: number;
|
|
123
147
|
defaultMaxDecompressedBytes: number;
|
|
148
|
+
urlSafe: boolean;
|
|
149
|
+
hasEncryptionKey: boolean;
|
|
150
|
+
defaultChecksum: boolean;
|
|
151
|
+
defaultChunkSize: number | undefined;
|
|
124
152
|
};
|
|
153
|
+
/**
|
|
154
|
+
* 인코딩 통계 정보를 반환합니다.
|
|
155
|
+
*
|
|
156
|
+
* @param input - 분석할 데이터
|
|
157
|
+
* @param options - 인코딩 옵션
|
|
158
|
+
* @returns 통계 정보 객체
|
|
159
|
+
*/
|
|
160
|
+
getStats(input: Buffer | string, options?: DduOptions): DduEncodeStats;
|
|
161
|
+
/**
|
|
162
|
+
* 비동기 인코딩을 수행합니다.
|
|
163
|
+
*
|
|
164
|
+
* 내부적으로 동기 encode()를 setImmediate로 이벤트 루프에 양보한 뒤 실행합니다.
|
|
165
|
+
* 호출자가 즉시 블로킹되지 않도록 보장하지만, 인코딩 자체는 단일 동기 작업으로
|
|
166
|
+
* 수행되므로 대용량 데이터(수 MB 이상) 처리 시 이벤트 루프가 블로킹될 수 있습니다.
|
|
167
|
+
* 대용량 처리가 필요한 경우 스트림 API(createEncodeStream) 사용을 권장합니다.
|
|
168
|
+
*
|
|
169
|
+
* @param input - 인코딩할 데이터
|
|
170
|
+
* @param options - 인코딩 옵션
|
|
171
|
+
* @returns 인코딩된 문자열 Promise
|
|
172
|
+
*/
|
|
173
|
+
encodeAsync(input: Buffer | string, options?: DduOptions): Promise<string>;
|
|
174
|
+
/**
|
|
175
|
+
* 비동기 디코딩을 수행합니다.
|
|
176
|
+
*
|
|
177
|
+
* 내부적으로 동기 decode()를 setImmediate로 이벤트 루프에 양보한 뒤 실행합니다.
|
|
178
|
+
* 대용량 처리가 필요한 경우 스트림 API(createDecodeStream) 사용을 권장합니다.
|
|
179
|
+
*
|
|
180
|
+
* @param input - 디코딩할 인코딩된 문자열
|
|
181
|
+
* @param options - 디코딩 옵션
|
|
182
|
+
* @returns 디코딩된 문자열 Promise
|
|
183
|
+
*/
|
|
184
|
+
decodeAsync(input: string, options?: DduOptions): Promise<string>;
|
|
185
|
+
/**
|
|
186
|
+
* 비동기 디코딩을 Buffer로 수행합니다.
|
|
187
|
+
*
|
|
188
|
+
* 내부적으로 동기 decodeToBuffer()를 setImmediate로 이벤트 루프에 양보한 뒤 실행합니다.
|
|
189
|
+
* 대용량 처리가 필요한 경우 스트림 API(createDecodeStream) 사용을 권장합니다.
|
|
190
|
+
*
|
|
191
|
+
* @param input - 디코딩할 인코딩된 문자열
|
|
192
|
+
* @param options - 디코딩 옵션
|
|
193
|
+
* @returns 디코딩된 Buffer Promise
|
|
194
|
+
*/
|
|
195
|
+
decodeToBufferAsync(input: string, options?: DduOptions): Promise<Buffer>;
|
|
196
|
+
/**
|
|
197
|
+
* 문자열을 URL-Safe 형식으로 변환합니다.
|
|
198
|
+
* 단일 정규식 패스로 처리하여 split/join 3회 반복 대비 메모리/속도 개선
|
|
199
|
+
*/
|
|
200
|
+
private toUrlSafe;
|
|
201
|
+
/**
|
|
202
|
+
* URL-Safe 형식에서 원래 형식으로 복원합니다.
|
|
203
|
+
*/
|
|
204
|
+
private fromUrlSafe;
|
|
205
|
+
/**
|
|
206
|
+
* CRC32 체크섬을 계산합니다. (룩업 테이블 사용)
|
|
207
|
+
*/
|
|
208
|
+
private calculateCRC32;
|
|
209
|
+
/**
|
|
210
|
+
* 인코딩된 문자열에서 체크섬을 추출합니다.
|
|
211
|
+
*/
|
|
212
|
+
private extractChecksum;
|
|
213
|
+
/**
|
|
214
|
+
* 문자열을 청크로 분할합니다.
|
|
215
|
+
*/
|
|
216
|
+
private splitIntoChunks;
|
|
217
|
+
/**
|
|
218
|
+
* 청크 구분자를 제거합니다.
|
|
219
|
+
* 줄바꿈(\r, \n)과 인스턴스에 설정된 청크 구분자만 제거합니다.
|
|
220
|
+
* 공백/탭 등은 charset에 포함될 수 있으므로 제거하지 않습니다.
|
|
221
|
+
*/
|
|
222
|
+
private removeChunks;
|
|
223
|
+
/**
|
|
224
|
+
* 데이터를 AES-256-GCM으로 암호화합니다.
|
|
225
|
+
*/
|
|
226
|
+
private encryptData;
|
|
227
|
+
/**
|
|
228
|
+
* AES-256-GCM으로 암호화된 데이터를 복호화합니다.
|
|
229
|
+
*/
|
|
230
|
+
private decryptData;
|
|
125
231
|
/**
|
|
126
232
|
* 옵션 값을 정규화합니다.
|
|
127
233
|
*/
|
|
@@ -140,6 +246,9 @@ export declare class Ddu64 extends BaseDdu {
|
|
|
140
246
|
private inflateWithLimit;
|
|
141
247
|
/**
|
|
142
248
|
* 인코딩된 문자열의 푸터(패딩 정보)를 파싱합니다.
|
|
249
|
+
*
|
|
250
|
+
* 푸터 형식: {encodedData}{paddingChar}[ELYSIA][ENC]{digits}
|
|
251
|
+
* 끝에서부터 역순으로 파싱하여 paddingChar가 숫자인 경우도 안전하게 처리합니다.
|
|
143
252
|
*/
|
|
144
253
|
private parseFooter;
|
|
145
254
|
/**
|
|
@@ -178,6 +287,14 @@ export declare class Ddu64 extends BaseDdu {
|
|
|
178
287
|
* charset을 가져오거나 에러를 발생시킵니다.
|
|
179
288
|
*/
|
|
180
289
|
private getCharSetOrThrow;
|
|
290
|
+
/**
|
|
291
|
+
* URL-Safe 모드 시 charset/padding이 역변환 대상 문자를 포함하지 않는지 검증합니다.
|
|
292
|
+
* 역변환 대상 문자("-", "_", ".")가 charset이나 padding에 있으면
|
|
293
|
+
* fromUrlSafe 시 해당 문자가 "+", "/", "="로 변환되어 데이터가 손상됩니다.
|
|
294
|
+
*
|
|
295
|
+
* @returns URL-Safe 모드를 활성화해도 안전한 경우 true
|
|
296
|
+
*/
|
|
297
|
+
private isUrlSafeCompatible;
|
|
181
298
|
/**
|
|
182
299
|
* 커스텀 charset의 조합 중복을 검증합니다.
|
|
183
300
|
*/
|