├── .editorconfig ├── .eslintrc.js ├── .eslintrc.prepublish.js ├── .gitignore ├── .npmignore ├── .prettierrc.js ├── .vscode ├── extensions.json └── settings.json ├── CODE_OF_CONDUCT.md ├── LICENSE.md ├── README.md ├── README_TEMPLATE.md ├── coverage ├── clover.xml ├── coverage-final.json ├── lcov-report │ ├── NotionMd.node.ts.html │ ├── base.css │ ├── block-navigation.js │ ├── favicon.png │ ├── index.html │ ├── prettify.css │ ├── prettify.js │ ├── sort-arrow-sprite.png │ └── sorter.js └── lcov.info ├── gulpfile.js ├── index.js ├── jest.config.ts ├── nodes └── NotionMd │ ├── NotionMd.node.test.ts │ ├── NotionMd.node.ts │ └── free-markdown.png ├── package-lock.json ├── package.json ├── tsconfig.json ├── tsconfig.tsbuildinfo └── tslint.json /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | indent_style = tab 6 | indent_size = 2 7 | end_of_line = lf 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [package.json] 12 | indent_style = space 13 | indent_size = 2 14 | 15 | [*.md] 16 | trim_trailing_whitespace = false 17 | 18 | [*.yml] 19 | indent_style = space 20 | indent_size = 2 21 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {import('@types/eslint').ESLint.ConfigData} 3 | */ 4 | module.exports = { 5 | root: true, 6 | 7 | env: { 8 | browser: true, 9 | es6: true, 10 | node: true, 11 | }, 12 | 13 | parser: '@typescript-eslint/parser', 14 | 15 | parserOptions: { 16 | project: ['./tsconfig.json'], 17 | sourceType: 'module', 18 | extraFileExtensions: ['.json'], 19 | }, 20 | 21 | ignorePatterns: ['.eslintrc.js', '**/*.js', '**/node_modules/**', '**/dist/**'], 22 | 23 | overrides: [ 24 | { 25 | files: ['package.json'], 26 | plugins: ['eslint-plugin-n8n-nodes-base'], 27 | extends: ['plugin:n8n-nodes-base/community'], 28 | rules: { 29 | 'n8n-nodes-base/community-package-json-name-still-default': 'off', 30 | }, 31 | }, 32 | // { 33 | // files: ['./credentials/**/*.ts'], 34 | // plugins: ['eslint-plugin-n8n-nodes-base'], 35 | // extends: ['plugin:n8n-nodes-base/credentials'], 36 | // rules: { 37 | // 'n8n-nodes-base/cred-class-field-documentation-url-missing': 'off', 38 | // 'n8n-nodes-base/cred-class-field-documentation-url-miscased': 'off', 39 | // }, 40 | // }, 41 | { 42 | files: ['./nodes/**/*.ts'], 43 | plugins: ['eslint-plugin-n8n-nodes-base'], 44 | extends: ['plugin:n8n-nodes-base/nodes'], 45 | rules: { 46 | 'n8n-nodes-base/node-execute-block-missing-continue-on-fail': 'off', 47 | 'n8n-nodes-base/node-resource-description-filename-against-convention': 'off', 48 | 'n8n-nodes-base/node-param-fixed-collection-type-unsorted-items': 'off', 49 | }, 50 | }, 51 | ], 52 | }; 53 | -------------------------------------------------------------------------------- /.eslintrc.prepublish.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @type {import('@types/eslint').ESLint.ConfigData} 3 | */ 4 | module.exports = { 5 | extends: "./.eslintrc.js", 6 | 7 | overrides: [ 8 | { 9 | files: ['package.json'], 10 | plugins: ['eslint-plugin-n8n-nodes-base'], 11 | rules: { 12 | 'n8n-nodes-base/community-package-json-name-still-default': 'error', 13 | }, 14 | }, 15 | ], 16 | }; 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .DS_Store 3 | .tmp 4 | tmp 5 | dist 6 | npm-debug.log* 7 | yarn.lock 8 | .vscode/launch.json 9 | -------------------------------------------------------------------------------- /.npmignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.tsbuildinfo 3 | -------------------------------------------------------------------------------- /.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | /** 3 | * https://prettier.io/docs/en/options.html#semicolons 4 | */ 5 | semi: true, 6 | 7 | /** 8 | * https://prettier.io/docs/en/options.html#trailing-commas 9 | */ 10 | trailingComma: 'all', 11 | 12 | /** 13 | * https://prettier.io/docs/en/options.html#bracket-spacing 14 | */ 15 | bracketSpacing: true, 16 | 17 | /** 18 | * https://prettier.io/docs/en/options.html#tabs 19 | */ 20 | useTabs: true, 21 | 22 | /** 23 | * https://prettier.io/docs/en/options.html#tab-width 24 | */ 25 | tabWidth: 2, 26 | 27 | /** 28 | * https://prettier.io/docs/en/options.html#arrow-function-parentheses 29 | */ 30 | arrowParens: 'always', 31 | 32 | /** 33 | * https://prettier.io/docs/en/options.html#quotes 34 | */ 35 | singleQuote: true, 36 | 37 | /** 38 | * https://prettier.io/docs/en/options.html#quote-props 39 | */ 40 | quoteProps: 'as-needed', 41 | 42 | /** 43 | * https://prettier.io/docs/en/options.html#end-of-line 44 | */ 45 | endOfLine: 'lf', 46 | 47 | /** 48 | * https://prettier.io/docs/en/options.html#print-width 49 | */ 50 | printWidth: 100, 51 | }; 52 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "dbaeumer.vscode-eslint", 4 | "EditorConfig.EditorConfig", 5 | "esbenp.prettier-vscode", 6 | ] 7 | } 8 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules/typescript/lib" 3 | } 4 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, sex characteristics, gender identity and expression, 9 | level of experience, education, socio-economic status, nationality, personal 10 | appearance, race, religion, or sexual identity and orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | * Using welcoming and inclusive language 18 | * Being respectful of differing viewpoints and experiences 19 | * Gracefully accepting constructive criticism 20 | * Focusing on what is best for the community 21 | * Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | * The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | * Trolling, insulting/derogatory comments, and personal or political attacks 28 | * Public or private harassment 29 | * Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | * Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team at jan@n8n.io. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html 72 | 73 | [homepage]: https://www.contributor-covenant.org 74 | 75 | For answers to common questions about this code of conduct, see 76 | https://www.contributor-covenant.org/faq 77 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright 2022 n8n 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of 4 | this software and associated documentation files (the "Software"), to deal in 5 | the Software without restriction, including without limitation the rights to 6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 7 | of the Software, and to permit persons to whom the Software is furnished to do 8 | so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in all 11 | copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 19 | SOFTWARE. 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ![Banner image](https://user-images.githubusercontent.com/10284570/173569848-c624317f-42b1-45a6-ab09-f0ea3c247648.png) 2 | 3 | # n8n-nodes-starter 4 | 5 | This repo contains example nodes to help you get started building your own custom integrations for [n8n](n8n.io). It includes the node linter and other dependencies. 6 | 7 | To make your custom node available to the community, you must create it as an npm package, and [submit it to the npm registry](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry). 8 | 9 | ## Prerequisites 10 | 11 | You need the following installed on your development machine: 12 | 13 | * [git](https://git-scm.com/downloads) 14 | * Node.js and npm. Minimum version Node 16. You can find instructions on how to install both using nvm (Node Version Manager) for Linux, Mac, and WSL [here](https://github.com/nvm-sh/nvm). For Windows users, refer to Microsoft's guide to [Install NodeJS on Windows](https://docs.microsoft.com/en-us/windows/dev-environment/javascript/nodejs-on-windows). 15 | * Install n8n with: 16 | ``` 17 | npm install n8n -g 18 | ``` 19 | * Recommended: follow n8n's guide to [set up your development environment](https://docs.n8n.io/integrations/creating-nodes/build/node-development-environment/). 20 | 21 | 22 | ## Using this starter 23 | 24 | These are the basic steps for working with the starter. For detailed guidance on creating and publishing nodes, refer to the [documentation](https://docs.n8n.io/integrations/creating-nodes/). 25 | 26 | 1. [Generate a new repository](https://github.com/n8n-io/n8n-nodes-starter/generate) from this template repository. 27 | 2. Clone your new repo: 28 | ``` 29 | git clone https://github.com//.git 30 | ``` 31 | 3. Run `npm i` to install dependencies. 32 | 4. Open the project in your editor. 33 | 5. Browse the examples in `/nodes` and `/credentials`. Modify the examples, or replace them with your own nodes. 34 | 6. Update the `package.json` to match your details. 35 | 7. Run `npm run lint` to check for errors or `npm run lintfix` to automatically fix errors when possible. 36 | 8. Test your node locally. Refer to [Run your node locally](https://docs.n8n.io/integrations/creating-nodes/test/run-node-locally/) for guidance. 37 | 9. Replace this README with documentation for your node. Use the [README_TEMPLATE](README_TEMPLATE.md) to get started. 38 | 10. Update the LICENSE file to use your details. 39 | 11. [Publish](https://docs.npmjs.com/packages-and-modules/contributing-packages-to-the-registry) your package to npm. 40 | 41 | ## More information 42 | 43 | Refer to our [documentation on creating nodes](https://docs.n8n.io/integrations/creating-nodes/) for detailed information on building your own nodes. 44 | 45 | ## License 46 | 47 | [MIT](https://github.com/n8n-io/n8n-nodes-starter/blob/master/LICENSE.md) 48 | -------------------------------------------------------------------------------- /README_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | # n8n-nodes-_node-name_ 2 | 3 | This is an n8n community node. It lets you use _app/service name_ in your n8n workflows. 4 | 5 | _App/service name_ is _one or two sentences describing the service this node integrates with_. 6 | 7 | [n8n](https://n8n.io/) is a [fair-code licensed](https://docs.n8n.io/reference/license/) workflow automation platform. 8 | 9 | [Installation](#installation) 10 | [Operations](#operations) 11 | [Credentials](#credentials) 12 | [Compatibility](#compatibility) 13 | [Usage](#usage) 14 | [Resources](#resources) 15 | [Version history](#version-history) 16 | 17 | ## Installation 18 | 19 | Follow the [installation guide](https://docs.n8n.io/integrations/community-nodes/installation/) in the n8n community nodes documentation. 20 | 21 | ## Operations 22 | 23 | _List the operations supported by your node._ 24 | 25 | ## Credentials 26 | 27 | _If users need to authenticate with the app/service, provide details here. You should include prerequisites (such as signing up with the service), available authentication methods, and how to set them up._ 28 | 29 | ## Compatibility 30 | 31 | _State the minimum n8n version, as well as which versions you test against. You can also include any known version incompatibility issues._ 32 | 33 | ## Usage 34 | 35 | _This is an optional section. Use it to help users with any difficult or confusing aspects of the node._ 36 | 37 | _By the time users are looking for community nodes, they probably already know n8n basics. But if you expect new users, you can link to the [Try it out](https://docs.n8n.io/try-it-out/) documentation to help them get started._ 38 | 39 | ## Resources 40 | 41 | * [n8n community nodes documentation](https://docs.n8n.io/integrations/community-nodes/) 42 | * _Link to app/service documentation._ 43 | 44 | ## Version history 45 | 46 | _This is another optional section. If your node has multiple versions, include a short description of available versions and what changed, as well as any compatibility impact._ 47 | 48 | 49 | -------------------------------------------------------------------------------- /coverage/clover.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | -------------------------------------------------------------------------------- /coverage/coverage-final.json: -------------------------------------------------------------------------------- 1 | {"/workspaces/n8n-nodes-notionmd/nodes/NotionMd/NotionMd.node.ts": {"path":"/workspaces/n8n-nodes-notionmd/nodes/NotionMd/NotionMd.node.ts","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":45}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":8}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":20}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":11}},"4":{"start":{"line":5,"column":0},"end":{"line":5,"column":22}},"5":{"start":{"line":6,"column":0},"end":{"line":6,"column":20}},"6":{"start":{"line":7,"column":0},"end":{"line":7,"column":22}},"7":{"start":{"line":8,"column":0},"end":{"line":8,"column":0}},"8":{"start":{"line":9,"column":0},"end":{"line":9,"column":52}},"9":{"start":{"line":10,"column":0},"end":{"line":10,"column":0}},"10":{"start":{"line":11,"column":0},"end":{"line":11,"column":44}},"11":{"start":{"line":12,"column":0},"end":{"line":12,"column":38}},"12":{"start":{"line":13,"column":0},"end":{"line":13,"column":27}},"13":{"start":{"line":14,"column":0},"end":{"line":14,"column":19}},"14":{"start":{"line":15,"column":0},"end":{"line":15,"column":23}},"15":{"start":{"line":16,"column":0},"end":{"line":16,"column":13}},"16":{"start":{"line":17,"column":0},"end":{"line":17,"column":62}},"17":{"start":{"line":18,"column":0},"end":{"line":18,"column":13}},"18":{"start":{"line":19,"column":0},"end":{"line":19,"column":21}},"19":{"start":{"line":20,"column":0},"end":{"line":20,"column":4}},"20":{"start":{"line":21,"column":0},"end":{"line":21,"column":19}},"21":{"start":{"line":22,"column":0},"end":{"line":22,"column":20}},"22":{"start":{"line":23,"column":0},"end":{"line":23,"column":15}},"23":{"start":{"line":24,"column":0},"end":{"line":24,"column":4}},"24":{"start":{"line":25,"column":0},"end":{"line":25,"column":29}},"25":{"start":{"line":26,"column":0},"end":{"line":26,"column":22}},"26":{"start":{"line":27,"column":0},"end":{"line":27,"column":20}},"27":{"start":{"line":28,"column":0},"end":{"line":28,"column":27}},"28":{"start":{"line":29,"column":0},"end":{"line":29,"column":14}},"29":{"start":{"line":30,"column":0},"end":{"line":30,"column":6}},"30":{"start":{"line":31,"column":0},"end":{"line":31,"column":33}},"31":{"start":{"line":32,"column":0},"end":{"line":32,"column":32}},"32":{"start":{"line":33,"column":0},"end":{"line":33,"column":7}},"33":{"start":{"line":34,"column":0},"end":{"line":34,"column":6}},"34":{"start":{"line":35,"column":0},"end":{"line":35,"column":33}},"35":{"start":{"line":36,"column":0},"end":{"line":36,"column":32}},"36":{"start":{"line":37,"column":0},"end":{"line":37,"column":7}},"37":{"start":{"line":38,"column":0},"end":{"line":38,"column":6}},"38":{"start":{"line":39,"column":0},"end":{"line":39,"column":32}},"39":{"start":{"line":40,"column":0},"end":{"line":40,"column":87}},"40":{"start":{"line":41,"column":0},"end":{"line":41,"column":5}},"41":{"start":{"line":42,"column":0},"end":{"line":42,"column":4}},"42":{"start":{"line":43,"column":0},"end":{"line":43,"column":25}},"43":{"start":{"line":44,"column":0},"end":{"line":44,"column":18}},"44":{"start":{"line":45,"column":0},"end":{"line":45,"column":19}},"45":{"start":{"line":46,"column":0},"end":{"line":46,"column":16}},"46":{"start":{"line":47,"column":0},"end":{"line":47,"column":61}},"47":{"start":{"line":48,"column":0},"end":{"line":48,"column":47}},"48":{"start":{"line":49,"column":0},"end":{"line":49,"column":5}},"49":{"start":{"line":50,"column":0},"end":{"line":50,"column":4}},"50":{"start":{"line":51,"column":0},"end":{"line":51,"column":30}},"51":{"start":{"line":52,"column":0},"end":{"line":52,"column":22}},"52":{"start":{"line":53,"column":0},"end":{"line":53,"column":19}},"53":{"start":{"line":54,"column":0},"end":{"line":54,"column":22}},"54":{"start":{"line":55,"column":0},"end":{"line":55,"column":52}},"55":{"start":{"line":56,"column":0},"end":{"line":56,"column":5}},"56":{"start":{"line":57,"column":0},"end":{"line":57,"column":4}},"57":{"start":{"line":58,"column":0},"end":{"line":58,"column":3}},"58":{"start":{"line":59,"column":0},"end":{"line":59,"column":0}},"59":{"start":{"line":60,"column":0},"end":{"line":60,"column":74}},"60":{"start":{"line":61,"column":0},"end":{"line":61,"column":36}},"61":{"start":{"line":62,"column":0},"end":{"line":62,"column":31}},"62":{"start":{"line":63,"column":0},"end":{"line":63,"column":24}},"63":{"start":{"line":64,"column":0},"end":{"line":64,"column":20}},"64":{"start":{"line":65,"column":0},"end":{"line":65,"column":24}},"65":{"start":{"line":66,"column":0},"end":{"line":66,"column":0}},"66":{"start":{"line":67,"column":0},"end":{"line":67,"column":66}},"67":{"start":{"line":68,"column":0},"end":{"line":68,"column":8}},"68":{"start":{"line":69,"column":0},"end":{"line":69,"column":76}},"69":{"start":{"line":70,"column":0},"end":{"line":70,"column":68}},"70":{"start":{"line":71,"column":0},"end":{"line":71,"column":76}},"71":{"start":{"line":72,"column":0},"end":{"line":72,"column":28}},"72":{"start":{"line":73,"column":0},"end":{"line":73,"column":0}},"73":{"start":{"line":74,"column":0},"end":{"line":74,"column":43}},"74":{"start":{"line":75,"column":0},"end":{"line":75,"column":69}},"75":{"start":{"line":76,"column":0},"end":{"line":76,"column":50}},"76":{"start":{"line":77,"column":0},"end":{"line":77,"column":67}},"77":{"start":{"line":78,"column":0},"end":{"line":78,"column":67}},"78":{"start":{"line":79,"column":0},"end":{"line":79,"column":12}},"79":{"start":{"line":80,"column":0},"end":{"line":80,"column":96}},"80":{"start":{"line":81,"column":0},"end":{"line":81,"column":5}},"81":{"start":{"line":82,"column":0},"end":{"line":82,"column":20}},"82":{"start":{"line":83,"column":0},"end":{"line":83,"column":32}},"83":{"start":{"line":84,"column":0},"end":{"line":84,"column":94}},"84":{"start":{"line":85,"column":0},"end":{"line":85,"column":12}},"85":{"start":{"line":86,"column":0},"end":{"line":86,"column":25}},"86":{"start":{"line":87,"column":0},"end":{"line":87,"column":42}},"87":{"start":{"line":88,"column":0},"end":{"line":88,"column":18}},"88":{"start":{"line":89,"column":0},"end":{"line":89,"column":6}},"89":{"start":{"line":90,"column":0},"end":{"line":90,"column":58}},"90":{"start":{"line":91,"column":0},"end":{"line":91,"column":16}},"91":{"start":{"line":92,"column":0},"end":{"line":92,"column":8}},"92":{"start":{"line":93,"column":0},"end":{"line":93,"column":5}},"93":{"start":{"line":94,"column":0},"end":{"line":94,"column":4}},"94":{"start":{"line":95,"column":0},"end":{"line":95,"column":3}},"95":{"start":{"line":96,"column":0},"end":{"line":96,"column":39}},"96":{"start":{"line":97,"column":0},"end":{"line":97,"column":2}},"97":{"start":{"line":98,"column":0},"end":{"line":98,"column":1}},"98":{"start":{"line":99,"column":0},"end":{"line":99,"column":0}},"99":{"start":{"line":100,"column":0},"end":{"line":100,"column":87}},"100":{"start":{"line":101,"column":0},"end":{"line":101,"column":32}},"101":{"start":{"line":102,"column":0},"end":{"line":102,"column":1}},"102":{"start":{"line":103,"column":0},"end":{"line":103,"column":0}},"103":{"start":{"line":104,"column":0},"end":{"line":104,"column":13}},"104":{"start":{"line":105,"column":0},"end":{"line":105,"column":87}},"105":{"start":{"line":106,"column":0},"end":{"line":106,"column":13}},"106":{"start":{"line":107,"column":0},"end":{"line":107,"column":1}}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":0,"77":0,"78":0,"79":0,"80":0,"81":1,"82":0,"83":0,"84":0,"85":0,"86":0,"87":0,"88":0,"89":0,"90":0,"91":0,"92":0,"93":0,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":0,"105":0,"106":0},"branchMap":{"0":{"type":"branch","line":11,"loc":{"start":{"line":11,"column":0},"end":{"line":98,"column":1}},"locations":[{"start":{"line":11,"column":0},"end":{"line":98,"column":1}}]},"1":{"type":"branch","line":60,"loc":{"start":{"line":60,"column":1},"end":{"line":97,"column":2}},"locations":[{"start":{"line":60,"column":1},"end":{"line":97,"column":2}}]},"2":{"type":"branch","line":76,"loc":{"start":{"line":76,"column":5},"end":{"line":81,"column":5}},"locations":[{"start":{"line":76,"column":5},"end":{"line":81,"column":5}}]},"3":{"type":"branch","line":82,"loc":{"start":{"line":82,"column":5},"end":{"line":94,"column":4}},"locations":[{"start":{"line":82,"column":5},"end":{"line":94,"column":4}}]},"4":{"type":"branch","line":100,"loc":{"start":{"line":100,"column":0},"end":{"line":102,"column":1}},"locations":[{"start":{"line":100,"column":0},"end":{"line":102,"column":1}}]}},"b":{"0":[1],"1":[1],"2":[0],"3":[0],"4":[1]},"fnMap":{"0":{"name":"NotionMd","decl":{"start":{"line":11,"column":0},"end":{"line":98,"column":1}},"loc":{"start":{"line":11,"column":0},"end":{"line":98,"column":1}},"line":11},"1":{"name":"execute","decl":{"start":{"line":60,"column":1},"end":{"line":97,"column":2}},"loc":{"start":{"line":60,"column":1},"end":{"line":97,"column":2}},"line":60},"2":{"name":"markdownToNotion","decl":{"start":{"line":100,"column":0},"end":{"line":102,"column":1}},"loc":{"start":{"line":100,"column":0},"end":{"line":102,"column":1}},"line":100},"3":{"name":"notionToMarkdown","decl":{"start":{"line":105,"column":0},"end":{"line":107,"column":1}},"loc":{"start":{"line":105,"column":0},"end":{"line":107,"column":1}},"line":105}},"f":{"0":1,"1":1,"2":1,"3":0}} 2 | } 3 | -------------------------------------------------------------------------------- /coverage/lcov-report/NotionMd.node.ts.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Code coverage report for NotionMd.node.ts 7 | 8 | 9 | 10 | 11 | 12 | 17 | 18 | 19 | 20 |
21 |
22 |

All files NotionMd.node.ts

23 |
24 | 25 |
26 | 81.3% 27 | Statements 28 | 87/107 29 |
30 | 31 | 32 |
33 | 60% 34 | Branches 35 | 3/5 36 |
37 | 38 | 39 |
40 | 75% 41 | Functions 42 | 3/4 43 |
44 | 45 | 46 |
47 | 81.3% 48 | Lines 49 | 87/107 50 |
51 | 52 | 53 |
54 |

55 | Press n or j to go to the next uncovered block, b, p or k for the previous block. 56 |

57 | 63 |
64 |
65 |

 66 | 
1 67 | 2 68 | 3 69 | 4 70 | 5 71 | 6 72 | 7 73 | 8 74 | 9 75 | 10 76 | 11 77 | 12 78 | 13 79 | 14 80 | 15 81 | 16 82 | 17 83 | 18 84 | 19 85 | 20 86 | 21 87 | 22 88 | 23 89 | 24 90 | 25 91 | 26 92 | 27 93 | 28 94 | 29 95 | 30 96 | 31 97 | 32 98 | 33 99 | 34 100 | 35 101 | 36 102 | 37 103 | 38 104 | 39 105 | 40 106 | 41 107 | 42 108 | 43 109 | 44 110 | 45 111 | 46 112 | 47 113 | 48 114 | 49 115 | 50 116 | 51 117 | 52 118 | 53 119 | 54 120 | 55 121 | 56 122 | 57 123 | 58 124 | 59 125 | 60 126 | 61 127 | 62 128 | 63 129 | 64 130 | 65 131 | 66 132 | 67 133 | 68 134 | 69 135 | 70 136 | 71 137 | 72 138 | 73 139 | 74 140 | 75 141 | 76 142 | 77 143 | 78 144 | 79 145 | 80 146 | 81 147 | 82 148 | 83 149 | 84 150 | 85 151 | 86 152 | 87 153 | 88 154 | 89 155 | 90 156 | 91 157 | 92 158 | 93 159 | 94 160 | 95 161 | 96 162 | 97 163 | 98 164 | 99 165 | 100 166 | 101 167 | 102 168 | 103 169 | 104 170 | 105 171 | 106 172 | 107 173 | 1081x 174 | 1x 175 | 1x 176 | 1x 177 | 1x 178 | 1x 179 | 1x 180 | 1x 181 | 1x 182 | 1x 183 | 1x 184 | 1x 185 | 1x 186 | 1x 187 | 1x 188 | 1x 189 | 1x 190 | 1x 191 | 1x 192 | 1x 193 | 1x 194 | 1x 195 | 1x 196 | 1x 197 | 1x 198 | 1x 199 | 1x 200 | 1x 201 | 1x 202 | 1x 203 | 1x 204 | 1x 205 | 1x 206 | 1x 207 | 1x 208 | 1x 209 | 1x 210 | 1x 211 | 1x 212 | 1x 213 | 1x 214 | 1x 215 | 1x 216 | 1x 217 | 1x 218 | 1x 219 | 1x 220 | 1x 221 | 1x 222 | 1x 223 | 1x 224 | 1x 225 | 1x 226 | 1x 227 | 1x 228 | 1x 229 | 1x 230 | 1x 231 | 1x 232 | 1x 233 | 1x 234 | 1x 235 | 1x 236 | 1x 237 | 1x 238 | 1x 239 | 1x 240 | 1x 241 | 1x 242 | 1x 243 | 1x 244 | 1x 245 | 1x 246 | 1x 247 | 1x 248 | 1x 249 |   250 |   251 |   252 |   253 |   254 | 1x 255 |   256 |   257 |   258 |   259 |   260 |   261 |   262 |   263 |   264 |   265 |   266 |   267 | 1x 268 | 1x 269 | 1x 270 | 1x 271 | 1x 272 | 1x 273 | 1x 274 | 1x 275 | 1x 276 | 1x 277 |   278 |   279 |   280 |  
import { IExecuteFunctions } from 'n8n-core';
281 | import {
282 | 	INodeExecutionData,
283 | 	INodeType,
284 | 	INodeTypeDescription,
285 | 	NodeOperationError,
286 | } from 'n8n-workflow';
287 |  
288 | import {markdownToBlocks} from '@tryfabric/martian';
289 |  
290 | export class NotionMd implements INodeType {
291 | 	description: INodeTypeDescription = {
292 | 		displayName: 'Notion MD',
293 | 		name: 'notionMd',
294 | 		group: ['transform'],
295 | 		version: 1,
296 | 		description: 'Node to transform markdown and notion blocks',
297 | 		defaults: {
298 | 			name: 'Notion MD',
299 | 		},
300 | 		inputs: ['main'],
301 | 		outputs: ['main'],
302 | 		properties: [
303 | 			{
304 | 				displayName: 'Operation',
305 | 				name: 'operation',
306 | 				type: 'options',
307 | 				noDataExpression: true,
308 | 				options: [
309 | 					{
310 | 						name: 'Markdown to Notion',
311 | 						value: 'markdownToNotion',
312 | 					},
313 | 					{
314 | 						name: 'Notion to Markdown',
315 | 						value: 'notionToMarkdown',
316 | 					},
317 | 				],
318 | 				default: 'markdownToNotion',
319 | 				description: 'Choose whether you want to convert markdown to notion or vice versa',
320 | 			},
321 | 			{
322 | 				displayName: 'Input',
323 | 				name: 'input',
324 | 				type: 'string',
325 | 				default: '',
326 | 				placeholder: 'Place your markdown or notion blocks here',
327 | 				description: 'The input to be transformed',
328 | 			},
329 | 			{
330 | 				displayName: 'Output Key',
331 | 				name: 'outputKey',
332 | 				type: 'string',
333 | 				default: 'output',
334 | 				description: 'Key to use for the output object',
335 | 			},
336 | 		],
337 | 	};
338 |  
339 | 	async execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]> {
340 | 		const items = this.getInputData();
341 | 		let item: INodeExecutionData;
342 | 		let operation: string;
343 | 		let input: string;
344 | 		let outputKey: string;
345 |  
346 | 		for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
347 | 			try {
348 | 				operation = this.getNodeParameter('operation', itemIndex, '') as string;
349 | 				input = this.getNodeParameter('input', itemIndex, '') as string;
350 | 				outputKey = this.getNodeParameter('outputKey', itemIndex, '') as string;
351 | 				item = items[itemIndex];
352 |  
353 | 				if (operation === 'markdownToNotion') {
354 | 					item.json[outputKey] = await markdownToNotion.call(this, input);
355 | 				} else if (operation === 'notionToMarkdown') {
356 | 					throw new NodeOperationError(this.getNode(), 'not implemeted')
357 | 					// item.json[outputKey] = await notionToMarkdown(this, input);
358 | 				} else {
359 | 					throw new NodeOperationError(this.getNode(), `The operation "${operation}" is not known!`);
360 | 				}
361 | 			} catch (error) {
362 | 				if (this.continueOnFail()) {
363 | 					items.push({ json: this.getInputData(itemIndex)[0].json, error, pairedItem: itemIndex });
364 | 				} else {
365 | 					if (error.context) {
366 | 						error.context.itemIndex = itemIndex;
367 | 						throw error;
368 | 					}
369 | 					throw new NodeOperationError(this.getNode(), error, {
370 | 						itemIndex,
371 | 					});
372 | 				}
373 | 			}
374 | 		}
375 | 		return this.prepareOutputData(items);
376 | 	}
377 | }
378 |  
379 | async function markdownToNotion(this: IExecuteFunctions, input: string): Promise<any> {
380 | 	return markdownToBlocks(input);
381 | }
382 |  
383 | // @ts-ignore
384 | async function notionToMarkdown(this: IExecuteFunctions, input: string): Promise<any> {
385 | 	return null;
386 | }
387 |  
388 | 389 |
390 |
391 | 396 | 397 | 402 | 403 | 404 | 405 | 406 | -------------------------------------------------------------------------------- /coverage/lcov-report/base.css: -------------------------------------------------------------------------------- 1 | body, html { 2 | margin:0; padding: 0; 3 | height: 100%; 4 | } 5 | body { 6 | font-family: Helvetica Neue, Helvetica, Arial; 7 | font-size: 14px; 8 | color:#333; 9 | } 10 | .small { font-size: 12px; } 11 | *, *:after, *:before { 12 | -webkit-box-sizing:border-box; 13 | -moz-box-sizing:border-box; 14 | box-sizing:border-box; 15 | } 16 | h1 { font-size: 20px; margin: 0;} 17 | h2 { font-size: 14px; } 18 | pre { 19 | font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace; 20 | margin: 0; 21 | padding: 0; 22 | -moz-tab-size: 2; 23 | -o-tab-size: 2; 24 | tab-size: 2; 25 | } 26 | a { color:#0074D9; text-decoration:none; } 27 | a:hover { text-decoration:underline; } 28 | .strong { font-weight: bold; } 29 | .space-top1 { padding: 10px 0 0 0; } 30 | .pad2y { padding: 20px 0; } 31 | .pad1y { padding: 10px 0; } 32 | .pad2x { padding: 0 20px; } 33 | .pad2 { padding: 20px; } 34 | .pad1 { padding: 10px; } 35 | .space-left2 { padding-left:55px; } 36 | .space-right2 { padding-right:20px; } 37 | .center { text-align:center; } 38 | .clearfix { display:block; } 39 | .clearfix:after { 40 | content:''; 41 | display:block; 42 | height:0; 43 | clear:both; 44 | visibility:hidden; 45 | } 46 | .fl { float: left; } 47 | @media only screen and (max-width:640px) { 48 | .col3 { width:100%; max-width:100%; } 49 | .hide-mobile { display:none!important; } 50 | } 51 | 52 | .quiet { 53 | color: #7f7f7f; 54 | color: rgba(0,0,0,0.5); 55 | } 56 | .quiet a { opacity: 0.7; } 57 | 58 | .fraction { 59 | font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; 60 | font-size: 10px; 61 | color: #555; 62 | background: #E8E8E8; 63 | padding: 4px 5px; 64 | border-radius: 3px; 65 | vertical-align: middle; 66 | } 67 | 68 | div.path a:link, div.path a:visited { color: #333; } 69 | table.coverage { 70 | border-collapse: collapse; 71 | margin: 10px 0 0 0; 72 | padding: 0; 73 | } 74 | 75 | table.coverage td { 76 | margin: 0; 77 | padding: 0; 78 | vertical-align: top; 79 | } 80 | table.coverage td.line-count { 81 | text-align: right; 82 | padding: 0 5px 0 20px; 83 | } 84 | table.coverage td.line-coverage { 85 | text-align: right; 86 | padding-right: 10px; 87 | min-width:20px; 88 | } 89 | 90 | table.coverage td span.cline-any { 91 | display: inline-block; 92 | padding: 0 5px; 93 | width: 100%; 94 | } 95 | .missing-if-branch { 96 | display: inline-block; 97 | margin-right: 5px; 98 | border-radius: 3px; 99 | position: relative; 100 | padding: 0 4px; 101 | background: #333; 102 | color: yellow; 103 | } 104 | 105 | .skip-if-branch { 106 | display: none; 107 | margin-right: 10px; 108 | position: relative; 109 | padding: 0 4px; 110 | background: #ccc; 111 | color: white; 112 | } 113 | .missing-if-branch .typ, .skip-if-branch .typ { 114 | color: inherit !important; 115 | } 116 | .coverage-summary { 117 | border-collapse: collapse; 118 | width: 100%; 119 | } 120 | .coverage-summary tr { border-bottom: 1px solid #bbb; } 121 | .keyline-all { border: 1px solid #ddd; } 122 | .coverage-summary td, .coverage-summary th { padding: 10px; } 123 | .coverage-summary tbody { border: 1px solid #bbb; } 124 | .coverage-summary td { border-right: 1px solid #bbb; } 125 | .coverage-summary td:last-child { border-right: none; } 126 | .coverage-summary th { 127 | text-align: left; 128 | font-weight: normal; 129 | white-space: nowrap; 130 | } 131 | .coverage-summary th.file { border-right: none !important; } 132 | .coverage-summary th.pct { } 133 | .coverage-summary th.pic, 134 | .coverage-summary th.abs, 135 | .coverage-summary td.pct, 136 | .coverage-summary td.abs { text-align: right; } 137 | .coverage-summary td.file { white-space: nowrap; } 138 | .coverage-summary td.pic { min-width: 120px !important; } 139 | .coverage-summary tfoot td { } 140 | 141 | .coverage-summary .sorter { 142 | height: 10px; 143 | width: 7px; 144 | display: inline-block; 145 | margin-left: 0.5em; 146 | background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent; 147 | } 148 | .coverage-summary .sorted .sorter { 149 | background-position: 0 -20px; 150 | } 151 | .coverage-summary .sorted-desc .sorter { 152 | background-position: 0 -10px; 153 | } 154 | .status-line { height: 10px; } 155 | /* yellow */ 156 | .cbranch-no { background: yellow !important; color: #111; } 157 | /* dark red */ 158 | .red.solid, .status-line.low, .low .cover-fill { background:#C21F39 } 159 | .low .chart { border:1px solid #C21F39 } 160 | .highlighted, 161 | .highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{ 162 | background: #C21F39 !important; 163 | } 164 | /* medium red */ 165 | .cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE } 166 | /* light red */ 167 | .low, .cline-no { background:#FCE1E5 } 168 | /* light green */ 169 | .high, .cline-yes { background:rgb(230,245,208) } 170 | /* medium green */ 171 | .cstat-yes { background:rgb(161,215,106) } 172 | /* dark green */ 173 | .status-line.high, .high .cover-fill { background:rgb(77,146,33) } 174 | .high .chart { border:1px solid rgb(77,146,33) } 175 | /* dark yellow (gold) */ 176 | .status-line.medium, .medium .cover-fill { background: #f9cd0b; } 177 | .medium .chart { border:1px solid #f9cd0b; } 178 | /* light yellow */ 179 | .medium { background: #fff4c2; } 180 | 181 | .cstat-skip { background: #ddd; color: #111; } 182 | .fstat-skip { background: #ddd; color: #111 !important; } 183 | .cbranch-skip { background: #ddd !important; color: #111; } 184 | 185 | span.cline-neutral { background: #eaeaea; } 186 | 187 | .coverage-summary td.empty { 188 | opacity: .5; 189 | padding-top: 4px; 190 | padding-bottom: 4px; 191 | line-height: 1; 192 | color: #888; 193 | } 194 | 195 | .cover-fill, .cover-empty { 196 | display:inline-block; 197 | height: 12px; 198 | } 199 | .chart { 200 | line-height: 0; 201 | } 202 | .cover-empty { 203 | background: white; 204 | } 205 | .cover-full { 206 | border-right: none !important; 207 | } 208 | pre.prettyprint { 209 | border: none !important; 210 | padding: 0 !important; 211 | margin: 0 !important; 212 | } 213 | .com { color: #999 !important; } 214 | .ignore-none { color: #999; font-weight: normal; } 215 | 216 | .wrapper { 217 | min-height: 100%; 218 | height: auto !important; 219 | height: 100%; 220 | margin: 0 auto -48px; 221 | } 222 | .footer, .push { 223 | height: 48px; 224 | } 225 | -------------------------------------------------------------------------------- /coverage/lcov-report/block-navigation.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var jumpToCode = (function init() { 3 | // Classes of code we would like to highlight in the file view 4 | var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no']; 5 | 6 | // Elements to highlight in the file listing view 7 | var fileListingElements = ['td.pct.low']; 8 | 9 | // We don't want to select elements that are direct descendants of another match 10 | var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > ` 11 | 12 | // Selecter that finds elements on the page to which we can jump 13 | var selector = 14 | fileListingElements.join(', ') + 15 | ', ' + 16 | notSelector + 17 | missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b` 18 | 19 | // The NodeList of matching elements 20 | var missingCoverageElements = document.querySelectorAll(selector); 21 | 22 | var currentIndex; 23 | 24 | function toggleClass(index) { 25 | missingCoverageElements 26 | .item(currentIndex) 27 | .classList.remove('highlighted'); 28 | missingCoverageElements.item(index).classList.add('highlighted'); 29 | } 30 | 31 | function makeCurrent(index) { 32 | toggleClass(index); 33 | currentIndex = index; 34 | missingCoverageElements.item(index).scrollIntoView({ 35 | behavior: 'smooth', 36 | block: 'center', 37 | inline: 'center' 38 | }); 39 | } 40 | 41 | function goToPrevious() { 42 | var nextIndex = 0; 43 | if (typeof currentIndex !== 'number' || currentIndex === 0) { 44 | nextIndex = missingCoverageElements.length - 1; 45 | } else if (missingCoverageElements.length > 1) { 46 | nextIndex = currentIndex - 1; 47 | } 48 | 49 | makeCurrent(nextIndex); 50 | } 51 | 52 | function goToNext() { 53 | var nextIndex = 0; 54 | 55 | if ( 56 | typeof currentIndex === 'number' && 57 | currentIndex < missingCoverageElements.length - 1 58 | ) { 59 | nextIndex = currentIndex + 1; 60 | } 61 | 62 | makeCurrent(nextIndex); 63 | } 64 | 65 | return function jump(event) { 66 | if ( 67 | document.getElementById('fileSearch') === document.activeElement && 68 | document.activeElement != null 69 | ) { 70 | // if we're currently focused on the search input, we don't want to navigate 71 | return; 72 | } 73 | 74 | switch (event.which) { 75 | case 78: // n 76 | case 74: // j 77 | goToNext(); 78 | break; 79 | case 66: // b 80 | case 75: // k 81 | case 80: // p 82 | goToPrevious(); 83 | break; 84 | } 85 | }; 86 | })(); 87 | window.addEventListener('keydown', jumpToCode); 88 | -------------------------------------------------------------------------------- /coverage/lcov-report/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minhlucvan/n8n-nodes-notionmd/fb3e69d8817b255ba683dd18999c149ef818af76/coverage/lcov-report/favicon.png -------------------------------------------------------------------------------- /coverage/lcov-report/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | Code coverage report for All files 7 | 8 | 9 | 10 | 11 | 12 | 17 | 18 | 19 | 20 |
21 |
22 |

All files

23 |
24 | 25 |
26 | 81.3% 27 | Statements 28 | 87/107 29 |
30 | 31 | 32 |
33 | 60% 34 | Branches 35 | 3/5 36 |
37 | 38 | 39 |
40 | 75% 41 | Functions 42 | 3/4 43 |
44 | 45 | 46 |
47 | 81.3% 48 | Lines 49 | 87/107 50 |
51 | 52 | 53 |
54 |

55 | Press n or j to go to the next uncovered block, b, p or k for the previous block. 56 |

57 | 63 |
64 |
65 |
66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 |
FileStatementsBranchesFunctionsLines
NotionMd.node.ts 84 |
85 |
81.3%87/10760%3/575%3/481.3%87/107
98 |
99 |
100 |
101 | 106 | 107 | 112 | 113 | 114 | 115 | 116 | -------------------------------------------------------------------------------- /coverage/lcov-report/prettify.css: -------------------------------------------------------------------------------- 1 | .pln{color:#000}@media screen{.str{color:#080}.kwd{color:#008}.com{color:#800}.typ{color:#606}.lit{color:#066}.pun,.opn,.clo{color:#660}.tag{color:#008}.atn{color:#606}.atv{color:#080}.dec,.var{color:#606}.fun{color:red}}@media print,projection{.str{color:#060}.kwd{color:#006;font-weight:bold}.com{color:#600;font-style:italic}.typ{color:#404;font-weight:bold}.lit{color:#044}.pun,.opn,.clo{color:#440}.tag{color:#006;font-weight:bold}.atn{color:#404}.atv{color:#060}}pre.prettyprint{padding:2px;border:1px solid #888}ol.linenums{margin-top:0;margin-bottom:0}li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8{list-style-type:none}li.L1,li.L3,li.L5,li.L7,li.L9{background:#eee} 2 | -------------------------------------------------------------------------------- /coverage/lcov-report/prettify.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | window.PR_SHOULD_USE_CONTINUATION=true;(function(){var h=["break,continue,do,else,for,if,return,while"];var u=[h,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"];var p=[u,"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"];var l=[p,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"];var x=[p,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"];var R=[x,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"];var r="all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes";var w=[p,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"];var s="caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END";var I=[h,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"];var f=[h,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"];var H=[h,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"];var A=[l,R,w,s+I,f,H];var e=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/;var C="str";var z="kwd";var j="com";var O="typ";var G="lit";var L="pun";var F="pln";var m="tag";var E="dec";var J="src";var P="atn";var n="atv";var N="nocode";var M="(?:^^\\.?|[+-]|\\!|\\!=|\\!==|\\#|\\%|\\%=|&|&&|&&=|&=|\\(|\\*|\\*=|\\+=|\\,|\\-=|\\->|\\/|\\/=|:|::|\\;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|\\?|\\@|\\[|\\^|\\^=|\\^\\^|\\^\\^=|\\{|\\||\\|=|\\|\\||\\|\\|=|\\~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\\s*";function k(Z){var ad=0;var S=false;var ac=false;for(var V=0,U=Z.length;V122)){if(!(al<65||ag>90)){af.push([Math.max(65,ag)|32,Math.min(al,90)|32])}if(!(al<97||ag>122)){af.push([Math.max(97,ag)&~32,Math.min(al,122)&~32])}}}}af.sort(function(av,au){return(av[0]-au[0])||(au[1]-av[1])});var ai=[];var ap=[NaN,NaN];for(var ar=0;arat[0]){if(at[1]+1>at[0]){an.push("-")}an.push(T(at[1]))}}an.push("]");return an.join("")}function W(al){var aj=al.source.match(new RegExp("(?:\\[(?:[^\\x5C\\x5D]|\\\\[\\s\\S])*\\]|\\\\u[A-Fa-f0-9]{4}|\\\\x[A-Fa-f0-9]{2}|\\\\[0-9]+|\\\\[^ux0-9]|\\(\\?[:!=]|[\\(\\)\\^]|[^\\x5B\\x5C\\(\\)\\^]+)","g"));var ah=aj.length;var an=[];for(var ak=0,am=0;ak=2&&ai==="["){aj[ak]=X(ag)}else{if(ai!=="\\"){aj[ak]=ag.replace(/[a-zA-Z]/g,function(ao){var ap=ao.charCodeAt(0);return"["+String.fromCharCode(ap&~32,ap|32)+"]"})}}}}return aj.join("")}var aa=[];for(var V=0,U=Z.length;V=0;){S[ac.charAt(ae)]=Y}}var af=Y[1];var aa=""+af;if(!ag.hasOwnProperty(aa)){ah.push(af);ag[aa]=null}}ah.push(/[\0-\uffff]/);V=k(ah)})();var X=T.length;var W=function(ah){var Z=ah.sourceCode,Y=ah.basePos;var ad=[Y,F];var af=0;var an=Z.match(V)||[];var aj={};for(var ae=0,aq=an.length;ae=5&&"lang-"===ap.substring(0,5);if(am&&!(ai&&typeof ai[1]==="string")){am=false;ap=J}if(!am){aj[ag]=ap}}var ab=af;af+=ag.length;if(!am){ad.push(Y+ab,ap)}else{var al=ai[1];var ak=ag.indexOf(al);var ac=ak+al.length;if(ai[2]){ac=ag.length-ai[2].length;ak=ac-al.length}var ar=ap.substring(5);B(Y+ab,ag.substring(0,ak),W,ad);B(Y+ab+ak,al,q(ar,al),ad);B(Y+ab+ac,ag.substring(ac),W,ad)}}ah.decorations=ad};return W}function i(T){var W=[],S=[];if(T.tripleQuotedStrings){W.push([C,/^(?:\'\'\'(?:[^\'\\]|\\[\s\S]|\'{1,2}(?=[^\']))*(?:\'\'\'|$)|\"\"\"(?:[^\"\\]|\\[\s\S]|\"{1,2}(?=[^\"]))*(?:\"\"\"|$)|\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$))/,null,"'\""])}else{if(T.multiLineStrings){W.push([C,/^(?:\'(?:[^\\\']|\\[\s\S])*(?:\'|$)|\"(?:[^\\\"]|\\[\s\S])*(?:\"|$)|\`(?:[^\\\`]|\\[\s\S])*(?:\`|$))/,null,"'\"`"])}else{W.push([C,/^(?:\'(?:[^\\\'\r\n]|\\.)*(?:\'|$)|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,"\"'"])}}if(T.verbatimStrings){S.push([C,/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null])}var Y=T.hashComments;if(Y){if(T.cStyleComments){if(Y>1){W.push([j,/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,null,"#"])}else{W.push([j,/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"])}S.push([C,/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null])}else{W.push([j,/^#[^\r\n]*/,null,"#"])}}if(T.cStyleComments){S.push([j,/^\/\/[^\r\n]*/,null]);S.push([j,/^\/\*[\s\S]*?(?:\*\/|$)/,null])}if(T.regexLiterals){var X=("/(?=[^/*])(?:[^/\\x5B\\x5C]|\\x5C[\\s\\S]|\\x5B(?:[^\\x5C\\x5D]|\\x5C[\\s\\S])*(?:\\x5D|$))+/");S.push(["lang-regex",new RegExp("^"+M+"("+X+")")])}var V=T.types;if(V){S.push([O,V])}var U=(""+T.keywords).replace(/^ | $/g,"");if(U.length){S.push([z,new RegExp("^(?:"+U.replace(/[\s,]+/g,"|")+")\\b"),null])}W.push([F,/^\s+/,null," \r\n\t\xA0"]);S.push([G,/^@[a-z_$][a-z_$@0-9]*/i,null],[O,/^(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null],[F,/^[a-z_$][a-z_$@0-9]*/i,null],[G,new RegExp("^(?:0x[a-f0-9]+|(?:\\d(?:_\\d+)*\\d*(?:\\.\\d*)?|\\.\\d\\+)(?:e[+\\-]?\\d+)?)[a-z]*","i"),null,"0123456789"],[F,/^\\[\s\S]?/,null],[L,/^.[^\s\w\.$@\'\"\`\/\#\\]*/,null]);return g(W,S)}var K=i({keywords:A,hashComments:true,cStyleComments:true,multiLineStrings:true,regexLiterals:true});function Q(V,ag){var U=/(?:^|\s)nocode(?:\s|$)/;var ab=/\r\n?|\n/;var ac=V.ownerDocument;var S;if(V.currentStyle){S=V.currentStyle.whiteSpace}else{if(window.getComputedStyle){S=ac.defaultView.getComputedStyle(V,null).getPropertyValue("white-space")}}var Z=S&&"pre"===S.substring(0,3);var af=ac.createElement("LI");while(V.firstChild){af.appendChild(V.firstChild)}var W=[af];function ae(al){switch(al.nodeType){case 1:if(U.test(al.className)){break}if("BR"===al.nodeName){ad(al);if(al.parentNode){al.parentNode.removeChild(al)}}else{for(var an=al.firstChild;an;an=an.nextSibling){ae(an)}}break;case 3:case 4:if(Z){var am=al.nodeValue;var aj=am.match(ab);if(aj){var ai=am.substring(0,aj.index);al.nodeValue=ai;var ah=am.substring(aj.index+aj[0].length);if(ah){var ak=al.parentNode;ak.insertBefore(ac.createTextNode(ah),al.nextSibling)}ad(al);if(!ai){al.parentNode.removeChild(al)}}}break}}function ad(ak){while(!ak.nextSibling){ak=ak.parentNode;if(!ak){return}}function ai(al,ar){var aq=ar?al.cloneNode(false):al;var ao=al.parentNode;if(ao){var ap=ai(ao,1);var an=al.nextSibling;ap.appendChild(aq);for(var am=an;am;am=an){an=am.nextSibling;ap.appendChild(am)}}return aq}var ah=ai(ak.nextSibling,0);for(var aj;(aj=ah.parentNode)&&aj.nodeType===1;){ah=aj}W.push(ah)}for(var Y=0;Y=S){ah+=2}if(V>=ap){Z+=2}}}var t={};function c(U,V){for(var S=V.length;--S>=0;){var T=V[S];if(!t.hasOwnProperty(T)){t[T]=U}else{if(window.console){console.warn("cannot override language handler %s",T)}}}}function q(T,S){if(!(T&&t.hasOwnProperty(T))){T=/^\s*]*(?:>|$)/],[j,/^<\!--[\s\S]*?(?:-\->|$)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],[L,/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]),["default-markup","htm","html","mxml","xhtml","xml","xsl"]);c(g([[F,/^[\s]+/,null," \t\r\n"],[n,/^(?:\"[^\"]*\"?|\'[^\']*\'?)/,null,"\"'"]],[[m,/^^<\/?[a-z](?:[\w.:-]*\w)?|\/?>$/i],[P,/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^>\'\"\s]*(?:[^>\'\"\s\/]|\/(?=\s)))/],[L,/^[=<>\/]+/],["lang-js",/^on\w+\s*=\s*\"([^\"]+)\"/i],["lang-js",/^on\w+\s*=\s*\'([^\']+)\'/i],["lang-js",/^on\w+\s*=\s*([^\"\'>\s]+)/i],["lang-css",/^style\s*=\s*\"([^\"]+)\"/i],["lang-css",/^style\s*=\s*\'([^\']+)\'/i],["lang-css",/^style\s*=\s*([^\"\'>\s]+)/i]]),["in.tag"]);c(g([],[[n,/^[\s\S]+/]]),["uq.val"]);c(i({keywords:l,hashComments:true,cStyleComments:true,types:e}),["c","cc","cpp","cxx","cyc","m"]);c(i({keywords:"null,true,false"}),["json"]);c(i({keywords:R,hashComments:true,cStyleComments:true,verbatimStrings:true,types:e}),["cs"]);c(i({keywords:x,cStyleComments:true}),["java"]);c(i({keywords:H,hashComments:true,multiLineStrings:true}),["bsh","csh","sh"]);c(i({keywords:I,hashComments:true,multiLineStrings:true,tripleQuotedStrings:true}),["cv","py"]);c(i({keywords:s,hashComments:true,multiLineStrings:true,regexLiterals:true}),["perl","pl","pm"]);c(i({keywords:f,hashComments:true,multiLineStrings:true,regexLiterals:true}),["rb"]);c(i({keywords:w,cStyleComments:true,regexLiterals:true}),["js"]);c(i({keywords:r,hashComments:3,cStyleComments:true,multilineStrings:true,tripleQuotedStrings:true,regexLiterals:true}),["coffee"]);c(g([],[[C,/^[\s\S]+/]]),["regex"]);function d(V){var U=V.langExtension;try{var S=a(V.sourceNode);var T=S.sourceCode;V.sourceCode=T;V.spans=S.spans;V.basePos=0;q(U,T)(V);D(V)}catch(W){if("console" in window){console.log(W&&W.stack?W.stack:W)}}}function y(W,V,U){var S=document.createElement("PRE");S.innerHTML=W;if(U){Q(S,U)}var T={langExtension:V,numberLines:U,sourceNode:S};d(T);return S.innerHTML}function b(ad){function Y(af){return document.getElementsByTagName(af)}var ac=[Y("pre"),Y("code"),Y("xmp")];var T=[];for(var aa=0;aa=0){var ah=ai.match(ab);var am;if(!ah&&(am=o(aj))&&"CODE"===am.tagName){ah=am.className.match(ab)}if(ah){ah=ah[1]}var al=false;for(var ak=aj.parentNode;ak;ak=ak.parentNode){if((ak.tagName==="pre"||ak.tagName==="code"||ak.tagName==="xmp")&&ak.className&&ak.className.indexOf("prettyprint")>=0){al=true;break}}if(!al){var af=aj.className.match(/\blinenums\b(?::(\d+))?/);af=af?af[1]&&af[1].length?+af[1]:true:false;if(af){Q(aj,af)}S={langExtension:ah,sourceNode:aj,numberLines:af};d(S)}}}if(X]*(?:>|$)/],[PR.PR_COMMENT,/^<\!--[\s\S]*?(?:-\->|$)/],[PR.PR_PUNCTUATION,/^(?:<[%?]|[%?]>)/],["lang-",/^<\?([\s\S]+?)(?:\?>|$)/],["lang-",/^<%([\s\S]+?)(?:%>|$)/],["lang-",/^]*>([\s\S]+?)<\/xmp\b[^>]*>/i],["lang-handlebars",/^]*type\s*=\s*['"]?text\/x-handlebars-template['"]?\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-js",/^]*>([\s\S]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\s\S]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i],[PR.PR_DECLARATION,/^{{[#^>/]?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{&?\s*[\w.][^}]*}}/],[PR.PR_DECLARATION,/^{{{>?\s*[\w.][^}]*}}}/],[PR.PR_COMMENT,/^{{![^}]*}}/]]),["handlebars","hbs"]);PR.registerLangHandler(PR.createSimpleLexer([[PR.PR_PLAIN,/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[[PR.PR_STRING,/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],[PR.PR_STRING,/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']*)\)/i],[PR.PR_KEYWORD,/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],[PR.PR_COMMENT,/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],[PR.PR_COMMENT,/^(?:)/],[PR.PR_LITERAL,/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],[PR.PR_LITERAL,/^#(?:[0-9a-f]{3}){1,2}/i],[PR.PR_PLAIN,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],[PR.PR_PUNCTUATION,/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_KEYWORD,/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[[PR.PR_STRING,/^[^\)\"\']+/]]),["css-str"]); 3 | -------------------------------------------------------------------------------- /coverage/lcov-report/sort-arrow-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minhlucvan/n8n-nodes-notionmd/fb3e69d8817b255ba683dd18999c149ef818af76/coverage/lcov-report/sort-arrow-sprite.png -------------------------------------------------------------------------------- /coverage/lcov-report/sorter.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | var addSorting = (function() { 3 | 'use strict'; 4 | var cols, 5 | currentSort = { 6 | index: 0, 7 | desc: false 8 | }; 9 | 10 | // returns the summary table element 11 | function getTable() { 12 | return document.querySelector('.coverage-summary'); 13 | } 14 | // returns the thead element of the summary table 15 | function getTableHeader() { 16 | return getTable().querySelector('thead tr'); 17 | } 18 | // returns the tbody element of the summary table 19 | function getTableBody() { 20 | return getTable().querySelector('tbody'); 21 | } 22 | // returns the th element for nth column 23 | function getNthColumn(n) { 24 | return getTableHeader().querySelectorAll('th')[n]; 25 | } 26 | 27 | function onFilterInput() { 28 | const searchValue = document.getElementById('fileSearch').value; 29 | const rows = document.getElementsByTagName('tbody')[0].children; 30 | for (let i = 0; i < rows.length; i++) { 31 | const row = rows[i]; 32 | if ( 33 | row.textContent 34 | .toLowerCase() 35 | .includes(searchValue.toLowerCase()) 36 | ) { 37 | row.style.display = ''; 38 | } else { 39 | row.style.display = 'none'; 40 | } 41 | } 42 | } 43 | 44 | // loads the search box 45 | function addSearchBox() { 46 | var template = document.getElementById('filterTemplate'); 47 | var templateClone = template.content.cloneNode(true); 48 | templateClone.getElementById('fileSearch').oninput = onFilterInput; 49 | template.parentElement.appendChild(templateClone); 50 | } 51 | 52 | // loads all columns 53 | function loadColumns() { 54 | var colNodes = getTableHeader().querySelectorAll('th'), 55 | colNode, 56 | cols = [], 57 | col, 58 | i; 59 | 60 | for (i = 0; i < colNodes.length; i += 1) { 61 | colNode = colNodes[i]; 62 | col = { 63 | key: colNode.getAttribute('data-col'), 64 | sortable: !colNode.getAttribute('data-nosort'), 65 | type: colNode.getAttribute('data-type') || 'string' 66 | }; 67 | cols.push(col); 68 | if (col.sortable) { 69 | col.defaultDescSort = col.type === 'number'; 70 | colNode.innerHTML = 71 | colNode.innerHTML + ''; 72 | } 73 | } 74 | return cols; 75 | } 76 | // attaches a data attribute to every tr element with an object 77 | // of data values keyed by column name 78 | function loadRowData(tableRow) { 79 | var tableCols = tableRow.querySelectorAll('td'), 80 | colNode, 81 | col, 82 | data = {}, 83 | i, 84 | val; 85 | for (i = 0; i < tableCols.length; i += 1) { 86 | colNode = tableCols[i]; 87 | col = cols[i]; 88 | val = colNode.getAttribute('data-value'); 89 | if (col.type === 'number') { 90 | val = Number(val); 91 | } 92 | data[col.key] = val; 93 | } 94 | return data; 95 | } 96 | // loads all row data 97 | function loadData() { 98 | var rows = getTableBody().querySelectorAll('tr'), 99 | i; 100 | 101 | for (i = 0; i < rows.length; i += 1) { 102 | rows[i].data = loadRowData(rows[i]); 103 | } 104 | } 105 | // sorts the table using the data for the ith column 106 | function sortByIndex(index, desc) { 107 | var key = cols[index].key, 108 | sorter = function(a, b) { 109 | a = a.data[key]; 110 | b = b.data[key]; 111 | return a < b ? -1 : a > b ? 1 : 0; 112 | }, 113 | finalSorter = sorter, 114 | tableBody = document.querySelector('.coverage-summary tbody'), 115 | rowNodes = tableBody.querySelectorAll('tr'), 116 | rows = [], 117 | i; 118 | 119 | if (desc) { 120 | finalSorter = function(a, b) { 121 | return -1 * sorter(a, b); 122 | }; 123 | } 124 | 125 | for (i = 0; i < rowNodes.length; i += 1) { 126 | rows.push(rowNodes[i]); 127 | tableBody.removeChild(rowNodes[i]); 128 | } 129 | 130 | rows.sort(finalSorter); 131 | 132 | for (i = 0; i < rows.length; i += 1) { 133 | tableBody.appendChild(rows[i]); 134 | } 135 | } 136 | // removes sort indicators for current column being sorted 137 | function removeSortIndicators() { 138 | var col = getNthColumn(currentSort.index), 139 | cls = col.className; 140 | 141 | cls = cls.replace(/ sorted$/, '').replace(/ sorted-desc$/, ''); 142 | col.className = cls; 143 | } 144 | // adds sort indicators for current column being sorted 145 | function addSortIndicators() { 146 | getNthColumn(currentSort.index).className += currentSort.desc 147 | ? ' sorted-desc' 148 | : ' sorted'; 149 | } 150 | // adds event listeners for all sorter widgets 151 | function enableUI() { 152 | var i, 153 | el, 154 | ithSorter = function ithSorter(i) { 155 | var col = cols[i]; 156 | 157 | return function() { 158 | var desc = col.defaultDescSort; 159 | 160 | if (currentSort.index === i) { 161 | desc = !currentSort.desc; 162 | } 163 | sortByIndex(i, desc); 164 | removeSortIndicators(); 165 | currentSort.index = i; 166 | currentSort.desc = desc; 167 | addSortIndicators(); 168 | }; 169 | }; 170 | for (i = 0; i < cols.length; i += 1) { 171 | if (cols[i].sortable) { 172 | // add the click event handler on the th so users 173 | // dont have to click on those tiny arrows 174 | el = getNthColumn(i).querySelector('.sorter').parentElement; 175 | if (el.addEventListener) { 176 | el.addEventListener('click', ithSorter(i)); 177 | } else { 178 | el.attachEvent('onclick', ithSorter(i)); 179 | } 180 | } 181 | } 182 | } 183 | // adds sorting functionality to the UI 184 | return function() { 185 | if (!getTable()) { 186 | return; 187 | } 188 | cols = loadColumns(); 189 | loadData(); 190 | addSearchBox(); 191 | addSortIndicators(); 192 | enableUI(); 193 | }; 194 | })(); 195 | 196 | window.addEventListener('load', addSorting); 197 | -------------------------------------------------------------------------------- /coverage/lcov.info: -------------------------------------------------------------------------------- 1 | TN: 2 | SF:nodes/NotionMd/NotionMd.node.ts 3 | FN:11,NotionMd 4 | FN:60,execute 5 | FN:100,markdownToNotion 6 | FN:105,notionToMarkdown 7 | FNF:4 8 | FNH:3 9 | FNDA:1,NotionMd 10 | FNDA:1,execute 11 | FNDA:1,markdownToNotion 12 | FNDA:0,notionToMarkdown 13 | DA:1,1 14 | DA:2,1 15 | DA:3,1 16 | DA:4,1 17 | DA:5,1 18 | DA:6,1 19 | DA:7,1 20 | DA:8,1 21 | DA:9,1 22 | DA:10,1 23 | DA:11,1 24 | DA:12,1 25 | DA:13,1 26 | DA:14,1 27 | DA:15,1 28 | DA:16,1 29 | DA:17,1 30 | DA:18,1 31 | DA:19,1 32 | DA:20,1 33 | DA:21,1 34 | DA:22,1 35 | DA:23,1 36 | DA:24,1 37 | DA:25,1 38 | DA:26,1 39 | DA:27,1 40 | DA:28,1 41 | DA:29,1 42 | DA:30,1 43 | DA:31,1 44 | DA:32,1 45 | DA:33,1 46 | DA:34,1 47 | DA:35,1 48 | DA:36,1 49 | DA:37,1 50 | DA:38,1 51 | DA:39,1 52 | DA:40,1 53 | DA:41,1 54 | DA:42,1 55 | DA:43,1 56 | DA:44,1 57 | DA:45,1 58 | DA:46,1 59 | DA:47,1 60 | DA:48,1 61 | DA:49,1 62 | DA:50,1 63 | DA:51,1 64 | DA:52,1 65 | DA:53,1 66 | DA:54,1 67 | DA:55,1 68 | DA:56,1 69 | DA:57,1 70 | DA:58,1 71 | DA:59,1 72 | DA:60,1 73 | DA:61,1 74 | DA:62,1 75 | DA:63,1 76 | DA:64,1 77 | DA:65,1 78 | DA:66,1 79 | DA:67,1 80 | DA:68,1 81 | DA:69,1 82 | DA:70,1 83 | DA:71,1 84 | DA:72,1 85 | DA:73,1 86 | DA:74,1 87 | DA:75,1 88 | DA:76,1 89 | DA:77,0 90 | DA:78,0 91 | DA:79,0 92 | DA:80,0 93 | DA:81,0 94 | DA:82,1 95 | DA:83,0 96 | DA:84,0 97 | DA:85,0 98 | DA:86,0 99 | DA:87,0 100 | DA:88,0 101 | DA:89,0 102 | DA:90,0 103 | DA:91,0 104 | DA:92,0 105 | DA:93,0 106 | DA:94,0 107 | DA:95,1 108 | DA:96,1 109 | DA:97,1 110 | DA:98,1 111 | DA:99,1 112 | DA:100,1 113 | DA:101,1 114 | DA:102,1 115 | DA:103,1 116 | DA:104,1 117 | DA:105,0 118 | DA:106,0 119 | DA:107,0 120 | LF:107 121 | LH:87 122 | BRDA:11,0,0,1 123 | BRDA:60,1,0,1 124 | BRDA:76,2,0,0 125 | BRDA:82,3,0,0 126 | BRDA:100,4,0,1 127 | BRF:5 128 | BRH:3 129 | end_of_record 130 | -------------------------------------------------------------------------------- /gulpfile.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const { task, src, dest } = require('gulp'); 3 | 4 | task('build:icons', copyIcons); 5 | 6 | function copyIcons() { 7 | const nodeSource = path.resolve('nodes', '**', '*.{png,svg}'); 8 | const nodeDestination = path.resolve('dist', 'nodes'); 9 | 10 | return src(nodeSource).pipe(dest(nodeDestination)); 11 | 12 | // const credSource = path.resolve('credentials', '**', '*.{png,svg}'); 13 | // const credDestination = path.resolve('dist', 'credentials'); 14 | 15 | // return src(credSource).pipe(dest(credDestination)); 16 | } 17 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minhlucvan/n8n-nodes-notionmd/fb3e69d8817b255ba683dd18999c149ef818af76/index.js -------------------------------------------------------------------------------- /jest.config.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * For a detailed explanation regarding each configuration property, visit: 3 | * https://jestjs.io/docs/configuration 4 | */ 5 | 6 | import type {Config} from 'jest'; 7 | 8 | const config: Config = { 9 | // All imported modules in your tests should be mocked automatically 10 | // automock: false, 11 | 12 | // Stop running tests after `n` failures 13 | // bail: 0, 14 | 15 | preset: 'ts-jest', 16 | testEnvironment: 'node', 17 | 18 | // The directory where Jest should store its cached dependency information 19 | // cacheDirectory: "/tmp/jest_rs", 20 | 21 | // Automatically clear mock calls, instances, contexts and results before every test 22 | clearMocks: true, 23 | 24 | // Indicates whether the coverage information should be collected while executing the test 25 | collectCoverage: true, 26 | 27 | // An array of glob patterns indicating a set of files for which coverage information should be collected 28 | // collectCoverageFrom: undefined, 29 | 30 | // The directory where Jest should output its coverage files 31 | coverageDirectory: "coverage", 32 | 33 | // An array of regexp pattern strings used to skip coverage collection 34 | // coveragePathIgnorePatterns: [ 35 | // "/node_modules/" 36 | // ], 37 | 38 | // Indicates which provider should be used to instrument code for coverage 39 | coverageProvider: "v8", 40 | 41 | // A list of reporter names that Jest uses when writing coverage reports 42 | // coverageReporters: [ 43 | // "json", 44 | // "text", 45 | // "lcov", 46 | // "clover" 47 | // ], 48 | 49 | // An object that configures minimum threshold enforcement for coverage results 50 | // coverageThreshold: undefined, 51 | 52 | // A path to a custom dependency extractor 53 | // dependencyExtractor: undefined, 54 | 55 | // Make calling deprecated APIs throw helpful error messages 56 | // errorOnDeprecated: false, 57 | 58 | // The default configuration for fake timers 59 | // fakeTimers: { 60 | // "enableGlobally": false 61 | // }, 62 | 63 | // Force coverage collection from ignored files using an array of glob patterns 64 | // forceCoverageMatch: [], 65 | 66 | // A path to a module which exports an async function that is triggered once before all test suites 67 | // globalSetup: undefined, 68 | 69 | // A path to a module which exports an async function that is triggered once after all test suites 70 | // globalTeardown: undefined, 71 | 72 | // A set of global variables that need to be available in all test environments 73 | // globals: {}, 74 | 75 | // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers. 76 | // maxWorkers: "50%", 77 | 78 | // An array of directory names to be searched recursively up from the requiring module's location 79 | // moduleDirectories: [ 80 | // "node_modules" 81 | // ], 82 | 83 | // An array of file extensions your modules use 84 | // moduleFileExtensions: [ 85 | // "js", 86 | // "mjs", 87 | // "cjs", 88 | // "jsx", 89 | // "ts", 90 | // "tsx", 91 | // "json", 92 | // "node" 93 | // ], 94 | 95 | // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module 96 | // moduleNameMapper: {}, 97 | 98 | // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader 99 | // modulePathIgnorePatterns: [], 100 | 101 | // Activates notifications for test results 102 | // notify: false, 103 | 104 | // An enum that specifies notification mode. Requires { notify: true } 105 | // notifyMode: "failure-change", 106 | 107 | // A preset that is used as a base for Jest's configuration 108 | // preset: undefined, 109 | 110 | // Run tests from one or more projects 111 | // projects: undefined, 112 | 113 | // Use this configuration option to add custom reporters to Jest 114 | // reporters: undefined, 115 | 116 | // Automatically reset mock state before every test 117 | // resetMocks: false, 118 | 119 | // Reset the module registry before running each individual test 120 | // resetModules: false, 121 | 122 | // A path to a custom resolver 123 | // resolver: undefined, 124 | 125 | // Automatically restore mock state and implementation before every test 126 | // restoreMocks: false, 127 | 128 | // The root directory that Jest should scan for tests and modules within 129 | // rootDir: undefined, 130 | 131 | // A list of paths to directories that Jest should use to search for files in 132 | // roots: [ 133 | // "" 134 | // ], 135 | 136 | // Allows you to use a custom runner instead of Jest's default test runner 137 | // runner: "jest-runner", 138 | 139 | // The paths to modules that run some code to configure or set up the testing environment before each test 140 | // setupFiles: [], 141 | 142 | // A list of paths to modules that run some code to configure or set up the testing framework before each test 143 | // setupFilesAfterEnv: [], 144 | 145 | // The number of seconds after which a test is considered as slow and reported as such in the results. 146 | // slowTestThreshold: 5, 147 | 148 | // A list of paths to snapshot serializer modules Jest should use for snapshot testing 149 | // snapshotSerializers: [], 150 | 151 | // The test environment that will be used for testing 152 | // testEnvironment: "jest-environment-node", 153 | 154 | // Options that will be passed to the testEnvironment 155 | // testEnvironmentOptions: {}, 156 | 157 | // Adds a location field to test results 158 | // testLocationInResults: false, 159 | 160 | // The glob patterns Jest uses to detect test files 161 | // testMatch: [ 162 | // "**/__tests__/**/*.[jt]s?(x)", 163 | // "**/?(*.)+(spec|test).[tj]s?(x)" 164 | // ], 165 | 166 | // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped 167 | // testPathIgnorePatterns: [ 168 | // "/node_modules/" 169 | // ], 170 | 171 | // The regexp pattern or array of patterns that Jest uses to detect test files 172 | // testRegex: [], 173 | 174 | // This option allows the use of a custom results processor 175 | // testResultsProcessor: undefined, 176 | 177 | // This option allows use of a custom test runner 178 | // testRunner: "jest-circus/runner", 179 | 180 | // A map from regular expressions to paths to transformers 181 | // transform: undefined, 182 | 183 | // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation 184 | // transformIgnorePatterns: [ 185 | // "/node_modules/", 186 | // "\\.pnp\\.[^\\/]+$" 187 | // ], 188 | 189 | // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them 190 | // unmockedModulePathPatterns: undefined, 191 | 192 | // Indicates whether each individual test should be reported during the run 193 | // verbose: undefined, 194 | 195 | // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode 196 | // watchPathIgnorePatterns: [], 197 | 198 | // Whether to use watchman for file crawling 199 | // watchman: true, 200 | }; 201 | 202 | export default config; 203 | -------------------------------------------------------------------------------- /nodes/NotionMd/NotionMd.node.test.ts: -------------------------------------------------------------------------------- 1 | import { NotionMd } from './NotionMd.node'; 2 | import { IExecuteFunctions } from 'n8n-workflow'; 3 | 4 | jest.mock('@tryfabric/martian', () => ({ 5 | markdownToBlocks: jest.fn(), 6 | })); 7 | 8 | const { markdownToBlocks } = require('@tryfabric/martian'); 9 | 10 | describe('NotionMdNode', () => { 11 | let notionMdNode: NotionMd; 12 | let context: Partial; 13 | 14 | const getInputDataMock = jest.fn(); 15 | const getNodeParameterMock = jest.fn(); 16 | const prepareOutputDataMock = jest.fn(); 17 | 18 | beforeEach(() => { 19 | markdownToBlocks.mockReset(); 20 | getInputDataMock.mockReset(); 21 | getNodeParameterMock.mockReset(); 22 | prepareOutputDataMock.mockReset(); 23 | 24 | notionMdNode = new NotionMd(); 25 | context = { 26 | getInputData: getInputDataMock, 27 | getNodeParameter: getNodeParameterMock, 28 | prepareOutputData: prepareOutputDataMock, 29 | continueOnFail: jest.fn(), 30 | getNode: jest.fn().mockReturnValue({}) 31 | }; 32 | }); 33 | 34 | test('execute', async () => { 35 | const testCases = [ 36 | { 37 | operation: 'markdownToNotion', 38 | input: 'test markdown', 39 | outputKey: 'testOutput', 40 | response: 'mockedNotion', 41 | }, 42 | ]; 43 | 44 | for (const testCase of testCases) { 45 | getInputDataMock.mockReturnValueOnce([{ json: {} }]); 46 | getNodeParameterMock 47 | .mockReturnValueOnce(testCase.operation) 48 | .mockReturnValueOnce(testCase.input) 49 | .mockReturnValueOnce(testCase.outputKey); 50 | 51 | if (testCase.operation === 'markdownToNotion') { 52 | markdownToBlocks.mockResolvedValueOnce(testCase.response); 53 | } 54 | 55 | prepareOutputDataMock.mockReturnValueOnce([{ json: { [testCase.outputKey]: testCase.response } }]); 56 | 57 | const result = await notionMdNode.execute.call(context as any); 58 | 59 | expect(result).toEqual([{ json: { [testCase.outputKey]: testCase.response } }]); 60 | 61 | if (testCase.operation === 'markdownToNotion') { 62 | expect(markdownToBlocks).toHaveBeenCalledWith(testCase.input); 63 | } 64 | 65 | expect(getNodeParameterMock).toHaveBeenCalledWith('operation', 0, ""); 66 | expect(getNodeParameterMock).toHaveBeenCalledWith('input', 0, ""); 67 | expect(getNodeParameterMock).toHaveBeenCalledWith('outputKey', 0, ""); 68 | expect(prepareOutputDataMock).toHaveBeenCalledWith([{ json: { [testCase.outputKey]: testCase.response } }]); 69 | } 70 | }); 71 | }); 72 | -------------------------------------------------------------------------------- /nodes/NotionMd/NotionMd.node.ts: -------------------------------------------------------------------------------- 1 | import { IExecuteFunctions } from 'n8n-core'; 2 | import { 3 | INodeExecutionData, 4 | INodeType, 5 | INodeTypeDescription, 6 | NodeOperationError, 7 | } from 'n8n-workflow'; 8 | 9 | import {markdownToBlocks} from '@tryfabric/martian'; 10 | 11 | export class NotionMd implements INodeType { 12 | description: INodeTypeDescription = { 13 | displayName: 'Notion MD', 14 | name: 'notionMd', 15 | // eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg 16 | icon: 'file:free-markdown.png', 17 | group: ['transform'], 18 | version: 1, 19 | description: 'Node to transform markdown and notion blocks', 20 | defaults: { 21 | name: 'Notion MD', 22 | }, 23 | inputs: ['main'], 24 | outputs: ['main'], 25 | properties: [ 26 | { 27 | displayName: 'Operation', 28 | name: 'operation', 29 | type: 'options', 30 | noDataExpression: true, 31 | options: [ 32 | { 33 | name: 'Markdown to Notion', 34 | value: 'markdownToNotion', 35 | }, 36 | { 37 | name: 'Notion to Markdown', 38 | value: 'notionToMarkdown', 39 | }, 40 | ], 41 | default: 'markdownToNotion', 42 | description: 'Choose whether you want to convert markdown to notion or vice versa', 43 | }, 44 | { 45 | displayName: 'Input', 46 | name: 'input', 47 | type: 'string', 48 | default: '', 49 | placeholder: 'Place your markdown or notion blocks here', 50 | description: 'The input to be transformed', 51 | }, 52 | { 53 | displayName: 'Output Key', 54 | name: 'outputKey', 55 | type: 'string', 56 | default: 'output', 57 | description: 'Key to use for the output object', 58 | }, 59 | ], 60 | }; 61 | 62 | async execute(this: IExecuteFunctions): Promise { 63 | const items = this.getInputData(); 64 | let item: INodeExecutionData; 65 | let operation: string; 66 | let input: string; 67 | let outputKey: string; 68 | 69 | for (let itemIndex = 0; itemIndex < items.length; itemIndex++) { 70 | try { 71 | operation = this.getNodeParameter('operation', itemIndex, '') as string; 72 | input = this.getNodeParameter('input', itemIndex, '') as string; 73 | outputKey = this.getNodeParameter('outputKey', itemIndex, '') as string; 74 | item = items[itemIndex]; 75 | 76 | if (operation === 'markdownToNotion') { 77 | item.json[outputKey] = await markdownToNotion.call(this, input); 78 | } else if (operation === 'notionToMarkdown') { 79 | throw new NodeOperationError(this.getNode(), 'not implemeted') 80 | // item.json[outputKey] = await notionToMarkdown(this, input); 81 | } else { 82 | throw new NodeOperationError(this.getNode(), `The operation "${operation}" is not known!`); 83 | } 84 | } catch (error) { 85 | if (this.continueOnFail()) { 86 | items.push({ json: this.getInputData(itemIndex)[0].json, error, pairedItem: itemIndex }); 87 | } else { 88 | if (error.context) { 89 | error.context.itemIndex = itemIndex; 90 | throw error; 91 | } 92 | throw new NodeOperationError(this.getNode(), error, { 93 | itemIndex, 94 | }); 95 | } 96 | } 97 | } 98 | return this.prepareOutputData(items); 99 | } 100 | } 101 | 102 | async function markdownToNotion(this: IExecuteFunctions, input: string): Promise { 103 | return markdownToBlocks(input); 104 | } 105 | 106 | // @ts-ignore 107 | async function notionToMarkdown(this: IExecuteFunctions, input: string): Promise { 108 | return null; 109 | } 110 | -------------------------------------------------------------------------------- /nodes/NotionMd/free-markdown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/minhlucvan/n8n-nodes-notionmd/fb3e69d8817b255ba683dd18999c149ef818af76/nodes/NotionMd/free-markdown.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "n8n-nodes-notionmd", 3 | "version": "0.1.0", 4 | "description": "n8n node to transform markdown to notion blocks", 5 | "keywords": [ 6 | "n8n-community-node-package", 7 | "markdown", 8 | "notion", 9 | "markdown-notion" 10 | ], 11 | "license": "MIT", 12 | "homepage": "https://github.com/minhlucvan/n8n-nodes-notionmd", 13 | "author": { 14 | "name": "minhlucvan", 15 | "email": "luk.mink@gmail.com" 16 | }, 17 | "repository": { 18 | "type": "git", 19 | "url": "https://github.com/minhlucvan/n8n-nodes-notionmd.git" 20 | }, 21 | "main": "index.js", 22 | "scripts": { 23 | "build": "tsc && gulp build:icons", 24 | "dev": "tsc --watch", 25 | "format": "prettier nodes --write", 26 | "lint": "eslint nodes package.json", 27 | "test": "jest", 28 | "lintfix": "eslint nodes package.json --fix", 29 | "prepublishOnly": "npm run build && npm run lint -c .eslintrc.prepublish.js nodes package.json" 30 | }, 31 | "files": [ 32 | "dist" 33 | ], 34 | "n8n": { 35 | "n8nNodesApiVersion": 1, 36 | "nodes": [ 37 | "dist/nodes/NotionMd/NotionMd.node.js" 38 | ] 39 | }, 40 | "devDependencies": { 41 | "@babel/preset-typescript": "^7.22.5", 42 | "@jest/globals": "^29.6.2", 43 | "@types/express": "^4.17.6", 44 | "@types/jest": "^29.5.3", 45 | "@types/request-promise-native": "~1.0.15", 46 | "@typescript-eslint/parser": "~5.45", 47 | "eslint-plugin-n8n-nodes-base": "^1.11.0", 48 | "gulp": "^4.0.2", 49 | "n8n-core": "^0.161.0", 50 | "n8n-workflow": "*", 51 | "prettier": "^2.7.1", 52 | "ts-jest": "^29.1.1", 53 | "typescript": "~4.8.4" 54 | }, 55 | "dependencies": { 56 | "@tryfabric/martian": "^1.2.4", 57 | "jest": "^29.6.2", 58 | "ts-node": "^10.9.1" 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "strict": true, 4 | "module": "commonjs", 5 | "moduleResolution": "node", 6 | "target": "es2019", 7 | "lib": ["es2019", "es2020", "es2022.error"], 8 | "removeComments": true, 9 | "useUnknownInCatchVariables": false, 10 | "forceConsistentCasingInFileNames": true, 11 | "noImplicitAny": true, 12 | "noImplicitReturns": true, 13 | "noUnusedLocals": true, 14 | "strictNullChecks": true, 15 | "preserveConstEnums": true, 16 | "esModuleInterop": true, 17 | "resolveJsonModule": true, 18 | "incremental": true, 19 | "declaration": true, 20 | "sourceMap": true, 21 | "skipLibCheck": true, 22 | "outDir": "./dist/", 23 | }, 24 | "include": [ 25 | "nodes/**/*", 26 | "nodes/**/*.json", 27 | "package.json" 28 | ], 29 | } 30 | 31 | -------------------------------------------------------------------------------- /tsconfig.tsbuildinfo: -------------------------------------------------------------------------------- 1 | {"program":{"fileNames":["./node_modules/typescript/lib/lib.es5.d.ts","./node_modules/typescript/lib/lib.es2015.d.ts","./node_modules/typescript/lib/lib.es2016.d.ts","./node_modules/typescript/lib/lib.es2017.d.ts","./node_modules/typescript/lib/lib.es2018.d.ts","./node_modules/typescript/lib/lib.es2019.d.ts","./node_modules/typescript/lib/lib.es2020.d.ts","./node_modules/typescript/lib/lib.es2015.core.d.ts","./node_modules/typescript/lib/lib.es2015.collection.d.ts","./node_modules/typescript/lib/lib.es2015.generator.d.ts","./node_modules/typescript/lib/lib.es2015.iterable.d.ts","./node_modules/typescript/lib/lib.es2015.promise.d.ts","./node_modules/typescript/lib/lib.es2015.proxy.d.ts","./node_modules/typescript/lib/lib.es2015.reflect.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.d.ts","./node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2016.array.include.d.ts","./node_modules/typescript/lib/lib.es2017.object.d.ts","./node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2017.string.d.ts","./node_modules/typescript/lib/lib.es2017.intl.d.ts","./node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","./node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","./node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","./node_modules/typescript/lib/lib.es2018.intl.d.ts","./node_modules/typescript/lib/lib.es2018.promise.d.ts","./node_modules/typescript/lib/lib.es2018.regexp.d.ts","./node_modules/typescript/lib/lib.es2019.array.d.ts","./node_modules/typescript/lib/lib.es2019.object.d.ts","./node_modules/typescript/lib/lib.es2019.string.d.ts","./node_modules/typescript/lib/lib.es2019.symbol.d.ts","./node_modules/typescript/lib/lib.es2020.bigint.d.ts","./node_modules/typescript/lib/lib.es2020.date.d.ts","./node_modules/typescript/lib/lib.es2020.promise.d.ts","./node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","./node_modules/typescript/lib/lib.es2020.string.d.ts","./node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","./node_modules/typescript/lib/lib.es2020.intl.d.ts","./node_modules/typescript/lib/lib.es2020.number.d.ts","./node_modules/typescript/lib/lib.es2022.error.d.ts","./node_modules/typescript/lib/lib.esnext.intl.d.ts","./node_modules/@types/node/assert.d.ts","./node_modules/@types/node/assert/strict.d.ts","./node_modules/@types/node/globals.d.ts","./node_modules/@types/node/async_hooks.d.ts","./node_modules/@types/node/buffer.d.ts","./node_modules/@types/node/child_process.d.ts","./node_modules/@types/node/cluster.d.ts","./node_modules/@types/node/console.d.ts","./node_modules/@types/node/constants.d.ts","./node_modules/@types/node/crypto.d.ts","./node_modules/@types/node/dgram.d.ts","./node_modules/@types/node/diagnostics_channel.d.ts","./node_modules/@types/node/dns.d.ts","./node_modules/@types/node/dns/promises.d.ts","./node_modules/@types/node/domain.d.ts","./node_modules/@types/node/events.d.ts","./node_modules/@types/node/fs.d.ts","./node_modules/@types/node/fs/promises.d.ts","./node_modules/@types/node/http.d.ts","./node_modules/@types/node/http2.d.ts","./node_modules/@types/node/https.d.ts","./node_modules/@types/node/inspector.d.ts","./node_modules/@types/node/module.d.ts","./node_modules/@types/node/net.d.ts","./node_modules/@types/node/os.d.ts","./node_modules/@types/node/path.d.ts","./node_modules/@types/node/perf_hooks.d.ts","./node_modules/@types/node/process.d.ts","./node_modules/@types/node/punycode.d.ts","./node_modules/@types/node/querystring.d.ts","./node_modules/@types/node/readline.d.ts","./node_modules/@types/node/repl.d.ts","./node_modules/@types/node/stream.d.ts","./node_modules/@types/node/stream/promises.d.ts","./node_modules/@types/node/stream/consumers.d.ts","./node_modules/@types/node/stream/web.d.ts","./node_modules/@types/node/string_decoder.d.ts","./node_modules/@types/node/test.d.ts","./node_modules/@types/node/timers.d.ts","./node_modules/@types/node/timers/promises.d.ts","./node_modules/@types/node/tls.d.ts","./node_modules/@types/node/trace_events.d.ts","./node_modules/@types/node/tty.d.ts","./node_modules/@types/node/url.d.ts","./node_modules/@types/node/util.d.ts","./node_modules/@types/node/v8.d.ts","./node_modules/@types/node/vm.d.ts","./node_modules/@types/node/wasi.d.ts","./node_modules/@types/node/worker_threads.d.ts","./node_modules/@types/node/zlib.d.ts","./node_modules/@types/node/globals.global.d.ts","./node_modules/@types/node/index.d.ts","./node_modules/n8n-core/dist/EventEmitter.d.ts","./node_modules/@types/range-parser/index.d.ts","./node_modules/@types/qs/index.d.ts","./node_modules/@types/express-serve-static-core/index.d.ts","./node_modules/@types/mime/index.d.ts","./node_modules/@types/serve-static/index.d.ts","./node_modules/@types/connect/index.d.ts","./node_modules/@types/body-parser/index.d.ts","./node_modules/@types/express/index.d.ts","./node_modules/form-data/index.d.ts","./node_modules/@types/caseless/index.d.ts","./node_modules/@types/tough-cookie/index.d.ts","./node_modules/@types/request/index.d.ts","./node_modules/@types/request-promise-native/index.d.ts","./node_modules/n8n-workflow/dist/DeferredPromise.d.ts","./node_modules/n8n-workflow/dist/Expression.d.ts","./node_modules/n8n-workflow/dist/Workflow.d.ts","./node_modules/n8n-workflow/dist/WorkflowHooks.d.ts","./node_modules/n8n-workflow/dist/NodeErrors.d.ts","./node_modules/n8n-workflow/dist/WorkflowActivationError.d.ts","./node_modules/n8n-workflow/dist/WorkflowErrors.d.ts","./node_modules/n8n-workflow/dist/ExpressionError.d.ts","./node_modules/n8n-workflow/dist/ExecutionStatus.d.ts","./node_modules/n8n-workflow/dist/Interfaces.d.ts","./node_modules/n8n-workflow/dist/LoggerProxy.d.ts","./node_modules/n8n-workflow/dist/utils.d.ts","./node_modules/n8n-workflow/dist/ErrorReporterProxy.d.ts","./node_modules/n8n-workflow/dist/NodeHelpers.d.ts","./node_modules/n8n-workflow/dist/ObservableObject.d.ts","./node_modules/n8n-workflow/dist/TelemetryHelpers.d.ts","./node_modules/n8n-workflow/dist/Authentication.d.ts","./node_modules/n8n-workflow/dist/Constants.d.ts","./node_modules/n8n-workflow/dist/Cron.d.ts","./node_modules/n8n-workflow/dist/MessageEventBus.d.ts","./node_modules/n8n-workflow/dist/RoutingNode.d.ts","./node_modules/n8n-workflow/dist/WorkflowDataProxy.d.ts","./node_modules/n8n-workflow/dist/VersionedNodeType.d.ts","./node_modules/n8n-workflow/dist/type-guards.d.ts","./node_modules/n8n-workflow/dist/Extensions/Extensions.d.ts","./node_modules/n8n-workflow/dist/Extensions/ExpressionExtension.d.ts","./node_modules/n8n-workflow/dist/Extensions/index.d.ts","./node_modules/n8n-workflow/dist/NativeMethods/index.d.ts","./node_modules/n8n-workflow/dist/index.d.ts","./node_modules/n8n-core/dist/NodeExecuteFunctions.d.ts","./node_modules/n8n-core/dist/Interfaces.d.ts","./node_modules/n8n-core/dist/UserSettings.d.ts","./node_modules/n8n-core/dist/ActiveWorkflows.d.ts","./node_modules/n8n-core/dist/BinaryDataManager/index.d.ts","./node_modules/n8n-core/dist/ClassLoader.d.ts","./node_modules/n8n-core/dist/Constants.d.ts","./node_modules/n8n-core/dist/Credentials.d.ts","./node_modules/n8n-core/dist/DirectoryLoader.d.ts","./node_modules/n8n-core/dist/LoadNodeDetails.d.ts","./node_modules/n8n-core/dist/LoadNodeParameterOptions.d.ts","./node_modules/n8n-core/dist/LoadNodeListSearch.d.ts","./node_modules/p-cancelable/index.d.ts","./node_modules/n8n-core/dist/WorkflowExecute.d.ts","./node_modules/n8n-core/dist/errors.d.ts","./node_modules/n8n-core/dist/index.d.ts","./node_modules/@notionhq/client/build/src/api-endpoints.d.ts","./node_modules/@tryfabric/martian/build/src/notion/blocks.d.ts","./node_modules/@tryfabric/martian/build/src/notion/common.d.ts","./node_modules/@tryfabric/martian/build/src/notion/index.d.ts","./node_modules/@types/unist/index.d.ts","./node_modules/@tryfabric/martian/build/src/markdown/types.d.ts","./node_modules/@tryfabric/martian/build/src/markdown/ast.d.ts","./node_modules/@tryfabric/martian/build/src/markdown/index.d.ts","./node_modules/@tryfabric/martian/build/src/parser/internal.d.ts","./node_modules/@tryfabric/martian/build/src/index.d.ts","./nodes/NotionMd/NotionMd.node.ts","./nodes/NotionMd/NotionMd.node.test.ts","./package.json","./node_modules/@babel/types/lib/index.d.ts","./node_modules/@types/babel__generator/index.d.ts","./node_modules/@babel/parser/typings/babel-parser.d.ts","./node_modules/@types/babel__template/index.d.ts","./node_modules/@types/babel__traverse/index.d.ts","./node_modules/@types/babel__core/index.d.ts","./node_modules/@types/graceful-fs/index.d.ts","./node_modules/@types/istanbul-lib-coverage/index.d.ts","./node_modules/@types/istanbul-lib-report/index.d.ts","./node_modules/@types/istanbul-reports/index.d.ts","./node_modules/@jest/expect-utils/build/index.d.ts","./node_modules/chalk/index.d.ts","./node_modules/@sinclair/typebox/typebox.d.ts","./node_modules/@jest/schemas/build/index.d.ts","./node_modules/pretty-format/build/index.d.ts","./node_modules/jest-diff/build/index.d.ts","./node_modules/jest-matcher-utils/build/index.d.ts","./node_modules/expect/build/index.d.ts","./node_modules/@types/jest/index.d.ts","./node_modules/@types/json-schema/index.d.ts","./node_modules/@types/mdast/index.d.ts","./node_modules/@types/node-fetch/node_modules/form-data/index.d.ts","./node_modules/@types/node-fetch/externals.d.ts","./node_modules/@types/node-fetch/index.d.ts","./node_modules/@types/stack-utils/index.d.ts","./node_modules/@types/yargs-parser/index.d.ts","./node_modules/@types/yargs/index.d.ts"],"fileInfos":[{"version":"f20c05dbfe50a208301d2a1da37b9931bce0466eb5a1f4fe240971b4ecc82b67","affectsGlobalScope":true},"dc47c4fa66b9b9890cf076304de2a9c5201e94b740cffdf09f87296d877d71f6","7a387c58583dfca701b6c85e0adaf43fb17d590fb16d5b2dc0a2fbd89f35c467","8a12173c586e95f4433e0c6dc446bc88346be73ffe9ca6eec7aa63c8f3dca7f9","5f4e733ced4e129482ae2186aae29fde948ab7182844c3a5a51dd346182c7b06","e6b724280c694a9f588847f754198fb96c43d805f065c3a5b28bbc9594541c84","1fc5ab7a764205c68fa10d381b08417795fc73111d6dd16b5b1ed36badb743d9",{"version":"adb996790133eb33b33aadb9c09f15c2c575e71fb57a62de8bf74dbf59ec7dfb","affectsGlobalScope":true},{"version":"8cc8c5a3bac513368b0157f3d8b31cfdcfe78b56d3724f30f80ed9715e404af8","affectsGlobalScope":true},{"version":"cdccba9a388c2ee3fd6ad4018c640a471a6c060e96f1232062223063b0a5ac6a","affectsGlobalScope":true},{"version":"c5c05907c02476e4bde6b7e76a79ffcd948aedd14b6a8f56e4674221b0417398","affectsGlobalScope":true},{"version":"0d5f52b3174bee6edb81260ebcd792692c32c81fd55499d69531496f3f2b25e7","affectsGlobalScope":true},{"version":"55f400eec64d17e888e278f4def2f254b41b89515d3b88ad75d5e05f019daddd","affectsGlobalScope":true},{"version":"181f1784c6c10b751631b24ce60c7f78b20665db4550b335be179217bacc0d5f","affectsGlobalScope":true},{"version":"3013574108c36fd3aaca79764002b3717da09725a36a6fc02eac386593110f93","affectsGlobalScope":true},{"version":"75ec0bdd727d887f1b79ed6619412ea72ba3c81d92d0787ccb64bab18d261f14","affectsGlobalScope":true},{"version":"3be5a1453daa63e031d266bf342f3943603873d890ab8b9ada95e22389389006","affectsGlobalScope":true},{"version":"17bb1fc99591b00515502d264fa55dc8370c45c5298f4a5c2083557dccba5a2a","affectsGlobalScope":true},{"version":"7ce9f0bde3307ca1f944119f6365f2d776d281a393b576a18a2f2893a2d75c98","affectsGlobalScope":true},{"version":"6a6b173e739a6a99629a8594bfb294cc7329bfb7b227f12e1f7c11bc163b8577","affectsGlobalScope":true},{"version":"81cac4cbc92c0c839c70f8ffb94eb61e2d32dc1c3cf6d95844ca099463cf37ea","affectsGlobalScope":true},{"version":"b0124885ef82641903d232172577f2ceb5d3e60aed4da1153bab4221e1f6dd4e","affectsGlobalScope":true},{"version":"0eb85d6c590b0d577919a79e0084fa1744c1beba6fd0d4e951432fa1ede5510a","affectsGlobalScope":true},{"version":"da233fc1c8a377ba9e0bed690a73c290d843c2c3d23a7bd7ec5cd3d7d73ba1e0","affectsGlobalScope":true},{"version":"d154ea5bb7f7f9001ed9153e876b2d5b8f5c2bb9ec02b3ae0d239ec769f1f2ae","affectsGlobalScope":true},{"version":"bb2d3fb05a1d2ffbca947cc7cbc95d23e1d053d6595391bd325deb265a18d36c","affectsGlobalScope":true},{"version":"c80df75850fea5caa2afe43b9949338ce4e2de086f91713e9af1a06f973872b8","affectsGlobalScope":true},{"version":"9d57b2b5d15838ed094aa9ff1299eecef40b190722eb619bac4616657a05f951","affectsGlobalScope":true},{"version":"6c51b5dd26a2c31dbf37f00cfc32b2aa6a92e19c995aefb5b97a3a64f1ac99de","affectsGlobalScope":true},{"version":"6e7997ef61de3132e4d4b2250e75343f487903ddf5370e7ce33cf1b9db9a63ed","affectsGlobalScope":true},{"version":"2ad234885a4240522efccd77de6c7d99eecf9b4de0914adb9a35c0c22433f993","affectsGlobalScope":true},{"version":"09aa50414b80c023553090e2f53827f007a301bc34b0495bfb2c3c08ab9ad1eb","affectsGlobalScope":true},{"version":"d7f680a43f8cd12a6b6122c07c54ba40952b0c8aa140dcfcf32eb9e6cb028596","affectsGlobalScope":true},{"version":"3787b83e297de7c315d55d4a7c546ae28e5f6c0a361b7a1dcec1f1f50a54ef11","affectsGlobalScope":true},{"version":"e7e8e1d368290e9295ef18ca23f405cf40d5456fa9f20db6373a61ca45f75f40","affectsGlobalScope":true},{"version":"faf0221ae0465363c842ce6aa8a0cbda5d9296940a8e26c86e04cc4081eea21e","affectsGlobalScope":true},{"version":"06393d13ea207a1bfe08ec8d7be562549c5e2da8983f2ee074e00002629d1871","affectsGlobalScope":true},{"version":"775d9c9fd150d5de79e0450f35bc8b8f94ae64e3eb5da12725ff2a649dccc777","affectsGlobalScope":true},{"version":"b248e32ca52e8f5571390a4142558ae4f203ae2f94d5bac38a3084d529ef4e58","affectsGlobalScope":true},{"version":"ab7d58e6161a550ff92e5aff755dc37fe896245348332cd5f1e1203479fe0ed1","affectsGlobalScope":true},{"version":"52d1bb7ab7a3306fd0375c8bff560feed26ed676a5b0457fa8027b563aecb9a4","affectsGlobalScope":true},"9122ed7070e054b73ebab37c2373a196def2d90e7d1a9a7fcd9d46b0e51fae78","a69c09dbea52352f479d3e7ac949fde3d17b195abe90b045d619f747b38d6d1a",{"version":"77f0b5c6a193a699c9f7d7fb0578e64e562d271afa740783665d2a827104a873","affectsGlobalScope":true},"21a167fec8f933752fb8157f06d28fab6817af3ad9b0bdb1908a10762391eab9",{"version":"3e4624c306340ad303cc536a07004e81336c3f088308a9e4a9f4c957a3cda2fd","affectsGlobalScope":true},"0c0cee62cb619aed81133b904f644515ba3064487002a7da83fd8aa07b1b4abd","5a94487653355b56018122d92392beb2e5f4a6c63ba5cef83bbe1c99775ef713",{"version":"d5135ad93b33adcce80b18f8065087934cdc1730d63db58562edcf017e1aad9b","affectsGlobalScope":true},"82408ed3e959ddc60d3e9904481b5a8dc16469928257af22a3f7d1a3bc7fd8c4","34ec1daf3566f26c43dbab380af0de1aac29166e57e4f9ef379a2f154e0cb290","bb9c4ffa5e6290c6980b63c815cdd1625876dadb2efaf77edbe82984be93e55e","75ecef44f126e2ae018b4abbd85b6e8a2e2ba1638ebec56cc64274643ce3567b","f30bb836526d930a74593f7b0f5c1c46d10856415a8f69e5e2fc3db80371e362","14b5aa23c5d0ae1907bc696ac7b6915d88f7d85799cc0dc2dcf98fbce2c5a67c","5c439dafdc09abe4d6c260a96b822fa0ba5be7203c71a63ab1f1423cd9e838ea",{"version":"249a2b90439cdfd51709539fbfa4dfe0791cbae6efce1e9b327ba8f8cd703f49","affectsGlobalScope":true},"2f60ac046e587e917d739f1edc77540eb0ec34f83090dae4ebd5f96c1c9578d4","a9b6b0f7b1e30359283b131ba6d1c51ee2d3601a2f12e1623141e6a1a60c92a5","aeee0090b38de0dd47ca9a79ad5c2d156e3e09d92306719b0b45a3e96098e564","7bac475dcdd9f7e4e9da934d32c305bc889c4ce3c8ac0ef45a93a8d670fff607","09416dd69576b03a3f485adf329a02f043e4a481e060ef5b208194e488d31fd9","8acf99b1c8682276a63ea5bb68433782715892726b97e4604a415e4e56bce41c",{"version":"e8b18c6385ff784228a6f369694fcf1a6b475355ba89090a88de13587a9391d5","affectsGlobalScope":true},"3b145a2351f5cf16abf999c8d5f4481c74dffdc54ec1e9a89992e2622e1226c5","a907bf91df26df2400858ef75f749498fb5cf00062bf90a737ac3949cc07978d","d270fd4b565eda11a0a737c181892316b7a1ace06c7988d0246219c3df11db06","4275d5f964e7fc7afc18538e26b3748c207dd772998346d17f409749aa1f3a63",{"version":"59a638a504490fecaacf0020b9814b6abee37edb66047eb1ab9f7c2274bf1da0","affectsGlobalScope":true},"5153a2fd150e46ce57bb3f8db1318d33f6ad3261ed70ceeff92281c0608c74a3","d1a78a3c5708807e8de3e399f91df4797c62e44b02195eefc2209b2e713e54ee","8c4c1a64db28930732033c31418f817dcb9d09d706766707ae6d38f23faf0c53","25846d43937c672bab7e8195f3d881f93495df712ee901860effc109918938cc","d4fc97ea27a8226c5429b73efe7f0d9d78c0269e2995f6dba8bac64fc1b132dc","1b952304137851e45bc009785de89ada562d9376177c97e37702e39e60c2f1ff",{"version":"806ef4cac3b3d9fa4a48d849c8e084d7c72fcd7b16d76e06049a9ed742ff79c0","affectsGlobalScope":true},"44b8b584a338b190a59f4f6929d072431950c7bd92ec2694821c11bce180c8a5","23b89798789dffbd437c0c423f5d02d11f9736aea73d6abf16db4f812ff36eda","29d613c3964ea75b2b4e0d17098245c34529282e9cc72b7e4eeb2a7b12c27cb7",{"version":"970a90f76d4d219ad60819d61f5994514087ba94c985647a3474a5a3d12714ed","affectsGlobalScope":true},"664d8f2d59164f2e08c543981453893bc7e003e4dfd29651ce09db13e9457980","a381f079c4804442f179d742fdb2e495fe28d67a47cac673485f75ae2e77aeca","3c13ef48634e7b5012fcf7e8fce7496352c2d779a7201389ca96a2a81ee4314d","5d0a25ec910fa36595f85a67ac992d7a53dd4064a1ba6aea1c9f14ab73a023f2",{"version":"bfe39beb986d2a2e512c091cbe924f1c415bc65de54de0e2f6a0dc6f84c183d9","affectsGlobalScope":true},"2af17363f8a062e3a8cd1b26030af0058b3f86e783f4fc6aa9f57247f240ebaa","06d7c42d256f0ce6afe1b2b6cfbc97ab391f29dadb00dd0ae8e8f23f5bc916c3","dfe08140492cdc135fb7fd9c4a652c05207b61a436906079b87da1d3111314bf","e59a892d87e72733e2a9ca21611b9beb52977be2696c7ba4b216cbbb9a48f5aa","089e1f8603cbc35ab977c8dcc662eb754b82fca32ed1dfb16bd682726c2d5432","8a300fa9b698845a1f9c41ecbe2c5966634582a8e2020d51abcace9b55aa959e",{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true},"82fc37849846a3a0264047621d5beb6ce2ddeb2f83bdee2c79523af3c3282d97","2e1229c84de62a5acadb51792a4384664405fc1191407530e47c7e20cefaf34f","16d51f964ec125ad2024cf03f0af444b3bc3ec3614d9345cc54d09bab45c9a4c","ba601641fac98c229ccd4a303f747de376d761babb33229bb7153bed9356c9cc",{"version":"101eb8b4e972b9326f39591e2e40e967e3331e8d960f81248daeb266ea1affec","affectsGlobalScope":true},"84e3bbd6f80983d468260fdbfeeb431cc81f7ea98d284d836e4d168e36875e86","0b85cb069d0e427ba946e5eb2d86ef65ffd19867042810516d16919f6c1a5aec","6d829824ead8999f87b6df21200df3c6150391b894b4e80662caa462bd48d073","afc559c1b93df37c25aef6b3dfa2d64325b0e112e887ee18bf7e6f4ec383fc90","15c88bfd1b8dc7231ff828ae8df5d955bae5ebca4cf2bcb417af5821e52299ae","e91ad231af87f864b3f07cd0e39b1cf6c133988156f087c1c3ccb0a5491c9115","5343f3c160282dfbaab9af350119a0c3b59b7076ef0117bb5995a66e240dab28","cc256fd958b33576ed32c7338c64adb0d08fc0c2c6525010202fab83f32745da","bf0b1297461549a0e32cd57dffb992c63d7c7134fe0f9e15d359abcc88dbd28c","7467a3a9a7941b98dc80713e03b474a1d5e0ce25701a9f1b3c96db00aed9880a","8b9e20585ff8d1664c6cd14d4b02ccc46300a7cf30871fae19436a5babedd86d","b73ef1ccaad3896839055bda96b3fa23e1bf64e0652a87a102c3c152455a6119","f57586cbbbc36bb7cbb96313791c2990ba520f5393290482ff1ed0f6651010ec","c2e81cdcaaaacf8fb582b2dba7dd20e61d69137aa4334592818cdd00cc9be2ee","9390a166195fc6abe56d2a57b67d099d8c0edfcb903789dc138e345479bc0965","3fd20ce4d7c8c2e388bc14c745fb9885ea24eab6451bbef4b6a2b01a441129b6","e793ba3683fc3c7e7708a5e00cf2a18115c3c2140f61e3390a5f960a66468e37","759b9a791a7d8fcd08ec4e95754062f6792e12359ab2b8938b0ed5fe16885d8e","e0c6580bc67ee43c8ca81a3b1531a7ccf4e69a5825ae597930edad1ad8b3cbcf","cae32af7e5d099eae5bf3d1e8856f70a3dcc3d8595473583c796e1230fb07560","3735c6d4f47344fb7e5f1f806af6a3b318a8001cb155a92dbe4a7615ed4ff57c","392b03d904a090e76fe2fd3be9aa64fd2bbe3a6323d56dc8ce5842008c8b9aee","3026ffe8ed2103258b0a25823715656eca63694485afb3848a510371635444a5","a6c64923287970134ed781651350b730196dd1fe70439ba766c22e7498e73469","edd5e20e9eb8cb2eaf941d431af3ab69a9b94e7f5d8699b4c938fee1be8d53c4","ac3cc90f9fa90ed3dfc9f3ec16e6082be364af9f9054afa924241aa017e42369","9ffc29217a231ceacfc98fd2c7ab10a0b985a9ccdba344d7ae5ae5bbb131380f","ecd8788bc039a4239461a29cf33183167991553321643dd81bc0667390150c24","0234584eaf3c5c21e7d3b79e1a9d71551e2a6fa5ca25bdc39c544f00e6e52b1e","f6956a5ec3b4e0922ab5e17b9cfecfd5dc51633fd67c17c262a08ab2c1ae5bc3","280c72d8d6a18e47b89a18e5d37d9070537096e6868994fcd59ee4f5a4d69cfb","cf6c4a3968683a226342403f0ba60060dd277c08097c28f78b2664cb0a6e56fc","951baa882e6e3e5026cb8a16f80a8bebec1caa35c3fa016c9a3ce6a338bd3123","3a710da4a0c4535f9de1d249379d5ca3998ce2c63aba7834398a0b019046513d","e38804187e84fd7b87a19aa9215d69cfad48a10511c4e6ffe2d87bcc4e29957c","5067e5ccf5e8a516f6bd8668ac660bace0b953298740dbb675d38e7ff00f482a","31720c5266808c8a63203a56ae9bb7238c8788395937f203680d007e3f9ffcc7","1f981721ece2d049f9dbd84a00b906915fa358aa1397419546501b866a38b982","98b51094cbe280fe634295ff90265d382189dfe95a2633b074d8432538a1ac4e","9307cfb8f10b1aaf2ae506e6f5fdc4553ea8ac2301e70cbb6515b6cd612acfa1","0aa75af1a6dec500510e6c123b66b49b5aca06f49fdce7b1746e57a2ab287b00","dbd8ec8dedb32e373b0b044e77cdff2b37e7c544c3858623b85ea599c122c9d0","dc09d7cf1e5004743e79b4060cf57b89f85bfd20487eb368e2ac549555a75b36","68fcc4525d629f3fa36ea369eb8e6ade63bb917e637b7bbc892925d4aef971f0","4bfdad139574f13b03a7cb18cce8d3e2bb1acf30b226aa59d2f75de6abb11aa6","4b4795d6b66d64eb433fdd49a632edd114c8192d9177ea377a917963d10433da","68493077398e4b3baa7e98a4dc6b2a6e4d52fc9ce9836428412070d1088d22d3","9a60b15742040c80eb3a6d57365df5c57c17d7a0d01c5d4be2e21927ecce3362","3d8165bbdd508d694e864a499ac6eb359b4476fc030c52af4679ed585bc76831","e4be278932b42cd9a89829e67d02e908348a39696cf48c4fb1b95293f760988a","2ce321f1ae14b928877d9ed07c4bdcb4da3910d367f7f7088ac78c7234816123","6bc64e37d72e60ec298911f260518ad11a875b236c237a4b4319a2c8f76a6467","cf5120ea2f17aa6df36a7b4b0e290090b97792d67fa589eddb79bad1e406773c","9ad1dcbfefaeb9a36bb76377f81265c3c532e86f5b38b6fca526016da7d266cd","e2d1278bfb00a4bc17692039a92f63c1762ff8ae5cfec8d7968b94b65eff23b7","16f3a87b740d1fa377e33fa2961264c1d3fa511085ef57ef15b3ca61221cbbf0","b7e22830c9242bd8f36bfb4270e129d49c1767a21484e3d5233a5f98590b9023","815f6b5fa198dca1883d2c45e942bffa9537fd9c148490e5d49dca1024d64c66","d92c7977d0088b171531edbf2049c40a725811d347762a2e60b3f813f417f209","cddf5c26907c0b8378bc05543161c11637b830da9fadf59e02a11e675d11e180","2f602fae3b91e5b33645c57bfc1eda5f7c8215bee2cddeb6da398d465b8ca4d7","93bc04ccdeec14eb7e9704dde5145d263ec013e56f4d0df9e508381939aa0bc7","99a0609ef5537dd6bca1262cc329c6914ffd2d1228a4eb5dbd35f200ddb8b64f","9aaf504a08255eb3010c4bb1e2012f3dbc9c5467a8ec1bc63155dd35fff0ee3b","60fc7ecaa54d5cd4d231f30a90c8ccf2224aa93fb830ed74d8cae0d2e4a476d5",{"version":"c0190a8fd82fa35389f62d12d4c71cd9520642c583f5a4d2bf9e2e220cb628fb","signature":"55a351ef5e0ec08f3f06ad98d29c92b2de0ddf81b6a39c57cfa7bde68665517b"},{"version":"1cc8c9e080be5530e0a966d0596da748e20768eae8f563aae61e1e76069e0b62","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"e5b829ce23dc74f93878c0f510b2636e2a0bf3bb9c571d5f35924faae75cb457","signature":"b954dea8afc3dddaa037ef73690630c8d432ea7d8ab26c4b40632fb5449cb809"},"ac65f04c2df0218cb8e54f012745cbfcc3c0e67c1f6b1e557d88842bbb72e2db","cc957354aa3c94c9961ebf46282cfde1e81d107fc5785a61f62c67f1dd3ac2eb","a2e86df4db576d80704e25293cec6f20fc6101a11f4747440e2eef58fb3c860c","93de1c6dab503f053efe8d304cb522bb3a89feab8c98f307a674a4fae04773e9","6704f0b54df85640baaeebd86c9d4a1dbb661d5a4d57a75bc84162f562f6531d","9d255af1b09c6697089d3c9bf438292a298d8b7a95c68793c9aae80afc9e5ca7","bf88ef4208a770ca39a844b182b3695df536326ea566893fdc5b8418702a331e","8b06ac3faeacb8484d84ddb44571d8f410697f98d7bfa86c0fda60373a9f5215","7eb06594824ada538b1d8b48c3925a83e7db792f47a081a62cf3e5c4e23cf0ee","f5638f7c2f12a9a1a57b5c41b3c1ea7db3876c003bab68e6a57afd6bcc169af0","6c1e688f95fcaf53b1e41c0fdadf2c1cfc96fa924eaf7f9fdb60f96deb0a4986","0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","c085e9aa62d1ae1375794c1fb927a445fa105fed891a7e24edbb1c3300f7384a","f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","6d969939c4a63f70f2aa49e88da6f64b655c8e6799612807bef41ccff6ea0da9",{"version":"b2fdcc3836d425833af10e536ae5491c34e218bc71870f12a401720f874b6ce4","affectsGlobalScope":true},"f3e604694b624fa3f83f6684185452992088f5efb2cf136b62474aa106d6f1b6","5774751340e987a6a9e4a5dcc03ff68a6515adc2b91423e1af2f660fc8f30e81","736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","626bccaba2f61f03abe558a39501631565389a748bc47dd52b305c80176333c1","3663d1b50f356656a314e5df169bb51cb9d5fd75905fa703f75db6bb32030568","b0d10e46cfe3f6c476b69af02eaa38e4ccc7430221ce3109ae84bb9fb8282298","70e9a18da08294f75bf23e46c7d69e67634c0765d355887b9b41f0d959e1426e","e9eb1b173aa166892f3eddab182e49cfe59aa2e14d33aedb6b49d175ed6a3750"],"options":{"declaration":true,"esModuleInterop":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./dist","preserveConstEnums":true,"removeComments":true,"rootDir":"./nodes","skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"target":6,"useUnknownInCatchVariables":false},"fileIdsList":[[86,166],[86],[86,178],[86,156,161],[86,158],[86,158,159],[86,157],[86,153,155],[86,154],[86,154,155],[86,156,160],[86,166,167,168,169,170],[86,166,168],[60,86,93,100,136],[60,86,93,136],[57,60,86,93,95,96,136],[86,96,97,99,101],[58,86,93],[86,173],[86,174],[86,180,183],[60,85,86,93,136,187,188],[60,74,86,93,136],[42,86],[45,86],[46,51,86],[47,57,58,65,74,85,86],[47,48,57,65,86],[49,86],[50,51,58,66,86],[51,74,82,86],[52,54,57,65,86],[53,86],[54,55,86],[56,57,86],[57,86],[57,58,59,74,85,86],[57,58,59,74,77,86],[86,90],[60,65,74,85,86,136],[57,58,60,61,65,74,82,85,86],[60,62,74,82,85,86],[42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92],[57,63,86],[64,85,86],[54,57,65,74,86],[66,86],[67,86],[45,68,86],[69,84,86,90],[70,86],[71,86],[57,72,86],[72,73,86,88],[57,74,75,76,77,86],[74,76,86],[74,75,86],[77,86],[78,86],[57,80,81,86],[80,81,86],[51,65,74,82,86],[83,86],[65,84,86],[46,60,71,85,86],[51,86],[74,86,87],[86,88],[86,89],[46,51,57,59,68,74,85,86,88,90],[74,86,91],[60,86,106,136],[58,60,62,65,74,85,86,93,103,104,105,136],[60,86,93,98,136],[86,191],[45,86,93,176,182],[86,180],[86,177,181],[86,136,138],[74,86,93,136,138],[86,136],[57,86,93],[74,86,93,136],[86,136,146],[74,86,93,106,107,136],[86,138],[86,136,149],[86,94,137,138,139,140,141,142,143,144,145,147,148,150,151],[86,119],[86,110,117],[86,112],[86,132],[86,132,133],[58,60,74,85,86,93,102,103,106,107,108,110,111,112,113,114,115,116,136],[86,117],[86,109,117],[86,112,117],[60,86,93,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,134,135],[86,179],[86,136,163],[86,136,152,162],[136,152]],"referencedMap":[[168,1],[166,2],[176,2],[179,3],[153,2],[178,2],[162,4],[159,5],[160,6],[158,7],[154,8],[155,9],[156,10],[161,11],[171,12],[167,1],[169,13],[170,1],[101,14],[104,2],[100,15],[97,16],[102,17],[172,18],[173,2],[174,19],[175,20],[184,21],[185,2],[186,7],[98,2],[188,2],[189,22],[187,23],[42,24],[43,24],[45,25],[46,26],[47,27],[48,28],[49,29],[50,30],[51,31],[52,32],[53,33],[54,34],[55,34],[56,35],[57,36],[58,37],[59,38],[44,39],[92,2],[60,40],[61,41],[62,42],[93,43],[63,44],[64,45],[65,46],[66,47],[67,48],[68,49],[69,50],[70,51],[71,52],[72,53],[73,54],[74,55],[76,56],[75,57],[77,58],[78,59],[79,2],[80,60],[81,61],[82,62],[83,63],[84,64],[85,65],[86,66],[87,67],[88,68],[89,69],[90,70],[91,71],[96,2],[95,2],[107,72],[106,73],[99,74],[190,2],[105,2],[157,2],[191,2],[192,75],[177,2],[183,76],[103,23],[181,77],[182,78],[140,79],[141,80],[142,2],[143,2],[144,81],[145,79],[94,82],[138,83],[146,81],[148,84],[147,84],[137,85],[139,86],[150,87],[151,2],[152,88],[124,2],[125,2],[126,2],[108,2],[120,89],[116,2],[109,90],[115,91],[133,92],[132,2],[134,93],[117,94],[118,95],[127,95],[135,2],[112,95],[121,90],[122,95],[128,90],[123,95],[130,95],[110,96],[113,97],[129,90],[114,95],[111,95],[136,98],[131,95],[119,95],[149,2],[180,99],[9,2],[8,2],[2,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[3,2],[4,2],[21,2],[18,2],[19,2],[20,2],[22,2],[23,2],[24,2],[5,2],[25,2],[26,2],[27,2],[28,2],[6,2],[29,2],[30,2],[31,2],[32,2],[7,2],[33,2],[38,2],[39,2],[34,2],[35,2],[36,2],[37,2],[40,2],[1,2],[41,2],[164,100],[163,101],[165,2]],"exportedModulesMap":[[168,1],[166,2],[176,2],[179,3],[153,2],[178,2],[162,4],[159,5],[160,6],[158,7],[154,8],[155,9],[156,10],[161,11],[171,12],[167,1],[169,13],[170,1],[101,14],[104,2],[100,15],[97,16],[102,17],[172,18],[173,2],[174,19],[175,20],[184,21],[185,2],[186,7],[98,2],[188,2],[189,22],[187,23],[42,24],[43,24],[45,25],[46,26],[47,27],[48,28],[49,29],[50,30],[51,31],[52,32],[53,33],[54,34],[55,34],[56,35],[57,36],[58,37],[59,38],[44,39],[92,2],[60,40],[61,41],[62,42],[93,43],[63,44],[64,45],[65,46],[66,47],[67,48],[68,49],[69,50],[70,51],[71,52],[72,53],[73,54],[74,55],[76,56],[75,57],[77,58],[78,59],[79,2],[80,60],[81,61],[82,62],[83,63],[84,64],[85,65],[86,66],[87,67],[88,68],[89,69],[90,70],[91,71],[96,2],[95,2],[107,72],[106,73],[99,74],[190,2],[105,2],[157,2],[191,2],[192,75],[177,2],[183,76],[103,23],[181,77],[182,78],[140,79],[141,80],[142,2],[143,2],[144,81],[145,79],[94,82],[138,83],[146,81],[148,84],[147,84],[137,85],[139,86],[150,87],[151,2],[152,88],[124,2],[125,2],[126,2],[108,2],[120,89],[116,2],[109,90],[115,91],[133,92],[132,2],[134,93],[117,94],[118,95],[127,95],[135,2],[112,95],[121,90],[122,95],[128,90],[123,95],[130,95],[110,96],[113,97],[129,90],[114,95],[111,95],[136,98],[131,95],[119,95],[149,2],[180,99],[9,2],[8,2],[2,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[3,2],[4,2],[21,2],[18,2],[19,2],[20,2],[22,2],[23,2],[24,2],[5,2],[25,2],[26,2],[27,2],[28,2],[6,2],[29,2],[30,2],[31,2],[32,2],[7,2],[33,2],[38,2],[39,2],[34,2],[35,2],[36,2],[37,2],[40,2],[1,2],[41,2],[163,102]],"semanticDiagnosticsPerFile":[168,166,176,179,153,178,162,159,160,158,154,155,156,161,171,167,169,170,101,104,100,97,102,172,173,174,175,184,185,186,98,188,189,187,42,43,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,44,92,60,61,62,93,63,64,65,66,67,68,69,70,71,72,73,74,76,75,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,96,95,107,106,99,190,105,157,191,192,177,183,103,181,182,140,141,142,143,144,145,94,138,146,148,147,137,139,150,151,152,124,125,126,108,120,116,109,115,133,132,134,117,118,127,135,112,121,122,128,123,130,110,113,129,114,111,136,131,119,149,180,9,8,2,10,11,12,13,14,15,16,17,3,4,21,18,19,20,22,23,24,5,25,26,27,28,6,29,30,31,32,7,33,38,39,34,35,36,37,40,1,41,164,163]},"version":"4.8.4"} -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "linterOptions": { 3 | "exclude": [ 4 | "node_modules/**/*" 5 | ] 6 | }, 7 | "defaultSeverity": "error", 8 | "jsRules": {}, 9 | "rules": { 10 | "array-type": [ 11 | true, 12 | "array-simple" 13 | ], 14 | "arrow-return-shorthand": true, 15 | "ban": [ 16 | true, 17 | { 18 | "name": "Array", 19 | "message": "tsstyle#array-constructor" 20 | } 21 | ], 22 | "ban-types": [ 23 | true, 24 | [ 25 | "Object", 26 | "Use {} instead." 27 | ], 28 | [ 29 | "String", 30 | "Use 'string' instead." 31 | ], 32 | [ 33 | "Number", 34 | "Use 'number' instead." 35 | ], 36 | [ 37 | "Boolean", 38 | "Use 'boolean' instead." 39 | ] 40 | ], 41 | "class-name": true, 42 | "curly": [ 43 | true, 44 | "ignore-same-line" 45 | ], 46 | "forin": true, 47 | "jsdoc-format": true, 48 | "label-position": true, 49 | "indent": [ 50 | true, 51 | "tabs", 52 | 2 53 | ], 54 | "member-access": [ 55 | true, 56 | "no-public" 57 | ], 58 | "new-parens": true, 59 | "no-angle-bracket-type-assertion": true, 60 | "no-any": true, 61 | "no-arg": true, 62 | "no-conditional-assignment": true, 63 | "no-construct": true, 64 | "no-debugger": true, 65 | "no-default-export": true, 66 | "no-duplicate-variable": true, 67 | "no-inferrable-types": true, 68 | "ordered-imports": [ 69 | true, 70 | { 71 | "import-sources-order": "any", 72 | "named-imports-order": "case-insensitive" 73 | } 74 | ], 75 | "no-namespace": [ 76 | true, 77 | "allow-declarations" 78 | ], 79 | "no-reference": true, 80 | "no-string-throw": true, 81 | "no-unused-expression": true, 82 | "no-var-keyword": true, 83 | "object-literal-shorthand": true, 84 | "only-arrow-functions": [ 85 | true, 86 | "allow-declarations", 87 | "allow-named-functions" 88 | ], 89 | "prefer-const": true, 90 | "radix": true, 91 | "semicolon": [ 92 | true, 93 | "always", 94 | "ignore-bound-class-methods" 95 | ], 96 | "switch-default": true, 97 | "trailing-comma": [ 98 | true, 99 | { 100 | "multiline": { 101 | "objects": "always", 102 | "arrays": "always", 103 | "functions": "always", 104 | "typeLiterals": "ignore" 105 | }, 106 | "esSpecCompliant": true 107 | } 108 | ], 109 | "triple-equals": [ 110 | true, 111 | "allow-null-check" 112 | ], 113 | "use-isnan": true, 114 | "quotes": [ 115 | "error", 116 | "single" 117 | ], 118 | "variable-name": [ 119 | true, 120 | "check-format", 121 | "ban-keywords", 122 | "allow-leading-underscore", 123 | "allow-trailing-underscore" 124 | ] 125 | }, 126 | "rulesDirectory": [] 127 | } 128 | --------------------------------------------------------------------------------