Compare commits
19 Commits
notion-hel
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2c7084028f | ||
|
|
876c74ba41 | ||
|
|
b3fe8075f5 | ||
|
|
2571b5c360 | ||
|
|
5be9f56c12 | ||
|
|
c1ad4f0d6c | ||
|
|
bce9f8a04d | ||
|
|
e5d4bdf90d | ||
|
|
aab9cada6d | ||
|
|
8bca7443ca | ||
|
|
2a6c968a99 | ||
|
|
a4bfa7dd05 | ||
|
|
49f49112b3 | ||
|
|
4c41583ba8 | ||
|
|
b7b62b4ac8 | ||
|
|
1df10d078a | ||
|
|
cfaa0c4a94 | ||
|
|
390c8ca68a | ||
|
|
31affdc480 |
222
README.md
222
README.md
|
|
@ -1 +1,223 @@
|
|||
# joplin2notion
|
||||
|
||||
A script meant to aid in the transfer of entries from [Joplin](https://joplinapp.org/) to [Notion](https://www.notion.so/)
|
||||
|
||||
<div id="top"></div>
|
||||
<!--
|
||||
*** Thanks for checking out the Best-README-Template. If you have a suggestion
|
||||
*** that would make this better, please fork the repo and create a pull request
|
||||
*** or simply open an issue with the tag "enhancement".
|
||||
*** Don't forget to give the project a star!
|
||||
*** Thanks again! Now go create something AMAZING! :D
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!-- PROJECT SHIELDS -->
|
||||
<!--
|
||||
*** I'm using markdown "reference style" links for readability.
|
||||
*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).
|
||||
*** See the bottom of this document for the declaration of the reference variables
|
||||
*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.
|
||||
*** https://www.markdownguide.org/basic-syntax/#reference-style-links
|
||||
-->
|
||||
[![Contributors][contributors-shield]][contributors-url]
|
||||
[![Forks][forks-shield]][forks-url]
|
||||
[![Stargazers][stars-shield]][stars-url]
|
||||
[![Issues][issues-shield]][issues-url]
|
||||
[![MIT License][license-shield]][license-url]
|
||||
[![LinkedIn][linkedin-shield]][linkedin-url]
|
||||
|
||||
|
||||
|
||||
<h3 align="center">joplin2notion</h3>
|
||||
|
||||
<p align="center">
|
||||
A script meant to aid in the transfer of entries from <a href="https://joplinapp.org/">Joplin</a> to <a href="https://www.notion.so/">Notion</a>
|
||||
<br />
|
||||
<a href="https://github.com/iancooperman/joplin2notion"><strong>Explore the docs »</strong></a>
|
||||
<br />
|
||||
<br />
|
||||
<a href="https://github.com/iancooperman/joplin2notion">View Demo</a>
|
||||
·
|
||||
<a href="https://github.com/iancooperman/joplin2notion/issues">Report Bug</a>
|
||||
·
|
||||
<a href="https://github.com/iancooperman/joplin2notion/issues">Request Feature</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<!-- TABLE OF CONTENTS -->
|
||||
<details>
|
||||
<summary>Table of Contents</summary>
|
||||
<ol>
|
||||
<li>
|
||||
<a href="#about-the-project">About The Project</a>
|
||||
<ul>
|
||||
<li><a href="#built-with">Built With</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#getting-started">Getting Started</a>
|
||||
<ul>
|
||||
<li><a href="#prerequisites">Prerequisites</a></li>
|
||||
<li><a href="#installation">Installation</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="#usage">Usage</a></li>
|
||||
<li><a href="#roadmap">Roadmap</a></li>
|
||||
<li><a href="#contributing">Contributing</a></li>
|
||||
<li><a href="#license">License</a></li>
|
||||
<li><a href="#contact">Contact</a></li>
|
||||
<li><a href="#acknowledgments">Acknowledgments</a></li>
|
||||
</ol>
|
||||
</details>
|
||||
|
||||
|
||||
|
||||
<!-- ABOUT THE PROJECT -->
|
||||
## About The Project
|
||||
|
||||
[![Product Name Screen Shot][product-screenshot]](https://example.com)
|
||||
|
||||
Here's a blank template to get started: To avoid retyping too much info. Do a search and replace with your text editor for the following: `iancooperman`, `joplin2notion`, `@IanPLCooperman`, `ian-pl-cooperman`, `gmail`, `ian.pl.cooperman`, `joplin2notion`, `A script meant to aid in the transfer of entries from [Joplin](https://joplinapp.org/) to [Notion](https://www.notion.so/)`
|
||||
|
||||
<p align="right">(<a href="#top">back to top</a>)</p>
|
||||
|
||||
|
||||
|
||||
### Built With
|
||||
|
||||
* [![Node][Node.js]][Next-url]
|
||||
* [![React][React.js]][React-url]
|
||||
* [![Vue][Vue.js]][Vue-url]
|
||||
* [![Angular][Angular.io]][Angular-url]
|
||||
* [![Svelte][Svelte.dev]][Svelte-url]
|
||||
* [![Laravel][Laravel.com]][Laravel-url]
|
||||
* [![Bootstrap][Bootstrap.com]][Bootstrap-url]
|
||||
* [![JQuery][JQuery.com]][JQuery-url]
|
||||
|
||||
<p align="right">(<a href="#top">back to top</a>)</p>
|
||||
|
||||
|
||||
|
||||
<!-- GETTING STARTED -->
|
||||
## Getting Started
|
||||
|
||||
To get a local copy up and running follow these simple example steps.
|
||||
|
||||
### Prerequisites
|
||||
|
||||
This is an example of how to list things you need to use the software and how to install them.
|
||||
* npm
|
||||
```sh
|
||||
npm install npm@latest -g
|
||||
```
|
||||
|
||||
### Installation
|
||||
|
||||
1. Create a Notion integration and copy the internal integration token by following the steps here: [https://www.notion.so/help/add-and-manage-integrations-with-the-api](https://www.notion.so/help/add-and-manage-integrations-with-the-api)
|
||||
2. Clone the repo
|
||||
```sh
|
||||
git clone https://github.com/iancooperman/joplin2notion.git
|
||||
```
|
||||
3. Install NPM packages
|
||||
```sh
|
||||
npm install
|
||||
```
|
||||
4. Enter your keys into a file called `.env`
|
||||
```env
|
||||
NOTION_TOKEN="secret_ABCDEFGHIJKLMNOPQRSTUVWXYZ123456"
|
||||
JOPLIN_CLIPPER_PORT=41184
|
||||
JOPLIN_AUTHORIZATION_TOKEN="e39c0d1dc22ff649a545cfe65b6f0b75cdeeeb0b5f923492b5bea4f390f40e9155efc34981843d156cf9c2489783fc6dc1515538e63cfb39d59f7946093f6ca2"
|
||||
```
|
||||
|
||||
<p align="right">(<a href="#top">back to top</a>)</p>
|
||||
|
||||
|
||||
|
||||
<!-- USAGE EXAMPLES -->
|
||||
## Usage
|
||||
In a terminal, enter the following:
|
||||
|
||||
ps
|
||||
```
|
||||
node index.js [joplin-notebook-id] [notion-database-id]
|
||||
|
||||
```
|
||||
|
||||
*Use this space to show useful examples of how a project can be used. Additional screenshots, code examples and demos work well in this space. You may also link to more resources.*
|
||||
|
||||
|
||||
<p align="right">(<a href="#top">back to top</a>)</p>
|
||||
|
||||
|
||||
|
||||
<!-- CONTRIBUTING -->
|
||||
## Contributing
|
||||
This code was written solely for my own purposes. I have no intention to maintain this repo after my own usage is done. I just thought that others might be able to benefit from my work here.
|
||||
|
||||
|
||||
<!-- LICENSE -->
|
||||
## License
|
||||
|
||||
Distributed under the MIT License. See `LICENSE.txt` for more information.
|
||||
|
||||
<p align="right">(<a href="#top">back to top</a>)</p>
|
||||
|
||||
|
||||
|
||||
<!-- CONTACT -->
|
||||
## Contact
|
||||
|
||||
Ian Cooperman - [@IanPLCooperman](https://twitter.com/IanPLCooperman) - ian.pl.cooperman@gmail.com
|
||||
|
||||
Project Link: [https://github.com/iancooperman/joplin2notion](https://github.com/iancooperman/joplin2notion)
|
||||
|
||||
<p align="right">(<a href="#top">back to top</a>)</p>
|
||||
|
||||
|
||||
|
||||
<!-- ACKNOWLEDGMENTS -->
|
||||
## Acknowledgments
|
||||
|
||||
* []()
|
||||
* []()
|
||||
* []()
|
||||
|
||||
<p align="right">(<a href="#top">back to top</a>)</p>
|
||||
|
||||
|
||||
|
||||
<!-- MARKDOWN LINKS & IMAGES -->
|
||||
<!-- https://www.markdownguide.org/basic-syntax/#reference-style-links -->
|
||||
[contributors-shield]: https://img.shields.io/github/contributors/iancooperman/joplin2notion.svg?style=for-the-badge
|
||||
[contributors-url]: https://github.com/iancooperman/joplin2notion/graphs/contributors
|
||||
[forks-shield]: https://img.shields.io/github/forks/iancooperman/joplin2notion.svg?style=for-the-badge
|
||||
[forks-url]: https://github.com/iancooperman/joplin2notion/network/members
|
||||
[stars-shield]: https://img.shields.io/github/stars/iancooperman/joplin2notion.svg?style=for-the-badge
|
||||
[stars-url]: https://github.com/iancooperman/joplin2notion/stargazers
|
||||
[issues-shield]: https://img.shields.io/github/issues/iancooperman/joplin2notion.svg?style=for-the-badge
|
||||
[issues-url]: https://github.com/iancooperman/joplin2notion/issues
|
||||
[license-shield]: https://img.shields.io/github/license/iancooperman/joplin2notion.svg?style=for-the-badge
|
||||
[license-url]: https://github.com/iancooperman/joplin2notion/blob/master/LICENSE.txt
|
||||
[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555
|
||||
[linkedin-url]: https://linkedin.com/in/ian-pl-cooperman
|
||||
[product-screenshot]: images/screenshot.png
|
||||
[Next.js]: https://img.shields.io/badge/next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white
|
||||
[Next-url]: https://nextjs.org/
|
||||
[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB
|
||||
[React-url]: https://reactjs.org/
|
||||
[Vue.js]: https://img.shields.io/badge/Vue.js-35495E?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D
|
||||
[Vue-url]: https://vuejs.org/
|
||||
[Angular.io]: https://img.shields.io/badge/Angular-DD0031?style=for-the-badge&logo=angular&logoColor=white
|
||||
[Angular-url]: https://angular.io/
|
||||
[Svelte.dev]: https://img.shields.io/badge/Svelte-4A4A55?style=for-the-badge&logo=svelte&logoColor=FF3E00
|
||||
[Svelte-url]: https://svelte.dev/
|
||||
[Laravel.com]: https://img.shields.io/badge/Laravel-FF2D20?style=for-the-badge&logo=laravel&logoColor=white
|
||||
[Laravel-url]: https://laravel.com
|
||||
[Bootstrap.com]: https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge&logo=bootstrap&logoColor=white
|
||||
[Bootstrap-url]: https://getbootstrap.com
|
||||
[JQuery.com]: https://img.shields.io/badge/jQuery-0769AD?style=for-the-badge&logo=jquery&logoColor=white
|
||||
[JQuery-url]: https://jquery.com
|
||||
59
index.js
59
index.js
|
|
@ -1,12 +1,26 @@
|
|||
// import variables from `.env`
|
||||
require('dotenv').config();
|
||||
const { Client } = require('@notionhq/client');
|
||||
import 'dotenv/config'
|
||||
import { Client } from '@notionhq/client'
|
||||
import Joplin from './joplin.js'
|
||||
|
||||
const notion = new Client({auth: process.env.NOTION_KEY});
|
||||
const joplin = new Joplin(process.env.JOPLIN_TOKEN, process.env.JOPLIN_CLIPPER_PORT)
|
||||
const notion = new Client({auth: process.env.NOTION_TOKEN});
|
||||
const joplinNotebookID = process.env.JOPLIN_NOTEBOOK_ID;
|
||||
const notionDatabaseID = process.env.NOTION_DATABASE_ID;
|
||||
|
||||
const databaseID = process.env.NOTION_DATABASE_ID;
|
||||
|
||||
async function addItem(text) {
|
||||
// essentially a main function
|
||||
async function processNotes() {
|
||||
const data = await joplin.getNotesFromNotebook(joplinNotebookID, ["title", "body", "created_time", "updated_time"])
|
||||
for (let note of data) {
|
||||
addPageToNotionDatabase(notionDatabaseID, note.title, note.body)
|
||||
}
|
||||
}
|
||||
|
||||
processNotes()
|
||||
|
||||
|
||||
async function addPageToNotionDatabase(databaseID, title, body) {
|
||||
try {
|
||||
const response = await notion.pages.create({
|
||||
parent: {database_id: databaseID},
|
||||
|
|
@ -14,13 +28,40 @@ async function addItem(text) {
|
|||
title: {
|
||||
title: [
|
||||
{
|
||||
"type": "text",
|
||||
"text": {
|
||||
"content": text
|
||||
}
|
||||
}
|
||||
"content": title,
|
||||
"link": null
|
||||
},
|
||||
"annotations": {
|
||||
"bold": false,
|
||||
"italic": false,
|
||||
"strikethrough": false,
|
||||
"underline": false,
|
||||
"code": false,
|
||||
"color": "default"
|
||||
},
|
||||
"plain_text": "Grocery List",
|
||||
"href": null
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
children: [
|
||||
{
|
||||
object: "block",
|
||||
type: "paragraph",
|
||||
paragraph: {
|
||||
"rich_text": [
|
||||
{
|
||||
"text": {
|
||||
"content": body
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
})
|
||||
console.log(response);
|
||||
console.log("Success! Entry added.");
|
||||
|
|
@ -29,4 +70,4 @@ async function addItem(text) {
|
|||
}
|
||||
}
|
||||
|
||||
addItem("Yurts in Big Sur, California");
|
||||
// addItem("Yurts in Big Sur, California");
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
import fetch from 'node-fetch'
|
||||
import 'dotenv/config'
|
||||
|
||||
// This class is used to interact with the Joplin Data API. It provides a method for getting notes from a specified notebook, using the notebook's ID. The fields parameter specifies which fields to include in the response.
|
||||
class Joplin {
|
||||
constructor(joplinToken, joplinPort) {
|
||||
this.token = joplinToken
|
||||
this.port = joplinPort
|
||||
|
||||
this.getNotesFromNotebook.bind(this)
|
||||
}
|
||||
|
||||
|
||||
//This function gets notes from a specified notebook, using the notebook's ID. The fields parameter specifies which fields to include in the response.
|
||||
// @param {string=} notebookID - The id of the notebook you want to get notes from, as extracted from the notebook's external link
|
||||
// @param {Array[string]=} fields - The specific fields wanted in the returned response. Valid fields can be found in this table: https://joplinapp.org/api/references/rest_api/#properties
|
||||
async getNotesFromNotebook(notebookID, fields) {
|
||||
const fieldsString = fields.join()
|
||||
|
||||
let items = []
|
||||
let pageNum = 1
|
||||
let data = null
|
||||
|
||||
do {
|
||||
let tempURL = "http://localhost:" + this.port + "/folders/" + notebookID + "/notes"
|
||||
let foldersURL = new URL(tempURL)
|
||||
foldersURL.searchParams.append("token", this.token)
|
||||
foldersURL.searchParams.append("fields", fieldsString)
|
||||
foldersURL.searchParams.append("page", pageNum)
|
||||
|
||||
const res = await fetch(foldersURL.href)
|
||||
data = await res.json()
|
||||
items = items.concat(data.items)
|
||||
|
||||
pageNum++
|
||||
}
|
||||
while (data.has_more)
|
||||
|
||||
return items
|
||||
}
|
||||
}
|
||||
|
||||
export default Joplin
|
||||
|
|
@ -6,7 +6,8 @@
|
|||
"": {
|
||||
"dependencies": {
|
||||
"@notionhq/client": "^2.1.1",
|
||||
"dotenv": "^16.0.1"
|
||||
"dotenv": "^16.0.1",
|
||||
"node-fetch": "^3.2.10"
|
||||
}
|
||||
},
|
||||
"node_modules/@notionhq/client": {
|
||||
|
|
@ -21,6 +22,25 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/@notionhq/client/node_modules/node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"encoding": "^0.1.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"encoding": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "18.6.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.6.2.tgz",
|
||||
|
|
@ -51,6 +71,14 @@
|
|||
"node": ">= 0.8"
|
||||
}
|
||||
},
|
||||
"node_modules/data-uri-to-buffer": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
|
||||
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==",
|
||||
"engines": {
|
||||
"node": ">= 12"
|
||||
}
|
||||
},
|
||||
"node_modules/delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
|
|
@ -67,6 +95,28 @@
|
|||
"node": ">=12"
|
||||
}
|
||||
},
|
||||
"node_modules/fetch-blob": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
||||
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/jimmywarting"
|
||||
},
|
||||
{
|
||||
"type": "paypal",
|
||||
"url": "https://paypal.me/jimmywarting"
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"node-domexception": "^1.0.0",
|
||||
"web-streams-polyfill": "^3.0.3"
|
||||
},
|
||||
"engines": {
|
||||
"node": "^12.20 || >= 14.13"
|
||||
}
|
||||
},
|
||||
"node_modules/form-data": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
||||
|
|
@ -80,6 +130,17 @@
|
|||
"node": ">= 6"
|
||||
}
|
||||
},
|
||||
"node_modules/formdata-polyfill": {
|
||||
"version": "4.0.10",
|
||||
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
||||
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
||||
"dependencies": {
|
||||
"fetch-blob": "^3.1.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=12.20.0"
|
||||
}
|
||||
},
|
||||
"node_modules/mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
|
|
@ -99,23 +160,39 @@
|
|||
"node": ">= 0.6"
|
||||
}
|
||||
},
|
||||
"node_modules/node-domexception": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
||||
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
|
||||
"funding": [
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/jimmywarting"
|
||||
},
|
||||
{
|
||||
"type": "github",
|
||||
"url": "https://paypal.me/jimmywarting"
|
||||
}
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=10.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"version": "3.2.10",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz",
|
||||
"integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==",
|
||||
"dependencies": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
"data-uri-to-buffer": "^4.0.0",
|
||||
"fetch-blob": "^3.1.4",
|
||||
"formdata-polyfill": "^4.0.10"
|
||||
},
|
||||
"engines": {
|
||||
"node": "4.x || >=6.0.0"
|
||||
"node": "^12.20.0 || ^14.13.1 || >=16.0.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"encoding": "^0.1.0"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"encoding": {
|
||||
"optional": true
|
||||
}
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/node-fetch"
|
||||
}
|
||||
},
|
||||
"node_modules/tr46": {
|
||||
|
|
@ -123,6 +200,14 @@
|
|||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"node_modules/web-streams-polyfill": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
|
||||
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==",
|
||||
"engines": {
|
||||
"node": ">= 8"
|
||||
}
|
||||
},
|
||||
"node_modules/webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
|
|
@ -146,6 +231,16 @@
|
|||
"requires": {
|
||||
"@types/node-fetch": "^2.5.10",
|
||||
"node-fetch": "^2.6.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"requires": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"@types/node": {
|
||||
|
|
@ -175,6 +270,11 @@
|
|||
"delayed-stream": "~1.0.0"
|
||||
}
|
||||
},
|
||||
"data-uri-to-buffer": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz",
|
||||
"integrity": "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA=="
|
||||
},
|
||||
"delayed-stream": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
||||
|
|
@ -185,6 +285,15 @@
|
|||
"resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.1.tgz",
|
||||
"integrity": "sha512-1K6hR6wtk2FviQ4kEiSjFiH5rpzEVi8WW0x96aztHVMhEspNpc4DVOUTEHtEva5VThQ8IaBX1Pe4gSzpVVUsKQ=="
|
||||
},
|
||||
"fetch-blob": {
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz",
|
||||
"integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==",
|
||||
"requires": {
|
||||
"node-domexception": "^1.0.0",
|
||||
"web-streams-polyfill": "^3.0.3"
|
||||
}
|
||||
},
|
||||
"form-data": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz",
|
||||
|
|
@ -195,6 +304,14 @@
|
|||
"mime-types": "^2.1.12"
|
||||
}
|
||||
},
|
||||
"formdata-polyfill": {
|
||||
"version": "4.0.10",
|
||||
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
|
||||
"integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==",
|
||||
"requires": {
|
||||
"fetch-blob": "^3.1.2"
|
||||
}
|
||||
},
|
||||
"mime-db": {
|
||||
"version": "1.52.0",
|
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
||||
|
|
@ -208,12 +325,19 @@
|
|||
"mime-db": "1.52.0"
|
||||
}
|
||||
},
|
||||
"node-domexception": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
|
||||
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ=="
|
||||
},
|
||||
"node-fetch": {
|
||||
"version": "2.6.7",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
|
||||
"integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
|
||||
"version": "3.2.10",
|
||||
"resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz",
|
||||
"integrity": "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==",
|
||||
"requires": {
|
||||
"whatwg-url": "^5.0.0"
|
||||
"data-uri-to-buffer": "^4.0.0",
|
||||
"fetch-blob": "^3.1.4",
|
||||
"formdata-polyfill": "^4.0.10"
|
||||
}
|
||||
},
|
||||
"tr46": {
|
||||
|
|
@ -221,6 +345,11 @@
|
|||
"resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
|
||||
"integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw=="
|
||||
},
|
||||
"web-streams-polyfill": {
|
||||
"version": "3.2.1",
|
||||
"resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz",
|
||||
"integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q=="
|
||||
},
|
||||
"webidl-conversions": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
|
||||
|
|
|
|||
|
|
@ -1,6 +1,8 @@
|
|||
{
|
||||
"type": "module",
|
||||
"dependencies": {
|
||||
"@notionhq/client": "^2.1.1",
|
||||
"dotenv": "^16.0.1"
|
||||
"dotenv": "^16.0.1",
|
||||
"node-fetch": "^3.2.10"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue