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
@@ -0,0 +1,10 @@
1
+ import { i as HtmlEscapedString } from "../html-SllAe0YT.js";
2
+ import { html } from "../html.js";
3
+ import { a as JSX, i as Fragment } from "../base-BpQy2Rk7.js";
4
+ import { jsxDEV } from "./jsx-dev-runtime.js";
5
+
6
+ //#region ../../plugins/acryl-router/src/core/jsx/jsx-runtime.d.ts
7
+ declare const jsxAttr: (key: string, v: string | Promise<string> | Record<string, string | number | null | undefined | boolean>) => HtmlEscapedString | Promise<HtmlEscapedString>;
8
+ declare const jsxEscape: (value: string) => string;
9
+ //#endregion
10
+ export { Fragment, type JSX, jsxDEV as jsx, jsxDEV as jsxs, jsxAttr, jsxEscape, html as jsxTemplate };
@@ -0,0 +1,30 @@
1
+ import { h as styleObjectForEach, p as isValidAttributeName, t as Fragment } from "../base-ddiVmiE7.js";
2
+ import { escapeToBuffer, raw, stringBufferToString } from "../utils/html.js";
3
+ import { html } from "../html.js";
4
+ import { jsxDEV } from "./jsx-dev-runtime.js";
5
+ //#region ../../plugins/acryl-router/src/core/jsx/jsx-runtime.ts
6
+ const jsxAttr = (key, v) => {
7
+ if (!isValidAttributeName(key)) return raw("");
8
+ const buffer = [`${key}="`];
9
+ if (key === "style" && typeof v === "object") {
10
+ let styleStr = "";
11
+ styleObjectForEach(v, (property, value) => {
12
+ if (value != null) styleStr += `${styleStr ? ";" : ""}${property}:${value}`;
13
+ });
14
+ escapeToBuffer(styleStr, buffer);
15
+ buffer[0] += "\"";
16
+ } else if (typeof v === "string") {
17
+ escapeToBuffer(v, buffer);
18
+ buffer[0] += "\"";
19
+ } else if (v === null || v === void 0) return raw("");
20
+ else if (typeof v === "number" || v.isEscaped) buffer[0] += `${v}"`;
21
+ else if (v instanceof Promise) buffer.unshift("\"", v);
22
+ else {
23
+ escapeToBuffer(v.toString(), buffer);
24
+ buffer[0] += "\"";
25
+ }
26
+ return buffer.length === 1 ? raw(buffer[0]) : stringBufferToString(buffer, void 0);
27
+ };
28
+ const jsxEscape = (value) => value;
29
+ //#endregion
30
+ export { Fragment, jsxDEV as jsx, jsxDEV as jsxs, jsxAttr, jsxEscape, html as jsxTemplate };
@@ -0,0 +1,2 @@
1
+ import { a as StreamingContext, o as Suspense, s as renderToReadableStream } from "../context-DxFdY_un.js";
2
+ export { StreamingContext, Suspense, renderToReadableStream };
@@ -0,0 +1,2 @@
1
+ import { i as renderToReadableStream, n as StreamingContext, r as Suspense } from "../components-Ce5FRyHU.js";
2
+ export { StreamingContext, Suspense, renderToReadableStream };
@@ -0,0 +1,7 @@
1
+ import { o as JSXNode, s as Props } from "./base-BpQy2Rk7.js";
2
+
3
+ //#region ../../plugins/acryl-router/src/core/jsx/dom/jsx-dev-runtime.d.ts
4
+ declare const jsxDEV: (tag: string | Function, props: Props, key?: string) => JSXNode;
5
+ declare const Fragment: (props: Record<string, unknown>) => JSXNode;
6
+ //#endregion
7
+ export { jsxDEV as n, Fragment as t };
@@ -0,0 +1,354 @@
1
+ import { D as createContext, E as useContext, O as __exportAll, S as shouldDeDupeByKey, b as domRenderers, v as dataPrecedenceAttr, x as isStylesheetLinkWithPrecedence, y as deDupeKeyMap } from "./base-ddiVmiE7.js";
2
+ import { o as PERMALINK } from "./constants-BR9jM9BC.js";
3
+ import { C as createPortal, T as getNameSpaceContext, _ as useState, a as use, m as useMemo, o as useCallback } from "./hooks-Bq5q9IMl.js";
4
+ //#region ../../plugins/acryl-router/src/core/jsx/dom/hooks/index.ts
5
+ /**
6
+ * Provide hooks used only in jsx/dom
7
+ */
8
+ const FormContext = createContext({
9
+ pending: false,
10
+ data: null,
11
+ method: null,
12
+ action: null
13
+ });
14
+ const actions = /* @__PURE__ */ new Set();
15
+ const registerAction = (action) => {
16
+ actions.add(action);
17
+ action.finally(() => actions.delete(action));
18
+ };
19
+ /**
20
+ * This hook returns the current form status
21
+ * @returns FormStatus
22
+ */
23
+ const useFormStatus = () => {
24
+ return useContext(FormContext);
25
+ };
26
+ /**
27
+ * This hook returns the current state and a function to update the state optimistically
28
+ * The current state is updated optimistically and then reverted to the original state when all actions are resolved
29
+ * @param state
30
+ * @param updateState
31
+ * @returns [T, (action: N) => void]
32
+ */
33
+ const useOptimistic = (state, updateState) => {
34
+ const [optimisticState, setOptimisticState] = useState(state);
35
+ if (actions.size > 0) Promise.all(actions).finally(() => {
36
+ setOptimisticState(state);
37
+ });
38
+ else setOptimisticState(state);
39
+ return [optimisticState, useCallback((newData) => {
40
+ setOptimisticState((currentState) => updateState(currentState, newData));
41
+ }, [])];
42
+ };
43
+ /**
44
+ * This hook returns the current state and a function to update the state by form action
45
+ * @param fn
46
+ * @param initialState
47
+ * @param permalink
48
+ * @returns [T, (data: FormData) => void]
49
+ */
50
+ const useActionState = (fn, initialState, permalink) => {
51
+ const [state, setState] = useState(initialState);
52
+ const actionState = async (data) => {
53
+ setState(await fn(state, data));
54
+ };
55
+ actionState[PERMALINK] = permalink;
56
+ return [state, actionState];
57
+ };
58
+ //#endregion
59
+ //#region ../../plugins/acryl-router/src/core/jsx/dom/intrinsic-element/components.ts
60
+ var components_exports = /* @__PURE__ */ __exportAll({
61
+ button: () => button,
62
+ clearCache: () => clearCache,
63
+ composeRef: () => composeRef,
64
+ form: () => form,
65
+ input: () => input,
66
+ link: () => link,
67
+ meta: () => meta,
68
+ script: () => script,
69
+ style: () => style,
70
+ title: () => title
71
+ });
72
+ const clearCache = () => {
73
+ blockingPromiseMap = Object.create(null);
74
+ createdElements = Object.create(null);
75
+ };
76
+ const composeRef = (ref, cb) => {
77
+ return useMemo(() => (e) => {
78
+ let refCleanup;
79
+ if (ref) {
80
+ if (typeof ref === "function") refCleanup = ref(e) || (() => {
81
+ ref(null);
82
+ });
83
+ else if (ref && "current" in ref) {
84
+ ref.current = e;
85
+ refCleanup = () => {
86
+ ref.current = null;
87
+ };
88
+ }
89
+ }
90
+ const cbCleanup = cb(e);
91
+ return () => {
92
+ cbCleanup?.();
93
+ refCleanup?.();
94
+ };
95
+ }, [ref]);
96
+ };
97
+ let blockingPromiseMap = Object.create(null);
98
+ let createdElements = Object.create(null);
99
+ const documentMetadataTag = (tag, props, preserveNodeType, supportSort, supportBlocking) => {
100
+ if (props?.itemProp) return {
101
+ tag,
102
+ props,
103
+ type: tag,
104
+ ref: props.ref
105
+ };
106
+ const head = document.head;
107
+ let { onLoad, onError, precedence, blocking, ...restProps } = props;
108
+ let element = null;
109
+ let created = false;
110
+ const deDupeKeys = deDupeKeyMap[tag];
111
+ const deDupeByKey = shouldDeDupeByKey(tag, supportSort);
112
+ const isDeDupeCandidateLink = (e) => e.getAttribute("rel") === "stylesheet" && e.getAttribute("data-precedence") !== null;
113
+ let existingElements = void 0;
114
+ if (deDupeByKey) {
115
+ const tags = head.querySelectorAll(tag);
116
+ LOOP: for (const e of tags) {
117
+ if (tag === "link" && !isDeDupeCandidateLink(e)) continue;
118
+ for (const key of deDupeKeys) if (e.getAttribute(key) === props[key]) {
119
+ element = e;
120
+ break LOOP;
121
+ }
122
+ }
123
+ if (!element) {
124
+ const cacheKey = deDupeKeys.reduce((acc, key) => props[key] === void 0 ? acc : `${acc}-${key}-${props[key]}`, tag);
125
+ created = !createdElements[cacheKey];
126
+ element = createdElements[cacheKey] ||= (() => {
127
+ const e = document.createElement(tag);
128
+ for (const key of deDupeKeys) if (props[key] !== void 0) e.setAttribute(key, props[key]);
129
+ if (props.rel) e.setAttribute("rel", props.rel);
130
+ return e;
131
+ })();
132
+ }
133
+ } else existingElements = head.querySelectorAll(tag);
134
+ precedence = supportSort ? precedence ?? "" : void 0;
135
+ if (supportSort) restProps[dataPrecedenceAttr] = precedence;
136
+ const insert = useCallback((e) => {
137
+ if (deDupeByKey) {
138
+ if (tag === "link" && precedence !== void 0) {
139
+ let found = false;
140
+ for (const existingElement of head.querySelectorAll(tag)) {
141
+ const existingPrecedence = existingElement.getAttribute(dataPrecedenceAttr);
142
+ if (existingPrecedence === null) {
143
+ head.insertBefore(e, existingElement);
144
+ return;
145
+ }
146
+ if (found && existingPrecedence !== precedence) {
147
+ head.insertBefore(e, existingElement);
148
+ return;
149
+ }
150
+ if (existingPrecedence === precedence) found = true;
151
+ }
152
+ head.appendChild(e);
153
+ return;
154
+ }
155
+ let found = false;
156
+ for (const existingElement of head.querySelectorAll(tag)) {
157
+ if (found && existingElement.getAttribute("data-precedence") !== precedence) {
158
+ head.insertBefore(e, existingElement);
159
+ return;
160
+ }
161
+ if (existingElement.getAttribute("data-precedence") === precedence) found = true;
162
+ }
163
+ head.appendChild(e);
164
+ } else if (tag === "link") {
165
+ if (!head.contains(e)) head.appendChild(e);
166
+ } else if (existingElements) {
167
+ let found = false;
168
+ for (const existingElement of existingElements) if (existingElement === e) {
169
+ found = true;
170
+ break;
171
+ }
172
+ if (!found) head.insertBefore(e, head.contains(existingElements[0]) ? existingElements[0] : head.querySelector(tag));
173
+ existingElements = void 0;
174
+ }
175
+ }, [
176
+ deDupeByKey,
177
+ precedence,
178
+ tag
179
+ ]);
180
+ const ref = composeRef(props.ref, (e) => {
181
+ const key = deDupeKeys[0];
182
+ if (preserveNodeType === 2) e.innerHTML = "";
183
+ if (created || existingElements) insert(e);
184
+ if (!onError && !onLoad) return;
185
+ if (!key) return;
186
+ let promise = blockingPromiseMap[e.getAttribute(key)] ||= new Promise((resolve, reject) => {
187
+ e.addEventListener("load", resolve);
188
+ e.addEventListener("error", reject);
189
+ });
190
+ if (onLoad) promise = promise.then(onLoad);
191
+ if (onError) promise = promise.catch(onError);
192
+ promise.catch(() => {});
193
+ });
194
+ if (supportBlocking && blocking === "render") {
195
+ const key = deDupeKeyMap[tag][0];
196
+ if (key && props[key]) {
197
+ const value = props[key];
198
+ use(blockingPromiseMap[value] ||= new Promise((resolve, reject) => {
199
+ insert(element);
200
+ element.addEventListener("load", resolve);
201
+ element.addEventListener("error", reject);
202
+ }));
203
+ }
204
+ }
205
+ const jsxNode = {
206
+ tag,
207
+ type: tag,
208
+ props: {
209
+ ...restProps,
210
+ ref
211
+ },
212
+ ref
213
+ };
214
+ jsxNode.p = preserveNodeType;
215
+ if (element) jsxNode.e = element;
216
+ return createPortal(jsxNode, head);
217
+ };
218
+ const title = (props) => {
219
+ const nameSpaceContext = getNameSpaceContext();
220
+ if ((nameSpaceContext && useContext(nameSpaceContext))?.endsWith("svg")) return {
221
+ tag: "title",
222
+ props,
223
+ type: "title",
224
+ ref: props.ref
225
+ };
226
+ return documentMetadataTag("title", props, void 0, false, false);
227
+ };
228
+ const script = (props) => {
229
+ if (!props || ["src", "async"].some((k) => !props[k])) return {
230
+ tag: "script",
231
+ props,
232
+ type: "script",
233
+ ref: props.ref
234
+ };
235
+ return documentMetadataTag("script", props, 1, false, true);
236
+ };
237
+ const style = (props) => {
238
+ if (!props || !["href", "precedence"].every((k) => k in props)) return {
239
+ tag: "style",
240
+ props,
241
+ type: "style",
242
+ ref: props.ref
243
+ };
244
+ props["data-href"] = props.href;
245
+ delete props.href;
246
+ return documentMetadataTag("style", props, 2, true, true);
247
+ };
248
+ const link = (props) => {
249
+ if (!props || ["onLoad", "onError"].some((k) => k in props) || props.rel === "stylesheet" && (!("precedence" in props) || "disabled" in props)) return {
250
+ tag: "link",
251
+ props,
252
+ type: "link",
253
+ ref: props.ref
254
+ };
255
+ return documentMetadataTag("link", props, 1, isStylesheetLinkWithPrecedence(props), true);
256
+ };
257
+ const meta = (props) => {
258
+ return documentMetadataTag("meta", props, void 0, false, false);
259
+ };
260
+ const customEventFormAction = Symbol();
261
+ const form = (props) => {
262
+ const { action, ...restProps } = props;
263
+ if (typeof action !== "function") restProps.action = action;
264
+ const [state, setState] = useState([null, false]);
265
+ const onSubmit = useCallback(async (ev) => {
266
+ const currentAction = ev.isTrusted ? action : ev.detail[customEventFormAction];
267
+ if (typeof currentAction !== "function") return;
268
+ ev.preventDefault();
269
+ const formData = new FormData(ev.target);
270
+ setState([formData, true]);
271
+ const actionRes = currentAction(formData);
272
+ if (actionRes instanceof Promise) {
273
+ registerAction(actionRes);
274
+ await actionRes;
275
+ }
276
+ setState([null, true]);
277
+ }, []);
278
+ const ref = composeRef(props.ref, (el) => {
279
+ el.addEventListener("submit", onSubmit);
280
+ return () => {
281
+ el.removeEventListener("submit", onSubmit);
282
+ };
283
+ });
284
+ const [data, isDirty] = state;
285
+ state[1] = false;
286
+ return {
287
+ tag: FormContext,
288
+ props: {
289
+ value: {
290
+ pending: data !== null,
291
+ data,
292
+ method: data ? "post" : null,
293
+ action: data ? action : null
294
+ },
295
+ children: {
296
+ tag: "form",
297
+ props: {
298
+ ...restProps,
299
+ ref
300
+ },
301
+ type: "form",
302
+ ref
303
+ }
304
+ },
305
+ f: isDirty
306
+ };
307
+ };
308
+ const formActionableElement = (tag, { formAction, ...props }) => {
309
+ if (typeof formAction === "function") {
310
+ const onClick = useCallback((ev) => {
311
+ ev.preventDefault();
312
+ ev.currentTarget.form.dispatchEvent(new CustomEvent("submit", { detail: { [customEventFormAction]: formAction } }));
313
+ }, []);
314
+ props.ref = composeRef(props.ref, (el) => {
315
+ el.addEventListener("click", onClick);
316
+ return () => {
317
+ el.removeEventListener("click", onClick);
318
+ };
319
+ });
320
+ }
321
+ return {
322
+ tag,
323
+ props,
324
+ type: tag,
325
+ ref: props.ref
326
+ };
327
+ };
328
+ const input = (props) => formActionableElement("input", props);
329
+ const button = (props) => formActionableElement("button", props);
330
+ Object.assign(domRenderers, {
331
+ title,
332
+ script,
333
+ style,
334
+ link,
335
+ meta,
336
+ form,
337
+ input,
338
+ button
339
+ });
340
+ //#endregion
341
+ //#region ../../plugins/acryl-router/src/core/jsx/dom/jsx-dev-runtime.ts
342
+ const jsxDEV = (tag, props, key) => {
343
+ if (typeof tag === "string" && components_exports[tag]) tag = components_exports[tag];
344
+ return {
345
+ tag,
346
+ type: tag,
347
+ props,
348
+ key,
349
+ ref: props.ref
350
+ };
351
+ };
352
+ const Fragment = (props) => jsxDEV("", props, void 0);
353
+ //#endregion
354
+ export { useOptimistic as a, useFormStatus as i, jsxDEV as n, useActionState as r, Fragment as t };
@@ -0,0 +1 @@
1
+ export { };
package/lib/jsx.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { A as createRef, B as useImperativeHandle, C as PropsWithChildren, D as TransitionEvent, E as TouchEvent, F as useCallback, G as useRef, H as useLayoutEffect, I as useDebugValue, J as useTransition, K as useState, L as useDeferredValue, M as startTransition, N as startViewTransition, O as WheelEvent, P as use, R as useEffect, S as PointerEvent, T as ReactNode, U as useMemo, V as useInsertionEffect, W as useReducer, X as ErrorBoundary, Y as useViewTransition, _ as Event, b as KeyboardEvent, c as useActionState, d as Children, f as AnimationEvent, g as DragEvent, h as ComponentClass, i as _default, j as forwardRef, k as RefObject, m as ClipboardEvent, n as createContext, o as Suspense, p as CSSProperties, q as useSyncExternalStore, r as useContext, t as Context, u as useOptimistic, v as FocusEvent, w as ReactElement, x as MouseEvent, y as InputEvent, z as useId } from "./context-DxFdY_un.js";
2
+ import { c as cloneElement, d as memo, f as reactAPICompatVersion, i as Fragment, l as isValidElement, n as DOMAttributes, o as JSXNode, p as JSX, r as FC, t as Child, u as jsx } from "./base-BpQy2Rk7.js";
3
+ export { type AnimationEvent, type CSSProperties, type Child, Children, type ClipboardEvent, type ComponentClass, type Context, type DOMAttributes, type DragEvent, ErrorBoundary, type Event, type FC, type FocusEvent, Fragment, Fragment as StrictMode, type InputEvent, type JSX, type JSXNode, type KeyboardEvent, type MouseEvent, type PointerEvent, type PropsWithChildren, type ReactElement, type ReactNode, type RefObject, Suspense, type TouchEvent, type TransitionEvent, type WheelEvent, cloneElement, createContext, jsx as createElement, jsx, createRef, _default as default, forwardRef, isValidElement, memo, startTransition, startViewTransition, use, useActionState, useCallback, useContext, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useOptimistic, useReducer, useRef, useState, useSyncExternalStore, useTransition, useViewTransition, reactAPICompatVersion as version };
package/lib/jsx.js ADDED
@@ -0,0 +1,47 @@
1
+ import { E as useContext, a as isValidElement, c as memo, g as Children, l as reactAPICompatVersion, o as jsx, r as cloneElement, t as Fragment, w as createContext } from "./base-ddiVmiE7.js";
2
+ import { _ as useState, a as use, b as useViewTransition, c as useDeferredValue, d as useImperativeHandle, f as useInsertionEffect, g as useRef, h as useReducer, i as startViewTransition, l as useEffect, m as useMemo, n as forwardRef, o as useCallback, p as useLayoutEffect, r as startTransition, s as useDebugValue, t as createRef, u as useId, v as useSyncExternalStore, y as useTransition } from "./hooks-Bq5q9IMl.js";
3
+ import { a as useOptimistic, r as useActionState } from "./jsx-dev-runtime-kAhR_4C7.js";
4
+ import { r as Suspense, t as ErrorBoundary } from "./components-Ce5FRyHU.js";
5
+ //#region ../../plugins/acryl-router/src/core/jsx/index.ts
6
+ /**
7
+ * @module
8
+ * JSX for Acryl.
9
+ */
10
+ var jsx_default = {
11
+ version: reactAPICompatVersion,
12
+ memo,
13
+ Fragment,
14
+ StrictMode: Fragment,
15
+ isValidElement,
16
+ createElement: jsx,
17
+ cloneElement,
18
+ ErrorBoundary,
19
+ createContext,
20
+ useContext,
21
+ useState,
22
+ useEffect,
23
+ useRef,
24
+ useCallback,
25
+ useReducer,
26
+ useId,
27
+ useDebugValue,
28
+ use,
29
+ startTransition,
30
+ useTransition,
31
+ useDeferredValue,
32
+ startViewTransition,
33
+ useViewTransition,
34
+ useMemo,
35
+ useLayoutEffect,
36
+ useInsertionEffect,
37
+ createRef,
38
+ forwardRef,
39
+ useImperativeHandle,
40
+ useSyncExternalStore,
41
+ useActionState,
42
+ useOptimistic,
43
+ Suspense,
44
+ Children
45
+ };
46
+ //#endregion
47
+ export { Children, ErrorBoundary, Fragment, Fragment as StrictMode, Suspense, cloneElement, createContext, jsx as createElement, jsx, createRef, jsx_default as default, forwardRef, isValidElement, memo, startTransition, startViewTransition, use, useActionState, useCallback, useContext, useDebugValue, useDeferredValue, useEffect, useId, useImperativeHandle, useInsertionEffect, useLayoutEffect, useMemo, useOptimistic, useReducer, useRef, useState, useSyncExternalStore, useTransition, useViewTransition, reactAPICompatVersion as version };
package/lib/jwk.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { I as MiddlewareHandler, t as Context } from "./context-B5Y1lLha.js";
2
- import { n as BufferSource } from "./types-D9DEXMjE.js";
3
- import { i as CookiePrefixOptions } from "./cookie-D9_nQbsM.js";
4
- import { i as AcrylJsonWebKey, n as VerifyOptions, s as AsymmetricAlgorithm } from "./jwt-BA65QhnJ.js";
1
+ import { I as MiddlewareHandler, t as Context } from "./context-DVQBjuns.js";
2
+ import { n as BufferSource } from "./types-Lqx5BxQF.js";
3
+ import { i as CookiePrefixOptions } from "./cookie-CCelEqky.js";
4
+ import { i as AcrylJsonWebKey, n as VerifyOptions, s as AsymmetricAlgorithm } from "./jwt-BARhotDz.js";
5
5
 
6
6
  //#region ../../plugins/acryl-router/src/core/middleware/jwk/jwk.d.ts
7
7
  /**
@@ -1,4 +1,4 @@
1
- import { i as CryptoKey, v as JsonWebKey } from "./types-D9DEXMjE.js";
1
+ import { i as CryptoKey, y as JsonWebKey } from "./types-Lqx5BxQF.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/utils/jwt/jwa.d.ts
4
4
  /**
package/lib/jwt.d.ts CHANGED
@@ -1,7 +1,7 @@
1
- import { I as MiddlewareHandler } from "./context-B5Y1lLha.js";
2
- import { n as BufferSource } from "./types-D9DEXMjE.js";
3
- import { i as CookiePrefixOptions } from "./cookie-D9_nQbsM.js";
4
- import { a as SignatureKey, c as SignatureAlgorithm, i as AcrylJsonWebKey, n as VerifyOptions, o as AlgorithmTypes, r as VerifyOptionsWithAlg, s as AsymmetricAlgorithm, t as TokenHeader } from "./jwt-BA65QhnJ.js";
1
+ import { I as MiddlewareHandler } from "./context-DVQBjuns.js";
2
+ import { n as BufferSource } from "./types-Lqx5BxQF.js";
3
+ import { i as CookiePrefixOptions } from "./cookie-CCelEqky.js";
4
+ import { a as SignatureKey, c as SignatureAlgorithm, i as AcrylJsonWebKey, n as VerifyOptions, o as AlgorithmTypes, r as VerifyOptionsWithAlg, s as AsymmetricAlgorithm, t as TokenHeader } from "./jwt-BARhotDz.js";
5
5
  import { t as JWTPayload } from "./types-DR95J00T.js";
6
6
 
7
7
  //#region ../../plugins/acryl-router/src/core/middleware/jwt/jwt.d.ts
package/lib/language.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, t as Context } from "./context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler, t as Context } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/middleware/language/language.d.ts
4
4
  type DetectorType = 'path' | 'querystring' | 'cookie' | 'header';
package/lib/logger.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/logger/index.d.ts
4
4
  type PrintFunc = (str: string, ...rest: string[]) => void;
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, t as Context } from "./context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler, t as Context } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/middleware/loopback-only.d.ts
4
4
  interface LoopbackOptions {
@@ -1,5 +1,5 @@
1
- import { I as MiddlewareHandler, _ as Env, t as Context } from "./context-B5Y1lLha.js";
2
- import { t as Acryl } from "./app-BdrVHBlJ.js";
1
+ import { I as MiddlewareHandler, _ as Env, t as Context } from "./context-DVQBjuns.js";
2
+ import { t as Acryl } from "./app-wFwpg-bt.js";
3
3
 
4
4
  //#region ../../plugins/acryl-router/src/core/middleware/method-not-allowed/index.d.ts
5
5
  type MethodNotAllowedHandler<E extends Env> = (c: Context<E>, allowedMethods: string[]) => Response | Promise<Response>;
@@ -1,5 +1,5 @@
1
- import { I as MiddlewareHandler } from "./context-B5Y1lLha.js";
2
- import { t as Acryl } from "./app-BdrVHBlJ.js";
1
+ import { I as MiddlewareHandler } from "./context-DVQBjuns.js";
2
+ import { t as Acryl } from "./app-wFwpg-bt.js";
3
3
 
4
4
  //#region ../../plugins/acryl-router/src/core/middleware/method-override/index.d.ts
5
5
  type MethodOverrideOptions = {
package/lib/mount.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, t as Context } from "./context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler, t as Context } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/middleware/mount/index.d.ts
4
4
  type ApplicationHandler = (request: Request, ...args: any) => Response | Promise<Response>;
@@ -1,4 +1,4 @@
1
- import { r as GetConnInfo } from "../types-ZM9gIiKh.js";
1
+ import { r as GetConnInfo } from "../types-nEL8VPDC.js";
2
2
 
3
3
  //#region ../../plugins/acryl-node-server/src/adapter/conninfo.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, _ as Env, t as Context } from "../context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler, _ as Env, t as Context } from "../context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-node-server/src/adapter/serve-static.d.ts
4
4
  type ServeStaticOptions<E extends Env = Env> = {
@@ -1,2 +1,2 @@
1
- import { t as serveStatic } from "../serve-static-Dw_m6KxR.js";
1
+ import { t as serveStatic } from "../serve-static-Cw23shXv.js";
2
2
  export { serveStatic };
@@ -1,4 +1,4 @@
1
- import { n as UpgradeWebSocket } from "./index-Kqou8Fjh.js";
1
+ import { n as UpgradeWebSocket } from "./index-CsvB-F9j.js";
2
2
  import { ServeStaticOptions, serveStatic } from "./node-server/serve-static.js";
3
3
  import { getConnInfo } from "./node-server/conninfo.js";
4
4
  import { AddressInfo } from "node:net";
@@ -1,5 +1,5 @@
1
1
  import { defineWebSocketHelper } from "./ws.js";
2
- import { t as serveStatic } from "./serve-static-Dw_m6KxR.js";
2
+ import { t as serveStatic } from "./serve-static-Cw23shXv.js";
3
3
  import { getConnInfo } from "./node-server/conninfo.js";
4
4
  import { STATUS_CODES, ServerResponse, createServer } from "node:http";
5
5
  import { Http2ServerRequest, constants } from "node:http2";
@@ -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/powered-by/index.d.ts
4
4
  type PoweredByOptions = {
@@ -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/pretty-json/index.d.ts
4
4
  interface PrettyOptions {
package/lib/proxy.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { r as RequestHeader } from "./headers-tu2YYN8T.js";
2
- import { c as HeadersInit } from "./types-D9DEXMjE.js";
2
+ import { l as HeadersInit } from "./types-Lqx5BxQF.js";
3
3
 
4
4
  //#region ../../plugins/acryl-router/src/core/helper/proxy/index.d.ts
5
5
  interface ProxyRequestInit extends Omit<RequestInit, 'headers'> {
package/lib/quick.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as Acryl$1, J as Schema, _ as Env, et as AcrylOptions, h as BlankSchema, p as BlankEnv } from "./context-B5Y1lLha.js";
1
+ import { $ as Acryl$1, J as Schema, _ as Env, et as AcrylOptions, h as BlankSchema, p as BlankEnv } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/preset/quick.d.ts
4
4
  declare class Acryl<E extends Env = BlankEnv, S extends Schema = BlankSchema, BasePath extends string = '/'> extends Acryl$1<E, S, BasePath> {
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, t as Context } from "./context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler, t as Context } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/middleware/request-id/request-id.d.ts
4
4
  type RequestIdVariables = {
package/lib/request.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { o as AcrylRequest, s as cloneRawRequest } from "./context-B5Y1lLha.js";
1
+ import { o as AcrylRequest, s as cloneRawRequest } from "./context-DVQBjuns.js";
2
2
  export { AcrylRequest, cloneRawRequest };
package/lib/route.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { q as RouterRoute, t as Context } from "./context-B5Y1lLha.js";
1
+ import { q as RouterRoute, t as Context } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/helper/route/index.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, Z as ValidationTargets, _ as Env } from "./context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler, Z as ValidationTargets, _ as Env } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/helpers/schema-validator.d.ts
4
4
  /** The slice of the Standard Schema interface this needs; Schemastery (what Cordis uses), Zod and Valibot all implement it. */
@@ -1,4 +1,4 @@
1
- import { I as MiddlewareHandler, t as Context } from "./context-B5Y1lLha.js";
1
+ import { I as MiddlewareHandler, t as Context } from "./context-DVQBjuns.js";
2
2
 
3
3
  //#region ../../plugins/acryl-router/src/core/middleware/secure-headers/permissions-policy.d.ts
4
4
  type PermissionsPolicyDirective = StandardizedFeatures | ProposedFeatures | ExperimentalFeatures;