synapse-react-client 4.0.20 → 4.0.22

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 (176) hide show
  1. package/dist/SWC.index.d.ts +1 -0
  2. package/dist/SWC.index.d.ts.map +1 -1
  3. package/dist/SWC.index.js +2 -1
  4. package/dist/SWC.index.js.map +1 -1
  5. package/dist/components/CardContainer/CardConfiguration.d.ts +2 -0
  6. package/dist/components/CardContainer/CardConfiguration.d.ts.map +1 -1
  7. package/dist/components/CardContainer/CardContainer.d.ts.map +1 -1
  8. package/dist/components/CardContainer/CardContainer.js +44 -50
  9. package/dist/components/CardContainer/CardContainer.js.map +1 -1
  10. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts +14 -0
  11. package/dist/components/CardContainerLogic/CardContainerLogic.d.ts.map +1 -1
  12. package/dist/components/CardContainerLogic/CardContainerLogic.js +64 -40
  13. package/dist/components/CardContainerLogic/CardContainerLogic.js.map +1 -1
  14. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js +1 -1
  15. package/dist/components/ChallengeSubmission/ChallengeSubmissionStepper.js.map +1 -1
  16. package/dist/components/DataExplorer/DataExplorer.css +1 -1
  17. package/dist/components/DataExplorer/DataExplorer.module.js +16 -16
  18. package/dist/components/DataExplorer/DataExplorer.module.js.map +1 -1
  19. package/dist/components/DataExplorer/DataExplorer.module.scss +26 -7
  20. package/dist/components/DataGrid/DataGrid.d.ts +1 -0
  21. package/dist/components/DataGrid/DataGrid.d.ts.map +1 -1
  22. package/dist/components/DataGrid/DataGrid.js +72 -72
  23. package/dist/components/DataGrid/DataGrid.js.map +1 -1
  24. package/dist/components/DataGrid/SynapseGrid.d.ts.map +1 -1
  25. package/dist/components/DataGrid/SynapseGrid.js +209 -206
  26. package/dist/components/DataGrid/SynapseGrid.js.map +1 -1
  27. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts +6 -3
  28. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.d.ts.map +1 -1
  29. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js +54 -46
  30. package/dist/components/DataGrid/components/ColumnHeaderWithTooltip.js.map +1 -1
  31. package/dist/components/DataGrid/hooks/useColumnResizeHandles.d.ts.map +1 -1
  32. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js +1 -1
  33. package/dist/components/DataGrid/hooks/useColumnResizeHandles.js.map +1 -1
  34. package/dist/components/DataGrid/useDataGridWebsocket.d.ts.map +1 -1
  35. package/dist/components/DataGrid/useDataGridWebsocket.js +68 -67
  36. package/dist/components/DataGrid/useDataGridWebsocket.js.map +1 -1
  37. package/dist/components/DataGrid/utils/columnFactory.d.ts +1 -0
  38. package/dist/components/DataGrid/utils/columnFactory.d.ts.map +1 -1
  39. package/dist/components/DataGrid/utils/columnFactory.js +5 -3
  40. package/dist/components/DataGrid/utils/columnFactory.js.map +1 -1
  41. package/dist/components/DataGrid/utils/modelColsToGrid.d.ts +1 -1
  42. package/dist/components/DataGrid/utils/modelColsToGrid.d.ts.map +1 -1
  43. package/dist/components/DataGrid/utils/modelColsToGrid.js +15 -14
  44. package/dist/components/DataGrid/utils/modelColsToGrid.js.map +1 -1
  45. package/dist/components/DataGrid/utils/normalizeWebsocketError.d.ts +7 -0
  46. package/dist/components/DataGrid/utils/normalizeWebsocketError.d.ts.map +1 -0
  47. package/dist/components/DataGrid/utils/normalizeWebsocketError.js +8 -0
  48. package/dist/components/DataGrid/utils/normalizeWebsocketError.js.map +1 -0
  49. package/dist/components/GenericCard/GenericCard.d.ts +2 -0
  50. package/dist/components/GenericCard/GenericCard.d.ts.map +1 -1
  51. package/dist/components/GenericCard/GenericCard.js +76 -64
  52. package/dist/components/GenericCard/GenericCard.js.map +1 -1
  53. package/dist/components/GenericCard/TableRowGenericCard.d.ts.map +1 -1
  54. package/dist/components/GenericCard/TableRowGenericCard.js +33 -25
  55. package/dist/components/GenericCard/TableRowGenericCard.js.map +1 -1
  56. package/dist/components/Goals/Goals.d.ts +8 -0
  57. package/dist/components/Goals/Goals.d.ts.map +1 -1
  58. package/dist/components/Goals/Goals.js +54 -40
  59. package/dist/components/Goals/Goals.js.map +1 -1
  60. package/dist/components/Plot/SynapseSankeyPlot.css +1 -0
  61. package/dist/components/Plot/SynapseSankeyPlot.d.ts +44 -2
  62. package/dist/components/Plot/SynapseSankeyPlot.d.ts.map +1 -1
  63. package/dist/components/Plot/SynapseSankeyPlot.js +343 -38
  64. package/dist/components/Plot/SynapseSankeyPlot.js.map +1 -1
  65. package/dist/components/Plot/SynapseSankeyPlot.module.js +15 -0
  66. package/dist/components/Plot/SynapseSankeyPlot.module.js.map +1 -0
  67. package/dist/components/Plot/SynapseSankeyPlot.module.scss +63 -0
  68. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.d.ts +9 -0
  69. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.d.ts.map +1 -0
  70. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js +69 -0
  71. package/dist/components/ProjectVisibilityChip/ProjectVisibilityChip.js.map +1 -0
  72. package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.d.ts +13 -0
  73. package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.d.ts.map +1 -0
  74. package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.js +11 -0
  75. package/dist/components/ProjectVisibilityChip/getProjectVisibilityFromACL.js.map +1 -0
  76. package/dist/components/ProjectVisibilityChip/index.d.ts +5 -0
  77. package/dist/components/ProjectVisibilityChip/index.d.ts.map +1 -0
  78. package/dist/components/ProjectVisibilityChip/index.js +7 -0
  79. package/dist/components/ProjectVisibilityChip/index.js.map +1 -0
  80. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.d.ts.map +1 -1
  81. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js +1 -1
  82. package/dist/components/QueryVisualizationWrapper/QueryVisualizationWrapper.js.map +1 -1
  83. package/dist/components/QueryWrapperPlotNav/RowSetView.d.ts.map +1 -1
  84. package/dist/components/QueryWrapperPlotNav/RowSetView.js +9 -12
  85. package/dist/components/QueryWrapperPlotNav/RowSetView.js.map +1 -1
  86. package/dist/components/RssFeedCards/RssFeedCards.d.ts +7 -15
  87. package/dist/components/RssFeedCards/RssFeedCards.d.ts.map +1 -1
  88. package/dist/components/RssFeedCards/RssFeedCards.js +114 -123
  89. package/dist/components/RssFeedCards/RssFeedCards.js.map +1 -1
  90. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts +13 -12
  91. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.d.ts.map +1 -1
  92. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js +88 -77
  93. package/dist/components/SearchQueryWrapper/SearchQueryUseQueryOptions.js.map +1 -1
  94. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.d.ts.map +1 -1
  95. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js +63 -74
  96. package/dist/components/SynapseTable/TopLevelControls/TopLevelControls.js.map +1 -1
  97. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.d.ts.map +1 -1
  98. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js +72 -68
  99. package/dist/components/TableColumnSchemaEditor/ColumnModelForm.js.map +1 -1
  100. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts +27 -1
  101. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.d.ts.map +1 -1
  102. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js +47 -36
  103. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaEditorUtils.js.map +1 -1
  104. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js +1 -1
  105. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaForm.js.map +1 -1
  106. package/dist/components/TableColumnSchemaEditor/TableColumnSchemaFormReducer.d.ts +12 -12
  107. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts +4 -1
  108. package/dist/components/TableColumnSchemaEditor/Validators/BooleanSchema.d.ts.map +1 -1
  109. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts +167 -517
  110. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.d.ts.map +1 -1
  111. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js +65 -65
  112. package/dist/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.js.map +1 -1
  113. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts +1 -1
  114. package/dist/components/TableColumnSchemaEditor/Validators/DatetimeSchema.d.ts.map +1 -1
  115. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts +1 -1
  116. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.d.ts.map +1 -1
  117. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js +6 -13
  118. package/dist/components/TableColumnSchemaEditor/Validators/DoubleSchema.js.map +1 -1
  119. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts +1 -1
  120. package/dist/components/TableColumnSchemaEditor/Validators/EntityIdSchema.d.ts.map +1 -1
  121. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts +1 -1
  122. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.d.ts.map +1 -1
  123. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js +2 -2
  124. package/dist/components/TableColumnSchemaEditor/Validators/IntegerSchema.js.map +1 -1
  125. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts +1 -1
  126. package/dist/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.d.ts.map +1 -1
  127. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts +2 -2
  128. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.d.ts.map +1 -1
  129. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js +15 -16
  130. package/dist/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.js.map +1 -1
  131. package/dist/components/UserCardList/UserCardList.d.ts +2 -20
  132. package/dist/components/UserCardList/UserCardList.d.ts.map +1 -1
  133. package/dist/components/UserCardList/UserCardList.js +49 -72
  134. package/dist/components/UserCardList/UserCardList.js.map +1 -1
  135. package/dist/components/UserCardList/UserCardListRotate.d.ts +13 -0
  136. package/dist/components/UserCardList/UserCardListRotate.d.ts.map +1 -1
  137. package/dist/components/UserCardList/UserCardListRotate.js +82 -57
  138. package/dist/components/UserCardList/UserCardListRotate.js.map +1 -1
  139. package/dist/mocks/mockSearchQueryData.js +2 -2
  140. package/dist/mocks/mockSearchQueryData.js.map +1 -1
  141. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts +1 -1
  142. package/dist/mocks/msw/handlers/searchQueryHandlers.d.ts.map +1 -1
  143. package/dist/mocks/msw/handlers/searchQueryHandlers.js +6 -3
  144. package/dist/mocks/msw/handlers/searchQueryHandlers.js.map +1 -1
  145. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts +13 -0
  146. package/dist/mocks/query/mockUserCardTableQueryResultBundle.d.ts.map +1 -1
  147. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js +27 -0
  148. package/dist/mocks/query/mockUserCardTableQueryResultBundle.js.map +1 -1
  149. package/dist/style/abstracts/_cssVariables.scss +1 -0
  150. package/dist/style/components/_cards.scss +10 -0
  151. package/dist/style/components/_data-grid-extra.css +1 -1
  152. package/dist/style/components/_data-grid-extra.scss +7 -1
  153. package/dist/style/main.css +1 -1
  154. package/dist/synapse-client/SynapseClient.d.ts.map +1 -1
  155. package/dist/synapse-client/SynapseClient.js +497 -495
  156. package/dist/synapse-client/SynapseClient.js.map +1 -1
  157. package/dist/synapse-queries/KeyFactory.d.ts +1 -0
  158. package/dist/synapse-queries/KeyFactory.d.ts.map +1 -1
  159. package/dist/synapse-queries/KeyFactory.js +3 -0
  160. package/dist/synapse-queries/KeyFactory.js.map +1 -1
  161. package/dist/synapse-queries/index.js +46 -44
  162. package/dist/synapse-queries/user/index.js +3 -3
  163. package/dist/synapse-queries/user/useUserBundle.d.ts +12 -0
  164. package/dist/synapse-queries/user/useUserBundle.d.ts.map +1 -1
  165. package/dist/synapse-queries/user/useUserBundle.js +50 -36
  166. package/dist/synapse-queries/user/useUserBundle.js.map +1 -1
  167. package/dist/tsconfig.build.tsbuildinfo +1 -1
  168. package/dist/utils/AppUtils/session/SessionInitializedGuard.d.ts +10 -5
  169. package/dist/utils/AppUtils/session/SessionInitializedGuard.d.ts.map +1 -1
  170. package/dist/utils/AppUtils/session/SessionInitializedGuard.js +13 -9
  171. package/dist/utils/AppUtils/session/SessionInitializedGuard.js.map +1 -1
  172. package/dist/utils/functions/SqlFunctions.d.ts +1 -1
  173. package/dist/utils/functions/SqlFunctions.d.ts.map +1 -1
  174. package/dist/utils/functions/SqlFunctions.js +1 -1
  175. package/dist/utils/functions/SqlFunctions.js.map +1 -1
  176. package/package.json +7 -5
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnModelValidator.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAO7E,OAAO,EAAE,KAAK,mBAAmB,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAkBvC,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;EAKvC,CAAA;AAqCD;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8D7B,CAAA;AAEJ,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAAgC,CAAA;AAEzE,QAAA,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;EAIrC,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAA;AAGD,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM/B,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAE5E,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,WAAW,CACnB,mBAAmB,EACnB,2BAA2B,GAAG,YAAY,CAC3C,EAAE,GACF,mBAAmB,CACpB,WAAW,CACT,mBAAmB,EACnB,2BAA2B,GAAG,YAAY,CAC3C,EAAE,EACH,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CACjC,CAEA"}
1
+ {"version":3,"file":"ColumnModelValidator.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAU7E,OAAO,EAAE,CAAC,EAAW,MAAM,KAAK,CAAA;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAuBvC,eAAO,MAAM,2BAA2B;;;;;;;;iBAGtC,CAAA;AAyDF;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2F7B,CAAA;AAEJ,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAgC,CAAA;AAEzE,QAAA,MAAM,gCAAgC;;;;;;;;;iBAEpC,CAAA;AAEF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAC9C,OAAO,gCAAgC,CACxC,CAAA;AAGD,QAAA,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAI9B,CAAA;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAA;AAE5E,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,WAAW,CACnB,mBAAmB,EACnB,2BAA2B,GAAG,YAAY,CAC3C,EAAE,GACF,CAAC,CAAC,kBAAkB,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAExD"}
@@ -1,76 +1,76 @@
1
- import { MAX_STRING_SIZE as e, canHaveMaxListLength as t, canHaveSize as n } from "../TableColumnSchemaEditorUtils.js";
2
- import { getDefaultValueValidator as r } from "./DefaultValueValidator.js";
3
- import i from "./EnumValuesValidator.js";
4
- import { optionalStringSchema as a } from "./OptionalStringSchema.js";
5
- import { omit as o } from "lodash-es";
6
- import { ColumnTypeEnum as s } from "@sage-bionetworks/synapse-types";
7
- import { z as c } from "zod";
1
+ import { DISALLOWED_DEFAULT_VALUE_COLUMN_TYPES as e, MAX_STRING_SIZE as t, canHaveMaxListLength as n, canHaveSize as r, getMaxListLengthForType as i } from "../TableColumnSchemaEditorUtils.js";
2
+ import { getDefaultValueValidator as a } from "./DefaultValueValidator.js";
3
+ import o from "./EnumValuesValidator.js";
4
+ import { optionalStringSchema as s } from "./OptionalStringSchema.js";
5
+ import { omit as c } from "lodash-es";
6
+ import { ColumnTypeEnum as l } from "@sage-bionetworks/synapse-types";
7
+ import { z as u } from "zod";
8
8
  //#region src/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.ts
9
- var l = c.union([c.literal("enumeration"), c.literal("range")]), u = c.object({
10
- property: c.enum(["FREQUENCY", "VALUE"]).optional(),
11
- direction: c.enum(["DESC", "ASC"]).optional()
12
- }), d = c.object({
13
- name: c.string().min(1, { message: "Name is required" }),
14
- columnType: c.nativeEnum(s)
15
- }), f = d.merge(c.object({
16
- jsonPath: c.string().startsWith("$"),
17
- facetType: l
18
- })), p = d.merge(c.object({
19
- id: c.string().optional(),
20
- defaultValue: c.union([c.string(), c.array(c.any())]).optional(),
21
- maximumSize: c.union([a, c.number()]).pipe(c.coerce.number().finite().int().min(1).max(e).optional()),
22
- maximumListLength: c.union([a, c.number()]).pipe(c.coerce.number().finite().int().min(1).max(100).optional()),
23
- enumValues: c.array(c.union([c.string(), c.number().int()]).pipe(c.coerce.string())).optional(),
24
- jsonSubColumns: c.array(f).optional(),
25
- facetType: l.optional(),
26
- facetSortConfig: u.optional()
27
- })), m = p.refine((e) => e.maximumSize == null || n(e.columnType), {
9
+ var d = u.enum(["enumeration", "range"]), f = u.object({
10
+ property: u.enum(["FREQUENCY", "VALUE"]).optional(),
11
+ direction: u.enum(["DESC", "ASC"]).optional()
12
+ }), p = u.object({
13
+ name: u.string().min(1, { message: "Name is required" }).max(256, { message: "Name must be 256 characters or fewer" }),
14
+ columnType: u.enum(l)
15
+ }), m = p.extend({
16
+ jsonPath: u.string().startsWith("$"),
17
+ facetType: d
18
+ }), h = p.extend({
19
+ id: u.string().optional(),
20
+ defaultValue: u.union([u.string(), u.array(u.any())]).optional(),
21
+ maximumSize: u.union([s, u.number()]).transform((e) => typeof e == "string" ? Number(e) : e).pipe(u.number().int().min(1).max(t).optional()),
22
+ maximumListLength: u.union([s, u.number()]).transform((e) => typeof e == "string" ? Number(e) : e).pipe(u.number().int().min(1).optional()),
23
+ enumValues: u.array(u.union([u.string(), u.number().int()]).pipe(u.coerce.string())).max(100, { message: "A column may have at most 100 enumeration values" }).optional(),
24
+ jsonSubColumns: u.array(m).optional(),
25
+ facetType: d.optional(),
26
+ facetSortConfig: f.optional()
27
+ });
28
+ function g(e, t, n, r) {
29
+ let i = t.safeParse(e);
30
+ if (i.success) return i.data;
31
+ i.error.issues.forEach((e) => {
32
+ r.addIssue({
33
+ ...e,
34
+ path: [n]
35
+ });
36
+ });
37
+ }
38
+ var _ = h.refine((e) => e.maximumSize == null || r(e.columnType), {
28
39
  message: "Size is not allowed for this column type",
29
40
  path: ["maximumSize"]
30
- }).refine((e) => e.maximumListLength == null || t(e.columnType), {
41
+ }).refine((e) => e.maximumListLength == null || n(e.columnType), {
31
42
  message: "Maximum list length is not allowed for this column type",
32
43
  path: ["maximumListLength"]
33
- }).refine((e) => e.jsonSubColumns == null ? !0 : e.columnType === s.JSON, {
44
+ }).superRefine((e, t) => {
45
+ if (e.maximumListLength == null || !n(e.columnType)) return;
46
+ let r = i(e.columnType, e.maximumSize);
47
+ e.maximumListLength > r && t.addIssue({
48
+ code: "custom",
49
+ message: `Maximum list length must not exceed ${r} for this column type and element size`,
50
+ path: ["maximumListLength"]
51
+ });
52
+ }).refine((e) => e.jsonSubColumns == null ? !0 : e.columnType === l.JSON, {
34
53
  message: "Only JSON columns can have JSON sub-columns.",
35
54
  path: ["columnType"]
36
- }).transform((e, t) => {
37
- if (e.defaultValue != null) {
38
- let n = r(e.columnType).safeParse(e.defaultValue), i;
39
- return n.success ? i = n.data : (n.error.issues.forEach((e) => {
40
- t.addIssue({
41
- ...e,
42
- path: ["defaultValue"]
43
- });
44
- }), i = void 0), {
45
- ...e,
46
- defaultValue: i
47
- };
48
- }
49
- return o(e, "defaultValue");
50
- }).transform((e, t) => {
51
- if (e.enumValues != null) {
52
- let n = i(e.columnType).safeParse(e.enumValues), r;
53
- return n.success ? r = n.data : (n.error.issues.forEach((e) => {
54
- t.addIssue({
55
- ...e,
56
- path: ["enumValues"]
57
- });
58
- }), r = void 0), {
59
- ...e,
60
- enumValues: r
61
- };
62
- }
63
- return o(e, "enumValues");
64
- }), h = c.array(m), g = f.merge(c.object({ isSelected: c.boolean() }));
65
- p.merge(c.object({
66
- isSelected: c.boolean(),
67
- isOriginallyDefaultColumn: c.boolean(),
68
- jsonSubColumns: c.array(g).optional()
69
- }));
70
- function _(e) {
71
- return h.safeParse(e);
55
+ }).refine((t) => !(t.defaultValue != null && t.defaultValue !== "" && !(Array.isArray(t.defaultValue) && t.defaultValue.length === 0)) || !e.includes(t.columnType), {
56
+ message: "A default value is not allowed for this column type",
57
+ path: ["defaultValue"]
58
+ }).transform((e, t) => e.defaultValue == null ? c(e, "defaultValue") : {
59
+ ...e,
60
+ defaultValue: g(e.defaultValue, a(e.columnType), "defaultValue", t)
61
+ }).transform((e, t) => e.enumValues == null ? c(e, "enumValues") : {
62
+ ...e,
63
+ enumValues: g(e.enumValues, o(e.columnType), "enumValues", t)
64
+ }), v = u.array(_), y = m.extend({ isSelected: u.boolean() });
65
+ h.extend({
66
+ isSelected: u.boolean(),
67
+ isOriginallyDefaultColumn: u.boolean(),
68
+ jsonSubColumns: u.array(y).optional()
69
+ });
70
+ function b(e) {
71
+ return v.safeParse(e);
72
72
  }
73
73
  //#endregion
74
- export { h as columnModelFormDataZodSchema, m as columnModelZodSchema, f as jsonSubColumnModelZodSchema, _ as validateColumnModelFormData };
74
+ export { v as columnModelFormDataZodSchema, _ as columnModelZodSchema, m as jsonSubColumnModelZodSchema, b as validateColumnModelFormData };
75
75
 
76
76
  //# sourceMappingURL=ColumnModelValidator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ColumnModelValidator.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.ts"],"sourcesContent":["import { ColumnModel, ColumnTypeEnum } from '@sage-bionetworks/synapse-types'\nimport {\n canHaveMaxListLength,\n canHaveSize,\n MAX_LIST_LENGTH,\n MAX_STRING_SIZE,\n} from '../TableColumnSchemaEditorUtils'\nimport { type SafeParseReturnType, z } from 'zod'\nimport { SetOptional } from 'type-fest'\nimport { getDefaultValueValidator } from './DefaultValueValidator'\nimport getEnumValuesValidator from './EnumValuesValidator'\nimport { optionalStringSchema } from './OptionalStringSchema'\nimport { omit } from 'lodash-es'\n\nconst facetTypeSchema = z.union([z.literal('enumeration'), z.literal('range')])\n\nconst facetColumnSortConfigSchema = z.object({\n property: z.enum(['FREQUENCY', 'VALUE']).optional(),\n direction: z.enum(['DESC', 'ASC']).optional(),\n})\n\nconst columnModelBaseZodSchema = z.object({\n name: z.string().min(1, { message: 'Name is required' }),\n columnType: z.nativeEnum(ColumnTypeEnum),\n})\n\nexport const jsonSubColumnModelZodSchema = columnModelBaseZodSchema.merge(\n z.object({\n jsonPath: z.string().startsWith('$'),\n facetType: facetTypeSchema,\n }),\n)\n\n/**\n * Zod schema whose shape represents a ColumnModel. This unrefined schema is saved in this \"intermediate\" state so\n * that it can be extended with `.merge` to create an inferred type that can applied to form data.\n */\nconst unrefinedColumnModelSchema = columnModelBaseZodSchema.merge(\n z.object({\n id: z.string().optional(),\n defaultValue: z.union([z.string(), z.array(z.any())]).optional(),\n maximumSize: z\n .union([optionalStringSchema, z.number()])\n .pipe(\n z.coerce.number().finite().int().min(1).max(MAX_STRING_SIZE).optional(),\n ),\n maximumListLength: z\n .union([optionalStringSchema, z.number()])\n .pipe(\n z.coerce.number().finite().int().min(1).max(MAX_LIST_LENGTH).optional(),\n ),\n enumValues: z\n .array(\n z\n .union([\n z.string(),\n // enumValues is allowed on INTEGER type, but the backend stores them as strings, so allow passing integers\n z.number().int(),\n ])\n .pipe(z.coerce.string()),\n )\n .optional(),\n jsonSubColumns: z.array(jsonSubColumnModelZodSchema).optional(),\n facetType: facetTypeSchema.optional(),\n facetSortConfig: facetColumnSortConfigSchema.optional(),\n }),\n)\n\n/**\n * Zod schema to validate a column model. The provided data is coerced and transformed to match the ColumnModel type.\n * For this reason, form data may be directly passed into this schema parser.\n *\n * The parse method will return a ColumnModel where all data is properly formed.\n */\nexport const columnModelZodSchema = unrefinedColumnModelSchema\n .refine(data => data.maximumSize == null || canHaveSize(data.columnType), {\n message: 'Size is not allowed for this column type',\n path: ['maximumSize'],\n })\n .refine(\n data =>\n data.maximumListLength == null || canHaveMaxListLength(data.columnType),\n {\n message: 'Maximum list length is not allowed for this column type',\n path: ['maximumListLength'],\n },\n )\n .refine(\n data => {\n if (data.jsonSubColumns != null) {\n return data.columnType === ColumnTypeEnum.JSON\n }\n return true\n },\n {\n message: 'Only JSON columns can have JSON sub-columns.',\n path: ['columnType'],\n },\n )\n .transform((data, ctx) => {\n if (data.defaultValue != null) {\n // Validate and transform the defaultValue based on the columnType\n const defaultValueSchema = getDefaultValueValidator(data.columnType)\n const result = defaultValueSchema.safeParse(data.defaultValue)\n let transformedValue: string | undefined\n if (result.success) {\n transformedValue = result.data\n } else {\n result.error.issues.forEach(issue => {\n ctx.addIssue({ ...issue, path: ['defaultValue'] })\n })\n transformedValue = undefined\n }\n return { ...data, defaultValue: transformedValue }\n }\n return omit(data, 'defaultValue')\n })\n .transform((data, ctx) => {\n // NOTE: This is the same set of steps as the `defaultValue` transform\n // We may be able to refactor this, but it is challenging to do so without breaking the schema's inferred type\n if (data.enumValues != null) {\n // Validate and transform the defaultValue based on the columnType\n const enumValuesSchema = getEnumValuesValidator(data.columnType)\n const result = enumValuesSchema.safeParse(data.enumValues)\n let transformedValue: string[] | undefined\n if (result.success) {\n transformedValue = result.data\n } else {\n result.error.issues.forEach(issue => {\n ctx.addIssue({ ...issue, path: ['enumValues'] })\n })\n transformedValue = undefined\n }\n return { ...data, enumValues: transformedValue }\n }\n return omit(data, 'enumValues')\n })\n\nexport const columnModelFormDataZodSchema = z.array(columnModelZodSchema)\n\nconst jsonSubColumnModelFormDataSchema = jsonSubColumnModelZodSchema.merge(\n z.object({\n isSelected: z.boolean(),\n }),\n)\n\nexport type JsonSubColumnModelFormData = z.input<\n typeof jsonSubColumnModelFormDataSchema\n>\n\n// Use the \"unrefined\" schema since we can extend it with form-only fields\nconst _columnModelFormDataSchema = unrefinedColumnModelSchema.merge(\n z.object({\n isSelected: z.boolean(),\n isOriginallyDefaultColumn: z.boolean(),\n jsonSubColumns: z.array(jsonSubColumnModelFormDataSchema).optional(),\n }),\n)\n\n/**\n * Type that represents possible form input data for a ColumnModel.\n * a\n */\nexport type ColumnModelFormData = z.input<typeof _columnModelFormDataSchema>\n\nexport function validateColumnModelFormData(\n formData: SetOptional<\n ColumnModelFormData,\n 'isOriginallyDefaultColumn' | 'isSelected'\n >[],\n): SafeParseReturnType<\n SetOptional<\n ColumnModelFormData,\n 'isOriginallyDefaultColumn' | 'isSelected'\n >[],\n SetOptional<ColumnModel, 'id'>[]\n> {\n return columnModelFormDataZodSchema.safeParse(formData)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"ColumnModelValidator.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/ColumnModelValidator.ts"],"sourcesContent":["import { ColumnModel, ColumnTypeEnum } from '@sage-bionetworks/synapse-types'\nimport {\n canHaveMaxListLength,\n canHaveSize,\n DISALLOWED_DEFAULT_VALUE_COLUMN_TYPES,\n getMaxListLengthForType,\n MAX_COLUMN_NAME_LENGTH,\n MAX_ENUM_VALUES,\n MAX_STRING_SIZE,\n} from '../TableColumnSchemaEditorUtils'\nimport { z, ZodType } from 'zod'\nimport { SetOptional } from 'type-fest'\nimport { getDefaultValueValidator } from './DefaultValueValidator'\nimport getEnumValuesValidator from './EnumValuesValidator'\nimport { optionalStringSchema } from './OptionalStringSchema'\nimport { omit } from 'lodash-es'\n\nconst facetTypeSchema = z.enum(['enumeration', 'range'])\n\nconst facetColumnSortConfigSchema = z.object({\n property: z.enum(['FREQUENCY', 'VALUE']).optional(),\n direction: z.enum(['DESC', 'ASC']).optional(),\n})\n\nconst columnModelBaseZodSchema = z.object({\n name: z\n .string()\n .min(1, { message: 'Name is required' })\n .max(MAX_COLUMN_NAME_LENGTH, {\n message: `Name must be ${MAX_COLUMN_NAME_LENGTH} characters or fewer`,\n }),\n columnType: z.enum(ColumnTypeEnum),\n})\n\nexport const jsonSubColumnModelZodSchema = columnModelBaseZodSchema.extend({\n jsonPath: z.string().startsWith('$'),\n facetType: facetTypeSchema,\n})\n\n/**\n * Zod schema whose shape represents a ColumnModel. This unrefined schema is saved in this \"intermediate\" state so\n * that it can be extended to create an inferred type that can applied to form data.\n */\nconst unrefinedColumnModelSchema = columnModelBaseZodSchema.extend({\n id: z.string().optional(),\n defaultValue: z.union([z.string(), z.array(z.any())]).optional(),\n maximumSize: z\n .union([optionalStringSchema, z.number()])\n // Convert string input to a number before validating\n .transform(v => (typeof v === 'string' ? Number(v) : v))\n .pipe(z.number().int().min(1).max(MAX_STRING_SIZE).optional()),\n maximumListLength: z\n .union([optionalStringSchema, z.number()])\n .transform(v => (typeof v === 'string' ? Number(v) : v))\n .pipe(z.number().int().min(1).optional()),\n enumValues: z\n .array(\n z\n .union([\n z.string(),\n // enumValues is allowed on INTEGER type, but the backend stores them as strings, so allow passing integers\n z.number().int(),\n ])\n .pipe(z.coerce.string()),\n )\n .max(MAX_ENUM_VALUES, {\n message: `A column may have at most ${MAX_ENUM_VALUES} enumeration values`,\n })\n .optional(),\n jsonSubColumns: z.array(jsonSubColumnModelZodSchema).optional(),\n facetType: facetTypeSchema.optional(),\n facetSortConfig: facetColumnSortConfigSchema.optional(),\n})\n\n/**\n * Runs a field-specific sub-validator against a value, forwarding any issues to the parent\n * context (re-pathed to `path`). Returns the transformed value, or undefined if validation failed.\n */\nfunction parseSubField<T>(\n value: unknown,\n schema: ZodType<T | undefined>,\n path: string,\n ctx: z.RefinementCtx,\n): T | undefined {\n const result = schema.safeParse(value)\n if (result.success) {\n return result.data\n }\n result.error.issues.forEach(issue => {\n ctx.addIssue({ ...issue, path: [path] })\n })\n return undefined\n}\n\n/**\n * Zod schema to validate a column model. The provided data is coerced and transformed to match the ColumnModel type.\n * For this reason, form data may be directly passed into this schema parser.\n *\n * The parse method will return a ColumnModel where all data is properly formed.\n */\nexport const columnModelZodSchema = unrefinedColumnModelSchema\n .refine(data => data.maximumSize == null || canHaveSize(data.columnType), {\n message: 'Size is not allowed for this column type',\n path: ['maximumSize'],\n })\n .refine(\n data =>\n data.maximumListLength == null || canHaveMaxListLength(data.columnType),\n {\n message: 'Maximum list length is not allowed for this column type',\n path: ['maximumListLength'],\n },\n )\n .superRefine((data, ctx) => {\n if (\n data.maximumListLength == null ||\n !canHaveMaxListLength(data.columnType)\n ) {\n // Either no list length is set, or a previous refinement already rejected it\n return\n }\n const maxListLength = getMaxListLengthForType(\n data.columnType,\n data.maximumSize,\n )\n if (data.maximumListLength > maxListLength) {\n ctx.addIssue({\n code: 'custom',\n message: `Maximum list length must not exceed ${maxListLength} for this column type and element size`,\n path: ['maximumListLength'],\n })\n }\n })\n .refine(\n data => {\n if (data.jsonSubColumns != null) {\n return data.columnType === ColumnTypeEnum.JSON\n }\n return true\n },\n {\n message: 'Only JSON columns can have JSON sub-columns.',\n path: ['columnType'],\n },\n )\n .refine(\n data => {\n // An empty string or empty array is treated as \"no default value\" (see the defaultValue transform below)\n const hasDefaultValue =\n data.defaultValue != null &&\n data.defaultValue !== '' &&\n !(Array.isArray(data.defaultValue) && data.defaultValue.length === 0)\n return (\n !hasDefaultValue ||\n !DISALLOWED_DEFAULT_VALUE_COLUMN_TYPES.includes(data.columnType)\n )\n },\n {\n message: 'A default value is not allowed for this column type',\n path: ['defaultValue'],\n },\n )\n .transform((data, ctx) => {\n // Validate and transform the defaultValue based on the columnType\n if (data.defaultValue == null) {\n return omit(data, 'defaultValue')\n }\n return {\n ...data,\n defaultValue: parseSubField(\n data.defaultValue,\n getDefaultValueValidator(data.columnType),\n 'defaultValue',\n ctx,\n ),\n }\n })\n .transform((data, ctx) => {\n // Validate and transform the enumValues based on the columnType\n if (data.enumValues == null) {\n return omit(data, 'enumValues')\n }\n return {\n ...data,\n enumValues: parseSubField(\n data.enumValues,\n getEnumValuesValidator(data.columnType),\n 'enumValues',\n ctx,\n ),\n }\n })\n\nexport const columnModelFormDataZodSchema = z.array(columnModelZodSchema)\n\nconst jsonSubColumnModelFormDataSchema = jsonSubColumnModelZodSchema.extend({\n isSelected: z.boolean(),\n})\n\nexport type JsonSubColumnModelFormData = z.input<\n typeof jsonSubColumnModelFormDataSchema\n>\n\n// Use the \"unrefined\" schema since we can extend it with form-only fields\nconst _columnModelFormDataSchema = unrefinedColumnModelSchema.extend({\n isSelected: z.boolean(),\n isOriginallyDefaultColumn: z.boolean(),\n jsonSubColumns: z.array(jsonSubColumnModelFormDataSchema).optional(),\n})\n\n/**\n * Type that represents possible form input data for a ColumnModel.\n * a\n */\nexport type ColumnModelFormData = z.input<typeof _columnModelFormDataSchema>\n\nexport function validateColumnModelFormData(\n formData: SetOptional<\n ColumnModelFormData,\n 'isOriginallyDefaultColumn' | 'isSelected'\n >[],\n): z.ZodSafeParseResult<SetOptional<ColumnModel, 'id'>[]> {\n return columnModelFormDataZodSchema.safeParse(formData)\n}\n"],"mappings":"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"}
@@ -2,5 +2,5 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Validates and converts a value to a valid Synapse DATE value
4
4
  */
5
- export declare const dateTimeSchema: z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodEffects<z.ZodString, string, string>, z.ZodDate]>, string, string | number | Date>;
5
+ export declare const dateTimeSchema: z.ZodPipe<z.ZodUnion<readonly [z.ZodNumber, z.ZodPipe<z.ZodString, z.ZodTransform<string, string>>, z.ZodDate]>, z.ZodTransform<string, string | number | Date>>;
6
6
  //# sourceMappingURL=DatetimeSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DatetimeSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/DatetimeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgBvB;;GAEG;AACH,eAAO,MAAM,cAAc,+HAEkC,CAAA"}
1
+ {"version":3,"file":"DatetimeSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/DatetimeSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAgBvB;;GAEG;AACH,eAAO,MAAM,cAAc,kKAEkC,CAAA"}
@@ -2,5 +2,5 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Validates and converts a value to a valid Synapse DOUBLE value. Zod will return an error if the value cannot be converted to a number.
4
4
  */
5
- export declare const doubleSchema: z.ZodEffects<z.ZodUnion<[z.ZodNumber, z.ZodNaN, z.ZodEffects<z.ZodString, string | number, string>]>, string | number, string | number>;
5
+ export declare const doubleSchema: z.ZodPipe<z.ZodUnion<readonly [z.ZodCustom<number, number>, z.ZodPipe<z.ZodString, z.ZodTransform<string | number, string>>]>, z.ZodTransform<string | number, string | number>>;
6
6
  //# sourceMappingURL=DoubleSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/DoubleSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAwBvB;;GAEG;AACH,eAAO,MAAM,YAAY,yIAerB,CAAA"}
1
+ {"version":3,"file":"DoubleSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/DoubleSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA4BvB;;GAEG;AACH,eAAO,MAAM,YAAY,kLAiBrB,CAAA"}
@@ -1,25 +1,18 @@
1
1
  import { z as e } from "zod";
2
2
  //#region src/components/TableColumnSchemaEditor/Validators/DoubleSchema.ts
3
- var t = e.string().transform((t, n) => {
3
+ var t = e.custom((e) => typeof e == "number"), n = e.string().transform((t, n) => {
4
4
  if ([
5
5
  "NaN",
6
6
  "Infinity",
7
7
  "-Infinity"
8
8
  ].includes(t)) return t;
9
9
  let r = Number(t);
10
- return isNaN(r) && n.addIssue({
11
- code: e.ZodIssueCode.invalid_type,
12
- expected: "number",
13
- received: "string",
14
- path: [],
10
+ return isNaN(r) ? (n.addIssue({
11
+ code: "custom",
15
12
  message: "Must be a number"
16
- }), r;
17
- }), n = e.union([
18
- e.number(),
19
- e.nan(),
20
- t
21
- ]).transform((e) => typeof e == "number" ? isNaN(e) ? "NaN" : e === Infinity ? "Infinity" : e === -Infinity ? "-Infinity" : e : e);
13
+ }), e.NEVER) : r;
14
+ }), r = e.union([t, n]).transform((e) => typeof e == "number" ? isNaN(e) ? "NaN" : e === Infinity ? "Infinity" : e === -Infinity ? "-Infinity" : e : e);
22
15
  //#endregion
23
- export { n as doubleSchema };
16
+ export { r as doubleSchema };
24
17
 
25
18
  //# sourceMappingURL=DoubleSchema.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DoubleSchema.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/DoubleSchema.ts"],"sourcesContent":["import { z } from 'zod'\n\n/**\n * Schema that converts strings to valid Synapse DOUBLE values. Zod will return an error if the string cannot be parsed as a number.\n */\nconst doubleString = z.string().transform((data, ctx) => {\n // Synapse permits NaN/Infinity, so we can keep these strings\n if (['NaN', 'Infinity', '-Infinity'].includes(data)) {\n return data\n }\n const parsed = Number(data)\n // If the parse result is NaN, then this was not a valid number\n if (isNaN(parsed)) {\n ctx.addIssue({\n code: z.ZodIssueCode.invalid_type,\n expected: 'number',\n received: 'string',\n path: [],\n message: 'Must be a number',\n })\n }\n return parsed\n})\n\n/**\n * Validates and converts a value to a valid Synapse DOUBLE value. Zod will return an error if the value cannot be converted to a number.\n */\nexport const doubleSchema = z\n .union([z.number(), z.nan(), doubleString])\n .transform((val): string | number => {\n if (typeof val === 'number') {\n // JSON does not support NaN/Infinity, but Synapse does if they are strings\n if (isNaN(val)) {\n return 'NaN'\n } else if (val === Infinity) {\n return 'Infinity'\n } else if (val === -Infinity) {\n return '-Infinity'\n }\n return val\n }\n return val\n })\n"],"mappings":";;AAKA,IAAM,IAAe,EAAE,OAAO,EAAE,WAAW,GAAM,MAAQ;CAEvD,IAAI;EAAC;EAAO;EAAY;CAAW,EAAE,SAAS,CAAI,GAChD,OAAO;CAET,IAAM,IAAS,OAAO,CAAI;CAW1B,OATI,MAAM,CAAM,KACd,EAAI,SAAS;EACX,MAAM,EAAE,aAAa;EACrB,UAAU;EACV,UAAU;EACV,MAAM,CAAC;EACP,SAAS;CACX,CAAC,GAEI;AACT,CAAC,GAKY,IAAe,EACzB,MAAM;CAAC,EAAE,OAAO;CAAG,EAAE,IAAI;CAAG;AAAY,CAAC,EACzC,WAAW,MACN,OAAO,KAAQ,WAEb,MAAM,CAAG,IACJ,QACE,MAAQ,WACV,aACE,MAAQ,YACV,cAEF,IAEF,CACR"}
1
+ {"version":3,"file":"DoubleSchema.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/DoubleSchema.ts"],"sourcesContent":["import { z } from 'zod'\n\n/**\n * Accepts any JavaScript number, including NaN and +/-Infinity. In zod 4, `z.number()`\n * only accepts finite values, but Synapse DOUBLE columns support NaN and +/- Infinity (as strings).\n */\nconst anyNumberSchema = z.custom<number>(val => typeof val === 'number')\n\n/**\n * Schema that converts strings to valid Synapse DOUBLE values. Zod will return an error if the string cannot be parsed as a number.\n */\nconst doubleString = z.string().transform((data, ctx) => {\n // Synapse permits NaN/Infinity, so we can keep these strings\n if (['NaN', 'Infinity', '-Infinity'].includes(data)) {\n return data\n }\n const parsed = Number(data)\n // If the parse result is NaN, then this was not a valid number\n if (isNaN(parsed)) {\n ctx.addIssue({\n code: 'custom',\n message: 'Must be a number',\n })\n return z.NEVER\n }\n return parsed\n})\n\n/**\n * Validates and converts a value to a valid Synapse DOUBLE value. Zod will return an error if the value cannot be converted to a number.\n */\nexport const doubleSchema = z\n .union([anyNumberSchema, doubleString])\n .transform((val): string | number => {\n // JSON does not support NaN/Infinity, but Synapse does if they are strings\n if (typeof val !== 'number') {\n return val\n }\n if (isNaN(val)) {\n return 'NaN'\n }\n if (val === Infinity) {\n return 'Infinity'\n }\n if (val === -Infinity) {\n return '-Infinity'\n }\n return val\n })\n"],"mappings":";;AAMA,IAAM,IAAkB,EAAE,QAAe,MAAO,OAAO,KAAQ,QAAQ,GAKjE,IAAe,EAAE,OAAO,EAAE,WAAW,GAAM,MAAQ;CAEvD,IAAI;EAAC;EAAO;EAAY;CAAW,EAAE,SAAS,CAAI,GAChD,OAAO;CAET,IAAM,IAAS,OAAO,CAAI;CAS1B,OAPI,MAAM,CAAM,KACd,EAAI,SAAS;EACX,MAAM;EACN,SAAS;CACX,CAAC,GACM,EAAE,SAEJ;AACT,CAAC,GAKY,IAAe,EACzB,MAAM,CAAC,GAAiB,CAAY,CAAC,EACrC,WAAW,MAEN,OAAO,KAAQ,WAGf,MAAM,CAAG,IACJ,QAEL,MAAQ,WACH,aAEL,MAAQ,YACH,cAEF,IAXE,CAYV"}
@@ -2,5 +2,5 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Validates and converts a value to a valid Synapse ENTITYID value
4
4
  */
5
- export declare const entityIdSchema: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
5
+ export declare const entityIdSchema: z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>;
6
6
  //# sourceMappingURL=EntityIdSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EntityIdSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/EntityIdSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,cAAc,wCAIzB,CAAA"}
1
+ {"version":3,"file":"EntityIdSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/EntityIdSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,cAAc,iDAIzB,CAAA"}
@@ -2,5 +2,5 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Validates and converts a value to a valid Synapse INTEGER value
4
4
  */
5
- export declare const integerSchema: z.ZodPipeline<z.ZodUnion<[z.ZodEffects<z.ZodString, string | null, string>, z.ZodNull, z.ZodNumber]>, z.ZodUnion<[z.ZodNull, z.ZodNumber]>>;
5
+ export declare const integerSchema: z.ZodPipe<z.ZodUnion<readonly [z.ZodPipe<z.ZodString, z.ZodTransform<number | null, string>>, z.ZodNull, z.ZodNumber]>, z.ZodUnion<readonly [z.ZodNull, z.ZodNumber]>>;
6
6
  //# sourceMappingURL=IntegerSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/IntegerSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,aAAa,6IAS2B,CAAA"}
1
+ {"version":3,"file":"IntegerSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/IntegerSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,aAAa,wKASoB,CAAA"}
@@ -1,10 +1,10 @@
1
1
  import { z as e } from "zod";
2
2
  //#region src/components/TableColumnSchemaEditor/Validators/IntegerSchema.ts
3
3
  var t = e.union([
4
- e.string().transform((e) => e === "" ? null : e),
4
+ e.string().transform((e) => e === "" ? null : Number(e)),
5
5
  e.null(),
6
6
  e.number().int()
7
- ]).pipe(e.union([e.null(), e.coerce.number().int()]));
7
+ ]).pipe(e.union([e.null(), e.number().int()]));
8
8
  //#endregion
9
9
  export { t as integerSchema };
10
10
 
@@ -1 +1 @@
1
- {"version":3,"file":"IntegerSchema.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/IntegerSchema.ts"],"sourcesContent":["import { z } from 'zod'\n\n/**\n * Validates and converts a value to a valid Synapse INTEGER value\n */\nexport const integerSchema = z\n .union([\n z\n .string()\n // Transform empty string to null\n .transform(data => (data === '' ? null : data)),\n z.null(),\n z.number().int(),\n ])\n .pipe(z.union([z.null(), z.coerce.number().int()]))\n"],"mappings":";;AAKA,IAAa,IAAgB,EAC1B,MAAM;CACL,EACG,OAAO,EAEP,WAAU,MAAS,MAAS,KAAK,OAAO,CAAK;CAChD,EAAE,KAAK;CACP,EAAE,OAAO,EAAE,IAAI;AACjB,CAAC,EACA,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,OAAO,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"IntegerSchema.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/IntegerSchema.ts"],"sourcesContent":["import { z } from 'zod'\n\n/**\n * Validates and converts a value to a valid Synapse INTEGER value\n */\nexport const integerSchema = z\n .union([\n z\n .string()\n // Transform empty string to null, otherwise convert to a number\n .transform(data => (data === '' ? null : Number(data))),\n z.null(),\n z.number().int(),\n ])\n .pipe(z.union([z.null(), z.number().int()]))\n"],"mappings":";;AAKA,IAAa,IAAgB,EAC1B,MAAM;CACL,EACG,OAAO,EAEP,WAAU,MAAS,MAAS,KAAK,OAAO,OAAO,CAAI,CAAE;CACxD,EAAE,KAAK;CACP,EAAE,OAAO,EAAE,IAAI;AACjB,CAAC,EACA,KAAK,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC"}
@@ -2,5 +2,5 @@ import { z } from 'zod';
2
2
  /**
3
3
  * Schema for an optional string. Converts empty string to undefined.
4
4
  */
5
- export declare const optionalStringSchema: z.ZodEffects<z.ZodOptional<z.ZodString>, string | undefined, string | undefined>;
5
+ export declare const optionalStringSchema: z.ZodPipe<z.ZodOptional<z.ZodString>, z.ZodTransform<string | undefined, string | undefined>>;
6
6
  //# sourceMappingURL=OptionalStringSchema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OptionalStringSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,oBAAoB,kFAGY,CAAA"}
1
+ {"version":3,"file":"OptionalStringSchema.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/OptionalStringSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB;;GAEG;AACH,eAAO,MAAM,oBAAoB,+FAGY,CAAA"}
@@ -1,4 +1,4 @@
1
1
  import { ColumnTypeEnum } from '@sage-bionetworks/synapse-types';
2
- import { ZodTypeAny } from 'zod';
3
- export default function getZodSchemaForColumnType(columnType: ColumnTypeEnum): ZodTypeAny;
2
+ import { ZodType } from 'zod';
3
+ export default function getZodSchemaForColumnType(columnType: ColumnTypeEnum): ZodType;
4
4
  //# sourceMappingURL=getZodSchemaForColumnType.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getZodSchemaForColumnType.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,EAAK,UAAU,EAAE,MAAM,KAAK,CAAA;AAyBnC,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,UAAU,EAAE,cAAc,GACzB,UAAU,CAoDZ"}
1
+ {"version":3,"file":"getZodSchemaForColumnType.d.ts","sourceRoot":"","sources":["../../../../src/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAEhE,OAAO,EAAK,OAAO,EAAE,MAAM,KAAK,CAAA;AA0BhC,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAC/C,UAAU,EAAE,cAAc,GACzB,OAAO,CA6CT"}
@@ -9,17 +9,16 @@ import { z as o } from "zod";
9
9
  var s = o.string().transform((e, t) => {
10
10
  try {
11
11
  let n = JSON.parse(e);
12
- return Array.isArray(n) || t.addIssue({
13
- code: o.ZodIssueCode.custom,
12
+ return Array.isArray(n) ? n : (t.addIssue({
13
+ code: "custom",
14
14
  message: "Object was valid JSON, but was not an array"
15
- }), n;
15
+ }), o.NEVER);
16
16
  } catch {
17
- t.addIssue({
18
- code: o.ZodIssueCode.custom,
17
+ return t.addIssue({
18
+ code: "custom",
19
19
  message: "Invalid JSON array"
20
- });
20
+ }), o.NEVER;
21
21
  }
22
- return e;
23
22
  });
24
23
  function c(l) {
25
24
  if (l.endsWith("_LIST")) {
@@ -27,19 +26,19 @@ function c(l) {
27
26
  return o.union([o.array(e), s.pipe(o.array(e))]);
28
27
  }
29
28
  switch (l) {
30
- case a.STRING: return o.coerce.string();
29
+ case a.STRING:
30
+ case a.LINK:
31
+ case a.MEDIUMTEXT:
32
+ case a.LARGETEXT: return o.coerce.string();
31
33
  case a.BOOLEAN: return n;
32
- case a.INTEGER: return r;
34
+ case a.INTEGER:
35
+ case a.FILEHANDLEID:
36
+ case a.USERID:
37
+ case a.EVALUATIONID:
38
+ case a.SUBMISSIONID: return r;
33
39
  case a.DOUBLE: return e;
34
40
  case a.DATE: return t;
35
- case a.FILEHANDLEID: return r;
36
41
  case a.ENTITYID: return i;
37
- case a.LINK: return o.coerce.string();
38
- case a.MEDIUMTEXT: return o.coerce.string();
39
- case a.LARGETEXT: return o.coerce.string();
40
- case a.USERID: return r;
41
- case a.EVALUATIONID: return r;
42
- case a.SUBMISSIONID: return r;
43
42
  case a.JSON: return o.string().refine((e) => {
44
43
  try {
45
44
  return JSON.parse(e), !0;
@@ -1 +1 @@
1
- {"version":3,"file":"getZodSchemaForColumnType.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.ts"],"sourcesContent":["import { ColumnTypeEnum } from '@sage-bionetworks/synapse-types'\nimport { doubleSchema } from './DoubleSchema'\nimport { z, ZodTypeAny } from 'zod'\nimport { dateTimeSchema } from './DatetimeSchema'\nimport { booleanSchema } from './BooleanSchema'\nimport { integerSchema } from './IntegerSchema'\nimport { entityIdSchema } from './EntityIdSchema'\n\nconst arraySerializedAsStringSchema = z.string().transform((data, ctx) => {\n try {\n const parsed = JSON.parse(data)\n if (!Array.isArray(parsed)) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Object was valid JSON, but was not an array',\n })\n }\n return parsed\n } catch (e) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'Invalid JSON array',\n })\n }\n return data\n})\n\nexport default function getZodSchemaForColumnType(\n columnType: ColumnTypeEnum,\n): ZodTypeAny {\n if (columnType.endsWith('_LIST')) {\n const baseSchema = getZodSchemaForColumnType(\n columnType.replace('_LIST', '') as ColumnTypeEnum,\n )\n return z.union([\n z.array(baseSchema),\n // Also handle cases where the array is serialized as a string\n arraySerializedAsStringSchema.pipe(z.array(baseSchema)),\n ])\n }\n\n switch (columnType) {\n case ColumnTypeEnum.STRING:\n return z.coerce.string()\n case ColumnTypeEnum.BOOLEAN:\n return booleanSchema\n case ColumnTypeEnum.INTEGER:\n return integerSchema\n case ColumnTypeEnum.DOUBLE:\n return doubleSchema\n case ColumnTypeEnum.DATE:\n return dateTimeSchema\n case ColumnTypeEnum.FILEHANDLEID:\n return integerSchema\n case ColumnTypeEnum.ENTITYID:\n return entityIdSchema\n case ColumnTypeEnum.LINK:\n return z.coerce.string()\n case ColumnTypeEnum.MEDIUMTEXT:\n return z.coerce.string()\n case ColumnTypeEnum.LARGETEXT:\n return z.coerce.string()\n case ColumnTypeEnum.USERID:\n return integerSchema\n case ColumnTypeEnum.EVALUATIONID:\n return integerSchema\n case ColumnTypeEnum.SUBMISSIONID:\n return integerSchema\n case ColumnTypeEnum.JSON:\n return z.string().refine(v => {\n try {\n JSON.parse(v)\n return true\n } catch (e) {\n return false\n }\n })\n default:\n console.warn(`No validator for column type ${columnType}`)\n return z.any()\n }\n}\n"],"mappings":";;;;;;;;AAQA,IAAM,IAAgC,EAAE,OAAO,EAAE,WAAW,GAAM,MAAQ;CACxE,IAAI;EACF,IAAM,IAAS,KAAK,MAAM,CAAI;EAO9B,OANK,MAAM,QAAQ,CAAM,KACvB,EAAI,SAAS;GACX,MAAM,EAAE,aAAa;GACrB,SAAS;EACX,CAAC,GAEI;CACT,QAAY;EACV,EAAI,SAAS;GACX,MAAM,EAAE,aAAa;GACrB,SAAS;EACX,CAAC;CACH;CACA,OAAO;AACT,CAAC;AAED,SAAwB,EACtB,GACY;CACZ,IAAI,EAAW,SAAS,OAAO,GAAG;EAChC,IAAM,IAAa,EACjB,EAAW,QAAQ,SAAS,EAAE,CAChC;EACA,OAAO,EAAE,MAAM,CACb,EAAE,MAAM,CAAU,GAElB,EAA8B,KAAK,EAAE,MAAM,CAAU,CAAC,CACxD,CAAC;CACH;CAEA,QAAQ,GAAR;EACE,KAAK,EAAe,QAClB,OAAO,EAAE,OAAO,OAAO;EACzB,KAAK,EAAe,SAClB,OAAO;EACT,KAAK,EAAe,SAClB,OAAO;EACT,KAAK,EAAe,QAClB,OAAO;EACT,KAAK,EAAe,MAClB,OAAO;EACT,KAAK,EAAe,cAClB,OAAO;EACT,KAAK,EAAe,UAClB,OAAO;EACT,KAAK,EAAe,MAClB,OAAO,EAAE,OAAO,OAAO;EACzB,KAAK,EAAe,YAClB,OAAO,EAAE,OAAO,OAAO;EACzB,KAAK,EAAe,WAClB,OAAO,EAAE,OAAO,OAAO;EACzB,KAAK,EAAe,QAClB,OAAO;EACT,KAAK,EAAe,cAClB,OAAO;EACT,KAAK,EAAe,cAClB,OAAO;EACT,KAAK,EAAe,MAClB,OAAO,EAAE,OAAO,EAAE,QAAO,MAAK;GAC5B,IAAI;IAEF,OADA,KAAK,MAAM,CAAC,GACL;GACT,QAAY;IACV,OAAO;GACT;EACF,CAAC;EACH,SAEE,OADA,QAAQ,KAAK,gCAAgC,GAAY,GAClD,EAAE,IAAI;CACjB;AACF"}
1
+ {"version":3,"file":"getZodSchemaForColumnType.js","names":[],"sources":["../../../../src/components/TableColumnSchemaEditor/Validators/getZodSchemaForColumnType.ts"],"sourcesContent":["import { ColumnTypeEnum } from '@sage-bionetworks/synapse-types'\nimport { doubleSchema } from './DoubleSchema'\nimport { z, ZodType } from 'zod'\nimport { dateTimeSchema } from './DatetimeSchema'\nimport { booleanSchema } from './BooleanSchema'\nimport { integerSchema } from './IntegerSchema'\nimport { entityIdSchema } from './EntityIdSchema'\n\nconst arraySerializedAsStringSchema = z.string().transform((data, ctx) => {\n try {\n const parsed = JSON.parse(data)\n if (!Array.isArray(parsed)) {\n ctx.addIssue({\n code: 'custom',\n message: 'Object was valid JSON, but was not an array',\n })\n return z.NEVER\n }\n return parsed\n } catch (e) {\n ctx.addIssue({\n code: 'custom',\n message: 'Invalid JSON array',\n })\n return z.NEVER\n }\n})\n\nexport default function getZodSchemaForColumnType(\n columnType: ColumnTypeEnum,\n): ZodType {\n if (columnType.endsWith('_LIST')) {\n const baseSchema = getZodSchemaForColumnType(\n columnType.replace('_LIST', '') as ColumnTypeEnum,\n )\n return z.union([\n z.array(baseSchema),\n // Also handle cases where the array is serialized as a string\n arraySerializedAsStringSchema.pipe(z.array(baseSchema)),\n ])\n }\n\n switch (columnType) {\n case ColumnTypeEnum.STRING:\n case ColumnTypeEnum.LINK:\n case ColumnTypeEnum.MEDIUMTEXT:\n case ColumnTypeEnum.LARGETEXT:\n return z.coerce.string()\n case ColumnTypeEnum.BOOLEAN:\n return booleanSchema\n case ColumnTypeEnum.INTEGER:\n case ColumnTypeEnum.FILEHANDLEID:\n case ColumnTypeEnum.USERID:\n case ColumnTypeEnum.EVALUATIONID:\n case ColumnTypeEnum.SUBMISSIONID:\n return integerSchema\n case ColumnTypeEnum.DOUBLE:\n return doubleSchema\n case ColumnTypeEnum.DATE:\n return dateTimeSchema\n case ColumnTypeEnum.ENTITYID:\n return entityIdSchema\n case ColumnTypeEnum.JSON:\n return z.string().refine(v => {\n try {\n JSON.parse(v)\n return true\n } catch (e) {\n return false\n }\n })\n default:\n console.warn(`No validator for column type ${columnType}`)\n return z.any()\n }\n}\n"],"mappings":";;;;;;;;AAQA,IAAM,IAAgC,EAAE,OAAO,EAAE,WAAW,GAAM,MAAQ;CACxE,IAAI;EACF,IAAM,IAAS,KAAK,MAAM,CAAI;EAQ9B,OAPK,MAAM,QAAQ,CAAM,IAOlB,KANL,EAAI,SAAS;GACX,MAAM;GACN,SAAS;EACX,CAAC,GACM,EAAE;CAGb,QAAY;EAKV,OAJA,EAAI,SAAS;GACX,MAAM;GACN,SAAS;EACX,CAAC,GACM,EAAE;CACX;AACF,CAAC;AAED,SAAwB,EACtB,GACS;CACT,IAAI,EAAW,SAAS,OAAO,GAAG;EAChC,IAAM,IAAa,EACjB,EAAW,QAAQ,SAAS,EAAE,CAChC;EACA,OAAO,EAAE,MAAM,CACb,EAAE,MAAM,CAAU,GAElB,EAA8B,KAAK,EAAE,MAAM,CAAU,CAAC,CACxD,CAAC;CACH;CAEA,QAAQ,GAAR;EACE,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe,WAClB,OAAO,EAAE,OAAO,OAAO;EACzB,KAAK,EAAe,SAClB,OAAO;EACT,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe;EACpB,KAAK,EAAe,cAClB,OAAO;EACT,KAAK,EAAe,QAClB,OAAO;EACT,KAAK,EAAe,MAClB,OAAO;EACT,KAAK,EAAe,UAClB,OAAO;EACT,KAAK,EAAe,MAClB,OAAO,EAAE,OAAO,EAAE,QAAO,MAAK;GAC5B,IAAI;IAEF,OADA,KAAK,MAAM,CAAC,GACL;GACT,QAAY;IACV,OAAO;GACT;EACF,CAAC;EACH,SAEE,OADA,QAAQ,KAAK,gCAAgC,GAAY,GAClD,EAAE,IAAI;CACjB;AACF"}
@@ -1,28 +1,10 @@
1
1
  import { UserCardSize } from '@/utils/SynapseConstants';
2
- import { RowSet, UserProfile } from '@sage-bionetworks/synapse-types';
3
- import { Component } from 'react';
2
+ import { RowSet } from '@sage-bionetworks/synapse-types';
4
3
  export type UserCardListProps = {
5
4
  list: (string | null)[];
6
5
  size?: UserCardSize;
7
6
  rowSet?: RowSet;
8
7
  };
9
- export type UserCardListState = {
10
- userProfileMap: Record<string, UserProfile>;
11
- };
12
- export declare class UserCardList extends Component<UserCardListProps, UserCardListState> {
13
- constructor(props: UserCardListProps);
14
- componentDidMount(): void;
15
- componentDidUpdate(prevProps: UserCardListProps): void;
16
- update(list: (string | null)[]): void;
17
- /**
18
- * Given data this will find rows where there is no userId columnType and create faux user profiles
19
- * using firstName, lastName, and institution (company in UserProfile object).
20
- * @param {RowSet} rowSet
21
- * @returns list of UserProfiles with firstName, lastName, company, userName (first letter of firstName) filled out.
22
- * @memberof UserCardList
23
- */
24
- manuallyExtractData(rowSet: RowSet): Omit<UserProfile, "ownerId">[];
25
- render(): import("react/jsx-runtime").JSX.Element;
26
- }
8
+ export declare function UserCardList(props: UserCardListProps): import("react/jsx-runtime").JSX.Element;
27
9
  export default UserCardList;
28
10
  //# sourceMappingURL=UserCardList.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"UserCardList.d.ts","sourceRoot":"","sources":["../../../src/components/UserCardList/UserCardList.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAoB,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAEL,MAAM,EACN,WAAW,EACZ,MAAM,iCAAiC,CAAA;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAA;AAGjC,MAAM,MAAM,iBAAiB,GAAG;IAE9B,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,YAAY,CAAA;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,iBAAiB,GAAG;IAC9B,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAA;CAC5C,CAAA;AACD,qBAAa,YAAa,SAAQ,SAAS,CACzC,iBAAiB,EACjB,iBAAiB,CAClB;gBACa,KAAK,EAAE,iBAAiB;IAQpC,iBAAiB;IAKjB,kBAAkB,CAAC,SAAS,EAAE,iBAAiB;IAY/C,MAAM,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;IAmB9B;;;;;;OAMG;IACH,mBAAmB,CAAC,MAAM,EAAE,MAAM;IA0BlC,MAAM;CAqDP;AACD,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"UserCardList.d.ts","sourceRoot":"","sources":["../../../src/components/UserCardList/UserCardList.tsx"],"names":[],"mappings":"AACA,OAAO,EAAoB,YAAY,EAAE,MAAM,0BAA0B,CAAA;AACzE,OAAO,EAEL,MAAM,EAEP,MAAM,iCAAiC,CAAA;AAIxC,MAAM,MAAM,iBAAiB,GAAG;IAE9B,IAAI,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAA;IACvB,IAAI,CAAC,EAAE,YAAY,CAAA;IAGnB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AA8BD,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,2CAkEpD;AAED,eAAe,YAAY,CAAA"}
@@ -1,78 +1,55 @@
1
1
  import { MEDIUM_USER_CARD as e } from "../../utils/SynapseConstants.js";
2
- import { getUserProfileWithProfilePicAttached as t } from "../../utils/functions/getUserData.js";
2
+ import { useGetUserProfilesWithProfilePicAttached as t } from "../../synapse-queries/user/useUserBundle.js";
3
3
  import { UserCard as n } from "../UserCard/UserCard.js";
4
- import { Component as r } from "react";
5
- import { without as i } from "lodash-es";
6
- import { jsx as a } from "react/jsx-runtime";
7
- import { ColumnTypeEnum as o } from "@sage-bionetworks/synapse-types";
4
+ import { useMemo as r } from "react";
5
+ import { jsx as i } from "react/jsx-runtime";
6
+ import { ColumnTypeEnum as a } from "@sage-bionetworks/synapse-types";
8
7
  //#region src/components/UserCardList/UserCardList.tsx
9
- var s = class extends r {
10
- constructor(e) {
11
- super(e), this.state = { userProfileMap: {} }, this.update = this.update.bind(this);
12
- }
13
- componentDidMount() {
14
- let { list: e } = this.props;
15
- this.update(e);
16
- }
17
- componentDidUpdate(e) {
18
- let t = e.list, n = i(this.props.list.filter((e) => e), ...t);
19
- n.length > 0 && this.update(n);
20
- }
21
- update(e) {
22
- t(e.filter((e) => !!e)).then((e) => {
23
- let t = {};
24
- e.list.forEach((e) => {
25
- let { ownerId: n } = e;
26
- t[n] = e;
27
- }), this.setState({ userProfileMap: {
28
- ...this.state.userProfileMap,
29
- ...t
30
- } });
31
- }).catch((e) => {
32
- console.error("Error on batch call =", e);
33
- });
34
- }
35
- manuallyExtractData(e) {
36
- let t = e.headers.findIndex((e) => e.name === "firstName"), n = e.headers.findIndex((e) => e.name === "lastName"), r = e.headers.findIndex((e) => e.name === "institution"), i = e.headers.findIndex((e) => e.columnType === o.USERID);
37
- return e.rows.filter((e) => !e.values[i]).map((e) => {
38
- let i = e.values;
39
- return {
40
- firstName: i[t] ?? "",
41
- lastName: i[n] ?? "",
42
- company: i[r] ?? void 0,
43
- ownerId: null,
44
- userName: i[t] ? i[t][0] ?? "" : ""
45
- };
46
- });
47
- }
48
- render() {
49
- let { size: t = e, rowSet: r, list: i } = this.props, { userProfileMap: o = {} } = this.state, s = r && this.manuallyExtractData(r), c = 0;
50
- return /* @__PURE__ */ a("div", {
51
- className: "SRC-card-grid-row",
52
- children: i.map((e) => {
53
- let r = e == null ? null : o[e];
54
- if (r) return /* @__PURE__ */ a("div", {
55
- className: "SRC-grid-item SRC-narrow-grid-item",
56
- children: /* @__PURE__ */ a(n, {
57
- size: t,
58
- preSignedURL: r.clientPreSignedURL,
59
- userProfile: r
60
- })
61
- }, JSON.stringify(r));
62
- let i = s && s[c];
63
- return i ? (c += 1, /* @__PURE__ */ a("div", {
64
- className: "SRC-grid-item SRC-narrow-grid-item",
65
- children: /* @__PURE__ */ a(n, {
66
- disableLink: !0,
67
- hideEmail: !0,
68
- size: t,
69
- userProfile: i
70
- })
71
- }, JSON.stringify(i))) : !1;
72
- })
73
- });
74
- }
75
- };
8
+ function o(e) {
9
+ let t = e.headers.findIndex((e) => e.name === "firstName"), n = e.headers.findIndex((e) => e.name === "lastName"), r = e.headers.findIndex((e) => e.name === "institution"), i = e.headers.findIndex((e) => e.columnType === a.USERID);
10
+ return e.rows.filter((e) => !e.values[i]).map((e) => {
11
+ let i = e.values;
12
+ return {
13
+ firstName: i[t] ?? "",
14
+ lastName: i[n] ?? "",
15
+ company: i[r] ?? void 0,
16
+ ownerId: null,
17
+ userName: i[t] ? i[t][0] ?? "" : ""
18
+ };
19
+ });
20
+ }
21
+ function s(a) {
22
+ let { list: s, size: c = e, rowSet: l } = a, { data: u } = t(r(() => s.filter((e) => !!e), [s])), d = r(() => {
23
+ let e = {};
24
+ return u?.list.forEach((t) => {
25
+ t.ownerId && (e[t.ownerId] = t);
26
+ }), e;
27
+ }, [u]), f = l ? o(l) : void 0, p = 0;
28
+ return /* @__PURE__ */ i("div", {
29
+ className: "SRC-card-grid-row",
30
+ children: s.map((e) => {
31
+ let t = e == null ? null : d[e];
32
+ if (t) return /* @__PURE__ */ i("div", {
33
+ className: "SRC-grid-item SRC-narrow-grid-item",
34
+ children: /* @__PURE__ */ i(n, {
35
+ size: c,
36
+ preSignedURL: t.clientPreSignedURL,
37
+ userProfile: t
38
+ })
39
+ }, JSON.stringify(t));
40
+ let r = f && f[p];
41
+ return r ? (p += 1, /* @__PURE__ */ i("div", {
42
+ className: "SRC-grid-item SRC-narrow-grid-item",
43
+ children: /* @__PURE__ */ i(n, {
44
+ disableLink: !0,
45
+ hideEmail: !0,
46
+ size: c,
47
+ userProfile: r
48
+ })
49
+ }, JSON.stringify(r))) : !1;
50
+ })
51
+ });
52
+ }
76
53
  //#endregion
77
54
  export { s as UserCardList, s as default };
78
55