From de51f2139f8994a8cd4b012a7c9239f1e945915c Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 8 Feb 2025 17:04:44 -0800 Subject: [PATCH 1/7] add createPngUrl --- lib/index.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/index.ts b/lib/index.ts index b79018d..456d016 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -33,6 +33,14 @@ export function createSvgUrl( return `https://svg.tscircuit.com/?svg_type=${svgType}&code=${encodeURIComponent(base64Data)}` } +export function createPngUrl( + tscircuitCode: string, + view: "pcb" | "schematic" | "3d", +) { + const base64Data = getCompressedBase64SnippetString(tscircuitCode) + return `https://png.tscircuit.com/?view=${view}&code=${encodeURIComponent(base64Data)}` +} + export function createSnippetUrl(text: string, snippet_type?: string): string { // Construct the URL const typeParam = snippet_type ? `&snippet_type=${snippet_type}` : "" From 64fd066352e9335222b5fe1ab47ad00f23240470 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 8 Feb 2025 17:07:06 -0800 Subject: [PATCH 2/7] add createPngUrl and createBrowserPreviewUrl --- lib/index.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/index.ts b/lib/index.ts index 456d016..f67fed2 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -33,6 +33,14 @@ export function createSvgUrl( return `https://svg.tscircuit.com/?svg_type=${svgType}&code=${encodeURIComponent(base64Data)}` } +export function createBrowserPreviewUrl( + tscircuitCode: string, + view?: "pcb" | "schematic" | "3d", +) { + const base64Data = getCompressedBase64SnippetString(tscircuitCode) + return `https://browser-preview.tscircuit.com/?view=${view}&code=${encodeURIComponent(base64Data)}` +} + export function createPngUrl( tscircuitCode: string, view: "pcb" | "schematic" | "3d", From 57c5c87cba1efcaf74f39b25362a23122be299f4 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 8 Feb 2025 17:08:15 -0800 Subject: [PATCH 3/7] format --- package.json | 3 ++- tests/test1-basic-url.test.ts | 10 ++++++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 28a9f4e..e3568c8 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "version": "0.0.7", "type": "module", "scripts": { - "build": "tsup-node lib/index.ts --dts --format esm" + "build": "tsup-node lib/index.ts --dts --format esm", + "format": "biome format --write ." }, "devDependencies": { "@biomejs/biome": "^1.9.4", diff --git a/tests/test1-basic-url.test.ts b/tests/test1-basic-url.test.ts index 2005442..e1cbda8 100644 --- a/tests/test1-basic-url.test.ts +++ b/tests/test1-basic-url.test.ts @@ -1,5 +1,9 @@ import { test, expect } from "bun:test" -import { createSnippetUrl, getUncompressedSnippetString, getBase64PoundSnippetString } from "lib" +import { + createSnippetUrl, + getUncompressedSnippetString, + getBase64PoundSnippetString, +} from "lib" declare module "bun:test" { interface Matchers { @@ -16,5 +20,7 @@ export default () => ( ) `) - expect(url).toMatchInlineSnapshot(`"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAMaEkmcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyw+wrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n/dXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY/PH03jgiCq06jxxVO0u4n38IOtlg+G3Ng//T8l69gUyPWjAmAAAAA=="`) + expect(url).toMatchInlineSnapshot( + `"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAMaEkmcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyw+wrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n/dXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY/PH03jgiCq06jxxVO0u4n38IOtlg+G3Ng//T8l69gUyPWjAmAAAAA=="`, + ) }) From 052b25a6f5fb185db85b1afa2cf62b8e54a05bdf Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 8 Feb 2025 17:08:34 -0800 Subject: [PATCH 4/7] update snapshots --- tests/test1-basic-url.test.ts | 2 +- tests/test3-svg-url.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test1-basic-url.test.ts b/tests/test1-basic-url.test.ts index e1cbda8..7ccd1a5 100644 --- a/tests/test1-basic-url.test.ts +++ b/tests/test1-basic-url.test.ts @@ -21,6 +21,6 @@ export default () => ( `) expect(url).toMatchInlineSnapshot( - `"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAMaEkmcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyw+wrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n/dXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY/PH03jgiCq06jxxVO0u4n38IOtlg+G3Ng//T8l69gUyPWjAmAAAAA=="`, + `"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAA4AqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyw+wrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n/dXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY/PH03jgiCq06jxxVO0u4n38IOtlg+G3Ng//T8l69gUyPWjAmAAAAA=="`, ) }) diff --git a/tests/test3-svg-url.test.ts b/tests/test3-svg-url.test.ts index 3d55d1e..80c6e58 100644 --- a/tests/test3-svg-url.test.ts +++ b/tests/test3-svg-url.test.ts @@ -14,6 +14,6 @@ export default () => ( ) expect(url).toMatchInlineSnapshot( - `"https://svg.tscircuit.com/?svg_type=pcb&code=H4sIAN2jkmcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyw%2Bwrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n%2FdXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY%2FPH03jgiCq06jxxVO0u4n38IOtlg%2BG3Ng%2F%2FT8l69gUyPWjAmAAAAA%3D%3D"`, + `"https://svg.tscircuit.com/?svg_type=pcb&code=H4sIAA4AqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyw%2Bwrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n%2FdXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY%2FPH03jgiCq06jxxVO0u4n38IOtlg%2BG3Ng%2F%2FT8l69gUyPWjAmAAAAA%3D%3D"`, ) }) From 6bf692bbef33a24af39e173d84c7058c7635b4a7 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 8 Feb 2025 17:10:08 -0800 Subject: [PATCH 5/7] add format check --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index e3568c8..57bf82a 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,8 @@ "type": "module", "scripts": { "build": "tsup-node lib/index.ts --dts --format esm", - "format": "biome format --write ." + "format": "biome format --write .", + "format:check": "biome format ." }, "devDependencies": { "@biomejs/biome": "^1.9.4", From 6bb4b495a3fabf610a6c9622737fe1ad3f9089d2 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 8 Feb 2025 17:10:35 -0800 Subject: [PATCH 6/7] update snapshots --- tests/test1-basic-url.test.ts | 2 +- tests/test3-svg-url.test.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test1-basic-url.test.ts b/tests/test1-basic-url.test.ts index 7ccd1a5..ba95de8 100644 --- a/tests/test1-basic-url.test.ts +++ b/tests/test1-basic-url.test.ts @@ -21,6 +21,6 @@ export default () => ( `) expect(url).toMatchInlineSnapshot( - `"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAA4AqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyw+wrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n/dXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY/PH03jgiCq06jxxVO0u4n38IOtlg+G3Ng//T8l69gUyPWjAmAAAAA=="`, + `"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAIcAqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyw+wrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n/dXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY/PH03jgiCq06jxxVO0u4n38IOtlg+G3Ng//T8l69gUyPWjAmAAAAA=="`, ) }) diff --git a/tests/test3-svg-url.test.ts b/tests/test3-svg-url.test.ts index 80c6e58..da90f6e 100644 --- a/tests/test3-svg-url.test.ts +++ b/tests/test3-svg-url.test.ts @@ -14,6 +14,6 @@ export default () => ( ) expect(url).toMatchInlineSnapshot( - `"https://svg.tscircuit.com/?svg_type=pcb&code=H4sIAA4AqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyw%2Bwrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n%2FdXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY%2FPH03jgiCq06jxxVO0u4n38IOtlg%2BG3Ng%2F%2FT8l69gUyPWjAmAAAAA%3D%3D"`, + `"https://svg.tscircuit.com/?svg_type=pcb&code=H4sIAIcAqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyw%2Bwrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n%2FdXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY%2FPH03jgiCq06jxxVO0u4n38IOtlg%2BG3Ng%2F%2FT8l69gUyPWjAmAAAAA%3D%3D"`, ) }) From 7a536a812c9b4849fec8f9f3750ef69b4d1d5573 Mon Sep 17 00:00:00 2001 From: seveibar Date: Sat, 8 Feb 2025 17:15:44 -0800 Subject: [PATCH 7/7] remove gzip time component variable --- lib/index.ts | 6 ++++-- tests/test1-basic-url.test.ts | 2 +- tests/test2-decompression.test.ts | 2 +- tests/test3-svg-url.test.ts | 2 +- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/index.ts b/lib/index.ts index f67fed2..aef92d2 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -3,7 +3,9 @@ import { base64ToBytes, bytesToBase64 } from "./bytesToBase64" export function getCompressedBase64SnippetString(text: string) { // Compress the input string - const compressedData = gzipSync(strToU8(text)) + const compressedData = gzipSync(strToU8(text.trim()), { + mtime: 1739063707691, // Date.now() when i wrote this line, ensures consistent output + }) // Convert to base64 const base64Data = bytesToBase64(compressedData) @@ -12,7 +14,7 @@ export function getCompressedBase64SnippetString(text: string) { } export function getBase64PoundSnippetString(text: string) { - const base64Data = getCompressedBase64SnippetString(text) + const base64Data = getCompressedBase64SnippetString(text.trim()) return `#data:application/gzip;base64,${base64Data}` } diff --git a/tests/test1-basic-url.test.ts b/tests/test1-basic-url.test.ts index ba95de8..b748042 100644 --- a/tests/test1-basic-url.test.ts +++ b/tests/test1-basic-url.test.ts @@ -21,6 +21,6 @@ export default () => ( `) expect(url).toMatchInlineSnapshot( - `"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAIcAqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyw+wrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n/dXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY/PH03jgiCq06jxxVO0u4n38IOtlg+G3Ng//T8l69gUyPWjAmAAAAA=="`, + `"https://tscircuit.com/editor?#data:application/gzip;base64,H4sIAJsBqGcAAy2NTQ7CIBhE9z3FhFW7KlWXhUO4ckuBClF+Ap/RxHh30Xb3JvMyY185FYKxq3rcCf0AIdF3wLwkVQye3pATbOIhMDjrr472JJvUtGKrr5QKNlBR2ybcGNaUKBcfm89P/MAQVWjVeWKo2l3E+/hB1ssG429tHv+fshu+lSYxzJYAAAA="`, ) }) diff --git a/tests/test2-decompression.test.ts b/tests/test2-decompression.test.ts index 1232812..90d35ac 100644 --- a/tests/test2-decompression.test.ts +++ b/tests/test2-decompression.test.ts @@ -17,5 +17,5 @@ pcbX={3} /> const compressed = getBase64PoundSnippetString(originalText) const uncompressed = getUncompressedSnippetString(compressed) - expect(uncompressed).toEqual(originalText) + expect(uncompressed).toEqual(originalText.trim()) }) diff --git a/tests/test3-svg-url.test.ts b/tests/test3-svg-url.test.ts index da90f6e..b762f4a 100644 --- a/tests/test3-svg-url.test.ts +++ b/tests/test3-svg-url.test.ts @@ -14,6 +14,6 @@ export default () => ( ) expect(url).toMatchInlineSnapshot( - `"https://svg.tscircuit.com/?svg_type=pcb&code=H4sIAIcAqGcAAy2NTQ7CIBhE95xiwqpdtVWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyw%2Bwrp0IwdlWPO6HrISQ6BsxLUsXg6Q05wacxBA5n%2FdXRnmSTmlZs9ZVSwQYqatuEG8eaEuXiY%2FPH03jgiCq06jxxVO0u4n38IOtlg%2BG3Ng%2F%2FT8l69gUyPWjAmAAAAA%3D%3D"`, + `"https://svg.tscircuit.com/?svg_type=pcb&code=H4sIAJsBqGcAAy2NTQ7CIBhE9z3FhFW7KlWXhUO4ckuBClF%2BAp%2FRxHh30Xb3JvMyY185FYKxq3rcCf0AIdF3wLwkVQye3pATbOIhMDjrr472JJvUtGKrr5QKNlBR2ybcGNaUKBcfm89P%2FMAQVWjVeWKo2l3E%2B%2FhB1ssG429tHv%2Bfshu%2BlSYxzJYAAAA%3D"`, ) })