{"_id":"@denzorn/ical-toolkit","_rev":"2-88679762808504fd0492e5036b265340","name":"@denzorn/ical-toolkit","dist-tags":{"latest":"1.0.12"},"versions":{"1.0.10":{"name":"@denzorn/ical-toolkit","version":"1.0.10","description":"ICal generator/updater/parser with Timezone/DST, Alams, Organizers, Events, etc. support.","main":"lib/main.js","scripts":{"test":"mocha tests"},"repository":{"type":"git","url":"git+https://github.com/denzorn/node-ical-toolkit.git"},"keywords":["iCal","generator","parser","updater","Timezone","DST","Alarms"],"author":{"name":"denzorn"},"license":"ISC","bugs":{"url":"https://github.com/denzorn/node-ical-toolkit/issues"},"homepage":"https://github.com/denzorn/node-ical-toolkit","devDependencies":{"fs-readdir-recursive":"^0.1.0","mocha":"^2.2.0"},"dependencies":{"ical2json":"^0.2.0"},"gitHead":"6bc86254aefea56854f420f7ee0a704595ec4e4a","_id":"@denzorn/ical-toolkit@1.0.10","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-uil87Ablq4Tx2zLCxgyZWKUjspBxwOuZnOLUnk0erz2HnGWEKRc8AgQOkPoNA7mlwy+RvIA4HAgNXYPo42GXyg==","shasum":"cb5365f72e96b27b0c933689f8b3a57db82e1faf","tarball":"https://registry.npmjs.org/@denzorn/ical-toolkit/-/ical-toolkit-1.0.10.tgz","fileCount":870,"unpackedSize":387133,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD5bN91u4YT/7SAP2F42eyKqJjsiNCVmm7ipcmj/99tpwIgfd9lr+0I/QpBEwIVjr3XT/Eo4dyh9hmKlgTOXeXDdtM="}]},"_npmUser":{"name":"denzorn","email":"den_zorn@mail.ru"},"directories":{},"maintainers":[{"name":"denzorn","email":"den_zorn@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ical-toolkit_1.0.10_1712217796474_0.11948819320636983"},"_hasShrinkwrap":false},"1.0.11":{"name":"@denzorn/ical-toolkit","version":"1.0.11","description":"ICal generator/updater/parser with Timezone/DST, Alams, Organizers, Events, etc. support.","main":"lib/main.js","scripts":{"test":"mocha tests"},"repository":{"type":"git","url":"git+https://github.com/denzorn/node-ical-toolkit.git"},"keywords":["iCal","generator","parser","updater","Timezone","DST","Alarms"],"author":{"name":"denzorn"},"license":"ISC","bugs":{"url":"https://github.com/denzorn/node-ical-toolkit/issues"},"homepage":"https://github.com/denzorn/node-ical-toolkit","devDependencies":{"fs-readdir-recursive":"^0.1.0","mocha":"^2.2.0"},"dependencies":{"ical2json":"^0.2.0"},"gitHead":"dae4f8608003dd2753372196ecac6adb1ba86d56","_id":"@denzorn/ical-toolkit@1.0.11","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-0cMhVGGSrn3iHii8+B5iOG3AtXJjRRhKsZ/2LwLWcsBlcnEqXRRU2bkyZn4VgEZ1/aSVyn0ZWhM3hm61O66IOA==","shasum":"4052f4a959a3560dbce0760219c025d8ada67f5a","tarball":"https://registry.npmjs.org/@denzorn/ical-toolkit/-/ical-toolkit-1.0.11.tgz","fileCount":870,"unpackedSize":387181,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDxRANIBbfj8qX1GDky4rbke+nI8MoqUb7H2xG8r9gzsQIgdF46kqHPF8ToHnJB2mjys4HuKim7nnPrJj0TNx1nZeI="}]},"_npmUser":{"name":"denzorn","email":"den_zorn@mail.ru"},"directories":{},"maintainers":[{"name":"denzorn","email":"den_zorn@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ical-toolkit_1.0.11_1712218200750_0.9387531852978548"},"_hasShrinkwrap":false},"1.0.12":{"name":"@denzorn/ical-toolkit","version":"1.0.12","description":"ICal generator/updater/parser with Timezone/DST, Alams, Organizers, Events, etc. support.","main":"lib/main.js","scripts":{"test":"mocha tests"},"repository":{"type":"git","url":"git+https://github.com/denzorn/node-ical-toolkit.git"},"keywords":["iCal","generator","parser","updater","Timezone","DST","Alarms"],"author":{"name":"denzorn"},"license":"ISC","bugs":{"url":"https://github.com/denzorn/node-ical-toolkit/issues"},"homepage":"https://github.com/denzorn/node-ical-toolkit","devDependencies":{"fs-readdir-recursive":"^0.1.0","mocha":"^2.2.0"},"dependencies":{"ical2json":"^0.2.0"},"gitHead":"5daae19b2738d04053c7077f35d0fd55f8360ea6","_id":"@denzorn/ical-toolkit@1.0.12","_nodeVersion":"16.15.0","_npmVersion":"8.5.5","dist":{"integrity":"sha512-sOTX7XAXWd5gIUWfuATGilIvawuz5jZVy0G1MJHviIwzMM1LR94myyG9v2eCBj6IUW2OY2L878K5rraEhCGD2A==","shasum":"3c2d09e21c9b5b16ce888b0df140738bde19c176","tarball":"https://registry.npmjs.org/@denzorn/ical-toolkit/-/ical-toolkit-1.0.12.tgz","fileCount":870,"unpackedSize":387437,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCICnDCdxuUNm+uNgPs70w9gko3/RRMgELNJW+Kz3Ef+fgAiBSfpsYRcTf9PrsIjOhMUF2DMtEb2Fk+Pibo8loztHWyg=="}]},"_npmUser":{"name":"denzorn","email":"den_zorn@mail.ru"},"directories":{},"maintainers":[{"name":"denzorn","email":"den_zorn@mail.ru"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ical-toolkit_1.0.12_1712224431430_0.10643567470042004"},"_hasShrinkwrap":false}},"time":{"created":"2024-04-04T08:03:16.385Z","1.0.10":"2024-04-04T08:03:16.684Z","modified":"2024-04-04T09:53:51.780Z","1.0.11":"2024-04-04T08:10:00.942Z","1.0.12":"2024-04-04T09:53:51.619Z"},"maintainers":[{"name":"denzorn","email":"den_zorn@mail.ru"}],"description":"ICal generator/updater/parser with Timezone/DST, Alams, Organizers, Events, etc. support.","homepage":"https://github.com/denzorn/node-ical-toolkit","keywords":["iCal","generator","parser","updater","Timezone","DST","Alarms"],"repository":{"type":"git","url":"git+https://github.com/denzorn/node-ical-toolkit.git"},"author":{"name":"denzorn"},"bugs":{"url":"https://github.com/denzorn/node-ical-toolkit/issues"},"license":"ISC","readme":"#ICal Toolkit NodeJS\r\nICal generator/updater/parser with Timezone/DST, Alams, Organizers, Events, etc. support.\r\n\r\n100% JavaScript implementation.\r\n\r\n[![NPM](https://nodei.co/npm/ical-toolkit.png?downloads=true)](https://nodei.co/npm/@denzorn/ical-toolkit/)\r\n\r\nIcal **generator** supports the following:\r\n* VTIMEZONE - TIMEZONE/DST info. We have inbuilt timezone database, you just specify TimeZone ID and rest module will take care.\r\n* Alarms\r\n* Attendees info and state per event.\r\n* Organizers\r\n* Multiple events\r\n* Full day and repeating events\r\n* URL property\r\n* Simple intuitive interface.\r\n \r\n \r\n##Install\r\n```bash\r\n> npm install @denzorn/ical-toolkit\r\n```\r\n\r\n##Builder\r\nQuick documentation, but covers all and will get you going quick!\r\n\r\n####Values to use:\r\nHere are the constants you can use:\r\n\r\n#####Attendee Role\r\n```\r\n\"REQ-PARTICIPANT\"; Indicates a participant whose\r\n                 ; participation is required\r\n                 \r\n\"OPT-PARTICIPANT\" ; Indicates a participant whose\r\n                  ; participation is optional\r\n                  \r\n\"NON-PARTICIPANT\" ; Indicates a participant who is\r\n                  ; copied for information purposes only\r\n```\r\n\r\n#####Attendee Status\r\n```\r\n\"NEEDS-ACTION\"        ; Event needs action\r\n\"ACCEPTED\"            ; Event accepted\r\n\"DECLINED\"            ; Event declined\r\n\"TENTATIVE\"           ; Event tentatively accepted\r\n\"DELEGATED\"           ; Event delegated\r\n```\r\n\r\n#####Methods\r\n```\r\n      'PUBLISH',\r\n      'REQUEST',\r\n      'REPLY',\r\n      'ADD',\r\n      'CANCEL',\r\n      'REFRESH',\r\n      'COUNTER',\r\n      'DECLINECOUNTER'\r\n    \r\n```\r\n\r\n#####Repeating Freq for event\r\n```\r\n      'SECONDLY',\r\n      'MINUTELY',\r\n      'HOURLY',\r\n      'DAILY',\r\n      'WEEKLY',\r\n      'MONTHLY',\r\n      'YEARLY'\r\n```\r\n\r\n#####Statuses for event\r\n```\r\n      'CONFIRMED',\r\n      'TENTATIVE',\r\n      'CANCELLED'\r\n```\r\n\r\n\r\n###Demo code, shows all.\r\n```javascript\r\nvar icalToolkit = require('ical-toolkit');\r\n\r\n//Create a builder\r\nvar builder = icalToolkit.createIcsFileBuilder();\r\n\r\n/*\r\n * Settings (All Default values shown below. It is optional to specify)\r\n * */\r\nbuilder.spacers = true; //Add space in ICS file, better human reading. Default: true\r\nbuilder.NEWLINE_CHAR = '\\r\\n'; //Newline char to use.\r\nbuilder.throwError = false; //If true throws errors, else returns error when you do .toString() to generate the file contents.\r\nbuilder.ignoreTZIDMismatch = true; //If TZID is invalid, ignore or not to ignore!\r\n\r\n\r\n/**\r\n * Build ICS\r\n * */\r\n\r\n//Name of calander 'X-WR-CALNAME' tag.\r\nbuilder.calname = 'Yo Cal';\r\n\r\n//Cal timezone 'X-WR-TIMEZONE' tag. Optional. We recommend it to be same as tzid.\r\nbuilder.timezone = 'america/new_york';\r\n\r\n//Time Zone ID. This will automatically add VTIMEZONE info.\r\nbuilder.tzid = 'america/new_york';\r\n\r\n//Method\r\nbuilder.method = 'REQUEST';\r\n\r\n//Add events\r\nbuilder.events.push({\r\n\r\n  //Event start time, Required: type Date()\r\n  start: new Date(),\r\n  \r\n  //Event end time, Required: type Date()\r\n  end: new Date(),\r\n  \r\n  //transp. Will add TRANSP:OPAQUE to block calendar.\r\n  transp: 'OPAQUE',\r\n  \r\n  //Event summary, Required: type String\r\n  summary: 'Test Event',\r\n\r\n  //All Optionals Below\r\n  \r\n  //Alarms, array in minutes\r\n  alarms: [15, 10, 5], \r\n  \r\n  //Optional: If you need to add some of your own tags\r\n  additionalTags: {\r\n    'SOMETAG': 'SOME VALUE'\r\n  },\r\n  \r\n  //Event identifier, Optional, default auto generated\r\n  uid: null, \r\n  \r\n  //Optional, The sequence number in update, Default: 0\r\n  sequence: null,\r\n  \r\n  //Optional if repeating event\r\n  repeating: {\r\n    freq: 'DAILY',\r\n    count: 10,\r\n    interval: 10,\r\n    until: new Date(),\r\n    byday: 'mo,tu,we,th,fr'\r\n  },\r\n  \r\n  //Optional if all day event\r\n  allDay: true,\r\n  \r\n  //Creation timestamp, Optional.\r\n  stamp: new Date(),\r\n  \r\n  //Optional, floating time.\r\n  floating: false,\r\n  \r\n  //Location of event, optional.\r\n  location: 'Home',\r\n  \r\n  //Optional description of event.\r\n  description: 'Testing it!',\r\n  \r\n  //Optional Organizer info\r\n  organizer: {\r\n    name: 'Kushal Likhi',\r\n    email: 'test@mail',\r\n    sentBy: 'person_acting_on_behalf_of_organizer@email.com' //OPTIONAL email address of the person who is acting on behalf of organizer.\r\n  },\r\n  \r\n  //Optional attendees info\r\n  attendees: [\r\n    {\r\n      name: 'A1', //Required\r\n      email: 'a1@email.com', //Required\r\n      status: 'TENTATIVE', //Optional\r\n      role: 'REQ-PARTICIPANT', //Optional\r\n      rsvp: true //Optional, adds 'RSVP=TRUE' , tells the application that organiser needs a RSVP response.\r\n    },\r\n    {\r\n      name: 'A2',\r\n      email: 'a2@email.com'\r\n    }\r\n  ]\r\n  \r\n  //What to do on addition\r\n  method: 'PUBLISH',\r\n  \r\n  //Status of event\r\n  status: 'CONFIRMED',\r\n  \r\n  //Url for event on core application, Optional.\r\n  url: 'http://google.com'\r\n});\r\n\r\n//Optional tags on VCALENDAR level if you intent to add. Optional field\r\nbuilder.additionalTags = {\r\n  'SOMETAG': 'SOME VALUE'\r\n};\r\n\r\n\r\n//Try to build\r\nvar icsFileContent = builder.toString();\r\n\r\n//Check if there was an error (Only required if yu configured to return error, else error will be thrown.)\r\nif (icsFileContent instanceof Error) {\r\n  console.log('Returned Error, you can also configure to throw errors!');\r\n  //handle error\r\n}\r\n\r\n//Here isteh ics file content.\r\nconsole.log(icsFileContent);\r\n\r\n```\r\n####Output####\r\n```\r\nBEGIN:VCALENDAR\r\nVERSION:2.0\r\nCALSCALE:GREGORIAN\r\nX-WR-CALNAME:Yo Cal\r\nMETHOD:REQUEST\r\nPRODID:node-ical-toolkit\r\nX-WR-TIMEZONE:asia/kalcutta\r\n\r\nBEGIN:VTIMEZONE\r\nTZID:America/New_York\r\nX-LIC-LOCATION:America/New_York\r\n\r\nBEGIN:DAYLIGHT\r\nTZOFFSETFROM:-0500\r\nTZOFFSETTO:-0400\r\nTZNAME:EDT\r\nDTSTART:19700308T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=2SU\r\nEND:DAYLIGHT\r\n\r\n\r\nBEGIN:STANDARD\r\nTZOFFSETFROM:-0400\r\nTZOFFSETTO:-0500\r\nTZNAME:EST\r\nDTSTART:19701101T020000\r\nRRULE:FREQ=YEARLY;BYMONTH=11;BYDAY=1SU\r\nEND:STANDARD\r\n\r\nEND:VTIMEZONE\r\n\r\n\r\nBEGIN:VEVENT\r\nUID:f0e532a3\r\nDTSTAMP:20150707T070727Z\r\nTRANSP:OPAQUE\r\nDTSTART;VALUE=DATE:20150707\r\nDTEND;VALUE=DATE:20150707\r\nSUMMARY:Test Event\r\nSEQUENCE:0\r\nLOCATION:Home\r\nDESCRIPTION:Testing it!\r\nURL;VALUE=URI:http://google.com\r\nSTATUS:CONFIRMED\r\nORGANIZER;SENT-BY=\"MAILTO:hello@test.com\":CN=\"Kushal Likhi\":mailto:test@mail\r\nATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=TENTATIVE;RSVP=TRUE;CN=A1:MAILTO:a1@email.com\r\nATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;CN=A2:MAILTO:a2@email.com\r\n\r\nBEGIN:VALARM\r\nTRIGGER:-PT15M\r\nACTION:DISPLAY\r\nEND:VALARM\r\n\r\n\r\nBEGIN:VALARM\r\nTRIGGER:-PT10M\r\nACTION:DISPLAY\r\nEND:VALARM\r\n\r\n\r\nBEGIN:VALARM\r\nTRIGGER:-PT5M\r\nACTION:DISPLAY\r\nEND:VALARM\r\n\r\nRRULE:FREQ=DAILY;COUNT=10;INTERVAL=10;UNTIL=20150707T070727Z\r\nSOMETAG:SOME VALUE\r\nEND:VEVENT\r\n\r\nSOMETAG:SOME VALUE\r\nEND:VCALENDAR\r\n```\r\n\r\n##Parser##\r\nParse the ics files to JSON structures\r\n```javascript\r\n    it('should parse the content sync', function (done) {\r\n      var json = icalToolkit.parseToJSON(icsContent);\r\n      assert(json);\r\n      assert(!(json instanceof Error));\r\n      assert(json.VCALENDAR);\r\n      done();\r\n    });\r\n\r\n    it('should parse the content async', function (done) {\r\n      icalToolkit.parseToJSON(icsContent, function (err, json) {\r\n        if (err) throw err;\r\n        assert(json);\r\n        assert(!(json instanceof Error));\r\n        assert(json.VCALENDAR);\r\n        done();\r\n      });\r\n    });\r\n\r\n    it('should parse the file', function (done) {\r\n      icalToolkit.parseFileToJSON(sampleFilePAth, function (err, json) {\r\n        if (err) throw err;\r\n        assert(json);\r\n        assert(!(json instanceof Error));\r\n        assert(json.VCALENDAR);\r\n        done();\r\n      });\r\n    });\r\n \r\n    it('should parse the file sync', function (done) {\r\n      var json = icalToolkit.parseFileToJSONSync(sampleFilePAth);\r\n      assert(json);\r\n      assert(!(json instanceof Error));\r\n      assert(json.VCALENDAR);\r\n      done();\r\n    });        \r\n    \r\n```\r\n","readmeFilename":"README.md"}