0.5.1 • Published 2 years ago
@narkdown/notion-faker v0.5.1
@narkdown/notion-faker
Generate massive amounts of fake contextual data for Notion
Demo
Why?
To mocking Notion API request data.
Install
$ npm install @narkdown/notion-faker
Usage
const {NotionFaker} = require('@narkdown/notion-faker');
const notionFaker = new NotionFaker({
seedValue: 100,
locale: 'en',
});
Example
Prep Work
- Create a Notion API Integration
- Create Page in Notion to add database.
- Create an Example Database with your own properties.
- Share Page with your integration
const {Client} = require('@notionhq/client');
const {NotionFaker} = require('@narkdown/notion-faker');
const NOTION_API_KEY = ''; // Notion API Key
const EXAMPLE_DATABASE_ID = ''; // Database for importing Property Scheme.
const PARENT_PAGE_ID = ''; // Parent page to create database.
const ROW_COUNT = 100; // ⚠️ Creating too many pages using the Notion API is a heavy task.
const notion = new Client({auth: NOTION_API_KEY});
const notionFaker = new NotionFaker();
(async () => {
const {properties: scheme} = await notion.databases.retrieve({
database_id: EXAMPLE_DATABASE_ID,
});
const {id: databaseId} = await notion.databases.create({
parent: {
page_id: PARENT_PAGE_ID,
},
title: notionFaker.database.title()()(),
properties: notionFaker.database.properties.propertiesByScheme(scheme),
icon: notionFaker.icon.emoji(),
cover: notionFaker.cover()(),
});
for (const _ of Array.from({length: ROW_COUNT})) {
await narkdown.pages.create({
parent: {database_id: TEST_DATABASE_ID},
properties: notionFaker.page.properties.propertiesByScheme(scheme),
});
}
})();
API
const notionFaker = new NotionFaker(options?)
notionFaker.icon.emoji()
notionFaker.icon.external(methodPath?)(...args?)
notionFaker.cover(methodPath?)(...args?)
notionFaker.database.title(methodPath?)(...args?)(options?)
notionFaker.database.properties
title(options?)
rich_text(options?)
number(options?)
select(options?)
multi_select(options?)
date(options?)
files(options?)
checkbox(options?)
url(options?)
email(options?)
phone_number(options?)
formula(options?)
relation(options)
rollup(options)
people(options?)
created_by(options?)
created_time(options?)
last_edited_by(options?)
last_edited_time(options?)
propertiesByScheme(propertyScheme)
notionFaker.page.properties
title(methodPath?)(...args)(options?)
,rich_text(methodPath?)(...args)(options?)
,number(methodPath?)(...args)
,select(methodPath?)(...args)(options?)
,multi_select(methodPath?)(...args)(options?)
,date(methodPath?)(...args)(options?)
,files(methodPath?)(...args)(options?)
,checkbox()
,url()
,email(...args)
,phone_number(methodPath?)(...args)(options?)
,propertiesByScheme(propertyScheme)
Support
Database Object
Property | Supported |
---|---|
object | ❌ |
id | ❌ |
created_time | ❌ |
last_edited_time | ❌ |
title | ✅ |
icon | ✅ |
cover | ✅ |
properties | ✅ |
parent | ❌ |
url | ❌ |
Page Object
Property | Supported |
---|---|
object | ❌ |
id | ❌ |
created_time | ❌ |
last_edited_time | ❌ |
archived | ❌ |
icon | ✅ |
cover | ✅ |
properties | ⚠️ |
parent | ❌ |
url | ❌ |
Property Object
Property | Page (Child of Database) | Page (Child of Page) |
---|---|---|
title | ✅ | ✅ |
rich_text | ✅ | ❌ |
number | ✅ | ❌ |
select | ✅ | ❌ |
multi_select | ✅ | ❌ |
date | ✅ | ❌ |
files | ✅ | ❌ |
checkbox | ✅ | ❌ |
url | ✅ | ❌ |
email | ✅ | ❌ |
phone_number | ✅ | ❌ |
formula | ❌ | ❌ |
relation | ❌ | ❌ |
rollup | ❌ | ❌ |
people | ❌ | ❌ |
created_by | ❌ | ❌ |
created_time | ❌ | ❌ |
last_edited_by | ❌ | ❌ |
last_edited_time | ❌ | ❌ |