UNPKG

@deployport/specular-runtime

Version:

Runtime for Specular API clients with support for Node.js and Browser

61 lines (60 loc) 1.72 kB
import Package from "./package.js"; import Property from "./property.js"; import Struct from "./struct.js"; const zeroTimeNum = Date.UTC(1, 0, 1, 0, 0, 0); // returns a date equivalent to 0001-01-01 00:00:00 +0000 UTC export function defaultZeroTime() { return new Date(zeroTimeNum); } // returns true if the date is equivalent to 0001-01-01 00:00:00 +0000 UTC // null and undefined are considered false export function dateIsZeroTime(date) { return date.getTime() === zeroTimeNum; } export class BuiltinMetaInfo { Module; ErrMeta; HeartbeatMeta; constructor(module, errMeta, builtinHeartbeatMeta) { this.Module = module; this.ErrMeta = errMeta; this.HeartbeatMeta = builtinHeartbeatMeta; } } const _pkg = new Package("spec", "proto"); const builtinErrMeta = new Struct(_pkg, "err"); new Property(builtinErrMeta, "message", { NonNullable: true, SubType: "builtin", Builtin: "string" }); new Property(builtinErrMeta, "resource", { NonNullable: false, SubType: "builtin", Builtin: "string" }); new Property(builtinErrMeta, "operation", { NonNullable: false, SubType: "builtin", Builtin: "string" }); new Property(builtinErrMeta, "code", { NonNullable: false, SubType: "builtin", Builtin: "string" }); export class Err extends Error { get __structPath() { return builtinErrMeta.path; } } builtinErrMeta.problemInstantiate = (msg) => new Err(msg); const builtinHeartbeatMeta = new Struct(_pkg, "hb"); const _meta = new BuiltinMetaInfo(_pkg, builtinErrMeta, builtinHeartbeatMeta); /** * Returns the bultin protocol package * @returns the Package instance */ export function BuiltinMeta() { return _meta; }