sketchmark 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +0 -85
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -84
- package/dist/index.js.map +1 -1
- package/dist/sketchmark.iife.js +0 -85
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -49,5 +49,4 @@ export interface DiagramInstance {
|
|
|
49
49
|
export declare function render(options: RenderOptions): DiagramInstance;
|
|
50
50
|
export { PALETTES, resolvePalette, THEME_CONFIG_KEY, listThemes, THEME_NAMES } from './theme';
|
|
51
51
|
export { resolveFont, loadFont, registerFont, BUILTIN_FONTS } from './fonts';
|
|
52
|
-
export { shareDiagram, loadSharedDiagram } from './share/encrypted';
|
|
53
52
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5241,89 +5241,6 @@ class EventEmitter {
|
|
|
5241
5241
|
}
|
|
5242
5242
|
}
|
|
5243
5243
|
|
|
5244
|
-
// ============================================================
|
|
5245
|
-
// sketchmark — Encrypted sharing
|
|
5246
|
-
// Diagram DSL is encrypted in the browser.
|
|
5247
|
-
// The server stores an opaque blob it cannot read.
|
|
5248
|
-
// The decryption key lives only in the URL fragment (#key=...).
|
|
5249
|
-
// ============================================================
|
|
5250
|
-
const WORKER_URL = 'https://sketchmark.anmism.workers.dev';
|
|
5251
|
-
// ── Crypto helpers ────────────────────────────────────────
|
|
5252
|
-
async function generateKey() {
|
|
5253
|
-
return crypto.subtle.generateKey({ name: 'AES-GCM', length: 256 }, true, // extractable so we can export to URL
|
|
5254
|
-
['encrypt', 'decrypt']);
|
|
5255
|
-
}
|
|
5256
|
-
async function keyToBase64(key) {
|
|
5257
|
-
const raw = await crypto.subtle.exportKey('raw', key);
|
|
5258
|
-
return btoa(String.fromCharCode(...new Uint8Array(raw)));
|
|
5259
|
-
}
|
|
5260
|
-
async function base64ToKey(b64) {
|
|
5261
|
-
const raw = Uint8Array.from(atob(b64), c => c.charCodeAt(0));
|
|
5262
|
-
return crypto.subtle.importKey('raw', raw, { name: 'AES-GCM' }, false, // not extractable on the receiving end
|
|
5263
|
-
['decrypt']);
|
|
5264
|
-
}
|
|
5265
|
-
// ── Encrypt ───────────────────────────────────────────────
|
|
5266
|
-
async function encryptDSL(dsl, key) {
|
|
5267
|
-
const iv = crypto.getRandomValues(new Uint8Array(12));
|
|
5268
|
-
const encoded = new TextEncoder().encode(dsl);
|
|
5269
|
-
const encrypted = await crypto.subtle.encrypt({ name: 'AES-GCM', iv }, key, encoded);
|
|
5270
|
-
// prepend iv to the blob: [ iv (12 bytes) | ciphertext ]
|
|
5271
|
-
const result = new Uint8Array(12 + encrypted.byteLength);
|
|
5272
|
-
result.set(iv, 0);
|
|
5273
|
-
result.set(new Uint8Array(encrypted), 12);
|
|
5274
|
-
return result;
|
|
5275
|
-
}
|
|
5276
|
-
// ── Decrypt ───────────────────────────────────────────────
|
|
5277
|
-
async function decryptBlob(blob, key) {
|
|
5278
|
-
const iv = blob.slice(0, 12);
|
|
5279
|
-
const ciphertext = blob.slice(12);
|
|
5280
|
-
const decrypted = await crypto.subtle.decrypt({ name: 'AES-GCM', iv }, key, ciphertext);
|
|
5281
|
-
return new TextDecoder().decode(decrypted);
|
|
5282
|
-
}
|
|
5283
|
-
// ── Public API ────────────────────────────────────────────
|
|
5284
|
-
/**
|
|
5285
|
-
* Encrypt DSL, upload to worker, return shareable URL.
|
|
5286
|
-
* The URL fragment (#key=...) never reaches the server.
|
|
5287
|
-
*/
|
|
5288
|
-
async function shareDiagram(dsl) {
|
|
5289
|
-
const key = await generateKey();
|
|
5290
|
-
const blob = await encryptDSL(dsl, key);
|
|
5291
|
-
const keyB64 = await keyToBase64(key);
|
|
5292
|
-
const res = await fetch(`${WORKER_URL}/api/blob`, {
|
|
5293
|
-
method: 'POST',
|
|
5294
|
-
headers: { 'Content-Type': 'application/octet-stream' },
|
|
5295
|
-
body: blob.buffer,
|
|
5296
|
-
});
|
|
5297
|
-
if (!res.ok)
|
|
5298
|
-
throw new Error(`Upload failed: ${res.status}`);
|
|
5299
|
-
const { id } = await res.json();
|
|
5300
|
-
// key goes into the fragment — browser never sends this to any server
|
|
5301
|
-
return `${window.location.origin}/sketchmark/playground.html?s=${id}#key=${keyB64}`;
|
|
5302
|
-
}
|
|
5303
|
-
/**
|
|
5304
|
-
* Read ?s= and #key= from the current URL, fetch + decrypt the diagram.
|
|
5305
|
-
* Returns null if no share params found.
|
|
5306
|
-
*/
|
|
5307
|
-
async function loadSharedDiagram() {
|
|
5308
|
-
const params = new URLSearchParams(window.location.search);
|
|
5309
|
-
const id = params.get('s');
|
|
5310
|
-
if (!id)
|
|
5311
|
-
return null;
|
|
5312
|
-
// key is in the fragment — parse manually, not via URLSearchParams
|
|
5313
|
-
// (URLSearchParams on hash strips the #)
|
|
5314
|
-
const fragment = window.location.hash.slice(1);
|
|
5315
|
-
const keyMatch = fragment.match(/key=([^&]+)/);
|
|
5316
|
-
if (!keyMatch)
|
|
5317
|
-
return null;
|
|
5318
|
-
const keyB64 = keyMatch[1];
|
|
5319
|
-
const res = await fetch(`${WORKER_URL}/api/blob/${id}`);
|
|
5320
|
-
if (!res.ok)
|
|
5321
|
-
throw new Error('Diagram not found or expired');
|
|
5322
|
-
const blob = await res.arrayBuffer();
|
|
5323
|
-
const key = await base64ToKey(keyB64);
|
|
5324
|
-
return decryptBlob(blob, key);
|
|
5325
|
-
}
|
|
5326
|
-
|
|
5327
5244
|
// ============================================================
|
|
5328
5245
|
// sketchmark — Public API
|
|
5329
5246
|
// ============================================================
|
|
@@ -5388,5 +5305,5 @@ function render(options) {
|
|
|
5388
5305
|
return instance;
|
|
5389
5306
|
}
|
|
5390
5307
|
|
|
5391
|
-
export { ANIMATION_CSS, AnimationController, BUILTIN_FONTS, EventEmitter, PALETTES, ParseError, THEME_CONFIG_KEY, THEME_NAMES, buildSceneGraph, canvasToPNGBlob, canvasToPNGDataURL, clamp, connPoint, debounce, exportCanvasPNG, exportGIF, exportHTML, exportMP4, exportPNG, exportSVG, getSVGBlob, groupMap, hashStr, layout, lerp, listThemes, loadFont,
|
|
5308
|
+
export { ANIMATION_CSS, AnimationController, BUILTIN_FONTS, EventEmitter, PALETTES, ParseError, THEME_CONFIG_KEY, THEME_NAMES, buildSceneGraph, canvasToPNGBlob, canvasToPNGDataURL, clamp, connPoint, debounce, exportCanvasPNG, exportGIF, exportHTML, exportMP4, exportPNG, exportSVG, getSVGBlob, groupMap, hashStr, layout, lerp, listThemes, loadFont, markdownMap, nodeMap, parse, parseHex, registerFont, render, renderToCanvas, renderToSVG, resolveFont, resolvePalette, sleep, svgToPNGDataURL, svgToString, throttle };
|
|
5392
5309
|
//# sourceMappingURL=index.js.map
|