arvo-core
Version:
The core Arvo package which provides application tier core primitives and contract system for building production-grade event-driven application. Provides ArvoEvent (CloudEvents-compliant), ArvoContract for type-safe service interfaces, event factories, O
40 lines (39 loc) • 1.66 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseArvoEventId = exports.createArvoEventId = exports.ArvoEventIdObjectSchema = void 0;
var pako_1 = __importDefault(require("pako"));
var uuid_1 = require("uuid");
var zod_1 = require("zod");
exports.ArvoEventIdObjectSchema = zod_1.z.object({
uuid: zod_1.z.string(),
value: zod_1.z.string(),
});
var createArvoEventId = function (id) {
if ((id === null || id === void 0 ? void 0 : id.deduplication) === 'ARVO_MANAGED' && id.value.trim()) {
var data = exports.ArvoEventIdObjectSchema.parse({ uuid: (0, uuid_1.v4)(), value: id.value.trim() });
var jsonString = JSON.stringify(data);
var compressed = pako_1.default.deflate(new TextEncoder().encode(jsonString));
return Buffer.from(compressed).toString('base64');
}
if ((id === null || id === void 0 ? void 0 : id.deduplication) === 'DEVELOPER_MANAGED' && id.value.trim()) {
return id.value.trim();
}
return (0, uuid_1.v4)();
};
exports.createArvoEventId = createArvoEventId;
var parseArvoEventId = function (id) {
try {
var compressed = Buffer.from(id, 'base64');
var decompressed = pako_1.default.inflate(compressed);
var jsonString = new TextDecoder().decode(decompressed);
var parsed = JSON.parse(jsonString);
return [exports.ArvoEventIdObjectSchema.parse(parsed), null];
}
catch (e) {
return [id, e];
}
};
exports.parseArvoEventId = parseArvoEventId;