ensync-utils
v0.1.0
Published
Shared utilities for EnSync SDK packages - encryption, error handling, and JSON validation
Maintainers
Readme
EnSync Utils
Shared utilities for EnSync SDK packages. This package provides common functionality for encryption, error handling, and JSON validation used across all EnSync client implementations.
Installation
npm install ensync-utilsFeatures
- Error Handling: Standardized error types for EnSync operations
- Encryption: Ed25519 and hybrid encryption/decryption
- JSON Validation: Type checking and schema validation for payloads
Usage
const {
EnSyncError,
encryptEd25519,
decryptEd25519,
analyzePayload,
validatePayloadSchema
} = require("ensync-utils");API Reference
Error Handling
EnSyncError
Custom error class for EnSync operations.
throw new EnSyncError("Authentication failed", "EnSyncAuthError");Error Types:
EnSyncAuthError- Authentication failuresEnSyncPublishError- Publishing failuresEnSyncSubscriptionError- Subscription failuresEnSyncValidationError- Payload validation failuresEnSyncGenericError- Other errors
Encryption
encryptEd25519(payload, recipientPublicKey)
Encrypts a payload using Ed25519.
Parameters:
payload(object): Data to encryptrecipientPublicKey(string): Base64 encoded public key
Returns: string (base64 encrypted payload)
decryptEd25519(encryptedPayload, secretKey)
Decrypts an Ed25519 encrypted payload.
Parameters:
encryptedPayload(string): Base64 encrypted datasecretKey(string): Base64 encoded secret key
Returns: string (decrypted JSON string)
hybridEncrypt(payload, recipientPublicKeys)
Encrypts payload using hybrid encryption (AES + Ed25519).
Parameters:
payload(object): Data to encryptrecipientPublicKeys(string[]): Array of base64 public keys
Returns: object with encryptedPayload and encryptedKeys
hybridDecrypt(encryptedPayload, encryptedKey, secretKey)
Decrypts a hybrid encrypted payload.
Parameters:
encryptedPayload(string): Encrypted dataencryptedKey(string): Encrypted AES keysecretKey(string): Base64 secret key
Returns: string (decrypted JSON string)
JSON Utilities
getJsonType(value)
Determines the JSON data type of a value.
Returns: string - One of: string, integer, long, double, float, boolean, object, array, null
getJsonType(123); // "integer"
getJsonType(123.45); // "double"
getJsonType("hello"); // "string"validateType(value, expectedType)
Validates if a value matches the expected type.
validateType(123, "integer"); // true
validateType("hello", "integer"); // falsevalidatePayloadSchema(payload, schema)
Validates a payload against a schema.
const result = validatePayloadSchema(
{ userId: "123", age: 25 },
{ userId: "string", age: "integer" }
);
// { success: true, errors: [] }getPayloadSchema(payload, deep)
Extracts JSON schema from a payload.
getPayloadSchema({ name: "John", age: 30 });
// { name: "string", age: "integer" }analyzePayload(payload)
Comprehensive payload analysis.
analyzePayload({ orderId: "123", amount: 99.99 });
// {
// byteSize: 35,
// schema: { orderId: "string", amount: "double" },
// fieldCount: 2,
// isValid: true
// }isValidJson(value)
Checks if a value can be JSON serialized.
isValidJson({ name: "John" }); // true
isValidJson(undefined); // falsesafeJsonParse(jsonString, defaultValue)
Safely parses JSON with error handling.
safeJsonParse('{"name":"John"}', {}); // { name: "John" }
safeJsonParse('invalid', {}); // {}Data Types
Supported JSON data types (matching EnSync engine):
string- String valuesinteger/int- 32-bit integers (-2,147,483,648 to 2,147,483,647)long- 64-bit integersdouble- Double precision floating pointfloat- Single precision floating pointboolean/bool- Boolean valuesobject- JSON objectsarray- JSON arraysnull- Null values
License
ISC
