assistant-cloud
Version:
Cloud integration for assistant-ui
43 lines (42 loc) • 1.82 kB
JavaScript
//#region src/cloudResponse.ts
var CloudResponseError = class extends Error {
constructor(message) {
super(message);
this.name = "CloudResponseError";
}
};
const invalidCloudResponse = (field, expected) => new CloudResponseError(`Invalid Assistant Cloud response for "${field}": expected ${expected}`);
const readCloudRecord = (value, field) => {
if (typeof value !== "object" || value === null || Array.isArray(value)) throw invalidCloudResponse(field, "an object");
return value;
};
const readCloudArray = (value, field) => {
if (!Array.isArray(value)) throw invalidCloudResponse(field, "an array");
return value;
};
const readCloudString = (value, field) => {
if (typeof value !== "string") throw invalidCloudResponse(field, "a string");
return value;
};
const readCloudNullableString = (value, field) => {
if (value === null) return null;
return readCloudString(value, field);
};
const readCloudBoolean = (value, field) => {
if (typeof value !== "boolean") throw invalidCloudResponse(field, "a boolean");
return value;
};
const readCloudInteger = (value, field) => {
if (!Number.isInteger(value)) throw invalidCloudResponse(field, "an integer");
return value;
};
const readCloudTimestamp = (value, field) => {
if (typeof value !== "string") throw invalidCloudResponse(field, "a canonical ISO timestamp");
const date = new Date(value);
if (Number.isNaN(date.getTime()) || date.toISOString() !== value) throw invalidCloudResponse(field, "a canonical ISO timestamp");
return date;
};
const readCloudJSONObject = (value, field) => readCloudRecord(value, field);
//#endregion
export { CloudResponseError, readCloudArray, readCloudBoolean, readCloudInteger, readCloudJSONObject, readCloudNullableString, readCloudRecord, readCloudString, readCloudTimestamp };
//# sourceMappingURL=cloudResponse.js.map