acrylblends 0.6.2 → 0.6.3

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.
Files changed (181) hide show
  1. package/README.md +4 -1
  2. package/docs/framework/README.md +3 -2
  3. package/docs/framework/UPSTREAM.md +1 -1
  4. package/docs/framework/cordis/acryl-in-a-cordis-app.md +6 -0
  5. package/docs/framework/getting-started/basic.md +1 -0
  6. package/docs/framework/getting-started/desktop.md +41 -0
  7. package/docs/framework/guides/jsx-dom.md +0 -3
  8. package/docs/framework/guides/jsx.md +0 -3
  9. package/docs/framework/helpers/css.md +0 -3
  10. package/docs/framework/upstream.json +3 -3
  11. package/lib/accepts.d.ts +1 -1
  12. package/lib/acryl-base.d.ts +1 -1
  13. package/lib/adapter.d.ts +1 -1
  14. package/lib/{app-BdrVHBlJ.d.ts → app-wFwpg-bt.d.ts} +1 -1
  15. package/lib/base-BpQy2Rk7.d.ts +783 -0
  16. package/lib/base-ddiVmiE7.js +721 -0
  17. package/lib/basic-auth.d.ts +1 -1
  18. package/lib/bearer-auth.d.ts +1 -1
  19. package/lib/body-limit.d.ts +1 -1
  20. package/lib/cache.d.ts +1 -1
  21. package/lib/client.d.ts +2 -2
  22. package/lib/combine.d.ts +1 -1
  23. package/lib/common-D8Z4JRCw.d.ts +46 -0
  24. package/lib/components-Ce5FRyHU.js +268 -0
  25. package/lib/components-DYZdxJIJ.js +24 -0
  26. package/lib/compress.d.ts +1 -1
  27. package/lib/conninfo.d.ts +2 -2
  28. package/lib/constants-BR9jM9BC.js +9 -0
  29. package/lib/{context-B5Y1lLha.d.ts → context-DVQBjuns.d.ts} +1 -1
  30. package/lib/context-DxFdY_un.d.ts +250 -0
  31. package/lib/context-storage.d.ts +1 -1
  32. package/lib/{cookie-D9_nQbsM.d.ts → cookie-CCelEqky.d.ts} +1 -1
  33. package/lib/cookie.d.ts +3 -3
  34. package/lib/cors.d.ts +1 -1
  35. package/lib/csrf.d.ts +1 -1
  36. package/lib/css-D2jb7X8b.js +320 -0
  37. package/lib/css.d.ts +82 -0
  38. package/lib/css.js +134 -0
  39. package/lib/dev.d.ts +2 -2
  40. package/lib/etag.d.ts +1 -1
  41. package/lib/factory.d.ts +2 -2
  42. package/lib/hooks-Bq5q9IMl.js +762 -0
  43. package/lib/html-SllAe0YT.d.ts +46 -0
  44. package/lib/html.d.ts +1 -1
  45. package/lib/index-C850MeBA.d.ts +94 -0
  46. package/lib/{index-m12zcmph.d.ts → index-CUTfU69R.d.ts} +3 -3
  47. package/lib/{index-DtEoak1i.d.ts → index-Cqcdluyn.d.ts} +2 -2
  48. package/lib/{index-Kqou8Fjh.d.ts → index-CsvB-F9j.d.ts} +2 -2
  49. package/lib/index.d.ts +4 -4
  50. package/lib/ip-restriction.d.ts +2 -2
  51. package/lib/jsx/dom/client.d.ts +30 -0
  52. package/lib/jsx/dom/client.js +49 -0
  53. package/lib/jsx/dom/css.d.ts +84 -0
  54. package/lib/jsx/dom/css.js +2 -0
  55. package/lib/jsx/dom/jsx-dev-runtime.d.ts +3 -0
  56. package/lib/jsx/dom/jsx-dev-runtime.js +2 -0
  57. package/lib/jsx/dom/jsx-runtime.d.ts +3 -0
  58. package/lib/jsx/dom/jsx-runtime.js +2 -0
  59. package/lib/jsx/dom/server.d.ts +105 -0
  60. package/lib/jsx/dom/server.js +37 -0
  61. package/lib/jsx/dom.d.ts +5 -0
  62. package/lib/jsx/dom.js +74 -0
  63. package/lib/jsx/jsx-dev-runtime.d.ts +6 -0
  64. package/lib/jsx/jsx-dev-runtime.js +14 -0
  65. package/lib/jsx/jsx-runtime.d.ts +10 -0
  66. package/lib/jsx/jsx-runtime.js +30 -0
  67. package/lib/jsx/streaming.d.ts +2 -0
  68. package/lib/jsx/streaming.js +2 -0
  69. package/lib/jsx-dev-runtime-B22O-Npk.d.ts +7 -0
  70. package/lib/jsx-dev-runtime-kAhR_4C7.js +354 -0
  71. package/lib/jsx-runtime-BVVgDSdq.d.ts +1 -0
  72. package/lib/jsx.d.ts +3 -0
  73. package/lib/jsx.js +47 -0
  74. package/lib/jwk.d.ts +4 -4
  75. package/lib/{jwt-BA65QhnJ.d.ts → jwt-BARhotDz.d.ts} +1 -1
  76. package/lib/jwt.d.ts +4 -4
  77. package/lib/language.d.ts +1 -1
  78. package/lib/logger.d.ts +1 -1
  79. package/lib/loopback-only.d.ts +1 -1
  80. package/lib/method-not-allowed.d.ts +2 -2
  81. package/lib/method-override.d.ts +2 -2
  82. package/lib/mount.d.ts +1 -1
  83. package/lib/node-server/conninfo.d.ts +1 -1
  84. package/lib/node-server/serve-static.d.ts +1 -1
  85. package/lib/node-server/serve-static.js +1 -1
  86. package/lib/node-server.d.ts +1 -1
  87. package/lib/node-server.js +1 -1
  88. package/lib/powered-by.d.ts +1 -1
  89. package/lib/pretty-json.d.ts +1 -1
  90. package/lib/proxy.d.ts +1 -1
  91. package/lib/quick.d.ts +1 -1
  92. package/lib/request-id.d.ts +1 -1
  93. package/lib/request.d.ts +1 -1
  94. package/lib/route.d.ts +1 -1
  95. package/lib/schema-validator.d.ts +1 -1
  96. package/lib/secure-headers.d.ts +1 -1
  97. package/lib/{serve-static-Dw_m6KxR.js → serve-static-Cw23shXv.js} +1 -0
  98. package/lib/serve-static.d.ts +1 -1
  99. package/lib/streaming.d.ts +1 -1
  100. package/lib/testing.d.ts +4 -4
  101. package/lib/timeout.d.ts +1 -1
  102. package/lib/timing.d.ts +1 -1
  103. package/lib/tiny.d.ts +1 -1
  104. package/lib/trailing-slash.d.ts +1 -1
  105. package/lib/{types-Bd29gh2o.d.ts → types-CQiGmsWW.d.ts} +3 -3
  106. package/lib/{types-D9DEXMjE.d.ts → types-Lqx5BxQF.d.ts} +8 -1
  107. package/lib/{types-ZM9gIiKh.d.ts → types-nEL8VPDC.d.ts} +1 -1
  108. package/lib/types.d.ts +1 -1
  109. package/lib/utils/body.d.ts +1 -1
  110. package/lib/utils/cookie.d.ts +1 -1
  111. package/lib/utils/crypto.d.ts +1 -1
  112. package/lib/utils/html.d.ts +1 -45
  113. package/lib/utils/ipaddr.d.ts +1 -1
  114. package/lib/utils/jwt.d.ts +1 -1
  115. package/lib/utils/types.d.ts +2 -2
  116. package/lib/validator.d.ts +2 -2
  117. package/lib/ws.d.ts +1 -1
  118. package/package.json +45 -1
  119. package/plugins/acryl-inspect/upstream.json +1 -1
  120. package/plugins/acryl-node-server/upstream.json +1 -1
  121. package/plugins/acryl-router/src/core/helper/css/common.case.test.tsx +506 -0
  122. package/plugins/acryl-router/src/core/helper/css/common.ts +337 -0
  123. package/plugins/acryl-router/src/core/helper/css/index.test.tsx +678 -0
  124. package/plugins/acryl-router/src/core/helper/css/index.ts +262 -0
  125. package/plugins/acryl-router/src/core/helper/streaming/sse.test.tsx +557 -0
  126. package/plugins/acryl-router/src/core/jsx/base.test.tsx +97 -0
  127. package/plugins/acryl-router/src/core/jsx/base.ts +490 -0
  128. package/plugins/acryl-router/src/core/jsx/children.test.ts +52 -0
  129. package/plugins/acryl-router/src/core/jsx/children.ts +20 -0
  130. package/plugins/acryl-router/src/core/jsx/components.test.tsx +936 -0
  131. package/plugins/acryl-router/src/core/jsx/components.ts +257 -0
  132. package/plugins/acryl-router/src/core/jsx/constants.ts +6 -0
  133. package/plugins/acryl-router/src/core/jsx/context-isolation.test.ts +655 -0
  134. package/plugins/acryl-router/src/core/jsx/context.ts +266 -0
  135. package/plugins/acryl-router/src/core/jsx/dom/client.test.tsx +128 -0
  136. package/plugins/acryl-router/src/core/jsx/dom/client.ts +89 -0
  137. package/plugins/acryl-router/src/core/jsx/dom/components.test.tsx +330 -0
  138. package/plugins/acryl-router/src/core/jsx/dom/components.ts +39 -0
  139. package/plugins/acryl-router/src/core/jsx/dom/context.test.tsx +184 -0
  140. package/plugins/acryl-router/src/core/jsx/dom/context.ts +52 -0
  141. package/plugins/acryl-router/src/core/jsx/dom/css.test.tsx +149 -0
  142. package/plugins/acryl-router/src/core/jsx/dom/css.ts +263 -0
  143. package/plugins/acryl-router/src/core/jsx/dom/hooks/index.test.tsx +172 -0
  144. package/plugins/acryl-router/src/core/jsx/dom/hooks/index.ts +91 -0
  145. package/plugins/acryl-router/src/core/jsx/dom/index.test.tsx +3681 -0
  146. package/plugins/acryl-router/src/core/jsx/dom/index.ts +170 -0
  147. package/plugins/acryl-router/src/core/jsx/dom/intrinsic-element/components.test.tsx +1344 -0
  148. package/plugins/acryl-router/src/core/jsx/dom/intrinsic-element/components.ts +438 -0
  149. package/plugins/acryl-router/src/core/jsx/dom/jsx-dev-runtime.ts +23 -0
  150. package/plugins/acryl-router/src/core/jsx/dom/jsx-runtime.ts +8 -0
  151. package/plugins/acryl-router/src/core/jsx/dom/render.ts +879 -0
  152. package/plugins/acryl-router/src/core/jsx/dom/server.test.tsx +199 -0
  153. package/plugins/acryl-router/src/core/jsx/dom/server.ts +76 -0
  154. package/plugins/acryl-router/src/core/jsx/dom/utils.ts +7 -0
  155. package/plugins/acryl-router/src/core/jsx/hooks/dom.test.tsx +859 -0
  156. package/plugins/acryl-router/src/core/jsx/hooks/index.ts +437 -0
  157. package/plugins/acryl-router/src/core/jsx/hooks/string.test.tsx +40 -0
  158. package/plugins/acryl-router/src/core/jsx/index.test.tsx +1744 -0
  159. package/plugins/acryl-router/src/core/jsx/index.ts +115 -0
  160. package/plugins/acryl-router/src/core/jsx/intrinsic-element/common.ts +23 -0
  161. package/plugins/acryl-router/src/core/jsx/intrinsic-element/components.test.tsx +666 -0
  162. package/plugins/acryl-router/src/core/jsx/intrinsic-element/components.ts +210 -0
  163. package/plugins/acryl-router/src/core/jsx/intrinsic-elements.ts +938 -0
  164. package/plugins/acryl-router/src/core/jsx/jsx-dev-runtime.ts +26 -0
  165. package/plugins/acryl-router/src/core/jsx/jsx-runtime.test.tsx +85 -0
  166. package/plugins/acryl-router/src/core/jsx/jsx-runtime.ts +51 -0
  167. package/plugins/acryl-router/src/core/jsx/streaming.test.tsx +1281 -0
  168. package/plugins/acryl-router/src/core/jsx/streaming.ts +231 -0
  169. package/plugins/acryl-router/src/core/jsx/types.ts +41 -0
  170. package/plugins/acryl-router/src/core/jsx/utils.test.ts +366 -0
  171. package/plugins/acryl-router/src/core/jsx/utils.ts +202 -0
  172. package/plugins/acryl-router/src/core/utils/types.ts +6 -0
  173. package/plugins/acryl-router/src/helpers/index.ts +1 -0
  174. package/plugins/acryl-router/tests/jsx.spec.tsx +63 -0
  175. package/plugins/acryl-router/upstream.json +3 -3
  176. package/plugins/acryl-router-http/upstream.json +1 -1
  177. package/plugins/acryl-state/upstream.json +1 -1
  178. package/plugins/desktop/upstream.json +1 -1
  179. package/plugins/desktop-web/upstream.json +1 -1
  180. package/plugins/save/plugin.json +1 -1
  181. package/templates/todo/upstream.json +1 -1
package/lib/css.d.ts ADDED
@@ -0,0 +1,82 @@
1
+ import { i as HtmlEscapedString } from "./html-SllAe0YT.js";
2
+ import { a as rawCssString, i as OnInvalidSlug, n as CssClassName$1, r as CssVariableType, t as ClassNameSlug } from "./common-D8Z4JRCw.js";
3
+
4
+ //#region ../../plugins/acryl-router/src/core/helper/css/index.d.ts
5
+ type CssClassName = HtmlEscapedString & CssClassName$1;
6
+ interface CssType {
7
+ (strings: TemplateStringsArray, ...values: CssVariableType[]): Promise<string>;
8
+ }
9
+ interface CxType {
10
+ (...args: (CssClassName | Promise<string> | string | boolean | null | undefined)[]): Promise<string>;
11
+ }
12
+ interface KeyframesType {
13
+ (strings: TemplateStringsArray, ...values: CssVariableType[]): CssClassName$1;
14
+ }
15
+ interface ViewTransitionType {
16
+ (strings: TemplateStringsArray, ...values: CssVariableType[]): Promise<string>;
17
+ (content: Promise<string>): Promise<string>;
18
+ (): Promise<string>;
19
+ }
20
+ interface StyleType {
21
+ (args?: {
22
+ children?: Promise<string>;
23
+ nonce?: string;
24
+ }): HtmlEscapedString;
25
+ }
26
+ /**
27
+ * @experimental
28
+ * `createCssContext` is an experimental feature.
29
+ * The API might be changed.
30
+ *
31
+ * @param options.id - The ID for the style element
32
+ * @param options.classNameSlug - Optional function to customize generated CSS class names
33
+ * @param options.onInvalidSlug - Optional callback function called when an invalid slug is returned from ClassNameSlug
34
+ */
35
+ declare const createCssContext: ({
36
+ id,
37
+ classNameSlug,
38
+ onInvalidSlug
39
+ }: {
40
+ id: Readonly<string>;
41
+ classNameSlug?: ClassNameSlug;
42
+ onInvalidSlug?: OnInvalidSlug;
43
+ }) => DefaultContextType;
44
+ interface DefaultContextType {
45
+ css: CssType;
46
+ cx: CxType;
47
+ keyframes: KeyframesType;
48
+ viewTransition: ViewTransitionType;
49
+ Style: StyleType;
50
+ }
51
+ /**
52
+ * @experimental
53
+ * `css` is an experimental feature.
54
+ * The API might be changed.
55
+ */
56
+ declare const css: CssType;
57
+ /**
58
+ * @experimental
59
+ * `cx` is an experimental feature.
60
+ * The API might be changed.
61
+ */
62
+ declare const cx: CxType;
63
+ /**
64
+ * @experimental
65
+ * `keyframes` is an experimental feature.
66
+ * The API might be changed.
67
+ */
68
+ declare const keyframes: KeyframesType;
69
+ /**
70
+ * @experimental
71
+ * `viewTransition` is an experimental feature.
72
+ * The API might be changed.
73
+ */
74
+ declare const viewTransition: ViewTransitionType;
75
+ /**
76
+ * @experimental
77
+ * `Style` is an experimental feature.
78
+ * The API might be changed.
79
+ */
80
+ declare const Style: StyleType;
81
+ //#endregion
82
+ export { type ClassNameSlug, type OnInvalidSlug, Style, createCssContext, css, cx, keyframes, rawCssString, viewTransition };
package/lib/css.js ADDED
@@ -0,0 +1,134 @@
1
+ import { escapeToBuffer, raw } from "./utils/html.js";
2
+ import { i as DOM_RENDERER } from "./constants-BR9jM9BC.js";
3
+ import { _ as rawCssString, c as CLASS_NAME, d as SELECTOR, f as SELECTORS, g as keyframesCommon, h as cxCommon, l as DEFAULT_STYLE_ID, m as cssCommon, p as STYLE_STRING, r as createCssJsxDomObjects, v as viewTransitionCommon } from "./css-D2jb7X8b.js";
4
+ //#region ../../plugins/acryl-router/src/core/helper/css/index.ts
5
+ /**
6
+ * @module
7
+ * css Helper for Acryl.
8
+ */
9
+ /**
10
+ * @experimental
11
+ * `createCssContext` is an experimental feature.
12
+ * The API might be changed.
13
+ *
14
+ * @param options.id - The ID for the style element
15
+ * @param options.classNameSlug - Optional function to customize generated CSS class names
16
+ * @param options.onInvalidSlug - Optional callback function called when an invalid slug is returned from ClassNameSlug
17
+ */
18
+ const createCssContext = ({ id, classNameSlug, onInvalidSlug }) => {
19
+ const [cssJsxDomObject, StyleRenderToDom] = createCssJsxDomObjects({ id });
20
+ const contextMap = /* @__PURE__ */ new WeakMap();
21
+ const nonceMap = /* @__PURE__ */ new WeakMap();
22
+ const replaceStyleRe = new RegExp(`(<style id="${id}"(?: nonce="[^"]*")?>.*?)(</style>)`, "s");
23
+ const newCssClassNameObject = (cssClassName) => {
24
+ const appendStyle = ({ buffer, context }) => {
25
+ const [toAdd, added] = contextMap.get(context);
26
+ const names = Object.keys(toAdd);
27
+ if (!names.length) return;
28
+ let stylesStr = "";
29
+ names.forEach((className) => {
30
+ added[className] = true;
31
+ stylesStr += className.startsWith(":-acryl-global") ? toAdd[className] : `${className[0] === "@" ? "" : "."}${className}{${toAdd[className]}}`;
32
+ });
33
+ contextMap.set(context, [{}, added]);
34
+ if (buffer && replaceStyleRe.test(buffer[0])) {
35
+ buffer[0] = buffer[0].replace(replaceStyleRe, (_, pre, post) => `${pre}${stylesStr}${post}`);
36
+ return;
37
+ }
38
+ const nonce = nonceMap.get(context);
39
+ const appendStyleScript = `<script${nonce ? ` nonce="${nonce}"` : ""}>document.querySelector('#${id}').textContent+=${JSON.stringify(stylesStr)}<\/script>`;
40
+ if (buffer) {
41
+ buffer[0] = `${appendStyleScript}${buffer[0]}`;
42
+ return;
43
+ }
44
+ return Promise.resolve(appendStyleScript);
45
+ };
46
+ const addClassNameToContext = ({ context }) => {
47
+ if (!contextMap.has(context)) contextMap.set(context, [{}, {}]);
48
+ const [toAdd, added] = contextMap.get(context);
49
+ let allAdded = true;
50
+ if (!added[cssClassName[SELECTOR]]) {
51
+ allAdded = false;
52
+ toAdd[cssClassName[SELECTOR]] = cssClassName[STYLE_STRING];
53
+ }
54
+ cssClassName[SELECTORS].forEach(({ [CLASS_NAME]: className, [STYLE_STRING]: styleString }) => {
55
+ if (!added[className]) {
56
+ allAdded = false;
57
+ toAdd[className] = styleString;
58
+ }
59
+ });
60
+ if (allAdded) return;
61
+ return Promise.resolve(raw("", [appendStyle]));
62
+ };
63
+ const rawClassName = cssClassName[CLASS_NAME];
64
+ let escapedClassName = rawClassName;
65
+ if (/[&<>'"]/.test(rawClassName)) {
66
+ const escapedBuffer = [""];
67
+ escapeToBuffer(rawClassName, escapedBuffer);
68
+ escapedClassName = escapedBuffer[0];
69
+ }
70
+ const className = new String(escapedClassName);
71
+ Object.assign(className, cssClassName);
72
+ className.isEscaped = true;
73
+ className.callbacks = [addClassNameToContext];
74
+ const promise = Promise.resolve(className);
75
+ Object.assign(promise, cssClassName);
76
+ promise.toString = cssJsxDomObject.toString;
77
+ return promise;
78
+ };
79
+ const css = (strings, ...values) => {
80
+ return newCssClassNameObject(cssCommon(strings, values, classNameSlug, onInvalidSlug));
81
+ };
82
+ const cx = (...args) => {
83
+ args = cxCommon(args);
84
+ return css(Array(args.length).fill(""), ...args);
85
+ };
86
+ const keyframes = (strings, ...values) => keyframesCommon(strings, values, classNameSlug, onInvalidSlug);
87
+ const viewTransition = ((strings, ...values) => {
88
+ return newCssClassNameObject(viewTransitionCommon(strings, values, classNameSlug, onInvalidSlug));
89
+ });
90
+ const Style = ({ children, nonce } = {}) => raw(`<style id="${id}"${nonce ? ` nonce="${nonce}"` : ""}>${children ? children[STYLE_STRING] : ""}</style>`, [({ context }) => {
91
+ nonceMap.set(context, nonce);
92
+ }]);
93
+ Style[DOM_RENDERER] = StyleRenderToDom;
94
+ return {
95
+ css,
96
+ cx,
97
+ keyframes,
98
+ viewTransition,
99
+ Style
100
+ };
101
+ };
102
+ const defaultContext = createCssContext({ id: DEFAULT_STYLE_ID });
103
+ /**
104
+ * @experimental
105
+ * `css` is an experimental feature.
106
+ * The API might be changed.
107
+ */
108
+ const css = defaultContext.css;
109
+ /**
110
+ * @experimental
111
+ * `cx` is an experimental feature.
112
+ * The API might be changed.
113
+ */
114
+ const cx = defaultContext.cx;
115
+ /**
116
+ * @experimental
117
+ * `keyframes` is an experimental feature.
118
+ * The API might be changed.
119
+ */
120
+ const keyframes = defaultContext.keyframes;
121
+ /**
122
+ * @experimental
123
+ * `viewTransition` is an experimental feature.
124
+ * The API might be changed.
125
+ */
126
+ const viewTransition = defaultContext.viewTransition;
127
+ /**
128
+ * @experimental
129
+ * `Style` is an experimental feature.
130
+ * The API might be changed.
131
+ */
132
+ const Style = defaultContext.Style;
133
+ //#endregion
134
+ export { Style, createCssContext, css, cx, keyframes, rawCssString, viewTransition };
package/lib/dev.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { _ as Env } from "./context-B5Y1lLha.js";
2
- import { t as Acryl } from "./app-BdrVHBlJ.js";
1
+ import { _ as Env } from "./context-DVQBjuns.js";
2
+ import { t as Acryl } from "./app-wFwpg-bt.js";
3
3
 
4
4
  //#region ../../plugins/acryl-router/src/core/helper/dev/index.d.ts
5
5
  interface ShowRoutesOptions {
package/lib/etag.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler } from "./context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/middleware/etag/index.d.ts
4
4
  type ETagOptions = {
package/lib/factory.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { A as Input, I as MiddlewareHandler, M as IntersectNonAnyTypes, T as H, _ as Env, et as AcrylOptions, k as HandlerResponse } from "./context-B5Y1lLha.js";
2
- import { t as Acryl } from "./app-BdrVHBlJ.js";
1
+ import { A as Input, I as MiddlewareHandler, M as IntersectNonAnyTypes, T as H, _ as Env, et as AcrylOptions, k as HandlerResponse } from "./context-DVQBjuns.js";
2
+ import { t as Acryl } from "./app-wFwpg-bt.js";
3
3
 
4
4
  //#region ../../plugins/acryl-router/src/core/helper/factory/index.d.ts
5
5
  type InitApp<E extends Env = Env> = (app: Acryl<E>) => void;