add unofficial notion api wrapper (capable of getting, searching, creating and editing all content)

This commit is contained in:
dragonwocky 2021-10-04 18:32:03 +11:00
parent a86b363ea2
commit 9bb779149b
5 changed files with 25 additions and 9 deletions

View File

@ -15,6 +15,8 @@ export * as fs from './fs.mjs';
/** environment-specific data persistence */ /** environment-specific data persistence */
export * as storage from './storage.mjs'; export * as storage from './storage.mjs';
/** a basic wrapper around notion's unofficial api */
export * as notion from './notion.mjs';
/** helpers for formatting, validating and parsing values */ /** helpers for formatting, validating and parsing values */
export * as fmt from './fmt.mjs'; export * as fmt from './fmt.mjs';
/** interactions with the enhancer's repository of mods */ /** interactions with the enhancer's repository of mods */

View File

@ -28,9 +28,10 @@ export { feather } from './feather.mjs';
/** /**
* adds a view to the enhancer's side panel * adds a view to the enhancer's side panel
* @param {string} param0.id - a uuid, used to restore it on reload if it was last open * @param {object} panel- information used to construct and render the panel
* @param {string} param0.icon - an svg string * @param {string} panel.id - a uuid, used to restore the last open view on reload
* @param {string} param0.title - the name of the view * @param {string} panel.icon - an svg string
* @param {Element} param0.$content - an element containing the content of the view * @param {string} panel.title - the name of the view
* @param {Element} panel.$content - an element containing the content of the view
*/ */
export { addPanelView } from './panel.mjs'; export { addPanelView } from './panel.mjs';

View File

@ -222,10 +222,11 @@ web.loadStylesheet('api/components/panel.css');
/** /**
* adds a view to the enhancer's side panel * adds a view to the enhancer's side panel
* @param {string} param0.id - a uuid, used to restore the last open view on reload * @param {object} panel- information used to construct and render the panel
* @param {string} param0.icon - an svg string * @param {string} panel.id - a uuid, used to restore the last open view on reload
* @param {string} param0.title - the name of the view * @param {string} panel.icon - an svg string
* @param {Element} param0.$content - an element containing the content of the view * @param {string} panel.title - the name of the view
* @param {Element} panel.$content - an element containing the content of the view
*/ */
export const addPanelView = async ({ id, icon, title, $content }) => { export const addPanelView = async ({ id, icon, title, $content }) => {
const view = { const view = {

View File

@ -81,6 +81,18 @@ export const slugger = (heading, slugs = new Set()) => {
return slug; return slug;
}; };
/**
* generate a reasonably random uuidv4 string. uses crypto implementation if available
* (from https://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid)
* @returns {string} a uuidv4
*/
export const uuidv4 = () =>
crypto?.randomUUID
? crypto.randomUUID()
: ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, (c) =>
(c ^ (crypto.getRandomValues(new Uint8Array(1))[0] & (15 >> (c / 4)))).toString(16)
);
const patterns = { const patterns = {
alphanumeric: /^[\w\.-]+$/, alphanumeric: /^[\w\.-]+$/,
uuid: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i, uuid: /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,

View File

@ -24,7 +24,7 @@ export const jscolor = JSColor;
/** /**
* wait until a page is loaded and ready for modification * wait until a page is loaded and ready for modification
* @param {array} [selectors=[]] - wait for the existence of elements that match these css selectors * @param {array} [selectors] - wait for the existence of elements that match these css selectors
* @returns {Promise} a promise that will resolve when the page is ready * @returns {Promise} a promise that will resolve when the page is ready
*/ */
export const whenReady = (selectors = []) => { export const whenReady = (selectors = []) => {