@ddunigma/node 5.0.0 → 6.0.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.
Files changed (66) hide show
  1. package/CHANGELOG.md +234 -0
  2. package/README.md +23 -167
  3. package/ROADMAP.md +92 -0
  4. package/dist/BrowserAdapter-A6RBN4N3.js +1 -0
  5. package/dist/BrowserAdapter-NWASGV3D.cjs +1 -0
  6. package/dist/NodeAdapter-4R7CNTHP.cjs +1 -0
  7. package/dist/NodeAdapter-YP22CLUP.js +1 -0
  8. package/dist/ObfuscationLayer-4rCOCRWH.d.cts +89 -0
  9. package/dist/ObfuscationLayer-DTlA723P.d.ts +89 -0
  10. package/dist/{ObfuscationLayer-BDr-0s1M.d.ts → WebStreams-C16QV2Dz.d.ts} +43 -101
  11. package/dist/{ObfuscationLayer-BgL73E5F.d.cts → WebStreams-CY9E19f5.d.cts} +43 -101
  12. package/dist/browser.cjs +1 -2
  13. package/dist/browser.d.cts +28 -24
  14. package/dist/browser.d.ts +28 -24
  15. package/dist/browser.js +1 -2
  16. package/dist/chunk-6N7QYPEJ.js +1 -0
  17. package/dist/chunk-6ZYMNHFT.js +1 -0
  18. package/dist/chunk-76X5J2OF.cjs +1 -0
  19. package/dist/chunk-7EPVCA2F.js +1 -0
  20. package/dist/chunk-7KUEHTG2.js +1 -0
  21. package/dist/chunk-BCUBYE76.cjs +1 -0
  22. package/dist/chunk-BDP7E7K3.cjs +1 -0
  23. package/dist/chunk-EI7MMDWY.js +1 -0
  24. package/dist/chunk-HUUB5BUS.cjs +1 -0
  25. package/dist/chunk-IZK7KCU7.js +1 -0
  26. package/dist/chunk-JBUTKSCC.cjs +9 -0
  27. package/dist/chunk-JY2ZPBJK.cjs +1 -0
  28. package/dist/chunk-LCOYWJWO.cjs +1 -0
  29. package/dist/chunk-Q6SCBUV2.js +1 -0
  30. package/dist/chunk-VW2SZR2Z.js +9 -0
  31. package/dist/chunk-ZTGECGM2.cjs +1 -0
  32. package/dist/{errors-DNICpo4L.d.cts → core-BsIwjJK-.d.cts} +137 -74
  33. package/dist/{errors-DNICpo4L.d.ts → core-BsIwjJK-.d.ts} +137 -74
  34. package/dist/core.cjs +1 -2
  35. package/dist/core.d.cts +1 -40
  36. package/dist/core.d.ts +1 -40
  37. package/dist/core.js +1 -2
  38. package/dist/index.cjs +1 -2
  39. package/dist/index.d.cts +36 -83
  40. package/dist/index.d.ts +36 -83
  41. package/dist/index.js +1 -2
  42. package/dist/secure.browser.cjs +1 -0
  43. package/dist/secure.browser.d.cts +19 -0
  44. package/dist/secure.browser.d.ts +19 -0
  45. package/dist/secure.browser.js +1 -0
  46. package/dist/secure.cjs +1 -0
  47. package/dist/secure.d.cts +111 -0
  48. package/dist/secure.d.ts +111 -0
  49. package/dist/secure.js +1 -0
  50. package/docs/REFERENCE.md +235 -0
  51. package/package.json +58 -17
  52. package/dist/BrowserAdapter-HORDDCOE.js +0 -2
  53. package/dist/BrowserAdapter-PB4J6FHX.cjs +0 -2
  54. package/dist/NodeAdapter-5FBNCJSG.js +0 -2
  55. package/dist/NodeAdapter-EQ73FGEJ.cjs +0 -2
  56. package/dist/chunk-5NSHXTMN.cjs +0 -2
  57. package/dist/chunk-7RWUNW5S.js +0 -2
  58. package/dist/chunk-AMOZHHMB.cjs +0 -2
  59. package/dist/chunk-CQATQOBZ.js +0 -2
  60. package/dist/chunk-HTZT725P.js +0 -10
  61. package/dist/chunk-HZJ7PU7X.cjs +0 -2
  62. package/dist/chunk-KS6PRP5Y.js +0 -2
  63. package/dist/chunk-OQXMQIE3.js +0 -2
  64. package/dist/chunk-UMA4JEN4.cjs +0 -10
  65. package/dist/chunk-WCXD5LRF.cjs +0 -2
  66. package/dist/wasm/codec.wasm +0 -0
@@ -10,11 +10,12 @@ declare enum DduSetSymbol {
10
10
  ONECHARSET = "oneCharSet"
11
11
  }
12
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.
13
+ * `dduSetSymbol` 옵션이 받는 입력 타입.
14
+ * `DduSetSymbol` enum 멤버 또는 문자열 리터럴(`"ddu" | "ddu_v1" | "oneCharSet"`)을 허용해,
15
+ * enum을 import하지 않고도 `{ dduSetSymbol: "ddu" }`처럼 타입 안전하게 지정할 수 있습니다.
16
+ * 런타임 값은 enum 값과 동일하므로 동작·와이어 포맷에 영향이 없습니다.
16
17
  */
17
- type DduTextEncoding = "utf-8" | "utf8" | "latin1" | "ascii" | "base64" | "base64url" | "hex" | "binary" | "ucs2" | "ucs-2" | "utf16le" | "utf-16le";
18
+ type DduSetSymbolInput = DduSetSymbol | `${DduSetSymbol}`;
18
19
  interface EncodingProfile {
19
20
  /** 논리 심볼당 비트 수 */
20
21
  bitLength: number;
@@ -54,8 +55,8 @@ interface CharSetInfo {
54
55
  bitLength: number;
55
56
  /** 2의 제곱수 charset 여부 */
56
57
  usePowerOfTwo: boolean;
57
- /** 문자열 인코딩 방식 */
58
- encoding: DduTextEncoding;
58
+ /** 문자열 인코딩 방식 (런타임은 항상 UTF-8) */
59
+ encoding: "utf-8";
59
60
  /** 기본 압축 사용 여부 */
60
61
  defaultCompress: boolean;
61
62
  /** 기본 최대 디코딩 바이트 수 */
@@ -72,8 +73,8 @@ interface CharSetInfo {
72
73
  defaultChecksumScope: "plaintext" | "output";
73
74
  /** 기본 난독화 사용 여부 */
74
75
  defaultObfuscate: boolean;
75
- /** WASM 사용 임계값 (바이트) */
76
- wasmThreshold: number;
76
+ /** 암호화 키가 있을 암호화 payload만 허용하는지 여부 */
77
+ defaultRequireEncryption: boolean;
77
78
  /** 기본 청크 크기 */
78
79
  defaultChunkSize: number | undefined;
79
80
  /** 기본 청크 구분자 */
@@ -134,23 +135,42 @@ interface KeyDerivationOptions {
134
135
  /** Hash function used by PBKDF2. */
135
136
  hash?: "SHA-256" | "SHA-384" | "SHA-512";
136
137
  }
137
- interface DduOptions {
138
- /** 압축 사용 여부 (zlib deflate 또는 brotli) */
139
- compress?: boolean;
138
+ /**
139
+ * 기본(Base) 런타임 옵션 기본 진입점(`@ddunigma/node`, `@ddunigma/node/browser`)
140
+ * 공개하는 옵션 표면. 인코딩 + 한글 난독화(재미 풀세트)에 필요한 옵션만 포함하며
141
+ * 압축/암호화/체크섬 같은 secure 부가기능은 포함하지 않습니다.
142
+ */
143
+ interface DduBaseOptions {
144
+ /** 최대 디코딩 바이트 수 (Zip Bomb 방어) */
145
+ maxDecodedBytes?: number;
140
146
  /**
141
- * 내부 암/복호화 사용 여부 (기본값: true, 스트림 파이프라인 내부 제어용).
142
- * @internal 일반 사용자는 `encryptionKey`로 암호화를 제어하세요. 플래그는
143
- * 스트림/내부 파이프라인 전용이며 향후 공개 옵션에서 분리될 수 있습니다.
147
+ * 최대 디코딩 입력(인코딩 문자열) 길이(문자 수). 청크/개행 제거 전처리 이전에
148
+ * 선검사하여 거대한 입력에 의한 한도 우회·대량 할당을 차단합니다. 기본값은
149
+ * `maxDecodedBytes`에 비례합니다.
144
150
  */
145
- encrypt?: boolean;
151
+ maxEncodedChars?: number;
152
+ /** 최대 압축해제 바이트 수 (Zip Bomb 방어) */
153
+ maxDecompressedBytes?: number;
154
+ /** 청크 분할 크기 (0이면 청킹 비활성화 — 생성자 기본값을 호출 단위로 끌 때 사용) */
155
+ chunkSize?: number;
156
+ /** 청크 구분자 (기본값: '\n') */
157
+ chunkSeparator?: string;
158
+ /** 진행률 콜백 */
159
+ onProgress?: (info: DduProgressInfo) => void;
160
+ /** 한글 난독화 활성화 (6.0: 암호화 키와 무관하게 동작) */
161
+ obfuscate?: boolean;
162
+ }
163
+ /**
164
+ * Secure 확장 옵션 — secure 진입점(`@ddunigma/node/secure`)이 공개하는 옵션 표면.
165
+ * `DduBaseOptions`를 확장하며 압축/암호화/체크섬 부가기능 옵션을 추가합니다.
166
+ */
167
+ interface DduSecureOptions extends DduBaseOptions {
168
+ /** 압축 사용 여부 (zlib deflate 또는 brotli) */
169
+ compress?: boolean;
146
170
  /** 압축 알고리즘 (기본값: "deflate") */
147
171
  compressionAlgorithm?: "deflate" | "brotli";
148
172
  /** 압축 레벨 (deflate 기본값: 6, brotli도 기본값 6을 사용하며 전달값은 0~11 범위로 보정) */
149
173
  compressionLevel?: number;
150
- /** 최대 디코딩 바이트 수 (Zip Bomb 방어) */
151
- maxDecodedBytes?: number;
152
- /** 최대 압축해제 바이트 수 (Zip Bomb 방어) */
153
- maxDecompressedBytes?: number;
154
174
  /** 체크섬 추가 여부 (CRC32) */
155
175
  checksum?: boolean;
156
176
  /**
@@ -162,29 +182,33 @@ interface DduOptions {
162
182
  * `checksum`과 마찬가지로 와이어에 자기기술 플래그가 없으므로 인코딩/디코딩에서 동일하게 지정해야 합니다.
163
183
  */
164
184
  checksumScope?: "plaintext" | "output";
165
- /** 청크 분할 크기 */
166
- chunkSize?: number;
167
- /** 청크 구분자 (기본값: '\n') */
168
- chunkSeparator?: string;
169
185
  /**
170
- * 중간 스트림 청크처럼 푸터를 생략해야 때 사용.
171
- * @internal 스트림 인코딩 내부 전용 플래그이며 향후 공개 옵션에서 분리될 수 있습니다.
186
+ * 암호화 키가 설정된 decoder에서 암호화 footer를 요구합니다.
187
+ * 기본값은 encryptionKey가 있으면 true입니다. 레거시 평문을 같은 인스턴스로
188
+ * 디코딩해야 하면 false 또는 호출별 `requireEncryption: false`를 명시하세요.
172
189
  */
173
- omitFooter?: boolean;
174
- /** 진행률 콜백 */
175
- onProgress?: (info: DduProgressInfo) => void;
176
- /** 한글 난독화 활성화 (encryptionKey 필요) */
177
- obfuscate?: boolean;
190
+ requireEncryption?: boolean;
178
191
  }
179
- interface DduConstructorOptions extends DduOptions {
180
- /** 미리 정의된 charset 심볼 */
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;
192
+ /**
193
+ * 하위호환 별칭. 6.0 이전 코드 및 코어 내부 시그니처가 사용하던 전 기능 런타임 옵션
194
+ * 타입으로, secure 표면 전체(`DduSecureOptions`)와 동일합니다. 코어는 계속 전 기능
195
+ * 타입으로 동작하며, 진입점별 공개 표면은 `DduBaseOptions`/`DduSecureOptions`로 분리됩니다.
196
+ */
197
+ type DduOptions = DduSecureOptions;
198
+ /** Web Streams 버퍼 제한을 포함한 스트림 전용 옵션 */
199
+ interface DduStreamOptions extends DduSecureOptions {
200
+ /** 압축/암호화/체크섬 인코딩 시 메모리에 축적할 최대 입력 바이트 수 */
201
+ maxBufferedBytes?: number;
202
+ /** 디코딩 시 메모리에 축적할 최대 입력 문자 수 */
203
+ maxBufferedChars?: number;
204
+ }
205
+ /**
206
+ * 기본(Base) 생성자 옵션 — charset/padding/urlSafe 계열과 Base 런타임 옵션을 포함합니다.
207
+ * 기본 진입점 래퍼(`Ddu64Node`/`Ddu64Browser`)의 생성자 표면입니다.
208
+ */
209
+ interface DduBaseConstructorOptions extends DduBaseOptions {
210
+ /** 미리 정의된 charset 심볼 (enum 멤버 또는 그 문자열 리터럴) */
211
+ dduSetSymbol?: DduSetSymbolInput;
188
212
  /** 커스텀 charset 문자 배열 또는 문자열 */
189
213
  dduChar?: string[] | string;
190
214
  /** 종성 문자 배열 (dduChar × codaChar 조합으로 최종 charset 동적 생성) */
@@ -205,17 +229,45 @@ interface DduConstructorOptions extends DduOptions {
205
229
  throwOnError?: boolean;
206
230
  /** URL-Safe 모드 (특수문자를 URL 안전 문자로 변환) */
207
231
  urlSafe?: boolean;
232
+ /** 패딩 문자 반복 방식 사용 여부 */
233
+ useRepeatPadding?: boolean;
234
+ /**
235
+ * 난독화 레이어 팩토리 (지연 생성). 코어를 구체 난독화 구현과 분리하기 위한 주입점입니다.
236
+ * `obfuscate`가 실제로 사용될 때만 호출됩니다. 미주입 상태에서 난독화를 요청하면 throw합니다.
237
+ *
238
+ * Ddu64Node/Ddu64Browser가 HangulObfuscationLayer 팩토리를 주입하므로 일반 사용자는
239
+ * 신경 쓸 필요가 없습니다. `@ddunigma/node/core`로 Ddu64Core를 직접 쓰면서 난독화가
240
+ * 필요하면 이 팩토리를 주입하세요(미사용 시 난독화 코드가 번들에서 트리셰이킹됩니다).
241
+ * @internal
242
+ */
243
+ obfuscationLayerFactory?: (alphabet: string[]) => ObfuscationLayer;
244
+ }
245
+ /**
246
+ * Secure 생성자 옵션 — Base 생성자 옵션 + Secure 런타임 옵션에 암호화 키/어댑터를 더한,
247
+ * 코어가 사용하는 전 기능 생성자 표면입니다. secure 진입점 래퍼(`Ddu64Secure` 계열)가 사용합니다.
248
+ */
249
+ interface DduSecureConstructorOptions extends DduBaseConstructorOptions, DduSecureOptions {
208
250
  /** 암호화 키 (AES-256-GCM) */
209
251
  encryptionKey?: string;
210
252
  /** 암호화 키 파생 옵션 */
211
253
  keyDerivation?: KeyDerivationOptions;
212
- /** 패딩 문자 반복 방식 사용 여부 */
213
- useRepeatPadding?: boolean;
214
254
  /** 명시적 플랫폼 어댑터 (자동 감지 대신 사용) */
215
255
  adapter?: PlatformAdapter;
216
- /** WASM 임계값 (바이트 단위, 기본값: 16384, 범위: 1024-1048576, Infinity면 비활성화) */
217
- wasmThreshold?: number;
256
+ /**
257
+ * 플랫폼 어댑터 팩토리 (지연 생성). `adapter`가 지정되지 않았을 때, 첫 압축/암호화
258
+ * 연산 시점에 한 번 호출되어 어댑터를 생성·캐시합니다. 순수 인코딩/디코딩만 수행하면
259
+ * 어댑터는 생성되지 않습니다.
260
+ *
261
+ * Ddu64Secure/Ddu64SecureBrowser가 각각 NodeAdapter/BrowserAdapter 팩토리를 주입합니다.
262
+ * @internal
263
+ */
264
+ adapterFactory?: () => PlatformAdapter;
218
265
  }
266
+ /**
267
+ * 하위호환 별칭. 6.0 이전 코드 및 코어 내부 시그니처가 사용하던 전 기능 생성자 옵션
268
+ * 타입으로, secure 생성자 표면 전체(`DduSecureConstructorOptions`)와 동일합니다.
269
+ */
270
+ type DduConstructorOptions = DduSecureConstructorOptions;
219
271
  /**
220
272
  * 암호화 및 압축 연산을 제공하는 플랫폼 어댑터 인터페이스.
221
273
  * 각 런타임(Node.js, 브라우저, 엣지)이 이 인터페이스를 구현합니다.
@@ -236,8 +288,14 @@ interface PlatformAdapter {
236
288
  decrypt(data: Uint8Array, keyHash: Uint8Array, aad?: Uint8Array): Promise<Uint8Array>;
237
289
  /** 동기적으로 데이터를 복호화 (Node.js 전용) */
238
290
  decryptSync?(data: Uint8Array, keyHash: Uint8Array, aad?: Uint8Array): Uint8Array;
239
- /** 암호학적으로 안전한 랜덤 바이트를 생성 */
240
- randomBytes(length: number): Uint8Array;
291
+ /**
292
+ * 암호학적으로 안전한 랜덤 바이트를 생성하는 편의 메서드.
293
+ *
294
+ * @remarks 코어 인코딩/디코딩 파이프라인은 이 메서드를 호출하지 않습니다(각 어댑터가
295
+ * 암호화 IV를 내부에서 직접 생성). 6.0부터 **선택(optional)** 이므로 커스텀 어댑터는
296
+ * 구현하지 않아도 됩니다. `NodeAdapter`/`BrowserAdapter`는 편의상 계속 제공합니다.
297
+ */
298
+ randomBytes?(length: number): Uint8Array;
241
299
  /** deflate 알고리즘으로 데이터를 압축 */
242
300
  deflate(data: Uint8Array, level?: number): Promise<Uint8Array>;
243
301
  /** 동기적으로 deflate 압축 (Node.js 전용) */
@@ -254,30 +312,9 @@ interface PlatformAdapter {
254
312
  brotliDecompress?(data: Uint8Array, maxBytes?: number): Promise<Uint8Array>;
255
313
  /** 동기적으로 brotli 데이터를 압축 해제 (Node.js 전용) */
256
314
  brotliDecompressSync?(data: Uint8Array, maxBytes?: number): Uint8Array;
257
- /** 이 어댑터가 동기 암호화 연산을 지원하는지 여부 */
258
- readonly supportsSyncCrypto: boolean;
259
- /** 이 어댑터가 동기 압축 연산을 지원하는지 여부 */
260
- readonly supportsSyncCompression: boolean;
261
- /** 이 어댑터가 brotli 압축을 지원하는지 여부 */
262
- readonly supportsBrotli: boolean;
263
315
  /** 감지된 런타임 환경 */
264
316
  readonly runtime: "node" | "browser" | "edge" | "deno" | "bun" | "unknown";
265
317
  }
266
- /**
267
- * WASM 가속 비트 패킹 코덱 인터페이스.
268
- * 순수 JavaScript 구현과 바이트 단위로 동일한 인코딩/디코딩 연산을 제공합니다.
269
- */
270
- interface WasmCodec {
271
- /** 바이트를 charset 인덱스로 인코딩 */
272
- encode(input: Uint8Array, bitLength: number): {
273
- indices: Uint16Array;
274
- paddingBits: number;
275
- };
276
- /** charset 인덱스를 바이트로 디코딩 */
277
- decode(indices: Uint16Array, bitLength: number, paddingBits: number): Uint8Array;
278
- /** WASM 모듈이 초기화되어 사용 가능한지 확인 */
279
- readonly ready: boolean;
280
- }
281
318
  /**
282
319
  * 한글 음절 난독화 레이어 인터페이스.
283
320
  * 암호화된 출력을 자연스러운 한국어 음절 블록으로 변환합니다.
@@ -320,10 +357,14 @@ declare class Ddu64Core {
320
357
  protected readonly usePowerOfTwo: boolean;
321
358
  /** UTF-16 코드 유닛 → 인덱스 direct lookup (단일 BMP 심볼 전용) */
322
359
  private readonly dduCharCodeLookup;
360
+ /** 룩업 테이블 오프셋 (lookup[code - offset]) */
361
+ private readonly dduCharCodeLookupOffset;
323
362
  /** 기본 압축 활성화 */
324
363
  protected readonly defaultCompress: boolean;
325
364
  /** 기본 최대 디코딩 바이트 수 */
326
365
  private readonly defaultMaxDecodedBytes;
366
+ /** 기본 최대 인코딩 입력 문자 수 (디코드 전처리 전 선검사) */
367
+ private readonly defaultMaxEncodedChars;
327
368
  /** 기본 최대 압축해제 바이트 수 */
328
369
  private readonly defaultMaxDecompressedBytes;
329
370
  /** URL-Safe 모드 */
@@ -354,16 +395,22 @@ declare class Ddu64Core {
354
395
  private readonly bitsPerPadChar;
355
396
  /** BitPack 설정 */
356
397
  private readonly bitPackConfig;
357
- /** WASM 사용 임계값 */
358
- private readonly wasmThreshold;
359
398
  /** 표준 Base64 charset에서 네이티브 Base64 fast path 사용 여부 */
360
399
  private readonly canUseNativeBase64;
361
400
  /** 인코딩/디코딩 payload codec 공유 컨텍스트 */
362
401
  private readonly payloadCodecContext;
363
402
  /** 플랫폼 어댑터 (동기용 지연 로드 또는 명시적 제공) */
364
403
  private adapter;
404
+ /** 어댑터 지연 생성 팩토리 (adapter 미지정 시 첫 암/복호화·압축 시점에 1회 호출) */
405
+ private readonly adapterFactory;
406
+ /** 난독화 레이어 팩토리 (코어-난독화 분리용 주입점) */
407
+ private readonly obfuscationLayerFactory;
365
408
  /** 기본 난독화 활성화 */
366
409
  private readonly defaultObfuscate;
410
+ /** 기본 진행률 콜백 */
411
+ private readonly defaultOnProgress;
412
+ /** 암호화 키가 설정된 decoder에서 암호화 footer 요구 */
413
+ private readonly defaultRequireEncryption;
367
414
  /** 지연 초기화되는 난독화 레이어 */
368
415
  private obfuscationLayer;
369
416
  /**
@@ -494,10 +541,11 @@ declare class Ddu64Core {
494
541
  private decodePrelude;
495
542
  private getPayloadCodecContext;
496
543
  private reportProgress;
497
- private encryptSync;
498
- private decryptSync;
499
- private compressSync;
500
- private decompressSync;
544
+ /**
545
+ * 어댑터를 지연 해석합니다. 명시적 adapter가 없고 adapterFactory가 있으면 첫 호출 시
546
+ * 1회 생성·캐시합니다. 순수 인코딩/디코딩 경로에서는 호출되지 않습니다.
547
+ */
548
+ private getAdapter;
501
549
  private getSyncGatewayContext;
502
550
  /**
503
551
  * 난독화 레이어를 가져오거나 생성합니다 (지연 초기화).
@@ -507,7 +555,7 @@ declare class Ddu64Core {
507
555
  /**
508
556
  * 주어진 호출에 난독화를 적용해야 하는지 결정합니다.
509
557
  * 호출별 옵션이 생성자 기본값을 오버라이드합니다.
510
- * 암호화없이 난독화가 활성화되면 throw합니다.
558
+ * 6.0: 난독화는 암호화와 무관하게 적용됩니다(비의존). 키 없이도 난독화가 동작합니다.
511
559
  */
512
560
  private shouldObfuscate;
513
561
  private assertSafeChunkSeparator;
@@ -519,6 +567,13 @@ declare class Ddu64Core {
519
567
  *
520
568
  * @module core/CharsetBuilder
521
569
  *
570
+ * @remarks
571
+ * non-BMP 주의: `fromUnicodeRange`/`addUnicodeRange`는 `String.fromCodePoint`로 U+FFFF를
572
+ * 넘는 문자(서로게이트 쌍, `.length === 2`)도 만들 수 있습니다. 그러나 `Ddu64` 생성자에
573
+ * 넘길 charset은 **BMP 단일 UTF-16 코드 유닛** 심볼만 허용하므로, non-BMP를 포함한 `build()`
574
+ * 결과를 charset으로 넘기면 코어가 "Multi-character symbols are not supported"로 거부합니다.
575
+ * 코어 charset 용도라면 BMP(≤ U+FFFF) 범위만 사용하세요.
576
+ *
522
577
  * @example
523
578
  * const chars = CharsetBuilder
524
579
  * .fromUnicodeRange(0x4E00, 0x4E3F)
@@ -601,6 +656,11 @@ declare class CharsetBuilder {
601
656
  unique(): CharsetBuilder;
602
657
  /**
603
658
  * 문자셋을 무작위로 섞습니다.
659
+ *
660
+ * ⚠️ 보안 주의: `seed` 없이 호출하면 `Math.random`을 사용하므로 암호학적으로 안전하지
661
+ * 않습니다(예측 가능). charset 순서를 비밀로 취급해 보안 경계로 삼지 마세요. 기밀성이
662
+ * 필요하면 `encryptionKey`(AES-256-GCM)를 사용하세요. `seed`를 주면 결정론적(재현 가능)
663
+ * 셔플이 되며, 이 역시 비밀이 아니라 재현성 용도입니다.
604
664
  */
605
665
  shuffle(seed?: number): CharsetBuilder;
606
666
  /**
@@ -704,6 +764,9 @@ declare class Ddu64ChecksumError extends Ddu64Error {
704
764
  declare class Ddu64CharsetError extends Ddu64Error {
705
765
  constructor(message: string, cause?: unknown);
706
766
  }
767
+ declare class Ddu64InvalidInputError extends Ddu64Error {
768
+ constructor(message: string, operation?: Ddu64Operation, cause?: unknown);
769
+ }
707
770
  declare class Ddu64LimitError extends Ddu64Error {
708
771
  constructor(message: string, operation: Ddu64Operation, cause?: unknown);
709
772
  }
@@ -718,4 +781,4 @@ declare class Ddu64StreamError extends Ddu64Error {
718
781
  }
719
782
  declare function isDdu64Error(error: unknown): error is Ddu64Error;
720
783
 
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 };
784
+ export { type DduConstructorOptions as A, type DduOptions as B, type CharSetConfig as C, Ddu64Core as D, type EncodingProfile as E, type DduSecureConstructorOptions as F, type DduSecureOptions as G, type DduStreamOptions as H, type KeyDerivationOptions as I, type KeyDerivationAlgorithm as K, type ObfuscationLayer as O, type PlatformAdapter as P, type DduBaseConstructorOptions as a, type DduBaseOptions 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 DduProgressInfo as w, DduSetSymbol as x, type DduSetSymbolInput as y, isDdu64Error as z };
package/dist/core.cjs CHANGED
@@ -1,2 +1 @@
1
- 'use strict';var chunkUMA4JEN4_cjs=require('./chunk-UMA4JEN4.cjs');Object.defineProperty(exports,"CharsetBuilder",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.D}});Object.defineProperty(exports,"Ddu64",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.C}});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,"getWasmCodec",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.i}});Object.defineProperty(exports,"getWasmCodecSync",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.j}});Object.defineProperty(exports,"isDdu64Error",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.z}});Object.defineProperty(exports,"preloadWasm",{enumerable:true,get:function(){return chunkUMA4JEN4_cjs.h}});//# sourceMappingURL=core.cjs.map
2
- //# sourceMappingURL=core.cjs.map
1
+ 'use strict';var chunkJBUTKSCC_cjs=require('./chunk-JBUTKSCC.cjs'),chunkZTGECGM2_cjs=require('./chunk-ZTGECGM2.cjs');require('./chunk-BCUBYE76.cjs');Object.defineProperty(exports,"CharsetBuilder",{enumerable:true,get:function(){return chunkJBUTKSCC_cjs.j}});Object.defineProperty(exports,"Ddu64",{enumerable:true,get:function(){return chunkJBUTKSCC_cjs.i}});Object.defineProperty(exports,"Ddu64Core",{enumerable:true,get:function(){return chunkJBUTKSCC_cjs.i}});Object.defineProperty(exports,"DduSetSymbol",{enumerable:true,get:function(){return chunkJBUTKSCC_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,40 +1 @@
1
- import { W as WasmCodec } from './errors-DNICpo4L.cjs';
2
- export { C as CharSetConfig, b as CharSetInfo, c as CharsetBuilder, D as Ddu64, d as Ddu64AdapterError, e as Ddu64CharsetError, f as Ddu64ChecksumError, g as Ddu64CompressionError, D as Ddu64Core, 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, a as DduConstructorOptions, t as DduEncodeStats, u as DduOptions, v as DduProgressInfo, w as DduSetSymbol, x as DduTextEncoding, E as EncodingProfile, K as KeyDerivationAlgorithm, y as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, z as isDdu64Error } from './errors-DNICpo4L.cjs';
3
-
4
- /**
5
- * ddunigma 비트 패킹 가속을 위한 WASM 로더 및 통합.
6
- *
7
- * 순수 JavaScript 구현과 바이트 단위로 동일한 선택적 WASM 가속
8
- * 인코딩/디코딩을 제공합니다. WASM을 사용할 수 없거나 실패하면
9
- * 조용히 JS로 폴백합니다.
10
- *
11
- * @module wasm/WasmCodec
12
- */
13
-
14
- /**
15
- * WASM 모듈을 사전 로드하고 초기화합니다.
16
- *
17
- * 첫 번째 인코딩/디코딩 연산 전에 WASM이 준비되도록 애플리케이션 초기에
18
- * 호출하세요. WASM이 초기화되면 resolve되고, 10초 내에 초기화에 실패하면
19
- * reject됩니다.
20
- *
21
- * @throws WASM 초기화가 실패하거나 타임아웃(10초)된 경우 에러
22
- */
23
- declare function preloadWasm(): Promise<void>;
24
- /**
25
- * WASM 코덱이 준비되었으면 반환하거나, 온디맨드 초기화를 시도합니다.
26
- *
27
- * `preloadWasm()`이 호출되지 않았으면 5초 타임아웃으로 초기화를 시도합니다.
28
- * WASM을 사용할 수 없으면 null을 반환합니다.
29
- *
30
- * 이 함수는 throw하지 않음 — 실패 시 null을 반환합니다.
31
- */
32
- declare function getWasmCodec(): WasmCodec | null;
33
- /**
34
- * WASM 코덱이 이미 초기화된 경우에만 반환합니다.
35
- * 온디맨드 초기화를 트리거하지 않습니다.
36
- * WASM이 준비되지 않았으면 null을 반환합니다.
37
- */
38
- declare function getWasmCodecSync(): WasmCodec | null;
39
-
40
- export { WasmCodec, getWasmCodec, getWasmCodecSync, preloadWasm };
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, A as DduConstructorOptions, c as DduEncodeStats, B as DduOptions, w as DduProgressInfo, x as DduSetSymbol, y as DduSetSymbolInput, H as DduStreamOptions, E as EncodingProfile, K as KeyDerivationAlgorithm, I as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, z as isDdu64Error } from './core-BsIwjJK-.cjs';
package/dist/core.d.ts CHANGED
@@ -1,40 +1 @@
1
- import { W as WasmCodec } from './errors-DNICpo4L.js';
2
- export { C as CharSetConfig, b as CharSetInfo, c as CharsetBuilder, D as Ddu64, d as Ddu64AdapterError, e as Ddu64CharsetError, f as Ddu64ChecksumError, g as Ddu64CompressionError, D as Ddu64Core, 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, a as DduConstructorOptions, t as DduEncodeStats, u as DduOptions, v as DduProgressInfo, w as DduSetSymbol, x as DduTextEncoding, E as EncodingProfile, K as KeyDerivationAlgorithm, y as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, z as isDdu64Error } from './errors-DNICpo4L.js';
3
-
4
- /**
5
- * ddunigma 비트 패킹 가속을 위한 WASM 로더 및 통합.
6
- *
7
- * 순수 JavaScript 구현과 바이트 단위로 동일한 선택적 WASM 가속
8
- * 인코딩/디코딩을 제공합니다. WASM을 사용할 수 없거나 실패하면
9
- * 조용히 JS로 폴백합니다.
10
- *
11
- * @module wasm/WasmCodec
12
- */
13
-
14
- /**
15
- * WASM 모듈을 사전 로드하고 초기화합니다.
16
- *
17
- * 첫 번째 인코딩/디코딩 연산 전에 WASM이 준비되도록 애플리케이션 초기에
18
- * 호출하세요. WASM이 초기화되면 resolve되고, 10초 내에 초기화에 실패하면
19
- * reject됩니다.
20
- *
21
- * @throws WASM 초기화가 실패하거나 타임아웃(10초)된 경우 에러
22
- */
23
- declare function preloadWasm(): Promise<void>;
24
- /**
25
- * WASM 코덱이 준비되었으면 반환하거나, 온디맨드 초기화를 시도합니다.
26
- *
27
- * `preloadWasm()`이 호출되지 않았으면 5초 타임아웃으로 초기화를 시도합니다.
28
- * WASM을 사용할 수 없으면 null을 반환합니다.
29
- *
30
- * 이 함수는 throw하지 않음 — 실패 시 null을 반환합니다.
31
- */
32
- declare function getWasmCodec(): WasmCodec | null;
33
- /**
34
- * WASM 코덱이 이미 초기화된 경우에만 반환합니다.
35
- * 온디맨드 초기화를 트리거하지 않습니다.
36
- * WASM이 준비되지 않았으면 null을 반환합니다.
37
- */
38
- declare function getWasmCodecSync(): WasmCodec | null;
39
-
40
- export { WasmCodec, getWasmCodec, getWasmCodecSync, preloadWasm };
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, A as DduConstructorOptions, c as DduEncodeStats, B as DduOptions, w as DduProgressInfo, x as DduSetSymbol, y as DduSetSymbolInput, H as DduStreamOptions, E as EncodingProfile, K as KeyDerivationAlgorithm, I as KeyDerivationOptions, O as ObfuscationLayer, P as PlatformAdapter, z as isDdu64Error } from './core-BsIwjJK-.js';
package/dist/core.js CHANGED
@@ -1,2 +1 @@
1
- export{D as CharsetBuilder,C as Ddu64,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,i as getWasmCodec,j as getWasmCodecSync,z as isDdu64Error,h as preloadWasm}from'./chunk-HTZT725P.js';//# sourceMappingURL=core.js.map
2
- //# sourceMappingURL=core.js.map
1
+ export{j as CharsetBuilder,i as Ddu64,i as Ddu64Core,a as DduSetSymbol}from'./chunk-VW2SZR2Z.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,2 +1 @@
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
- //# sourceMappingURL=index.cjs.map
1
+ 'use strict';var chunkBDP7E7K3_cjs=require('./chunk-BDP7E7K3.cjs'),chunkJBUTKSCC_cjs=require('./chunk-JBUTKSCC.cjs'),chunkZTGECGM2_cjs=require('./chunk-ZTGECGM2.cjs'),chunkBCUBYE76_cjs=require('./chunk-BCUBYE76.cjs');var s=class extends chunkJBUTKSCC_cjs.i{static{chunkBCUBYE76_cjs.a(this,"Ddu64Node");}constructor(r,e,o){let t=chunkJBUTKSCC_cjs.b(r,e,o),a={...t.dduOptions,...t.dduChar!==void 0?{dduChar:t.dduChar}:{},...t.paddingChar!==void 0?{paddingChar:t.paddingChar}:{},obfuscationLayerFactory:t.dduOptions?.obfuscationLayerFactory??(c=>new chunkBDP7E7K3_cjs.a(c))};super(a);}encode(r,e){return super.encode(r,e)}encodeAsync(r,e){return super.encodeAsync(r,e)}decode(r,e){return super.decode(r,e)}decodeAsync(r,e){return super.decodeAsync(r,e)}decodeToUint8Array(r,e){return super.decodeToUint8Array(r,e)}decodeToUint8ArrayAsync(r,e){return super.decodeToUint8ArrayAsync(r,e)}getStats(r,e){return super.getStats(r,e)}getStatsAsync(r,e){return super.getStatsAsync(r,e)}decodeToBuffer(r,e){let o=this.decodeToUint8Array(r,e);return Buffer.from(o.buffer,o.byteOffset,o.byteLength)}async decodeToBufferAsync(r,e){let o=await this.decodeToUint8ArrayAsync(r,e);return Buffer.from(o.buffer,o.byteOffset,o.byteLength)}};Object.defineProperty(exports,"HangulObfuscationLayer",{enumerable:true,get:function(){return chunkBDP7E7K3_cjs.a}});Object.defineProperty(exports,"createEncoderObfuscationLayer",{enumerable:true,get:function(){return chunkBDP7E7K3_cjs.b}});Object.defineProperty(exports,"detectRuntime",{enumerable:true,get:function(){return chunkBDP7E7K3_cjs.c}});Object.defineProperty(exports,"CharsetBuilder",{enumerable:true,get:function(){return chunkJBUTKSCC_cjs.j}});Object.defineProperty(exports,"Ddu64Core",{enumerable:true,get:function(){return chunkJBUTKSCC_cjs.i}});Object.defineProperty(exports,"DduSetSymbol",{enumerable:true,get:function(){return chunkJBUTKSCC_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=s;exports.Ddu64Node=s;