@ddunigma/node 6.1.0 → 6.1.2
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/CHANGELOG.md +41 -2
- package/CONTRIBUTING.md +137 -0
- package/README.md +50 -37
- package/ROADMAP.md +12 -11
- package/dist/BrowserAdapter-FJYE5LZO.js +1 -0
- package/dist/BrowserAdapter-NXLXZCJX.cjs +1 -0
- package/dist/{ObfuscationLayer-CotTuQ5X.d.ts → ObfuscationLayer-C5TQHpYX.d.cts} +9 -11
- package/dist/{ObfuscationLayer-CK0ptcW-.d.cts → ObfuscationLayer-DmlvbjTB.d.ts} +9 -11
- package/dist/{WebStreams-CJyGMELL.d.ts → WebStreams-DY1ovJBp.d.cts} +5 -9
- package/dist/{WebStreams-BSCrvsT3.d.cts → WebStreams-DynLi09H.d.ts} +5 -9
- package/dist/browser.cjs +1 -1
- package/dist/browser.d.cts +11 -11
- package/dist/browser.d.ts +11 -11
- package/dist/browser.js +1 -1
- package/dist/chunk-B4QRMN45.js +9 -0
- package/dist/chunk-BUR4IORD.cjs +1 -0
- package/dist/chunk-C2AT5XRJ.js +1 -0
- package/dist/chunk-DAHLP6QA.cjs +1 -0
- package/dist/chunk-GR2WPLDK.js +1 -0
- package/dist/chunk-JATMOMX5.cjs +9 -0
- package/dist/chunk-XVV2OPRV.js +1 -0
- package/dist/chunk-ZMNWFYGY.cjs +1 -0
- package/dist/{core-ihIEWmI5.d.cts → core-DCeItMgU.d.cts} +28 -44
- package/dist/{core-ihIEWmI5.d.ts → core-DCeItMgU.d.ts} +28 -44
- package/dist/core.cjs +1 -1
- package/dist/core.d.cts +1 -1
- package/dist/core.d.ts +1 -1
- package/dist/core.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +7 -13
- package/dist/index.d.ts +7 -13
- package/dist/index.js +1 -1
- package/dist/secure.browser.cjs +1 -1
- package/dist/secure.browser.d.cts +4 -4
- package/dist/secure.browser.d.ts +4 -4
- package/dist/secure.browser.js +1 -1
- package/dist/secure.cjs +1 -1
- package/dist/secure.d.cts +9 -9
- package/dist/secure.d.ts +9 -9
- package/dist/secure.js +1 -1
- package/docs/REFERENCE.md +33 -25
- package/package.json +22 -16
- package/dist/BrowserAdapter-A6RBN4N3.js +0 -1
- package/dist/BrowserAdapter-NWASGV3D.cjs +0 -1
- package/dist/Ddu64Secure-CRWKMJLL.js +0 -1
- package/dist/Ddu64Secure-VAMXBO3O.cjs +0 -1
- package/dist/Ddu64SecureBrowser-EZBTEXVI.cjs +0 -1
- package/dist/Ddu64SecureBrowser-FR3TZJQ7.js +0 -1
- package/dist/chunk-3TG2ZEF2.cjs +0 -1
- package/dist/chunk-4247T4B7.cjs +0 -1
- package/dist/chunk-5VZELPTG.js +0 -1
- package/dist/chunk-6AYKT6DL.cjs +0 -1
- package/dist/chunk-6ZYMNHFT.js +0 -1
- package/dist/chunk-A3OZJS5G.cjs +0 -9
- package/dist/chunk-DMUAPREO.cjs +0 -1
- package/dist/chunk-DVOLAE33.js +0 -1
- package/dist/chunk-EY5OURIG.cjs +0 -1
- package/dist/chunk-FQI54AXA.cjs +0 -1
- package/dist/chunk-HUUB5BUS.cjs +0 -1
- package/dist/chunk-IZSFO3ET.js +0 -1
- package/dist/chunk-LZFOWWT2.js +0 -1
- package/dist/chunk-Q7QV2G7V.js +0 -1
- package/dist/chunk-TCRCZHZC.js +0 -9
- package/dist/chunk-UNBJQMMP.js +0 -1
|
@@ -69,7 +69,7 @@ interface CharSetInfo {
|
|
|
69
69
|
hasEncryptionKey: boolean;
|
|
70
70
|
/** 기본 체크섬 사용 여부 */
|
|
71
71
|
defaultChecksum: boolean;
|
|
72
|
-
/** 기본 체크섬 계산 범위
|
|
72
|
+
/** 기본 체크섬 계산 범위 */
|
|
73
73
|
defaultChecksumScope: "plaintext" | "output";
|
|
74
74
|
/** 기본 난독화 사용 여부 */
|
|
75
75
|
defaultObfuscate: boolean;
|
|
@@ -145,7 +145,8 @@ interface DduBaseOptions {
|
|
|
145
145
|
/**
|
|
146
146
|
* 최대 디코딩 입력(인코딩 문자열) 길이(문자 수). 청크/개행 제거 등 전처리 이전에
|
|
147
147
|
* 선검사하여 거대한 입력에 의한 한도 우회·대량 할당을 차단합니다. 기본값은
|
|
148
|
-
* `maxDecodedBytes`에
|
|
148
|
+
* `maxDecodedBytes * 4 + 1024`에 비례하며 호출 단위로 `maxDecodedBytes`를 낮추면
|
|
149
|
+
* 이 값도 함께 낮아집니다. 조밀한 사용자 청킹은 명시적으로 늘릴 수 있습니다.
|
|
149
150
|
*/
|
|
150
151
|
maxEncodedChars?: number;
|
|
151
152
|
/** 최대 압축해제 바이트 수 (Zip Bomb 방어) */
|
|
@@ -156,13 +157,13 @@ interface DduBaseOptions {
|
|
|
156
157
|
chunkSeparator?: string;
|
|
157
158
|
/** 진행률 콜백 */
|
|
158
159
|
onProgress?: (info: DduProgressInfo) => void;
|
|
159
|
-
/** 한글 난독화 활성화 (
|
|
160
|
+
/** 한글 난독화 활성화 (암호화 키와 독립적으로 동작) */
|
|
160
161
|
obfuscate?: boolean;
|
|
161
162
|
}
|
|
162
163
|
/**
|
|
163
164
|
* Secure 확장 옵션 — `DduBaseOptions`에 압축/암호화/체크섬 부가기능 옵션을 더합니다.
|
|
164
165
|
* `@ddunigma/node`/`@ddunigma/node/browser`는 adapter-backed 옵션을 비동기 메서드에서
|
|
165
|
-
* lazy
|
|
166
|
+
* lazy adapter로 처리하고, `@ddunigma/node/secure`는 sync/async secure 표면을 모두 제공합니다.
|
|
166
167
|
*/
|
|
167
168
|
interface DduSecureOptions extends DduBaseOptions {
|
|
168
169
|
/** 압축 사용 여부 (zlib deflate 또는 brotli) */
|
|
@@ -179,7 +180,8 @@ interface DduSecureOptions extends DduBaseOptions {
|
|
|
179
180
|
* - `"output"`: 인코딩 파이프라인 최종 바이트(압축/암호화 후, 와이어에 실리는 바이트)의 CRC32.
|
|
180
181
|
* 암호화 시 평문 CRC를 노출하지 않고, 복호화 이전에 전송 손상을 감지합니다.
|
|
181
182
|
*
|
|
182
|
-
* `checksum
|
|
183
|
+
* `checksum` 사용 여부는 디코딩에서도 지정해야 하지만, scope는 checksum marker에서
|
|
184
|
+
* 자동 판별되므로 디코딩 옵션에 반복할 필요가 없습니다.
|
|
183
185
|
*/
|
|
184
186
|
checksumScope?: "plaintext" | "output";
|
|
185
187
|
/**
|
|
@@ -260,6 +262,12 @@ interface DduSecureConstructorOptions extends DduBaseConstructorOptions, DduSecu
|
|
|
260
262
|
* @internal
|
|
261
263
|
*/
|
|
262
264
|
adapterFactory?: () => PlatformAdapter;
|
|
265
|
+
/**
|
|
266
|
+
* 비동기 플랫폼 어댑터 팩토리. root 진입점이 실제 압축/암복호화 시점에
|
|
267
|
+
* 런타임 어댑터 모듈을 동적 import하는 데 사용합니다.
|
|
268
|
+
* @internal
|
|
269
|
+
*/
|
|
270
|
+
asyncAdapterFactory?: () => Promise<PlatformAdapter>;
|
|
263
271
|
}
|
|
264
272
|
/**
|
|
265
273
|
* 하위호환 별칭. 6.0 이전 코드 및 코어 내부 시그니처가 사용하던 전 기능 생성자 옵션
|
|
@@ -270,8 +278,8 @@ type DduConstructorOptions = DduSecureConstructorOptions;
|
|
|
270
278
|
* 암호화 및 압축 연산을 제공하는 플랫폼 어댑터 인터페이스.
|
|
271
279
|
* 각 런타임(Node.js, 브라우저, 엣지)이 이 인터페이스를 구현합니다.
|
|
272
280
|
*
|
|
273
|
-
* 동기 메서드(`?`로 표시)는
|
|
274
|
-
*
|
|
281
|
+
* 동기 메서드(`?`로 표시)는 선택 사항입니다. 기본 BrowserAdapter는
|
|
282
|
+
* 비동기 메서드만 구현하며 NodeAdapter는 동기·비동기 양쪽을 지원합니다.
|
|
275
283
|
*/
|
|
276
284
|
interface PlatformAdapter {
|
|
277
285
|
/** UTF-8 키 문자열에서 256비트 키를 파생 */
|
|
@@ -292,6 +300,7 @@ interface PlatformAdapter {
|
|
|
292
300
|
* @remarks 코어 인코딩/디코딩 파이프라인은 이 메서드를 호출하지 않습니다(각 어댑터가
|
|
293
301
|
* 암호화 IV를 내부에서 직접 생성). 6.0부터 **선택(optional)** 이므로 커스텀 어댑터는
|
|
294
302
|
* 구현하지 않아도 됩니다. `NodeAdapter`/`BrowserAdapter`는 편의상 계속 제공합니다.
|
|
303
|
+
* @deprecated 코어 계약에서 사용하지 않습니다. 다음 major 버전에서 제거할 예정입니다.
|
|
295
304
|
*/
|
|
296
305
|
randomBytes?(length: number): Uint8Array;
|
|
297
306
|
/** deflate 알고리즘으로 데이터를 압축 */
|
|
@@ -315,13 +324,12 @@ interface PlatformAdapter {
|
|
|
315
324
|
}
|
|
316
325
|
/**
|
|
317
326
|
* 한글 음절 난독화 레이어 인터페이스.
|
|
318
|
-
*
|
|
327
|
+
* charset 출력 문자를 한글 음절 블록으로 가역 변환합니다.
|
|
319
328
|
*/
|
|
320
329
|
interface ObfuscationLayer {
|
|
321
330
|
/**
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
* 출력 길이 <= 입력 길이의 1.5배.
|
|
331
|
+
* charset 인코딩 문자열을 한글 음절로 가역 변환합니다.
|
|
332
|
+
* 이 변환은 시각적 난독화 용도이며 기밀성을 제공하지 않습니다.
|
|
325
333
|
*/
|
|
326
334
|
obfuscate(input: string): string;
|
|
327
335
|
/**
|
|
@@ -374,7 +382,7 @@ declare class Ddu64Core {
|
|
|
374
382
|
/** 캐시된 암호화 키 해시 */
|
|
375
383
|
private encryptionKeyHash;
|
|
376
384
|
/** 캐시된 어댑터 게이트웨이 컨텍스트 (호출당 재할당 방지, 해시는 getter로 라이브 조회) */
|
|
377
|
-
private
|
|
385
|
+
private adapterGatewayContext;
|
|
378
386
|
/** 기본 체크섬 활성화 */
|
|
379
387
|
private readonly defaultChecksum;
|
|
380
388
|
/** 기본 체크섬 계산 범위 */
|
|
@@ -401,6 +409,10 @@ declare class Ddu64Core {
|
|
|
401
409
|
private adapter;
|
|
402
410
|
/** 어댑터 지연 생성 팩토리 (adapter 미지정 시 첫 암/복호화·압축 시점에 1회 호출) */
|
|
403
411
|
private readonly adapterFactory;
|
|
412
|
+
/** 비동기 어댑터 동적 import 팩토리 */
|
|
413
|
+
private readonly asyncAdapterFactory;
|
|
414
|
+
/** 동시 첫 호출의 어댑터 로드를 하나로 합치는 Promise */
|
|
415
|
+
private asyncAdapterPromise;
|
|
404
416
|
/** 난독화 레이어 팩토리 (코어-난독화 분리용 주입점) */
|
|
405
417
|
private readonly obfuscationLayerFactory;
|
|
406
418
|
/** 기본 난독화 활성화 */
|
|
@@ -453,14 +465,12 @@ declare class Ddu64Core {
|
|
|
453
465
|
* @group Sync
|
|
454
466
|
*/
|
|
455
467
|
decodeToUint8Array(input: string, options?: DduOptions): Uint8Array;
|
|
456
|
-
private decodeToUint8ArrayInternal;
|
|
457
468
|
/**
|
|
458
469
|
* 비동기 인코딩 - 브라우저를 포함한 모든 런타임에서 동작합니다.
|
|
459
470
|
*
|
|
460
471
|
* @group Async
|
|
461
472
|
*/
|
|
462
473
|
encodeAsync(input: Uint8Array | string, options?: DduOptions): Promise<string>;
|
|
463
|
-
private encodeAsyncInternal;
|
|
464
474
|
/**
|
|
465
475
|
* 비동기 디코딩 - 브라우저를 포함한 모든 런타임에서 동작합니다.
|
|
466
476
|
*
|
|
@@ -473,7 +483,6 @@ declare class Ddu64Core {
|
|
|
473
483
|
* @group Async
|
|
474
484
|
*/
|
|
475
485
|
decodeToUint8ArrayAsync(input: string, options?: DduOptions): Promise<Uint8Array>;
|
|
476
|
-
private decodeToUint8ArrayAsyncInternal;
|
|
477
486
|
/**
|
|
478
487
|
* 동기/비동기 디코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
479
488
|
* decrypt/decompress만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
@@ -501,22 +510,6 @@ declare class Ddu64Core {
|
|
|
501
510
|
*/
|
|
502
511
|
getStatsAsync(input: Uint8Array | string, options?: DduOptions): Promise<DduEncodeStats>;
|
|
503
512
|
private buildEncodeStats;
|
|
504
|
-
/**
|
|
505
|
-
* 통계를 위한 메타데이터 포함 내부 인코딩.
|
|
506
|
-
*/
|
|
507
|
-
private encodeInternal;
|
|
508
|
-
/**
|
|
509
|
-
* getStats 전용 인코딩: 실제 AES-GCM 연산을 생략하고 길이만 정확한 더미 암호화를 사용합니다.
|
|
510
|
-
*
|
|
511
|
-
* 암호화 출력 길이는 `평문 + AEAD_OVERHEAD_BYTES`로 결정적이고, 비트팩/푸터/체크섬/난독화/
|
|
512
|
-
* URL-safe/청킹은 모두 입력 바이트 "길이"에만 의존(바이트 "값"과 무관)하므로, 더미 암호문(0으로 채운
|
|
513
|
-
* 동일 길이 버퍼)으로 마무리해도 `encoded.length`는 실제 `encode()` 출력과 바이트 단위로 일치합니다.
|
|
514
|
-
* 압축은 결과 크기와 적용 여부 판단에 필요하므로 실제로 수행합니다.
|
|
515
|
-
*
|
|
516
|
-
* 이 등식(통계 길이 === 실제 encode 길이)은 property test로 고정됩니다.
|
|
517
|
-
*/
|
|
518
|
-
private encodeStatsInternal;
|
|
519
|
-
private encodeStatsAsyncInternal;
|
|
520
513
|
/**
|
|
521
514
|
* 동기/비동기 인코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
522
515
|
* compress/encrypt만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
@@ -527,24 +520,20 @@ declare class Ddu64Core {
|
|
|
527
520
|
* 동기/비동기 인코딩에서 공유하는 순수 동기 단계입니다.
|
|
528
521
|
*/
|
|
529
522
|
private finalizeEncode;
|
|
530
|
-
/**
|
|
531
|
-
* 인코딩 후처리: 난독화, 체크섬, URL-safe, 청킹을 적용합니다.
|
|
532
|
-
*/
|
|
533
|
-
private applyPostEncoding;
|
|
534
523
|
/**
|
|
535
524
|
* 디코딩 전처리: 동기/비동기 디코딩에서 공통으로 쓰는 순수 동기 단계.
|
|
536
525
|
* 청크 제거 → URL-safe 역변환 → 체크섬 추출 → 역난독화 → 푸터 파싱 →
|
|
537
526
|
* 검증(정렬/패딩/크기) → 비트팩 해제까지 수행합니다.
|
|
538
527
|
*/
|
|
539
528
|
private decodePrelude;
|
|
540
|
-
private getPayloadCodecContext;
|
|
541
529
|
private reportProgress;
|
|
542
530
|
/**
|
|
543
531
|
* 어댑터를 지연 해석합니다. 명시적 adapter가 없고 adapterFactory가 있으면 첫 호출 시
|
|
544
532
|
* 1회 생성·캐시합니다. 순수 인코딩/디코딩 경로에서는 호출되지 않습니다.
|
|
545
533
|
*/
|
|
546
534
|
private getAdapter;
|
|
547
|
-
private
|
|
535
|
+
private getAsyncAdapter;
|
|
536
|
+
private getAdapterGatewayContext;
|
|
548
537
|
/**
|
|
549
538
|
* 난독화 레이어를 가져오거나 생성합니다 (지연 초기화).
|
|
550
539
|
* 알파벳에는 charset 문자, 패딩 문자, 모든 푸터 마커 문자가 포함됩니다.
|
|
@@ -553,11 +542,10 @@ declare class Ddu64Core {
|
|
|
553
542
|
/**
|
|
554
543
|
* 주어진 호출에 난독화를 적용해야 하는지 결정합니다.
|
|
555
544
|
* 호출별 옵션이 생성자 기본값을 오버라이드합니다.
|
|
556
|
-
*
|
|
545
|
+
* 난독화는 암호화 키와 무관하게 동작합니다.
|
|
557
546
|
*/
|
|
558
547
|
private shouldObfuscate;
|
|
559
548
|
private assertSafeChunkSeparator;
|
|
560
|
-
private isLineBreakSeparator;
|
|
561
549
|
}
|
|
562
550
|
|
|
563
551
|
/**
|
|
@@ -661,10 +649,6 @@ declare class CharsetBuilder {
|
|
|
661
649
|
* 셔플이 되며, 이 역시 비밀이 아니라 재현성 용도입니다.
|
|
662
650
|
*/
|
|
663
651
|
shuffle(seed?: number): CharsetBuilder;
|
|
664
|
-
/**
|
|
665
|
-
* 시드 기반 난수 생성기 (xorshift32)
|
|
666
|
-
*/
|
|
667
|
-
private seededRandom;
|
|
668
652
|
/**
|
|
669
653
|
* 특정 길이로 자릅니다.
|
|
670
654
|
*/
|
|
@@ -779,4 +763,4 @@ declare class Ddu64StreamError extends Ddu64Error {
|
|
|
779
763
|
}
|
|
780
764
|
declare function isDdu64Error(error: unknown): error is Ddu64Error;
|
|
781
765
|
|
|
782
|
-
export { type
|
|
766
|
+
export { type DduSecureOptions as A, DduSetSymbol as B, type CharSetConfig as C, Ddu64Core as D, type DduSetSymbolInput as E, type EncodingProfile as F, type KeyDerivationOptions as G, isDdu64Error as H, type DduStreamOptions as I, type KeyDerivationAlgorithm as K, type ObfuscationLayer as O, type PlatformAdapter as P, type DduSecureConstructorOptions as a, type DduOptions as b, type DduEncodeStats as c, type CharSetInfo as d, CharsetBuilder as e, Ddu64AdapterError as f, Ddu64CharsetError as g, Ddu64ChecksumError as h, Ddu64CompressionError as i, Ddu64DecodeError as j, Ddu64DecompressionError as k, Ddu64DecryptionError as l, Ddu64EncodeError as m, Ddu64EncryptionError as n, Ddu64Error as o, Ddu64ErrorCode as p, type Ddu64ErrorOptions as q, Ddu64InvalidInputError as r, Ddu64LimitError as s, Ddu64ObfuscationError as t, type Ddu64Operation as u, Ddu64StreamError as v, type DduBaseConstructorOptions as w, type DduBaseOptions as x, type DduConstructorOptions as y, type DduProgressInfo as z };
|
|
@@ -69,7 +69,7 @@ interface CharSetInfo {
|
|
|
69
69
|
hasEncryptionKey: boolean;
|
|
70
70
|
/** 기본 체크섬 사용 여부 */
|
|
71
71
|
defaultChecksum: boolean;
|
|
72
|
-
/** 기본 체크섬 계산 범위
|
|
72
|
+
/** 기본 체크섬 계산 범위 */
|
|
73
73
|
defaultChecksumScope: "plaintext" | "output";
|
|
74
74
|
/** 기본 난독화 사용 여부 */
|
|
75
75
|
defaultObfuscate: boolean;
|
|
@@ -145,7 +145,8 @@ interface DduBaseOptions {
|
|
|
145
145
|
/**
|
|
146
146
|
* 최대 디코딩 입력(인코딩 문자열) 길이(문자 수). 청크/개행 제거 등 전처리 이전에
|
|
147
147
|
* 선검사하여 거대한 입력에 의한 한도 우회·대량 할당을 차단합니다. 기본값은
|
|
148
|
-
* `maxDecodedBytes`에
|
|
148
|
+
* `maxDecodedBytes * 4 + 1024`에 비례하며 호출 단위로 `maxDecodedBytes`를 낮추면
|
|
149
|
+
* 이 값도 함께 낮아집니다. 조밀한 사용자 청킹은 명시적으로 늘릴 수 있습니다.
|
|
149
150
|
*/
|
|
150
151
|
maxEncodedChars?: number;
|
|
151
152
|
/** 최대 압축해제 바이트 수 (Zip Bomb 방어) */
|
|
@@ -156,13 +157,13 @@ interface DduBaseOptions {
|
|
|
156
157
|
chunkSeparator?: string;
|
|
157
158
|
/** 진행률 콜백 */
|
|
158
159
|
onProgress?: (info: DduProgressInfo) => void;
|
|
159
|
-
/** 한글 난독화 활성화 (
|
|
160
|
+
/** 한글 난독화 활성화 (암호화 키와 독립적으로 동작) */
|
|
160
161
|
obfuscate?: boolean;
|
|
161
162
|
}
|
|
162
163
|
/**
|
|
163
164
|
* Secure 확장 옵션 — `DduBaseOptions`에 압축/암호화/체크섬 부가기능 옵션을 더합니다.
|
|
164
165
|
* `@ddunigma/node`/`@ddunigma/node/browser`는 adapter-backed 옵션을 비동기 메서드에서
|
|
165
|
-
* lazy
|
|
166
|
+
* lazy adapter로 처리하고, `@ddunigma/node/secure`는 sync/async secure 표면을 모두 제공합니다.
|
|
166
167
|
*/
|
|
167
168
|
interface DduSecureOptions extends DduBaseOptions {
|
|
168
169
|
/** 압축 사용 여부 (zlib deflate 또는 brotli) */
|
|
@@ -179,7 +180,8 @@ interface DduSecureOptions extends DduBaseOptions {
|
|
|
179
180
|
* - `"output"`: 인코딩 파이프라인 최종 바이트(압축/암호화 후, 와이어에 실리는 바이트)의 CRC32.
|
|
180
181
|
* 암호화 시 평문 CRC를 노출하지 않고, 복호화 이전에 전송 손상을 감지합니다.
|
|
181
182
|
*
|
|
182
|
-
* `checksum
|
|
183
|
+
* `checksum` 사용 여부는 디코딩에서도 지정해야 하지만, scope는 checksum marker에서
|
|
184
|
+
* 자동 판별되므로 디코딩 옵션에 반복할 필요가 없습니다.
|
|
183
185
|
*/
|
|
184
186
|
checksumScope?: "plaintext" | "output";
|
|
185
187
|
/**
|
|
@@ -260,6 +262,12 @@ interface DduSecureConstructorOptions extends DduBaseConstructorOptions, DduSecu
|
|
|
260
262
|
* @internal
|
|
261
263
|
*/
|
|
262
264
|
adapterFactory?: () => PlatformAdapter;
|
|
265
|
+
/**
|
|
266
|
+
* 비동기 플랫폼 어댑터 팩토리. root 진입점이 실제 압축/암복호화 시점에
|
|
267
|
+
* 런타임 어댑터 모듈을 동적 import하는 데 사용합니다.
|
|
268
|
+
* @internal
|
|
269
|
+
*/
|
|
270
|
+
asyncAdapterFactory?: () => Promise<PlatformAdapter>;
|
|
263
271
|
}
|
|
264
272
|
/**
|
|
265
273
|
* 하위호환 별칭. 6.0 이전 코드 및 코어 내부 시그니처가 사용하던 전 기능 생성자 옵션
|
|
@@ -270,8 +278,8 @@ type DduConstructorOptions = DduSecureConstructorOptions;
|
|
|
270
278
|
* 암호화 및 압축 연산을 제공하는 플랫폼 어댑터 인터페이스.
|
|
271
279
|
* 각 런타임(Node.js, 브라우저, 엣지)이 이 인터페이스를 구현합니다.
|
|
272
280
|
*
|
|
273
|
-
* 동기 메서드(`?`로 표시)는
|
|
274
|
-
*
|
|
281
|
+
* 동기 메서드(`?`로 표시)는 선택 사항입니다. 기본 BrowserAdapter는
|
|
282
|
+
* 비동기 메서드만 구현하며 NodeAdapter는 동기·비동기 양쪽을 지원합니다.
|
|
275
283
|
*/
|
|
276
284
|
interface PlatformAdapter {
|
|
277
285
|
/** UTF-8 키 문자열에서 256비트 키를 파생 */
|
|
@@ -292,6 +300,7 @@ interface PlatformAdapter {
|
|
|
292
300
|
* @remarks 코어 인코딩/디코딩 파이프라인은 이 메서드를 호출하지 않습니다(각 어댑터가
|
|
293
301
|
* 암호화 IV를 내부에서 직접 생성). 6.0부터 **선택(optional)** 이므로 커스텀 어댑터는
|
|
294
302
|
* 구현하지 않아도 됩니다. `NodeAdapter`/`BrowserAdapter`는 편의상 계속 제공합니다.
|
|
303
|
+
* @deprecated 코어 계약에서 사용하지 않습니다. 다음 major 버전에서 제거할 예정입니다.
|
|
295
304
|
*/
|
|
296
305
|
randomBytes?(length: number): Uint8Array;
|
|
297
306
|
/** deflate 알고리즘으로 데이터를 압축 */
|
|
@@ -315,13 +324,12 @@ interface PlatformAdapter {
|
|
|
315
324
|
}
|
|
316
325
|
/**
|
|
317
326
|
* 한글 음절 난독화 레이어 인터페이스.
|
|
318
|
-
*
|
|
327
|
+
* charset 출력 문자를 한글 음절 블록으로 가역 변환합니다.
|
|
319
328
|
*/
|
|
320
329
|
interface ObfuscationLayer {
|
|
321
330
|
/**
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
* 출력 길이 <= 입력 길이의 1.5배.
|
|
331
|
+
* charset 인코딩 문자열을 한글 음절로 가역 변환합니다.
|
|
332
|
+
* 이 변환은 시각적 난독화 용도이며 기밀성을 제공하지 않습니다.
|
|
325
333
|
*/
|
|
326
334
|
obfuscate(input: string): string;
|
|
327
335
|
/**
|
|
@@ -374,7 +382,7 @@ declare class Ddu64Core {
|
|
|
374
382
|
/** 캐시된 암호화 키 해시 */
|
|
375
383
|
private encryptionKeyHash;
|
|
376
384
|
/** 캐시된 어댑터 게이트웨이 컨텍스트 (호출당 재할당 방지, 해시는 getter로 라이브 조회) */
|
|
377
|
-
private
|
|
385
|
+
private adapterGatewayContext;
|
|
378
386
|
/** 기본 체크섬 활성화 */
|
|
379
387
|
private readonly defaultChecksum;
|
|
380
388
|
/** 기본 체크섬 계산 범위 */
|
|
@@ -401,6 +409,10 @@ declare class Ddu64Core {
|
|
|
401
409
|
private adapter;
|
|
402
410
|
/** 어댑터 지연 생성 팩토리 (adapter 미지정 시 첫 암/복호화·압축 시점에 1회 호출) */
|
|
403
411
|
private readonly adapterFactory;
|
|
412
|
+
/** 비동기 어댑터 동적 import 팩토리 */
|
|
413
|
+
private readonly asyncAdapterFactory;
|
|
414
|
+
/** 동시 첫 호출의 어댑터 로드를 하나로 합치는 Promise */
|
|
415
|
+
private asyncAdapterPromise;
|
|
404
416
|
/** 난독화 레이어 팩토리 (코어-난독화 분리용 주입점) */
|
|
405
417
|
private readonly obfuscationLayerFactory;
|
|
406
418
|
/** 기본 난독화 활성화 */
|
|
@@ -453,14 +465,12 @@ declare class Ddu64Core {
|
|
|
453
465
|
* @group Sync
|
|
454
466
|
*/
|
|
455
467
|
decodeToUint8Array(input: string, options?: DduOptions): Uint8Array;
|
|
456
|
-
private decodeToUint8ArrayInternal;
|
|
457
468
|
/**
|
|
458
469
|
* 비동기 인코딩 - 브라우저를 포함한 모든 런타임에서 동작합니다.
|
|
459
470
|
*
|
|
460
471
|
* @group Async
|
|
461
472
|
*/
|
|
462
473
|
encodeAsync(input: Uint8Array | string, options?: DduOptions): Promise<string>;
|
|
463
|
-
private encodeAsyncInternal;
|
|
464
474
|
/**
|
|
465
475
|
* 비동기 디코딩 - 브라우저를 포함한 모든 런타임에서 동작합니다.
|
|
466
476
|
*
|
|
@@ -473,7 +483,6 @@ declare class Ddu64Core {
|
|
|
473
483
|
* @group Async
|
|
474
484
|
*/
|
|
475
485
|
decodeToUint8ArrayAsync(input: string, options?: DduOptions): Promise<Uint8Array>;
|
|
476
|
-
private decodeToUint8ArrayAsyncInternal;
|
|
477
486
|
/**
|
|
478
487
|
* 동기/비동기 디코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
479
488
|
* decrypt/decompress만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
@@ -501,22 +510,6 @@ declare class Ddu64Core {
|
|
|
501
510
|
*/
|
|
502
511
|
getStatsAsync(input: Uint8Array | string, options?: DduOptions): Promise<DduEncodeStats>;
|
|
503
512
|
private buildEncodeStats;
|
|
504
|
-
/**
|
|
505
|
-
* 통계를 위한 메타데이터 포함 내부 인코딩.
|
|
506
|
-
*/
|
|
507
|
-
private encodeInternal;
|
|
508
|
-
/**
|
|
509
|
-
* getStats 전용 인코딩: 실제 AES-GCM 연산을 생략하고 길이만 정확한 더미 암호화를 사용합니다.
|
|
510
|
-
*
|
|
511
|
-
* 암호화 출력 길이는 `평문 + AEAD_OVERHEAD_BYTES`로 결정적이고, 비트팩/푸터/체크섬/난독화/
|
|
512
|
-
* URL-safe/청킹은 모두 입력 바이트 "길이"에만 의존(바이트 "값"과 무관)하므로, 더미 암호문(0으로 채운
|
|
513
|
-
* 동일 길이 버퍼)으로 마무리해도 `encoded.length`는 실제 `encode()` 출력과 바이트 단위로 일치합니다.
|
|
514
|
-
* 압축은 결과 크기와 적용 여부 판단에 필요하므로 실제로 수행합니다.
|
|
515
|
-
*
|
|
516
|
-
* 이 등식(통계 길이 === 실제 encode 길이)은 property test로 고정됩니다.
|
|
517
|
-
*/
|
|
518
|
-
private encodeStatsInternal;
|
|
519
|
-
private encodeStatsAsyncInternal;
|
|
520
513
|
/**
|
|
521
514
|
* 동기/비동기 인코딩 파이프라인이 공유하는 기본 컨텍스트를 구성합니다.
|
|
522
515
|
* compress/encrypt만 동기/비동기 구현에서 각각 덧붙입니다.
|
|
@@ -527,24 +520,20 @@ declare class Ddu64Core {
|
|
|
527
520
|
* 동기/비동기 인코딩에서 공유하는 순수 동기 단계입니다.
|
|
528
521
|
*/
|
|
529
522
|
private finalizeEncode;
|
|
530
|
-
/**
|
|
531
|
-
* 인코딩 후처리: 난독화, 체크섬, URL-safe, 청킹을 적용합니다.
|
|
532
|
-
*/
|
|
533
|
-
private applyPostEncoding;
|
|
534
523
|
/**
|
|
535
524
|
* 디코딩 전처리: 동기/비동기 디코딩에서 공통으로 쓰는 순수 동기 단계.
|
|
536
525
|
* 청크 제거 → URL-safe 역변환 → 체크섬 추출 → 역난독화 → 푸터 파싱 →
|
|
537
526
|
* 검증(정렬/패딩/크기) → 비트팩 해제까지 수행합니다.
|
|
538
527
|
*/
|
|
539
528
|
private decodePrelude;
|
|
540
|
-
private getPayloadCodecContext;
|
|
541
529
|
private reportProgress;
|
|
542
530
|
/**
|
|
543
531
|
* 어댑터를 지연 해석합니다. 명시적 adapter가 없고 adapterFactory가 있으면 첫 호출 시
|
|
544
532
|
* 1회 생성·캐시합니다. 순수 인코딩/디코딩 경로에서는 호출되지 않습니다.
|
|
545
533
|
*/
|
|
546
534
|
private getAdapter;
|
|
547
|
-
private
|
|
535
|
+
private getAsyncAdapter;
|
|
536
|
+
private getAdapterGatewayContext;
|
|
548
537
|
/**
|
|
549
538
|
* 난독화 레이어를 가져오거나 생성합니다 (지연 초기화).
|
|
550
539
|
* 알파벳에는 charset 문자, 패딩 문자, 모든 푸터 마커 문자가 포함됩니다.
|
|
@@ -553,11 +542,10 @@ declare class Ddu64Core {
|
|
|
553
542
|
/**
|
|
554
543
|
* 주어진 호출에 난독화를 적용해야 하는지 결정합니다.
|
|
555
544
|
* 호출별 옵션이 생성자 기본값을 오버라이드합니다.
|
|
556
|
-
*
|
|
545
|
+
* 난독화는 암호화 키와 무관하게 동작합니다.
|
|
557
546
|
*/
|
|
558
547
|
private shouldObfuscate;
|
|
559
548
|
private assertSafeChunkSeparator;
|
|
560
|
-
private isLineBreakSeparator;
|
|
561
549
|
}
|
|
562
550
|
|
|
563
551
|
/**
|
|
@@ -661,10 +649,6 @@ declare class CharsetBuilder {
|
|
|
661
649
|
* 셔플이 되며, 이 역시 비밀이 아니라 재현성 용도입니다.
|
|
662
650
|
*/
|
|
663
651
|
shuffle(seed?: number): CharsetBuilder;
|
|
664
|
-
/**
|
|
665
|
-
* 시드 기반 난수 생성기 (xorshift32)
|
|
666
|
-
*/
|
|
667
|
-
private seededRandom;
|
|
668
652
|
/**
|
|
669
653
|
* 특정 길이로 자릅니다.
|
|
670
654
|
*/
|
|
@@ -779,4 +763,4 @@ declare class Ddu64StreamError extends Ddu64Error {
|
|
|
779
763
|
}
|
|
780
764
|
declare function isDdu64Error(error: unknown): error is Ddu64Error;
|
|
781
765
|
|
|
782
|
-
export { type
|
|
766
|
+
export { type DduSecureOptions as A, DduSetSymbol as B, type CharSetConfig as C, Ddu64Core as D, type DduSetSymbolInput as E, type EncodingProfile as F, type KeyDerivationOptions as G, isDdu64Error as H, type DduStreamOptions as I, type KeyDerivationAlgorithm as K, type ObfuscationLayer as O, type PlatformAdapter as P, type DduSecureConstructorOptions as a, type DduOptions as b, type DduEncodeStats as c, type CharSetInfo as d, CharsetBuilder as e, Ddu64AdapterError as f, Ddu64CharsetError as g, Ddu64ChecksumError as h, Ddu64CompressionError as i, Ddu64DecodeError as j, Ddu64DecompressionError as k, Ddu64DecryptionError as l, Ddu64EncodeError as m, Ddu64EncryptionError as n, Ddu64Error as o, Ddu64ErrorCode as p, type Ddu64ErrorOptions as q, Ddu64InvalidInputError as r, Ddu64LimitError as s, Ddu64ObfuscationError as t, type Ddu64Operation as u, Ddu64StreamError as v, type DduBaseConstructorOptions as w, type DduBaseOptions as x, type DduConstructorOptions as y, type DduProgressInfo as z };
|
package/dist/core.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkJATMOMX5_cjs=require('./chunk-JATMOMX5.cjs'),chunkZTGECGM2_cjs=require('./chunk-ZTGECGM2.cjs');require('./chunk-BCUBYE76.cjs');Object.defineProperty(exports,"CharsetBuilder",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.j}});Object.defineProperty(exports,"Ddu64",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.i}});Object.defineProperty(exports,"Ddu64Core",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.i}});Object.defineProperty(exports,"DduSetSymbol",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.a}});Object.defineProperty(exports,"Ddu64AdapterError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.m}});Object.defineProperty(exports,"Ddu64CharsetError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.j}});Object.defineProperty(exports,"Ddu64ChecksumError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.i}});Object.defineProperty(exports,"Ddu64CompressionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.e}});Object.defineProperty(exports,"Ddu64DecodeError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.d}});Object.defineProperty(exports,"Ddu64DecompressionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.f}});Object.defineProperty(exports,"Ddu64DecryptionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.h}});Object.defineProperty(exports,"Ddu64EncodeError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.c}});Object.defineProperty(exports,"Ddu64EncryptionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.g}});Object.defineProperty(exports,"Ddu64Error",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.b}});Object.defineProperty(exports,"Ddu64ErrorCode",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.a}});Object.defineProperty(exports,"Ddu64InvalidInputError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.k}});Object.defineProperty(exports,"Ddu64LimitError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.l}});Object.defineProperty(exports,"Ddu64ObfuscationError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.n}});Object.defineProperty(exports,"Ddu64StreamError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.o}});Object.defineProperty(exports,"isDdu64Error",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.p}});
|
package/dist/core.d.cts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, D as Ddu64, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, D as Ddu64Core, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError,
|
|
1
|
+
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, D as Ddu64, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, D as Ddu64Core, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError, y as DduConstructorOptions, c as DduEncodeStats, b as DduOptions, z as DduProgressInfo, B as DduSetSymbol, E as DduSetSymbolInput, I as DduStreamOptions, F as EncodingProfile, K as KeyDerivationAlgorithm, G as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, H as isDdu64Error } from './core-DCeItMgU.cjs';
|
package/dist/core.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, D as Ddu64, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, D as Ddu64Core, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError,
|
|
1
|
+
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, D as Ddu64, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, D as Ddu64Core, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError, y as DduConstructorOptions, c as DduEncodeStats, b as DduOptions, z as DduProgressInfo, B as DduSetSymbol, E as DduSetSymbolInput, I as DduStreamOptions, F as EncodingProfile, K as KeyDerivationAlgorithm, G as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, H as isDdu64Error } from './core-DCeItMgU.js';
|
package/dist/core.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{
|
|
1
|
+
export{j as CharsetBuilder,i as Ddu64,i as Ddu64Core,a as DduSetSymbol}from'./chunk-B4QRMN45.js';export{m as Ddu64AdapterError,j as Ddu64CharsetError,i as Ddu64ChecksumError,e as Ddu64CompressionError,d as Ddu64DecodeError,f as Ddu64DecompressionError,h as Ddu64DecryptionError,c as Ddu64EncodeError,g as Ddu64EncryptionError,b as Ddu64Error,a as Ddu64ErrorCode,k as Ddu64InvalidInputError,l as Ddu64LimitError,n as Ddu64ObfuscationError,o as Ddu64StreamError,p as isDdu64Error}from'./chunk-IZK7KCU7.js';import'./chunk-EI7MMDWY.js';
|
package/dist/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkBUR4IORD_cjs=require('./chunk-BUR4IORD.cjs'),chunkJATMOMX5_cjs=require('./chunk-JATMOMX5.cjs'),chunkZTGECGM2_cjs=require('./chunk-ZTGECGM2.cjs'),chunkBCUBYE76_cjs=require('./chunk-BCUBYE76.cjs');var n=class extends chunkJATMOMX5_cjs.i{static{chunkBCUBYE76_cjs.a(this,"Ddu64Node");}#e;#o;#t;constructor(e,r,o){let t=chunkJATMOMX5_cjs.b(e,r,o),c=t.dduOptions?.adapter!==void 0||t.dduOptions?.adapterFactory!==void 0,d={...t.dduOptions,...t.dduChar!==void 0?{dduChar:t.dduChar}:{},...t.paddingChar!==void 0?{paddingChar:t.paddingChar}:{},asyncAdapterFactory:t.dduOptions?.asyncAdapterFactory??(c?void 0:()=>import('./NodeAdapter-4R7CNTHP.cjs').then(({NodeAdapter:s})=>new s)),obfuscationLayerFactory:t.dduOptions?.obfuscationLayerFactory??(s=>new chunkBUR4IORD_cjs.a(s))};super(d),this.#e=d.compress===true,this.#o=d.encryptionKey!==void 0,this.#t=c;}encode(e,r){return this.#r("encode",r),super.encode(e,r)}decodeToUint8Array(e,r){return this.#r("decode",r),super.decodeToUint8Array(e,r)}getStats(e,r){return this.#r("encode",r,false),super.getStats(e,r)}decodeToBuffer(e,r){let o=this.decodeToUint8Array(e,r);return Buffer.from(o.buffer,o.byteOffset,o.byteLength)}async decodeToBufferAsync(e,r){let o=await this.decodeToUint8ArrayAsync(e,r);return Buffer.from(o.buffer,o.byteOffset,o.byteLength)}#r(e,r,o=true){if(!this.#t&&((r?.compress??this.#e)===true||o&&this.#o))throw new chunkZTGECGM2_cjs.m("@ddunigma/node: use encodeAsync/decodeAsync/getStatsAsync, or @ddunigma/node/secure for sync secure options.",e)}};Object.defineProperty(exports,"HangulObfuscationLayer",{enumerable:true,get:function(){return chunkBUR4IORD_cjs.a}});Object.defineProperty(exports,"createEncoderObfuscationLayer",{enumerable:true,get:function(){return chunkBUR4IORD_cjs.b}});Object.defineProperty(exports,"detectRuntime",{enumerable:true,get:function(){return chunkBUR4IORD_cjs.c}});Object.defineProperty(exports,"CharsetBuilder",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.j}});Object.defineProperty(exports,"Ddu64Core",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.i}});Object.defineProperty(exports,"DduSetSymbol",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.a}});Object.defineProperty(exports,"Ddu64AdapterError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.m}});Object.defineProperty(exports,"Ddu64CharsetError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.j}});Object.defineProperty(exports,"Ddu64ChecksumError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.i}});Object.defineProperty(exports,"Ddu64CompressionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.e}});Object.defineProperty(exports,"Ddu64DecodeError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.d}});Object.defineProperty(exports,"Ddu64DecompressionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.f}});Object.defineProperty(exports,"Ddu64DecryptionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.h}});Object.defineProperty(exports,"Ddu64EncodeError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.c}});Object.defineProperty(exports,"Ddu64EncryptionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.g}});Object.defineProperty(exports,"Ddu64Error",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.b}});Object.defineProperty(exports,"Ddu64ErrorCode",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.a}});Object.defineProperty(exports,"Ddu64InvalidInputError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.k}});Object.defineProperty(exports,"Ddu64LimitError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.l}});Object.defineProperty(exports,"Ddu64ObfuscationError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.n}});Object.defineProperty(exports,"Ddu64StreamError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.o}});Object.defineProperty(exports,"isDdu64Error",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.p}});exports.Ddu64=n;exports.Ddu64Node=n;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { D as Ddu64Core, a as DduSecureConstructorOptions, b as DduOptions, c as DduEncodeStats } from './core-
|
|
2
|
-
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError, w as DduBaseConstructorOptions, x as DduBaseOptions, y as
|
|
3
|
-
export { H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, d as detectRuntime } from './ObfuscationLayer-
|
|
1
|
+
import { D as Ddu64Core, a as DduSecureConstructorOptions, b as DduOptions, c as DduEncodeStats } from './core-DCeItMgU.cjs';
|
|
2
|
+
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError, w as DduBaseConstructorOptions, x as DduBaseOptions, y as DduConstructorOptions, z as DduProgressInfo, A as DduSecureOptions, B as DduSetSymbol, E as DduSetSymbolInput, F as EncodingProfile, K as KeyDerivationAlgorithm, G as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, H as isDdu64Error } from './core-DCeItMgU.cjs';
|
|
3
|
+
export { H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, d as detectRuntime } from './ObfuscationLayer-C5TQHpYX.cjs';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Node.js 전용 기본 Ddu64 래퍼.
|
|
@@ -11,9 +11,9 @@ export { H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, d as d
|
|
|
11
11
|
* - Node.js Buffer를 반환하는 `decodeToBuffer` 및 `decodeToBufferAsync` 제공
|
|
12
12
|
* - encode()에 Buffer 입력 허용 (Buffer는 Uint8Array를 확장)
|
|
13
13
|
*
|
|
14
|
-
* 기본 경로는 어댑터(zlib/crypto)를
|
|
15
|
-
*
|
|
16
|
-
* secure
|
|
14
|
+
* 기본 경로는 어댑터(zlib/crypto)를 정적 import하지 않습니다. 비동기 압축/암복호화가
|
|
15
|
+
* 실제로 실행될 때 NodeAdapter만 동적 import해 현재 core 인스턴스에 주입합니다.
|
|
16
|
+
* 동기 secure 작업이 필요하면 `@ddunigma/node/secure`를 사용하세요.
|
|
17
17
|
*
|
|
18
18
|
* @module Ddu64Node
|
|
19
19
|
*/
|
|
@@ -44,14 +44,8 @@ declare class Ddu64Node extends Ddu64Core {
|
|
|
44
44
|
* sync 디코드 3종을 모두 덮습니다(중복 override 불필요).
|
|
45
45
|
*/
|
|
46
46
|
decodeToUint8Array(input: string, options?: DduOptions): Uint8Array;
|
|
47
|
-
/** @group Async */
|
|
48
|
-
encodeAsync(input: Uint8Array | string, options?: DduOptions): Promise<string>;
|
|
49
|
-
/** @group Async */
|
|
50
|
-
decodeToUint8ArrayAsync(input: string, options?: DduOptions): Promise<Uint8Array>;
|
|
51
47
|
/** @group Introspection */
|
|
52
48
|
getStats(input: Uint8Array | string, options?: DduOptions): DduEncodeStats;
|
|
53
|
-
/** @group Introspection */
|
|
54
|
-
getStatsAsync(input: Uint8Array | string, options?: DduOptions): Promise<DduEncodeStats>;
|
|
55
49
|
/**
|
|
56
50
|
* 인코딩된 문자열을 Node.js Buffer로 디코딩합니다.
|
|
57
51
|
*
|
|
@@ -72,4 +66,4 @@ declare class Ddu64Node extends Ddu64Core {
|
|
|
72
66
|
decodeToBufferAsync(input: string, options?: DduOptions): Promise<Buffer>;
|
|
73
67
|
}
|
|
74
68
|
|
|
75
|
-
export { Ddu64Node as Ddu64, Ddu64Core, Ddu64Node, DduEncodeStats };
|
|
69
|
+
export { Ddu64Node as Ddu64, Ddu64Core, Ddu64Node, DduEncodeStats, DduOptions, DduSecureConstructorOptions };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { D as Ddu64Core, a as DduSecureConstructorOptions, b as DduOptions, c as DduEncodeStats } from './core-
|
|
2
|
-
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError, w as DduBaseConstructorOptions, x as DduBaseOptions, y as
|
|
3
|
-
export { H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, d as detectRuntime } from './ObfuscationLayer-
|
|
1
|
+
import { D as Ddu64Core, a as DduSecureConstructorOptions, b as DduOptions, c as DduEncodeStats } from './core-DCeItMgU.js';
|
|
2
|
+
export { C as CharSetConfig, d as CharSetInfo, e as CharsetBuilder, f as Ddu64AdapterError, g as Ddu64CharsetError, h as Ddu64ChecksumError, i as Ddu64CompressionError, j as Ddu64DecodeError, k as Ddu64DecompressionError, l as Ddu64DecryptionError, m as Ddu64EncodeError, n as Ddu64EncryptionError, o as Ddu64Error, p as Ddu64ErrorCode, q as Ddu64ErrorOptions, r as Ddu64InvalidInputError, s as Ddu64LimitError, t as Ddu64ObfuscationError, u as Ddu64Operation, v as Ddu64StreamError, w as DduBaseConstructorOptions, x as DduBaseOptions, y as DduConstructorOptions, z as DduProgressInfo, A as DduSecureOptions, B as DduSetSymbol, E as DduSetSymbolInput, F as EncodingProfile, K as KeyDerivationAlgorithm, G as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, H as isDdu64Error } from './core-DCeItMgU.js';
|
|
3
|
+
export { H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, d as detectRuntime } from './ObfuscationLayer-DmlvbjTB.js';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* Node.js 전용 기본 Ddu64 래퍼.
|
|
@@ -11,9 +11,9 @@ export { H as HangulObfuscationLayer, c as createEncoderObfuscationLayer, d as d
|
|
|
11
11
|
* - Node.js Buffer를 반환하는 `decodeToBuffer` 및 `decodeToBufferAsync` 제공
|
|
12
12
|
* - encode()에 Buffer 입력 허용 (Buffer는 Uint8Array를 확장)
|
|
13
13
|
*
|
|
14
|
-
* 기본 경로는 어댑터(zlib/crypto)를
|
|
15
|
-
*
|
|
16
|
-
* secure
|
|
14
|
+
* 기본 경로는 어댑터(zlib/crypto)를 정적 import하지 않습니다. 비동기 압축/암복호화가
|
|
15
|
+
* 실제로 실행될 때 NodeAdapter만 동적 import해 현재 core 인스턴스에 주입합니다.
|
|
16
|
+
* 동기 secure 작업이 필요하면 `@ddunigma/node/secure`를 사용하세요.
|
|
17
17
|
*
|
|
18
18
|
* @module Ddu64Node
|
|
19
19
|
*/
|
|
@@ -44,14 +44,8 @@ declare class Ddu64Node extends Ddu64Core {
|
|
|
44
44
|
* sync 디코드 3종을 모두 덮습니다(중복 override 불필요).
|
|
45
45
|
*/
|
|
46
46
|
decodeToUint8Array(input: string, options?: DduOptions): Uint8Array;
|
|
47
|
-
/** @group Async */
|
|
48
|
-
encodeAsync(input: Uint8Array | string, options?: DduOptions): Promise<string>;
|
|
49
|
-
/** @group Async */
|
|
50
|
-
decodeToUint8ArrayAsync(input: string, options?: DduOptions): Promise<Uint8Array>;
|
|
51
47
|
/** @group Introspection */
|
|
52
48
|
getStats(input: Uint8Array | string, options?: DduOptions): DduEncodeStats;
|
|
53
|
-
/** @group Introspection */
|
|
54
|
-
getStatsAsync(input: Uint8Array | string, options?: DduOptions): Promise<DduEncodeStats>;
|
|
55
49
|
/**
|
|
56
50
|
* 인코딩된 문자열을 Node.js Buffer로 디코딩합니다.
|
|
57
51
|
*
|
|
@@ -72,4 +66,4 @@ declare class Ddu64Node extends Ddu64Core {
|
|
|
72
66
|
decodeToBufferAsync(input: string, options?: DduOptions): Promise<Buffer>;
|
|
73
67
|
}
|
|
74
68
|
|
|
75
|
-
export { Ddu64Node as Ddu64, Ddu64Core, Ddu64Node, DduEncodeStats };
|
|
69
|
+
export { Ddu64Node as Ddu64, Ddu64Core, Ddu64Node, DduEncodeStats, DduOptions, DduSecureConstructorOptions };
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
import {a as a$1}from'./chunk-XVV2OPRV.js';export{a as HangulObfuscationLayer,b as createEncoderObfuscationLayer,c as detectRuntime}from'./chunk-XVV2OPRV.js';import {i,b}from'./chunk-B4QRMN45.js';export{j as CharsetBuilder,i as Ddu64Core,a as DduSetSymbol}from'./chunk-B4QRMN45.js';import {m}from'./chunk-IZK7KCU7.js';export{m as Ddu64AdapterError,j as Ddu64CharsetError,i as Ddu64ChecksumError,e as Ddu64CompressionError,d as Ddu64DecodeError,f as Ddu64DecompressionError,h as Ddu64DecryptionError,c as Ddu64EncodeError,g as Ddu64EncryptionError,b as Ddu64Error,a as Ddu64ErrorCode,k as Ddu64InvalidInputError,l as Ddu64LimitError,n as Ddu64ObfuscationError,o as Ddu64StreamError,p as isDdu64Error}from'./chunk-IZK7KCU7.js';import {a}from'./chunk-EI7MMDWY.js';var n=class extends i{static{a(this,"Ddu64Node");}#e;#o;#t;constructor(e,r,o){let t=b(e,r,o),c=t.dduOptions?.adapter!==void 0||t.dduOptions?.adapterFactory!==void 0,d={...t.dduOptions,...t.dduChar!==void 0?{dduChar:t.dduChar}:{},...t.paddingChar!==void 0?{paddingChar:t.paddingChar}:{},asyncAdapterFactory:t.dduOptions?.asyncAdapterFactory??(c?void 0:()=>import('./NodeAdapter-YP22CLUP.js').then(({NodeAdapter:s})=>new s)),obfuscationLayerFactory:t.dduOptions?.obfuscationLayerFactory??(s=>new a$1(s))};super(d),this.#e=d.compress===true,this.#o=d.encryptionKey!==void 0,this.#t=c;}encode(e,r){return this.#r("encode",r),super.encode(e,r)}decodeToUint8Array(e,r){return this.#r("decode",r),super.decodeToUint8Array(e,r)}getStats(e,r){return this.#r("encode",r,false),super.getStats(e,r)}decodeToBuffer(e,r){let o=this.decodeToUint8Array(e,r);return Buffer.from(o.buffer,o.byteOffset,o.byteLength)}async decodeToBufferAsync(e,r){let o=await this.decodeToUint8ArrayAsync(e,r);return Buffer.from(o.buffer,o.byteOffset,o.byteLength)}#r(e,r,o=true){if(!this.#t&&((r?.compress??this.#e)===true||o&&this.#o))throw new m("@ddunigma/node: use encodeAsync/decodeAsync/getStatsAsync, or @ddunigma/node/secure for sync secure options.",e)}};export{n as Ddu64,n as Ddu64Node};
|
package/dist/secure.browser.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
'use strict';var
|
|
1
|
+
'use strict';var chunkDAHLP6QA_cjs=require('./chunk-DAHLP6QA.cjs'),chunkBUR4IORD_cjs=require('./chunk-BUR4IORD.cjs'),chunkJATMOMX5_cjs=require('./chunk-JATMOMX5.cjs'),chunkZMNWFYGY_cjs=require('./chunk-ZMNWFYGY.cjs'),chunkZTGECGM2_cjs=require('./chunk-ZTGECGM2.cjs');require('./chunk-JY2ZPBJK.cjs');var chunkBCUBYE76_cjs=require('./chunk-BCUBYE76.cjs');async function I(){return new chunkZMNWFYGY_cjs.a}chunkBCUBYE76_cjs.a(I,"getAdapter");Object.defineProperty(exports,"Ddu64",{enumerable:true,get:function(){return chunkDAHLP6QA_cjs.a}});Object.defineProperty(exports,"Ddu64SecureBrowser",{enumerable:true,get:function(){return chunkDAHLP6QA_cjs.a}});Object.defineProperty(exports,"createReadableDecodeStream",{enumerable:true,get:function(){return chunkDAHLP6QA_cjs.c}});Object.defineProperty(exports,"createReadableEncodeStream",{enumerable:true,get:function(){return chunkDAHLP6QA_cjs.b}});Object.defineProperty(exports,"HangulObfuscationLayer",{enumerable:true,get:function(){return chunkBUR4IORD_cjs.a}});Object.defineProperty(exports,"createEncoderObfuscationLayer",{enumerable:true,get:function(){return chunkBUR4IORD_cjs.b}});Object.defineProperty(exports,"detectRuntime",{enumerable:true,get:function(){return chunkBUR4IORD_cjs.c}});Object.defineProperty(exports,"CharsetBuilder",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.j}});Object.defineProperty(exports,"Ddu64Core",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.i}});Object.defineProperty(exports,"DduSetSymbol",{enumerable:true,get:function(){return chunkJATMOMX5_cjs.a}});Object.defineProperty(exports,"BrowserAdapter",{enumerable:true,get:function(){return chunkZMNWFYGY_cjs.a}});Object.defineProperty(exports,"Ddu64AdapterError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.m}});Object.defineProperty(exports,"Ddu64CharsetError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.j}});Object.defineProperty(exports,"Ddu64ChecksumError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.i}});Object.defineProperty(exports,"Ddu64CompressionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.e}});Object.defineProperty(exports,"Ddu64DecodeError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.d}});Object.defineProperty(exports,"Ddu64DecompressionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.f}});Object.defineProperty(exports,"Ddu64DecryptionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.h}});Object.defineProperty(exports,"Ddu64EncodeError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.c}});Object.defineProperty(exports,"Ddu64EncryptionError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.g}});Object.defineProperty(exports,"Ddu64Error",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.b}});Object.defineProperty(exports,"Ddu64ErrorCode",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.a}});Object.defineProperty(exports,"Ddu64InvalidInputError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.k}});Object.defineProperty(exports,"Ddu64LimitError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.l}});Object.defineProperty(exports,"Ddu64ObfuscationError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.n}});Object.defineProperty(exports,"Ddu64StreamError",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.o}});Object.defineProperty(exports,"isDdu64Error",{enumerable:true,get:function(){return chunkZTGECGM2_cjs.p}});exports.getAdapter=I;
|