@digitaldefiance/ecies-lib 4.6.3 → 4.7.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.
Files changed (119) hide show
  1. package/README.md +420 -0
  2. package/package.json +4 -10
  3. package/src/builders/ecies-builder.d.ts +1 -1
  4. package/src/builders/ecies-builder.d.ts.map +1 -1
  5. package/src/builders/ecies-builder.js +2 -2
  6. package/src/builders/ecies-builder.js.map +1 -1
  7. package/src/email-string.js +2 -3
  8. package/src/email-string.js.map +1 -1
  9. package/src/i18n-setup.js +1 -1
  10. package/src/i18n-setup.js.map +1 -1
  11. package/src/index.d.ts +1 -0
  12. package/src/index.d.ts.map +1 -1
  13. package/src/index.js +2 -0
  14. package/src/index.js.map +1 -1
  15. package/src/interfaces/index.d.ts +1 -0
  16. package/src/interfaces/index.d.ts.map +1 -1
  17. package/src/interfaces/index.js +3 -0
  18. package/src/interfaces/index.js.map +1 -1
  19. package/src/interfaces/voting-poll.d.ts +455 -0
  20. package/src/interfaces/voting-poll.d.ts.map +1 -0
  21. package/src/interfaces/voting-poll.js +54 -0
  22. package/src/interfaces/voting-poll.js.map +1 -0
  23. package/src/isolated-private.d.ts +0 -4
  24. package/src/isolated-private.d.ts.map +1 -1
  25. package/src/isolated-private.js +0 -13
  26. package/src/isolated-private.js.map +1 -1
  27. package/src/isolated-public.d.ts +4 -2
  28. package/src/isolated-public.d.ts.map +1 -1
  29. package/src/isolated-public.js +10 -8
  30. package/src/isolated-public.js.map +1 -1
  31. package/src/lib/voting/audit.d.ts +79 -0
  32. package/src/lib/voting/audit.d.ts.map +1 -0
  33. package/src/lib/voting/audit.js +188 -0
  34. package/src/lib/voting/audit.js.map +1 -0
  35. package/src/lib/voting/bulletin-board.d.ts +94 -0
  36. package/src/lib/voting/bulletin-board.d.ts.map +1 -0
  37. package/src/lib/voting/bulletin-board.js +287 -0
  38. package/src/lib/voting/bulletin-board.js.map +1 -0
  39. package/src/lib/voting/encoder.d.ts +42 -0
  40. package/src/lib/voting/encoder.d.ts.map +1 -0
  41. package/src/lib/voting/encoder.js +157 -0
  42. package/src/lib/voting/encoder.js.map +1 -0
  43. package/src/lib/voting/event-logger.d.ts +81 -0
  44. package/src/lib/voting/event-logger.d.ts.map +1 -0
  45. package/src/lib/voting/event-logger.js +162 -0
  46. package/src/lib/voting/event-logger.js.map +1 -0
  47. package/src/lib/voting/examples.d.ts +30 -0
  48. package/src/lib/voting/examples.d.ts.map +1 -0
  49. package/src/lib/voting/examples.js +153 -0
  50. package/src/lib/voting/examples.js.map +1 -0
  51. package/src/lib/voting/factory.d.ts +35 -0
  52. package/src/lib/voting/factory.d.ts.map +1 -0
  53. package/src/lib/voting/factory.js +57 -0
  54. package/src/lib/voting/factory.js.map +1 -0
  55. package/src/lib/voting/index.d.ts +44 -0
  56. package/src/lib/voting/index.d.ts.map +1 -0
  57. package/src/lib/voting/index.js +60 -0
  58. package/src/lib/voting/index.js.map +1 -0
  59. package/src/lib/voting/poll-core.d.ts +55 -0
  60. package/src/lib/voting/poll-core.d.ts.map +1 -0
  61. package/src/lib/voting/poll-core.js +225 -0
  62. package/src/lib/voting/poll-core.js.map +1 -0
  63. package/src/lib/voting/poll.d.ts +124 -0
  64. package/src/lib/voting/poll.d.ts.map +1 -0
  65. package/src/lib/voting/poll.js +322 -0
  66. package/src/lib/voting/poll.js.map +1 -0
  67. package/src/lib/voting/security.d.ts +33 -0
  68. package/src/lib/voting/security.d.ts.map +1 -0
  69. package/src/lib/voting/security.js +68 -0
  70. package/src/lib/voting/security.js.map +1 -0
  71. package/src/lib/voting/tallier.d.ts +35 -0
  72. package/src/lib/voting/tallier.d.ts.map +1 -0
  73. package/src/lib/voting/tallier.js +415 -0
  74. package/src/lib/voting/tallier.js.map +1 -0
  75. package/src/lib/voting/types.d.ts +145 -0
  76. package/src/lib/voting/types.d.ts.map +1 -0
  77. package/src/lib/voting/types.js +48 -0
  78. package/src/lib/voting/types.js.map +1 -0
  79. package/src/member.d.ts +2 -2
  80. package/src/member.d.ts.map +1 -1
  81. package/src/member.js +2 -2
  82. package/src/member.js.map +1 -1
  83. package/src/secure-string.d.ts +2 -2
  84. package/src/secure-string.d.ts.map +1 -1
  85. package/src/secure-string.js +2 -2
  86. package/src/secure-string.js.map +1 -1
  87. package/src/services/aes-gcm.js.map +1 -1
  88. package/src/services/chunk-processor.d.ts +2 -2
  89. package/src/services/chunk-processor.d.ts.map +1 -1
  90. package/src/services/chunk-processor.js +3 -3
  91. package/src/services/chunk-processor.js.map +1 -1
  92. package/src/services/ecies/service.d.ts +3 -0
  93. package/src/services/ecies/service.d.ts.map +1 -1
  94. package/src/services/ecies/service.js +6 -0
  95. package/src/services/ecies/service.js.map +1 -1
  96. package/src/services/ecies/single-recipient.d.ts +1 -1
  97. package/src/services/ecies/single-recipient.d.ts.map +1 -1
  98. package/src/services/ecies/single-recipient.js +1 -1
  99. package/src/services/ecies/single-recipient.js.map +1 -1
  100. package/src/services/encryption-stream.d.ts +3 -3
  101. package/src/services/encryption-stream.d.ts.map +1 -1
  102. package/src/services/encryption-stream.js +7 -7
  103. package/src/services/encryption-stream.js.map +1 -1
  104. package/src/services/index.d.ts +1 -0
  105. package/src/services/index.d.ts.map +1 -1
  106. package/src/services/index.js.map +1 -1
  107. package/src/services/multi-recipient-processor.d.ts +2 -2
  108. package/src/services/multi-recipient-processor.d.ts.map +1 -1
  109. package/src/services/multi-recipient-processor.js +4 -4
  110. package/src/services/multi-recipient-processor.js.map +1 -1
  111. package/src/services/voting.service.d.ts.map +1 -1
  112. package/src/services/voting.service.js +4 -4
  113. package/src/services/voting.service.js.map +1 -1
  114. package/src/test-mocks/mock-frontend-member.d.ts +1 -1
  115. package/src/test-mocks/mock-frontend-member.d.ts.map +1 -1
  116. package/src/test-mocks/mock-frontend-member.js +1 -1
  117. package/src/test-mocks/mock-frontend-member.js.map +1 -1
  118. package/src/types.d.ts +1 -1
  119. package/src/types.d.ts.map +1 -1
package/README.md CHANGED
@@ -271,6 +271,393 @@ console.log(member.id); // Uint8Array (size depends on provider)
271
271
  const encrypted = await member.encryptData('My Secrets');
272
272
  ```
273
273
 
274
+ ## ID Providers and Members: Deep Dive
275
+
276
+ ### Overview
277
+
278
+ The ID provider system is a core architectural feature that enables flexible identifier formats throughout the library. The `Member` class seamlessly integrates with the configured ID provider, making it easy to work with different ID formats (MongoDB ObjectIDs, GUIDs, UUIDs, or custom formats) without changing your application code.
279
+
280
+ ### How Member Uses ID Providers
281
+
282
+ The `Member` class relies on `Constants.idProvider` for three critical operations:
283
+
284
+ 1. **ID Generation** - Creating unique identifiers for new members
285
+ 2. **Serialization** - Converting binary IDs to strings for storage/transmission
286
+ 3. **Deserialization** - Converting string IDs back to binary format
287
+
288
+ #### Internal Implementation
289
+
290
+ ```typescript
291
+ // 1. ID Generation (in Member constructor)
292
+ this._id = id ?? Constants.idProvider.generate();
293
+
294
+ // 2. Serialization (in Member.toJson())
295
+ public toJson(): string {
296
+ const storage = {
297
+ id: Constants.idProvider.serialize(this._id), // Uint8Array → string
298
+ // ... other fields
299
+ };
300
+ return JSON.stringify(storage);
301
+ }
302
+
303
+ // 3. Deserialization (in Member.fromJson())
304
+ public static fromJson(json: string, eciesService: ECIESService): Member {
305
+ const storage = JSON.parse(json);
306
+ return new Member(
307
+ eciesService,
308
+ // ...
309
+ Constants.idProvider.deserialize(storage.id), // string → Uint8Array
310
+ );
311
+ }
312
+ ```
313
+
314
+ ### Available ID Providers
315
+
316
+ #### ObjectIdProvider (Default)
317
+
318
+ **Format**: 12-byte MongoDB-compatible ObjectID
319
+ **Serialization**: 24-character hex string
320
+ **Use Case**: MongoDB integration, backward compatibility
321
+
322
+ ```typescript
323
+ import { ObjectIdProvider, createRuntimeConfiguration } from '@digitaldefiance/ecies-lib';
324
+
325
+ const config = createRuntimeConfiguration({
326
+ idProvider: new ObjectIdProvider()
327
+ });
328
+
329
+ const id = config.idProvider.generate();
330
+ console.log(id.length); // 12
331
+ console.log(config.idProvider.serialize(id)); // "507f1f77bcf86cd799439011"
332
+ ```
333
+
334
+ #### GuidV4Provider
335
+
336
+ **Format**: 16-byte RFC 4122 v4 GUID
337
+ **Serialization**: 24-character base64 string (compact)
338
+ **Use Case**: Windows/.NET integration, compact serialization
339
+
340
+ ```typescript
341
+ import { GuidV4Provider } from '@digitaldefiance/ecies-lib';
342
+
343
+ const provider = new GuidV4Provider();
344
+ const id = provider.generate();
345
+ console.log(id.length); // 16
346
+ console.log(provider.serialize(id)); // "kT8xVzQ2RkKmN5pP3w=="
347
+
348
+ // Supports multiple deserialization formats
349
+ provider.deserialize('kT8xVzQ2RkKmN5pP3w=='); // base64 (24 chars)
350
+ provider.deserialize('913f315734364642a6379a4fdf'); // hex (32 chars)
351
+ provider.deserialize('913f3157-3436-4642-a637-9a4fdf000000'); // full hex with dashes (36 chars)
352
+
353
+ // Deterministic GUIDs (v5)
354
+ const deterministicId = provider.fromNamespace('my-namespace', 'user-alice');
355
+ ```
356
+
357
+ #### UuidProvider
358
+
359
+ **Format**: 16-byte RFC 4122 v4 UUID
360
+ **Serialization**: 36-character string with dashes (standard format)
361
+ **Use Case**: Standard UUID format, maximum compatibility
362
+
363
+ ```typescript
364
+ import { UuidProvider } from '@digitaldefiance/ecies-lib';
365
+
366
+ const provider = new UuidProvider();
367
+ const id = provider.generate();
368
+ console.log(id.length); // 16
369
+ console.log(provider.serialize(id)); // "550e8400-e29b-41d4-a716-446655440000"
370
+ ```
371
+
372
+ #### CustomIdProvider
373
+
374
+ **Format**: Any byte length (1-255 bytes)
375
+ **Serialization**: Hexadecimal string
376
+ **Use Case**: Custom requirements, legacy systems, specialized formats
377
+
378
+ ```typescript
379
+ import { CustomIdProvider } from '@digitaldefiance/ecies-lib';
380
+
381
+ // 32-byte SHA-256 hash as ID
382
+ const provider = new CustomIdProvider(32, 'SHA256Hash');
383
+ const id = provider.generate();
384
+ console.log(id.length); // 32
385
+ console.log(provider.serialize(id)); // 64-character hex string
386
+ ```
387
+
388
+ ### Using ID Providers with Members
389
+
390
+ #### Creating Members with Different ID Providers
391
+
392
+ ```typescript
393
+ import {
394
+ Member,
395
+ MemberType,
396
+ EmailString,
397
+ ECIESService,
398
+ createRuntimeConfiguration,
399
+ ConstantsRegistry,
400
+ GuidV4Provider,
401
+ ObjectIdProvider
402
+ } from '@digitaldefiance/ecies-lib';
403
+
404
+ const ecies = new ECIESService();
405
+
406
+ // Option 1: Use default ObjectIdProvider
407
+ const alice = Member.newMember(
408
+ ecies,
409
+ MemberType.User,
410
+ 'Alice',
411
+ new EmailString('alice@example.com')
412
+ );
413
+ console.log(alice.member.id.length); // 12 bytes
414
+
415
+ // Option 2: Configure GUID provider globally
416
+ const guidConfig = createRuntimeConfiguration({
417
+ idProvider: new GuidV4Provider()
418
+ });
419
+ ConstantsRegistry.register('guid-config', guidConfig);
420
+
421
+ // Now all new members use GUID IDs
422
+ const bob = Member.newMember(
423
+ ecies,
424
+ MemberType.User,
425
+ 'Bob',
426
+ new EmailString('bob@example.com')
427
+ );
428
+ console.log(bob.member.id.length); // 16 bytes
429
+ ```
430
+
431
+ #### Serializing and Deserializing Members
432
+
433
+ ```typescript
434
+ import { Member, ECIESService, Constants } from '@digitaldefiance/ecies-lib';
435
+
436
+ const ecies = new ECIESService();
437
+ const { member } = Member.newMember(
438
+ ecies,
439
+ MemberType.User,
440
+ 'Charlie',
441
+ new EmailString('charlie@example.com')
442
+ );
443
+
444
+ // Serialize to JSON (ID automatically converted to string)
445
+ const json = member.toJson();
446
+ console.log(json);
447
+ // {
448
+ // "id": "507f1f77bcf86cd799439011", // Serialized using idProvider
449
+ // "type": 1,
450
+ // "name": "Charlie",
451
+ // "email": "charlie@example.com",
452
+ // "publicKey": "...",
453
+ // "creatorId": "507f1f77bcf86cd799439011",
454
+ // "dateCreated": "2024-01-15T10:30:00.000Z",
455
+ // "dateUpdated": "2024-01-15T10:30:00.000Z"
456
+ // }
457
+
458
+ // Deserialize from JSON (ID automatically converted back to Uint8Array)
459
+ const restored = Member.fromJson(json, ecies);
460
+ console.log(restored.id); // Uint8Array(12) [80, 127, 31, 119, ...]
461
+ ```
462
+
463
+ #### Working with Member IDs
464
+
465
+ ```typescript
466
+ import { Member, Constants } from '@digitaldefiance/ecies-lib';
467
+
468
+ const { member } = Member.newMember(/* ... */);
469
+
470
+ // Get binary ID
471
+ const binaryId: Uint8Array = member.id;
472
+
473
+ // Convert to string for display/storage
474
+ const stringId = Constants.idProvider.serialize(member.id);
475
+ console.log(`Member ID: ${stringId}`);
476
+
477
+ // Convert string back to binary
478
+ const restoredId = Constants.idProvider.deserialize(stringId);
479
+
480
+ // Compare IDs (constant-time comparison)
481
+ const isEqual = Constants.idProvider.equals(member.id, restoredId);
482
+
483
+ // Validate ID format
484
+ const isValid = Constants.idProvider.validate(member.id);
485
+
486
+ // Clone ID (defensive copy)
487
+ const idCopy = Constants.idProvider.clone(member.id);
488
+ ```
489
+
490
+ ### Multi-Recipient Encryption with Different ID Providers
491
+
492
+ The ID provider system is critical for multi-recipient encryption, where recipient IDs are embedded in the encrypted message:
493
+
494
+ ```typescript
495
+ import { ECIESService, Member, MemberType, EmailString, GuidV4Provider, createRuntimeConfiguration } from '@digitaldefiance/ecies-lib';
496
+
497
+ // Configure GUID provider (16 bytes)
498
+ const config = createRuntimeConfiguration({
499
+ idProvider: new GuidV4Provider()
500
+ });
501
+
502
+ const ecies = new ECIESService(config);
503
+
504
+ // Create recipients with GUID IDs
505
+ const alice = Member.newMember(ecies, MemberType.User, 'Alice', new EmailString('alice@example.com'));
506
+ const bob = Member.newMember(ecies, MemberType.User, 'Bob', new EmailString('bob@example.com'));
507
+
508
+ const message = new TextEncoder().encode('Shared Secret');
509
+
510
+ // Encrypt for multiple recipients
511
+ // Each recipient's 16-byte GUID is embedded in the message
512
+ const encrypted = await ecies.encryptMultiple(
513
+ [
514
+ { id: alice.member.id, publicKey: alice.member.publicKey },
515
+ { id: bob.member.id, publicKey: bob.member.publicKey }
516
+ ],
517
+ message
518
+ );
519
+
520
+ // Each recipient can decrypt using their ID
521
+ const aliceDecrypted = await ecies.decryptMultiple(
522
+ alice.member.id,
523
+ alice.member.privateKey!.value,
524
+ encrypted
525
+ );
526
+ ```
527
+
528
+ ### Configuration Auto-Sync
529
+
530
+ When you change the ID provider, the library automatically updates related constants:
531
+
532
+ ```typescript
533
+ import { createRuntimeConfiguration, CustomIdProvider } from '@digitaldefiance/ecies-lib';
534
+
535
+ // Create 20-byte custom ID provider
536
+ const customProvider = new CustomIdProvider(20, 'CustomHash');
537
+
538
+ const config = createRuntimeConfiguration({
539
+ idProvider: customProvider
540
+ });
541
+
542
+ // These are automatically synced:
543
+ console.log(config.MEMBER_ID_LENGTH); // 20 (auto-synced)
544
+ console.log(config.ECIES.MULTIPLE.RECIPIENT_ID_SIZE); // 20 (auto-synced)
545
+ console.log(config.idProvider.byteLength); // 20
546
+ ```
547
+
548
+ ### Best Practices
549
+
550
+ 1. **Choose the Right Provider**:
551
+ - Use `ObjectIdProvider` for MongoDB integration
552
+ - Use `GuidV4Provider` for compact serialization and Windows/.NET compatibility
553
+ - Use `UuidProvider` for standard UUID format and maximum compatibility
554
+ - Use `CustomIdProvider` for specialized requirements
555
+
556
+ 2. **Configure Early**: Set your ID provider before creating any members:
557
+ ```typescript
558
+ const config = createRuntimeConfiguration({ idProvider: new GuidV4Provider() });
559
+ ConstantsRegistry.register('app-config', config);
560
+ const ecies = new ECIESService(config);
561
+ ```
562
+
563
+ 3. **Consistent Configuration**: Use the same ID provider across your entire application to ensure compatibility
564
+
565
+ 4. **Serialization for Storage**: Always use `idProvider.serialize()` when storing IDs in databases or transmitting over networks
566
+
567
+ 5. **Validation**: Validate IDs when receiving them from external sources:
568
+ ```typescript
569
+ if (!Constants.idProvider.validate(receivedId)) {
570
+ throw new Error('Invalid ID format');
571
+ }
572
+ ```
573
+
574
+ 6. **Cross-Platform Compatibility**: The same ID provider configuration works in both browser (`ecies-lib`) and Node.js (`node-ecies-lib`)
575
+
576
+ ### Common Patterns
577
+
578
+ #### Pattern 1: Application-Wide ID Provider
579
+
580
+ ```typescript
581
+ // config.ts
582
+ import { createRuntimeConfiguration, GuidV4Provider, ConstantsRegistry } from '@digitaldefiance/ecies-lib';
583
+
584
+ export const APP_CONFIG_KEY = 'app-config';
585
+
586
+ const config = createRuntimeConfiguration({
587
+ idProvider: new GuidV4Provider()
588
+ });
589
+
590
+ ConstantsRegistry.register(APP_CONFIG_KEY, config);
591
+
592
+ export { config };
593
+
594
+ // app.ts
595
+ import { ECIESService } from '@digitaldefiance/ecies-lib';
596
+ import { config } from './config';
597
+
598
+ const ecies = new ECIESService(config);
599
+ // All members created with this service will use GUID IDs
600
+ ```
601
+
602
+ #### Pattern 2: Multiple ID Providers for Different Contexts
603
+
604
+ ```typescript
605
+ import {
606
+ createRuntimeConfiguration,
607
+ ConstantsRegistry,
608
+ ObjectIdProvider,
609
+ GuidV4Provider,
610
+ ECIESService
611
+ } from '@digitaldefiance/ecies-lib';
612
+
613
+ // User context uses ObjectID (MongoDB)
614
+ const userConfig = createRuntimeConfiguration({
615
+ idProvider: new ObjectIdProvider()
616
+ });
617
+ ConstantsRegistry.register('user-context', userConfig);
618
+
619
+ // Device context uses GUID
620
+ const deviceConfig = createRuntimeConfiguration({
621
+ idProvider: new GuidV4Provider()
622
+ });
623
+ ConstantsRegistry.register('device-context', deviceConfig);
624
+
625
+ // Use different services for different contexts
626
+ const userEcies = new ECIESService(userConfig);
627
+ const deviceEcies = new ECIESService(deviceConfig);
628
+ ```
629
+
630
+ #### Pattern 3: ID Provider Abstraction Layer
631
+
632
+ ```typescript
633
+ import { Constants, Member, ECIESService } from '@digitaldefiance/ecies-lib';
634
+
635
+ class MemberService {
636
+ constructor(private ecies: ECIESService) {}
637
+
638
+ createMember(name: string, email: string) {
639
+ return Member.newMember(
640
+ this.ecies,
641
+ MemberType.User,
642
+ name,
643
+ new EmailString(email)
644
+ );
645
+ }
646
+
647
+ serializeMemberId(id: Uint8Array): string {
648
+ return Constants.idProvider.serialize(id);
649
+ }
650
+
651
+ deserializeMemberId(id: string): Uint8Array {
652
+ return Constants.idProvider.deserialize(id);
653
+ }
654
+
655
+ validateMemberId(id: Uint8Array): boolean {
656
+ return Constants.idProvider.validate(id);
657
+ }
658
+ }
659
+ ```
660
+
274
661
  ## API Reference
275
662
 
276
663
  ### Core Services
@@ -281,6 +668,39 @@ const encrypted = await member.encryptData('My Secrets');
281
668
  - **`EciesFileService`**: Helper for chunked file encryption.
282
669
  - **`PasswordLoginService`**: Secure authentication using PBKDF2 and encrypted key bundles.
283
670
 
671
+ ### ID Providers
672
+
673
+ - **`IIdProvider`**: Interface that all ID providers implement
674
+ - `generate()`: Create a new random ID
675
+ - `validate(id)`: Check if an ID is valid
676
+ - `serialize(id)`: Convert Uint8Array to string
677
+ - `deserialize(str)`: Convert string to Uint8Array
678
+ - `equals(a, b)`: Constant-time comparison
679
+ - `clone(id)`: Create defensive copy
680
+ - `idToString(id)`: Convert any ID type to string
681
+ - `idFromString(str)`: Convert string to ID buffer
682
+
683
+ - **`ObjectIdProvider`**: 12-byte MongoDB ObjectID format
684
+ - **`GuidV4Provider`**: 16-byte GUID with base64 serialization
685
+ - **`UuidProvider`**: 16-byte UUID with standard dash formatting
686
+ - **`CustomIdProvider`**: Custom byte length (1-255 bytes)
687
+ - **`BaseIdProvider`**: Abstract base class for creating custom providers
688
+
689
+ ### Member System
690
+
691
+ - **`Member`**: High-level user abstraction with cryptographic operations
692
+ - `id`: Unique identifier (format determined by ID provider)
693
+ - `publicKey`: Member's public key
694
+ - `privateKey`: Member's private key (optional, can be loaded/unloaded)
695
+ - `encryptData(data, recipientPublicKey?)`: Encrypt data
696
+ - `decryptData(encryptedData)`: Decrypt data
697
+ - `sign(data)`: Sign data with private key
698
+ - `verify(signature, data)`: Verify signature
699
+ - `toJson()`: Serialize to JSON (uses ID provider)
700
+ - `fromJson(json, eciesService)`: Deserialize from JSON (uses ID provider)
701
+ - `newMember(...)`: Static factory method
702
+ - `fromMnemonic(...)`: Create from BIP39 mnemonic
703
+
284
704
  ### Configuration & Registry
285
705
 
286
706
  - **`Constants`**: The default, immutable configuration object.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@digitaldefiance/ecies-lib",
3
- "version": "4.6.3",
3
+ "version": "4.7.0",
4
4
  "description": "Digital Defiance ECIES Library",
5
5
  "homepage": "https://github.com/Digital-Defiance/ecies-lib",
6
6
  "repository": {
@@ -30,7 +30,8 @@
30
30
  "test": "npx nx test digitaldefiance-ecies-lib",
31
31
  "test:nocache": "npx nx test --skip-nx-cache digitaldefiance-ecies-lib",
32
32
  "test:stream": "npx nx test --outputStyle=stream digitaldefiance-ecies-lib",
33
- "test:logged": "npx nx test --outputStyle=stream digitaldefiance-ecies-lib 2>&1 | ansifilter -o test.log",
33
+ "test:logged": "npx jest --config=jest.config.js 2>&1 | tee test.log",
34
+ "test:logged:verbose": "VERBOSE_TESTS=1 npx jest --config=jest.config.js 2>&1 | tee test.log",
34
35
  "test:coverage": "npx jest --coverage --testPathPattern=digitaldefiance-ecies-lib --coverageReporters=text",
35
36
  "check:circular": "madge --circular --extensions ts src/index.ts",
36
37
  "check:circular:json": "madge --circular --extensions ts --json src/index.ts",
@@ -57,14 +58,6 @@
57
58
  "author": "Digital Defiance",
58
59
  "license": "MIT",
59
60
  "packageManager": "yarn@4.11.0",
60
- "peerDependencies": {
61
- "paillier-bigint": "^3.4.1"
62
- },
63
- "peerDependenciesMeta": {
64
- "paillier-bigint": {
65
- "optional": true
66
- }
67
- },
68
61
  "dependencies": {
69
62
  "@digitaldefiance/i18n-lib": "3.8.16",
70
63
  "@ethereumjs/wallet": "^10.0.0",
@@ -72,6 +65,7 @@
72
65
  "@noble/hashes": "1.8.0",
73
66
  "@scure/bip32": "1.7.0",
74
67
  "bson": "^6.10.4",
68
+ "paillier-bigint": "^3.4.1",
75
69
  "ts-brand": "^0.2.0"
76
70
  },
77
71
  "devDependencies": {
@@ -8,7 +8,7 @@ import { ECIESService } from '../services/ecies/service';
8
8
  export declare class ECIESBuilder {
9
9
  private serviceConfig;
10
10
  private eciesConsts;
11
- private i18n?;
11
+ private _i18n?;
12
12
  static create(): ECIESBuilder;
13
13
  withServiceConfig(config: Partial<IECIESConfig>): this;
14
14
  withConstants(constants: Partial<IECIESConstants>): this;
@@ -1 +1 @@
1
- {"version":3,"file":"ecies-builder.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,IAAI,CAAC,CAA2B;IAExC,MAAM,CAAC,MAAM,IAAI,YAAY;IAI7B,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAKtD,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAKxD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAKhD,KAAK,IAAI,YAAY;CAItB"}
1
+ {"version":3,"file":"ecies-builder.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,qBAAa,YAAY;IACvB,OAAO,CAAC,aAAa,CAA6B;IAClD,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,KAAK,CAAC,CAA2B;IAEzC,MAAM,CAAC,MAAM,IAAI,YAAY;IAI7B,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,IAAI;IAKtD,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAKxD,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,GAAG,IAAI;IAKhD,KAAK,IAAI,YAAY;CAItB"}
@@ -9,7 +9,7 @@ const service_1 = require("../services/ecies/service");
9
9
  class ECIESBuilder {
10
10
  serviceConfig = {};
11
11
  eciesConsts = {};
12
- i18n;
12
+ _i18n;
13
13
  static create() {
14
14
  return new ECIESBuilder();
15
15
  }
@@ -22,7 +22,7 @@ class ECIESBuilder {
22
22
  return this;
23
23
  }
24
24
  withI18n(engine) {
25
- this.i18n = engine;
25
+ this._i18n = engine;
26
26
  return this;
27
27
  }
28
28
  build() {
@@ -1 +1 @@
1
- {"version":3,"file":"ecies-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,4CAAyC;AAGzC,uDAAyD;AAEzD,MAAa,YAAY;IACf,aAAa,GAA0B,EAAE,CAAC;IAC1C,WAAW,GAA6B,EAAE,CAAC;IAC3C,IAAI,CAA4B;IAExC,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,MAA6B;QAC7C,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,SAAmC;QAC/C,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAgC;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,cAAc,GAAG,EAAE,GAAG,qBAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,IAAI,sBAAY,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;CACF;AA5BD,oCA4BC"}
1
+ {"version":3,"file":"ecies-builder.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/builders/ecies-builder.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAGH,4CAAyC;AAGzC,uDAAyD;AAEzD,MAAa,YAAY;IACf,aAAa,GAA0B,EAAE,CAAC;IAC1C,WAAW,GAA6B,EAAE,CAAC;IAC3C,KAAK,CAA4B;IAEzC,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,YAAY,EAAE,CAAC;IAC5B,CAAC;IAED,iBAAiB,CAAC,MAA6B;QAC7C,IAAI,CAAC,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,SAAmC;QAC/C,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,SAAS,EAAE,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,MAAgC;QACvC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,MAAM,cAAc,GAAG,EAAE,GAAG,qBAAS,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACnE,OAAO,IAAI,sBAAY,CAAC,IAAI,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;CACF;AA5BD,oCA4BC"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EmailString = void 0;
4
- const tslib_1 = require("tslib");
5
- const validator_1 = tslib_1.__importDefault(require("validator"));
4
+ const validator_1 = require("validator");
6
5
  const invalid_email_type_1 = require("./enumerations/invalid-email-type");
7
6
  const invalid_email_1 = require("./errors/invalid-email");
8
7
  /**
@@ -25,7 +24,7 @@ class EmailString {
25
24
  if (trimmedEmail.length != email.length) {
26
25
  throw new invalid_email_1.InvalidEmailError(invalid_email_type_1.InvalidEmailErrorType.Whitespace, email);
27
26
  }
28
- if (!validator_1.default.isEmail(trimmedEmail)) {
27
+ if (!(0, validator_1.isEmail)(trimmedEmail)) {
29
28
  throw new invalid_email_1.InvalidEmailError(invalid_email_type_1.InvalidEmailErrorType.Invalid, email);
30
29
  }
31
30
  this.email = trimmedEmail;
@@ -1 +1 @@
1
- {"version":3,"file":"email-string.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/email-string.ts"],"names":[],"mappings":";;;;AAAA,kEAAkC;AAClC,0EAA0E;AAC1E,0DAA2D;AAE3D;;;;GAIG;AACH,MAAa,WAAW;IACN,KAAK,CAAS;IAE9B;;;;OAIG;IACH,YAAY,KAAa;QACvB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,mBAAS,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAkB;QAC9B,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAC,KAAa;QAClC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAW,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF;AA/DD,kCA+DC"}
1
+ {"version":3,"file":"email-string.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/email-string.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,0EAA0E;AAC1E,0DAA2D;AAE3D;;;;GAIG;AACH,MAAa,WAAW;IACN,KAAK,CAAS;IAE9B;;;;OAIG;IACH,YAAY,KAAa;QACvB,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC;QACD,IAAI,YAAY,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,CAAC,IAAA,mBAAO,EAAC,YAAY,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,iCAAiB,CAAC,0CAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACI,QAAQ;QACb,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,KAAkB;QAC9B,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,MAAM;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,MAAM,CAAC,QAAQ,CAAC,KAAa;QAClC,OAAO,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAW,CAAC,CAAC;IACtD,CAAC;IAED;;;OAGG;IACH,IAAW,MAAM;QACf,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;IAC3B,CAAC;CACF;AA/DD,kCA+DC"}
package/src/i18n-setup.js CHANGED
@@ -78,7 +78,7 @@ function getEciesI18nEngine(config) {
78
78
  * Proxy for backward compatibility
79
79
  */
80
80
  exports.eciesI18nEngine = new Proxy({}, {
81
- get(target, prop) {
81
+ get(__target, prop) {
82
82
  return getEciesI18nEngine()[prop];
83
83
  },
84
84
  });
@@ -1 +1 @@
1
- {"version":3,"file":"i18n-setup.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/i18n-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"i18n-setup.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/i18n-setup.ts"],"names":[],"mappings":"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"}
package/src/index.d.ts CHANGED
@@ -35,5 +35,6 @@ export * from './secure-string';
35
35
  export * from './services';
36
36
  export * from './types';
37
37
  export * from './utils';
38
+ export * from './lib/voting';
38
39
  export type { PrivateKey, PublicKey, KeyPair as PaillierKeyPair, } from 'paillier-bigint';
39
40
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,uBAAuB,CAAC;AAG/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,+BAA+B,CAAC;AASvC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,YAAY,EACV,UAAU,EACV,SAAS,EACT,OAAO,IAAI,eAAe,GAC3B,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,OAAO,uBAAuB,CAAC;AAG/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AAItB,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,+BAA+B,CAAC;AASvC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,8BAA8B,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACtE,cAAc,4BAA4B,CAAC;AAC3C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AAGxB,cAAc,cAAc,CAAC;AAG7B,YAAY,EACV,UAAU,EACV,SAAS,EACT,OAAO,IAAI,eAAe,GAC3B,MAAM,iBAAiB,CAAC"}
package/src/index.js CHANGED
@@ -60,4 +60,6 @@ tslib_1.__exportStar(require("./secure-string"), exports);
60
60
  tslib_1.__exportStar(require("./services"), exports);
61
61
  tslib_1.__exportStar(require("./types"), exports);
62
62
  tslib_1.__exportStar(require("./utils"), exports);
63
+ // Voting system exports (IMember already exported from ./interfaces)
64
+ tslib_1.__exportStar(require("./lib/voting"), exports);
63
65
  //# sourceMappingURL=index.js.map
package/src/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAEH,mEAAmE;AACnE,wEAAwE;AACxE,iCAA+B;AAE/B,kBAAkB;AAClB,2DAAiC;AACjC,uDAA6B;AAC7B,sDAA4B;AAE5B,UAAU;AACV,2CAOsB;AANpB,8GAAA,gBAAgB,OAAA;AAChB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AAGtB,mFAAmF;AACnF,mEAAmE;AACnE,uEAKuC;AAJrC,iIAAA,wBAAwB,OAAA;AACxB,+HAAA,sBAAsB,OAAA;AACtB,sIAAA,6BAA6B,OAAA;AAC7B,wIAAA,+BAA+B,OAAA;AAGjC,2DAA2D;AAC3D,oEAAoE;AACpE,8DAA8D;AAE9D,kEAAkE;AAClE,gEAAgE;AAEhE,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,mDAAyB;AACzB,uDAA6B;AAC7B,uEAA6C;AAC7C,kEAAyE;AAAhE,4HAAA,wBAAwB,OAAA;AAEjC,qEAA2C;AAC3C,qEAA2C;AAC3C,uEAA6C;AAC7C,6DAAmC;AACnC,4DAAkC;AAClC,mDAAyB;AACzB,4DAAkC;AAClC,yDAA+B;AAC/B,0DAAgC;AAChC,0DAAgC;AAChC,qDAA2B;AAC3B,kDAAwB;AACxB,kDAAwB"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/digitaldefiance-ecies-lib/src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;AAEH,mEAAmE;AACnE,wEAAwE;AACxE,iCAA+B;AAE/B,kBAAkB;AAClB,2DAAiC;AACjC,uDAA6B;AAC7B,sDAA4B;AAE5B,UAAU;AACV,2CAOsB;AANpB,8GAAA,gBAAgB,OAAA;AAChB,gHAAA,kBAAkB,OAAA;AAClB,gHAAA,kBAAkB,OAAA;AAClB,iHAAA,mBAAmB,OAAA;AACnB,kHAAA,oBAAoB,OAAA;AACpB,kHAAA,oBAAoB,OAAA;AAGtB,mFAAmF;AACnF,mEAAmE;AACnE,uEAKuC;AAJrC,iIAAA,wBAAwB,OAAA;AACxB,+HAAA,sBAAsB,OAAA;AACtB,sIAAA,6BAA6B,OAAA;AAC7B,wIAAA,+BAA+B,OAAA;AAGjC,2DAA2D;AAC3D,oEAAoE;AACpE,8DAA8D;AAE9D,kEAAkE;AAClE,gEAAgE;AAEhE,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,mDAAyB;AACzB,uDAA6B;AAC7B,uEAA6C;AAC7C,kEAAyE;AAAhE,4HAAA,wBAAwB,OAAA;AAEjC,qEAA2C;AAC3C,qEAA2C;AAC3C,uEAA6C;AAC7C,6DAAmC;AACnC,4DAAkC;AAClC,mDAAyB;AACzB,4DAAkC;AAClC,yDAA+B;AAC/B,0DAAgC;AAChC,0DAAgC;AAChC,qDAA2B;AAC3B,kDAAwB;AACxB,kDAAwB;AAExB,qEAAqE;AACrE,uDAA6B"}
@@ -15,6 +15,7 @@ export * from './pbkdf2-consts';
15
15
  export * from './pbkdf2-result';
16
16
  export * from './platform-buffer';
17
17
  export * from './voting-consts';
18
+ export { type IPoll, type IVoteEncoder, type IPollTallier, type IPollFactory, type IVotingSecurityValidator, SecurityLevel, } from './voting-poll';
18
19
  export * from './voting-service';
19
20
  export * from './isolated-keys';
20
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,QAAQ,CAAC;AACvB,mBAAmB,UAAU,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,mBAAmB,wBAAwB,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,QAAQ,CAAC;AACvB,mBAAmB,UAAU,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,mBAAmB,wBAAwB,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,OAAO,EACL,KAAK,KAAK,EACV,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,wBAAwB,EAC7B,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC"}
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SecurityLevel = void 0;
3
4
  const tslib_1 = require("tslib");
4
5
  tslib_1.__exportStar(require("./checksum-config"), exports);
5
6
  tslib_1.__exportStar(require("./checksum-consts"), exports);
@@ -16,6 +17,8 @@ tslib_1.__exportStar(require("./pbkdf2-consts"), exports);
16
17
  tslib_1.__exportStar(require("./pbkdf2-result"), exports);
17
18
  tslib_1.__exportStar(require("./platform-buffer"), exports);
18
19
  tslib_1.__exportStar(require("./voting-consts"), exports);
20
+ var voting_poll_1 = require("./voting-poll");
21
+ Object.defineProperty(exports, "SecurityLevel", { enumerable: true, get: function () { return voting_poll_1.SecurityLevel; } });
19
22
  tslib_1.__exportStar(require("./voting-service"), exports);
20
23
  tslib_1.__exportStar(require("./isolated-keys"), exports);
21
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":";;;AAAA,4DAAkC;AAClC,4DAAkC;AAClC,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,+DAAqC;AACrC,0DAAgC;AAChC,wEAA8C;AAC9C,iDAAuB;AAEvB,2DAAiC;AAEjC,0DAAgC;AAChC,0DAAgC;AAChC,0DAAgC;AAChC,4DAAkC;AAClC,0DAAgC;AAChC,2DAAiC;AACjC,0DAAgC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/digitaldefiance-ecies-lib/src/interfaces/index.ts"],"names":[],"mappings":";;;;AAAA,4DAAkC;AAClC,4DAAkC;AAClC,sDAA4B;AAC5B,yDAA+B;AAC/B,yDAA+B;AAC/B,+DAAqC;AACrC,0DAAgC;AAChC,wEAA8C;AAC9C,iDAAuB;AAEvB,2DAAiC;AAEjC,0DAAgC;AAChC,0DAAgC;AAChC,0DAAgC;AAChC,4DAAkC;AAClC,0DAAgC;AAChC,6CAOuB;AADrB,4GAAA,aAAa,OAAA;AAEf,2DAAiC;AACjC,0DAAgC"}