@ddunigma/node 4.0.1 → 5.0.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 +105 -313
- package/dist/BrowserAdapter-HORDDCOE.js +2 -0
- package/dist/BrowserAdapter-PB4J6FHX.cjs +2 -0
- package/dist/NodeAdapter-5FBNCJSG.js +2 -0
- package/dist/NodeAdapter-EQ73FGEJ.cjs +2 -0
- package/dist/{ObfuscationLayer-BRiyE5xu.d.cts → ObfuscationLayer-BDr-0s1M.d.ts} +22 -4
- package/dist/{ObfuscationLayer-DZiQGHMw.d.ts → ObfuscationLayer-BgL73E5F.d.cts} +22 -4
- package/dist/browser.cjs +1 -1
- package/dist/browser.d.cts +4 -4
- package/dist/browser.d.ts +4 -4
- package/dist/browser.js +1 -1
- package/dist/chunk-5NSHXTMN.cjs +2 -0
- package/dist/chunk-7RWUNW5S.js +2 -0
- package/dist/chunk-AMOZHHMB.cjs +2 -0
- package/dist/chunk-CQATQOBZ.js +2 -0
- package/dist/chunk-HTZT725P.js +10 -0
- package/dist/chunk-HZJ7PU7X.cjs +2 -0
- package/dist/chunk-KS6PRP5Y.js +2 -0
- package/dist/chunk-OQXMQIE3.js +2 -0
- package/dist/chunk-UMA4JEN4.cjs +10 -0
- package/dist/{chunk-WS6GB27C.cjs → chunk-WCXD5LRF.cjs} +2 -2
- package/dist/core.cjs +1 -1
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +1 -1
- package/dist/{errors-DxOlTuHc.d.cts → errors-DNICpo4L.d.cts} +96 -60
- package/dist/{errors-DxOlTuHc.d.ts → errors-DNICpo4L.d.ts} +96 -60
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +1 -1
- package/dist/wasm/codec.wasm +0 -0
- package/package.json +7 -3
- package/dist/BrowserAdapter-G4XORUQJ.js +0 -2
- package/dist/BrowserAdapter-LIUL744V.cjs +0 -2
- package/dist/NodeAdapter-AHALQ4DQ.js +0 -2
- package/dist/NodeAdapter-DS44MI5D.cjs +0 -2
- package/dist/chunk-342X2QEY.js +0 -2
- package/dist/chunk-65RDFQV7.js +0 -10
- package/dist/chunk-FACJ5LAG.cjs +0 -10
- package/dist/chunk-M7526IW7.js +0 -2
- package/dist/chunk-NY4FGVF3.cjs +0 -2
- package/dist/chunk-P7WJ2LOQ.js +0 -2
- package/dist/chunk-QR43FNIY.js +0 -2
- package/dist/chunk-RFBXQWSA.cjs +0 -2
- package/dist/chunk-RHVBUC4T.cjs +0 -2
|
@@ -9,6 +9,11 @@ declare enum DduSetSymbol {
|
|
|
9
9
|
DDU_V1 = "ddu_v1",
|
|
10
10
|
ONECHARSET = "oneCharSet"
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated ddunigma runtime string encode/decode paths are UTF-8 based.
|
|
14
|
+
* This union remains for legacy type compatibility and `CharSetInfo.encoding`
|
|
15
|
+
* metadata only; non-UTF-8 values do not change runtime text conversion.
|
|
16
|
+
*/
|
|
12
17
|
type DduTextEncoding = "utf-8" | "utf8" | "latin1" | "ascii" | "base64" | "base64url" | "hex" | "binary" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le";
|
|
13
18
|
interface EncodingProfile {
|
|
14
19
|
/** 논리 심볼당 비트 수 */
|
|
@@ -63,6 +68,12 @@ interface CharSetInfo {
|
|
|
63
68
|
hasEncryptionKey: boolean;
|
|
64
69
|
/** 기본 체크섬 사용 여부 */
|
|
65
70
|
defaultChecksum: boolean;
|
|
71
|
+
/** 기본 체크섬 계산 범위 (5.0: "output") */
|
|
72
|
+
defaultChecksumScope: "plaintext" | "output";
|
|
73
|
+
/** 기본 난독화 사용 여부 */
|
|
74
|
+
defaultObfuscate: boolean;
|
|
75
|
+
/** WASM 사용 임계값 (바이트) */
|
|
76
|
+
wasmThreshold: number;
|
|
66
77
|
/** 기본 청크 크기 */
|
|
67
78
|
defaultChunkSize: number | undefined;
|
|
68
79
|
/** 기본 청크 구분자 */
|
|
@@ -103,12 +114,13 @@ interface DduEncodeStats {
|
|
|
103
114
|
type KeyDerivationAlgorithm = "sha256" | "pbkdf2";
|
|
104
115
|
interface KeyDerivationOptions {
|
|
105
116
|
/**
|
|
106
|
-
* Key derivation algorithm. Defaults to `
|
|
117
|
+
* Key derivation algorithm. Defaults to `pbkdf2` (5.0).
|
|
107
118
|
*
|
|
108
|
-
* ⚠️
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* for high-entropy keys (e.g. 32 random bytes) or
|
|
119
|
+
* ⚠️ Migration: 4.x defaulted to `sha256`. Data encrypted with 4.x defaults must be decrypted with
|
|
120
|
+
* `algorithm: "sha256"` explicitly (key derivation is NOT self-described in the wire format).
|
|
121
|
+
* For low-entropy keys (human passwords), keep the `pbkdf2` default and provide an
|
|
122
|
+
* application-specific `salt`. Use `sha256` only for high-entropy keys (e.g. 32 random bytes) or
|
|
123
|
+
* legacy data compatibility.
|
|
112
124
|
*/
|
|
113
125
|
algorithm?: KeyDerivationAlgorithm;
|
|
114
126
|
/**
|
|
@@ -125,7 +137,11 @@ interface KeyDerivationOptions {
|
|
|
125
137
|
interface DduOptions {
|
|
126
138
|
/** 압축 사용 여부 (zlib deflate 또는 brotli) */
|
|
127
139
|
compress?: boolean;
|
|
128
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
* 내부 암/복호화 사용 여부 (기본값: true, 스트림 파이프라인 내부 제어용).
|
|
142
|
+
* @internal 일반 사용자는 `encryptionKey`로 암호화를 제어하세요. 이 플래그는
|
|
143
|
+
* 스트림/내부 파이프라인 전용이며 향후 공개 옵션에서 분리될 수 있습니다.
|
|
144
|
+
*/
|
|
129
145
|
encrypt?: boolean;
|
|
130
146
|
/** 압축 알고리즘 (기본값: "deflate") */
|
|
131
147
|
compressionAlgorithm?: "deflate" | "brotli";
|
|
@@ -137,11 +153,23 @@ interface DduOptions {
|
|
|
137
153
|
maxDecompressedBytes?: number;
|
|
138
154
|
/** 체크섬 추가 여부 (CRC32) */
|
|
139
155
|
checksum?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* 체크섬 계산 범위 (기본값: "output").
|
|
158
|
+
* - `"plaintext"`: 원본 입력 바이트의 CRC32 (레거시 범위). 암호화와 함께 쓰면 평문 CRC가 출력에 노출됩니다.
|
|
159
|
+
* - `"output"`: 인코딩 파이프라인 최종 바이트(압축/암호화 후, 와이어에 실리는 바이트)의 CRC32.
|
|
160
|
+
* 암호화 시 평문 CRC를 노출하지 않고, 복호화 이전에 전송 손상을 감지합니다.
|
|
161
|
+
*
|
|
162
|
+
* `checksum`과 마찬가지로 와이어에 자기기술 플래그가 없으므로 인코딩/디코딩에서 동일하게 지정해야 합니다.
|
|
163
|
+
*/
|
|
164
|
+
checksumScope?: "plaintext" | "output";
|
|
140
165
|
/** 청크 분할 크기 */
|
|
141
166
|
chunkSize?: number;
|
|
142
167
|
/** 청크 구분자 (기본값: '\n') */
|
|
143
168
|
chunkSeparator?: string;
|
|
144
|
-
/**
|
|
169
|
+
/**
|
|
170
|
+
* 중간 스트림 청크처럼 푸터를 생략해야 할 때 사용.
|
|
171
|
+
* @internal 스트림 인코딩 내부 전용 플래그이며 향후 공개 옵션에서 분리될 수 있습니다.
|
|
172
|
+
*/
|
|
145
173
|
omitFooter?: boolean;
|
|
146
174
|
/** 진행률 콜백 */
|
|
147
175
|
onProgress?: (info: DduProgressInfo) => void;
|
|
@@ -151,6 +179,12 @@ interface DduOptions {
|
|
|
151
179
|
interface DduConstructorOptions extends DduOptions {
|
|
152
180
|
/** 미리 정의된 charset 심볼 */
|
|
153
181
|
dduSetSymbol?: DduSetSymbol;
|
|
182
|
+
/**
|
|
183
|
+
* @deprecated Runtime string encode/decode paths are always UTF-8 based.
|
|
184
|
+
* This option is accepted for legacy type compatibility only and has no
|
|
185
|
+
* runtime effect.
|
|
186
|
+
*/
|
|
187
|
+
encoding?: DduTextEncoding;
|
|
154
188
|
/** 커스텀 charset 문자 배열 또는 문자열 */
|
|
155
189
|
dduChar?: string[] | string;
|
|
156
190
|
/** 종성 문자 배열 (dduChar × codaChar 조합으로 최종 charset 동적 생성) */
|
|
@@ -163,7 +197,10 @@ interface DduConstructorOptions extends DduOptions {
|
|
|
163
197
|
usePowerOfTwo?: boolean;
|
|
164
198
|
/**
|
|
165
199
|
* true이면 초기화 오류 시 throw합니다. false이면 fallback charset으로 대체합니다.
|
|
166
|
-
*
|
|
200
|
+
*
|
|
201
|
+
* ⚠️ 5.0 변경: 기본값이 `false` → `true`로 전환되었습니다. 잘못된 커스텀 charset에
|
|
202
|
+
* 더 엄격하게 동작하며, 레거시의 묵시적 fallback 동작이 필요하면 `false`를 명시하세요.
|
|
203
|
+
* @default true
|
|
167
204
|
*/
|
|
168
205
|
throwOnError?: boolean;
|
|
169
206
|
/** URL-Safe 모드 (특수문자를 URL 안전 문자로 변환) */
|
|
@@ -176,7 +213,7 @@ interface DduConstructorOptions extends DduOptions {
|
|
|
176
213
|
useRepeatPadding?: boolean;
|
|
177
214
|
/** 명시적 플랫폼 어댑터 (자동 감지 대신 사용) */
|
|
178
215
|
adapter?: PlatformAdapter;
|
|
179
|
-
/** WASM 임계값 (바이트 단위, 기본값:
|
|
216
|
+
/** WASM 임계값 (바이트 단위, 기본값: 16384, 범위: 1024-1048576, Infinity면 비활성화) */
|
|
180
217
|
wasmThreshold?: number;
|
|
181
218
|
}
|
|
182
219
|
/**
|
|
@@ -257,54 +294,6 @@ interface ObfuscationLayer {
|
|
|
257
294
|
*/
|
|
258
295
|
deobfuscate(input: string): string;
|
|
259
296
|
}
|
|
260
|
-
/**
|
|
261
|
-
* 크로스 플랫폼 인코딩 호환성 및 와이어 포맷 적합성을 검증하기 위한
|
|
262
|
-
* 표준화된 테스트 벡터 형식.
|
|
263
|
-
*/
|
|
264
|
-
interface TestVector {
|
|
265
|
-
/** 이 테스트 벡터의 고유 식별자 */
|
|
266
|
-
id: string;
|
|
267
|
-
/** 이 벡터가 테스트하는 내용에 대한 설명 */
|
|
268
|
-
description: string;
|
|
269
|
-
/** 입력 데이터 명세 */
|
|
270
|
-
input: {
|
|
271
|
-
/** 16진수 인코딩된 입력 바이트 */
|
|
272
|
-
raw: string;
|
|
273
|
-
/** 원시 데이터의 인코딩 */
|
|
274
|
-
encoding: "utf-8" | "binary";
|
|
275
|
-
};
|
|
276
|
-
/** 이 벡터의 charset 설정 */
|
|
277
|
-
charset: {
|
|
278
|
-
/** 프리셋 심볼 (내장 charset 사용 시) */
|
|
279
|
-
preset?: DduSetSymbol;
|
|
280
|
-
/** 커스텀 charset 문자 (프리셋 미사용 시) */
|
|
281
|
-
dduChar?: string[];
|
|
282
|
-
/** 조합 charset용 종성 문자 */
|
|
283
|
-
codaChar?: string[];
|
|
284
|
-
/** 패딩 문자 */
|
|
285
|
-
paddingChar: string;
|
|
286
|
-
};
|
|
287
|
-
/** 인코딩 옵션 */
|
|
288
|
-
options: {
|
|
289
|
-
compress?: boolean;
|
|
290
|
-
compressionAlgorithm?: "deflate" | "brotli";
|
|
291
|
-
encrypt?: boolean;
|
|
292
|
-
encryptionKey?: string;
|
|
293
|
-
checksum?: boolean;
|
|
294
|
-
urlSafe?: boolean;
|
|
295
|
-
chunkSize?: number;
|
|
296
|
-
useRepeatPadding?: boolean;
|
|
297
|
-
};
|
|
298
|
-
/** 기대 출력 */
|
|
299
|
-
expected: {
|
|
300
|
-
/** 기대되는 인코딩 문자열 */
|
|
301
|
-
encoded: string;
|
|
302
|
-
/** 바이너리 비교를 위한 16진수 표현 */
|
|
303
|
-
encodedHex?: string;
|
|
304
|
-
};
|
|
305
|
-
/** 테스트 벡터 분류 태그 */
|
|
306
|
-
tags: string[];
|
|
307
|
-
}
|
|
308
297
|
|
|
309
298
|
/**
|
|
310
299
|
* 플랫폼 독립 Ddu64 인코더/디코더 코어.
|
|
@@ -331,8 +320,6 @@ declare class Ddu64Core {
|
|
|
331
320
|
protected readonly usePowerOfTwo: boolean;
|
|
332
321
|
/** UTF-16 코드 유닛 → 인덱스 direct lookup (단일 BMP 심볼 전용) */
|
|
333
322
|
private readonly dduCharCodeLookup;
|
|
334
|
-
/** 미리 정의된 charset 사용 여부 */
|
|
335
|
-
private readonly isPredefinedCharSet;
|
|
336
323
|
/** 기본 압축 활성화 */
|
|
337
324
|
protected readonly defaultCompress: boolean;
|
|
338
325
|
/** 기본 최대 디코딩 바이트 수 */
|
|
@@ -347,8 +334,12 @@ declare class Ddu64Core {
|
|
|
347
334
|
private readonly keyDerivation;
|
|
348
335
|
/** 캐시된 암호화 키 해시 */
|
|
349
336
|
private encryptionKeyHash;
|
|
337
|
+
/** 캐시된 어댑터 게이트웨이 컨텍스트 (호출당 재할당 방지, 해시는 getter로 라이브 조회) */
|
|
338
|
+
private syncGatewayContext;
|
|
350
339
|
/** 기본 체크섬 활성화 */
|
|
351
340
|
private readonly defaultChecksum;
|
|
341
|
+
/** 기본 체크섬 계산 범위 */
|
|
342
|
+
private readonly defaultChecksumScope;
|
|
352
343
|
/** 기본 청크 크기 */
|
|
353
344
|
private readonly defaultChunkSize;
|
|
354
345
|
/** 기본 청크 구분자 */
|
|
@@ -375,6 +366,19 @@ declare class Ddu64Core {
|
|
|
375
366
|
private readonly defaultObfuscate;
|
|
376
367
|
/** 지연 초기화되는 난독화 레이어 */
|
|
377
368
|
private obfuscationLayer;
|
|
369
|
+
/**
|
|
370
|
+
* Ddu64 인코더/디코더를 생성합니다.
|
|
371
|
+
*
|
|
372
|
+
* 권장: 옵션 객체 단일 인자 형태 — `new Ddu64({ dduSetSymbol, compress, ... })`.
|
|
373
|
+
*
|
|
374
|
+
* 위치 인자 형태 `new Ddu64(dduChar, paddingChar, options)`는 커스텀 charset
|
|
375
|
+
* 지정용으로 계속 지원되지만, 가독성을 위해 옵션 객체 형태를 우선 권장합니다.
|
|
376
|
+
* (`new Ddu64(charset, padding, options)` 또는 `new Ddu64({ dduChar, paddingChar, ...options })`)
|
|
377
|
+
*
|
|
378
|
+
* @param dduChar - 커스텀 charset(문자열/배열) 또는 옵션 객체
|
|
379
|
+
* @param paddingChar - 패딩 문자 (커스텀 charset 사용 시 필수)
|
|
380
|
+
* @param dduOptions - 추가 옵션
|
|
381
|
+
*/
|
|
378
382
|
constructor(dduChar?: string[] | string | DduConstructorOptions, paddingChar?: string, dduOptions?: DduConstructorOptions);
|
|
379
383
|
/**
|
|
380
384
|
* 입력 데이터를 charset 인코딩 문자열로 인코딩합니다.
|
|
@@ -425,6 +429,11 @@ declare class Ddu64Core {
|
|
|
425
429
|
*/
|
|
426
430
|
decodeToUint8ArrayAsync(input: string, options?: DduOptions): Promise<Uint8Array>;
|
|
427
431
|
private decodeToUint8ArrayAsyncInternal;
|
|
432
|
+
/**
|
|
433
|
+
* 동기/비동기 디코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
434
|
+
* decrypt/decompress만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
435
|
+
*/
|
|
436
|
+
private buildDecodeBaseContext;
|
|
428
437
|
/**
|
|
429
438
|
* charset 정보를 가져옵니다.
|
|
430
439
|
*
|
|
@@ -437,10 +446,37 @@ declare class Ddu64Core {
|
|
|
437
446
|
* @group Introspection
|
|
438
447
|
*/
|
|
439
448
|
getStats(input: Uint8Array | string, options?: DduOptions): DduEncodeStats;
|
|
449
|
+
/**
|
|
450
|
+
* 비동기 인코딩 통계를 가져옵니다.
|
|
451
|
+
*
|
|
452
|
+
* 브라우저/Workers처럼 압축이 비동기 API로만 제공되는 런타임에서는 `compress: true`
|
|
453
|
+
* 통계 계산에 이 메서드를 사용하세요.
|
|
454
|
+
*
|
|
455
|
+
* @group Introspection
|
|
456
|
+
*/
|
|
457
|
+
getStatsAsync(input: Uint8Array | string, options?: DduOptions): Promise<DduEncodeStats>;
|
|
458
|
+
private buildEncodeStats;
|
|
440
459
|
/**
|
|
441
460
|
* 통계를 위한 메타데이터 포함 내부 인코딩.
|
|
442
461
|
*/
|
|
443
462
|
private encodeInternal;
|
|
463
|
+
/**
|
|
464
|
+
* getStats 전용 인코딩: 실제 AES-GCM 연산을 생략하고 길이만 정확한 더미 암호화를 사용합니다.
|
|
465
|
+
*
|
|
466
|
+
* 암호화 출력 길이는 `평문 + AEAD_OVERHEAD_BYTES`로 결정적이고, 비트팩/푸터/체크섬/난독화/
|
|
467
|
+
* URL-safe/청킹은 모두 입력 바이트 "길이"에만 의존(바이트 "값"과 무관)하므로, 더미 암호문(0으로 채운
|
|
468
|
+
* 동일 길이 버퍼)으로 마무리해도 `encoded.length`는 실제 `encode()` 출력과 바이트 단위로 일치합니다.
|
|
469
|
+
* 압축은 결과 크기와 적용 여부 판단에 필요하므로 실제로 수행합니다.
|
|
470
|
+
*
|
|
471
|
+
* 이 등식(통계 길이 === 실제 encode 길이)은 property test로 고정됩니다.
|
|
472
|
+
*/
|
|
473
|
+
private encodeStatsInternal;
|
|
474
|
+
private encodeStatsAsyncInternal;
|
|
475
|
+
/**
|
|
476
|
+
* 동기/비동기 인코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
477
|
+
* compress/encrypt만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
478
|
+
*/
|
|
479
|
+
private buildEncodeBaseContext;
|
|
444
480
|
/**
|
|
445
481
|
* 인코딩 마무리: 비트팩 인코딩 + 후처리(난독화/체크섬/URL-safe/청킹).
|
|
446
482
|
* 동기/비동기 인코딩에서 공유하는 순수 동기 단계입니다.
|
|
@@ -682,4 +718,4 @@ declare class Ddu64StreamError extends Ddu64Error {
|
|
|
682
718
|
}
|
|
683
719
|
declare function isDdu64Error(error: unknown): error is Ddu64Error;
|
|
684
720
|
|
|
685
|
-
export { type CharSetConfig as C, Ddu64Core as D, type EncodingProfile as E, type KeyDerivationAlgorithm as K, type ObfuscationLayer as O, type PlatformAdapter as P, type
|
|
721
|
+
export { type CharSetConfig as C, Ddu64Core as D, type EncodingProfile as E, type KeyDerivationAlgorithm as K, type ObfuscationLayer as O, type PlatformAdapter as P, type WasmCodec as W, type DduConstructorOptions as a, type CharSetInfo as b, CharsetBuilder as c, Ddu64AdapterError as d, Ddu64CharsetError as e, Ddu64ChecksumError as f, Ddu64CompressionError as g, Ddu64DecodeError as h, Ddu64DecompressionError as i, Ddu64DecryptionError as j, Ddu64EncodeError as k, Ddu64EncryptionError as l, Ddu64Error as m, Ddu64ErrorCode as n, type Ddu64ErrorOptions as o, Ddu64LimitError as p, Ddu64ObfuscationError as q, type Ddu64Operation as r, Ddu64StreamError as s, type DduEncodeStats as t, type DduOptions as u, type DduProgressInfo as v, DduSetSymbol as w, type DduTextEncoding as x, type KeyDerivationOptions as y, isDdu64Error as z };
|
|
@@ -9,6 +9,11 @@ declare enum DduSetSymbol {
|
|
|
9
9
|
DDU_V1 = "ddu_v1",
|
|
10
10
|
ONECHARSET = "oneCharSet"
|
|
11
11
|
}
|
|
12
|
+
/**
|
|
13
|
+
* @deprecated ddunigma runtime string encode/decode paths are UTF-8 based.
|
|
14
|
+
* This union remains for legacy type compatibility and `CharSetInfo.encoding`
|
|
15
|
+
* metadata only; non-UTF-8 values do not change runtime text conversion.
|
|
16
|
+
*/
|
|
12
17
|
type DduTextEncoding = "utf-8" | "utf8" | "latin1" | "ascii" | "base64" | "base64url" | "hex" | "binary" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le";
|
|
13
18
|
interface EncodingProfile {
|
|
14
19
|
/** 논리 심볼당 비트 수 */
|
|
@@ -63,6 +68,12 @@ interface CharSetInfo {
|
|
|
63
68
|
hasEncryptionKey: boolean;
|
|
64
69
|
/** 기본 체크섬 사용 여부 */
|
|
65
70
|
defaultChecksum: boolean;
|
|
71
|
+
/** 기본 체크섬 계산 범위 (5.0: "output") */
|
|
72
|
+
defaultChecksumScope: "plaintext" | "output";
|
|
73
|
+
/** 기본 난독화 사용 여부 */
|
|
74
|
+
defaultObfuscate: boolean;
|
|
75
|
+
/** WASM 사용 임계값 (바이트) */
|
|
76
|
+
wasmThreshold: number;
|
|
66
77
|
/** 기본 청크 크기 */
|
|
67
78
|
defaultChunkSize: number | undefined;
|
|
68
79
|
/** 기본 청크 구분자 */
|
|
@@ -103,12 +114,13 @@ interface DduEncodeStats {
|
|
|
103
114
|
type KeyDerivationAlgorithm = "sha256" | "pbkdf2";
|
|
104
115
|
interface KeyDerivationOptions {
|
|
105
116
|
/**
|
|
106
|
-
* Key derivation algorithm. Defaults to `
|
|
117
|
+
* Key derivation algorithm. Defaults to `pbkdf2` (5.0).
|
|
107
118
|
*
|
|
108
|
-
* ⚠️
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
* for high-entropy keys (e.g. 32 random bytes) or
|
|
119
|
+
* ⚠️ Migration: 4.x defaulted to `sha256`. Data encrypted with 4.x defaults must be decrypted with
|
|
120
|
+
* `algorithm: "sha256"` explicitly (key derivation is NOT self-described in the wire format).
|
|
121
|
+
* For low-entropy keys (human passwords), keep the `pbkdf2` default and provide an
|
|
122
|
+
* application-specific `salt`. Use `sha256` only for high-entropy keys (e.g. 32 random bytes) or
|
|
123
|
+
* legacy data compatibility.
|
|
112
124
|
*/
|
|
113
125
|
algorithm?: KeyDerivationAlgorithm;
|
|
114
126
|
/**
|
|
@@ -125,7 +137,11 @@ interface KeyDerivationOptions {
|
|
|
125
137
|
interface DduOptions {
|
|
126
138
|
/** 압축 사용 여부 (zlib deflate 또는 brotli) */
|
|
127
139
|
compress?: boolean;
|
|
128
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
* 내부 암/복호화 사용 여부 (기본값: true, 스트림 파이프라인 내부 제어용).
|
|
142
|
+
* @internal 일반 사용자는 `encryptionKey`로 암호화를 제어하세요. 이 플래그는
|
|
143
|
+
* 스트림/내부 파이프라인 전용이며 향후 공개 옵션에서 분리될 수 있습니다.
|
|
144
|
+
*/
|
|
129
145
|
encrypt?: boolean;
|
|
130
146
|
/** 압축 알고리즘 (기본값: "deflate") */
|
|
131
147
|
compressionAlgorithm?: "deflate" | "brotli";
|
|
@@ -137,11 +153,23 @@ interface DduOptions {
|
|
|
137
153
|
maxDecompressedBytes?: number;
|
|
138
154
|
/** 체크섬 추가 여부 (CRC32) */
|
|
139
155
|
checksum?: boolean;
|
|
156
|
+
/**
|
|
157
|
+
* 체크섬 계산 범위 (기본값: "output").
|
|
158
|
+
* - `"plaintext"`: 원본 입력 바이트의 CRC32 (레거시 범위). 암호화와 함께 쓰면 평문 CRC가 출력에 노출됩니다.
|
|
159
|
+
* - `"output"`: 인코딩 파이프라인 최종 바이트(압축/암호화 후, 와이어에 실리는 바이트)의 CRC32.
|
|
160
|
+
* 암호화 시 평문 CRC를 노출하지 않고, 복호화 이전에 전송 손상을 감지합니다.
|
|
161
|
+
*
|
|
162
|
+
* `checksum`과 마찬가지로 와이어에 자기기술 플래그가 없으므로 인코딩/디코딩에서 동일하게 지정해야 합니다.
|
|
163
|
+
*/
|
|
164
|
+
checksumScope?: "plaintext" | "output";
|
|
140
165
|
/** 청크 분할 크기 */
|
|
141
166
|
chunkSize?: number;
|
|
142
167
|
/** 청크 구분자 (기본값: '\n') */
|
|
143
168
|
chunkSeparator?: string;
|
|
144
|
-
/**
|
|
169
|
+
/**
|
|
170
|
+
* 중간 스트림 청크처럼 푸터를 생략해야 할 때 사용.
|
|
171
|
+
* @internal 스트림 인코딩 내부 전용 플래그이며 향후 공개 옵션에서 분리될 수 있습니다.
|
|
172
|
+
*/
|
|
145
173
|
omitFooter?: boolean;
|
|
146
174
|
/** 진행률 콜백 */
|
|
147
175
|
onProgress?: (info: DduProgressInfo) => void;
|
|
@@ -151,6 +179,12 @@ interface DduOptions {
|
|
|
151
179
|
interface DduConstructorOptions extends DduOptions {
|
|
152
180
|
/** 미리 정의된 charset 심볼 */
|
|
153
181
|
dduSetSymbol?: DduSetSymbol;
|
|
182
|
+
/**
|
|
183
|
+
* @deprecated Runtime string encode/decode paths are always UTF-8 based.
|
|
184
|
+
* This option is accepted for legacy type compatibility only and has no
|
|
185
|
+
* runtime effect.
|
|
186
|
+
*/
|
|
187
|
+
encoding?: DduTextEncoding;
|
|
154
188
|
/** 커스텀 charset 문자 배열 또는 문자열 */
|
|
155
189
|
dduChar?: string[] | string;
|
|
156
190
|
/** 종성 문자 배열 (dduChar × codaChar 조합으로 최종 charset 동적 생성) */
|
|
@@ -163,7 +197,10 @@ interface DduConstructorOptions extends DduOptions {
|
|
|
163
197
|
usePowerOfTwo?: boolean;
|
|
164
198
|
/**
|
|
165
199
|
* true이면 초기화 오류 시 throw합니다. false이면 fallback charset으로 대체합니다.
|
|
166
|
-
*
|
|
200
|
+
*
|
|
201
|
+
* ⚠️ 5.0 변경: 기본값이 `false` → `true`로 전환되었습니다. 잘못된 커스텀 charset에
|
|
202
|
+
* 더 엄격하게 동작하며, 레거시의 묵시적 fallback 동작이 필요하면 `false`를 명시하세요.
|
|
203
|
+
* @default true
|
|
167
204
|
*/
|
|
168
205
|
throwOnError?: boolean;
|
|
169
206
|
/** URL-Safe 모드 (특수문자를 URL 안전 문자로 변환) */
|
|
@@ -176,7 +213,7 @@ interface DduConstructorOptions extends DduOptions {
|
|
|
176
213
|
useRepeatPadding?: boolean;
|
|
177
214
|
/** 명시적 플랫폼 어댑터 (자동 감지 대신 사용) */
|
|
178
215
|
adapter?: PlatformAdapter;
|
|
179
|
-
/** WASM 임계값 (바이트 단위, 기본값:
|
|
216
|
+
/** WASM 임계값 (바이트 단위, 기본값: 16384, 범위: 1024-1048576, Infinity면 비활성화) */
|
|
180
217
|
wasmThreshold?: number;
|
|
181
218
|
}
|
|
182
219
|
/**
|
|
@@ -257,54 +294,6 @@ interface ObfuscationLayer {
|
|
|
257
294
|
*/
|
|
258
295
|
deobfuscate(input: string): string;
|
|
259
296
|
}
|
|
260
|
-
/**
|
|
261
|
-
* 크로스 플랫폼 인코딩 호환성 및 와이어 포맷 적합성을 검증하기 위한
|
|
262
|
-
* 표준화된 테스트 벡터 형식.
|
|
263
|
-
*/
|
|
264
|
-
interface TestVector {
|
|
265
|
-
/** 이 테스트 벡터의 고유 식별자 */
|
|
266
|
-
id: string;
|
|
267
|
-
/** 이 벡터가 테스트하는 내용에 대한 설명 */
|
|
268
|
-
description: string;
|
|
269
|
-
/** 입력 데이터 명세 */
|
|
270
|
-
input: {
|
|
271
|
-
/** 16진수 인코딩된 입력 바이트 */
|
|
272
|
-
raw: string;
|
|
273
|
-
/** 원시 데이터의 인코딩 */
|
|
274
|
-
encoding: "utf-8" | "binary";
|
|
275
|
-
};
|
|
276
|
-
/** 이 벡터의 charset 설정 */
|
|
277
|
-
charset: {
|
|
278
|
-
/** 프리셋 심볼 (내장 charset 사용 시) */
|
|
279
|
-
preset?: DduSetSymbol;
|
|
280
|
-
/** 커스텀 charset 문자 (프리셋 미사용 시) */
|
|
281
|
-
dduChar?: string[];
|
|
282
|
-
/** 조합 charset용 종성 문자 */
|
|
283
|
-
codaChar?: string[];
|
|
284
|
-
/** 패딩 문자 */
|
|
285
|
-
paddingChar: string;
|
|
286
|
-
};
|
|
287
|
-
/** 인코딩 옵션 */
|
|
288
|
-
options: {
|
|
289
|
-
compress?: boolean;
|
|
290
|
-
compressionAlgorithm?: "deflate" | "brotli";
|
|
291
|
-
encrypt?: boolean;
|
|
292
|
-
encryptionKey?: string;
|
|
293
|
-
checksum?: boolean;
|
|
294
|
-
urlSafe?: boolean;
|
|
295
|
-
chunkSize?: number;
|
|
296
|
-
useRepeatPadding?: boolean;
|
|
297
|
-
};
|
|
298
|
-
/** 기대 출력 */
|
|
299
|
-
expected: {
|
|
300
|
-
/** 기대되는 인코딩 문자열 */
|
|
301
|
-
encoded: string;
|
|
302
|
-
/** 바이너리 비교를 위한 16진수 표현 */
|
|
303
|
-
encodedHex?: string;
|
|
304
|
-
};
|
|
305
|
-
/** 테스트 벡터 분류 태그 */
|
|
306
|
-
tags: string[];
|
|
307
|
-
}
|
|
308
297
|
|
|
309
298
|
/**
|
|
310
299
|
* 플랫폼 독립 Ddu64 인코더/디코더 코어.
|
|
@@ -331,8 +320,6 @@ declare class Ddu64Core {
|
|
|
331
320
|
protected readonly usePowerOfTwo: boolean;
|
|
332
321
|
/** UTF-16 코드 유닛 → 인덱스 direct lookup (단일 BMP 심볼 전용) */
|
|
333
322
|
private readonly dduCharCodeLookup;
|
|
334
|
-
/** 미리 정의된 charset 사용 여부 */
|
|
335
|
-
private readonly isPredefinedCharSet;
|
|
336
323
|
/** 기본 압축 활성화 */
|
|
337
324
|
protected readonly defaultCompress: boolean;
|
|
338
325
|
/** 기본 최대 디코딩 바이트 수 */
|
|
@@ -347,8 +334,12 @@ declare class Ddu64Core {
|
|
|
347
334
|
private readonly keyDerivation;
|
|
348
335
|
/** 캐시된 암호화 키 해시 */
|
|
349
336
|
private encryptionKeyHash;
|
|
337
|
+
/** 캐시된 어댑터 게이트웨이 컨텍스트 (호출당 재할당 방지, 해시는 getter로 라이브 조회) */
|
|
338
|
+
private syncGatewayContext;
|
|
350
339
|
/** 기본 체크섬 활성화 */
|
|
351
340
|
private readonly defaultChecksum;
|
|
341
|
+
/** 기본 체크섬 계산 범위 */
|
|
342
|
+
private readonly defaultChecksumScope;
|
|
352
343
|
/** 기본 청크 크기 */
|
|
353
344
|
private readonly defaultChunkSize;
|
|
354
345
|
/** 기본 청크 구분자 */
|
|
@@ -375,6 +366,19 @@ declare class Ddu64Core {
|
|
|
375
366
|
private readonly defaultObfuscate;
|
|
376
367
|
/** 지연 초기화되는 난독화 레이어 */
|
|
377
368
|
private obfuscationLayer;
|
|
369
|
+
/**
|
|
370
|
+
* Ddu64 인코더/디코더를 생성합니다.
|
|
371
|
+
*
|
|
372
|
+
* 권장: 옵션 객체 단일 인자 형태 — `new Ddu64({ dduSetSymbol, compress, ... })`.
|
|
373
|
+
*
|
|
374
|
+
* 위치 인자 형태 `new Ddu64(dduChar, paddingChar, options)`는 커스텀 charset
|
|
375
|
+
* 지정용으로 계속 지원되지만, 가독성을 위해 옵션 객체 형태를 우선 권장합니다.
|
|
376
|
+
* (`new Ddu64(charset, padding, options)` 또는 `new Ddu64({ dduChar, paddingChar, ...options })`)
|
|
377
|
+
*
|
|
378
|
+
* @param dduChar - 커스텀 charset(문자열/배열) 또는 옵션 객체
|
|
379
|
+
* @param paddingChar - 패딩 문자 (커스텀 charset 사용 시 필수)
|
|
380
|
+
* @param dduOptions - 추가 옵션
|
|
381
|
+
*/
|
|
378
382
|
constructor(dduChar?: string[] | string | DduConstructorOptions, paddingChar?: string, dduOptions?: DduConstructorOptions);
|
|
379
383
|
/**
|
|
380
384
|
* 입력 데이터를 charset 인코딩 문자열로 인코딩합니다.
|
|
@@ -425,6 +429,11 @@ declare class Ddu64Core {
|
|
|
425
429
|
*/
|
|
426
430
|
decodeToUint8ArrayAsync(input: string, options?: DduOptions): Promise<Uint8Array>;
|
|
427
431
|
private decodeToUint8ArrayAsyncInternal;
|
|
432
|
+
/**
|
|
433
|
+
* 동기/비동기 디코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
434
|
+
* decrypt/decompress만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
435
|
+
*/
|
|
436
|
+
private buildDecodeBaseContext;
|
|
428
437
|
/**
|
|
429
438
|
* charset 정보를 가져옵니다.
|
|
430
439
|
*
|
|
@@ -437,10 +446,37 @@ declare class Ddu64Core {
|
|
|
437
446
|
* @group Introspection
|
|
438
447
|
*/
|
|
439
448
|
getStats(input: Uint8Array | string, options?: DduOptions): DduEncodeStats;
|
|
449
|
+
/**
|
|
450
|
+
* 비동기 인코딩 통계를 가져옵니다.
|
|
451
|
+
*
|
|
452
|
+
* 브라우저/Workers처럼 압축이 비동기 API로만 제공되는 런타임에서는 `compress: true`
|
|
453
|
+
* 통계 계산에 이 메서드를 사용하세요.
|
|
454
|
+
*
|
|
455
|
+
* @group Introspection
|
|
456
|
+
*/
|
|
457
|
+
getStatsAsync(input: Uint8Array | string, options?: DduOptions): Promise<DduEncodeStats>;
|
|
458
|
+
private buildEncodeStats;
|
|
440
459
|
/**
|
|
441
460
|
* 통계를 위한 메타데이터 포함 내부 인코딩.
|
|
442
461
|
*/
|
|
443
462
|
private encodeInternal;
|
|
463
|
+
/**
|
|
464
|
+
* getStats 전용 인코딩: 실제 AES-GCM 연산을 생략하고 길이만 정확한 더미 암호화를 사용합니다.
|
|
465
|
+
*
|
|
466
|
+
* 암호화 출력 길이는 `평문 + AEAD_OVERHEAD_BYTES`로 결정적이고, 비트팩/푸터/체크섬/난독화/
|
|
467
|
+
* URL-safe/청킹은 모두 입력 바이트 "길이"에만 의존(바이트 "값"과 무관)하므로, 더미 암호문(0으로 채운
|
|
468
|
+
* 동일 길이 버퍼)으로 마무리해도 `encoded.length`는 실제 `encode()` 출력과 바이트 단위로 일치합니다.
|
|
469
|
+
* 압축은 결과 크기와 적용 여부 판단에 필요하므로 실제로 수행합니다.
|
|
470
|
+
*
|
|
471
|
+
* 이 등식(통계 길이 === 실제 encode 길이)은 property test로 고정됩니다.
|
|
472
|
+
*/
|
|
473
|
+
private encodeStatsInternal;
|
|
474
|
+
private encodeStatsAsyncInternal;
|
|
475
|
+
/**
|
|
476
|
+
* 동기/비동기 인코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
477
|
+
* compress/encrypt만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
478
|
+
*/
|
|
479
|
+
private buildEncodeBaseContext;
|
|
444
480
|
/**
|
|
445
481
|
* 인코딩 마무리: 비트팩 인코딩 + 후처리(난독화/체크섬/URL-safe/청킹).
|
|
446
482
|
* 동기/비동기 인코딩에서 공유하는 순수 동기 단계입니다.
|
|
@@ -682,4 +718,4 @@ declare class Ddu64StreamError extends Ddu64Error {
|
|
|
682
718
|
}
|
|
683
719
|
declare function isDdu64Error(error: unknown): error is Ddu64Error;
|
|
684
720
|
|
|
685
|
-
export { type CharSetConfig as C, Ddu64Core as D, type EncodingProfile as E, type KeyDerivationAlgorithm as K, type ObfuscationLayer as O, type PlatformAdapter as P, type
|
|
721
|
+
export { type CharSetConfig as C, Ddu64Core as D, type EncodingProfile as E, type KeyDerivationAlgorithm as K, type ObfuscationLayer as O, type PlatformAdapter as P, type WasmCodec as W, type DduConstructorOptions as a, type CharSetInfo as b, CharsetBuilder as c, Ddu64AdapterError as d, Ddu64CharsetError as e, Ddu64ChecksumError as f, Ddu64CompressionError as g, Ddu64DecodeError as h, Ddu64DecompressionError as i, Ddu64DecryptionError as j, Ddu64EncodeError as k, Ddu64EncryptionError as l, Ddu64Error as m, Ddu64ErrorCode as n, type Ddu64ErrorOptions as o, Ddu64LimitError as p, Ddu64ObfuscationError as q, type Ddu64Operation as r, Ddu64StreamError as s, type DduEncodeStats as t, type DduOptions as u, type DduProgressInfo as v, DduSetSymbol as w, type DduTextEncoding as x, type KeyDerivationOptions as y, isDdu64Error as z };
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkWCXD5LRF_cjs=require('./chunk-WCXD5LRF.cjs'),chunkUMA4JEN4_cjs=require('./chunk-UMA4JEN4.cjs'),chunkAMOZHHMB_cjs=require('./chunk-AMOZHHMB.cjs'),chunkHZJ7PU7X_cjs=require('./chunk-HZJ7PU7X.cjs');require('./chunk-5NSHXTMN.cjs');var promises=require('fs/promises'),path=require('path'),url=require('url');var _documentCurrentScript=typeof document!=='undefined'?document.currentScript:null;var s=class extends chunkUMA4JEN4_cjs.C{constructor(r,t,e){let d=chunkUMA4JEN4_cjs.B(r,t,e),C={...d.dduOptions,...d.dduChar!==void 0?{dduChar:d.dduChar}:{},...d.paddingChar!==void 0?{paddingChar:d.paddingChar}:{},adapter:d.dduOptions?.adapter??new chunkHZJ7PU7X_cjs.a};super(C);}decodeToBuffer(r,t){let e=this.decodeToUint8Array(r,t);return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}async decodeToBufferAsync(r,t){let e=await this.decodeToUint8ArrayAsync(r,t);return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}};async function U(){let o=chunkWCXD5LRF_cjs.a();switch(o){case "node":{let{NodeAdapter:r}=await import('./NodeAdapter-EQ73FGEJ.cjs');return new r}case "deno":case "bun":case "browser":case "edge":{let{BrowserAdapter:r}=await import('./BrowserAdapter-PB4J6FHX.cjs');return new r(o)}default:throw new Error("[ddunigma] No suitable crypto provider found. Detected runtime lacks both Node.js crypto module and Web Crypto API (SubtleCrypto).")}}var D=false;async function q(o){try{let r=await promises.readFile(o);return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}catch{return null}}async function z(){let o=path.dirname(url.fileURLToPath((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('index.cjs', document.baseURI).href)))),r=[path.join(o,"wasm","codec.wasm"),path.join(o,"codec.wasm"),path.join(o,"..","wasm","codec.wasm")];for(let t of r){let e=await q(t);if(e)return e}return null}function c(){D||(chunkUMA4JEN4_cjs.k(z),D=true);}async function G(){return c(),chunkUMA4JEN4_cjs.h()}function J(){return c(),chunkUMA4JEN4_cjs.i()}function Q(){return c(),chunkUMA4JEN4_cjs.j()}Object.defineProperty(exports,"createReadableDecodeStream",{enumerable:true,get:function(){return chunkWCXD5LRF_cjs.c}});Object.defineProperty(exports,"createReadableEncodeStream",{enumerable:true,get:function(){return chunkWCXD5LRF_cjs.b}});Object.defineProperty(exports,"detectRuntime",{enumerable:true,get:function(){return chunkWCXD5LRF_cjs.a}});Object.defineProperty(exports,"CharsetBuilder",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.D}});Object.defineProperty(exports,"Ddu64AdapterError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.w}});Object.defineProperty(exports,"Ddu64CharsetError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.u}});Object.defineProperty(exports,"Ddu64ChecksumError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.t}});Object.defineProperty(exports,"Ddu64CompressionError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.p}});Object.defineProperty(exports,"Ddu64Core",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.C}});Object.defineProperty(exports,"Ddu64DecodeError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.o}});Object.defineProperty(exports,"Ddu64DecompressionError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.q}});Object.defineProperty(exports,"Ddu64DecryptionError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.s}});Object.defineProperty(exports,"Ddu64EncodeError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.n}});Object.defineProperty(exports,"Ddu64EncryptionError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.r}});Object.defineProperty(exports,"Ddu64Error",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.m}});Object.defineProperty(exports,"Ddu64ErrorCode",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.l}});Object.defineProperty(exports,"Ddu64LimitError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.v}});Object.defineProperty(exports,"Ddu64ObfuscationError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.x}});Object.defineProperty(exports,"Ddu64StreamError",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.y}});Object.defineProperty(exports,"DduSetSymbol",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.a}});Object.defineProperty(exports,"HangulObfuscationLayer",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.e}});Object.defineProperty(exports,"createEncoderObfuscationLayer",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.g}});Object.defineProperty(exports,"createObfuscationLayer",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.f}});Object.defineProperty(exports,"isDdu64Error",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.z}});Object.defineProperty(exports,"BrowserAdapter",{enumerable:true,get:function(){return chunkAMOZHHMB_cjs.a}});Object.defineProperty(exports,"NodeAdapter",{enumerable:true,get:function(){return chunkHZJ7PU7X_cjs.a}});exports.Ddu64=s;exports.Ddu64Node=s;exports.getAdapter=U;exports.getWasmCodec=J;exports.getWasmCodecSync=Q;exports.preloadWasm=G;//# sourceMappingURL=index.cjs.map
|
|
2
2
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { D as Ddu64Core, a as DduConstructorOptions, u as DduOptions, P as PlatformAdapter, y as KeyDerivationOptions, W as WasmCodec } from './errors-
|
|
2
|
-
export { C as CharSetConfig, b as CharSetInfo, c as CharsetBuilder, d as Ddu64AdapterError, e as Ddu64CharsetError, f as Ddu64ChecksumError, g as Ddu64CompressionError, h as Ddu64DecodeError, i as Ddu64DecompressionError, j as Ddu64DecryptionError, k as Ddu64EncodeError, l as Ddu64EncryptionError, m as Ddu64Error, n as Ddu64ErrorCode, o as Ddu64ErrorOptions, p as Ddu64LimitError, q as Ddu64ObfuscationError, r as Ddu64Operation, s as Ddu64StreamError, t as DduEncodeStats, v as DduProgressInfo, w as DduSetSymbol, x as DduTextEncoding, E as EncodingProfile, K as KeyDerivationAlgorithm, O as ObfuscationLayer,
|
|
3
|
-
export { B as BrowserAdapter, H as HangulObfuscationLayer, c as
|
|
1
|
+
import { D as Ddu64Core, a as DduConstructorOptions, u as DduOptions, P as PlatformAdapter, y as KeyDerivationOptions, W as WasmCodec } from './errors-DNICpo4L.cjs';
|
|
2
|
+
export { C as CharSetConfig, b as CharSetInfo, c as CharsetBuilder, d as Ddu64AdapterError, e as Ddu64CharsetError, f as Ddu64ChecksumError, g as Ddu64CompressionError, h as Ddu64DecodeError, i as Ddu64DecompressionError, j as Ddu64DecryptionError, k as Ddu64EncodeError, l as Ddu64EncryptionError, m as Ddu64Error, n as Ddu64ErrorCode, o as Ddu64ErrorOptions, p as Ddu64LimitError, q as Ddu64ObfuscationError, r as Ddu64Operation, s as Ddu64StreamError, t as DduEncodeStats, v as DduProgressInfo, w as DduSetSymbol, x as DduTextEncoding, E as EncodingProfile, K as KeyDerivationAlgorithm, O as ObfuscationLayer, z as isDdu64Error } from './errors-DNICpo4L.cjs';
|
|
3
|
+
export { B as BrowserAdapter, H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, a as createObfuscationLayer, b as createReadableDecodeStream, d as createReadableEncodeStream, e as detectRuntime } from './ObfuscationLayer-BgL73E5F.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Node.js 전용 Ddu64 래퍼.
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { D as Ddu64Core, a as DduConstructorOptions, u as DduOptions, P as PlatformAdapter, y as KeyDerivationOptions, W as WasmCodec } from './errors-
|
|
2
|
-
export { C as CharSetConfig, b as CharSetInfo, c as CharsetBuilder, d as Ddu64AdapterError, e as Ddu64CharsetError, f as Ddu64ChecksumError, g as Ddu64CompressionError, h as Ddu64DecodeError, i as Ddu64DecompressionError, j as Ddu64DecryptionError, k as Ddu64EncodeError, l as Ddu64EncryptionError, m as Ddu64Error, n as Ddu64ErrorCode, o as Ddu64ErrorOptions, p as Ddu64LimitError, q as Ddu64ObfuscationError, r as Ddu64Operation, s as Ddu64StreamError, t as DduEncodeStats, v as DduProgressInfo, w as DduSetSymbol, x as DduTextEncoding, E as EncodingProfile, K as KeyDerivationAlgorithm, O as ObfuscationLayer,
|
|
3
|
-
export { B as BrowserAdapter, H as HangulObfuscationLayer, c as
|
|
1
|
+
import { D as Ddu64Core, a as DduConstructorOptions, u as DduOptions, P as PlatformAdapter, y as KeyDerivationOptions, W as WasmCodec } from './errors-DNICpo4L.js';
|
|
2
|
+
export { C as CharSetConfig, b as CharSetInfo, c as CharsetBuilder, d as Ddu64AdapterError, e as Ddu64CharsetError, f as Ddu64ChecksumError, g as Ddu64CompressionError, h as Ddu64DecodeError, i as Ddu64DecompressionError, j as Ddu64DecryptionError, k as Ddu64EncodeError, l as Ddu64EncryptionError, m as Ddu64Error, n as Ddu64ErrorCode, o as Ddu64ErrorOptions, p as Ddu64LimitError, q as Ddu64ObfuscationError, r as Ddu64Operation, s as Ddu64StreamError, t as DduEncodeStats, v as DduProgressInfo, w as DduSetSymbol, x as DduTextEncoding, E as EncodingProfile, K as KeyDerivationAlgorithm, O as ObfuscationLayer, z as isDdu64Error } from './errors-DNICpo4L.js';
|
|
3
|
+
export { B as BrowserAdapter, H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, a as createObfuscationLayer, b as createReadableDecodeStream, d as createReadableEncodeStream, e as detectRuntime } from './ObfuscationLayer-BDr-0s1M.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Node.js 전용 Ddu64 래퍼.
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {a as a$1}from'./chunk-
|
|
1
|
+
import {a as a$1}from'./chunk-KS6PRP5Y.js';export{c as createReadableDecodeStream,b as createReadableEncodeStream,a as detectRuntime}from'./chunk-KS6PRP5Y.js';import {C,B,h,i,j,k}from'./chunk-HTZT725P.js';export{D as CharsetBuilder,w as Ddu64AdapterError,u as Ddu64CharsetError,t as Ddu64ChecksumError,p as Ddu64CompressionError,C as Ddu64Core,o as Ddu64DecodeError,q as Ddu64DecompressionError,s as Ddu64DecryptionError,n as Ddu64EncodeError,r as Ddu64EncryptionError,m as Ddu64Error,l as Ddu64ErrorCode,v as Ddu64LimitError,x as Ddu64ObfuscationError,y as Ddu64StreamError,a as DduSetSymbol,e as HangulObfuscationLayer,g as createEncoderObfuscationLayer,f as createObfuscationLayer,z as isDdu64Error}from'./chunk-HTZT725P.js';export{a as BrowserAdapter}from'./chunk-CQATQOBZ.js';import {a}from'./chunk-7RWUNW5S.js';export{a as NodeAdapter}from'./chunk-7RWUNW5S.js';import'./chunk-OQXMQIE3.js';import {readFile}from'fs/promises';import {dirname,join}from'path';import {fileURLToPath}from'url';var s=class extends C{constructor(r,t,e){let d=B(r,t,e),C={...d.dduOptions,...d.dduChar!==void 0?{dduChar:d.dduChar}:{},...d.paddingChar!==void 0?{paddingChar:d.paddingChar}:{},adapter:d.dduOptions?.adapter??new a};super(C);}decodeToBuffer(r,t){let e=this.decodeToUint8Array(r,t);return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}async decodeToBufferAsync(r,t){let e=await this.decodeToUint8ArrayAsync(r,t);return Buffer.from(e.buffer,e.byteOffset,e.byteLength)}};async function U(){let o=a$1();switch(o){case "node":{let{NodeAdapter:r}=await import('./NodeAdapter-5FBNCJSG.js');return new r}case "deno":case "bun":case "browser":case "edge":{let{BrowserAdapter:r}=await import('./BrowserAdapter-HORDDCOE.js');return new r(o)}default:throw new Error("[ddunigma] No suitable crypto provider found. Detected runtime lacks both Node.js crypto module and Web Crypto API (SubtleCrypto).")}}var D=false;async function q(o){try{let r=await readFile(o);return r.buffer.slice(r.byteOffset,r.byteOffset+r.byteLength)}catch{return null}}async function z(){let o=dirname(fileURLToPath(import.meta.url)),r=[join(o,"wasm","codec.wasm"),join(o,"codec.wasm"),join(o,"..","wasm","codec.wasm")];for(let t of r){let e=await q(t);if(e)return e}return null}function c(){D||(k(z),D=true);}async function G(){return c(),h()}function J(){return c(),i()}function Q(){return c(),j()}export{s as Ddu64,s as Ddu64Node,U as getAdapter,J as getWasmCodec,Q as getWasmCodecSync,G as preloadWasm};//# sourceMappingURL=index.js.map
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/wasm/codec.wasm
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ddunigma/node",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
4
|
"main": "dist/index.cjs",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -13,12 +13,16 @@
|
|
|
13
13
|
"scripts": {
|
|
14
14
|
"build": "tsup",
|
|
15
15
|
"bench": "node --expose-gc --import tsx benchmarks/encoding-benchmark.ts",
|
|
16
|
+
"bench:micro": "node --expose-gc --import tsx benchmarks/micro-benchmark.ts",
|
|
17
|
+
"bench:threshold": "node --expose-gc --import tsx benchmarks/wasm-threshold-benchmark.ts",
|
|
18
|
+
"bench:guard": "node --expose-gc --import tsx benchmarks/perf-guard.ts",
|
|
19
|
+
"gen:v5-vectors": "node --import tsx scripts/gen-v5-vectors.ts",
|
|
16
20
|
"pack:check": "node scripts/verify-pack.mjs",
|
|
17
|
-
"prepublishOnly": "pnpm test && pnpm build && pnpm pack:check",
|
|
21
|
+
"prepublishOnly": "pnpm typecheck && pnpm lint && pnpm test && pnpm build && pnpm pack:check",
|
|
18
22
|
"test": "vitest run",
|
|
19
23
|
"test:watch": "vitest",
|
|
20
24
|
"test:coverage": "vitest run --coverage",
|
|
21
|
-
"typecheck": "tsc --noEmit",
|
|
25
|
+
"typecheck": "tsc --noEmit && tsc -p tsconfig.test.json",
|
|
22
26
|
"lint": "eslint src eslint.config.mjs tsup.config.ts",
|
|
23
27
|
"lint:fix": "eslint src eslint.config.mjs tsup.config.ts --fix",
|
|
24
28
|
"format": "prettier --write src/",
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
'use strict';var chunkRFBXQWSA_cjs=require('./chunk-RFBXQWSA.cjs');require('./chunk-NY4FGVF3.cjs');Object.defineProperty(exports,"BrowserAdapter",{enumerable:true,get:function(){return chunkRFBXQWSA_cjs.a}});//# sourceMappingURL=BrowserAdapter-LIUL744V.cjs.map
|
|
2
|
-
//# sourceMappingURL=BrowserAdapter-LIUL744V.cjs.map
|