@deployport/specular-runtime
Version:
Runtime for Specular API clients with support for Node.js and Browser
61 lines (60 loc) • 1.72 kB
JavaScript
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;
}