UNPKG

fastify-cloudevents

Version:

Fastify Plugin to serialize events in the CloudEvents standard format

84 lines (72 loc) 2.47 kB
/* * Copyright 2018-2026 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict' /** * Utility functions module. * @module utility */ const { CloudEventTransformer } = require('cloudevent') function ensureIsString (arg, name = 'arg') { if (arg !== null && typeof arg !== 'string') { throw new TypeError(`The argument '${name}' must be a string, instead got a '${typeof arg}'`) } } function ensureIsBoolean (arg, name = 'arg') { if (arg !== null && typeof arg !== 'boolean') { throw new TypeError(`The argument '${name}' must be a boolean, instead got a '${typeof arg}'`) } } function ensureIsObject (arg, name = 'arg') { if (arg !== null && typeof arg !== 'object') { throw new TypeError(`The argument '${name}' must be a object, instead got a '${typeof arg}'`) } } function ensureIsObjectPlain (arg, name = 'arg') { if (arg !== null && Object.prototype.toString.call(arg) === '[object Object]') { return new TypeError(`The argument '${name}' must be a plain object, instead got a '${typeof arg}'`) } } function ensureIsFunction (arg, name = 'arg') { if (arg !== null && typeof arg !== 'function') { throw new TypeError(`The argument '${name}' must be a function, instead got a '${typeof arg}'`) } } const hostname = require('node:os').hostname() const idPrefix = `fastify@${hostname}` function * idMaker () { while (true) { const timestamp = CloudEventTransformer.timestampToNumber() yield `${idPrefix}@${timestamp}` } } function isDefinedAndNotNull (arg) { return (arg !== undefined && arg !== null) } function isValue (arg) { return ((arg !== undefined && arg !== null) && (typeof arg === 'string' || typeof arg === 'boolean' || (typeof arg === 'number' && !isNaN(arg))) ) } module.exports = { ensureIsString, ensureIsBoolean, ensureIsObject, ensureIsObjectPlain, ensureIsFunction, idMaker, isDefinedAndNotNull, isValue }