@nendlabs/notion
TypeScript icon, indicating that this package has built-in type declarations

0.0.3 • Public • Published

@nendlabs/notion

A TypeScript utility library for interacting with Notion databases, providing a structured and type-safe way to manage and retrieve data from Notion.

Installation

Install the package using npm:

npm install @nendlabs/notion

Setup

Before using this library, you need to set up a database in Notion and ensure that all pages have the required properties.

Creating a Database

  1. Open Notion and create a new page.
  2. Click on "+ Add a database" and choose "Table" (or any other view you prefer).
  3. Add the following properties to your database:
    • Title (Title): The title of the page.
    • Created (Created time): Automatically tracks the creation time.
    • Last edited (Last edited time): Automatically tracks the last edit time.

Getting the Database ID

  1. Open your Notion database.
  2. Click on the "Share" button at the top right corner.
  3. Enable "Share to the web" and copy the link.
  4. The database ID is the part of the URL after https://www.notion.so/ and before the ?v=. For example, in https://www.notion.so/your-workspace/123abcde1234567890abcdef12345678?v=..., the database ID is 123abcde1234567890abcdef12345678.

Obtaining an Integration Token

  1. Go to Notion Integrations.
  2. Click on the "+ New integration" button.
  3. Give your integration a name, associate it with your workspace, and click "Submit".
  4. Copy the "Internal Integration Token" that appears.

Usage

First, import the Notion class and configure it with your Notion integration's authentication token and database IDs:

import { Notion } from '@nendlabs/notion';

const notion = new Notion({
  auth: 'your-notion-auth-token',
  databases: {
    contacts: {
      databaseId: 'your-database-id',
      // Optionally, provide a custom function to parse page metadata
      parsePageMetadata: (page) => ({
        // Custom metadata parsing logic
      }),
    },
  },
});

Retrieving Pages

To get metadata for all pages in a database:

const pagesMetadata = await notion.databases.contacts.getPagesMetadata();

To get a single page by ID with its content converted to markdown:

const page = await notion.databases.contacts.getPageById('page-id');

Creating Pages

To create a new page in a database:

const newPageId = await notion.databases.contacts.createPage({
  title: {
    type: 'title',
    title: [
      {
        type: 'text',
        text: {
          content: 'New Page Title',
        },
      },
    ],
  },
  // Additional properties...
});

Writing forms to a Notion database

Saving simple forms directly to a database can be done with the forms object provided by the sdk.

import { Notion, NotionForms } from '@nendlabs/notion';

const notion = new Notion({
  auth: 'xxx',
  databases: {
    contactForms: NotionForms.useContactFormDatabase('databaseId'),
  },
});

const formId = await NotionForms.saveContactForm(
  notion.databases.contactForms,
  {
    title: 'example form',
    submittedBy: 'Ada Noi',
    email: 'ada@nendlabs.com',
    body: "Hello I'd like to discuss your @nendlabs/notion package.",
  },
);

/@nendlabs/notion/

    Package Sidebar

    Install

    npm i @nendlabs/notion

    Weekly Downloads

    0

    Version

    0.0.3

    License

    SEE LICENSE IN LICENSE

    Unpacked Size

    75.8 kB

    Total Files

    9

    Last publish

    Collaborators

    • dxede