@bookshop/hugo-engine 2.4.0 → 2.4.1

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.
@@ -1 +1 @@
1
- {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23488,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173677,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/46dcfe75-3bbf-4f92-a6b3-8145e351ae24.json","externalId":"","uuid":"46dcfe75-3bbf-4f92-a6b3-8145e351ae24","files":[]}
1
+ {"parent":"222873c9-9975-439a-a423-1e8cdec80767","pid":37259,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643741988315,"ppid":37256,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/0285db3a-0bb1-48c5-a949-061f568eaab6.json","externalId":"","uuid":"0285db3a-0bb1-48c5-a949-061f568eaab6","files":[]}
@@ -0,0 +1 @@
1
+ {"parent":null,"pid":37256,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/cli.js","-v"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643741987817,"ppid":37255,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/222873c9-9975-439a-a423-1e8cdec80767.json","externalId":"","uuid":"222873c9-9975-439a-a423-1e8cdec80767","files":[]}
@@ -1 +1 @@
1
- {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23487,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173669,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/67223940-25e4-4ca5-88f7-2427417305e6.json","externalId":"","uuid":"67223940-25e4-4ca5-88f7-2427417305e6","files":[]}
1
+ {"parent":"222873c9-9975-439a-a423-1e8cdec80767","pid":37260,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643741988320,"ppid":37256,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/3abd89cc-3259-442a-a584-30ba1c47f41f.json","externalId":"","uuid":"3abd89cc-3259-442a-a584-30ba1c47f41f","files":[]}
@@ -1 +1 @@
1
- {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23486,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173664,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/8cad51f7-2d53-4aad-9ac6-583d26278617.json","externalId":"","uuid":"8cad51f7-2d53-4aad-9ac6-583d26278617","files":[]}
1
+ {"parent":"222873c9-9975-439a-a423-1e8cdec80767","pid":37258,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643741988310,"ppid":37256,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/72cd08d5-81da-4a01-af7e-b82f5c58bfe2.json","externalId":"","uuid":"72cd08d5-81da-4a01-af7e-b82f5c58bfe2","files":[]}
@@ -1 +1 @@
1
- {"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","pid":23485,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173660,"ppid":23484,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/b0aa8748-7b49-40c3-a46a-4c4b89756480.json","externalId":"","uuid":"b0aa8748-7b49-40c3-a46a-4c4b89756480","files":[]}
1
+ {"parent":"222873c9-9975-439a-a423-1e8cdec80767","pid":37257,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/lib/worker/subprocess.js"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643741988307,"ppid":37256,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/85ee537c-1dd7-4a62-96e1-954d77437eb0.json","externalId":"","uuid":"85ee537c-1dd7-4a62-96e1-954d77437eb0","files":[]}
@@ -1 +1 @@
1
- {"processes":{"46dcfe75-3bbf-4f92-a6b3-8145e351ae24":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"67223940-25e4-4ca5-88f7-2427417305e6":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"8cad51f7-2d53-4aad-9ac6-583d26278617":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"b0aa8748-7b49-40c3-a46a-4c4b89756480":{"parent":"f64c5820-5f85-4cca-a4b8-197da73a4918","children":[]},"f64c5820-5f85-4cca-a4b8-197da73a4918":{"parent":null,"children":["46dcfe75-3bbf-4f92-a6b3-8145e351ae24","67223940-25e4-4ca5-88f7-2427417305e6","8cad51f7-2d53-4aad-9ac6-583d26278617","b0aa8748-7b49-40c3-a46a-4c4b89756480"]}},"files":{},"externalIds":{}}
1
+ {"processes":{"0285db3a-0bb1-48c5-a949-061f568eaab6":{"parent":"222873c9-9975-439a-a423-1e8cdec80767","children":[]},"222873c9-9975-439a-a423-1e8cdec80767":{"parent":null,"children":["0285db3a-0bb1-48c5-a949-061f568eaab6","3abd89cc-3259-442a-a584-30ba1c47f41f","72cd08d5-81da-4a01-af7e-b82f5c58bfe2","85ee537c-1dd7-4a62-96e1-954d77437eb0"]},"3abd89cc-3259-442a-a584-30ba1c47f41f":{"parent":"222873c9-9975-439a-a423-1e8cdec80767","children":[]},"72cd08d5-81da-4a01-af7e-b82f5c58bfe2":{"parent":"222873c9-9975-439a-a423-1e8cdec80767","children":[]},"85ee537c-1dd7-4a62-96e1-954d77437eb0":{"parent":"222873c9-9975-439a-a423-1e8cdec80767","children":[]}},"files":{},"externalIds":{}}
@@ -1,16 +1,57 @@
1
- rm -f hugo_renderer.wasm
2
- FILENAME="hugo_renderer_$(date +%s).wasm"
3
- GOOS=js GOARCH=wasm go build -tags nodeploy -o $FILENAME
4
- printf "Built Hugo WASM via $FILENAME : "
5
- ls -lh $FILENAME | awk '{print $5}'
6
- if [ -f hugo_renderer.wasm ]; then
7
- echo "ERROR: previous hugo_renderer.wasm still in directory"
1
+ if [[ -z "${BOOKSHOP_VERSION}" ]]; then
2
+ echo "ERROR: BOOKSHOP_VERSION environment variable does not exist"
8
3
  exit 1
9
4
  fi
10
- mv $FILENAME hugo_renderer.wasm
11
- if [ ! -f hugo_renderer.wasm ]; then
5
+
6
+ TMPFILENAME="hugo_renderer_$(date +%s).wasm"
7
+ OUTPUTFILENAME="hugo_renderer.wasm"
8
+ CDNFILENAME="../../../../../bookshopcdn/hugo/hugo_renderer_$BOOKSHOP_VERSION.wasm"
9
+
10
+ # Clean
11
+ rm -f $OUTPUTFILENAME
12
+ if [ -f $OUTPUTFILENAME ]; then
13
+ echo "ERROR: previous $OUTPUTFILENAME still in directory"
14
+ exit 1
15
+ fi
16
+
17
+ # Build temp module
18
+ GOOS=js GOARCH=wasm go build -tags nodeploy -o $TMPFILENAME
19
+ printf "Built Hugo WASM via $TMPFILENAME : "
20
+ ls -lh $TMPFILENAME | awk '{print $5}'
21
+
22
+ # Link repo module
23
+ mv $TMPFILENAME $OUTPUTFILENAME
24
+ if [ ! -f $OUTPUTFILENAME ]; then
12
25
  echo "ERROR: hugo_renderer.wasm not complete"
13
26
  exit 1
14
27
  fi
15
- echo "Done. Hugo WASM available at hugo_renderer.wasm"
28
+ echo "Done. Repo Hugo WASM available at hugo_renderer.wasm"
29
+
30
+ # If we're just in a test run we don't want to touch the CDN repo
31
+ if [[ -z "${PUBLISH_BOOKSHOP_CDN}" ]]; then
32
+ echo "Not publishing to CDN."
33
+ exit 0
34
+ fi
35
+
36
+ # Check CDN
37
+ if [ ! -d ../../../../../bookshopcdn/hugo ]; then
38
+ echo "ERROR: bookshopcdn repo does not exist alongside bookshop repo"
39
+ exit 1
40
+ fi
41
+
42
+ # Link CDN module
43
+ cp $OUTPUTFILENAME $CDNFILENAME
44
+ if [ ! -f $CDNFILENAME ]; then
45
+ echo "ERROR: $CDNFILENAME not complete"
46
+ exit 1
47
+ fi
48
+ echo "Done. CDN Hugo WASM available at $CDNFILENAME"
49
+
50
+ cd ../../../../../bookshopcdn
51
+
52
+ git add -A \
53
+ && git commit -m "build: releasing $BOOKSHOP_VERSION" \
54
+ && git tag -a v$BOOKSHOP_VERSION -m "build: releasing $BOOKSHOP_VERSION" \
55
+ && git push --tags && git push
56
+
16
57
  exit 0
package/lib/engine.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import hugoWasm from "../hugo-renderer/hugo_renderer.wasm";
2
2
  import translateTextTemplate from './translateTextTemplate.js';
3
3
  import { IdentifierParser } from './hugoIdentifierParser.js';
4
+ import { version } from '../package.json';
4
5
 
5
6
  const sleep = (ms = 0) => {
6
7
  return new Promise(r => setTimeout(r, ms));
@@ -24,18 +25,17 @@ export class Engine {
24
25
  this.key = 'hugo';
25
26
  this.name = options.name;
26
27
  this.files = options.files;
28
+ this.origin = document.currentScript?.src || `/bookshop.js`;
27
29
 
28
30
  this.initializeHugo();
29
31
  }
30
32
 
31
33
  async initializeHugo() {
32
- const scriptOrigin = document.currentScript?.src || `/bookshop.js`;
33
- const wasmOrigin = scriptOrigin.replace(/\/[^\.\/]+\.js$/, hugoWasm.replace(/^\./, ''));
34
- const go = new Go();
35
- const response = await fetch(wasmOrigin);
36
- const buffer = await response.arrayBuffer();
37
- const result = await WebAssembly.instantiate(buffer, go.importObject);
38
- go.run(result.instance)
34
+ if (window.CloudCannon?.isMocked) {
35
+ await this.initializeLocalHugo();
36
+ } else {
37
+ await this.initializeRemoteHugo();
38
+ }
39
39
 
40
40
  // TODO: Tidy
41
41
  const mappedFiles = {};
@@ -48,6 +48,33 @@ export class Engine {
48
48
  const success = window.loadHugoBookshopPartials(JSON.stringify(mappedFiles));
49
49
  }
50
50
 
51
+ async initializeRemoteHugo() {
52
+ try {
53
+ const go = new Go();
54
+ const remoteWasmOrigin = `https://cdn.bookshop.build/hugo/hugo_renderer_${version}.wasm`;
55
+ const remoteResponse = await fetch(remoteWasmOrigin);
56
+ const remoteBuffer = await remoteResponse.arrayBuffer();
57
+
58
+ // Check the magic word at the start of the buffer as a way to verify the CDN download worked.
59
+ const isWasm = ([...new Uint8Array(remoteBuffer, 0, 4)]).map(g => g.toString(16).padStart(2, '0')).join('') === "0061736d";
60
+ if (!isWasm) throw "Not WASM";
61
+
62
+ const remoteResult = await WebAssembly.instantiate(remoteBuffer, go.importObject);
63
+ go.run(remoteResult.instance);
64
+ } catch (e) {
65
+ await this.initializeLocalHugo();
66
+ }
67
+ }
68
+
69
+ async initializeLocalHugo() {
70
+ const go = new Go();
71
+ const wasmOrigin = this.origin.replace(/\/[^\.\/]+\.js$/, hugoWasm.replace(/^\./, ''));
72
+ const response = await fetch(wasmOrigin);
73
+ const buffer = await response.arrayBuffer();
74
+ const result = await WebAssembly.instantiate(buffer, go.importObject);
75
+ go.run(result.instance);
76
+ }
77
+
51
78
  getShared(name) {
52
79
  const key = `shared/hugo/${name}.hugo.html`
53
80
  return this.files?.[key];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@bookshop/hugo-engine",
3
3
  "packageManager": "yarn@3.0.0",
4
- "version": "2.4.0",
4
+ "version": "2.4.1",
5
5
  "description": "Bookshop frontend Hugo renderer",
6
6
  "type": "module",
7
7
  "sideEffects": false,
@@ -29,7 +29,7 @@
29
29
  "nyc": "^15.1.0"
30
30
  },
31
31
  "dependencies": {
32
- "@bookshop/helpers": "2.4.0",
32
+ "@bookshop/helpers": "2.4.1",
33
33
  "esbuild": "^0.13.10",
34
34
  "liquidjs": "9.28.0"
35
35
  },
@@ -1 +0,0 @@
1
- {"parent":null,"pid":23484,"argv":["/Users/liambigelow/.nvm/versions/node/v14.16.0/bin/node","/Users/liambigelow/Projects/CC/bookshop/javascript-modules/node_modules/ava/cli.js","-v"],"execArgv":[],"cwd":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine","time":1643594173128,"ppid":23483,"coverageFilename":"/Users/liambigelow/Projects/CC/bookshop/javascript-modules/engines/hugo-engine/.nyc_output/f64c5820-5f85-4cca-a4b8-197da73a4918.json","externalId":"","uuid":"f64c5820-5f85-4cca-a4b8-197da73a4918","files":[]}