@resistdesign/voltra 0.0.0-alpha.0

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 (205) hide show
  1. package/README.md +86 -0
  2. package/package.json +103 -0
  3. package/src/api/DataAccessControl.d.ts +85 -0
  4. package/src/api/DataAccessControl.js +159 -0
  5. package/src/api/ORM/DACUtils.d.ts +60 -0
  6. package/src/api/ORM/DACUtils.js +197 -0
  7. package/src/api/ORM/ListItemUtils.d.ts +7 -0
  8. package/src/api/ORM/ListItemUtils.js +22 -0
  9. package/src/api/ORM/ORMRouteMap.d.ts +19 -0
  10. package/src/api/ORM/ORMRouteMap.js +82 -0
  11. package/src/api/ORM/TypeInfoORMService.d.ts +103 -0
  12. package/src/api/ORM/TypeInfoORMService.js +581 -0
  13. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.d.ts +63 -0
  14. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver/ConfigTypes.js +2 -0
  15. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.d.ts +36 -0
  16. package/src/api/ORM/drivers/DynamoDBDataItemDBDriver.js +282 -0
  17. package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.d.ts +90 -0
  18. package/src/api/ORM/drivers/S3FileItemDBDriver/ConfigTypes.js +2 -0
  19. package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.d.ts +45 -0
  20. package/src/api/ORM/drivers/S3FileItemDBDriver/S3FileDriver.js +127 -0
  21. package/src/api/ORM/drivers/S3FileItemDBDriver.d.ts +44 -0
  22. package/src/api/ORM/drivers/S3FileItemDBDriver.js +182 -0
  23. package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.d.ts +12 -0
  24. package/src/api/ORM/drivers/common/SupportedTypeInfoORMDBDrivers.js +20 -0
  25. package/src/api/ORM/drivers/common/Types.d.ts +77 -0
  26. package/src/api/ORM/drivers/common/Types.js +14 -0
  27. package/src/api/ORM/drivers/common/index.d.ts +2 -0
  28. package/src/api/ORM/drivers/common/index.js +18 -0
  29. package/src/api/ORM/drivers/index.d.ts +3 -0
  30. package/src/api/ORM/drivers/index.js +19 -0
  31. package/src/api/ORM/index.d.ts +4 -0
  32. package/src/api/ORM/index.js +43 -0
  33. package/src/api/Router/AWS.d.ts +26 -0
  34. package/src/api/Router/AWS.js +76 -0
  35. package/src/api/Router/Auth.d.ts +2 -0
  36. package/src/api/Router/Auth.js +9 -0
  37. package/src/api/Router/CORS.d.ts +6 -0
  38. package/src/api/Router/CORS.js +27 -0
  39. package/src/api/Router/Types.d.ts +71 -0
  40. package/src/api/Router/Types.js +2 -0
  41. package/src/api/Router/index.d.ts +18 -0
  42. package/src/api/Router/index.js +145 -0
  43. package/src/api/index.d.ts +3 -0
  44. package/src/api/index.js +39 -0
  45. package/src/app/index.d.ts +1 -0
  46. package/src/app/index.js +37 -0
  47. package/src/app/utils/ApplicationState.d.ts +52 -0
  48. package/src/app/utils/ApplicationState.js +86 -0
  49. package/src/app/utils/ApplicationStateLoader.d.ts +46 -0
  50. package/src/app/utils/ApplicationStateLoader.js +57 -0
  51. package/src/app/utils/Controller.d.ts +4 -0
  52. package/src/app/utils/Controller.js +47 -0
  53. package/src/app/utils/Debug.d.ts +4 -0
  54. package/src/app/utils/Debug.js +30 -0
  55. package/src/app/utils/EasyLayout.d.ts +49 -0
  56. package/src/app/utils/EasyLayout.js +122 -0
  57. package/src/app/utils/Route.d.ts +28 -0
  58. package/src/app/utils/Route.js +102 -0
  59. package/src/app/utils/Service.d.ts +12 -0
  60. package/src/app/utils/Service.js +34 -0
  61. package/src/app/utils/TypeInfoORMAPIUtils.d.ts +20 -0
  62. package/src/app/utils/TypeInfoORMAPIUtils.js +62 -0
  63. package/src/app/utils/TypeInfoORMClient.d.ts +24 -0
  64. package/src/app/utils/TypeInfoORMClient.js +69 -0
  65. package/src/app/utils/index.d.ts +8 -0
  66. package/src/app/utils/index.js +24 -0
  67. package/src/common/CommandLine/collectRequiredEnvironmentVariables.d.ts +1 -0
  68. package/src/common/CommandLine/collectRequiredEnvironmentVariables.js +16 -0
  69. package/src/common/HelperTypes.d.ts +3 -0
  70. package/src/common/HelperTypes.js +2 -0
  71. package/src/common/IdGeneration/getSimpleId.d.ts +4 -0
  72. package/src/common/IdGeneration/getSimpleId.js +16 -0
  73. package/src/common/IdGeneration/index.d.ts +1 -0
  74. package/src/common/IdGeneration/index.js +17 -0
  75. package/src/common/ItemRelationshipInfoTypes.d.ts +46 -0
  76. package/src/common/ItemRelationshipInfoTypes.js +20 -0
  77. package/src/common/ItemRelationships/ItemRelationshipValidation.d.ts +10 -0
  78. package/src/common/ItemRelationships/ItemRelationshipValidation.js +43 -0
  79. package/src/common/ItemRelationships/index.d.ts +1 -0
  80. package/src/common/ItemRelationships/index.js +17 -0
  81. package/src/common/Logging/Utils.d.ts +10 -0
  82. package/src/common/Logging/Utils.js +33 -0
  83. package/src/common/Logging/index.d.ts +1 -0
  84. package/src/common/Logging/index.js +17 -0
  85. package/src/common/Routing.d.ts +25 -0
  86. package/src/common/Routing.js +102 -0
  87. package/src/common/SearchTypes.d.ts +98 -0
  88. package/src/common/SearchTypes.js +39 -0
  89. package/src/common/SearchUtils.d.ts +22 -0
  90. package/src/common/SearchUtils.js +134 -0
  91. package/src/common/SearchValidation.d.ts +17 -0
  92. package/src/common/SearchValidation.js +90 -0
  93. package/src/common/Storyboarding/Types.d.ts +25 -0
  94. package/src/common/Storyboarding/Types.js +2 -0
  95. package/src/common/StringTransformers.d.ts +17 -0
  96. package/src/common/StringTransformers.js +36 -0
  97. package/src/common/Testing/CLI.d.ts +2 -0
  98. package/src/common/Testing/CLI.js +56 -0
  99. package/src/common/Testing/Types.d.ts +117 -0
  100. package/src/common/Testing/Types.js +19 -0
  101. package/src/common/Testing/Utils.d.ts +48 -0
  102. package/src/common/Testing/Utils.js +334 -0
  103. package/src/common/Testing/index.d.ts +2 -0
  104. package/src/common/Testing/index.js +18 -0
  105. package/src/common/TypeInfoDataItemUtils.d.ts +10 -0
  106. package/src/common/TypeInfoDataItemUtils.js +55 -0
  107. package/src/common/TypeInfoORM/Types.d.ts +76 -0
  108. package/src/common/TypeInfoORM/Types.js +55 -0
  109. package/src/common/TypeInfoORM/index.d.ts +1 -0
  110. package/src/common/TypeInfoORM/index.js +17 -0
  111. package/src/common/TypeParsing/Constants.d.ts +1 -0
  112. package/src/common/TypeParsing/Constants.js +4 -0
  113. package/src/common/TypeParsing/ParsingUtils/Constants.d.ts +5 -0
  114. package/src/common/TypeParsing/ParsingUtils/Constants.js +8 -0
  115. package/src/common/TypeParsing/ParsingUtils/checkType.d.ts +8 -0
  116. package/src/common/TypeParsing/ParsingUtils/checkType.js +46 -0
  117. package/src/common/TypeParsing/ParsingUtils/checkUnionType.d.ts +6 -0
  118. package/src/common/TypeParsing/ParsingUtils/checkUnionType.js +15 -0
  119. package/src/common/TypeParsing/ParsingUtils/extractCommentTags.d.ts +2 -0
  120. package/src/common/TypeParsing/ParsingUtils/extractCommentTags.js +105 -0
  121. package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.d.ts +6 -0
  122. package/src/common/TypeParsing/ParsingUtils/extractLiteralValues.js +42 -0
  123. package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.d.ts +8 -0
  124. package/src/common/TypeParsing/ParsingUtils/extractTypeDetails.js +14 -0
  125. package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.d.ts +5 -0
  126. package/src/common/TypeParsing/ParsingUtils/getPrimaryFieldForTypeInfo.js +27 -0
  127. package/src/common/TypeParsing/ParsingUtils/getTypeInfo.d.ts +3 -0
  128. package/src/common/TypeParsing/ParsingUtils/getTypeInfo.js +27 -0
  129. package/src/common/TypeParsing/ParsingUtils/getTypeInfoField.d.ts +3 -0
  130. package/src/common/TypeParsing/ParsingUtils/getTypeInfoField.js +44 -0
  131. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.d.ts +4 -0
  132. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromAliasType.js +28 -0
  133. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.d.ts +4 -0
  134. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromFieldFilter.js +105 -0
  135. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.d.ts +4 -0
  136. package/src/common/TypeParsing/ParsingUtils/getTypeInfoFromTypeAlias.js +20 -0
  137. package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.d.ts +3 -0
  138. package/src/common/TypeParsing/ParsingUtils/getTypeKeyword.js +17 -0
  139. package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.d.ts +4 -0
  140. package/src/common/TypeParsing/ParsingUtils/getUnionOrIntersectionTypeInfo.js +49 -0
  141. package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.d.ts +2 -0
  142. package/src/common/TypeParsing/ParsingUtils/getUnionOrLiteralStringValues.js +24 -0
  143. package/src/common/TypeParsing/TypeInfo.d.ts +142 -0
  144. package/src/common/TypeParsing/TypeInfo.js +13 -0
  145. package/src/common/TypeParsing/TypeMapping.d.ts +9 -0
  146. package/src/common/TypeParsing/TypeMapping.js +32 -0
  147. package/src/common/TypeParsing/TypeParsing.d.ts +5 -0
  148. package/src/common/TypeParsing/TypeParsing.js +39 -0
  149. package/src/common/TypeParsing/Utils.d.ts +21 -0
  150. package/src/common/TypeParsing/Utils.js +94 -0
  151. package/src/common/TypeParsing/Validation.d.ts +92 -0
  152. package/src/common/TypeParsing/Validation.js +340 -0
  153. package/src/common/TypeParsing/index.d.ts +5 -0
  154. package/src/common/TypeParsing/index.js +44 -0
  155. package/src/common/index.d.ts +11 -0
  156. package/src/common/index.js +47 -0
  157. package/src/iac/SimpleCFT.d.ts +48 -0
  158. package/src/iac/SimpleCFT.js +82 -0
  159. package/src/iac/index.d.ts +9 -0
  160. package/src/iac/index.js +48 -0
  161. package/src/iac/packs/auth/user-management.d.ts +14 -0
  162. package/src/iac/packs/auth/user-management.js +302 -0
  163. package/src/iac/packs/auth.d.ts +19 -0
  164. package/src/iac/packs/auth.js +47 -0
  165. package/src/iac/packs/build/utils.d.ts +100 -0
  166. package/src/iac/packs/build/utils.js +23 -0
  167. package/src/iac/packs/build.d.ts +29 -0
  168. package/src/iac/packs/build.js +217 -0
  169. package/src/iac/packs/cdn.d.ts +12 -0
  170. package/src/iac/packs/cdn.js +113 -0
  171. package/src/iac/packs/cloud-function.d.ts +17 -0
  172. package/src/iac/packs/cloud-function.js +69 -0
  173. package/src/iac/packs/database.d.ts +29 -0
  174. package/src/iac/packs/database.js +27 -0
  175. package/src/iac/packs/dns.d.ts +13 -0
  176. package/src/iac/packs/dns.js +26 -0
  177. package/src/iac/packs/file-storage.d.ts +14 -0
  178. package/src/iac/packs/file-storage.js +71 -0
  179. package/src/iac/packs/gateway.d.ts +27 -0
  180. package/src/iac/packs/gateway.js +342 -0
  181. package/src/iac/packs/index.d.ts +11 -0
  182. package/src/iac/packs/index.js +27 -0
  183. package/src/iac/packs/repo.d.ts +10 -0
  184. package/src/iac/packs/repo.js +34 -0
  185. package/src/iac/packs/ssl-certificate.d.ts +10 -0
  186. package/src/iac/packs/ssl-certificate.js +36 -0
  187. package/src/iac/types/CloudFormationResourceSpecification.d.ts +2 -0
  188. package/src/iac/types/Constants.d.ts +9 -0
  189. package/src/iac/types/Constants.js +20 -0
  190. package/src/iac/types/IaCTypes.d.ts +234994 -0
  191. package/src/iac/types/IaCTypes.js +14 -0
  192. package/src/iac/types/Renderers.d.ts +12 -0
  193. package/src/iac/types/Renderers.js +112 -0
  194. package/src/iac/types/Types.d.ts +37 -0
  195. package/src/iac/types/Types.js +2 -0
  196. package/src/iac/types/Utils.d.ts +2 -0
  197. package/src/iac/types/Utils.js +60 -0
  198. package/src/iac/types/generate.d.ts +1 -0
  199. package/src/iac/types/generate.js +31 -0
  200. package/src/iac/utils/index.d.ts +36 -0
  201. package/src/iac/utils/index.js +105 -0
  202. package/src/iac/utils/patch-utils.d.ts +15 -0
  203. package/src/iac/utils/patch-utils.js +62 -0
  204. package/src/index.d.ts +178 -0
  205. package/src/index.js +214 -0
package/src/index.d.ts ADDED
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Route RPC back-end API requests to the appropriate functions with context about authentication, the request itself and more.
3
+ *
4
+ * @usage `import * from "@resistdesign/voltra/api";`
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * export const handler = async (event: any): Promise<CloudFunctionResponse> =>
9
+ * handleCloudFunctionEvent(
10
+ * event,
11
+ * AWS.normalizeCloudFunctionEvent,
12
+ * addRoutesToRouteMap({}, [
13
+ * {
14
+ * path: "",
15
+ * authConfig: {
16
+ * anyAuthorized: true,
17
+ * },
18
+ * handler: async () => 'WELCOME!!!!',
19
+ * }
20
+ * ]),
21
+ * [
22
+ * process.env.CLIENT_ORIGIN as string,
23
+ * /https:\\/\\/example\\.com(:.*?$|\\/.*$|$)/gim,
24
+ * ]
25
+ * );
26
+ * ```
27
+ * */
28
+ export * as API from "./api";
29
+ /**
30
+ * Build front-end applications with React/TypeScript, layout systems, form generation, RPC requests, easy state management and more.
31
+ *
32
+ * @usage `import * from "@resistdesign/voltra/app";`
33
+ *
34
+ * @see {@link getEasyLayout}, {@link TypeInfoApplication} and {@link useApplicationStateLoader} for some great starting points.
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * const APP_STATE_IDENTIFIERS = {
39
+ * LOGIN: {
40
+ * USERNAME: {},
41
+ * PASSWORD: {},
42
+ * LOGGED_IN: {},
43
+ * },
44
+ * };
45
+ *
46
+ * const LOGIN_SERVICE_CONFIG = {
47
+ * protocol: "https",
48
+ * domain: "example.com",
49
+ * basePath: "/api",
50
+ * };
51
+ * const LOGIN_RPC: RemoteProcedureCall = {
52
+ * serviceConfig: LOGIN_SERVICE_CONFIG,
53
+ * path: "/login",
54
+ * args: [],
55
+ * };
56
+ *
57
+ * const {
58
+ * layout: LoginLayout,
59
+ * areas: { Header, Side, Main },
60
+ * } = getEasyLayout()`
61
+ * header header, 1fr
62
+ * side main, 3fr
63
+ * // 1fr 3fr
64
+ * `;
65
+ *
66
+ * export const Login: FC = () => {
67
+ * const {
68
+ * valueStructure: {
69
+ * username: username = "",
70
+ * password: password = "",
71
+ * loggedIn: loggedIn = false,
72
+ * },
73
+ * onChangeStructure: {
74
+ * username: setUsername,
75
+ * password: setPassword,
76
+ * loggedIn: setLoggedIn,
77
+ * },
78
+ * } = useApplicationStateValueStructure<{
79
+ * username: string;
80
+ * password: string;
81
+ * loggedIn: boolean;
82
+ * }>({
83
+ * username: APP_STATE_IDENTIFIERS.LOGIN.USERNAME,
84
+ * password: APP_STATE_IDENTIFIERS.LOGIN.PASSWORD,
85
+ * loggedIn: APP_STATE_IDENTIFIERS.LOGIN.LOGGED_IN,
86
+ * });
87
+ * const onUsernameChange = useCallback(
88
+ * (event: ReactChangeEvent<HTMLInputElement>) => {
89
+ * setUsername(event.target.value);
90
+ * },
91
+ * [setUsername],
92
+ * );
93
+ * const onPasswordChange = useCallback(
94
+ * (event: ReactChangeEvent<HTMLInputElement>) => {
95
+ * setPassword(event.target.value);
96
+ * },
97
+ * [setPassword],
98
+ * );
99
+ * const { loading: loadingLogin, makeRemoteProcedureCall } =
100
+ * useApplicationStateLoader({
101
+ * identifier: APP_STATE_IDENTIFIERS.LOGIN.LOGGED_IN,
102
+ * remoteProcedureCall: LOGIN_RPC,
103
+ * manual: true,
104
+ * });
105
+ * const onSubmit = useCallback(() => {
106
+ * makeRemoteProcedureCall(username, password);
107
+ * }, [username, password, makeRemoteProcedureCall]);
108
+ *
109
+ * return (
110
+ * <LoginLayout>
111
+ * <Header>
112
+ * <h1>Login</h1>
113
+ * </Header>
114
+ * <Side>
115
+ * <h5>Login here:</h5>
116
+ * </Side>
117
+ * <Main>
118
+ * {loadingLogin ? (
119
+ * <>Loading...</>
120
+ * ) : loggedIn ? (
121
+ * <>Logged In!</>
122
+ * ) : (
123
+ * <BaseForm onSubmit={onSubmit}>
124
+ * <input
125
+ * type="text"
126
+ * placeholder="Username"
127
+ * value={username}
128
+ * onChange={onUsernameChange}
129
+ * />
130
+ * <br />
131
+ * <input
132
+ * type="password"
133
+ * placeholder="Password"
134
+ * value={password}
135
+ * onChange={onPasswordChange}
136
+ * />
137
+ * <br />
138
+ * <br />
139
+ * <button type="submit">Log In</button>
140
+ * </BaseForm>
141
+ * )}
142
+ * </Main>
143
+ * </LoginLayout>
144
+ * );
145
+ * };
146
+ * ```
147
+ * */
148
+ export * as App from "./app";
149
+ /**
150
+ * Build infrastructure as code with reusable components and utilities.
151
+ *
152
+ * @usage Start with `SimpleCFT`, add packs and use utilities as needed.
153
+ *
154
+ * `import * from "@resistdesign/voltra/iac";`
155
+ *
156
+ * @example
157
+ * ```typescript
158
+ * const ctf = new SimpleCFT()
159
+ * .applyPack(
160
+ * addDNS,
161
+ * {
162
+ * hostedZoneIdParameterName: "<YOUR_INFO_HERE>",
163
+ * domainNameParameterName: "<YOUR_INFO_HERE>",
164
+ * localUIDevelopmentDomainName: "<YOUR_INFO_HERE>",
165
+ * localUIDevelopmentIPAddress: "<YOUR_INFO_HERE>",
166
+ * }
167
+ * );
168
+ *
169
+ * console.log(cft.template);
170
+ * ```
171
+ * */
172
+ export * as IaC from "./iac";
173
+ /**
174
+ * A set of common utilities for use in all layers of the application stack.
175
+ *
176
+ * @usage `import * from "@resistdesign/voltra/common";`
177
+ * */
178
+ export * as Common from "./common";
package/src/index.js ADDED
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.Common = exports.IaC = exports.App = exports.API = void 0;
37
+ /**
38
+ * Route RPC back-end API requests to the appropriate functions with context about authentication, the request itself and more.
39
+ *
40
+ * @usage `import * from "@resistdesign/voltra/api";`
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * export const handler = async (event: any): Promise<CloudFunctionResponse> =>
45
+ * handleCloudFunctionEvent(
46
+ * event,
47
+ * AWS.normalizeCloudFunctionEvent,
48
+ * addRoutesToRouteMap({}, [
49
+ * {
50
+ * path: "",
51
+ * authConfig: {
52
+ * anyAuthorized: true,
53
+ * },
54
+ * handler: async () => 'WELCOME!!!!',
55
+ * }
56
+ * ]),
57
+ * [
58
+ * process.env.CLIENT_ORIGIN as string,
59
+ * /https:\\/\\/example\\.com(:.*?$|\\/.*$|$)/gim,
60
+ * ]
61
+ * );
62
+ * ```
63
+ * */
64
+ exports.API = __importStar(require("./api"));
65
+ /**
66
+ * Build front-end applications with React/TypeScript, layout systems, form generation, RPC requests, easy state management and more.
67
+ *
68
+ * @usage `import * from "@resistdesign/voltra/app";`
69
+ *
70
+ * @see {@link getEasyLayout}, {@link TypeInfoApplication} and {@link useApplicationStateLoader} for some great starting points.
71
+ *
72
+ * @example
73
+ * ```tsx
74
+ * const APP_STATE_IDENTIFIERS = {
75
+ * LOGIN: {
76
+ * USERNAME: {},
77
+ * PASSWORD: {},
78
+ * LOGGED_IN: {},
79
+ * },
80
+ * };
81
+ *
82
+ * const LOGIN_SERVICE_CONFIG = {
83
+ * protocol: "https",
84
+ * domain: "example.com",
85
+ * basePath: "/api",
86
+ * };
87
+ * const LOGIN_RPC: RemoteProcedureCall = {
88
+ * serviceConfig: LOGIN_SERVICE_CONFIG,
89
+ * path: "/login",
90
+ * args: [],
91
+ * };
92
+ *
93
+ * const {
94
+ * layout: LoginLayout,
95
+ * areas: { Header, Side, Main },
96
+ * } = getEasyLayout()`
97
+ * header header, 1fr
98
+ * side main, 3fr
99
+ * // 1fr 3fr
100
+ * `;
101
+ *
102
+ * export const Login: FC = () => {
103
+ * const {
104
+ * valueStructure: {
105
+ * username: username = "",
106
+ * password: password = "",
107
+ * loggedIn: loggedIn = false,
108
+ * },
109
+ * onChangeStructure: {
110
+ * username: setUsername,
111
+ * password: setPassword,
112
+ * loggedIn: setLoggedIn,
113
+ * },
114
+ * } = useApplicationStateValueStructure<{
115
+ * username: string;
116
+ * password: string;
117
+ * loggedIn: boolean;
118
+ * }>({
119
+ * username: APP_STATE_IDENTIFIERS.LOGIN.USERNAME,
120
+ * password: APP_STATE_IDENTIFIERS.LOGIN.PASSWORD,
121
+ * loggedIn: APP_STATE_IDENTIFIERS.LOGIN.LOGGED_IN,
122
+ * });
123
+ * const onUsernameChange = useCallback(
124
+ * (event: ReactChangeEvent<HTMLInputElement>) => {
125
+ * setUsername(event.target.value);
126
+ * },
127
+ * [setUsername],
128
+ * );
129
+ * const onPasswordChange = useCallback(
130
+ * (event: ReactChangeEvent<HTMLInputElement>) => {
131
+ * setPassword(event.target.value);
132
+ * },
133
+ * [setPassword],
134
+ * );
135
+ * const { loading: loadingLogin, makeRemoteProcedureCall } =
136
+ * useApplicationStateLoader({
137
+ * identifier: APP_STATE_IDENTIFIERS.LOGIN.LOGGED_IN,
138
+ * remoteProcedureCall: LOGIN_RPC,
139
+ * manual: true,
140
+ * });
141
+ * const onSubmit = useCallback(() => {
142
+ * makeRemoteProcedureCall(username, password);
143
+ * }, [username, password, makeRemoteProcedureCall]);
144
+ *
145
+ * return (
146
+ * <LoginLayout>
147
+ * <Header>
148
+ * <h1>Login</h1>
149
+ * </Header>
150
+ * <Side>
151
+ * <h5>Login here:</h5>
152
+ * </Side>
153
+ * <Main>
154
+ * {loadingLogin ? (
155
+ * <>Loading...</>
156
+ * ) : loggedIn ? (
157
+ * <>Logged In!</>
158
+ * ) : (
159
+ * <BaseForm onSubmit={onSubmit}>
160
+ * <input
161
+ * type="text"
162
+ * placeholder="Username"
163
+ * value={username}
164
+ * onChange={onUsernameChange}
165
+ * />
166
+ * <br />
167
+ * <input
168
+ * type="password"
169
+ * placeholder="Password"
170
+ * value={password}
171
+ * onChange={onPasswordChange}
172
+ * />
173
+ * <br />
174
+ * <br />
175
+ * <button type="submit">Log In</button>
176
+ * </BaseForm>
177
+ * )}
178
+ * </Main>
179
+ * </LoginLayout>
180
+ * );
181
+ * };
182
+ * ```
183
+ * */
184
+ exports.App = __importStar(require("./app"));
185
+ /**
186
+ * Build infrastructure as code with reusable components and utilities.
187
+ *
188
+ * @usage Start with `SimpleCFT`, add packs and use utilities as needed.
189
+ *
190
+ * `import * from "@resistdesign/voltra/iac";`
191
+ *
192
+ * @example
193
+ * ```typescript
194
+ * const ctf = new SimpleCFT()
195
+ * .applyPack(
196
+ * addDNS,
197
+ * {
198
+ * hostedZoneIdParameterName: "<YOUR_INFO_HERE>",
199
+ * domainNameParameterName: "<YOUR_INFO_HERE>",
200
+ * localUIDevelopmentDomainName: "<YOUR_INFO_HERE>",
201
+ * localUIDevelopmentIPAddress: "<YOUR_INFO_HERE>",
202
+ * }
203
+ * );
204
+ *
205
+ * console.log(cft.template);
206
+ * ```
207
+ * */
208
+ exports.IaC = __importStar(require("./iac"));
209
+ /**
210
+ * A set of common utilities for use in all layers of the application stack.
211
+ *
212
+ * @usage `import * from "@resistdesign/voltra/common";`
213
+ * */
214
+ exports.Common = __importStar(require("./common"));