UNPKG

@hookflo/tern

Version:

A robust, scalable webhook verification framework supporting multiple platforms and signature algorithms

79 lines (78 loc) 3.2 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __exportStar = (this && this.__exportStar) || function(m, exports) { for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.InMemoryStorageAdapter = exports.Normalizer = void 0; const registry_1 = require("./providers/registry"); const registry_2 = require("./templates/registry"); const memory_1 = require("./storage/memory"); const engine_1 = require("./transformer/engine"); const validator_1 = require("./transformer/validator"); class Normalizer { constructor(storage = new memory_1.InMemoryStorageAdapter()) { this.storage = storage; this.engine = new engine_1.NormalizationEngine(storage, new validator_1.SchemaValidator()); } async getBaseTemplates() { return this.storage.listBaseTemplates(); } async getProviders(category) { return registry_1.providerRegistry.list(category); } async createSchema(input) { const schema = { id: generateId(), userId: input.userId, baseTemplateId: input.baseTemplateId, category: input.category, fields: input.fields, providerMappings: input.providerMappings, createdAt: new Date(), updatedAt: new Date(), }; await this.storage.saveSchema(schema); return schema; } async updateSchema(schemaId, updates) { await this.storage.updateSchema(schemaId, updates); } async getSchema(id) { return this.storage.getSchema(id); } async transform(params) { return this.engine.transform(params); } async validateSchema(schema) { const base = (await this.storage.getBaseTemplate(schema.baseTemplateId)) ?? registry_2.templateRegistry.getById(schema.baseTemplateId); if (!base) { return { valid: false, errors: [`Base template not found: ${schema.baseTemplateId}`], }; } const validator = new validator_1.SchemaValidator(); return validator.validateSchema(schema, base); } } exports.Normalizer = Normalizer; function generateId() { // Simple non-crypto unique ID generator for framework default return (`sch_${Math.random().toString(36).slice(2, 10)}${Date.now().toString(36)}`); } __exportStar(require("./types"), exports); __exportStar(require("./storage/interface"), exports); var memory_2 = require("./storage/memory"); Object.defineProperty(exports, "InMemoryStorageAdapter", { enumerable: true, get: function () { return memory_2.InMemoryStorageAdapter; } });