@rip-lang/print 1.1.5 → 1.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/package.json +2 -2
- package/print.rip +33 -13
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rip-lang/print",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.7",
|
|
4
4
|
"description": "Syntax-highlighted source code printer — highlight.js-powered, serves once, auto-opens browser",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "print.rip",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"author": "Steve Shreeve <steve.shreeve@gmail.com>",
|
|
30
30
|
"license": "MIT",
|
|
31
31
|
"dependencies": {
|
|
32
|
-
"rip-lang": ">=3.13.
|
|
32
|
+
"rip-lang": ">=3.13.11",
|
|
33
33
|
"highlight.js": "^11.11.1"
|
|
34
34
|
},
|
|
35
35
|
"files": [
|
package/print.rip
CHANGED
|
@@ -325,7 +325,7 @@ html = """
|
|
|
325
325
|
<html lang="en">
|
|
326
326
|
<head>
|
|
327
327
|
<meta charset="utf-8">
|
|
328
|
-
<title>
|
|
328
|
+
<title>Printed on #{new Date().toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' })} at #{new Date().toLocaleTimeString('en-US', { hour: 'numeric', minute: '2-digit' }).toLowerCase()}</title>
|
|
329
329
|
<link rel="icon" href="data:,">
|
|
330
330
|
<style id="hljs-theme">#{defaultCss}</style>
|
|
331
331
|
<style>
|
|
@@ -432,26 +432,48 @@ html = """
|
|
|
432
432
|
var sizeBtn = document.querySelector('.size-btn[data-size="' + savedSize + '"]');
|
|
433
433
|
if (sizeBtn) sizeBtn.click();
|
|
434
434
|
}
|
|
435
|
+
|
|
436
|
+
// Service worker: cache page so refresh works after server exits
|
|
437
|
+
if ('serviceWorker' in navigator) {
|
|
438
|
+
navigator.serviceWorker.register('/sw.js').catch(function() {});
|
|
439
|
+
}
|
|
435
440
|
</script>
|
|
436
441
|
</body>
|
|
437
442
|
</html>
|
|
438
443
|
"""
|
|
439
444
|
|
|
440
445
|
# ==============================================================================
|
|
441
|
-
# Serve
|
|
446
|
+
# Serve and open browser (service worker caches page for offline refresh)
|
|
442
447
|
# ==============================================================================
|
|
443
448
|
|
|
444
|
-
|
|
449
|
+
swScript = """\
|
|
450
|
+
self.addEventListener('install', function(e) { self.skipWaiting(); });
|
|
451
|
+
self.addEventListener('activate', function(e) { e.waitUntil(self.clients.claim()); });
|
|
452
|
+
self.addEventListener('fetch', function(e) {
|
|
453
|
+
e.respondWith(caches.match(e.request).then(function(r) {
|
|
454
|
+
return r || fetch(e.request).then(function(res) {
|
|
455
|
+
var c = res.clone();
|
|
456
|
+
caches.open('rip-print').then(function(cache) { cache.put(e.request, c); });
|
|
457
|
+
return res;
|
|
458
|
+
});
|
|
459
|
+
}));
|
|
460
|
+
});
|
|
461
|
+
"""
|
|
462
|
+
|
|
463
|
+
hits = 0
|
|
445
464
|
|
|
446
465
|
server = Bun.serve
|
|
447
466
|
port: 9111
|
|
448
467
|
fetch: (req) ->
|
|
449
|
-
|
|
468
|
+
url = new URL(req.url)
|
|
469
|
+
if url.pathname is '/sw.js'
|
|
470
|
+
hits++
|
|
471
|
+
return new Response swScript, headers: { 'Content-Type': 'application/javascript' }
|
|
472
|
+
hits++
|
|
450
473
|
new Response html, headers: { 'Content-Type': 'text/html; charset=utf-8' }
|
|
451
474
|
|
|
452
475
|
console.log "\nOpening browser..."
|
|
453
476
|
|
|
454
|
-
# Open browser
|
|
455
477
|
try
|
|
456
478
|
if process.platform is 'darwin'
|
|
457
479
|
execSync "open 'http://localhost:#{server.port}/'"
|
|
@@ -462,14 +484,12 @@ try
|
|
|
462
484
|
catch
|
|
463
485
|
console.log "Visit: http://localhost:#{server.port}/"
|
|
464
486
|
|
|
465
|
-
# Exit
|
|
466
|
-
|
|
467
|
-
if
|
|
468
|
-
|
|
469
|
-
process.exit(0)
|
|
470
|
-
else
|
|
487
|
+
# Exit once page and service worker are served (refresh works in Chrome)
|
|
488
|
+
poll = setInterval ->
|
|
489
|
+
if hits >= 2
|
|
490
|
+
clearInterval(poll)
|
|
471
491
|
setTimeout ->
|
|
472
492
|
server.stop()
|
|
473
493
|
process.exit(0)
|
|
474
|
-
,
|
|
475
|
-
,
|
|
494
|
+
, 500
|
|
495
|
+
, 200
|