@roots/bud-client 6.14.3 → 6.15.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.
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Calls once document has loaded.
3
+ *
4
+ * @remarks
5
+ * Callback function may be async or sync
6
+ *
7
+ * @param onReady - callback function
8
+ * @returns void
9
+ */
10
+ interface domReady {
11
+ (onReady: () => (() => Promise<unknown>) | unknown): void;
12
+ }
13
+ declare const domReady: domReady;
14
+ export default domReady;
@@ -0,0 +1,6 @@
1
+ const domReady = onReady => {
2
+ window.requestAnimationFrame(async function check() {
3
+ document.body ? await onReady() : window.requestAnimationFrame(check);
4
+ });
5
+ };
6
+ export default domReady;
package/lib/index.d.ts CHANGED
@@ -9,4 +9,6 @@
9
9
  *
10
10
  * @packageDocumentation
11
11
  */
12
- export {};
12
+ import domReady from '@roots/bud-client/dom-ready';
13
+ import lazy from '@roots/bud-client/lazy';
14
+ export { domReady, lazy };
package/lib/index.js CHANGED
@@ -11,4 +11,6 @@
11
11
  *
12
12
  * @packageDocumentation
13
13
  */
14
- export {};
14
+ import domReady from '@roots/bud-client/dom-ready';
15
+ import lazy from '@roots/bud-client/lazy';
16
+ export { domReady, lazy };
package/lib/lazy.d.ts ADDED
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Lazy import helper
3
+ *
4
+ * @remarks
5
+ * Callback function may be async or sync
6
+ *
7
+ * @param onReady - callback function
8
+ * @returns void
9
+ */
10
+ interface lazy {
11
+ <T = any>(module: Promise<{
12
+ default: T;
13
+ }>, handler: (module: T) => Promise<unknown> | unknown, errorHandler?: (error: unknown) => unknown): Promise<unknown>;
14
+ }
15
+ declare const lazy: lazy;
16
+ export default lazy;
package/lib/lazy.js ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Default error handler
3
+ *
4
+ * @throws Error
5
+ */
6
+ const defaultErrorHandler = (error) => {
7
+ throw error;
8
+ };
9
+ const lazy = async function lazy(module, handler, errorHandler) {
10
+ try {
11
+ const { default: request } = await module;
12
+ return await handler(request);
13
+ }
14
+ catch (error) {
15
+ const handle = errorHandler ? errorHandler : defaultErrorHandler;
16
+ handle(error);
17
+ }
18
+ };
19
+ export default lazy;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@roots/bud-client",
3
- "version": "6.14.3",
3
+ "version": "6.15.1",
4
4
  "description": "Client scripts for @roots/bud",
5
5
  "engines": {
6
6
  "node": ">=16"
@@ -46,6 +46,8 @@
46
46
  "type": "module",
47
47
  "exports": {
48
48
  ".": "./lib/index.js",
49
+ "./dom-ready": "./lib/dom-ready.js",
50
+ "./lazy": "./lib/lazy.js",
49
51
  "./lib/*": "./lib/*"
50
52
  },
51
53
  "typesVersions": {
@@ -53,7 +55,13 @@
53
55
  ".": [
54
56
  "./lib/index.d.ts"
55
57
  ],
56
- "./lib/*": [
58
+ "dom-ready": [
59
+ "./lib/dom-ready.d.ts"
60
+ ],
61
+ "lazy": [
62
+ "./lib/lazy.d.ts"
63
+ ],
64
+ "lib/*": [
57
65
  "./lib/*"
58
66
  ]
59
67
  }
@@ -61,13 +69,13 @@
61
69
  "types": "./lib/index.d.ts",
62
70
  "module": "./lib/index.mjs",
63
71
  "devDependencies": {
64
- "@roots/bud": "6.14.3",
72
+ "@roots/bud": "6.15.1",
65
73
  "@skypack/package-check": "0.2.2",
66
- "@types/node": "18.16.18",
74
+ "@types/node": "18.17.5",
67
75
  "@types/webpack-env": "1.18.1"
68
76
  },
69
77
  "dependencies": {
70
- "tslib": "2.6.0"
78
+ "tslib": "2.6.1"
71
79
  },
72
80
  "volta": {
73
81
  "extends": "../../../package.json"
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Calls once document has loaded.
3
+ *
4
+ * @remarks
5
+ * Callback function may be async or sync
6
+ *
7
+ * @param onReady - callback function
8
+ * @returns void
9
+ */
10
+ interface domReady {
11
+ (onReady: () => (() => Promise<unknown>) | unknown): void
12
+ }
13
+
14
+ const domReady: domReady = onReady => {
15
+ window.requestAnimationFrame(async function check() {
16
+ document.body ? await onReady() : window.requestAnimationFrame(check)
17
+ })
18
+ }
19
+
20
+ export default domReady
package/src/hot/client.ts CHANGED
@@ -83,10 +83,11 @@ export const client = async (
83
83
  * Webpack HMR error handler
84
84
  */
85
85
  const onErrored = (error: any) => {
86
- window.bud.controllers.map(controller =>
87
- controller?.update({
88
- errors: [error],
89
- }),
86
+ window.bud.controllers.map(
87
+ controller =>
88
+ controller?.update({
89
+ errors: [error],
90
+ }),
90
91
  )
91
92
  }
92
93
 
package/src/index.ts CHANGED
@@ -13,4 +13,7 @@
13
13
  * @packageDocumentation
14
14
  */
15
15
 
16
- export {}
16
+ import domReady from '@roots/bud-client/dom-ready'
17
+ import lazy from '@roots/bud-client/lazy'
18
+
19
+ export {domReady, lazy}
package/src/lazy.ts ADDED
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Lazy import helper
3
+ *
4
+ * @remarks
5
+ * Callback function may be async or sync
6
+ *
7
+ * @param onReady - callback function
8
+ * @returns void
9
+ */
10
+ interface lazy {
11
+ <T = any>(
12
+ module: Promise<{default: T}>,
13
+ handler: (module: T) => Promise<unknown> | unknown,
14
+ errorHandler?: (error: unknown) => unknown,
15
+ ): Promise<unknown>
16
+ }
17
+
18
+ /**
19
+ * Default error handler
20
+ *
21
+ * @throws Error
22
+ */
23
+ const defaultErrorHandler = (error: unknown) => {
24
+ throw error
25
+ }
26
+
27
+ const lazy: lazy = async function lazy<T = any>(
28
+ module: Promise<{default: T}>,
29
+ handler: (module: T) => Promise<unknown> | unknown,
30
+ errorHandler?: (error: unknown) => unknown,
31
+ ) {
32
+ try {
33
+ const {default: request} = await module
34
+ return await handler(request)
35
+ } catch (error: unknown) {
36
+ const handle = errorHandler ? errorHandler : defaultErrorHandler
37
+ handle(error)
38
+ }
39
+ }
40
+
41
+ export default lazy