Initial Node.js library and CLI

This commit is contained in:
sergeych committed 2026-08-19 14:07:16 +04:00
commit dd74209ed1
14 files changed
+1343

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
'use strict';
const { Boss, SymmetricKey } = require('unicrypto');
const { initializeCrypto, openCrypstie } = require('../src');
async function main() {
await initializeCrypto();
const key = new SymmetricKey();
const text = `Crypstie Node compatibility fixture ${new Date().toISOString()}`;
const record = {
guid: '',
encryptedData: key.etaEncryptSync(new TextEncoder().encode(text)),
deleteAt: new Date(Date.now() + 90 * 24 * 60 * 60 * 1000),
burnOnShow: false,
showWide: false,
syntaxHighlighting: null,
editable: false,
ownerHandle: null,
};
const form = new FormData();
form.append('data', new Blob([Boss.dump(record)]), 'crypstie.boss');
const response = await fetch('https://crypstie.com/api/crypstie', {
method: 'POST',
body: form,
});
if (!response.ok) throw new Error(`create failed: HTTP ${response.status}`);
const id = await response.text();
const encodedKey = Buffer.from(key.pack())
.toString('base64')
.replaceAll('+', '.')
.replaceAll('/', '_')
.replace(/=+$/, '');
const url = `https://crypstie.com/_${id}#${encodedKey}`;
const opened = await openCrypstie(url);
if (opened.text !== text) throw new Error('live round trip returned different plaintext');
console.log(url);
console.log(opened.text);
}
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});