if-electricitymaps
Version:
Electricity Maps plugin for Impact Framework.
86 lines • 9.79 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.inputSchema = void 0;
const dayjs = require("dayjs");
const zod_1 = require("zod");
exports.inputSchema = zod_1.z
.object({
timestamp: zod_1.z
.string({
required_error: "The 'timestamp' field is required",
invalid_type_error: "The 'timestamp' field must be a string",
})
.refine(val => !isNaN(Date.parse(val)), {
message: 'Invalid timestamp; must be a valid ISO date string',
}),
duration: zod_1.z
.number({
required_error: "The 'duration' field is required",
invalid_type_error: "The 'duration' field must be a number",
})
.positive('Invalid duration; must be a positive number')
.refine(val => val >= 3600, {
message: "Invalid duration: 'duration' must be greater than 3600",
}),
latitude: zod_1.z
.number({
required_error: "The 'latitude' field is required",
invalid_type_error: "The 'latitude' field must be a number",
})
.refine(val => !isNaN(val), {
message: "The 'latitude' field must be a number",
})
.optional(),
longitude: zod_1.z
.number({
required_error: "The 'longitude' field is required",
invalid_type_error: "The 'longitude' field must be a number",
})
.refine(val => !isNaN(val), {
message: "The 'longitude' field must be a number",
})
.optional(),
zone: zod_1.z
.string({
invalid_type_error: "The 'zone' field must be a string",
})
.optional(),
})
.refine(data => {
const start = dayjs(data.timestamp);
const end = start.add(data.duration, 'second');
return (end.diff(start, 'days') < 10,
{
message: 'The maximum duration is 10 days for the Electricity Maps API',
});
})
.refine(data => {
// If latitude is provided, longitude must also be provided
if (data.latitude !== undefined) {
return data.longitude !== undefined;
}
return true;
}, {
message: "The 'longitude' field is required if 'latitude' is provided",
})
.refine(data => {
// If longitude is provided, latitude must also be provided
if (data.longitude !== undefined) {
return data.latitude !== undefined;
}
return true;
}, {
message: "The 'latitude' field is required if 'longitude' is provided",
})
.refine(data => {
// Either zone is provided OR both latitude and longitude are provided
return ((data.zone !== undefined &&
data.latitude === undefined &&
data.longitude === undefined) ||
(data.zone === undefined &&
data.latitude !== undefined &&
data.longitude !== undefined));
}, {
message: "Either the 'zone' field OR both 'longitude' and 'latitude' fields must be provided",
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdXRpbC9zY2hlbWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiw2QkFBc0I7QUFFVCxRQUFBLFdBQVcsR0FBRyxPQUFDO0tBQ3pCLE1BQU0sQ0FBQztJQUNOLFNBQVMsRUFBRSxPQUFDO1NBQ1QsTUFBTSxDQUFDO1FBQ04sY0FBYyxFQUFFLG1DQUFtQztRQUNuRCxrQkFBa0IsRUFBRSx3Q0FBd0M7S0FDN0QsQ0FBQztTQUNELE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtRQUN0QyxPQUFPLEVBQUUsb0RBQW9EO0tBQzlELENBQUM7SUFDSixRQUFRLEVBQUUsT0FBQztTQUNSLE1BQU0sQ0FBQztRQUNOLGNBQWMsRUFBRSxrQ0FBa0M7UUFDbEQsa0JBQWtCLEVBQUUsdUNBQXVDO0tBQzVELENBQUM7U0FDRCxRQUFRLENBQUMsNkNBQTZDLENBQUM7U0FDdkQsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLElBQUksRUFBRTtRQUMxQixPQUFPLEVBQUUsd0RBQXdEO0tBQ2xFLENBQUM7SUFDSixRQUFRLEVBQUUsT0FBQztTQUNSLE1BQU0sQ0FBQztRQUNOLGNBQWMsRUFBRSxrQ0FBa0M7UUFDbEQsa0JBQWtCLEVBQUUsdUNBQXVDO0tBQzVELENBQUM7U0FDRCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQixPQUFPLEVBQUUsdUNBQXVDO0tBQ2pELENBQUM7U0FDRCxRQUFRLEVBQUU7SUFDYixTQUFTLEVBQUUsT0FBQztTQUNULE1BQU0sQ0FBQztRQUNOLGNBQWMsRUFBRSxtQ0FBbUM7UUFDbkQsa0JBQWtCLEVBQUUsd0NBQXdDO0tBQzdELENBQUM7U0FDRCxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUMxQixPQUFPLEVBQUUsd0NBQXdDO0tBQ2xELENBQUM7U0FDRCxRQUFRLEVBQUU7SUFDYixJQUFJLEVBQUUsT0FBQztTQUNKLE1BQU0sQ0FBQztRQUNOLGtCQUFrQixFQUFFLG1DQUFtQztLQUN4RCxDQUFDO1NBQ0QsUUFBUSxFQUFFO0NBQ2QsQ0FBQztLQUNELE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUNiLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDcEMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQy9DLE9BQU8sQ0FDTCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQzVCO1lBQ0UsT0FBTyxFQUFFLDhEQUE4RDtTQUN4RSxDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7S0FDRCxNQUFNLENBQ0wsSUFBSSxDQUFDLEVBQUU7SUFDTCwyREFBMkQ7SUFDM0QsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLENBQUM7SUFDdEMsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQyxFQUNEO0lBQ0UsT0FBTyxFQUFFLDZEQUE2RDtDQUN2RSxDQUNGO0tBQ0EsTUFBTSxDQUNMLElBQUksQ0FBQyxFQUFFO0lBQ0wsMkRBQTJEO0lBQzNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUNqQyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDO0lBQ3JDLENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsRUFDRDtJQUNFLE9BQU8sRUFBRSw2REFBNkQ7Q0FDdkUsQ0FDRjtLQUNBLE1BQU0sQ0FDTCxJQUFJLENBQUMsRUFBRTtJQUNMLHNFQUFzRTtJQUN0RSxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFNBQVM7UUFDdEIsSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTO1FBQzNCLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxDQUFDO1FBQy9CLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxTQUFTO1lBQ3RCLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUztZQUMzQixJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUNoQyxDQUFDO0FBQ0osQ0FBQyxFQUNEO0lBQ0UsT0FBTyxFQUNMLG9GQUFvRjtDQUN2RixDQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBkYXlqcyBmcm9tICdkYXlqcyc7XG5pbXBvcnQge3p9IGZyb20gJ3pvZCc7XG5cbmV4cG9ydCBjb25zdCBpbnB1dFNjaGVtYSA9IHpcbiAgLm9iamVjdCh7XG4gICAgdGltZXN0YW1wOiB6XG4gICAgICAuc3RyaW5nKHtcbiAgICAgICAgcmVxdWlyZWRfZXJyb3I6IFwiVGhlICd0aW1lc3RhbXAnIGZpZWxkIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIGludmFsaWRfdHlwZV9lcnJvcjogXCJUaGUgJ3RpbWVzdGFtcCcgZmllbGQgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSlcbiAgICAgIC5yZWZpbmUodmFsID0+ICFpc05hTihEYXRlLnBhcnNlKHZhbCkpLCB7XG4gICAgICAgIG1lc3NhZ2U6ICdJbnZhbGlkIHRpbWVzdGFtcDsgbXVzdCBiZSBhIHZhbGlkIElTTyBkYXRlIHN0cmluZycsXG4gICAgICB9KSxcbiAgICBkdXJhdGlvbjogelxuICAgICAgLm51bWJlcih7XG4gICAgICAgIHJlcXVpcmVkX2Vycm9yOiBcIlRoZSAnZHVyYXRpb24nIGZpZWxkIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIGludmFsaWRfdHlwZV9lcnJvcjogXCJUaGUgJ2R1cmF0aW9uJyBmaWVsZCBtdXN0IGJlIGEgbnVtYmVyXCIsXG4gICAgICB9KVxuICAgICAgLnBvc2l0aXZlKCdJbnZhbGlkIGR1cmF0aW9uOyBtdXN0IGJlIGEgcG9zaXRpdmUgbnVtYmVyJylcbiAgICAgIC5yZWZpbmUodmFsID0+IHZhbCA+PSAzNjAwLCB7XG4gICAgICAgIG1lc3NhZ2U6IFwiSW52YWxpZCBkdXJhdGlvbjogJ2R1cmF0aW9uJyBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAzNjAwXCIsXG4gICAgICB9KSxcbiAgICBsYXRpdHVkZTogelxuICAgICAgLm51bWJlcih7XG4gICAgICAgIHJlcXVpcmVkX2Vycm9yOiBcIlRoZSAnbGF0aXR1ZGUnIGZpZWxkIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIGludmFsaWRfdHlwZV9lcnJvcjogXCJUaGUgJ2xhdGl0dWRlJyBmaWVsZCBtdXN0IGJlIGEgbnVtYmVyXCIsXG4gICAgICB9KVxuICAgICAgLnJlZmluZSh2YWwgPT4gIWlzTmFOKHZhbCksIHtcbiAgICAgICAgbWVzc2FnZTogXCJUaGUgJ2xhdGl0dWRlJyBmaWVsZCBtdXN0IGJlIGEgbnVtYmVyXCIsXG4gICAgICB9KVxuICAgICAgLm9wdGlvbmFsKCksXG4gICAgbG9uZ2l0dWRlOiB6XG4gICAgICAubnVtYmVyKHtcbiAgICAgICAgcmVxdWlyZWRfZXJyb3I6IFwiVGhlICdsb25naXR1ZGUnIGZpZWxkIGlzIHJlcXVpcmVkXCIsXG4gICAgICAgIGludmFsaWRfdHlwZV9lcnJvcjogXCJUaGUgJ2xvbmdpdHVkZScgZmllbGQgbXVzdCBiZSBhIG51bWJlclwiLFxuICAgICAgfSlcbiAgICAgIC5yZWZpbmUodmFsID0+ICFpc05hTih2YWwpLCB7XG4gICAgICAgIG1lc3NhZ2U6IFwiVGhlICdsb25naXR1ZGUnIGZpZWxkIG11c3QgYmUgYSBudW1iZXJcIixcbiAgICAgIH0pXG4gICAgICAub3B0aW9uYWwoKSxcbiAgICB6b25lOiB6XG4gICAgICAuc3RyaW5nKHtcbiAgICAgICAgaW52YWxpZF90eXBlX2Vycm9yOiBcIlRoZSAnem9uZScgZmllbGQgbXVzdCBiZSBhIHN0cmluZ1wiLFxuICAgICAgfSlcbiAgICAgIC5vcHRpb25hbCgpLFxuICB9KVxuICAucmVmaW5lKGRhdGEgPT4ge1xuICAgIGNvbnN0IHN0YXJ0ID0gZGF5anMoZGF0YS50aW1lc3RhbXApO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0LmFkZChkYXRhLmR1cmF0aW9uLCAnc2Vjb25kJyk7XG4gICAgcmV0dXJuIChcbiAgICAgIGVuZC5kaWZmKHN0YXJ0LCAnZGF5cycpIDwgMTAsXG4gICAgICB7XG4gICAgICAgIG1lc3NhZ2U6ICdUaGUgbWF4aW11bSBkdXJhdGlvbiBpcyAxMCBkYXlzIGZvciB0aGUgRWxlY3RyaWNpdHkgTWFwcyBBUEknLFxuICAgICAgfVxuICAgICk7XG4gIH0pXG4gIC5yZWZpbmUoXG4gICAgZGF0YSA9PiB7XG4gICAgICAvLyBJZiBsYXRpdHVkZSBpcyBwcm92aWRlZCwgbG9uZ2l0dWRlIG11c3QgYWxzbyBiZSBwcm92aWRlZFxuICAgICAgaWYgKGRhdGEubGF0aXR1ZGUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGF0YS5sb25naXR1ZGUgIT09IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0sXG4gICAge1xuICAgICAgbWVzc2FnZTogXCJUaGUgJ2xvbmdpdHVkZScgZmllbGQgaXMgcmVxdWlyZWQgaWYgJ2xhdGl0dWRlJyBpcyBwcm92aWRlZFwiLFxuICAgIH1cbiAgKVxuICAucmVmaW5lKFxuICAgIGRhdGEgPT4ge1xuICAgICAgLy8gSWYgbG9uZ2l0dWRlIGlzIHByb3ZpZGVkLCBsYXRpdHVkZSBtdXN0IGFsc28gYmUgcHJvdmlkZWRcbiAgICAgIGlmIChkYXRhLmxvbmdpdHVkZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkYXRhLmxhdGl0dWRlICE9PSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9LFxuICAgIHtcbiAgICAgIG1lc3NhZ2U6IFwiVGhlICdsYXRpdHVkZScgZmllbGQgaXMgcmVxdWlyZWQgaWYgJ2xvbmdpdHVkZScgaXMgcHJvdmlkZWRcIixcbiAgICB9XG4gIClcbiAgLnJlZmluZShcbiAgICBkYXRhID0+IHtcbiAgICAgIC8vIEVpdGhlciB6b25lIGlzIHByb3ZpZGVkIE9SIGJvdGggbGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSBhcmUgcHJvdmlkZWRcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChkYXRhLnpvbmUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIGRhdGEubGF0aXR1ZGUgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIGRhdGEubG9uZ2l0dWRlID09PSB1bmRlZmluZWQpIHx8XG4gICAgICAgIChkYXRhLnpvbmUgPT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIGRhdGEubGF0aXR1ZGUgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIGRhdGEubG9uZ2l0dWRlICE9PSB1bmRlZmluZWQpXG4gICAgICApO1xuICAgIH0sXG4gICAge1xuICAgICAgbWVzc2FnZTpcbiAgICAgICAgXCJFaXRoZXIgdGhlICd6b25lJyBmaWVsZCBPUiBib3RoICdsb25naXR1ZGUnIGFuZCAnbGF0aXR1ZGUnIGZpZWxkcyBtdXN0IGJlIHByb3ZpZGVkXCIsXG4gICAgfVxuICApO1xuIl19