windmill-components 1.339.2 → 1.352.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 (231) hide show
  1. package/package/assets/app.css +0 -12
  2. package/package/ata/index.js +1 -0
  3. package/package/autosize.js +1 -1
  4. package/package/common.d.ts +6 -2
  5. package/package/common.js +2 -1
  6. package/package/components/AppConnectDrawer.svelte +1 -1
  7. package/package/components/AppConnectInner.svelte +9 -15
  8. package/package/components/ArgEnum.svelte +4 -1
  9. package/package/components/ArgEnum.svelte.d.ts +3 -1
  10. package/package/components/ArgInput.svelte +184 -141
  11. package/package/components/ArgInput.svelte.d.ts +7 -7
  12. package/package/components/ArrayTypeNarrowing.svelte +29 -27
  13. package/package/components/CenteredPage.svelte +2 -2
  14. package/package/components/DefaultTagsInner.svelte +1 -1
  15. package/package/components/Dev.svelte +2 -1
  16. package/package/components/DiffDrawer.svelte +1 -2
  17. package/package/components/DisplayResult.svelte +293 -233
  18. package/package/components/DurationMs.svelte +11 -3
  19. package/package/components/DurationMs.svelte.d.ts +2 -0
  20. package/package/components/EditableSchemaForm.svelte +447 -103
  21. package/package/components/EditableSchemaForm.svelte.d.ts +16 -6
  22. package/package/components/Editor.svelte +3 -1
  23. package/package/components/EditorBar.svelte +2 -2
  24. package/package/components/FlowBuilder.svelte +14 -6
  25. package/package/components/FlowGraphViewer.svelte +1 -1
  26. package/package/components/FlowGraphViewerStep.svelte +37 -9
  27. package/package/components/FlowGraphViewerStep.svelte.d.ts +2 -7
  28. package/package/components/FlowJobResult.svelte +1 -3
  29. package/package/components/FlowMetadata.svelte +1 -1
  30. package/package/components/FlowPreviewContent.svelte +5 -3
  31. package/package/components/FlowStatusViewer.svelte +4 -0
  32. package/package/components/FlowStatusViewer.svelte.d.ts +3 -0
  33. package/package/components/FlowStatusViewerInner.svelte +50 -17
  34. package/package/components/FlowStatusViewerInner.svelte.d.ts +3 -0
  35. package/package/components/FlowTimeline.svelte +13 -0
  36. package/package/components/FlowTimeline.svelte.d.ts +2 -0
  37. package/package/components/FlowViewer.svelte +0 -5
  38. package/package/components/FolderEditor.svelte +25 -0
  39. package/package/components/FolderEditor.svelte.d.ts +2 -0
  40. package/package/components/GroupEditor.svelte +36 -91
  41. package/package/components/GroupInfo.svelte +1 -1
  42. package/package/components/InputTransformForm.svelte +16 -1
  43. package/package/components/InputTransformForm.svelte.d.ts +2 -0
  44. package/package/components/InputTransformSchemaForm.svelte +6 -0
  45. package/package/components/InputTransformSchemaForm.svelte.d.ts +2 -0
  46. package/package/components/InstanceSettings.svelte +36 -3
  47. package/package/components/InstanceSettings.svelte.d.ts +2 -0
  48. package/package/components/JobStatus.svelte +2 -2
  49. package/package/components/LightweightArgInput.svelte +66 -14
  50. package/package/components/LightweightArgInput.svelte.d.ts +3 -2
  51. package/package/components/LightweightSchemaForm.svelte +24 -15
  52. package/package/components/ModulePreviewForm.svelte +1 -0
  53. package/package/components/NumberTypeNarrowing.svelte +71 -44
  54. package/package/components/ObjectResourceInput.svelte +2 -0
  55. package/package/components/ObjectResourceInput.svelte.d.ts +1 -0
  56. package/package/components/ObjectTypeNarrowing.svelte +0 -1
  57. package/package/components/ParqetCsvTableRenderer.svelte +181 -0
  58. package/package/components/ParqetCsvTableRenderer.svelte.d.ts +21 -0
  59. package/package/components/Path.svelte +2 -2
  60. package/package/components/PersistentScriptDrawer.svelte +6 -3
  61. package/package/components/Range.svelte +88 -286
  62. package/package/components/Range.svelte.d.ts +9 -23
  63. package/package/components/ResourceEditor.svelte +138 -141
  64. package/package/components/ResourceEditor.svelte.d.ts +9 -2
  65. package/package/components/ResourceEditorDrawer.svelte +45 -0
  66. package/package/components/ResourceEditorDrawer.svelte.d.ts +21 -0
  67. package/package/components/ResourcePicker.svelte +5 -2
  68. package/package/components/ResourceTypePicker.svelte +88 -36
  69. package/package/components/RunChart.svelte +55 -5
  70. package/package/components/RunChart.svelte.d.ts +1 -0
  71. package/package/components/RunForm.svelte +1 -1
  72. package/package/components/S3FilePicker.svelte +20 -8
  73. package/package/components/S3FilePicker.svelte.d.ts +2 -0
  74. package/package/components/ScheduleEditorInner.svelte +40 -37
  75. package/package/components/SchemaForm.svelte +192 -103
  76. package/package/components/SchemaForm.svelte.d.ts +16 -2
  77. package/package/components/ScriptBuilder.svelte +13 -8
  78. package/package/components/ScriptSchedules.svelte +11 -8
  79. package/package/components/ScriptSchema.svelte +3 -21
  80. package/package/components/ScriptVersionHistory.svelte +1 -1
  81. package/package/components/StringTypeNarrowing.svelte +217 -174
  82. package/package/components/StringTypeNarrowing.svelte.d.ts +5 -1
  83. package/package/components/Toggle.svelte +6 -3
  84. package/package/components/Toggle.svelte.d.ts +1 -0
  85. package/package/components/UserSettings.svelte +24 -1
  86. package/package/components/WorkspaceGroup.svelte +11 -13
  87. package/package/components/apps/components/buttons/AppButton.svelte +2 -0
  88. package/package/components/apps/components/buttons/AppButton.svelte.d.ts +1 -0
  89. package/package/components/apps/components/display/AppFlowStatusComponent.svelte +13 -70
  90. package/package/components/apps/components/display/AppFlowStatusComponent.svelte.d.ts +1 -9
  91. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte +21 -8
  92. package/package/components/apps/components/display/AppJobIdFlowStatus.svelte.d.ts +1 -3
  93. package/package/components/apps/components/display/AppJobIdLogComponent.svelte +19 -7
  94. package/package/components/apps/components/display/AppJobIdLogComponent.svelte.d.ts +1 -3
  95. package/package/components/apps/components/display/AppLogsComponent.svelte +13 -70
  96. package/package/components/apps/components/display/AppLogsComponent.svelte.d.ts +1 -9
  97. package/package/components/apps/components/display/charts/AppAgCharts.svelte +25 -15
  98. package/package/components/apps/components/display/table/AppAggridTableActions.svelte +2 -0
  99. package/package/components/apps/components/display/table/SyncColumnDefs.svelte +1 -1
  100. package/package/components/apps/components/helpers/HiddenComponent.svelte +2 -1
  101. package/package/components/apps/components/helpers/RunnableComponent.svelte +18 -8
  102. package/package/components/apps/components/helpers/RunnableComponent.svelte.d.ts +1 -0
  103. package/package/components/apps/components/helpers/RunnableWrapper.svelte +2 -0
  104. package/package/components/apps/components/helpers/RunnableWrapper.svelte.d.ts +1 -0
  105. package/package/components/apps/components/helpers/eval.js +1 -36
  106. package/package/components/apps/components/inputs/AppFileInput.svelte +3 -1
  107. package/package/components/apps/components/inputs/AppFileInput.svelte.d.ts +1 -0
  108. package/package/components/apps/components/inputs/AppS3FileInput.svelte +3 -1
  109. package/package/components/apps/components/inputs/AppS3FileInput.svelte.d.ts +1 -0
  110. package/package/components/apps/components/layout/AppConditionalWrapper.svelte +3 -1
  111. package/package/components/apps/components/layout/AppConditionalWrapper.svelte.d.ts +1 -0
  112. package/package/components/apps/components/layout/AppStepper.svelte +5 -1
  113. package/package/components/apps/components/layout/AppStepper.svelte.d.ts +2 -0
  114. package/package/components/apps/components/layout/AppTabs.svelte +3 -1
  115. package/package/components/apps/components/layout/AppTabs.svelte.d.ts +1 -0
  116. package/package/components/apps/editor/AppEditorHeader.svelte +6 -7
  117. package/package/components/apps/editor/SettingsPanel.svelte +13 -3
  118. package/package/components/apps/editor/component/Component.svelte +8 -16
  119. package/package/components/apps/editor/component/components.d.ts +11 -2
  120. package/package/components/apps/editor/component/components.js +2 -1
  121. package/package/components/apps/editor/inlineScriptsPanel/InlineScriptRunnableByPath.svelte +1 -1
  122. package/package/components/apps/editor/settingsPanel/ArrayStaticInputEditor.svelte +5 -34
  123. package/package/components/apps/editor/settingsPanel/ComponentPanel.svelte +3 -41
  124. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte +33 -0
  125. package/package/components/apps/editor/settingsPanel/EventHandlerItem.svelte.d.ts +19 -0
  126. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte +103 -0
  127. package/package/components/apps/editor/settingsPanel/EventHandlers.svelte.d.ts +18 -0
  128. package/package/components/apps/editor/settingsPanel/GridCondition.svelte +21 -45
  129. package/package/components/apps/editor/settingsPanel/GridTab.svelte +3 -23
  130. package/package/components/apps/editor/settingsPanel/InputsSpecsEditor.svelte +5 -1
  131. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte +0 -2
  132. package/package/components/apps/editor/settingsPanel/SubTypeEditor.svelte.d.ts +0 -1
  133. package/package/components/apps/editor/settingsPanel/inputEditor/EvalV2InputEditor.svelte +7 -1
  134. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte +7 -14
  135. package/package/components/apps/editor/settingsPanel/inputEditor/StaticInputEditor.svelte.d.ts +0 -1
  136. package/package/components/common/button/ButtonDropdown.svelte +1 -0
  137. package/package/components/common/drawer/Disposable.svelte +3 -2
  138. package/package/components/common/drawer/Disposable.svelte.d.ts +1 -0
  139. package/package/components/common/drawer/Drawer.svelte +12 -2
  140. package/package/components/common/drawer/Drawer.svelte.d.ts +1 -0
  141. package/package/components/common/fileDownload/FileDownload.svelte +4 -2
  142. package/package/components/common/fileUpload/FileUpload.svelte +4 -3
  143. package/package/components/common/modal/Modal.svelte +4 -1
  144. package/package/components/common/modal/Modal.svelte.d.ts +1 -0
  145. package/package/components/common/popup/Popup.svelte +1 -1
  146. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte +4 -1
  147. package/package/components/common/toggleButton-v2/ToggleButtonGroup.svelte.d.ts +1 -0
  148. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte +79 -0
  149. package/package/components/common/waitTimeWarning/WaitTimeWarning.svelte.d.ts +18 -0
  150. package/package/components/flows/content/FlowEditorPanel.svelte +16 -2
  151. package/package/components/flows/content/FlowInput.svelte +63 -53
  152. package/package/components/flows/content/FlowModuleComponent.svelte +26 -3
  153. package/package/components/flows/content/FlowModuleScript.svelte +40 -1
  154. package/package/components/flows/content/FlowModuleScript.svelte.d.ts +2 -0
  155. package/package/components/flows/content/FlowModuleSuspend.svelte +99 -59
  156. package/package/components/flows/content/FlowModuleWrapper.svelte +16 -1
  157. package/package/components/flows/content/FlowSchedules.svelte +11 -8
  158. package/package/components/flows/content/ScriptEditorDrawer.svelte +3 -4
  159. package/package/components/flows/flowStateUtils.js +4 -1
  160. package/package/components/flows/map/FlowModuleSchemaItem.svelte +16 -1
  161. package/package/components/flows/map/FlowModuleSchemaMap.svelte +6 -1
  162. package/package/components/flows/types.d.ts +4 -0
  163. package/package/components/flows/utils.d.ts +5 -1
  164. package/package/components/flows/utils.js +36 -0
  165. package/package/components/graph/FlowGraph.svelte +5 -2
  166. package/package/components/graph/FlowGraph.svelte.d.ts +2 -0
  167. package/package/components/graph/svelvet/container/models/index.d.ts +0 -5
  168. package/package/components/graph/svelvet/container/models/index.js +1 -1
  169. package/package/components/graph/svelvet/container/views/Svelvet.svelte +2 -5
  170. package/package/components/graph/util.d.ts +1 -37
  171. package/package/components/graph/util.js +0 -34
  172. package/package/components/instanceSettings.js +2 -1
  173. package/package/components/jobs/JobPreview.svelte +1 -1
  174. package/package/components/multiselect/MultiSelect.svelte +4 -3
  175. package/package/components/multiselect/MultiSelect.svelte.d.ts +1 -0
  176. package/package/components/multiselect/MultiSelectWrapper.svelte +89 -0
  177. package/package/components/multiselect/MultiSelectWrapper.svelte.d.ts +20 -0
  178. package/package/components/propertyPicker/ObjectViewer.svelte +6 -2
  179. package/package/components/runs/JobPreview.svelte +5 -1
  180. package/package/components/runs/RunRow.svelte +22 -3
  181. package/package/components/runs/RunRow.svelte.d.ts +2 -1
  182. package/package/components/runs/RunsTable.svelte +22 -9
  183. package/package/components/runs/RunsTable.svelte.d.ts +2 -1
  184. package/package/components/schema/AddProperty.svelte +149 -0
  185. package/package/components/schema/AddProperty.svelte.d.ts +23 -0
  186. package/package/components/schema/AddPropertyForm.svelte +33 -0
  187. package/package/components/schema/AddPropertyForm.svelte.d.ts +16 -0
  188. package/package/components/schema/EditableSchemaDrawer.svelte +198 -0
  189. package/package/components/schema/EditableSchemaDrawer.svelte.d.ts +21 -0
  190. package/package/components/schema/EditableSchemaWrapper.svelte +31 -0
  191. package/package/components/schema/EditableSchemaWrapper.svelte.d.ts +22 -0
  192. package/package/components/schema/FlowPropertyEditor.svelte +393 -0
  193. package/package/components/schema/FlowPropertyEditor.svelte.d.ts +47 -0
  194. package/package/components/schema/PropertyEditor.svelte +185 -0
  195. package/package/components/schema/PropertyEditor.svelte.d.ts +46 -0
  196. package/package/components/schema/SchemaFormDND.svelte +75 -0
  197. package/package/components/schema/SchemaFormDND.svelte.d.ts +28 -0
  198. package/package/components/table/AutoDataTable.svelte +90 -104
  199. package/package/components/table/Cell.svelte +4 -1
  200. package/package/components/table/Cell.svelte.d.ts +1 -0
  201. package/package/components/table/DownloadCsv.svelte +30 -0
  202. package/package/components/table/DownloadCsv.svelte.d.ts +17 -0
  203. package/package/components/table/tableUtils.d.ts +8 -0
  204. package/package/components/table/tableUtils.js +37 -0
  205. package/package/consts.js +3 -1
  206. package/package/deno_fetch.d.ts.txt +6 -0
  207. package/package/gen/core/OpenAPI.js +1 -1
  208. package/package/gen/schemas.gen.d.ts +76 -0
  209. package/package/gen/schemas.gen.js +76 -0
  210. package/package/gen/services.gen.d.ts +100 -5
  211. package/package/gen/services.gen.js +216 -16
  212. package/package/gen/types.gen.d.ts +378 -5
  213. package/package/inferArgSig.d.ts +10 -0
  214. package/package/inferArgSig.js +59 -2
  215. package/package/scripts.d.ts +2 -0
  216. package/package/scripts.js +6 -3
  217. package/package/utils.d.ts +4 -3
  218. package/package/utils.js +9 -4
  219. package/package/workspace_settings.d.ts +15 -0
  220. package/package/workspace_settings.js +81 -0
  221. package/package.json +16 -7
  222. package/package/components/ParqetTableRenderer.svelte +0 -117
  223. package/package/components/ParqetTableRenderer.svelte.d.ts +0 -18
  224. package/package/components/PropertyRow.svelte +0 -88
  225. package/package/components/PropertyRow.svelte.d.ts +0 -23
  226. package/package/components/SchemaEditor.svelte +0 -346
  227. package/package/components/SchemaEditor.svelte.d.ts +0 -25
  228. package/package/components/SchemaModal.svelte +0 -443
  229. package/package/components/SchemaModal.svelte.d.ts +0 -33
  230. package/package/components/apps/editor/settingsPanel/Recompute.svelte +0 -55
  231. package/package/components/apps/editor/settingsPanel/Recompute.svelte.d.ts +0 -20
@@ -1,5 +1,5 @@
1
1
  export function argSigToJsonSchemaType(t, oldS) {
2
- const newS = { type: '' };
2
+ let newS = { type: '' };
3
3
  if (t === 'int') {
4
4
  newS.type = 'integer';
5
5
  }
@@ -24,17 +24,47 @@ export function argSigToJsonSchemaType(t, oldS) {
24
24
  else if (t === 'bytes') {
25
25
  newS.type = 'string';
26
26
  newS.contentEncoding = 'base64';
27
+ newS.originalType = 'bytes';
27
28
  }
28
29
  else if (t === 'datetime') {
29
30
  newS.type = 'string';
30
31
  newS.format = 'date-time';
31
32
  }
33
+ else if (typeof t !== 'string' && 'oneof' in t) {
34
+ newS.type = 'object';
35
+ if (t.oneof) {
36
+ newS.oneOf = t.oneof.map((obj) => {
37
+ const oldObjS = oldS.oneOf?.find((o) => o?.title === obj.label) ?? undefined;
38
+ const properties = {};
39
+ for (const prop of obj.properties) {
40
+ if (oldObjS?.properties && prop.key in oldObjS?.properties) {
41
+ properties[prop.key] = oldObjS?.properties[prop.key];
42
+ }
43
+ else {
44
+ properties[prop.key] = { description: '', type: '' };
45
+ }
46
+ argSigToJsonSchemaType(prop.typ, properties[prop.key]);
47
+ }
48
+ return {
49
+ type: 'object',
50
+ title: obj.label,
51
+ properties,
52
+ order: oldObjS?.order ?? undefined
53
+ };
54
+ });
55
+ }
56
+ }
32
57
  else if (typeof t !== 'string' && `object` in t) {
33
58
  newS.type = 'object';
34
59
  if (t.object) {
35
60
  const properties = {};
36
61
  for (const prop of t.object) {
37
- properties[prop.key] = {};
62
+ if (oldS.properties && prop.key in oldS.properties) {
63
+ properties[prop.key] = oldS.properties[prop.key];
64
+ }
65
+ else {
66
+ properties[prop.key] = { description: '', type: '' };
67
+ }
38
68
  argSigToJsonSchemaType(prop.typ, properties[prop.key]);
39
69
  }
40
70
  newS.properties = properties;
@@ -43,8 +73,13 @@ export function argSigToJsonSchemaType(t, oldS) {
43
73
  else if (typeof t !== 'string' && `str` in t) {
44
74
  newS.type = 'string';
45
75
  if (t.str) {
76
+ newS.originalType = 'enum';
46
77
  newS.enum = t.str;
47
78
  }
79
+ else {
80
+ newS.originalType = 'string';
81
+ newS.enum = undefined;
82
+ }
48
83
  }
49
84
  else if (typeof t !== 'string' && `resource` in t) {
50
85
  newS.type = 'object';
@@ -71,6 +106,28 @@ export function argSigToJsonSchemaType(t, oldS) {
71
106
  else {
72
107
  newS.type = 'object';
73
108
  }
109
+ const preservedFields = [
110
+ 'description',
111
+ 'pattern',
112
+ 'min',
113
+ 'max',
114
+ 'currency',
115
+ 'currencyLocale',
116
+ 'multiselect',
117
+ 'customErrorMessage',
118
+ 'required',
119
+ 'showExpr',
120
+ 'password',
121
+ 'order',
122
+ 'dateFormat',
123
+ 'title',
124
+ 'placeholder'
125
+ ];
126
+ preservedFields.forEach((field) => {
127
+ if (oldS[field] !== undefined) {
128
+ newS[field] = oldS[field];
129
+ }
130
+ });
74
131
  if (oldS.type != newS.type) {
75
132
  for (const prop of Object.getOwnPropertyNames(newS)) {
76
133
  if (prop != 'description') {
@@ -22,5 +22,7 @@ export declare function getScriptByPath(path: string): Promise<{
22
22
  tag: string | undefined;
23
23
  concurrent_limit: number | undefined;
24
24
  concurrency_time_window_s: number | undefined;
25
+ lock?: string;
26
+ created_at?: string;
25
27
  }>;
26
28
  export declare function getLatestHashForScript(path: string): Promise<string>;
@@ -106,7 +106,7 @@ const scriptLanguagesArray = [
106
106
  export const defaultScriptLanguages = Object.fromEntries(scriptLanguagesArray);
107
107
  export async function getScriptByPath(path) {
108
108
  if (path.startsWith('hub/')) {
109
- const { content, language, schema } = await ScriptService.getHubScriptByPath({ path });
109
+ const { content, language, schema, lockfile } = await ScriptService.getHubScriptByPath({ path });
110
110
  return {
111
111
  content,
112
112
  language: language,
@@ -114,7 +114,8 @@ export async function getScriptByPath(path) {
114
114
  description: '',
115
115
  tag: undefined,
116
116
  concurrent_limit: undefined,
117
- concurrency_time_window_s: undefined
117
+ concurrency_time_window_s: undefined,
118
+ lock: lockfile
118
119
  };
119
120
  }
120
121
  else {
@@ -129,7 +130,9 @@ export async function getScriptByPath(path) {
129
130
  description: script.description,
130
131
  tag: script.tag,
131
132
  concurrent_limit: script.concurrent_limit,
132
- concurrency_time_window_s: script.concurrency_time_window_s
133
+ concurrency_time_window_s: script.concurrency_time_window_s,
134
+ lock: script.lock,
135
+ created_at: script.created_at
133
136
  };
134
137
  }
135
138
  }
@@ -1,6 +1,7 @@
1
1
  import type { UserExt } from './stores';
2
2
  import { sendUserToast } from './toast';
3
3
  import type { Script } from './gen';
4
+ import type { EnumType } from './common';
4
5
  export { sendUserToast };
5
6
  export declare function validateUsername(username: string): string;
6
7
  export declare function parseQueryParams(url: string | undefined): Record<string, string>;
@@ -68,7 +69,7 @@ export declare function removeMarkdown(text: string): string;
68
69
  export declare function truncate(s: string, n: number, suffix?: string): string;
69
70
  export declare function truncateRev(s: string, n: number, prefix?: string): string;
70
71
  export declare function isString(value: any): boolean;
71
- export type InputCat = 'string' | 'email' | 'number' | 'boolean' | 'list' | 'resource-object' | 'enum' | 'date' | 'base64' | 'resource-string' | 'object' | 'sql' | 'yaml' | 'currency';
72
+ export type InputCat = 'string' | 'email' | 'number' | 'boolean' | 'list' | 'resource-object' | 'enum' | 'date' | 'base64' | 'resource-string' | 'object' | 'sql' | 'yaml' | 'currency' | 'oneOf';
72
73
  export declare function setInputCat(type: string | undefined, format: string | undefined, itemsType: string | undefined, enum_: any, contentEncoding: string | undefined): InputCat;
73
74
  export declare function formatCron(inp: string): string;
74
75
  export declare function classNames(...classes: Array<string | undefined>): string;
@@ -115,5 +116,5 @@ export declare function computeShow(argName: string, expr: string | undefined, a
115
116
  export declare function urlize(input: string, formatter: 'html' | 'md'): string;
116
117
  export declare function storeLocalSetting(name: string, value: string | undefined): void;
117
118
  export declare function getLocalSetting(name: string): string | null | undefined;
118
- export declare function computeKind(enum_: string[] | undefined, contentEncoding: 'base64' | 'binary' | undefined, pattern: string | undefined, format: string | undefined): 'base64' | 'none' | 'pattern' | 'enum' | 'resource' | 'format';
119
- export declare function shouldDisplayPlaceholder(type: string | undefined, format: string | undefined, enum_: string[] | undefined, contentEncoding: 'base64' | 'binary' | undefined, pattern: string | undefined): boolean;
119
+ export declare function computeKind(enum_: EnumType, contentEncoding: 'base64' | 'binary' | undefined, pattern: string | undefined, format: string | undefined): 'base64' | 'none' | 'pattern' | 'enum' | 'resource' | 'format';
120
+ export declare function shouldDisplayPlaceholder(type: string | undefined, format: string | undefined, enum_: EnumType, contentEncoding: 'base64' | 'binary' | undefined, pattern: string | undefined, extra: Record<string, any> | undefined): boolean;
package/package/utils.js CHANGED
@@ -9,7 +9,6 @@
9
9
  import { deepEqual } from 'fast-equals';
10
10
  import YAML from 'yaml';
11
11
  import { sendUserToast } from './toast';
12
- import { cloneDeep } from 'lodash';
13
12
  export { sendUserToast };
14
13
  export function validateUsername(username) {
15
14
  if (username != '' && !/^[a-zA-Z]\w+$/.test(username)) {
@@ -348,6 +347,9 @@ export function setInputCat(type, format, itemsType, enum_, contentEncoding) {
348
347
  else if (type == 'string' && format == 'currency') {
349
348
  return 'currency';
350
349
  }
350
+ else if (type == 'oneOf') {
351
+ return 'oneOf';
352
+ }
351
353
  else {
352
354
  return 'string';
353
355
  }
@@ -632,7 +634,7 @@ export function cleanValueProperties(obj) {
632
634
  let newObj = {};
633
635
  for (const key of Object.keys(obj)) {
634
636
  if (key !== 'parent_hash' && key !== 'draft' && key !== 'draft_only') {
635
- newObj[key] = cloneDeep(obj[key]);
637
+ newObj[key] = structuredClone(obj[key]);
636
638
  }
637
639
  }
638
640
  return newObj;
@@ -748,7 +750,7 @@ export function computeKind(enum_, contentEncoding, pattern, format) {
748
750
  return 'none';
749
751
  }
750
752
  // Used to check whether a placeholder should be displayed in the input field, based on the schema
751
- export function shouldDisplayPlaceholder(type, format, enum_, contentEncoding, pattern) {
753
+ export function shouldDisplayPlaceholder(type, format, enum_, contentEncoding, pattern, extra) {
752
754
  if (type === 'string') {
753
755
  const kind = computeKind(enum_, contentEncoding, pattern, format);
754
756
  if (kind === 'format' && format) {
@@ -757,5 +759,8 @@ export function shouldDisplayPlaceholder(type, format, enum_, contentEncoding, p
757
759
  }
758
760
  return kind === 'none' || kind === 'pattern';
759
761
  }
760
- return type === 'number' || type === 'integer' || type === undefined;
762
+ if (type === 'number' || type === 'integer') {
763
+ return extra?.['min'] === undefined || extra?.['max'] === undefined;
764
+ }
765
+ return type === undefined;
761
766
  }
@@ -0,0 +1,15 @@
1
+ import type { GetSettingsResponse, LargeFileStorage } from './gen';
2
+ type s3type = 's3' | 'azure_blob' | 's3_aws_oidc' | 'azure_workload_identity';
3
+ type s3ResourceSettingsItem = {
4
+ resourceType: s3type;
5
+ resourcePath: string | undefined;
6
+ publicResource: boolean | undefined;
7
+ };
8
+ export type S3ResourceSettings = s3ResourceSettingsItem & {
9
+ secondaryStorage: [string, s3ResourceSettingsItem][] | undefined;
10
+ };
11
+ export declare function convertBackendSettingsToFrontendSettings(large_file_storage: GetSettingsResponse['large_file_storage']): S3ResourceSettings;
12
+ export declare function convertBackendSettingsToFrontendSettingsItem(large_file_storage: GetSettingsResponse['large_file_storage']): s3ResourceSettingsItem;
13
+ export declare function convertFrontendToBackendSetting(s3ResourceSettings: S3ResourceSettings): LargeFileStorage | undefined;
14
+ export declare function convertFrontendToBackendettingsItem(s3ResourceSettings: s3ResourceSettingsItem): LargeFileStorage | undefined;
15
+ export {};
@@ -0,0 +1,81 @@
1
+ import { emptyString } from './utils';
2
+ export function convertBackendSettingsToFrontendSettings(large_file_storage) {
3
+ let settings = convertBackendSettingsToFrontendSettingsItem(large_file_storage);
4
+ settings.secondaryStorage = Object.entries(large_file_storage?.secondary_storage ?? {}).map(([key, value]) => [key, convertBackendSettingsToFrontendSettingsItem(value)]);
5
+ return settings;
6
+ }
7
+ export function convertBackendSettingsToFrontendSettingsItem(large_file_storage) {
8
+ if (large_file_storage?.type === 'S3Storage') {
9
+ return {
10
+ resourceType: 's3',
11
+ resourcePath: large_file_storage?.s3_resource_path?.replace('$res:', ''),
12
+ publicResource: large_file_storage?.public_resource
13
+ };
14
+ }
15
+ else if (large_file_storage?.type === 'AzureBlobStorage') {
16
+ return {
17
+ resourceType: 'azure_blob',
18
+ resourcePath: large_file_storage?.azure_blob_resource_path?.replace('$res:', ''),
19
+ publicResource: large_file_storage?.public_resource
20
+ };
21
+ }
22
+ else if (large_file_storage?.type === 'AzureWorkloadIdentity') {
23
+ return {
24
+ resourceType: 'azure_workload_identity',
25
+ resourcePath: large_file_storage?.azure_blob_resource_path?.replace('$res:', ''),
26
+ publicResource: large_file_storage?.public_resource
27
+ };
28
+ }
29
+ else if (large_file_storage?.type === 'S3AwsOidc') {
30
+ return {
31
+ resourceType: 's3_aws_oidc',
32
+ resourcePath: large_file_storage?.s3_resource_path?.replace('$res:', ''),
33
+ publicResource: large_file_storage?.public_resource
34
+ };
35
+ }
36
+ else {
37
+ return {
38
+ resourceType: 's3',
39
+ resourcePath: undefined,
40
+ publicResource: undefined
41
+ };
42
+ }
43
+ }
44
+ export function convertFrontendToBackendSetting(s3ResourceSettings) {
45
+ let settings = convertFrontendToBackendettingsItem(s3ResourceSettings);
46
+ if (settings) {
47
+ settings.secondary_storage = Object.fromEntries((s3ResourceSettings.secondaryStorage ?? [])
48
+ .map(([key, value]) => [key, convertFrontendToBackendettingsItem(value)])
49
+ .filter(([, value]) => value !== undefined));
50
+ }
51
+ return settings;
52
+ }
53
+ export function convertFrontendToBackendettingsItem(s3ResourceSettings) {
54
+ if (!emptyString(s3ResourceSettings.resourcePath)) {
55
+ let resourcePathWithPrefix = `$res:${s3ResourceSettings.resourcePath}`;
56
+ let params = {
57
+ public_resource: s3ResourceSettings.publicResource
58
+ };
59
+ if (s3ResourceSettings.resourceType === 'azure_blob') {
60
+ let typ = 'AzureBlobStorage';
61
+ params['type'] = typ;
62
+ params['azure_blob_resource_path'] = resourcePathWithPrefix;
63
+ }
64
+ else if (s3ResourceSettings.resourceType === 'azure_workload_identity') {
65
+ let typ = 'AzureWorkloadIdentity';
66
+ params['type'] = typ;
67
+ params['azure_blob_resource_path'] = resourcePathWithPrefix;
68
+ }
69
+ else if (s3ResourceSettings.resourceType === 's3_aws_oidc') {
70
+ let typ = 'S3AwsOidc';
71
+ params['type'] = typ;
72
+ params['s3_resource_path'] = resourcePathWithPrefix;
73
+ }
74
+ else {
75
+ let typ = 'S3Storage';
76
+ params['type'] = typ;
77
+ params['s3_resource_path'] = resourcePathWithPrefix;
78
+ }
79
+ return params;
80
+ }
81
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windmill-components",
3
- "version": "1.339.2",
3
+ "version": "1.352.0",
4
4
  "scripts": {
5
5
  "dev": "vite dev",
6
6
  "build": "vite build",
@@ -95,6 +95,7 @@
95
95
  "@popperjs/core": "^2.11.6",
96
96
  "@redocly/json-to-json-schema": "^0.0.1",
97
97
  "@tanstack/svelte-table": "^8.9.9",
98
+ "@windmill-labs/svelte-dnd-action": "latest",
98
99
  "ag-charts-community": "^9.0.1",
99
100
  "ag-charts-enterprise": "^9.0.1",
100
101
  "ag-grid-community": "^31.0.0",
@@ -112,7 +113,6 @@
112
113
  "graphql": "^16.7.1",
113
114
  "hash-sum": "^2.0.0",
114
115
  "highlight.js": "^11.8.0",
115
- "lodash": "^4.17.21",
116
116
  "lucide-svelte": "^0.293.0",
117
117
  "monaco-editor": "npm:@codingame/monaco-editor-treemended@>=1.83.5 <1.84.0",
118
118
  "monaco-graphql": "^1.5.1",
@@ -123,7 +123,6 @@
123
123
  "quill": "^1.3.7",
124
124
  "svelte-carousel": "^1.0.25",
125
125
  "svelte-chartjs": "^3.1.5",
126
- "svelte-dnd-action": "^0.9.38",
127
126
  "svelte-exmarkdown": "^3.0.3",
128
127
  "svelte-infinite-loading": "^1.3.8",
129
128
  "svelte-portal": "^2.2.1",
@@ -133,7 +132,7 @@
133
132
  "vscode-languageclient": "~9.0.1",
134
133
  "vscode-uri": "~3.0.8",
135
134
  "vscode-ws-jsonrpc": "~3.1.0",
136
- "windmill-parser-wasm": "^1.335.0",
135
+ "windmill-parser-wasm": "^1.347.1",
137
136
  "windmill-sql-datatype-parser-wasm": "^1.318.0",
138
137
  "y-monaco": "^0.1.4",
139
138
  "y-websocket": "^1.5.0",
@@ -245,10 +244,20 @@
245
244
  "svelte": "./package/components/SchemaForm.svelte",
246
245
  "default": "./package/components/SchemaForm.svelte"
247
246
  },
247
+ "./components/EditableSchemaWrapper.svelte": {
248
+ "types": "./package/components/EditableSchemaWrapper.svelte.d.ts",
249
+ "svelte": "./package/components/EditableSchemaWrapper.svelte",
250
+ "default": "./package/components/EditableSchemaWrapper.svelte"
251
+ },
252
+ "./components/ResourceEditor.svelte": {
253
+ "types": "./package/components/ResourceEditor.svelte.d.ts",
254
+ "svelte": "./package/components/ResourceEditor.svelte",
255
+ "default": "./package/components/ResourceEditor.svelte"
256
+ },
248
257
  "./components/SchemaEditor.svelte": {
249
- "types": "./package/components/SchemaEditor.svelte.d.ts",
250
- "svelte": "./package/components/SchemaEditor.svelte",
251
- "default": "./package/components/SchemaEditor.svelte"
258
+ "types": "./package/components/EditableSchemaForm.svelte.d.ts",
259
+ "svelte": "./package/components/EditableSchemaForm.svelte",
260
+ "default": "./package/components/EditableSchemaForm.svelte"
252
261
  },
253
262
  "./components/scriptEditor/LogPanel.svelte": {
254
263
  "types": "./package/components/scriptEditor/LogPanel.svelte.d.ts",
@@ -1,117 +0,0 @@
1
- <script>import { GridApi, createGrid } from 'ag-grid-community';
2
- import 'ag-grid-community/styles/ag-grid.css';
3
- import 'ag-grid-community/styles/ag-theme-alpine.css';
4
- import { twMerge } from 'tailwind-merge';
5
- import DarkModeObserver from './DarkModeObserver.svelte';
6
- import { HelpersService } from '../gen';
7
- import { enterpriseLicense, workspaceStore } from '../stores';
8
- // import 'ag-grid-community/dist/styles/ag-theme-alpine-dark.css'
9
- let selectedRowIndex = -1;
10
- export let s3resource;
11
- let datasource = {
12
- rowCount: 0,
13
- getRows: async function (params) {
14
- try {
15
- const searchCol = params.filterModel ? Object.keys(params.filterModel)?.[0] : undefined;
16
- const res = (await HelpersService.loadParquetPreview({
17
- workspace: $workspaceStore,
18
- path: s3resource,
19
- offset: params.startRow,
20
- limit: params.endRow - params.startRow,
21
- sortCol: params.sortModel?.[0]?.colId,
22
- sortDesc: params.sortModel?.[0]?.sort == 'desc',
23
- searchCol: searchCol,
24
- searchTerm: searchCol ? params.filterModel?.[searchCol]?.filter : undefined
25
- }));
26
- for (let i = 0; i < res.rows.length; i++) {
27
- res.rows[i]['__index'] = i + params.startRow;
28
- if (!$enterpriseLicense) {
29
- Object.keys(res.rows[i]).forEach((key) => {
30
- if (key != '__index') {
31
- res.rows[i][key] = 'Require EE';
32
- }
33
- });
34
- }
35
- }
36
- params.successCallback(res.rows);
37
- }
38
- catch (e) {
39
- console.error(e);
40
- params.failCallback();
41
- }
42
- }
43
- };
44
- function toggleRow(row) {
45
- if (row) {
46
- let rowIndex = row.rowIndex;
47
- let data = { ...row.data };
48
- delete data['__index'];
49
- if (selectedRowIndex !== rowIndex) {
50
- selectedRowIndex = rowIndex;
51
- }
52
- }
53
- }
54
- function toggleRows(rows) {
55
- toggleRow(rows[0]);
56
- }
57
- let eGui;
58
- $: eGui && mountGrid();
59
- async function mountGrid() {
60
- if (eGui) {
61
- const res = await HelpersService.loadParquetPreview({
62
- workspace: $workspaceStore,
63
- path: s3resource,
64
- limit: 0
65
- });
66
- createGrid(eGui, {
67
- rowModelType: 'infinite',
68
- datasource,
69
- // @ts-ignore
70
- columnDefs: res.columns.map((c) => {
71
- return {
72
- field: c,
73
- sortable: true,
74
- filter: true,
75
- filterParams: {
76
- filterOptions: ['contains'],
77
- maxNumConditions: 1
78
- }
79
- };
80
- }),
81
- pagination: false,
82
- // defaultColDef: {
83
- // flex: 1
84
- // },
85
- suppressColumnMoveAnimation: true,
86
- rowSelection: 'multiple',
87
- rowMultiSelectWithClick: true,
88
- suppressRowDeselection: true,
89
- onSelectionChanged: (e) => {
90
- onSelectionChanged(e.api);
91
- },
92
- getRowId: (data) => {
93
- return data.data['__index'];
94
- }
95
- }, {});
96
- }
97
- }
98
- function onSelectionChanged(api) {
99
- const rows = api.getSelectedNodes();
100
- if (rows != undefined) {
101
- toggleRows(rows);
102
- }
103
- }
104
- let darkMode = false;
105
- </script>
106
-
107
- <DarkModeObserver bind:darkMode />
108
-
109
- <div class={twMerge('mt-4 border shadow-sm divide-y flex flex-col h-full min-h-[600px]')}>
110
- <div class="ag-theme-alpine h-full" class:ag-theme-alpine-dark={darkMode} style="height: 600px;">
111
- <div bind:this={eGui} style="height:100%; " />
112
- </div>
113
- </div>
114
-
115
- <!-- <div class="flex gap-1 absolute bottom-1 right-2 text-sm text-secondary"
116
- >{firstRow}{'->'}{lastRow + 1} of {datasource?.rowCount} rows</div
117
- > -->
@@ -1,18 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import 'ag-grid-community/styles/ag-grid.css';
3
- import 'ag-grid-community/styles/ag-theme-alpine.css';
4
- declare const __propDef: {
5
- props: {
6
- s3resource: string;
7
- };
8
- events: {
9
- [evt: string]: CustomEvent<any>;
10
- };
11
- slots: {};
12
- };
13
- export type ParqetTableRendererProps = typeof __propDef.props;
14
- export type ParqetTableRendererEvents = typeof __propDef.events;
15
- export type ParqetTableRendererSlots = typeof __propDef.slots;
16
- export default class ParqetTableRenderer extends SvelteComponent<ParqetTableRendererProps, ParqetTableRendererEvents, ParqetTableRendererSlots> {
17
- }
18
- export {};
@@ -1,88 +0,0 @@
1
- <script>import Required from './Required.svelte';
2
- import { createEventDispatcher } from 'svelte';
3
- import SchemaEditorProperty from './SchemaEditorProperty.svelte';
4
- import { Button } from './common';
5
- import { Pen, Trash } from 'lucide-svelte';
6
- import { truncate } from '../utils';
7
- export let displayInfo;
8
- export let isAnimated;
9
- export let lightMode;
10
- let depth = displayInfo.path.length;
11
- const required = displayInfo.isRequired;
12
- const dispatch = createEventDispatcher();
13
- function startEditArgument(name) {
14
- dispatch('startEditArgument', name);
15
- }
16
- function handleDeleteArgument(argPath) {
17
- dispatch('deleteArgument', argPath);
18
- }
19
- function changePosition(i, up) {
20
- dispatch('changePosition', { i, up });
21
- }
22
- function getArgPath(displayInfo) {
23
- return [...displayInfo.path, displayInfo.name];
24
- }
25
- const indentStyle = depth > 0 ? `margin-left :${depth}rem` : '';
26
- </script>
27
-
28
- <td class="font-bold">
29
- <span style={indentStyle}>
30
- {displayInfo.name}
31
- <Required {required} class="!ml-0" />
32
- </span>
33
- </td>
34
- <td>
35
- <SchemaEditorProperty property={displayInfo.property} />
36
- </td>
37
- {#if !lightMode}
38
- <td class="truncate max-w-xs !text-2xs"
39
- >{truncate(
40
- displayInfo.property.default ? JSON.stringify(displayInfo.property.default) : '',
41
- 100
42
- )}</td
43
- >
44
- <td class="truncate max-w-xs !text-2xs"
45
- >{truncate(displayInfo.property.description ?? '', 100)}</td
46
- >
47
- {/if}
48
- <td />
49
- <td class="justify-end flex">
50
- {#if depth === 0}
51
- {#if displayInfo.index > 0}
52
- <button
53
- on:click={() => changePosition(displayInfo.index, true)}
54
- class="text-lg mr-2 {isAnimated ? 'invisible' : ''}"
55
- >
56
- &uparrow;</button
57
- >
58
- {/if}
59
- {#if displayInfo.index < displayInfo.propertiesNumber - 1}
60
- <button
61
- on:click={() => changePosition(displayInfo.index, false)}
62
- class="text-lg mr-2 {isAnimated ? 'invisible' : ''}">&downarrow;</button
63
- >
64
- {/if}
65
-
66
- <Button
67
- color="light"
68
- variant="border"
69
- size={lightMode ? 'xs' : 'sm'}
70
- startIcon={{ icon: Pen }}
71
- on:click={() => startEditArgument(displayInfo.name)}
72
- iconOnly={lightMode}
73
- >
74
- Edit
75
- </Button>
76
- {/if}
77
- <Button
78
- color="red"
79
- variant="border"
80
- btnClasses="mx-2"
81
- size={lightMode ? 'xs' : 'sm'}
82
- startIcon={{ icon: Trash }}
83
- on:click={() => handleDeleteArgument(getArgPath(displayInfo))}
84
- iconOnly={lightMode}
85
- >
86
- Delete
87
- </Button>
88
- </td>
@@ -1,23 +0,0 @@
1
- import { SvelteComponent } from "svelte";
2
- import type { PropertyDisplayInfo } from '../common';
3
- declare const __propDef: {
4
- props: {
5
- displayInfo: PropertyDisplayInfo;
6
- isAnimated: boolean;
7
- lightMode: boolean;
8
- };
9
- events: {
10
- startEditArgument: CustomEvent<any>;
11
- deleteArgument: CustomEvent<any>;
12
- changePosition: CustomEvent<any>;
13
- } & {
14
- [evt: string]: CustomEvent<any>;
15
- };
16
- slots: {};
17
- };
18
- export type PropertyRowProps = typeof __propDef.props;
19
- export type PropertyRowEvents = typeof __propDef.events;
20
- export type PropertyRowSlots = typeof __propDef.slots;
21
- export default class PropertyRow extends SvelteComponent<PropertyRowProps, PropertyRowEvents, PropertyRowSlots> {
22
- }
23
- export {};