@robinpath/calendar
Advanced tools
+15
-3
| { | ||
| "name": "@robinpath/calendar", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "publishConfig": { | ||
@@ -24,9 +24,21 @@ "access": "public" | ||
| "peerDependencies": { | ||
| "@wiredwp/robinpath": ">=0.20.0" | ||
| "@robinpath/core": ">=0.20.0" | ||
| }, | ||
| "devDependencies": { | ||
| "@wiredwp/robinpath": "^0.30.1", | ||
| "@robinpath/core": "^0.30.1", | ||
| "tsx": "^4.19.0", | ||
| "typescript": "^5.6.0" | ||
| }, | ||
| "description": "iCal (.ics) calendar parsing, generation, event management, and date range queries", | ||
| "keywords": [ | ||
| "calendar", | ||
| "utility" | ||
| ], | ||
| "license": "MIT", | ||
| "robinpath": { | ||
| "category": "utility", | ||
| "type": "utility", | ||
| "auth": "none", | ||
| "functionCount": 13 | ||
| } | ||
| } |
| import type { BuiltinHandler } from "@wiredwp/robinpath"; | ||
| export declare const CalendarFunctions: Record<string, BuiltinHandler>; | ||
| export declare const CalendarFunctionMetadata: { | ||
| createEvent: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| createCalendar: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| parse: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| parseFile: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| writeFile: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| addEvent: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| removeEvent: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| findEvents: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| today: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| upcoming: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| toJson: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| formatDate: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| parseDate: { | ||
| description: string; | ||
| parameters: { | ||
| name: string; | ||
| dataType: string; | ||
| description: string; | ||
| formInputType: string; | ||
| required: boolean; | ||
| }[]; | ||
| returnType: string; | ||
| returnDescription: string; | ||
| example: string; | ||
| }; | ||
| }; | ||
| export declare const CalendarModuleMetadata: { | ||
| description: string; | ||
| methods: string[]; | ||
| }; | ||
| //# sourceMappingURL=calendar.d.ts.map |
| {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA2C,MAAM,oBAAoB,CAAC;AAuIlG,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAmJ,CAAC;AAEjN,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcpC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;CAGlC,CAAC"} |
-157
| import { readFileSync, writeFileSync } from "node:fs"; | ||
| import { randomUUID } from "node:crypto"; | ||
| function toIcalDate(iso, allDay = false) { | ||
| const d = new Date(iso); | ||
| if (allDay) | ||
| return d.toISOString().slice(0, 10).replace(/-/g, ""); | ||
| return d.toISOString().replace(/[-:]/g, "").replace(/\.\d{3}/, ""); | ||
| } | ||
| function fromIcalDate(ical) { | ||
| if (ical.length === 8) | ||
| return `${ical.slice(0, 4)}-${ical.slice(4, 6)}-${ical.slice(6, 8)}`; | ||
| const m = ical.match(/(\d{4})(\d{2})(\d{2})T(\d{2})(\d{2})(\d{2})/); | ||
| if (!m) | ||
| return ical; | ||
| return `${m[1]}-${m[2]}-${m[3]}T${m[4]}:${m[5]}:${m[6]}${ical.endsWith("Z") ? "Z" : ""}`; | ||
| } | ||
| function escIcal(s) { return s.replace(/\\/g, "\\\\").replace(/;/g, "\\;").replace(/,/g, "\\,").replace(/\n/g, "\\n"); } | ||
| function unescIcal(s) { return s.replace(/\\n/g, "\n").replace(/\\,/g, ",").replace(/\\;/g, ";").replace(/\\\\/g, "\\"); } | ||
| function extractProp(block, prop) { | ||
| const re = new RegExp(`^${prop}[;:](.*)`, "mi"); | ||
| const m = block.match(re); | ||
| if (!m) | ||
| return undefined; | ||
| let val = m[1]; | ||
| if (val.includes(":")) | ||
| val = val.split(":").slice(-1)[0]; | ||
| return unescIcal(val.trim()); | ||
| } | ||
| const createEvent = (args) => { | ||
| const opts = (typeof args[0] === "object" && args[0] !== null ? args[0] : {}); | ||
| return { | ||
| uid: opts.uid ? String(opts.uid) : randomUUID(), | ||
| summary: String(opts.summary ?? ""), | ||
| description: opts.description ? String(opts.description) : undefined, | ||
| location: opts.location ? String(opts.location) : undefined, | ||
| start: String(opts.start ?? new Date().toISOString()), | ||
| end: opts.end ? String(opts.end) : undefined, | ||
| allDay: opts.allDay === true, | ||
| organizer: opts.organizer ? String(opts.organizer) : undefined, | ||
| attendees: Array.isArray(opts.attendees) ? opts.attendees.map(String) : undefined, | ||
| url: opts.url ? String(opts.url) : undefined, | ||
| }; | ||
| }; | ||
| const createCalendar = (args) => { | ||
| const events = (Array.isArray(args[0]) ? args[0] : []); | ||
| const opts = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| const lines = ["BEGIN:VCALENDAR", "VERSION:2.0", `PRODID:-//RobinPath//Calendar//EN`]; | ||
| if (opts.name) | ||
| lines.push(`X-WR-CALNAME:${escIcal(String(opts.name))}`); | ||
| if (opts.timezone) | ||
| lines.push(`X-WR-TIMEZONE:${String(opts.timezone)}`); | ||
| for (const ev of events) { | ||
| lines.push("BEGIN:VEVENT"); | ||
| lines.push(`UID:${ev.uid ?? randomUUID()}`); | ||
| lines.push(`SUMMARY:${escIcal(String(ev.summary ?? ""))}`); | ||
| if (ev.description) | ||
| lines.push(`DESCRIPTION:${escIcal(String(ev.description))}`); | ||
| if (ev.location) | ||
| lines.push(`LOCATION:${escIcal(String(ev.location))}`); | ||
| const allDay = ev.allDay === true; | ||
| lines.push(allDay ? `DTSTART;VALUE=DATE:${toIcalDate(String(ev.start), true)}` : `DTSTART:${toIcalDate(String(ev.start))}`); | ||
| if (ev.end) | ||
| lines.push(allDay ? `DTEND;VALUE=DATE:${toIcalDate(String(ev.end), true)}` : `DTEND:${toIcalDate(String(ev.end))}`); | ||
| if (ev.organizer) | ||
| lines.push(`ORGANIZER:mailto:${ev.organizer}`); | ||
| if (Array.isArray(ev.attendees)) | ||
| for (const a of ev.attendees) | ||
| lines.push(`ATTENDEE:mailto:${a}`); | ||
| if (ev.url) | ||
| lines.push(`URL:${ev.url}`); | ||
| lines.push(`DTSTAMP:${toIcalDate(new Date().toISOString())}`); | ||
| lines.push("END:VEVENT"); | ||
| } | ||
| lines.push("END:VCALENDAR"); | ||
| return lines.join("\r\n"); | ||
| }; | ||
| const parse = (args) => { | ||
| const ics = String(args[0] ?? ""); | ||
| const nameMatch = ics.match(/X-WR-CALNAME:(.*)/i); | ||
| const eventBlocks = ics.split(/BEGIN:VEVENT/i).slice(1); | ||
| const events = eventBlocks.map((block) => { | ||
| const endIdx = block.indexOf("END:VEVENT"); | ||
| const content = endIdx >= 0 ? block.substring(0, endIdx) : block; | ||
| const dtstart = extractProp(content, "DTSTART"); | ||
| const dtend = extractProp(content, "DTEND"); | ||
| const allDay = content.includes("VALUE=DATE"); | ||
| const attendees = []; | ||
| const attMatches = content.matchAll(/ATTENDEE[^:]*:(?:mailto:)?(.+)/gi); | ||
| for (const m of attMatches) | ||
| attendees.push(m[1].trim()); | ||
| return { | ||
| uid: extractProp(content, "UID"), summary: extractProp(content, "SUMMARY"), | ||
| description: extractProp(content, "DESCRIPTION"), location: extractProp(content, "LOCATION"), | ||
| start: dtstart ? fromIcalDate(dtstart) : undefined, end: dtend ? fromIcalDate(dtend) : undefined, | ||
| allDay, organizer: extractProp(content, "ORGANIZER")?.replace(/mailto:/i, ""), | ||
| attendees: attendees.length ? attendees : undefined, url: extractProp(content, "URL"), | ||
| }; | ||
| }); | ||
| return { name: nameMatch?.[1]?.trim() ?? null, events }; | ||
| }; | ||
| const parseFile = (args) => parse([readFileSync(String(args[0] ?? ""), "utf-8")]); | ||
| const writeFile = (args) => { writeFileSync(String(args[0] ?? ""), String(args[1] ?? "")); return true; }; | ||
| const addEvent = (args) => { | ||
| const ics = String(args[0] ?? ""); | ||
| const ev = (typeof args[1] === "object" && args[1] !== null ? args[1] : {}); | ||
| const eventIcs = createCalendar([[ev]]).split("BEGIN:VEVENT")[1].split("END:VCALENDAR")[0]; | ||
| return ics.replace(/END:VCALENDAR/i, `BEGIN:VEVENT${eventIcs}END:VCALENDAR`); | ||
| }; | ||
| const removeEvent = (args) => { | ||
| const ics = String(args[0] ?? ""); | ||
| const uid = String(args[1] ?? ""); | ||
| return ics.replace(new RegExp(`BEGIN:VEVENT[\\s\\S]*?UID:${uid.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}[\\s\\S]*?END:VEVENT\\r?\\n?`, "i"), ""); | ||
| }; | ||
| const findEvents = (args) => { | ||
| const events = (Array.isArray(args[0]) ? args[0] : []); | ||
| const start = new Date(String(args[1] ?? "")).getTime(); | ||
| const end = new Date(String(args[2] ?? "")).getTime(); | ||
| return events.filter((e) => { const t = new Date(String(e.start ?? "")).getTime(); return t >= start && t <= end; }); | ||
| }; | ||
| const today = (args) => { | ||
| const events = (Array.isArray(args[0]) ? args[0] : []); | ||
| const now = new Date(); | ||
| const dayStart = new Date(now.getFullYear(), now.getMonth(), now.getDate()).toISOString(); | ||
| const dayEnd = new Date(now.getFullYear(), now.getMonth(), now.getDate() + 1).toISOString(); | ||
| return findEvents([events, dayStart, dayEnd]); | ||
| }; | ||
| const upcoming = (args) => { | ||
| const events = (Array.isArray(args[0]) ? args[0] : []); | ||
| const days = Number(args[1] ?? 7); | ||
| const now = new Date(); | ||
| const end = new Date(now.getTime() + days * 86400000); | ||
| return findEvents([events, now.toISOString(), end.toISOString()]); | ||
| }; | ||
| const toJson = (args) => parse(args); | ||
| const formatDate = (args) => toIcalDate(String(args[0] ?? new Date().toISOString())); | ||
| const parseDate = (args) => fromIcalDate(String(args[0] ?? "")); | ||
| export const CalendarFunctions = { createEvent, createCalendar, parse, parseFile, writeFile, addEvent, removeEvent, findEvents, today, upcoming, toJson, formatDate, parseDate }; | ||
| export const CalendarFunctionMetadata = { | ||
| createEvent: { description: "Create an iCal event object", parameters: [{ name: "options", dataType: "object", description: "{summary, description, location, start, end, allDay, organizer, attendees, url, uid}", formInputType: "text", required: true }], returnType: "object", returnDescription: "Event object", example: 'calendar.createEvent {"summary": "Meeting", "start": "2024-01-15T10:00:00Z", "end": "2024-01-15T11:00:00Z"}' }, | ||
| createCalendar: { description: "Create iCal string from events", parameters: [{ name: "events", dataType: "array", description: "Event objects", formInputType: "text", required: true }, { name: "options", dataType: "object", description: "{name, timezone}", formInputType: "text", required: false }], returnType: "string", returnDescription: "iCal string", example: 'calendar.createCalendar [$event1, $event2] {"name": "My Calendar"}' }, | ||
| parse: { description: "Parse iCal string", parameters: [{ name: "icsString", dataType: "string", description: "iCal content", formInputType: "text", required: true }], returnType: "object", returnDescription: "{name, events[]}", example: 'calendar.parse $icsContent' }, | ||
| parseFile: { description: "Parse .ics file", parameters: [{ name: "filePath", dataType: "string", description: "File path", formInputType: "text", required: true }], returnType: "object", returnDescription: "{name, events[]}", example: 'calendar.parseFile "./events.ics"' }, | ||
| writeFile: { description: "Write iCal to file", parameters: [{ name: "filePath", dataType: "string", description: "File path", formInputType: "text", required: true }, { name: "icsString", dataType: "string", description: "iCal content", formInputType: "text", required: true }], returnType: "boolean", returnDescription: "true", example: 'calendar.writeFile "./events.ics" $ics' }, | ||
| addEvent: { description: "Add event to iCal string", parameters: [{ name: "icsString", dataType: "string", description: "Existing iCal", formInputType: "text", required: true }, { name: "event", dataType: "object", description: "Event object", formInputType: "text", required: true }], returnType: "string", returnDescription: "Updated iCal", example: 'calendar.addEvent $ics $event' }, | ||
| removeEvent: { description: "Remove event by UID", parameters: [{ name: "icsString", dataType: "string", description: "Existing iCal", formInputType: "text", required: true }, { name: "uid", dataType: "string", description: "Event UID", formInputType: "text", required: true }], returnType: "string", returnDescription: "Updated iCal", example: 'calendar.removeEvent $ics "abc-123"' }, | ||
| findEvents: { description: "Find events in date range", parameters: [{ name: "events", dataType: "array", description: "Event array", formInputType: "text", required: true }, { name: "start", dataType: "string", description: "Start date ISO", formInputType: "text", required: true }, { name: "end", dataType: "string", description: "End date ISO", formInputType: "text", required: true }], returnType: "array", returnDescription: "Matching events", example: 'calendar.findEvents $events "2024-01-01" "2024-01-31"' }, | ||
| today: { description: "Get today's events", parameters: [{ name: "events", dataType: "array", description: "Event array", formInputType: "text", required: true }], returnType: "array", returnDescription: "Today's events", example: 'calendar.today $events' }, | ||
| upcoming: { description: "Get upcoming events", parameters: [{ name: "events", dataType: "array", description: "Event array", formInputType: "text", required: true }, { name: "days", dataType: "number", description: "Days ahead (default 7)", formInputType: "text", required: false }], returnType: "array", returnDescription: "Upcoming events", example: 'calendar.upcoming $events 14' }, | ||
| toJson: { description: "Convert iCal to JSON", parameters: [{ name: "icsString", dataType: "string", description: "iCal content", formInputType: "text", required: true }], returnType: "object", returnDescription: "Parsed object", example: 'calendar.toJson $ics' }, | ||
| formatDate: { description: "Format ISO to iCal date", parameters: [{ name: "isoDate", dataType: "string", description: "ISO date", formInputType: "text", required: true }], returnType: "string", returnDescription: "iCal date", example: 'calendar.formatDate "2024-01-15T10:00:00Z"' }, | ||
| parseDate: { description: "Parse iCal date to ISO", parameters: [{ name: "icalDate", dataType: "string", description: "iCal date", formInputType: "text", required: true }], returnType: "string", returnDescription: "ISO date", example: 'calendar.parseDate "20240115T100000Z"' }, | ||
| }; | ||
| export const CalendarModuleMetadata = { | ||
| description: "iCal (.ics) calendar parsing, generation, event management, and date range queries", | ||
| methods: ["createEvent", "createCalendar", "parse", "parseFile", "writeFile", "addEvent", "removeEvent", "findEvents", "today", "upcoming", "toJson", "formatDate", "parseDate"], | ||
| }; | ||
| //# sourceMappingURL=calendar.js.map |
| {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"} |
| import type { ModuleAdapter } from "@wiredwp/robinpath"; | ||
| declare const CalendarModule: ModuleAdapter; | ||
| export default CalendarModule; | ||
| export { CalendarModule }; | ||
| export { CalendarFunctions, CalendarFunctionMetadata, CalendarModuleMetadata } from "./calendar.js"; | ||
| //# sourceMappingURL=index.d.ts.map |
| {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,QAAA,MAAM,cAAc,EAAE,aAAmL,CAAC;AAC1M,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"} |
| import { CalendarFunctions, CalendarFunctionMetadata, CalendarModuleMetadata } from "./calendar.js"; | ||
| const CalendarModule = { name: "calendar", functions: CalendarFunctions, functionMetadata: CalendarFunctionMetadata, moduleMetadata: CalendarModuleMetadata, global: false }; | ||
| export default CalendarModule; | ||
| export { CalendarModule }; | ||
| export { CalendarFunctions, CalendarFunctionMetadata, CalendarModuleMetadata } from "./calendar.js"; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACpG,MAAM,cAAc,GAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,wBAA+B,EAAE,cAAc,EAAE,sBAA6B,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AAC1M,eAAe,cAAc,CAAC;AAC9B,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC"} |
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
New author
Supply chain riskA new npm collaborator published a version of the package for the first time. New collaborators are usually benign additions to a project, but do indicate a change to the security surface area of a package.
No License Found
LicenseLicense information could not be found.
0
-100%3485
-90.3%2
-80%0
-100%2
100%