@resistdesign/voltra 3.0.0-alpha.4 → 3.0.0-alpha.41

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 (219) hide show
  1. package/README.md +379 -14
  2. package/api/DBX/DBXAsserts.d.ts +95 -0
  3. package/api/DBX/DBXRequest.d.ts +5 -0
  4. package/api/DBX/DBXRuntime.d.ts +5 -0
  5. package/api/DBX/DBXScenarioConfig.d.ts +9 -0
  6. package/api/DBX/DBXSeed.d.ts +124 -0
  7. package/api/DBX/DBXTypes.d.ts +176 -0
  8. package/api/DBX/index.d.ts +8 -0
  9. package/api/DataAccessControl.d.ts +220 -0
  10. package/api/Indexing/API.d.ts +224 -0
  11. package/api/Indexing/Cursor.d.ts +101 -0
  12. package/api/Indexing/Handler/Config.d.ts +39 -0
  13. package/api/Indexing/Handler.d.ts +166 -0
  14. package/api/Indexing/Trace.d.ts +54 -0
  15. package/api/Indexing/Types.d.ts +204 -0
  16. package/api/Indexing/ddb/AwsSdkV3Adapter.d.ts +8 -0
  17. package/api/Indexing/ddb/Types.d.ts +209 -0
  18. package/api/Indexing/docId.d.ts +27 -0
  19. package/api/Indexing/exact/ExactDdb.d.ts +58 -0
  20. package/api/Indexing/exact/ExactIndex.d.ts +90 -0
  21. package/api/Indexing/exact/ExactS3.d.ts +41 -0
  22. package/api/Indexing/fieldQualification.d.ts +12 -0
  23. package/api/Indexing/fulltext/FullTextDdbBackend.d.ts +212 -0
  24. package/api/Indexing/fulltext/FullTextMemoryBackend.d.ts +93 -0
  25. package/api/Indexing/fulltext/Schema.d.ts +164 -0
  26. package/api/Indexing/hashUniversal.d.ts +13 -0
  27. package/api/Indexing/index.d.ts +45 -0
  28. package/api/Indexing/lossy/LossyDdb.d.ts +43 -0
  29. package/api/Indexing/lossy/LossyIndex.d.ts +72 -0
  30. package/api/Indexing/lossy/LossyS3.d.ts +40 -0
  31. package/api/Indexing/rel/Cursor.d.ts +25 -0
  32. package/api/Indexing/rel/Handlers.d.ts +144 -0
  33. package/api/Indexing/rel/RelationalDdb.d.ts +169 -0
  34. package/api/Indexing/rel/RelationalInMemoryBackend.d.ts +38 -0
  35. package/api/Indexing/rel/Types.d.ts +69 -0
  36. package/api/Indexing/structured/Cursor.d.ts +26 -0
  37. package/api/Indexing/structured/Handlers.d.ts +128 -0
  38. package/api/Indexing/structured/SearchStructured.d.ts +44 -0
  39. package/api/Indexing/structured/StructuredDdb.d.ts +184 -0
  40. package/api/Indexing/structured/StructuredDdbBackend.d.ts +112 -0
  41. package/api/Indexing/structured/StructuredInMemoryBackend.d.ts +40 -0
  42. package/api/Indexing/structured/StructuredInMemoryIndex.d.ts +61 -0
  43. package/api/Indexing/structured/StructuredStringLike.d.ts +54 -0
  44. package/api/Indexing/structured/StructuredWriter.d.ts +74 -0
  45. package/api/Indexing/structured/Types.d.ts +126 -0
  46. package/api/Indexing/structured/index.d.ts +9 -0
  47. package/api/Indexing/tokenize.d.ts +31 -0
  48. package/api/ORM/DACUtils.d.ts +270 -0
  49. package/api/ORM/ListItemUtils.d.ts +40 -0
  50. package/api/ORM/ORMRouteMap.d.ts +55 -0
  51. package/api/ORM/TypeInfoORMService.d.ts +740 -0
  52. package/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.d.ts +229 -0
  53. package/api/ORM/drivers/DynamoDBDataItemDBDriver.d.ts +89 -0
  54. package/api/ORM/drivers/InMemoryDataItemDBDriver/ConfigTypes.d.ts +4 -0
  55. package/api/ORM/drivers/InMemoryDataItemDBDriver.d.ts +55 -0
  56. package/api/ORM/drivers/InMemoryFileItemDBDriver/ConfigTypes.d.ts +13 -0
  57. package/api/ORM/drivers/InMemoryFileItemDBDriver.d.ts +98 -0
  58. package/api/ORM/drivers/InMemoryItemRelationshipDBDriver.d.ts +16 -0
  59. package/api/ORM/drivers/IndexingRelationshipDriver.d.ts +123 -0
  60. package/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.d.ts +322 -0
  61. package/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.d.ts +118 -0
  62. package/api/ORM/drivers/S3FileItemDBDriver.d.ts +71 -0
  63. package/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +36 -0
  64. package/api/ORM/drivers/common/Types.d.ts +197 -0
  65. package/api/ORM/drivers/common/index.d.ts +2 -0
  66. package/api/ORM/drivers/index.d.ts +8 -0
  67. package/api/ORM/index.d.ts +9 -0
  68. package/api/ORM/indexing/criteriaToStructuredWhere.d.ts +22 -0
  69. package/api/Router/AWS.d.ts +80 -0
  70. package/api/Router/Auth.d.ts +14 -0
  71. package/api/Router/CORS.d.ts +66 -0
  72. package/api/Router/Types.d.ts +138 -0
  73. package/api/Router/index.d.ts +89 -0
  74. package/api/index.d.ts +72 -6
  75. package/api/index.js +3291 -1954
  76. package/app/forms/Engine.d.ts +23 -0
  77. package/app/forms/UI.d.ts +83 -0
  78. package/app/forms/core/createAutoField.d.ts +43 -0
  79. package/app/forms/core/createFormRenderer.d.ts +25 -0
  80. package/app/forms/core/getFieldKind.d.ts +14 -0
  81. package/app/forms/core/index.d.ts +11 -0
  82. package/app/forms/core/mergeSuites.d.ts +23 -0
  83. package/app/forms/core/resolveSuite.d.ts +15 -0
  84. package/app/forms/core/types.d.ts +180 -0
  85. package/app/forms/index.d.ts +9 -0
  86. package/app/forms/types.d.ts +137 -0
  87. package/app/helpers/styled.d.ts +3 -0
  88. package/app/index.d.ts +102 -5
  89. package/app/index.js +98 -327
  90. package/app/utils/ApplicationState.d.ts +167 -0
  91. package/app/utils/ApplicationStateLoader.d.ts +86 -0
  92. package/app/utils/Controller.d.ts +10 -0
  93. package/app/utils/Debug.d.ts +14 -0
  94. package/app/utils/EasyLayout.d.ts +89 -0
  95. package/app/utils/History.d.ts +165 -0
  96. package/app/utils/Route.d.ts +173 -0
  97. package/app/utils/RouteHistory.d.ts +27 -0
  98. package/app/utils/Service.d.ts +45 -0
  99. package/app/utils/TypeInfoORMAPIUtils.d.ts +94 -0
  100. package/app/utils/TypeInfoORMClient.d.ts +103 -0
  101. package/app/utils/UniversalRouteAdapter.d.ts +73 -0
  102. package/app/utils/easy-layout/computeAreaBounds.d.ts +5 -0
  103. package/app/utils/easy-layout/computeTracks.d.ts +16 -0
  104. package/app/utils/easy-layout/index.d.ts +5 -0
  105. package/app/utils/easy-layout/parseTemplate.d.ts +12 -0
  106. package/app/utils/easy-layout/types.d.ts +52 -0
  107. package/app/utils/easy-layout/validateAreas.d.ts +5 -0
  108. package/app/utils/index.d.ts +24 -0
  109. package/build/TypeMapping.d.ts +17 -0
  110. package/build/TypeParsing.d.ts +10 -0
  111. package/build/index.d.ts +15 -0
  112. package/build/index.js +569 -0
  113. package/chunk-2MOLWZMQ.js +71 -0
  114. package/chunk-7AMEFPPP.js +78 -0
  115. package/chunk-ATO2455Q.js +258 -0
  116. package/chunk-DT6WWJUI.js +1185 -0
  117. package/chunk-I2KLQ2HA.js +19 -0
  118. package/chunk-TJFTWPXQ.js +39 -0
  119. package/chunk-WNFRDIBW.js +121 -0
  120. package/chunk-YCTVEW2I.js +546 -0
  121. package/common/CommandLine/collectRequiredEnvironmentVariables.d.ts +9 -0
  122. package/common/CommandLine/index.d.ts +6 -0
  123. package/common/HelperTypes.d.ts +9 -0
  124. package/common/IdGeneration/getSimpleId.d.ts +8 -0
  125. package/common/IdGeneration/index.d.ts +1 -0
  126. package/common/ItemRelationshipInfoTypes.d.ts +64 -0
  127. package/common/ItemRelationships/ItemRelationshipValidation.d.ts +21 -0
  128. package/common/ItemRelationships/index.d.ts +2 -0
  129. package/common/Logging/Utils.d.ts +10 -0
  130. package/common/Logging/index.d.ts +1 -0
  131. package/common/Routing.d.ts +81 -0
  132. package/common/SearchTypes.d.ts +227 -0
  133. package/common/SearchUtils.d.ts +55 -0
  134. package/common/SearchValidation.d.ts +27 -0
  135. package/common/StringTransformers.d.ts +28 -0
  136. package/common/Testing/CLI.d.ts +6 -0
  137. package/common/Testing/Types.d.ts +216 -0
  138. package/common/Testing/Utils.d.ts +112 -0
  139. package/common/Testing/index.d.ts +8 -0
  140. package/common/TypeInfoDataItemUtils.d.ts +39 -0
  141. package/{Types-C7XjUjoF.d.ts → common/TypeInfoORM/Types.d.ts} +117 -15
  142. package/common/TypeInfoORM/index.d.ts +3 -0
  143. package/common/TypeParsing/Constants.d.ts +4 -0
  144. package/common/TypeParsing/ParsingUtils/Constants.d.ts +8 -0
  145. package/common/TypeParsing/ParsingUtils/checkType.d.ts +14 -0
  146. package/common/TypeParsing/ParsingUtils/checkUnionType.d.ts +12 -0
  147. package/common/TypeParsing/ParsingUtils/extractCommentTags.d.ts +8 -0
  148. package/common/TypeParsing/ParsingUtils/extractLiteralValues.d.ts +12 -0
  149. package/common/TypeParsing/ParsingUtils/extractTypeDetails.d.ts +14 -0
  150. package/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.d.ts +18 -0
  151. package/common/TypeParsing/ParsingUtils/getTypeInfo.d.ts +9 -0
  152. package/common/TypeParsing/ParsingUtils/getTypeInfoField.d.ts +9 -0
  153. package/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.d.ts +11 -0
  154. package/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.d.ts +12 -0
  155. package/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.d.ts +11 -0
  156. package/common/TypeParsing/ParsingUtils/getTypeKeyword.d.ts +9 -0
  157. package/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.d.ts +11 -0
  158. package/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.d.ts +8 -0
  159. package/common/TypeParsing/TypeInfo.d.ts +222 -0
  160. package/common/TypeParsing/Utils.d.ts +47 -0
  161. package/common/TypeParsing/Validation.d.ts +327 -0
  162. package/common/TypeParsing/index.d.ts +8 -0
  163. package/common/index.d.ts +40 -4
  164. package/common/index.js +25 -1737
  165. package/{index-BkFZlfit.d.ts → iac/SimpleCFT.d.ts} +5 -25
  166. package/iac/index.d.ts +40 -2
  167. package/iac/index.js +2 -1661
  168. package/iac/packs/auth.d.ts +131 -0
  169. package/iac/packs/build/utils.d.ts +289 -0
  170. package/iac/packs/build.d.ts +92 -0
  171. package/iac/packs/cdn.d.ts +33 -0
  172. package/iac/packs/cloud-function.d.ts +67 -0
  173. package/iac/packs/database.d.ts +32 -0
  174. package/iac/packs/dns.d.ts +34 -0
  175. package/iac/packs/file-storage.d.ts +46 -0
  176. package/iac/packs/gateway.d.ts +82 -0
  177. package/iac/packs/index.d.ts +60 -1
  178. package/iac/packs/index.js +391 -594
  179. package/iac/packs/repo.d.ts +28 -0
  180. package/iac/packs/ssl-certificate.d.ts +28 -0
  181. package/iac/types/Constants.d.ts +24 -0
  182. package/{index-DcvJOZ_c.d.ts → iac/types/IaCTypes.d.ts} +23 -1018
  183. package/iac/types/Renderers.d.ts +96 -0
  184. package/iac/types/Types.d.ts +131 -0
  185. package/iac/types/Utils.d.ts +9 -0
  186. package/iac/types/generate.d.ts +1 -0
  187. package/iac/utils/index.d.ts +87 -0
  188. package/iac/utils/patch-utils.d.ts +66 -0
  189. package/iac-packs/index.d.ts +6 -0
  190. package/native/forms/UI.d.ts +73 -0
  191. package/native/forms/createNativeFormRenderer.d.ts +21 -0
  192. package/native/forms/index.d.ts +25 -0
  193. package/native/forms/primitives/index.d.ts +38 -0
  194. package/native/forms/suite.d.ts +15 -0
  195. package/native/index.d.ts +19 -0
  196. package/native/index.js +748 -0
  197. package/native/testing/react-native.d.ts +46 -0
  198. package/native/utils/EasyLayout.d.ts +88 -0
  199. package/native/utils/History.d.ts +102 -0
  200. package/native/utils/Route.d.ts +80 -0
  201. package/native/utils/index.d.ts +20 -0
  202. package/package.json +54 -21
  203. package/web/forms/UI.d.ts +74 -0
  204. package/web/forms/createWebFormRenderer.d.ts +21 -0
  205. package/web/forms/index.d.ts +9 -0
  206. package/web/forms/primitives/index.d.ts +21 -0
  207. package/web/forms/suite.d.ts +15 -0
  208. package/web/index.d.ts +15 -0
  209. package/web/index.js +668 -0
  210. package/web/utils/EasyLayout.d.ts +47 -0
  211. package/web/utils/Route.d.ts +16 -0
  212. package/web/utils/index.d.ts +7 -0
  213. package/SearchTypes-DjN6YQzE.d.ts +0 -577
  214. package/Validation-CFP59oIP.d.ts +0 -226
  215. package/index-C3-iD9Mh.d.ts +0 -690
  216. package/index-DZ2BB4iX.d.ts +0 -5357
  217. package/index-IokxSNxm.d.ts +0 -745
  218. package/index.d.ts +0 -13
  219. package/index.js +0 -10973
package/app/index.d.ts CHANGED
@@ -1,5 +1,102 @@
1
- export { a as Utils } from '../index-IokxSNxm.js';
2
- import 'react';
3
- import 'react/jsx-runtime';
4
- import '../Types-C7XjUjoF.js';
5
- import '../SearchTypes-DjN6YQzE.js';
1
+ /**
2
+ * @packageDocumentation
3
+ *
4
+ * Build front-end applications with React and TypeScript utilities, including
5
+ * layout/state helpers and form generation support.
6
+ *
7
+ * Import from the app subpath only:
8
+ * ```ts
9
+ * import {
10
+ * createFormRenderer,
11
+ * useApplicationStateLoader,
12
+ * useApplicationStateValueStructure,
13
+ * type RemoteProcedureCall,
14
+ * } from "@resistdesign/voltra/app";
15
+ * ```
16
+ *
17
+ * @see {@link useApplicationStateValueStructure} and
18
+ * {@link useApplicationStateLoader} for good starting points.
19
+ *
20
+ * Reference examples:
21
+ * - `examples/README.md`
22
+ * - `examples/routing/app-routing.ts`
23
+ *
24
+ * @example
25
+ * ```tsx
26
+ * import {
27
+ * useApplicationStateLoader,
28
+ * useApplicationStateValueStructure,
29
+ * type RemoteProcedureCall,
30
+ * } from "@resistdesign/voltra/app";
31
+ * import { useCallback } from "react";
32
+ *
33
+ * const APP_STATE_IDENTIFIERS = {
34
+ * LOGIN: {
35
+ * USERNAME: {},
36
+ * PASSWORD: {},
37
+ * LOGGED_IN: {},
38
+ * },
39
+ * };
40
+ *
41
+ * const LOGIN_SERVICE_CONFIG = {
42
+ * protocol: "https",
43
+ * domain: "example.com",
44
+ * basePath: "/api",
45
+ * };
46
+ *
47
+ * const LOGIN_RPC: RemoteProcedureCall = {
48
+ * serviceConfig: LOGIN_SERVICE_CONFIG,
49
+ * path: "/login",
50
+ * args: [],
51
+ * };
52
+ *
53
+ * export const LoginController = () => {
54
+ * const {
55
+ * valueStructure: {
56
+ * username: username = "",
57
+ * password: password = "",
58
+ * loggedIn: loggedIn = false,
59
+ * },
60
+ * onChangeStructure: {
61
+ * username: setUsername,
62
+ * password: setPassword,
63
+ * loggedIn: setLoggedIn,
64
+ * },
65
+ * } = useApplicationStateValueStructure<{
66
+ * username: string;
67
+ * password: string;
68
+ * loggedIn: boolean;
69
+ * }>({
70
+ * username: APP_STATE_IDENTIFIERS.LOGIN.USERNAME,
71
+ * password: APP_STATE_IDENTIFIERS.LOGIN.PASSWORD,
72
+ * loggedIn: APP_STATE_IDENTIFIERS.LOGIN.LOGGED_IN,
73
+ * });
74
+ *
75
+ * const { loading: loadingLogin, makeRemoteProcedureCall } =
76
+ * useApplicationStateLoader({
77
+ * identifier: APP_STATE_IDENTIFIERS.LOGIN.LOGGED_IN,
78
+ * remoteProcedureCall: LOGIN_RPC,
79
+ * manual: true,
80
+ * });
81
+ *
82
+ * const onSubmit = useCallback(() => {
83
+ * makeRemoteProcedureCall(username, password);
84
+ * }, [username, password, makeRemoteProcedureCall]);
85
+ *
86
+ * return { username, password, loggedIn, setUsername, setPassword, onSubmit, loadingLogin };
87
+ * };
88
+ * ```
89
+ *
90
+ * See also: `@resistdesign/voltra/web` and `@resistdesign/voltra/native` for
91
+ * runtime-specific UI helpers.
92
+ */
93
+ /**
94
+ * @category app
95
+ * @group State and Services
96
+ */
97
+ export * from "./utils";
98
+ /**
99
+ * @category app
100
+ * @group Forms
101
+ */
102
+ export * from "./forms";
package/app/index.js CHANGED
@@ -1,45 +1,13 @@
1
+ export { createEasyLayout, getEasyLayoutTemplateDetails, getPascalCaseAreaName } from '../chunk-2MOLWZMQ.js';
2
+ export { computeTrackPixels } from '../chunk-TJFTWPXQ.js';
3
+ export { AutoForm, AutoFormView, Route, RouteContext, RouteContextConsumer, RouteContextProvider, RouteProvider, buildHistoryPath, buildQueryString, buildRoutePath, canUseBrowserHistory, computeAreaBounds, createAutoField, createBrowserRouteAdapter, createFormRenderer, createHistoryBackHandler, createManualRouteAdapter, createMemoryHistory, createNativeRouteAdapter, createRouteAdapterFromHistory, createUniversalAdapter, defaultTranslateValidationErrorCode, getFieldKind, parseHistoryPath, parseTemplate, resolveSuite, useFormEngine, useRouteContext, validateAreas, wrapRouteAdapterWithPathResolver } from '../chunk-DT6WWJUI.js';
4
+ import '../chunk-7AMEFPPP.js';
5
+ import '../chunk-YCTVEW2I.js';
6
+ import { mergeStringPaths, PATH_DELIMITER } from '../chunk-WNFRDIBW.js';
7
+ import '../chunk-I2KLQ2HA.js';
1
8
  import { createContext, useContext, useRef, useMemo, useCallback, useState, useEffect } from 'react';
2
9
  import { jsx } from 'react/jsx-runtime';
3
- import styled from 'styled-components';
4
10
 
5
- var __defProp = Object.defineProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
-
11
- // src/app/utils/index.ts
12
- var utils_exports = {};
13
- __export(utils_exports, {
14
- ApplicationStateContext: () => ApplicationStateContext,
15
- ApplicationStateProvider: () => ApplicationStateProvider,
16
- Route: () => Route,
17
- RouteContext: () => RouteContext,
18
- RouteContextConsumer: () => RouteContextConsumer,
19
- RouteContextProvider: () => RouteContextProvider,
20
- TypeInfoORMClient: () => TypeInfoORMClient,
21
- getApplicationStateIdentifier: () => getApplicationStateIdentifier,
22
- getApplicationStateModified: () => getApplicationStateModified,
23
- getApplicationStateValue: () => getApplicationStateValue,
24
- getApplicationStateValueStructure: () => getApplicationStateValueStructure,
25
- getChangedDependencyIndexes: () => getChangedDependencyIndexes,
26
- getEasyLayout: () => getEasyLayout,
27
- getEasyLayoutTemplateDetails: () => getEasyLayoutTemplateDetails,
28
- getFullUrl: () => getFullUrl,
29
- getPascalCaseAreaName: () => getPascalCaseAreaName,
30
- handleRequest: () => handleRequest,
31
- requestHandlerFactory: () => requestHandlerFactory,
32
- sendServiceRequest: () => sendServiceRequest,
33
- setApplicationStateModified: () => setApplicationStateModified,
34
- setApplicationStateValue: () => setApplicationStateValue,
35
- useApplicationStateLoader: () => useApplicationStateLoader,
36
- useApplicationStateValue: () => useApplicationStateValue,
37
- useApplicationStateValueStructure: () => useApplicationStateValueStructure,
38
- useController: () => useController,
39
- useDebugDependencies: () => useDebugDependencies,
40
- useRouteContext: () => useRouteContext,
41
- useTypeInfoORMAPI: () => useTypeInfoORMAPI
42
- });
43
11
  var getApplicationStateIdentifier = (subStateIdMap) => subStateIdMap ? subStateIdMap : {};
44
12
  var getApplicationStateModified = (identifier, modificationState) => !!modificationState.get(identifier);
45
13
  var getApplicationStateValue = (identifier, applicationState) => applicationState.get(identifier);
@@ -70,6 +38,8 @@ var useApplicationStateValue = (identifier) => {
70
38
  } = useContext(ApplicationStateContext);
71
39
  const appStateRef = useRef(applicationState);
72
40
  appStateRef.current = applicationState;
41
+ const modificationStateRef = useRef(modificationState);
42
+ modificationStateRef.current = modificationState;
73
43
  const modified = useMemo(
74
44
  () => getApplicationStateModified(identifier, modificationState),
75
45
  [identifier, modificationState]
@@ -81,7 +51,11 @@ var useApplicationStateValue = (identifier) => {
81
51
  const setModified = useCallback(
82
52
  (isModified) => {
83
53
  setModificationState(
84
- setApplicationStateModified(identifier, isModified, modificationState)
54
+ setApplicationStateModified(
55
+ identifier,
56
+ isModified,
57
+ modificationStateRef.current
58
+ )
85
59
  );
86
60
  },
87
61
  [identifier, setModificationState]
@@ -160,102 +134,31 @@ var ApplicationStateProvider = ({
160
134
  return /* @__PURE__ */ jsx(Provider, { value: controller, children });
161
135
  };
162
136
 
163
- // src/common/Routing.ts
164
- var PATH_DELIMITER = "/";
165
- var getPotentialJSONValue = (value) => {
166
- try {
167
- return JSON.parse(value);
168
- } catch (error) {
169
- return value;
170
- }
171
- };
172
- var getPathArray = (path, delimiter = PATH_DELIMITER, filterEmptyOutput = false, filterEmptyInput = true, useJson = true, uriDecodeParts = true) => path.split(delimiter).filter(filterEmptyInput ? (p) => p !== "" : () => true).map(uriDecodeParts ? decodeURIComponent : (x) => x).map(useJson ? getPotentialJSONValue : (p) => p).filter(filterEmptyOutput ? (p) => p ?? false : () => true);
173
- var getPathString = (parts = [], delimiter = PATH_DELIMITER, filterEmptyInput = false, useJson = true, uriEncodeParts = false) => parts.filter(filterEmptyInput ? (p) => p ?? false : () => true).map(useJson ? (p) => JSON.stringify(p) : (x) => x).map(uriEncodeParts ? encodeURIComponent : (x) => x).join(delimiter);
174
- var mergeStringPaths = (path1, path2, delimiter = PATH_DELIMITER, filterEmptyOutput = false, filterEmptyInput = true, useJson = true, uriEncodeParts = false) => getPathString(
175
- [
176
- ...getPathArray(
177
- path1,
178
- delimiter,
179
- filterEmptyOutput,
180
- filterEmptyInput,
181
- useJson,
182
- uriEncodeParts
183
- ),
184
- ...getPathArray(
185
- path2,
186
- delimiter,
187
- filterEmptyOutput,
188
- filterEmptyInput,
189
- useJson,
190
- uriEncodeParts
191
- )
192
- ],
193
- delimiter,
194
- filterEmptyInput,
195
- useJson,
196
- uriEncodeParts
197
- );
198
- var resolvePath = (currentPath, newPath) => {
199
- const newSegments = getPathArray(newPath, PATH_DELIMITER, true);
200
- let currentSegments = getPathArray(currentPath, PATH_DELIMITER, true);
201
- if (newPath.startsWith("/")) {
202
- currentSegments = [];
203
- }
204
- newSegments.forEach((segment) => {
205
- if (segment === "..") {
206
- if (currentSegments.length > 0) {
207
- currentSegments.pop();
208
- }
209
- } else if (segment !== ".") {
210
- currentSegments.push(segment);
211
- }
212
- });
213
- return "/" + currentSegments.join("/");
214
- };
215
- var getParamsAndTestPath = (path, testPath, exact = false) => {
216
- const pathList = getPathArray(path);
217
- const testPathList = getPathArray(testPath);
218
- if (exact && pathList.length !== testPathList.length) {
219
- return false;
220
- } else {
221
- let params = {};
222
- if (pathList.length >= testPathList.length) {
223
- for (let i = 0; i < testPathList.length; i++) {
224
- const testPathPart = testPathList[i];
225
- const pathPart = pathList[i];
226
- if (testPathPart.startsWith(":")) {
227
- const paramName = testPathPart.slice(1);
228
- params[paramName] = pathPart;
229
- } else if (pathPart !== testPathPart) {
230
- return false;
231
- }
232
- }
233
- } else {
234
- return false;
235
- }
236
- return params;
237
- }
238
- };
239
-
240
137
  // src/app/utils/Service.ts
241
138
  var getFullUrl = (protocol, domain, basePath = "", path = "", port) => {
139
+ const normalizedProtocol = protocol.endsWith(":") ? protocol.slice(0, -1) : protocol;
140
+ const normalizedDomain = domain.replace(/\/+$/, "");
242
141
  const portString = !!port ? `:${port}` : "";
243
142
  const fullPath = mergeStringPaths(
244
143
  basePath,
245
144
  path,
246
145
  PATH_DELIMITER,
247
146
  false,
248
- false,
147
+ true,
249
148
  false
250
149
  );
251
- return `${protocol}://${domain}${portString}${fullPath}`;
150
+ const normalizedPath = fullPath ? fullPath.startsWith(PATH_DELIMITER) ? fullPath : `${PATH_DELIMITER}${fullPath}` : PATH_DELIMITER;
151
+ return `${normalizedProtocol}://${normalizedDomain}${portString}${normalizedPath}`;
252
152
  };
253
153
  var sendServiceRequest = async (config, path = "", args = []) => {
254
154
  const { protocol, domain, port, basePath = "", authorization = "" } = config;
255
155
  const fullUrl = getFullUrl(protocol, domain, basePath, path, port);
256
- const requestHeaders = !!authorization ? {
257
- Authorization: `Bearer ${authorization}`
258
- } : void 0;
156
+ const requestHeaders = {
157
+ "Content-Type": "application/json",
158
+ ...!!authorization ? {
159
+ Authorization: `Bearer ${authorization}`
160
+ } : {}
161
+ };
259
162
  const response = await fetch(fullUrl, {
260
163
  headers: requestHeaders,
261
164
  credentials: "same-origin",
@@ -263,11 +166,24 @@ var sendServiceRequest = async (config, path = "", args = []) => {
263
166
  body: JSON.stringify(args)
264
167
  });
265
168
  const { ok: responseIsOk } = response;
266
- const data = await response.json();
267
- if (responseIsOk) {
268
- return data;
169
+ const textData = await response.text();
170
+ let data = textData;
171
+ try {
172
+ data = JSON.parse(textData);
173
+ } catch (error) {
174
+ }
175
+ if (typeof data === "object") {
176
+ if (responseIsOk) {
177
+ return data;
178
+ } else {
179
+ throw data;
180
+ }
269
181
  } else {
270
- throw data;
182
+ if (responseIsOk) {
183
+ return { data };
184
+ } else {
185
+ throw { message: data };
186
+ }
271
187
  }
272
188
  };
273
189
  var useApplicationStateLoader = (config) => {
@@ -335,7 +251,7 @@ var useApplicationStateLoader = (config) => {
335
251
  var getKeyValueWithoutError = (obj, key) => {
336
252
  try {
337
253
  return obj[key];
338
- } catch (e) {
254
+ } catch (_error) {
339
255
  return void 0;
340
256
  }
341
257
  };
@@ -346,7 +262,8 @@ var useController = (parentValue, key, onParentValueChange, isArrayIndex = false
346
262
  try {
347
263
  setValue(value2);
348
264
  if (isArrayIndex) {
349
- const newArray = [...parentValue];
265
+ const baseArray = Array.isArray(parentValue) ? parentValue : [];
266
+ const newArray = [...baseArray];
350
267
  newArray[key] = value2;
351
268
  onParentValueChange(newArray);
352
269
  } else {
@@ -355,7 +272,7 @@ var useController = (parentValue, key, onParentValueChange, isArrayIndex = false
355
272
  [key]: value2
356
273
  });
357
274
  }
358
- } catch (e) {
275
+ } catch (_error) {
359
276
  }
360
277
  },
361
278
  [parentValue, key, onParentValueChange, isArrayIndex]
@@ -363,7 +280,7 @@ var useController = (parentValue, key, onParentValueChange, isArrayIndex = false
363
280
  useEffect(() => {
364
281
  try {
365
282
  setValue(getKeyValueWithoutError(parentValue, key));
366
- } catch (e) {
283
+ } catch (_error) {
367
284
  setValue(void 0);
368
285
  }
369
286
  }, [parentValue, key]);
@@ -388,202 +305,33 @@ var useDebugDependencies = (dependencies) => {
388
305
  prevDeps.current = dependencies;
389
306
  }, dependencies);
390
307
  };
391
- var getPascalCaseAreaName = (area) => {
392
- return area.split("-").map((a) => a[0].toUpperCase() + a.slice(1)).join("");
308
+
309
+ // src/common/IdGeneration/getSimpleId.ts
310
+ var LAST_HAST_ID = 0;
311
+ var textEncoder = new TextEncoder();
312
+ var bytesToBinaryString = (bytes) => {
313
+ let out = "";
314
+ for (let i = 0; i < bytes.length; i++) {
315
+ out += String.fromCharCode(bytes[i]);
316
+ }
317
+ return out;
393
318
  };
394
- var convertLayoutToCSS = (layout = "") => {
395
- const lines = layout.split("\n");
396
- let areaRows = [];
397
- let rows = [];
398
- let css = "";
399
- for (let i = 0; i < lines.length; i++) {
400
- const line = lines[i].trim();
401
- if (line.indexOf("\\") === 0) {
402
- css += `
403
- grid-template-columns: ${line.split("\\").join("").trim()};`;
319
+ var getBase64EncodedString = (input) => {
320
+ const bytes = textEncoder.encode(input);
321
+ let base64 = "";
322
+ if (typeof globalThis.btoa === "function") {
323
+ const binary = bytesToBinaryString(bytes);
324
+ base64 = globalThis.btoa(binary);
325
+ } else {
326
+ const anyGlobal = globalThis;
327
+ if (typeof anyGlobal.Buffer === "function") {
328
+ base64 = anyGlobal.Buffer.from(bytes).toString("base64");
404
329
  } else {
405
- const parts = line.split(",").map((p) => p && p.trim());
406
- if (parts[0]) {
407
- areaRows = [...areaRows, parts[0]];
408
- if (parts[1]) {
409
- rows = [...rows, parts[1]];
410
- }
411
- }
330
+ throw new Error("No base64 encoder available (need btoa or Buffer).");
412
331
  }
413
332
  }
414
- css += `
415
- grid-template-areas:
416
- ${areaRows.filter((a) => !!(a && a.trim())).map((a) => ` "${a}"`).join("\n")};`;
417
- if (rows.length) {
418
- css += `
419
- grid-template-rows: ${rows.filter((r) => !!(r && r.trim())).join(" ")};`;
420
- }
421
- const areasList = Object.keys(
422
- areaRows.reduce(
423
- (acc, a) => [
424
- ...acc,
425
- ...a.split(" ").map((a2) => a2 && a2.trim()).filter((a2) => !!a2)
426
- ],
427
- []
428
- ).reduce((acc, a) => ({ ...acc, [a]: true }), {})
429
- );
430
- return {
431
- areasList,
432
- css
433
- };
333
+ return base64;
434
334
  };
435
- var getEasyLayoutTemplateDetails = (layout = "") => convertLayoutToCSS(layout);
436
- var getEasyLayout = (extendFrom, areasExtendFrom) => {
437
- return (layoutTemplate, ...expressions) => {
438
- const mergedTemplate = layoutTemplate.reduce((acc, l, ind) => {
439
- const expr = expressions[ind - 1];
440
- const exprStr = typeof expr === "undefined" ? "" : expr;
441
- return `${acc}${l}${exprStr}`;
442
- }, "");
443
- const { areasList, css } = convertLayoutToCSS(mergedTemplate);
444
- const baseLayoutComp = extendFrom ? styled(extendFrom) : styled.div;
445
- const layout = baseLayoutComp`
446
- display: grid;
447
- ${css}
448
- `;
449
- const areas = areasList.reduce((acc, area) => {
450
- const pascalCaseAreaName = getPascalCaseAreaName(area);
451
- const baseCompFunc = areasExtendFrom ? styled(areasExtendFrom) : styled.div;
452
- const component = baseCompFunc`
453
- grid-area: ${area};
454
- `;
455
- return {
456
- ...acc,
457
- [pascalCaseAreaName]: component
458
- };
459
- }, {});
460
- return {
461
- layout,
462
- areas
463
- };
464
- };
465
- };
466
- (function(history2) {
467
- const pushState = history2.pushState;
468
- history2.pushState = function(state, ...remainingArguments) {
469
- if (typeof history2.onpushstate == "function") {
470
- history2.onpushstate({ state });
471
- }
472
- const result = pushState.apply(history2, [state, ...remainingArguments]);
473
- window.dispatchEvent(new CustomEvent("statechanged", { detail: state }));
474
- return result;
475
- };
476
- })(window.history);
477
- var CURRENT_PATH = window.location.pathname;
478
- var RouteContext = createContext({
479
- currentWindowPath: CURRENT_PATH,
480
- parentPath: "",
481
- params: {},
482
- isTopLevel: true
483
- });
484
- var {
485
- /**
486
- * @ignore
487
- * */
488
- Provider: RouteContextProvider,
489
- /**
490
- * @ignore
491
- * */
492
- Consumer: RouteContextConsumer
493
- } = RouteContext;
494
- var useRouteContext = () => useContext(RouteContext);
495
- var Route = ({
496
- /**
497
- * Use `:` as the first character to denote a parameter in the path.
498
- * */
499
- path = "",
500
- onParamsChange,
501
- exact = false,
502
- children
503
- }) => {
504
- const [currentPath = "", setCurrentPath] = useState(CURRENT_PATH);
505
- const {
506
- currentWindowPath = "",
507
- parentPath = "",
508
- params: parentParams = {},
509
- isTopLevel
510
- } = useRouteContext();
511
- const targetCurrentPath = useMemo(
512
- () => isTopLevel ? currentPath : currentWindowPath,
513
- [isTopLevel, currentPath, currentWindowPath]
514
- );
515
- const fullPath = useMemo(
516
- () => mergeStringPaths(parentPath, path),
517
- [parentPath, path]
518
- );
519
- const newParams = useMemo(
520
- () => getParamsAndTestPath(targetCurrentPath, fullPath, exact),
521
- [targetCurrentPath, fullPath, exact]
522
- );
523
- const params = useMemo(
524
- () => ({
525
- ...parentParams,
526
- ...newParams ? newParams : {}
527
- }),
528
- [parentParams, newParams]
529
- );
530
- const newRouteContext = useMemo(
531
- () => ({
532
- currentWindowPath: targetCurrentPath,
533
- parentPath: fullPath,
534
- params,
535
- isTopLevel: false
536
- }),
537
- [targetCurrentPath, fullPath, params]
538
- );
539
- useEffect(() => {
540
- if (onParamsChange) {
541
- onParamsChange(params);
542
- }
543
- }, [params, onParamsChange]);
544
- useEffect(() => {
545
- if (isTopLevel) {
546
- const handleAnchorClick = (event) => {
547
- let target = event.target;
548
- while (target && target.nodeName !== "A") {
549
- target = target.parentNode;
550
- }
551
- if (target && target.nodeName === "A") {
552
- const aTarget = target;
553
- const href = aTarget.getAttribute("href");
554
- const title = aTarget.getAttribute("title") ?? "";
555
- try {
556
- new URL(href ? href : "");
557
- } catch (error) {
558
- const newPath = resolvePath(
559
- window.location.pathname,
560
- href ? href : ""
561
- );
562
- event.preventDefault();
563
- history.pushState({}, title, newPath);
564
- setCurrentPath(newPath);
565
- }
566
- }
567
- };
568
- const handlePopOrReplaceState = () => {
569
- setCurrentPath(window.location.pathname);
570
- };
571
- window.document.addEventListener("click", handleAnchorClick);
572
- window.addEventListener("popstate", handlePopOrReplaceState);
573
- window.addEventListener("statechanged", handlePopOrReplaceState);
574
- return () => {
575
- window.document.removeEventListener("click", handleAnchorClick);
576
- window.removeEventListener("popstate", handlePopOrReplaceState);
577
- window.removeEventListener("statechanged", handlePopOrReplaceState);
578
- };
579
- }
580
- }, [isTopLevel]);
581
- return newParams ? /* @__PURE__ */ jsx(RouteContextProvider, { value: newRouteContext, children }) : null;
582
- };
583
-
584
- // src/common/IdGeneration/getSimpleId.ts
585
- var LAST_HAST_ID = 0;
586
- var getBase64EncodedString = (input) => Buffer.from(input).toString("base64");
587
335
  var getSimpleId = () => {
588
336
  const hashId = LAST_HAST_ID++;
589
337
  const base64Datetime = getBase64EncodedString(
@@ -653,8 +401,7 @@ var useTypeInfoORMAPI = (typeInfoORMAPI) => {
653
401
  );
654
402
  const api = useMemo(() => {
655
403
  const apiBase = {};
656
- for (const aM in typeInfoORMAPI) {
657
- const methodName = aM;
404
+ for (const methodName of Object.keys(typeInfoORMAPI)) {
658
405
  apiBase[methodName] = requestHandlerFactory(
659
406
  typeInfoORMAPI,
660
407
  methodName,
@@ -687,7 +434,11 @@ var TypeInfoORMClient = class {
687
434
  * @returns Parsed response payload.
688
435
  */
689
436
  makeRequest = async (path, args) => {
690
- const result = await sendServiceRequest(this.config, path, args);
437
+ const cleanedArgs = [...args];
438
+ while (cleanedArgs.length > 0 && typeof cleanedArgs[cleanedArgs.length - 1] === "undefined") {
439
+ cleanedArgs.pop();
440
+ }
441
+ const result = await sendServiceRequest(this.config, path, cleanedArgs);
691
442
  return result;
692
443
  };
693
444
  /**
@@ -710,10 +461,11 @@ var TypeInfoORMClient = class {
710
461
  * @param primaryFieldValue - Primary field value to lookup.
711
462
  * @returns The retrieved item, if found.
712
463
  */
713
- read = async (typeName, primaryFieldValue) => {
464
+ read = async (typeName, primaryFieldValue, selectedFields) => {
714
465
  return await this.makeRequest("read" /* READ */, [
715
466
  typeName,
716
- primaryFieldValue
467
+ primaryFieldValue,
468
+ selectedFields
717
469
  ]);
718
470
  };
719
471
  /**
@@ -807,4 +559,23 @@ var TypeInfoORMClient = class {
807
559
  };
808
560
  };
809
561
 
810
- export { utils_exports as Utils };
562
+ // src/app/forms/core/mergeSuites.ts
563
+ var mergeSuites = (base, overrides) => {
564
+ return {
565
+ renderers: {
566
+ ...base.renderers ?? {},
567
+ ...overrides.renderers ?? {}
568
+ },
569
+ primitives: {
570
+ ...base.primitives ?? {},
571
+ ...overrides.primitives ?? {}
572
+ }
573
+ };
574
+ };
575
+ var withRendererOverride = (kind, renderer) => ({
576
+ renderers: {
577
+ [kind]: renderer
578
+ }
579
+ });
580
+
581
+ export { ApplicationStateContext, ApplicationStateProvider, TypeInfoORMClient, getApplicationStateIdentifier, getApplicationStateModified, getApplicationStateValue, getApplicationStateValueStructure, getChangedDependencyIndexes, getFullUrl, handleRequest, mergeSuites, requestHandlerFactory, sendServiceRequest, setApplicationStateModified, setApplicationStateValue, useApplicationStateLoader, useApplicationStateValue, useApplicationStateValueStructure, useController, useDebugDependencies, useTypeInfoORMAPI, withRendererOverride };