Skip to content

jerrywdlee/clipy-mate-core

Repository files navigation

Clipy Mate Core

npm version Build Status Coverage Status Known Vulnerabilities

Access Clipy From Node.js
English | 日本語

Introduction

Clipy is a Clipboard extension app for macOS. This package allow developers access Clipy's folders and snippets using Node.js.
It also provides TypeScript API and all tests are written by TypeScript.

[Attention] This package will access Clipy's Realm Database directly, so you may need to restart Clipy App if snippets updated.

Table of Contents

Requirements

  • MacOS 10.10 and over
  • Clipy v1.2.0 and over
  • Node.js v8.9.0 and < v12 (Why?)

Installation

Use the package manager npm to install.

npm i clipy-mate-core

Usage

Import

const ClipyMate = require('clipy-mate-core');
const clipy = new ClipyMate();
import ClipyMate from 'clipy-mate-core'
const clipy: ClipyMate = new ClipyMate();

Read Snippets

// Read all Folders and Snippets
clipy.readSnippets().then((folders) => {
  console.log(folders);
  console.log(folders[0].snippets);
});

Parse XML

// Parse `snippet.xml`
const fs = require('fs');
clipy.parseXml(fs.readFileSync('./snippet.xml')).then((folders) => {
  console.log(folders);
  console.log(folders[0].snippets);
});

Create and Update

// Create or Update a folder
// it will update a folder has same `identifier` field
// or create a new folder if `identifier` is blank or not found
clipy.upsertFolder({ title: 'test folder' }).then(folder => {
  console.log(folder.identifier);
});

// Create or Update a snippet inside a folder
// it will update a snippet has same `identifier` field
// or create a new snippet if `identifier` is blank or not found
const folder = clipy.CPYFolder[0];
const folderId = folder.identifier;
clipy.upsertSnippet({ title: 'test snippet', content: 'test' }, folderId).then(snippet => {
  console.log(snippet.identifier);
});

Destroy

// Destroy a specific folder (All snippets in this folder will also be destroyed)
const folder = clipy.CPYFolder[0];
const folderId = folder.identifier;
clipy.destroyFolder(snippetId).then(folder => {
  console.log(folder);
});

// Destroy a specific snippet
const snippet = clipy.CPYSnippet[0];
const snippetId = snippet.identifier;
clipy.destroySnippet(snippetId).then(snippet => {
  console.log(snippet);
});

// [Danger!] Destroy all folders and snippets
clipy.clearAllSnippets().then();

Close Realm Connection

// After all
clipy.disconnect();

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

BSD-3-Clause