Research
Security News
Malicious PyPI Package ‘pycord-self’ Targets Discord Developers with Token Theft and Backdoor Exploit
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
API Wrapper For Notion's Database
yarn add notabase
You can use notabse in browser, browser extension, and node. But there is a difference when initializing the notabase instance.
Env | Token | Read | Write | Note |
---|---|---|---|---|
node | ❌ | public data | ❌ | you can only read public data without token |
node | ✔ | private data | ✔ | you can read and modify private data with token |
import Notabase from 'notabase'
// node env
// just Read public data
let nb = new Notabase()
// CRUD support
let nb = new Notabase({
token: "token_v2 from cookies"
})
If you want to use Notabase in your web pages, you need to handle CORS. You can solve this problem with a cloudflare worker.Generate a cloudflare-worker using the code from src/cf-worker.js
In the browser environment, we don't use token
directly, instead we use authcode
to handle identity checks. You need to set an authcode
that only you know in your cf-worker
, and then we use it when initializing the notabase instance.
Env | authCode | Read | Write | Note |
---|---|---|---|---|
browser | ❌ | public data | ❌ | just read public data without authCode |
browser | ✔ | private data | ✔ | you can read and modify private data with authCode |
import Notabase from 'notabase'
// browser env
// without authCode Read public data
// with authCode CRUD support
let nb = new Notabase({
proxy: {
url: "cloudflare worker url",
authCode: "nobody knows it but you"
}
})
import Notabase from 'notabase'
// browser extension env
// CRUD support without setting anything
let nb = new Notabase()
Method | Note |
---|---|
fetch | fetch data from one table, but you can't query relation data |
fetchAll | fetch data from multiple tables, you can query relation data if relation table has been fetched |
// fetch one table
let songs = await nb.fetch("https://www.notion.so/2628769120ad41d998ec068d6e2eb410?v=e8e69ac68a8d483792c54541e4d8ba72")
// fetch all tables about music
// get my music data
let db = await nb.fetchAll({
songs: "https://www.notion.so/2628769120ad41d998ec068d6e2eb410?v=e8e69ac68a8d483792c54541e4d8ba72",
albums: "https://www.notion.so/15f1759f38a34fedaa79262812b707f0?v=b385656739214101b2b8a159092a52e8",
artists: "https://www.notion.so/31b8544ffb034964b1aa56bfa78497c1?v=1d9cbfcd279d4534964acdd374c9824e"
})
Data in Notion table will be mapped to JavaScript Array
// get all songs
let allSongs = db.songs.rows
// get song by index
let song = allSongs[0]
// get one song's title (base props)
console.log(`${song.tile}`)
// get artist's name of the song (related props)
console.log(`${song.artist[0].Name}`) // a song maybe has two or more artists
// search song by title in song's table
let aSong = allSongs.find(song=> song.title === "Bad Guy")
// search all song by artist's name in song's table
let songByArtistName = allSongs.filter(song=> song.artist[0].name === "someone")
// search all song by artist's name in artist's table
songByArtistName = db.artists.rows.filter(a=> a.name === "someone").songs
let aSong = allSongs.find(song=> song.title === "Bad Guy")
aSong.title = "new title"
// create then modify
let newRow = collection.addRow()
// if tag1 is not exists, it will be auto created.
newRow.Tags = ["tag1"]
// create with value
collection.addRow({title:"",Tags:["tag1"]})
// delete row
aSong.delete()
// change
collection.schema.Tags.options.push({
id:nb.genId(),
value: "new tag",
color: "pink"
})
// commit
collection.updateSchema()
FAQs
API Wrapper For Notion's Database
The npm package notabase receives a total of 92 weekly downloads. As such, notabase popularity was classified as not popular.
We found that notabase demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.
Security News
Snyk's use of malicious npm packages for research raises ethical concerns, highlighting risks in public deployment, data exfiltration, and unauthorized testing.