├── .gitattributes ├── .github ├── FUNDING.yml ├── PULL_REQUEST_TEMPLATE.md ├── ISSUE_TEMPLATE │ ├── question.md │ ├── feature_request.md │ └── bug_report.md └── workflows │ └── test.yml ├── .npmignore ├── metacalendar.d.ts ├── .prettierignore ├── .gitignore ├── metacalendar.js ├── README.md ├── eslint.config.js ├── prettier.config.js ├── tsconfig.json ├── .editorconfig ├── LICENSE └── package.json /.gitattributes: -------------------------------------------------------------------------------- 1 | * -text 2 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | patreon: tshemsedinov 2 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | .DS_Store 4 | -------------------------------------------------------------------------------- /metacalendar.d.ts: -------------------------------------------------------------------------------- 1 | export class Metacalendar {} 2 | -------------------------------------------------------------------------------- /.prettierignore: -------------------------------------------------------------------------------- 1 | package.json 2 | package-lock.json 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | *.log 3 | .DS_Store 4 | .vscode 5 | -------------------------------------------------------------------------------- /metacalendar.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = {}; 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 📅 ICS metacalendar 2 | 3 | > Internet Calendaring and Scheduling Core Object Specification 4 | -------------------------------------------------------------------------------- /eslint.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | const init = require('eslint-config-metarhia'); 4 | 5 | module.exports = [...init]; 6 | -------------------------------------------------------------------------------- /prettier.config.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | module.exports = { 4 | printWidth: 80, 5 | singleQuote: true, 6 | trailingComma: 'all', 7 | tabWidth: 2, 8 | useTabs: false, 9 | semi: true, 10 | }; 11 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "moduleResolution": "node", 5 | "strict": true, 6 | "noEmit": true, 7 | "baseUrl": ".", 8 | "preserveWatchOutput": true 9 | }, 10 | "include": ["*.d.ts"] 11 | } 12 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | end_of_line = lf 6 | charset = utf-8 7 | insert_final_newline = true 8 | trim_trailing_whitespace = true 9 | 10 | [{*.js,*.mjs,*.ts,*.json,*.yml}] 11 | indent_size = 2 12 | indent_style = space 13 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | 6 | 7 | - [ ] tests and linter show no problems (`npm t`) 8 | - [ ] tests are added/updated for bug fixes and new features 9 | - [ ] code is properly formatted (`npm run fmt`) 10 | - [ ] description of changes is added in CHANGELOG.md 11 | - [ ] update .d.ts typings 12 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/question.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Question 3 | about: Please don't open an issue to ask questions 4 | --- 5 | 6 | Issues on GitHub are intended to be related to problems and feature requests 7 | so we recommend not using this medium to ask them here grin. Thanks for 8 | understanding! 9 | 10 | If you have a question, please check out our support groups and channels for 11 | developers community: 12 | 13 | Telegram: 14 | 15 | - Channel for Metarhia community: https://t.me/metarhia 16 | - Group for Metarhia technology stack community: https://t.me/metaserverless 17 | - Group for NodeUA community: https://t.me/nodeua 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | title: '' 5 | labels: '' 6 | assignees: '' 7 | --- 8 | 9 | **Is your feature request related to a problem? Please describe.** 10 | A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] 11 | 12 | **Describe the solution you'd like** 13 | A clear and concise description of what you want to happen. 14 | 15 | **Describe alternatives you've considered** 16 | A clear and concise description of any alternative solutions or features you've considered. 17 | 18 | **Additional context** 19 | Add any other context or screenshots about the feature request here. 20 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | title: '' 5 | labels: bug 6 | assignees: '' 7 | --- 8 | 9 | **Describe the bug** 10 | A clear and concise description of what the bug is. 11 | 12 | **To Reproduce** 13 | Steps to reproduce the behavior: usage example or test. 14 | 15 | **Expected behavior** 16 | A clear and concise description of what you expected. 17 | 18 | **Screenshots** 19 | If applicable, add screenshots to help explain your problem. 20 | 21 | **Desktop (please complete the following information):** 22 | 23 | - OS: [e.g. Fedora 30 64-bit] 24 | - Node.js version [e.g. 14.15.1] 25 | 26 | **Additional context** 27 | Add any other context about the problem here. 28 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Testing CI 2 | on: pull_request 3 | jobs: 4 | build: 5 | runs-on: ${{ matrix.os }} 6 | strategy: 7 | matrix: 8 | node: 9 | - 18 10 | - 20 11 | - 21 12 | - 22 13 | - 23 14 | os: 15 | - ubuntu-latest 16 | - windows-latest 17 | - macos-latest 18 | steps: 19 | - uses: actions/checkout@v2 20 | - name: Use Node.js ${{ matrix.node }} 21 | uses: actions/setup-node@v1 22 | with: 23 | node-version: ${{ matrix.node }} 24 | - uses: actions/cache@v2 25 | with: 26 | path: ~/.npm 27 | key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} 28 | restore-keys: | 29 | ${{ runner.os }}-node- 30 | - run: npm ci 31 | - run: npm test 32 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2025 Metarhia contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "metacalendar", 3 | "version": "0.0.0", 4 | "author": "Timur Shemsedinov ", 5 | "description": "ICS: Internet Calendaring and Scheduling Core Object Specification", 6 | "license": "MIT", 7 | "keywords": [ 8 | "ical", 9 | "ics", 10 | "ifb", 11 | "icalendar", 12 | "calendar", 13 | "metarhia" 14 | ], 15 | "repository": { 16 | "type": "git", 17 | "url": "git+https://github.com/metarhia/metacalendar.git" 18 | }, 19 | "bugs": { 20 | "url": "https://github.com/metarhia/metacalendar/issues", 21 | "email": "timur.shemsedinov@gmail.com" 22 | }, 23 | "homepage": "https://metarhia.com", 24 | "funding": { 25 | "type": "patreon", 26 | "url": "https://www.patreon.com/tshemsedinov" 27 | }, 28 | "main": "metacalendar.js", 29 | "types": "metacalendar.ts", 30 | "files": [ 31 | "metacalendar.d.ts" 32 | ], 33 | "engines": { 34 | "node": "18 || 20 || 21 || 22 || 23" 35 | }, 36 | "readmeFilename": "README.md", 37 | "scripts": { 38 | "test": "npm run lint && npm run types && node --test", 39 | "types": "tsc -p tsconfig.json", 40 | "lint": "eslint . && prettier -c \"**/*.js\" \"**/*.json\" \"**/*.md\"", 41 | "fix": "prettier --write \"**/*.js\" \"**/*.json\" \"**/*.md\"" 42 | }, 43 | "devDependencies": { 44 | "eslint": "^9.17.0", 45 | "eslint-config-metarhia": "^9.1.1", 46 | "prettier": "^3.4.2", 47 | "typescript": "^5.7.2" 48 | } 49 | } 50 | --------------------------------------------------------------------------------