saloe 0.0.30 → 0.0.32

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/vite.cjs.js CHANGED
@@ -99,3 +99,4 @@ const getPlugin = () => {
99
99
  };
100
100
  exports.getInputPaths = getInputPaths;
101
101
  exports.getPlugin = getPlugin;
102
+ exports.getURLPath = getURLPath;
package/dist/vite.es.js CHANGED
@@ -97,5 +97,6 @@ const getPlugin = () => {
97
97
  };
98
98
  export {
99
99
  getInputPaths,
100
- getPlugin
100
+ getPlugin,
101
+ getURLPath
101
102
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "saloe",
3
- "version": "0.0.30",
3
+ "version": "0.0.32",
4
4
  "description": "Tools for making web development easy and efficient",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -38,6 +38,10 @@
38
38
  "import": "./dist/listener.es.js",
39
39
  "require": "./dist/listener.cjs.js"
40
40
  },
41
+ "./offline": {
42
+ "import": "./dist/offline.es.js",
43
+ "require": "./dist/offline.cjs.js"
44
+ },
41
45
  "./router": {
42
46
  "import": "./dist/router.es.js",
43
47
  "require": "./dist/router.cjs.js"
package/src/offline.js ADDED
@@ -0,0 +1,69 @@
1
+ import { fetch as fetchAsWorker } from './worker'
2
+
3
+
4
+ // TODO: Function is too specific
5
+ const cacheAssets = async ({ cachePrefix, cacheName }) => {
6
+ try {
7
+ const assetsResult = await fetchAsWorker({ url: '/dist.json' })
8
+ const assetsJSON = assetsResult?.err ? {} : await assetsResult?.response?.json()
9
+
10
+ const cache = await caches.open(`${cachePrefix}-${cacheName}`)
11
+
12
+ return assetsJSON?.map(async (path) => {
13
+ const url = path?.replace('dist/', '/')
14
+ try {
15
+ await cache.add(url)
16
+ } catch (err) {
17
+ console.log(`${err} - ${url}`)
18
+ }
19
+ })
20
+
21
+ } catch (err) {
22
+ console.error(err)
23
+ }
24
+ }
25
+
26
+ const installStaticAssets = async ({ cachePrefix, cacheName }) => {
27
+ cacheAssets({ cachePrefix, cacheName })
28
+ }
29
+
30
+ const removePreviousCaches = async ({ version, cachePrefix }) => {
31
+ const cacheNames = await caches.keys()
32
+ return Promise.all(
33
+ cacheNames?.filter((cacheName) => {
34
+ const startsWithPrefix = cacheName?.startsWith(cachePrefix)
35
+ const endsWithVersion = cacheName?.endsWith(version)
36
+ const cacheToDelete = startsWithPrefix && !endsWithVersion
37
+ return cacheToDelete
38
+ })?.map((cacheName) => caches?.delete(cacheName))
39
+ )
40
+ }
41
+
42
+ const serveFromCache = async ({ request, cachePrefix, cacheName }) => {
43
+ try {
44
+ const cache = await caches.open(`${cachePrefix}-${cacheName}`)
45
+ const response = await cache.match(request, { ignoreSearch: true })
46
+ return { response }
47
+ } catch (err) {
48
+ console.error(err)
49
+ return { err }
50
+ }
51
+ }
52
+
53
+ const cacheFirstThenNetwork = async ({ request, cachePrefix, cacheName }) => {
54
+ const cacheResult = await serveFromCache({ request, cachePrefix, cacheName })
55
+ if (cacheResult?.response) return cacheResult
56
+
57
+ try {
58
+ const fetchResult = await fetchAsWorker({ request })
59
+ return fetchResult
60
+ } catch (err) {
61
+ return { err }
62
+ }
63
+ }
64
+
65
+ export {
66
+ installStaticAssets,
67
+ removePreviousCaches,
68
+ cacheFirstThenNetwork,
69
+ }
package/src/vite.js CHANGED
@@ -124,4 +124,5 @@ const getPlugin = () => {
124
124
  export {
125
125
  getInputPaths,
126
126
  getPlugin,
127
+ getURLPath,
127
128
  }