@jeremyckahn/farmhand 1.19.0 → 1.19.2

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/electron.js CHANGED
@@ -1,10 +1,15 @@
1
1
  // From: https://www.section.io/engineering-education/desktop-application-with-react/
2
- const path = require('path')
2
+ import { join, dirname } from 'path'
3
+ import { fileURLToPath } from 'url'
3
4
 
4
- const { app, BrowserWindow } = require('electron')
5
- const isDev = require('electron-is-dev')
5
+ import { app, BrowserWindow } from 'electron'
6
+ import isDev from 'electron-is-dev'
6
7
 
7
- const { autoUpdater } = require('electron-updater')
8
+ import electronUpdater from 'electron-updater'
9
+ const { autoUpdater } = electronUpdater
10
+
11
+ const __filename = fileURLToPath(import.meta.url)
12
+ const __dirname = dirname(__filename)
8
13
 
9
14
  function createWindow() {
10
15
  // Create the browser window.
@@ -14,16 +19,16 @@ function createWindow() {
14
19
  webPreferences: {
15
20
  nodeIntegration: true,
16
21
  },
17
- icon: path.join(__dirname, './app-icons/Icon-512x512.png'),
22
+ icon: join(__dirname, './app-icons/Icon-512x512.png'),
18
23
  })
19
24
 
20
25
  // and load the index.html of the app.
21
26
  // win.loadFile("index.html");
22
- const hostUrl = isDev
23
- ? 'http://localhost:3000'
24
- : `file://${path.join(__dirname, '../build/index.html')}`
25
-
26
- win.loadURL(hostUrl)
27
+ if (isDev) {
28
+ win.loadURL('http://localhost:3000')
29
+ } else {
30
+ win.loadFile(join(__dirname, '../dist/index.html'))
31
+ }
27
32
 
28
33
  // Open the DevTools.
29
34
  if (isDev) {
package/dist/index.html CHANGED
@@ -75,7 +75,7 @@
75
75
  gtag('config', analyticsID)
76
76
  })()
77
77
  </script>
78
- <script type="module" crossorigin src="./assets/index-2O0aXGvn.js"></script>
78
+ <script type="module" crossorigin src="./assets/index-Cq9-4Mu0.js"></script>
79
79
  <link rel="stylesheet" crossorigin href="./assets/index-0imIraMM.css">
80
80
  <link rel="manifest" href="./manifest.webmanifest"></head>
81
81
  <body>
@@ -1,2 +1,2 @@
1
- if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let l={};const t=e=>i(e,r),d={module:{uri:r},exports:l,require:t};s[r]=Promise.all(n.map(e=>d[e]||t(e))).then(e=>(o(...e),l))}}define(["./workbox-e3490c72"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"assets/index-0imIraMM.css",revision:null},{url:"assets/index-2O0aXGvn.js",revision:null},{url:"assets/workbox-window.prod.es5-B9K5rw8f.js",revision:null},{url:"electron.js",revision:"c419aaff6f843131780231a79a3aabce"},{url:"index.html",revision:"c745c018c30174e25ffe98866a241a2e"},{url:"favicon.ico",revision:"445bb19d4a8fd46eb433dd43cbdce691"},{url:"logo192.png",revision:"70746d790b8990639d1390337d77d81a"},{url:"logo512.png",revision:"b044ab46b3f33f0e2d313d961bf1f654"},{url:"logoMaskable.png",revision:"23be58ccf16df9f43658aad3da30056d"},{url:"manifest.webmanifest",revision:"b8a832f482bc32629a287223fe8aa5d2"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});
1
+ if(!self.define){let e,s={};const i=(i,n)=>(i=new URL(i+".js",n).href,s[i]||new Promise(s=>{if("document"in self){const e=document.createElement("script");e.src=i,e.onload=s,document.head.appendChild(e)}else e=i,importScripts(i),s()}).then(()=>{let e=s[i];if(!e)throw new Error(`Module ${i} didn’t register its module`);return e}));self.define=(n,o)=>{const r=e||("document"in self?document.currentScript.src:"")||location.href;if(s[r])return;let d={};const l=e=>i(e,r),t={module:{uri:r},exports:d,require:l};s[r]=Promise.all(n.map(e=>t[e]||l(e))).then(e=>(o(...e),d))}}define(["./workbox-e3490c72"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"assets/index-0imIraMM.css",revision:null},{url:"assets/index-Cq9-4Mu0.js",revision:null},{url:"assets/workbox-window.prod.es5-B9K5rw8f.js",revision:null},{url:"electron.js",revision:"b0456826f47539f6c1957c3add5eb959"},{url:"index.html",revision:"f03537f0c428afa3de9a936d6c40e165"},{url:"favicon.ico",revision:"445bb19d4a8fd46eb433dd43cbdce691"},{url:"logo192.png",revision:"70746d790b8990639d1390337d77d81a"},{url:"logo512.png",revision:"b044ab46b3f33f0e2d313d961bf1f654"},{url:"logoMaskable.png",revision:"23be58ccf16df9f43658aad3da30056d"},{url:"manifest.webmanifest",revision:"b8a832f482bc32629a287223fe8aa5d2"}],{}),e.cleanupOutdatedCaches(),e.registerRoute(new e.NavigationRoute(e.createHandlerBoundToURL("index.html")))});
2
2
  //# sourceMappingURL=service-worker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"service-worker.js","sources":["../../../../../tmp/f928ccc76473158a2d1a4521c375020a/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/index-0imIraMM.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-2O0aXGvn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-B9K5rw8f.js\",\n \"revision\": null\n },\n {\n \"url\": \"electron.js\",\n \"revision\": \"c419aaff6f843131780231a79a3aabce\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"c745c018c30174e25ffe98866a241a2e\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"445bb19d4a8fd46eb433dd43cbdce691\"\n },\n {\n \"url\": \"logo192.png\",\n \"revision\": \"70746d790b8990639d1390337d77d81a\"\n },\n {\n \"url\": \"logo512.png\",\n \"revision\": \"b044ab46b3f33f0e2d313d961bf1f654\"\n },\n {\n \"url\": \"logoMaskable.png\",\n \"revision\": \"23be58ccf16df9f43658aad3da30056d\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"b8a832f482bc32629a287223fe8aa5d2\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"index.html\")));\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox","registerRoute","workbox_routing_NavigationRoute","NavigationRoute","workbox_precaching_createHandlerBoundToURL"],"mappings":"inBAuBAA,KAAKC,iBAAiB,UAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,gBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C"}
1
+ {"version":3,"file":"service-worker.js","sources":["../../../../../tmp/3f24087c68e090ce6bce223d0e77e3c4/service-worker.js"],"sourcesContent":["import {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';\nimport {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-routing/registerRoute.mjs';\nimport {NavigationRoute as workbox_routing_NavigationRoute} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-routing/NavigationRoute.mjs';\nimport {createHandlerBoundToURL as workbox_precaching_createHandlerBoundToURL} from '/home/runner/work/farmhand/farmhand/node_modules/workbox-precaching/createHandlerBoundToURL.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"assets/index-0imIraMM.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Cq9-4Mu0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/workbox-window.prod.es5-B9K5rw8f.js\",\n \"revision\": null\n },\n {\n \"url\": \"electron.js\",\n \"revision\": \"b0456826f47539f6c1957c3add5eb959\"\n },\n {\n \"url\": \"index.html\",\n \"revision\": \"f03537f0c428afa3de9a936d6c40e165\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"445bb19d4a8fd46eb433dd43cbdce691\"\n },\n {\n \"url\": \"logo192.png\",\n \"revision\": \"70746d790b8990639d1390337d77d81a\"\n },\n {\n \"url\": \"logo512.png\",\n \"revision\": \"b044ab46b3f33f0e2d313d961bf1f654\"\n },\n {\n \"url\": \"logoMaskable.png\",\n \"revision\": \"23be58ccf16df9f43658aad3da30056d\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"b8a832f482bc32629a287223fe8aa5d2\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\nworkbox_routing_registerRoute(new workbox_routing_NavigationRoute(workbox_precaching_createHandlerBoundToURL(\"index.html\")));\n\n\n\n\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox","registerRoute","workbox_routing_NavigationRoute","NavigationRoute","workbox_precaching_createHandlerBoundToURL"],"mappings":"inBAuBAA,KAAKC,iBAAiB,UAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,gBAYTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,aACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAC6BC,EAAAC,cAAC,IAAIC,EAA+BC,gBAACC,0BAA2C"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jeremyckahn/farmhand",
3
- "version": "1.19.0",
3
+ "version": "1.19.2",
4
4
  "publishConfig": {
5
5
  "access": "public"
6
6
  },
@@ -64,8 +64,8 @@
64
64
  "browserslist": "^4.21.9",
65
65
  "cheerio": "^1.0.0-rc.3",
66
66
  "cross-env": "^7.0.2",
67
- "electron": "^22.1.0",
68
- "electron-builder": "^24.13.3",
67
+ "electron": "^35.7.5",
68
+ "electron-builder": "^26.0.12",
69
69
  "eslint": "^7.13.0",
70
70
  "eslint-config-react-app": "^5.2.0",
71
71
  "eslint-plugin-flowtype": "^4.6.0",
@@ -1,10 +1,15 @@
1
1
  // From: https://www.section.io/engineering-education/desktop-application-with-react/
2
- const path = require('path')
2
+ import { join, dirname } from 'path'
3
+ import { fileURLToPath } from 'url'
3
4
 
4
- const { app, BrowserWindow } = require('electron')
5
- const isDev = require('electron-is-dev')
5
+ import { app, BrowserWindow } from 'electron'
6
+ import isDev from 'electron-is-dev'
6
7
 
7
- const { autoUpdater } = require('electron-updater')
8
+ import electronUpdater from 'electron-updater'
9
+ const { autoUpdater } = electronUpdater
10
+
11
+ const __filename = fileURLToPath(import.meta.url)
12
+ const __dirname = dirname(__filename)
8
13
 
9
14
  function createWindow() {
10
15
  // Create the browser window.
@@ -14,16 +19,16 @@ function createWindow() {
14
19
  webPreferences: {
15
20
  nodeIntegration: true,
16
21
  },
17
- icon: path.join(__dirname, './app-icons/Icon-512x512.png'),
22
+ icon: join(__dirname, './app-icons/Icon-512x512.png'),
18
23
  })
19
24
 
20
25
  // and load the index.html of the app.
21
26
  // win.loadFile("index.html");
22
- const hostUrl = isDev
23
- ? 'http://localhost:3000'
24
- : `file://${path.join(__dirname, '../build/index.html')}`
25
-
26
- win.loadURL(hostUrl)
27
+ if (isDev) {
28
+ win.loadURL('http://localhost:3000')
29
+ } else {
30
+ win.loadFile(join(__dirname, '../dist/index.html'))
31
+ }
27
32
 
28
33
  // Open the DevTools.
29
34
  if (isDev) {
@@ -21,7 +21,10 @@ export function getCropsAvailableToFerment(levelEntitlements) {
21
21
  itemsMap[itemId]
22
22
  )
23
23
 
24
- if (finalCropItemFromSeedItem) {
24
+ if (
25
+ finalCropItemFromSeedItem &&
26
+ Number.isFinite(finalCropItemFromSeedItem.daysToFerment)
27
+ ) {
25
28
  acc.push(finalCropItemFromSeedItem)
26
29
  }
27
30
 
@@ -1,4 +1,4 @@
1
- import { carrot, pumpkin, spinach } from '../data/crops/index.js'
1
+ import { carrot, pumpkin, spinach, watermelon } from '../data/crops/index.js'
2
2
 
3
3
  import { getCropsAvailableToFerment } from './getCropsAvailableToFerment.js'
4
4
  import { getLevelEntitlements } from './getLevelEntitlements.js'
@@ -17,4 +17,12 @@ describe('getCropsAvailableToFerment', () => {
17
17
  expect(cropsAvailableToFerment).toEqual(expectedCropsAvailableToFerment)
18
18
  }
19
19
  )
20
+
21
+ test('should not return unfermentable crops', () => {
22
+ const cropsAvailableToFerment = getCropsAvailableToFerment(
23
+ getLevelEntitlements(Infinity)
24
+ )
25
+
26
+ expect(cropsAvailableToFerment).not.toContain(watermelon)
27
+ })
20
28
  })