@cratis/arc.react 18.4.3 → 18.6.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 (161) hide show
  1. package/commands/for_CommandScopeImplementation/FakeCommand.ts +25 -26
  2. package/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.ts +2 -2
  3. package/dist/cjs/commands/for_CommandScopeImplementation/FakeCommand.d.ts +23 -0
  4. package/dist/cjs/commands/for_CommandScopeImplementation/FakeCommand.d.ts.map +1 -0
  5. package/dist/cjs/commands/for_CommandScopeImplementation/when_executing_with_three_commands_were_two_having_changes.d.ts +2 -0
  6. package/dist/cjs/commands/for_CommandScopeImplementation/when_executing_with_three_commands_were_two_having_changes.d.ts.map +1 -0
  7. package/dist/cjs/commands/for_CommandScopeImplementation/when_none_of_the_added_commands_has_changes.d.ts +2 -0
  8. package/dist/cjs/commands/for_CommandScopeImplementation/when_none_of_the_added_commands_has_changes.d.ts.map +1 -0
  9. package/dist/cjs/commands/for_CommandScopeImplementation/when_one_of_the_added_commands_has_changes.d.ts +2 -0
  10. package/dist/cjs/commands/for_CommandScopeImplementation/when_one_of_the_added_commands_has_changes.d.ts.map +1 -0
  11. package/dist/cjs/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.d.ts +2 -0
  12. package/dist/cjs/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.d.ts.map +1 -0
  13. package/dist/cjs/commands/for_CommandScopeImplementation/when_reverting_with_three_commands_were_two_having_changes.d.ts +2 -0
  14. package/dist/cjs/commands/for_CommandScopeImplementation/when_reverting_with_three_commands_were_two_having_changes.d.ts.map +1 -0
  15. package/dist/cjs/commands/for_CommandScopeImplementation/when_there_are_no_commands.d.ts +2 -0
  16. package/dist/cjs/commands/for_CommandScopeImplementation/when_there_are_no_commands.d.ts.map +1 -0
  17. package/dist/cjs/commands/for_useCommand/FakeCommand.d.ts +17 -0
  18. package/dist/cjs/commands/for_useCommand/FakeCommand.d.ts.map +1 -0
  19. package/dist/cjs/commands/for_useCommand/when_creating_instance.d.ts +2 -0
  20. package/dist/cjs/commands/for_useCommand/when_creating_instance.d.ts.map +1 -0
  21. package/dist/cjs/commands/for_useCommand/when_creating_instance_with_initial_values.d.ts +2 -0
  22. package/dist/cjs/commands/for_useCommand/when_creating_instance_with_initial_values.d.ts.map +1 -0
  23. package/dist/cjs/commands/for_useCommand/when_creating_instance_without_optional_context_values.d.ts +2 -0
  24. package/dist/cjs/commands/for_useCommand/when_creating_instance_without_optional_context_values.d.ts.map +1 -0
  25. package/dist/cjs/identity/IdentityProvider.d.ts +8 -1
  26. package/dist/cjs/identity/IdentityProvider.d.ts.map +1 -1
  27. package/dist/cjs/identity/IdentityProvider.js +14 -5
  28. package/dist/cjs/identity/IdentityProvider.js.map +1 -1
  29. package/dist/cjs/identity/for_IdentityProvider/when_refreshing_identity.d.ts +2 -0
  30. package/dist/cjs/identity/for_IdentityProvider/when_refreshing_identity.d.ts.map +1 -0
  31. package/dist/cjs/identity/useIdentity.d.ts +2 -0
  32. package/dist/cjs/identity/useIdentity.d.ts.map +1 -1
  33. package/dist/cjs/identity/useIdentity.js +8 -5
  34. package/dist/cjs/identity/useIdentity.js.map +1 -1
  35. package/dist/cjs/queries/for_useObservableQuery/FakeObservableQuery.d.ts +19 -0
  36. package/dist/cjs/queries/for_useObservableQuery/FakeObservableQuery.d.ts.map +1 -0
  37. package/dist/cjs/queries/for_useObservableQuery/when_creating_instance.d.ts +2 -0
  38. package/dist/cjs/queries/for_useObservableQuery/when_creating_instance.d.ts.map +1 -0
  39. package/dist/cjs/queries/for_useQuery/FakeQuery.d.ts +14 -0
  40. package/dist/cjs/queries/for_useQuery/FakeQuery.d.ts.map +1 -0
  41. package/dist/cjs/queries/for_useQuery/when_creating_instance.d.ts +2 -0
  42. package/dist/cjs/queries/for_useQuery/when_creating_instance.d.ts.map +1 -0
  43. package/dist/cjs/queries/for_useQuery/when_creating_instance_with_sorting.d.ts +2 -0
  44. package/dist/cjs/queries/for_useQuery/when_creating_instance_with_sorting.d.ts.map +1 -0
  45. package/dist/cjs/queries/for_useQuery/when_creating_instance_without_optional_context_values.d.ts +2 -0
  46. package/dist/cjs/queries/for_useQuery/when_creating_instance_without_optional_context_values.d.ts.map +1 -0
  47. package/dist/cjs/queries/for_useQueryWithPaging/when_creating_instance_with_paging.d.ts +2 -0
  48. package/dist/cjs/queries/for_useQueryWithPaging/when_creating_instance_with_paging.d.ts.map +1 -0
  49. package/dist/cjs/queries/useObservableQuery.js +1 -1
  50. package/dist/cjs/queries/useObservableQuery.js.map +1 -1
  51. package/dist/esm/commands/for_CommandScopeImplementation/FakeCommand.d.ts +23 -0
  52. package/dist/esm/commands/for_CommandScopeImplementation/FakeCommand.d.ts.map +1 -0
  53. package/dist/esm/commands/for_CommandScopeImplementation/FakeCommand.js +49 -0
  54. package/dist/esm/commands/for_CommandScopeImplementation/FakeCommand.js.map +1 -0
  55. package/dist/esm/commands/for_CommandScopeImplementation/when_executing_with_three_commands_were_two_having_changes.d.ts +2 -0
  56. package/dist/esm/commands/for_CommandScopeImplementation/when_executing_with_three_commands_were_two_having_changes.d.ts.map +1 -0
  57. package/dist/esm/commands/for_CommandScopeImplementation/when_executing_with_three_commands_were_two_having_changes.js +17 -0
  58. package/dist/esm/commands/for_CommandScopeImplementation/when_executing_with_three_commands_were_two_having_changes.js.map +1 -0
  59. package/dist/esm/commands/for_CommandScopeImplementation/when_none_of_the_added_commands_has_changes.d.ts +2 -0
  60. package/dist/esm/commands/for_CommandScopeImplementation/when_none_of_the_added_commands_has_changes.d.ts.map +1 -0
  61. package/dist/esm/commands/for_CommandScopeImplementation/when_none_of_the_added_commands_has_changes.js +13 -0
  62. package/dist/esm/commands/for_CommandScopeImplementation/when_none_of_the_added_commands_has_changes.js.map +1 -0
  63. package/dist/esm/commands/for_CommandScopeImplementation/when_one_of_the_added_commands_has_changes.d.ts +2 -0
  64. package/dist/esm/commands/for_CommandScopeImplementation/when_one_of_the_added_commands_has_changes.d.ts.map +1 -0
  65. package/dist/esm/commands/for_CommandScopeImplementation/when_one_of_the_added_commands_has_changes.js +13 -0
  66. package/dist/esm/commands/for_CommandScopeImplementation/when_one_of_the_added_commands_has_changes.js.map +1 -0
  67. package/dist/esm/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.d.ts +2 -0
  68. package/dist/esm/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.d.ts.map +1 -0
  69. package/dist/esm/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.js +18 -0
  70. package/dist/esm/commands/for_CommandScopeImplementation/when_property_changes_on_added_command.js.map +1 -0
  71. package/dist/esm/commands/for_CommandScopeImplementation/when_reverting_with_three_commands_were_two_having_changes.d.ts +2 -0
  72. package/dist/esm/commands/for_CommandScopeImplementation/when_reverting_with_three_commands_were_two_having_changes.d.ts.map +1 -0
  73. package/dist/esm/commands/for_CommandScopeImplementation/when_reverting_with_three_commands_were_two_having_changes.js +17 -0
  74. package/dist/esm/commands/for_CommandScopeImplementation/when_reverting_with_three_commands_were_two_having_changes.js.map +1 -0
  75. package/dist/esm/commands/for_CommandScopeImplementation/when_there_are_no_commands.d.ts +2 -0
  76. package/dist/esm/commands/for_CommandScopeImplementation/when_there_are_no_commands.d.ts.map +1 -0
  77. package/dist/esm/commands/for_CommandScopeImplementation/when_there_are_no_commands.js +6 -0
  78. package/dist/esm/commands/for_CommandScopeImplementation/when_there_are_no_commands.js.map +1 -0
  79. package/dist/esm/commands/for_useCommand/FakeCommand.d.ts +17 -0
  80. package/dist/esm/commands/for_useCommand/FakeCommand.d.ts.map +1 -0
  81. package/dist/esm/commands/for_useCommand/FakeCommand.js +18 -0
  82. package/dist/esm/commands/for_useCommand/FakeCommand.js.map +1 -0
  83. package/dist/esm/commands/for_useCommand/when_creating_instance.d.ts +2 -0
  84. package/dist/esm/commands/for_useCommand/when_creating_instance.d.ts.map +1 -0
  85. package/dist/esm/commands/for_useCommand/when_creating_instance.js +28 -0
  86. package/dist/esm/commands/for_useCommand/when_creating_instance.js.map +1 -0
  87. package/dist/esm/commands/for_useCommand/when_creating_instance_with_initial_values.d.ts +2 -0
  88. package/dist/esm/commands/for_useCommand/when_creating_instance_with_initial_values.d.ts.map +1 -0
  89. package/dist/esm/commands/for_useCommand/when_creating_instance_with_initial_values.js +24 -0
  90. package/dist/esm/commands/for_useCommand/when_creating_instance_with_initial_values.js.map +1 -0
  91. package/dist/esm/commands/for_useCommand/when_creating_instance_without_optional_context_values.d.ts +2 -0
  92. package/dist/esm/commands/for_useCommand/when_creating_instance_without_optional_context_values.d.ts.map +1 -0
  93. package/dist/esm/commands/for_useCommand/when_creating_instance_without_optional_context_values.js +24 -0
  94. package/dist/esm/commands/for_useCommand/when_creating_instance_without_optional_context_values.js.map +1 -0
  95. package/dist/esm/for_Bindings/given/bindings_context.d.ts +4 -0
  96. package/dist/esm/for_Bindings/given/bindings_context.d.ts.map +1 -0
  97. package/dist/esm/for_Bindings/given/bindings_context.js +5 -0
  98. package/dist/esm/for_Bindings/given/bindings_context.js.map +1 -0
  99. package/dist/esm/for_Bindings/when_initializing_bindings.d.ts +2 -0
  100. package/dist/esm/for_Bindings/when_initializing_bindings.d.ts.map +1 -0
  101. package/dist/esm/for_Bindings/when_initializing_bindings.js +24 -0
  102. package/dist/esm/for_Bindings/when_initializing_bindings.js.map +1 -0
  103. package/dist/esm/for_Bindings/when_initializing_bindings_without_optional_parameters.d.ts +2 -0
  104. package/dist/esm/for_Bindings/when_initializing_bindings_without_optional_parameters.d.ts.map +1 -0
  105. package/dist/esm/for_Bindings/when_initializing_bindings_without_optional_parameters.js +24 -0
  106. package/dist/esm/for_Bindings/when_initializing_bindings_without_optional_parameters.js.map +1 -0
  107. package/dist/esm/identity/IdentityProvider.d.ts +8 -1
  108. package/dist/esm/identity/IdentityProvider.d.ts.map +1 -1
  109. package/dist/esm/identity/IdentityProvider.js +14 -5
  110. package/dist/esm/identity/IdentityProvider.js.map +1 -1
  111. package/dist/esm/identity/for_IdentityProvider/when_refreshing_identity.d.ts +2 -0
  112. package/dist/esm/identity/for_IdentityProvider/when_refreshing_identity.d.ts.map +1 -0
  113. package/dist/esm/identity/for_IdentityProvider/when_refreshing_identity.js +47 -0
  114. package/dist/esm/identity/for_IdentityProvider/when_refreshing_identity.js.map +1 -0
  115. package/dist/esm/identity/useIdentity.d.ts +2 -0
  116. package/dist/esm/identity/useIdentity.d.ts.map +1 -1
  117. package/dist/esm/identity/useIdentity.js +8 -5
  118. package/dist/esm/identity/useIdentity.js.map +1 -1
  119. package/dist/esm/queries/for_useObservableQuery/FakeObservableQuery.d.ts +19 -0
  120. package/dist/esm/queries/for_useObservableQuery/FakeObservableQuery.d.ts.map +1 -0
  121. package/dist/esm/queries/for_useObservableQuery/FakeObservableQuery.js +25 -0
  122. package/dist/esm/queries/for_useObservableQuery/FakeObservableQuery.js.map +1 -0
  123. package/dist/esm/queries/for_useObservableQuery/when_creating_instance.d.ts +2 -0
  124. package/dist/esm/queries/for_useObservableQuery/when_creating_instance.d.ts.map +1 -0
  125. package/dist/esm/queries/for_useObservableQuery/when_creating_instance.js +66 -0
  126. package/dist/esm/queries/for_useObservableQuery/when_creating_instance.js.map +1 -0
  127. package/dist/esm/queries/for_useQuery/FakeQuery.d.ts +14 -0
  128. package/dist/esm/queries/for_useQuery/FakeQuery.d.ts.map +1 -0
  129. package/dist/esm/queries/for_useQuery/FakeQuery.js +13 -0
  130. package/dist/esm/queries/for_useQuery/FakeQuery.js.map +1 -0
  131. package/dist/esm/queries/for_useQuery/when_creating_instance.d.ts +2 -0
  132. package/dist/esm/queries/for_useQuery/when_creating_instance.d.ts.map +1 -0
  133. package/dist/esm/queries/for_useQuery/when_creating_instance.js +48 -0
  134. package/dist/esm/queries/for_useQuery/when_creating_instance.js.map +1 -0
  135. package/dist/esm/queries/for_useQuery/when_creating_instance_with_sorting.d.ts +2 -0
  136. package/dist/esm/queries/for_useQuery/when_creating_instance_with_sorting.d.ts.map +1 -0
  137. package/dist/esm/queries/for_useQuery/when_creating_instance_with_sorting.js +40 -0
  138. package/dist/esm/queries/for_useQuery/when_creating_instance_with_sorting.js.map +1 -0
  139. package/dist/esm/queries/for_useQuery/when_creating_instance_without_optional_context_values.d.ts +2 -0
  140. package/dist/esm/queries/for_useQuery/when_creating_instance_without_optional_context_values.d.ts.map +1 -0
  141. package/dist/esm/queries/for_useQuery/when_creating_instance_without_optional_context_values.js +44 -0
  142. package/dist/esm/queries/for_useQuery/when_creating_instance_without_optional_context_values.js.map +1 -0
  143. package/dist/esm/queries/for_useQueryWithPaging/when_creating_instance_with_paging.d.ts +2 -0
  144. package/dist/esm/queries/for_useQueryWithPaging/when_creating_instance_with_paging.d.ts.map +1 -0
  145. package/dist/esm/queries/for_useQueryWithPaging/when_creating_instance_with_paging.js +51 -0
  146. package/dist/esm/queries/for_useQueryWithPaging/when_creating_instance_with_paging.js.map +1 -0
  147. package/dist/esm/queries/useObservableQuery.js +1 -1
  148. package/dist/esm/queries/useObservableQuery.js.map +1 -1
  149. package/dist/esm/tsconfig.tsbuildinfo +1 -1
  150. package/global.d.ts +11 -0
  151. package/identity/IdentityProvider.tsx +23 -6
  152. package/identity/for_IdentityProvider/when_refreshing_identity.ts +4 -3
  153. package/identity/useIdentity.ts +29 -5
  154. package/package.json +2 -2
  155. package/queries/for_useObservableQuery/FakeObservableQuery.ts +43 -0
  156. package/queries/for_useObservableQuery/when_creating_instance.ts +97 -0
  157. package/queries/for_useQuery/when_creating_instance.ts +6 -2
  158. package/queries/for_useQuery/when_creating_instance_with_sorting.ts +6 -4
  159. package/queries/for_useQuery/when_creating_instance_without_optional_context_values.ts +6 -2
  160. package/queries/for_useQueryWithPaging/when_creating_instance_with_paging.ts +6 -2
  161. package/queries/useObservableQuery.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useIdentity.d.ts","sourceRoot":"","sources":["../../../identity/useIdentity.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOjD,wBAAgB,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAMhH"}
1
+ {"version":3,"file":"useIdentity.d.ts","sourceRoot":"","sources":["../../../identity/useIdentity.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAOjD,wBAAgB,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAQlH,wBAAgB,WAAW,CAAC,QAAQ,GAAG,MAAM,EAAE,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,cAAc,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC"}
@@ -1,12 +1,15 @@
1
1
  import React__default from 'react';
2
2
  import { IdentityProviderContext } from './IdentityProvider.js';
3
3
 
4
- function useIdentity(defaultDetails) {
5
- const context = React__default.useContext(IdentityProviderContext);
6
- if (context.isSet === false && defaultDetails !== undefined) {
7
- context.details = defaultDetails;
4
+ function useIdentity(typeOrDefaultDetails, defaultDetails) {
5
+ const contextValue = React__default.useContext(IdentityProviderContext);
6
+ const identity = contextValue.identity;
7
+ const isConstructor = typeof typeOrDefaultDetails === 'function';
8
+ const actualDefaultDetails = isConstructor ? defaultDetails : typeOrDefaultDetails;
9
+ if (identity.isSet === false && actualDefaultDetails !== undefined) {
10
+ identity.details = actualDefaultDetails;
8
11
  }
9
- return context;
12
+ return identity;
10
13
  }
11
14
 
12
15
  export { useIdentity };
@@ -1 +1 @@
1
- {"version":3,"file":"useIdentity.js","sources":["../../../identity/useIdentity.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport React from 'react';\nimport { IdentityProviderContext } from './IdentityProvider';\nimport { IIdentity } from '@cratis/arc/identity';\n\n/**\n * Hook to get the identity context.\n * @param defaultDetails Optional default details to use if the context is not set.\n * @returns An identity context.\n */\nexport function useIdentity<TDetails = object>(defaultDetails?: TDetails | undefined | null): IIdentity<TDetails> {\n const context = React.useContext(IdentityProviderContext) as IIdentity<TDetails>;\n if (context.isSet === false && defaultDetails !== undefined) {\n context.details = defaultDetails!;\n }\n return context;\n}\n"],"names":["React"],"mappings":";;;AAYM,SAAU,WAAW,CAAoB,cAA4C,EAAA;IACvF,MAAM,OAAO,GAAGA,cAAK,CAAC,UAAU,CAAC,uBAAuB,CAAwB;IAChF,IAAI,OAAO,CAAC,KAAK,KAAK,KAAK,IAAI,cAAc,KAAK,SAAS,EAAE;AACzD,QAAA,OAAO,CAAC,OAAO,GAAG,cAAe;IACrC;AACA,IAAA,OAAO,OAAO;AAClB;;;;"}
1
+ {"version":3,"file":"useIdentity.js","sources":["../../../identity/useIdentity.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport React from 'react';\nimport { Constructor } from '@cratis/fundamentals';\nimport { IdentityProviderContext } from './IdentityProvider';\nimport { IIdentity } from '@cratis/arc/identity';\n\n/**\n * Hook to get the identity context.\n * @param defaultDetails Optional default details to use if the context is not set.\n * @returns An identity context.\n */\nexport function useIdentity<TDetails = object>(defaultDetails?: TDetails | undefined | null): IIdentity<TDetails>;\n\n/**\n * Hook to get the identity context with type-safe deserialization.\n * @param type Constructor for the details type to enable type-safe deserialization.\n * @param defaultDetails Optional default details to use if the context is not set.\n * @returns An identity context.\n */\nexport function useIdentity<TDetails = object>(type: Constructor<TDetails>, defaultDetails?: TDetails | undefined | null): IIdentity<TDetails>;\n\nexport function useIdentity<TDetails = object>(\n typeOrDefaultDetails?: Constructor<TDetails> | TDetails | undefined | null,\n defaultDetails?: TDetails | undefined | null\n): IIdentity<TDetails> {\n const contextValue = React.useContext(IdentityProviderContext);\n const identity = contextValue.identity as IIdentity<TDetails>;\n \n // Determine if first argument is a Constructor or default details\n // Constructors are functions, but regular functions would be unusual here.\n // We rely on the type system and developer intent - if a function is passed, \n // it's expected to be a constructor class.\n const isConstructor = typeof typeOrDefaultDetails === 'function';\n const actualDefaultDetails = isConstructor ? defaultDetails : typeOrDefaultDetails;\n \n if (identity.isSet === false && actualDefaultDetails !== undefined) {\n identity.details = actualDefaultDetails!;\n }\n \n return identity;\n}\n"],"names":["React"],"mappings":";;;AAuBM,SAAU,WAAW,CACvB,oBAA0E,EAC1E,cAA4C,EAAA;IAE5C,MAAM,YAAY,GAAGA,cAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC;AAC9D,IAAA,MAAM,QAAQ,GAAG,YAAY,CAAC,QAA+B;AAM7D,IAAA,MAAM,aAAa,GAAG,OAAO,oBAAoB,KAAK,UAAU;IAChE,MAAM,oBAAoB,GAAG,aAAa,GAAG,cAAc,GAAG,oBAAoB;IAElF,IAAI,QAAQ,CAAC,KAAK,KAAK,KAAK,IAAI,oBAAoB,KAAK,SAAS,EAAE;AAChE,QAAA,QAAQ,CAAC,OAAO,GAAG,oBAAqB;IAC5C;AAEA,IAAA,OAAO,QAAQ;AACnB;;;;"}
@@ -0,0 +1,19 @@
1
+ import { ObservableQueryFor, QueryResult, ObservableQuerySubscription, OnNextResult } from '@cratis/arc/queries';
2
+ import { ParameterDescriptor } from '@cratis/arc/reflection';
3
+ export interface FakeObservableQueryResult {
4
+ id: string;
5
+ name: string;
6
+ }
7
+ export type SubscribeCallback = OnNextResult<QueryResult<FakeObservableQueryResult[]>>;
8
+ export declare class FakeObservableQuery extends ObservableQueryFor<FakeObservableQueryResult[]> {
9
+ readonly route = "/api/fake-observable-query";
10
+ readonly parameterDescriptors: ParameterDescriptor[];
11
+ get requiredRequestParameters(): string[];
12
+ defaultValue: FakeObservableQueryResult[];
13
+ constructor();
14
+ static subscribeCallbacks: SubscribeCallback[];
15
+ static subscriptionReturned: ObservableQuerySubscription<FakeObservableQueryResult[]>;
16
+ subscribe(callback: SubscribeCallback, args?: object): ObservableQuerySubscription<FakeObservableQueryResult[]>;
17
+ static reset(): void;
18
+ }
19
+ //# sourceMappingURL=FakeObservableQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeObservableQuery.d.ts","sourceRoot":"","sources":["../../../../queries/for_useObservableQuery/FakeObservableQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,2BAA2B,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACjH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,yBAAyB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,iBAAiB,GAAG,YAAY,CAAC,WAAW,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;AAEvF,qBAAa,mBAAoB,SAAQ,kBAAkB,CAAC,yBAAyB,EAAE,CAAC;IACpF,QAAQ,CAAC,KAAK,gCAAgC;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,CAAM;IAE1D,IAAI,yBAAyB,IAAI,MAAM,EAAE,CAExC;IAED,YAAY,EAAE,yBAAyB,EAAE,CAAM;;IAM/C,MAAM,CAAC,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IACpD,MAAM,CAAC,oBAAoB,EAAE,2BAA2B,CAAC,yBAAyB,EAAE,CAAC,CAAC;IAGtF,SAAS,CAAC,QAAQ,EAAE,iBAAiB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,2BAA2B,CAAC,yBAAyB,EAAE,CAAC;IAQ/G,MAAM,CAAC,KAAK;CAGf"}
@@ -0,0 +1,25 @@
1
+ import { ObservableQueryFor } from '@cratis/arc/queries';
2
+ export class FakeObservableQuery extends ObservableQueryFor {
3
+ route = '/api/fake-observable-query';
4
+ parameterDescriptors = [];
5
+ get requiredRequestParameters() {
6
+ return [];
7
+ }
8
+ defaultValue = [];
9
+ constructor() {
10
+ super(Object, true);
11
+ }
12
+ static subscribeCallbacks = [];
13
+ static subscriptionReturned;
14
+ subscribe(callback, args) {
15
+ FakeObservableQuery.subscribeCallbacks.push(callback);
16
+ FakeObservableQuery.subscriptionReturned = {
17
+ unsubscribe: () => { }
18
+ };
19
+ return FakeObservableQuery.subscriptionReturned;
20
+ }
21
+ static reset() {
22
+ FakeObservableQuery.subscribeCallbacks = [];
23
+ }
24
+ }
25
+ //# sourceMappingURL=FakeObservableQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeObservableQuery.js","sourceRoot":"","sources":["../../../../queries/for_useObservableQuery/FakeObservableQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAA0D,MAAM,qBAAqB,CAAC;AAUjH,MAAM,OAAO,mBAAoB,SAAQ,kBAA+C;IAC3E,KAAK,GAAG,4BAA4B,CAAC;IACrC,oBAAoB,GAA0B,EAAE,CAAC;IAE1D,IAAI,yBAAyB;QACzB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,YAAY,GAAgC,EAAE,CAAC;IAE/C;QACI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,kBAAkB,GAAwB,EAAE,CAAC;IACpD,MAAM,CAAC,oBAAoB,CAA2D;IAGtF,SAAS,CAAC,QAA2B,EAAE,IAAa;QAChD,mBAAmB,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,mBAAmB,CAAC,oBAAoB,GAAG;YACvC,WAAW,EAAE,GAAG,EAAE,GAAE,CAAC;SAC+C,CAAC;QACzE,OAAO,mBAAmB,CAAC,oBAAoB,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK;QACR,mBAAmB,CAAC,kBAAkB,GAAG,EAAE,CAAC;IAChD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_creating_instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance.d.ts","sourceRoot":"","sources":["../../../../queries/for_useObservableQuery/when_creating_instance.ts"],"names":[],"mappings":""}
@@ -0,0 +1,66 @@
1
+ import React from 'react';
2
+ import { render, act } from '@testing-library/react';
3
+ import { useObservableQuery } from '../useObservableQuery';
4
+ import { FakeObservableQuery } from './FakeObservableQuery';
5
+ import { ArcContext } from '../../ArcContext';
6
+ import { QueryResult } from '@cratis/arc/queries';
7
+ describe('when creating instance', () => {
8
+ let capturedIsPerformingInitial = null;
9
+ let capturedIsPerformingAfterResponse = null;
10
+ let renderCount = 0;
11
+ beforeEach(() => {
12
+ FakeObservableQuery.reset();
13
+ capturedIsPerformingInitial = null;
14
+ capturedIsPerformingAfterResponse = null;
15
+ renderCount = 0;
16
+ });
17
+ const config = {
18
+ microservice: 'test-microservice',
19
+ apiBasePath: '/api',
20
+ origin: 'https://example.com',
21
+ };
22
+ it('should have isPerforming true initially before receiving data', async () => {
23
+ const TestComponent = () => {
24
+ const [result] = useObservableQuery(FakeObservableQuery);
25
+ renderCount++;
26
+ if (renderCount === 1) {
27
+ capturedIsPerformingInitial = result.isPerforming;
28
+ }
29
+ return React.createElement('div', null, 'Test');
30
+ };
31
+ render(React.createElement(ArcContext.Provider, { value: config }, React.createElement(TestComponent)));
32
+ capturedIsPerformingInitial.should.be.true;
33
+ });
34
+ it('should have isPerforming false after receiving data', async () => {
35
+ const TestComponent = () => {
36
+ const [result] = useObservableQuery(FakeObservableQuery);
37
+ renderCount++;
38
+ if (renderCount === 1) {
39
+ capturedIsPerformingInitial = result.isPerforming;
40
+ }
41
+ else if (renderCount === 2) {
42
+ capturedIsPerformingAfterResponse = result.isPerforming;
43
+ }
44
+ return React.createElement('div', null, 'Test');
45
+ };
46
+ render(React.createElement(ArcContext.Provider, { value: config }, React.createElement(TestComponent)));
47
+ const callback = FakeObservableQuery.subscribeCallbacks[0];
48
+ callback.should.not.be.undefined;
49
+ await act(async () => {
50
+ callback(new QueryResult({
51
+ data: [{ id: '1', name: 'Test' }],
52
+ isSuccess: true,
53
+ isAuthorized: true,
54
+ isValid: true,
55
+ hasExceptions: false,
56
+ validationResults: [],
57
+ exceptionMessages: [],
58
+ exceptionStackTrace: '',
59
+ paging: { page: 0, size: 0, totalItems: 0, totalPages: 0 }
60
+ }, Array, true));
61
+ });
62
+ capturedIsPerformingInitial.should.be.true;
63
+ capturedIsPerformingAfterResponse.should.be.false;
64
+ });
65
+ });
66
+ //# sourceMappingURL=when_creating_instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance.js","sourceRoot":"","sources":["../../../../queries/for_useObservableQuery/when_creating_instance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { QueryFor } from '@cratis/arc/queries';
2
+ import { ParameterDescriptor } from '@cratis/arc/reflection';
3
+ export interface FakeQueryResult {
4
+ id: string;
5
+ name: string;
6
+ }
7
+ export declare class FakeQuery extends QueryFor<FakeQueryResult[]> {
8
+ readonly route = "/api/fake-query";
9
+ readonly parameterDescriptors: ParameterDescriptor[];
10
+ get requiredRequestParameters(): string[];
11
+ defaultValue: FakeQueryResult[];
12
+ constructor();
13
+ }
14
+ //# sourceMappingURL=FakeQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeQuery.d.ts","sourceRoot":"","sources":["../../../../queries/for_useQuery/FakeQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,eAAe;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,SAAU,SAAQ,QAAQ,CAAC,eAAe,EAAE,CAAC;IACtD,QAAQ,CAAC,KAAK,qBAAqB;IACnC,QAAQ,CAAC,oBAAoB,EAAE,mBAAmB,EAAE,CAAM;IAE1D,IAAI,yBAAyB,IAAI,MAAM,EAAE,CAExC;IAED,YAAY,EAAE,eAAe,EAAE,CAAM;;CAKxC"}
@@ -0,0 +1,13 @@
1
+ import { QueryFor } from '@cratis/arc/queries';
2
+ export class FakeQuery extends QueryFor {
3
+ route = '/api/fake-query';
4
+ parameterDescriptors = [];
5
+ get requiredRequestParameters() {
6
+ return [];
7
+ }
8
+ defaultValue = [];
9
+ constructor() {
10
+ super(Object, true);
11
+ }
12
+ }
13
+ //# sourceMappingURL=FakeQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FakeQuery.js","sourceRoot":"","sources":["../../../../queries/for_useQuery/FakeQuery.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAQ/C,MAAM,OAAO,SAAU,SAAQ,QAA2B;IAC7C,KAAK,GAAG,iBAAiB,CAAC;IAC1B,oBAAoB,GAA0B,EAAE,CAAC;IAE1D,IAAI,yBAAyB;QACzB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,YAAY,GAAsB,EAAE,CAAC;IAErC;QACI,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxB,CAAC;CACJ"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_creating_instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance.d.ts","sourceRoot":"","sources":["../../../../queries/for_useQuery/when_creating_instance.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import { useQuery } from '../useQuery';
4
+ import { FakeQuery } from './FakeQuery';
5
+ import { ArcContext } from '../../ArcContext';
6
+ import { createFetchHelper } from '@cratis/arc/helpers/fetchHelper';
7
+ describe('when creating instance', () => {
8
+ let fetchStub;
9
+ let fetchHelper;
10
+ let queryInstance = null;
11
+ const captureInstance = (instance) => {
12
+ queryInstance = instance;
13
+ };
14
+ beforeEach(() => {
15
+ fetchHelper = createFetchHelper();
16
+ fetchStub = fetchHelper.stubFetch();
17
+ fetchStub.resolves({
18
+ json: async () => ({ data: [], isSuccess: true, isAuthorized: true, isValid: true, hasExceptions: false, validationResults: [], exceptionMessages: [], exceptionStackTrace: '' })
19
+ });
20
+ });
21
+ afterEach(() => {
22
+ fetchHelper.restore();
23
+ });
24
+ const config = {
25
+ microservice: 'test-microservice',
26
+ apiBasePath: '/api',
27
+ origin: 'https://example.com',
28
+ httpHeadersCallback: () => ({ 'X-Custom-Header': 'custom-value' })
29
+ };
30
+ class SpyQuery extends FakeQuery {
31
+ constructor() {
32
+ super();
33
+ captureInstance(this);
34
+ }
35
+ }
36
+ render(React.createElement(ArcContext.Provider, { value: config }, React.createElement(() => {
37
+ useQuery(SpyQuery);
38
+ return React.createElement('div', null, 'Test');
39
+ })));
40
+ it('should set microservice from context', () => (queryInstance._microservice).should.equal('test-microservice'));
41
+ it('should set api base path from context', () => (queryInstance._apiBasePath).should.equal('/api'));
42
+ it('should set origin from context', () => (queryInstance._origin).should.equal('https://example.com'));
43
+ it('should set http headers callback from context', () => {
44
+ const headers = queryInstance._httpHeadersCallback();
45
+ headers.should.deep.equal({ 'X-Custom-Header': 'custom-value' });
46
+ });
47
+ });
48
+ //# sourceMappingURL=when_creating_instance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance.js","sourceRoot":"","sources":["../../../../queries/for_useQuery/when_creating_instance.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAIpE,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACpC,IAAI,SAA0B,CAAC;IAC/B,IAAI,WAAsE,CAAC;IAC3E,IAAI,aAAa,GAAqB,IAAI,CAAC;IAE3C,MAAM,eAAe,GAAG,CAAC,QAAmB,EAAE,EAAE;QAC5C,aAAa,GAAG,QAAQ,CAAC;IAC7B,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACZ,WAAW,GAAG,iBAAiB,EAAE,CAAC;QAClC,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACpC,SAAS,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;SACxK,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,WAAW,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAqB;QAC7B,YAAY,EAAE,mBAAmB;QACjC,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,qBAAqB;QAC7B,mBAAmB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC;KACrE,CAAC;IAEF,MAAM,QAAS,SAAQ,SAAS;QAC5B;YACI,KAAK,EAAE,CAAC;YACR,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;KACJ;IAED,MAAM,CACF,KAAK,CAAC,aAAa,CACf,UAAU,CAAC,QAAQ,EACnB,EAAE,KAAK,EAAE,MAAM,EAAE,EACjB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACrB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,CACL,CACJ,CAAC;IAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE,CAAC,CAAE,aAAqB,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAC3H,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE,CAAC,CAAE,aAAqB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9G,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE,CAAC,CAAE,aAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IACjH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACrD,MAAM,OAAO,GAAI,aAAqB,CAAC,oBAAoB,EAAE,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_creating_instance_with_sorting.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance_with_sorting.d.ts","sourceRoot":"","sources":["../../../../queries/for_useQuery/when_creating_instance_with_sorting.ts"],"names":[],"mappings":""}
@@ -0,0 +1,40 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import { useQuery } from '../useQuery';
4
+ import { FakeQuery } from './FakeQuery';
5
+ import { ArcContext } from '../../ArcContext';
6
+ import { Sorting } from '@cratis/arc/queries';
7
+ import { createFetchHelper } from '@cratis/arc/helpers/fetchHelper';
8
+ describe('when creating instance with sorting', () => {
9
+ let fetchHelper;
10
+ let queryInstance = null;
11
+ const captureInstance = (instance) => {
12
+ queryInstance = instance;
13
+ };
14
+ beforeEach(() => {
15
+ fetchHelper = createFetchHelper();
16
+ const fetchStub = fetchHelper.stubFetch();
17
+ fetchStub.resolves({
18
+ json: async () => ({ data: [], isSuccess: true, isAuthorized: true, isValid: true, hasExceptions: false, validationResults: [], exceptionMessages: [], exceptionStackTrace: '' })
19
+ });
20
+ });
21
+ afterEach(() => {
22
+ fetchHelper.restore();
23
+ });
24
+ const config = {
25
+ microservice: 'test-microservice'
26
+ };
27
+ const sorting = new Sorting('name', 1);
28
+ class SpyQuery extends FakeQuery {
29
+ constructor() {
30
+ super();
31
+ captureInstance(this);
32
+ }
33
+ }
34
+ render(React.createElement(ArcContext.Provider, { value: config }, React.createElement(() => {
35
+ useQuery(SpyQuery, undefined, sorting);
36
+ return React.createElement('div', null, 'Test');
37
+ })));
38
+ it('should set sorting on the query', () => queryInstance.sorting.should.equal(sorting));
39
+ });
40
+ //# sourceMappingURL=when_creating_instance_with_sorting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance_with_sorting.js","sourceRoot":"","sources":["../../../../queries/for_useQuery/when_creating_instance_with_sorting.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAEpE,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACjD,IAAI,WAAsE,CAAC;IAC3E,IAAI,aAAa,GAAqB,IAAI,CAAC;IAE3C,MAAM,eAAe,GAAG,CAAC,QAAmB,EAAE,EAAE;QAC5C,aAAa,GAAG,QAAQ,CAAC;IAC7B,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACZ,WAAW,GAAG,iBAAiB,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QAC1C,SAAS,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;SACxK,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,WAAW,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAqB;QAC7B,YAAY,EAAE,mBAAmB;KACpC,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAEvC,MAAM,QAAS,SAAQ,SAAS;QAC5B;YACI,KAAK,EAAE,CAAC;YACR,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;KACJ;IAED,MAAM,CACF,KAAK,CAAC,aAAa,CACf,UAAU,CAAC,QAAQ,EACnB,EAAE,KAAK,EAAE,MAAM,EAAE,EACjB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACrB,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,CACL,CACJ,CAAC;IAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE,CAAC,aAAc,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_creating_instance_without_optional_context_values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance_without_optional_context_values.d.ts","sourceRoot":"","sources":["../../../../queries/for_useQuery/when_creating_instance_without_optional_context_values.ts"],"names":[],"mappings":""}
@@ -0,0 +1,44 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import { useQuery } from '../useQuery';
4
+ import { FakeQuery } from './FakeQuery';
5
+ import { ArcContext } from '../../ArcContext';
6
+ import { createFetchHelper } from '@cratis/arc/helpers/fetchHelper';
7
+ describe('when creating instance without optional context values', () => {
8
+ let fetchStub;
9
+ let fetchHelper;
10
+ let queryInstance = null;
11
+ const captureInstance = (instance) => {
12
+ queryInstance = instance;
13
+ };
14
+ beforeEach(() => {
15
+ fetchHelper = createFetchHelper();
16
+ fetchStub = fetchHelper.stubFetch();
17
+ fetchStub.resolves({
18
+ json: async () => ({ data: [], isSuccess: true, isAuthorized: true, isValid: true, hasExceptions: false, validationResults: [], exceptionMessages: [], exceptionStackTrace: '' })
19
+ });
20
+ });
21
+ afterEach(() => {
22
+ fetchHelper.restore();
23
+ });
24
+ const config = {
25
+ microservice: 'test-microservice'
26
+ };
27
+ class SpyQuery extends FakeQuery {
28
+ constructor() {
29
+ super();
30
+ captureInstance(this);
31
+ }
32
+ }
33
+ render(React.createElement(ArcContext.Provider, { value: config }, React.createElement(() => {
34
+ useQuery(SpyQuery);
35
+ return React.createElement('div', null, 'Test');
36
+ })));
37
+ it('should set api base path to empty string', () => (queryInstance._apiBasePath).should.equal(''));
38
+ it('should set origin to empty string', () => (queryInstance._origin).should.equal(''));
39
+ it('should set http headers callback to return empty object', () => {
40
+ const headers = queryInstance._httpHeadersCallback();
41
+ headers.should.deep.equal({});
42
+ });
43
+ });
44
+ //# sourceMappingURL=when_creating_instance_without_optional_context_values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance_without_optional_context_values.js","sourceRoot":"","sources":["../../../../queries/for_useQuery/when_creating_instance_without_optional_context_values.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AAIpE,QAAQ,CAAC,wDAAwD,EAAE,GAAG,EAAE;IACpE,IAAI,SAA0B,CAAC;IAC/B,IAAI,WAAsE,CAAC;IAC3E,IAAI,aAAa,GAAqB,IAAI,CAAC;IAE3C,MAAM,eAAe,GAAG,CAAC,QAAmB,EAAE,EAAE;QAC5C,aAAa,GAAG,QAAQ,CAAC;IAC7B,CAAC,CAAC;IAEF,UAAU,CAAC,GAAG,EAAE;QACZ,WAAW,GAAG,iBAAiB,EAAE,CAAC;QAClC,SAAS,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;QACpC,SAAS,CAAC,QAAQ,CAAC;YACf,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;SACxK,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACX,WAAW,CAAC,OAAO,EAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAqB;QAC7B,YAAY,EAAE,mBAAmB;KACpC,CAAC;IAEF,MAAM,QAAS,SAAQ,SAAS;QAC5B;YACI,KAAK,EAAE,CAAC;YACR,eAAe,CAAC,IAAI,CAAC,CAAC;QAC1B,CAAC;KACJ;IAED,MAAM,CACF,KAAK,CAAC,aAAa,CACf,UAAU,CAAC,QAAQ,EACnB,EAAE,KAAK,EAAE,MAAM,EAAE,EACjB,KAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACrB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC,CAAC,CACL,CACJ,CAAC;IAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE,CAAC,CAAE,aAAqB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7G,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAE,aAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACjG,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QAC/D,MAAM,OAAO,GAAI,aAAqB,CAAC,oBAAoB,EAAE,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=when_creating_instance_with_paging.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance_with_paging.d.ts","sourceRoot":"","sources":["../../../../queries/for_useQueryWithPaging/when_creating_instance_with_paging.ts"],"names":[],"mappings":""}
@@ -0,0 +1,51 @@
1
+ import React from 'react';
2
+ import { render } from '@testing-library/react';
3
+ import { useQueryWithPaging } from '../useQuery';
4
+ import { FakeQuery } from '../for_useQuery/FakeQuery';
5
+ import { ArcContext } from '../../ArcContext';
6
+ import { Paging } from '@cratis/arc/queries';
7
+ import { createFetchHelper } from '@cratis/arc/helpers/fetchHelper';
8
+ describe('when creating instance with paging', () => {
9
+ let fetchStub;
10
+ let fetchHelper;
11
+ let queryInstance = null;
12
+ const captureInstance = (instance) => {
13
+ queryInstance = instance;
14
+ };
15
+ beforeEach(() => {
16
+ fetchHelper = createFetchHelper();
17
+ fetchStub = fetchHelper.stubFetch();
18
+ fetchStub.resolves({
19
+ json: async () => ({ data: [], isSuccess: true, isAuthorized: true, isValid: true, hasExceptions: false, validationResults: [], exceptionMessages: [], exceptionStackTrace: '' })
20
+ });
21
+ });
22
+ afterEach(() => {
23
+ fetchHelper.restore();
24
+ });
25
+ const config = {
26
+ microservice: 'test-microservice',
27
+ apiBasePath: '/api',
28
+ origin: 'https://example.com',
29
+ httpHeadersCallback: () => ({ 'X-Custom-Header': 'custom-value' })
30
+ };
31
+ const paging = new Paging(1, 10);
32
+ class SpyQuery extends FakeQuery {
33
+ constructor() {
34
+ super();
35
+ captureInstance(this);
36
+ }
37
+ }
38
+ render(React.createElement(ArcContext.Provider, { value: config }, React.createElement(() => {
39
+ useQueryWithPaging(SpyQuery, paging);
40
+ return React.createElement('div', null, 'Test');
41
+ })));
42
+ it('should set paging on the query', () => queryInstance.paging.should.equal(paging));
43
+ it('should set microservice from context', () => (queryInstance._microservice).should.equal('test-microservice'));
44
+ it('should set api base path from context', () => (queryInstance._apiBasePath).should.equal('/api'));
45
+ it('should set origin from context', () => (queryInstance._origin).should.equal('https://example.com'));
46
+ it('should set http headers callback from context', () => {
47
+ const headers = queryInstance._httpHeadersCallback();
48
+ headers.should.deep.equal({ 'X-Custom-Header': 'custom-value' });
49
+ });
50
+ });
51
+ //# sourceMappingURL=when_creating_instance_with_paging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"when_creating_instance_with_paging.js","sourceRoot":"","sources":["../../../../queries/for_useQueryWithPaging/when_creating_instance_with_paging.ts"],"names":[],"mappings":"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"}
@@ -16,7 +16,7 @@ function useObservableQueryInternal(query, sorting, paging, args) {
16
16
  instance.setOrigin(arc.origin ?? '');
17
17
  return instance;
18
18
  }, [currentPaging, currentSorting, arc.microservice, arc.apiBasePath, arc.origin]);
19
- const [result, setResult] = useState(QueryResultWithState.empty(queryInstance.current.defaultValue));
19
+ const [result, setResult] = useState(QueryResultWithState.initial(queryInstance.current.defaultValue));
20
20
  const argumentsDependency = queryInstance.current.requiredRequestParameters.map(_ => args?.[_]);
21
21
  useEffect(() => {
22
22
  const subscription = queryInstance.current.subscribe(response => {
@@ -1 +1 @@
1
- {"version":3,"file":"useObservableQuery.js","sources":["../../../queries/useObservableQuery.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { QueryResultWithState, IObservableQueryFor, Sorting, Paging } from '@cratis/arc/queries';\nimport { Constructor } from '@cratis/fundamentals';\nimport { useState, useEffect, useContext, useRef, useMemo } from 'react';\nimport { SetSorting } from './SetSorting';\nimport { SetPage } from './SetPage';\nimport { SetPageSize } from './SetPageSize';\nimport { ArcContext } from '../ArcContext';\n\nfunction useObservableQueryInternal<TDataType, TQuery extends IObservableQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, sorting?: Sorting, paging?: Paging, args?: TArguments):\n [QueryResultWithState<TDataType>, SetSorting, SetPage, SetPageSize] {\n const [currentPaging, setCurrentPaging] = useState<Paging>(paging ?? Paging.noPaging);\n const [currentSorting, setCurrentSorting] = useState<Sorting>(sorting ?? Sorting.none);\n const arc = useContext(ArcContext);\n const queryInstance = useRef<TQuery | null>(null);\n\n queryInstance.current = useMemo(() => {\n const instance = new query() as TQuery;\n instance.paging = currentPaging;\n instance.sorting = currentSorting;\n instance.setMicroservice(arc.microservice);\n instance.setApiBasePath(arc.apiBasePath ?? '');\n instance.setOrigin(arc.origin ?? '');\n return instance;\n }, [currentPaging, currentSorting, arc.microservice, arc.apiBasePath, arc.origin]);\n\n const [result, setResult] = useState<QueryResultWithState<TDataType>>(QueryResultWithState.empty(queryInstance.current.defaultValue));\n const argumentsDependency = queryInstance.current.requiredRequestParameters.map(_ => args?.[_]);\n\n useEffect(() => {\n const subscription = queryInstance.current!.subscribe(response => {\n setResult(QueryResultWithState.fromQueryResult(response, false));\n }, args as object);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [...argumentsDependency, ...[currentPaging, currentSorting]]);\n\n return [\n result,\n async (sorting: Sorting) => {\n setCurrentSorting(sorting);\n },\n async (page: number) => {\n setCurrentPaging(new Paging(page, currentPaging.pageSize));\n },\n async (pageSize: number) => {\n setCurrentPaging(new Paging(currentPaging.page, pageSize));\n }];\n}\n\n/**\n * React hook for working with {@link IObservableQueryFor} within the state management of React.\n * @template TDataType Type of model the query is for.\n * @template TQuery Type of observable query to use.\n * @template TArguments Optional: Arguments for the query, if any\n * @param query Query type constructor.\n * @param args Optional: Arguments for the query, if any\n * @returns Tuple of {@link QueryResultWithState} and a {@link PerformQuery} delegate.\n */\nexport function useObservableQuery<TDataType, TQuery extends IObservableQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, args?: TArguments, sorting?: Sorting):\n [QueryResultWithState<TDataType>, SetSorting] {\n const [result, setSorting] = useObservableQueryInternal<TDataType, TQuery, TArguments>(query, sorting, Paging.noPaging, args);\n return [result, setSorting];\n}\n\n/**\n * React hook for working with {@link IObservableQueryFor} within the state management of React for queries with paging.\n * @template TDataType Type of model the query is for.\n * @template TQuery Type of observable query to use.\n * @template TArguments Optional: Arguments for the query, if any\n * @param query Query type constructor.\n * @param args Optional: Arguments for the query, if any\n * @param paging Paging information.\n * @returns Tuple of {@link QueryResultWithState} and a {@link PerformQuery} delegate.\n */\nexport function useObservableQueryWithPaging<TDataType, TQuery extends IObservableQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, paging: Paging, args?: TArguments, sorting?: Sorting):\n [QueryResultWithState<TDataType>, SetSorting, SetPage, SetPageSize] {\n return useObservableQueryInternal<TDataType, TQuery, TArguments>(query, sorting, paging, args);\n}\n"],"names":[],"mappings":";;;;AAWA,SAAS,0BAA0B,CAAgF,KAA0B,EAAE,OAAiB,EAAE,MAAe,EAAE,IAAiB,EAAA;AAEhM,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAS,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC;AACrF,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;AACtF,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;AAClC,IAAA,MAAM,aAAa,GAAG,MAAM,CAAgB,IAAI,CAAC;AAEjD,IAAA,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,MAAK;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAY;AACtC,QAAA,QAAQ,CAAC,MAAM,GAAG,aAAa;AAC/B,QAAA,QAAQ,CAAC,OAAO,GAAG,cAAc;AACjC,QAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC9C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;AACpC,QAAA,OAAO,QAAQ;AACnB,IAAA,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAElF,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAkC,oBAAoB,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACrI,MAAM,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IAE/F,SAAS,CAAC,MAAK;QACX,MAAM,YAAY,GAAG,aAAa,CAAC,OAAQ,CAAC,SAAS,CAAC,QAAQ,IAAG;YAC7D,SAAS,CAAC,oBAAoB,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC,EAAE,IAAc,CAAC;AAElB,QAAA,OAAO,MAAK;YACR,YAAY,CAAC,WAAW,EAAE;AAC9B,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhE,OAAO;QACH,MAAM;QACN,OAAO,OAAgB,KAAI;YACvB,iBAAiB,CAAC,OAAO,CAAC;QAC9B,CAAC;QACD,OAAO,IAAY,KAAI;YACnB,gBAAgB,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,QAAgB,KAAI;YACvB,gBAAgB,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9D;KAAE;AACV;SAWgB,kBAAkB,CAAgF,KAA0B,EAAE,IAAiB,EAAE,OAAiB,EAAA;AAE9K,IAAA,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,0BAA0B,CAAgC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7H,IAAA,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B;AAYM,SAAU,4BAA4B,CAAgF,KAA0B,EAAE,MAAc,EAAE,IAAiB,EAAE,OAAiB,EAAA;IAExM,OAAO,0BAA0B,CAAgC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AAClG;;;;"}
1
+ {"version":3,"file":"useObservableQuery.js","sources":["../../../queries/useObservableQuery.ts"],"sourcesContent":["// Copyright (c) Cratis. All rights reserved.\n// Licensed under the MIT license. See LICENSE file in the project root for full license information.\n\nimport { QueryResultWithState, IObservableQueryFor, Sorting, Paging } from '@cratis/arc/queries';\nimport { Constructor } from '@cratis/fundamentals';\nimport { useState, useEffect, useContext, useRef, useMemo } from 'react';\nimport { SetSorting } from './SetSorting';\nimport { SetPage } from './SetPage';\nimport { SetPageSize } from './SetPageSize';\nimport { ArcContext } from '../ArcContext';\n\nfunction useObservableQueryInternal<TDataType, TQuery extends IObservableQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, sorting?: Sorting, paging?: Paging, args?: TArguments):\n [QueryResultWithState<TDataType>, SetSorting, SetPage, SetPageSize] {\n const [currentPaging, setCurrentPaging] = useState<Paging>(paging ?? Paging.noPaging);\n const [currentSorting, setCurrentSorting] = useState<Sorting>(sorting ?? Sorting.none);\n const arc = useContext(ArcContext);\n const queryInstance = useRef<TQuery | null>(null);\n\n queryInstance.current = useMemo(() => {\n const instance = new query() as TQuery;\n instance.paging = currentPaging;\n instance.sorting = currentSorting;\n instance.setMicroservice(arc.microservice);\n instance.setApiBasePath(arc.apiBasePath ?? '');\n instance.setOrigin(arc.origin ?? '');\n return instance;\n }, [currentPaging, currentSorting, arc.microservice, arc.apiBasePath, arc.origin]);\n\n const [result, setResult] = useState<QueryResultWithState<TDataType>>(QueryResultWithState.initial(queryInstance.current.defaultValue));\n const argumentsDependency = queryInstance.current.requiredRequestParameters.map(_ => args?.[_]);\n\n useEffect(() => {\n const subscription = queryInstance.current!.subscribe(response => {\n setResult(QueryResultWithState.fromQueryResult(response, false));\n }, args as object);\n\n return () => {\n subscription.unsubscribe();\n };\n }, [...argumentsDependency, ...[currentPaging, currentSorting]]);\n\n return [\n result,\n async (sorting: Sorting) => {\n setCurrentSorting(sorting);\n },\n async (page: number) => {\n setCurrentPaging(new Paging(page, currentPaging.pageSize));\n },\n async (pageSize: number) => {\n setCurrentPaging(new Paging(currentPaging.page, pageSize));\n }];\n}\n\n/**\n * React hook for working with {@link IObservableQueryFor} within the state management of React.\n * @template TDataType Type of model the query is for.\n * @template TQuery Type of observable query to use.\n * @template TArguments Optional: Arguments for the query, if any\n * @param query Query type constructor.\n * @param args Optional: Arguments for the query, if any\n * @returns Tuple of {@link QueryResultWithState} and a {@link PerformQuery} delegate.\n */\nexport function useObservableQuery<TDataType, TQuery extends IObservableQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, args?: TArguments, sorting?: Sorting):\n [QueryResultWithState<TDataType>, SetSorting] {\n const [result, setSorting] = useObservableQueryInternal<TDataType, TQuery, TArguments>(query, sorting, Paging.noPaging, args);\n return [result, setSorting];\n}\n\n/**\n * React hook for working with {@link IObservableQueryFor} within the state management of React for queries with paging.\n * @template TDataType Type of model the query is for.\n * @template TQuery Type of observable query to use.\n * @template TArguments Optional: Arguments for the query, if any\n * @param query Query type constructor.\n * @param args Optional: Arguments for the query, if any\n * @param paging Paging information.\n * @returns Tuple of {@link QueryResultWithState} and a {@link PerformQuery} delegate.\n */\nexport function useObservableQueryWithPaging<TDataType, TQuery extends IObservableQueryFor<TDataType>, TArguments = object>(query: Constructor<TQuery>, paging: Paging, args?: TArguments, sorting?: Sorting):\n [QueryResultWithState<TDataType>, SetSorting, SetPage, SetPageSize] {\n return useObservableQueryInternal<TDataType, TQuery, TArguments>(query, sorting, paging, args);\n}\n"],"names":[],"mappings":";;;;AAWA,SAAS,0BAA0B,CAAgF,KAA0B,EAAE,OAAiB,EAAE,MAAe,EAAE,IAAiB,EAAA;AAEhM,IAAA,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAS,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC;AACrF,IAAA,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAU,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;AACtF,IAAA,MAAM,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC;AAClC,IAAA,MAAM,aAAa,GAAG,MAAM,CAAgB,IAAI,CAAC;AAEjD,IAAA,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC,MAAK;AACjC,QAAA,MAAM,QAAQ,GAAG,IAAI,KAAK,EAAY;AACtC,QAAA,QAAQ,CAAC,MAAM,GAAG,aAAa;AAC/B,QAAA,QAAQ,CAAC,OAAO,GAAG,cAAc;AACjC,QAAA,QAAQ,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1C,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QAC9C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;AACpC,QAAA,OAAO,QAAQ;AACnB,IAAA,CAAC,EAAE,CAAC,aAAa,EAAE,cAAc,EAAE,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;AAElF,IAAA,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAkC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACvI,MAAM,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IAE/F,SAAS,CAAC,MAAK;QACX,MAAM,YAAY,GAAG,aAAa,CAAC,OAAQ,CAAC,SAAS,CAAC,QAAQ,IAAG;YAC7D,SAAS,CAAC,oBAAoB,CAAC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACpE,CAAC,EAAE,IAAc,CAAC;AAElB,QAAA,OAAO,MAAK;YACR,YAAY,CAAC,WAAW,EAAE;AAC9B,QAAA,CAAC;AACL,IAAA,CAAC,EAAE,CAAC,GAAG,mBAAmB,EAAE,GAAG,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhE,OAAO;QACH,MAAM;QACN,OAAO,OAAgB,KAAI;YACvB,iBAAiB,CAAC,OAAO,CAAC;QAC9B,CAAC;QACD,OAAO,IAAY,KAAI;YACnB,gBAAgB,CAAC,IAAI,MAAM,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,QAAgB,KAAI;YACvB,gBAAgB,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAC9D;KAAE;AACV;SAWgB,kBAAkB,CAAgF,KAA0B,EAAE,IAAiB,EAAE,OAAiB,EAAA;AAE9K,IAAA,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,0BAA0B,CAAgC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC7H,IAAA,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC;AAC/B;AAYM,SAAU,4BAA4B,CAAgF,KAA0B,EAAE,MAAc,EAAE,IAAiB,EAAE,OAAiB,EAAA;IAExM,OAAO,0BAA0B,CAAgC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC;AAClG;;;;"}