UNPKG

@brimdata/zealot

Version:

The Javascript Client for Zed Lakes

107 lines (106 loc) 3.46 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { createRecord: ()=>createRecord, createField: ()=>createField, createData: ()=>createData }); const _encoder = require("../encoder"); const _zed = /*#__PURE__*/ _interopRequireWildcard(require("../zed")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for(var key in obj){ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function createRecord(object) { let fields = []; for(let name in object){ fields.push(createField(name, object[name])); } const typeFields = fields.map((f)=>new _zed.TypeField(f.name, f.value.type)); // This could be more efficient const type = _zed.DefaultContext.lookupTypeRecord(typeFields); const r = new _zed.Record(type, fields); // This is necessary at the moment to add field parents, // and to match the codepath that runs in production. return (0, _encoder.decode)((0, _encoder.encode)(r)); } function createField(name, value) { return new _zed.Field(name, createData(value), null); } function createData(value) { if (_zed.isValue(value)) { return value; } if (value === null) { return new _zed.Null(); } if (value instanceof Date) { return new _zed.Time(value.toISOString()); } if (Number.isInteger(value)) { return new _zed.Uint64(value.toString()); } if (typeof value === "number") { return new _zed.Float64(value.toString()); } if (typeof value === "string" && isIp(value)) { return new _zed.Ip(value); } if (typeof value === "string") { return new _zed.String(value); } if (typeof value === "object" && value?.constructor === Object) { return createRecord(value); } throw new Error(`Implement this: ${JSON.stringify(value)}`); } function isIp(string) { const blocks = string.split("."); if (blocks.length !== 4) return false; return blocks.every((block)=>{ return Number(block) >= 0 && Number(block) <= 255; }); }