@knime/hub-features 1.28.0 → 1.29.1
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.
- package/CHANGELOG.md +26 -0
- package/package.json +6 -6
- package/src/analytics/schema/cloudhome-event-functions.ts +7 -9
- package/src/analytics/schema/code-generator.js +1 -3
- package/src/analytics/schema/editor-event-functions.ts +7 -9
- package/src/analytics/schema/schema.d.ts +12 -12
- package/src/analytics/schema/schema.json +13 -13
- package/src/httpClient/constants.ts +1 -0
- package/src/{common/ofetchClient.ts → httpClient/createHttpClient.ts} +6 -5
- package/src/httpClient/index.ts +2 -0
- package/src/index.ts +1 -0
- package/src/useDownloadArtifact/useDownloadArtifact.ts +2 -2
- package/src/useFileUpload/useFileUpload.ts +2 -2
- package/src/common/constants.ts +0 -1
- package/src/components/versions/components/CreateVersionForm.vue +0 -155
- package/src/components/versions/components/CurrentState.vue +0 -258
- package/src/components/versions/components/LabelList.vue +0 -253
- package/src/components/versions/components/ManageVersions.vue +0 -191
- package/src/components/versions/components/NoVersionItem.vue +0 -23
- package/src/components/versions/components/VersionHistory.vue +0 -138
- package/src/components/versions/components/VersionItem.vue +0 -278
- package/src/components/versions/components/VersionLimitInfo.vue +0 -37
- package/src/components/versions/composables/useVersionsApi.ts +0 -254
- package/src/components/versions/constants.ts +0 -3
- package/src/components/versions/index.ts +0 -7
- package/src/components/versions/types.ts +0 -77
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
1
|
# @knime/hub-features
|
|
2
2
|
|
|
3
|
+
## 1.29.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- c9fed1d: adjust analytics events payload for cloudhome ad-hoc execution
|
|
8
|
+
|
|
9
|
+
## 1.29.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- da43d97: Migrate from versions:
|
|
14
|
+
|
|
15
|
+
- `ManageVersions` component -> KDS `VersionHistory` component
|
|
16
|
+
- `CreateVersionForm` component -> KDS `CreateVersionForm` component
|
|
17
|
+
- `useVersionsApi` composable -> knime-ui `useVersionsApi` composable
|
|
18
|
+
|
|
19
|
+
Add new export to `hub-features` - `httpClient` - moved from `hub-features/common`.
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- ee02850: Minor changes to analytics event:
|
|
24
|
+
|
|
25
|
+
- rename from "my" secrets to "personal" secrets in cloud home events
|
|
26
|
+
- made the location value `noderepository` into `node_repository` in editor events to be more consistent with others
|
|
27
|
+
- deambiguate events for annotation created and annotation explain via kai
|
|
28
|
+
|
|
3
29
|
## 1.28.0
|
|
4
30
|
|
|
5
31
|
### Minor Changes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@knime/hub-features",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.29.1",
|
|
4
4
|
"description": "Vue components & composables for shared hub features",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -24,11 +24,11 @@
|
|
|
24
24
|
".": {
|
|
25
25
|
"import": "./src/index.ts"
|
|
26
26
|
},
|
|
27
|
-
"./versions": {
|
|
28
|
-
"import": "./src/components/versions/index.ts"
|
|
29
|
-
},
|
|
30
27
|
"./analytics": {
|
|
31
28
|
"import": "./src/analytics/index.ts"
|
|
29
|
+
},
|
|
30
|
+
"./http-client": {
|
|
31
|
+
"import": "./src/httpClient/index.ts"
|
|
32
32
|
}
|
|
33
33
|
},
|
|
34
34
|
"dependencies": {
|
|
@@ -39,8 +39,8 @@
|
|
|
39
39
|
"lodash-es": "4.18.1",
|
|
40
40
|
"ofetch": "^1.4.1",
|
|
41
41
|
"typescript": "^5.9.3",
|
|
42
|
-
"@knime/styles": "1.15.1",
|
|
43
42
|
"@knime/components": "1.46.6",
|
|
43
|
+
"@knime/styles": "1.15.1",
|
|
44
44
|
"@knime/utils": "1.11.0"
|
|
45
45
|
},
|
|
46
46
|
"peerDependencies": {
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"@vue/test-utils": "2.4.6",
|
|
53
53
|
"consola": "3.4.2",
|
|
54
54
|
"json-schema-to-typescript": "^15.0.4",
|
|
55
|
-
"vite": "^7.3.
|
|
55
|
+
"vite": "^7.3.5",
|
|
56
56
|
"vite-svg-loader": "5.1.0",
|
|
57
57
|
"vue-tsc": "3.0.4"
|
|
58
58
|
},
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
/* eslint-disable camelcase */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
|
+
/* eslint-disable */
|
|
4
2
|
// AUTO-GENERATED FILE. DO NOT EDIT.
|
|
5
3
|
import type { AnalyticsEvent, DefaultContext, EventFunctionArgs, GeneratedStaticFields, SchemaStaticFields } from "../types";
|
|
6
4
|
import { toSnakeCaseDeep } from "../utils/toSnakeCaseDeep";
|
|
@@ -17,7 +15,7 @@ export const adHocExecutionStartedDeploymentsPage = <T extends DefaultContext>(c
|
|
|
17
15
|
event_source: "cloudhome",
|
|
18
16
|
event_display_name: "Ad Hoc Execution Started",
|
|
19
17
|
interaction: {
|
|
20
|
-
location: "
|
|
18
|
+
location: "contextual_side_panel",
|
|
21
19
|
page: "deployments",
|
|
22
20
|
trigger: "user",
|
|
23
21
|
type: "click",
|
|
@@ -90,7 +88,7 @@ export const secretCreatedTeamSecrets = <T extends DefaultContext>(ctx: T) => ()
|
|
|
90
88
|
event_display_name: "Secret Created",
|
|
91
89
|
interaction: {
|
|
92
90
|
location: "contextual_side_panel",
|
|
93
|
-
page: "
|
|
91
|
+
page: "team_secrets",
|
|
94
92
|
trigger: "user",
|
|
95
93
|
type: "click",
|
|
96
94
|
},
|
|
@@ -104,7 +102,7 @@ export const secretCreatedTeamSecrets = <T extends DefaultContext>(ctx: T) => ()
|
|
|
104
102
|
/**
|
|
105
103
|
* Fired when the user creates a new secret by clicking Create in the side panel on the personal secrets page
|
|
106
104
|
*/
|
|
107
|
-
export const
|
|
105
|
+
export const secretCreatedPersonalSecrets = <T extends DefaultContext>(ctx: T) => (): AnalyticsEvent => {
|
|
108
106
|
const staticData = {
|
|
109
107
|
...toSnakeCaseDeep(ctx),
|
|
110
108
|
unique_event_id: crypto.randomUUID(),
|
|
@@ -114,7 +112,7 @@ export const secretCreatedMySecrets = <T extends DefaultContext>(ctx: T) => ():
|
|
|
114
112
|
event_display_name: "Secret Created",
|
|
115
113
|
interaction: {
|
|
116
114
|
location: "contextual_side_panel",
|
|
117
|
-
page: "
|
|
115
|
+
page: "personal_secrets",
|
|
118
116
|
trigger: "user",
|
|
119
117
|
type: "click",
|
|
120
118
|
},
|
|
@@ -185,7 +183,7 @@ export const deploymentSharedDeploymentsSharingPopup = <T extends DefaultContext
|
|
|
185
183
|
event_source: "cloudhome",
|
|
186
184
|
event_display_name: "Deployment Shared",
|
|
187
185
|
interaction: {
|
|
188
|
-
location: "
|
|
186
|
+
location: "popup",
|
|
189
187
|
page: "deployments",
|
|
190
188
|
trigger: "user",
|
|
191
189
|
type: "click",
|
|
@@ -233,7 +231,7 @@ export const deploymentSharedWorkflowSharingPopup = <T extends DefaultContext>(c
|
|
|
233
231
|
event_source: "cloudhome",
|
|
234
232
|
event_display_name: "Deployment Shared",
|
|
235
233
|
interaction: {
|
|
236
|
-
location: "
|
|
234
|
+
location: "popup",
|
|
237
235
|
page: "workflow_details",
|
|
238
236
|
trigger: "user",
|
|
239
237
|
type: "click",
|
|
@@ -22,9 +22,7 @@ const TYPE_HELPERS = {
|
|
|
22
22
|
};
|
|
23
23
|
|
|
24
24
|
const HEADER_LINES = [
|
|
25
|
-
"/* eslint-disable
|
|
26
|
-
"/* eslint-disable camelcase */",
|
|
27
|
-
"/* eslint-disable @typescript-eslint/no-explicit-any */",
|
|
25
|
+
"/* eslint-disable */",
|
|
28
26
|
"// AUTO-GENERATED FILE. DO NOT EDIT.",
|
|
29
27
|
`import type { ${Object.values(TYPE_HELPERS).join(", ")} } from "../types";`,
|
|
30
28
|
'import { toSnakeCaseDeep } from "../utils/toSnakeCaseDeep";',
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
/* eslint-disable
|
|
2
|
-
/* eslint-disable camelcase */
|
|
3
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
1
|
+
/* eslint-disable */
|
|
4
2
|
// AUTO-GENERATED FILE. DO NOT EDIT.
|
|
5
3
|
import type { AnalyticsEvent, DefaultContext, EventFunctionArgs, GeneratedStaticFields, SchemaStaticFields } from "../types";
|
|
6
4
|
import { toSnakeCaseDeep } from "../utils/toSnakeCaseDeep";
|
|
@@ -177,7 +175,7 @@ export const annotationCreatedKaiExplain = <T extends DefaultContext>(ctx: T) =>
|
|
|
177
175
|
...toSnakeCaseDeep(ctx),
|
|
178
176
|
unique_event_id: crypto.randomUUID(),
|
|
179
177
|
timestamp: new Date().toISOString(),
|
|
180
|
-
event_name: "
|
|
178
|
+
event_name: "annotation_created_kai_explain",
|
|
181
179
|
event_source: "editor",
|
|
182
180
|
event_display_name: "Annotation Created",
|
|
183
181
|
interaction: {
|
|
@@ -303,7 +301,7 @@ export const nodeCreatedNodeRepoDragDrop = <T extends DefaultContext>(ctx: T) =>
|
|
|
303
301
|
event_source: "editor",
|
|
304
302
|
event_display_name: "Node Created",
|
|
305
303
|
interaction: {
|
|
306
|
-
location: "
|
|
304
|
+
location: "node_repository",
|
|
307
305
|
trigger: "user",
|
|
308
306
|
type: "drag_drop",
|
|
309
307
|
},
|
|
@@ -323,7 +321,7 @@ export const nodeCreatedNodeRepoDoubleClick = <T extends DefaultContext>(ctx: T)
|
|
|
323
321
|
event_source: "editor",
|
|
324
322
|
event_display_name: "Node Created",
|
|
325
323
|
interaction: {
|
|
326
|
-
location: "
|
|
324
|
+
location: "node_repository",
|
|
327
325
|
trigger: "user",
|
|
328
326
|
type: "double_click",
|
|
329
327
|
},
|
|
@@ -343,7 +341,7 @@ export const nodeCreatedNodeRepoKeyboard = <T extends DefaultContext>(ctx: T) =>
|
|
|
343
341
|
event_source: "editor",
|
|
344
342
|
event_display_name: "Node Created",
|
|
345
343
|
interaction: {
|
|
346
|
-
location: "
|
|
344
|
+
location: "node_repository",
|
|
347
345
|
trigger: "user",
|
|
348
346
|
type: "key_press",
|
|
349
347
|
},
|
|
@@ -544,7 +542,7 @@ export const nodeSearchedNodeRepo = <T extends DefaultContext>(ctx: T) => (event
|
|
|
544
542
|
event_source: "editor",
|
|
545
543
|
event_display_name: "Node Searched",
|
|
546
544
|
interaction: {
|
|
547
|
-
location: "
|
|
545
|
+
location: "node_repository",
|
|
548
546
|
trigger: "user",
|
|
549
547
|
type: "key_press",
|
|
550
548
|
},
|
|
@@ -604,7 +602,7 @@ export const nodeRepositoryOpened = <T extends DefaultContext>(ctx: T) => (): An
|
|
|
604
602
|
event_source: "editor",
|
|
605
603
|
event_display_name: "Node Repository Opened",
|
|
606
604
|
interaction: {
|
|
607
|
-
location: "
|
|
605
|
+
location: "node_repository",
|
|
608
606
|
trigger: "user",
|
|
609
607
|
type: "click",
|
|
610
608
|
},
|
|
@@ -111,7 +111,7 @@ export interface AnalyticsEventSchema {
|
|
|
111
111
|
payload: EmptyPayload;
|
|
112
112
|
};
|
|
113
113
|
annotationCreatedKaiExplain: {
|
|
114
|
-
event_name: "
|
|
114
|
+
event_name: "annotation_created_kai_explain";
|
|
115
115
|
event_source: "editor";
|
|
116
116
|
event_display_name: "Annotation Created";
|
|
117
117
|
interaction: {
|
|
@@ -183,7 +183,7 @@ export interface AnalyticsEventSchema {
|
|
|
183
183
|
event_source: "editor";
|
|
184
184
|
event_display_name: "Node Created";
|
|
185
185
|
interaction: {
|
|
186
|
-
location: "
|
|
186
|
+
location: "node_repository";
|
|
187
187
|
trigger: InteractionTrigger & "user";
|
|
188
188
|
type: InteractionType & "drag_drop";
|
|
189
189
|
};
|
|
@@ -194,7 +194,7 @@ export interface AnalyticsEventSchema {
|
|
|
194
194
|
event_source: "editor";
|
|
195
195
|
event_display_name: "Node Created";
|
|
196
196
|
interaction: {
|
|
197
|
-
location: "
|
|
197
|
+
location: "node_repository";
|
|
198
198
|
trigger: InteractionTrigger & "user";
|
|
199
199
|
type: InteractionType & "double_click";
|
|
200
200
|
};
|
|
@@ -205,7 +205,7 @@ export interface AnalyticsEventSchema {
|
|
|
205
205
|
event_source: "editor";
|
|
206
206
|
event_display_name: "Node Created";
|
|
207
207
|
interaction: {
|
|
208
|
-
location: "
|
|
208
|
+
location: "node_repository";
|
|
209
209
|
trigger: InteractionTrigger & "user";
|
|
210
210
|
type: InteractionType & "key_press";
|
|
211
211
|
};
|
|
@@ -316,7 +316,7 @@ export interface AnalyticsEventSchema {
|
|
|
316
316
|
event_source: "editor";
|
|
317
317
|
event_display_name: "Node Searched";
|
|
318
318
|
interaction: {
|
|
319
|
-
location: "
|
|
319
|
+
location: "node_repository";
|
|
320
320
|
trigger: InteractionTrigger & "user";
|
|
321
321
|
type: InteractionType & "key_press";
|
|
322
322
|
};
|
|
@@ -349,7 +349,7 @@ export interface AnalyticsEventSchema {
|
|
|
349
349
|
event_source: "editor";
|
|
350
350
|
event_display_name: "Node Repository Opened";
|
|
351
351
|
interaction: {
|
|
352
|
-
location: "
|
|
352
|
+
location: "node_repository";
|
|
353
353
|
trigger: InteractionTrigger & "user";
|
|
354
354
|
type: InteractionType & "click";
|
|
355
355
|
};
|
|
@@ -427,7 +427,7 @@ export interface AnalyticsEventSchema {
|
|
|
427
427
|
event_source: "cloudhome";
|
|
428
428
|
event_display_name: "Ad Hoc Execution Started";
|
|
429
429
|
interaction: {
|
|
430
|
-
location: "
|
|
430
|
+
location: "contextual_side_panel";
|
|
431
431
|
page: "deployments";
|
|
432
432
|
trigger: InteractionTrigger & "user";
|
|
433
433
|
type: InteractionType & "click";
|
|
@@ -497,19 +497,19 @@ export interface AnalyticsEventSchema {
|
|
|
497
497
|
event_display_name: "Secret Created";
|
|
498
498
|
interaction: {
|
|
499
499
|
location: "contextual_side_panel";
|
|
500
|
-
page: "
|
|
500
|
+
page: "team_secrets";
|
|
501
501
|
trigger: InteractionTrigger & "user";
|
|
502
502
|
type: InteractionType & "click";
|
|
503
503
|
};
|
|
504
504
|
payload: EmptyPayload;
|
|
505
505
|
};
|
|
506
|
-
|
|
506
|
+
secretCreatedPersonalSecrets: {
|
|
507
507
|
event_name: "secret_created";
|
|
508
508
|
event_source: "cloudhome";
|
|
509
509
|
event_display_name: "Secret Created";
|
|
510
510
|
interaction: {
|
|
511
511
|
location: "contextual_side_panel";
|
|
512
|
-
page: "
|
|
512
|
+
page: "personal_secrets";
|
|
513
513
|
trigger: InteractionTrigger & "user";
|
|
514
514
|
type: InteractionType & "click";
|
|
515
515
|
};
|
|
@@ -701,7 +701,7 @@ export interface AnalyticsEventSchema {
|
|
|
701
701
|
event_source: "cloudhome";
|
|
702
702
|
event_display_name: "Deployment Shared";
|
|
703
703
|
interaction: {
|
|
704
|
-
location: "
|
|
704
|
+
location: "popup";
|
|
705
705
|
page: "deployments";
|
|
706
706
|
trigger: InteractionTrigger & "user";
|
|
707
707
|
type: InteractionType & "click";
|
|
@@ -725,7 +725,7 @@ export interface AnalyticsEventSchema {
|
|
|
725
725
|
event_source: "cloudhome";
|
|
726
726
|
event_display_name: "Deployment Shared";
|
|
727
727
|
interaction: {
|
|
728
|
-
location: "
|
|
728
|
+
location: "popup";
|
|
729
729
|
page: "workflow_details";
|
|
730
730
|
trigger: InteractionTrigger & "user";
|
|
731
731
|
type: InteractionType & "click";
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"actionRedoneToolbar",
|
|
58
58
|
"actionRedoneKeyboard",
|
|
59
59
|
"versionCreated",
|
|
60
|
-
"
|
|
60
|
+
"secretCreatedPersonalSecrets",
|
|
61
61
|
"secretCreatedTeamSecrets",
|
|
62
62
|
"sessionEnded",
|
|
63
63
|
"sessionInterrupted",
|
|
@@ -573,7 +573,7 @@
|
|
|
573
573
|
"properties": {
|
|
574
574
|
"event_name": {
|
|
575
575
|
"type": "string",
|
|
576
|
-
"const": "
|
|
576
|
+
"const": "annotation_created_kai_explain"
|
|
577
577
|
},
|
|
578
578
|
"event_source": {
|
|
579
579
|
"type": "string",
|
|
@@ -952,7 +952,7 @@
|
|
|
952
952
|
"properties": {
|
|
953
953
|
"location": {
|
|
954
954
|
"type": "string",
|
|
955
|
-
"const": "
|
|
955
|
+
"const": "node_repository"
|
|
956
956
|
},
|
|
957
957
|
"trigger": {
|
|
958
958
|
"allOf": [
|
|
@@ -1011,7 +1011,7 @@
|
|
|
1011
1011
|
"properties": {
|
|
1012
1012
|
"location": {
|
|
1013
1013
|
"type": "string",
|
|
1014
|
-
"const": "
|
|
1014
|
+
"const": "node_repository"
|
|
1015
1015
|
},
|
|
1016
1016
|
"trigger": {
|
|
1017
1017
|
"allOf": [
|
|
@@ -1070,7 +1070,7 @@
|
|
|
1070
1070
|
"properties": {
|
|
1071
1071
|
"location": {
|
|
1072
1072
|
"type": "string",
|
|
1073
|
-
"const": "
|
|
1073
|
+
"const": "node_repository"
|
|
1074
1074
|
},
|
|
1075
1075
|
"trigger": {
|
|
1076
1076
|
"allOf": [
|
|
@@ -1664,7 +1664,7 @@
|
|
|
1664
1664
|
"properties": {
|
|
1665
1665
|
"location": {
|
|
1666
1666
|
"type": "string",
|
|
1667
|
-
"const": "
|
|
1667
|
+
"const": "node_repository"
|
|
1668
1668
|
},
|
|
1669
1669
|
"trigger": {
|
|
1670
1670
|
"allOf": [
|
|
@@ -1841,7 +1841,7 @@
|
|
|
1841
1841
|
"properties": {
|
|
1842
1842
|
"location": {
|
|
1843
1843
|
"type": "string",
|
|
1844
|
-
"const": "
|
|
1844
|
+
"const": "node_repository"
|
|
1845
1845
|
},
|
|
1846
1846
|
"trigger": {
|
|
1847
1847
|
"allOf": [
|
|
@@ -2259,7 +2259,7 @@
|
|
|
2259
2259
|
"properties": {
|
|
2260
2260
|
"location": {
|
|
2261
2261
|
"type": "string",
|
|
2262
|
-
"const": "
|
|
2262
|
+
"const": "contextual_side_panel"
|
|
2263
2263
|
},
|
|
2264
2264
|
"page": {
|
|
2265
2265
|
"type": "string",
|
|
@@ -2632,7 +2632,7 @@
|
|
|
2632
2632
|
},
|
|
2633
2633
|
"page": {
|
|
2634
2634
|
"type": "string",
|
|
2635
|
-
"const": "
|
|
2635
|
+
"const": "team_secrets"
|
|
2636
2636
|
},
|
|
2637
2637
|
"trigger": {
|
|
2638
2638
|
"allOf": [
|
|
@@ -2661,7 +2661,7 @@
|
|
|
2661
2661
|
}
|
|
2662
2662
|
}
|
|
2663
2663
|
},
|
|
2664
|
-
"
|
|
2664
|
+
"secretCreatedPersonalSecrets": {
|
|
2665
2665
|
"type": "object",
|
|
2666
2666
|
"additionalProperties": false,
|
|
2667
2667
|
"$comment": "Fired when the user creates a new secret by clicking Create in the side panel on the personal secrets page",
|
|
@@ -2696,7 +2696,7 @@
|
|
|
2696
2696
|
},
|
|
2697
2697
|
"page": {
|
|
2698
2698
|
"type": "string",
|
|
2699
|
-
"const": "
|
|
2699
|
+
"const": "personal_secrets"
|
|
2700
2700
|
},
|
|
2701
2701
|
"trigger": {
|
|
2702
2702
|
"allOf": [
|
|
@@ -3722,7 +3722,7 @@
|
|
|
3722
3722
|
"properties": {
|
|
3723
3723
|
"location": {
|
|
3724
3724
|
"type": "string",
|
|
3725
|
-
"const": "
|
|
3725
|
+
"const": "popup"
|
|
3726
3726
|
},
|
|
3727
3727
|
"page": {
|
|
3728
3728
|
"type": "string",
|
|
@@ -3850,7 +3850,7 @@
|
|
|
3850
3850
|
"properties": {
|
|
3851
3851
|
"location": {
|
|
3852
3852
|
"type": "string",
|
|
3853
|
-
"const": "
|
|
3853
|
+
"const": "popup"
|
|
3854
3854
|
},
|
|
3855
3855
|
"page": {
|
|
3856
3856
|
"type": "string",
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const API_BASE_URL = "/_/api";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { merge } from "lodash-es"; // eslint-disable-line depend/ban-dependencies
|
|
2
2
|
import { type FetchOptions, ofetch } from "ofetch";
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import { API_BASE_URL } from "./constants";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const defaultConfig: FetchOptions = {
|
|
7
7
|
headers: {
|
|
8
8
|
"Content-Type": "application/json",
|
|
9
9
|
|
|
@@ -12,11 +12,12 @@ export const defaultConfig: FetchOptions = {
|
|
|
12
12
|
},
|
|
13
13
|
} as const;
|
|
14
14
|
|
|
15
|
-
|
|
16
|
-
const { baseURL =
|
|
17
|
-
customOptions ?? {};
|
|
15
|
+
const createHttpClient = (customOptions?: FetchOptions) => {
|
|
16
|
+
const { baseURL = API_BASE_URL, ...otherCustomOptions } = customOptions ?? {};
|
|
18
17
|
|
|
19
18
|
return ofetch.create(
|
|
20
19
|
merge({ baseURL, ...otherCustomOptions }, defaultConfig),
|
|
21
20
|
);
|
|
22
21
|
};
|
|
22
|
+
|
|
23
|
+
export { type FetchOptions, defaultConfig, createHttpClient };
|
package/src/index.ts
CHANGED
|
@@ -4,7 +4,7 @@ import { FetchError, type FetchOptions } from "ofetch";
|
|
|
4
4
|
import type { DownloadItem as DownloadItemExternal } from "@knime/components";
|
|
5
5
|
import { sleep } from "@knime/utils";
|
|
6
6
|
|
|
7
|
-
import {
|
|
7
|
+
import { createHttpClient } from "../httpClient/createHttpClient";
|
|
8
8
|
import { rfcErrors } from "../rfcErrors";
|
|
9
9
|
|
|
10
10
|
const DEFAULT_MAX_RETRIES = null;
|
|
@@ -91,7 +91,7 @@ const isAbortError = (error: unknown) =>
|
|
|
91
91
|
export const useDownloadArtifact = (
|
|
92
92
|
options: UseDownloadArtifactOptions = {},
|
|
93
93
|
) => {
|
|
94
|
-
const $ofetch =
|
|
94
|
+
const $ofetch = createHttpClient(options.customFetchClientOptions);
|
|
95
95
|
|
|
96
96
|
const downloadItems = ref<Record<string, DownloadItem>>({});
|
|
97
97
|
const abortControllers: Record<string, AbortController> = {};
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
promise,
|
|
10
10
|
} from "@knime/utils";
|
|
11
11
|
|
|
12
|
-
import {
|
|
12
|
+
import { createHttpClient } from "../httpClient/createHttpClient";
|
|
13
13
|
import { rfcErrors } from "../rfcErrors";
|
|
14
14
|
|
|
15
15
|
const DEFAULT_MAX_UPLOAD_QUEUE_SIZE = 10;
|
|
@@ -120,7 +120,7 @@ type UseFileUploadOptions = {
|
|
|
120
120
|
* ```
|
|
121
121
|
*/
|
|
122
122
|
export const useFileUpload = (options: UseFileUploadOptions = {}) => {
|
|
123
|
-
const $ofetch =
|
|
123
|
+
const $ofetch = createHttpClient(options.customFetchClientOptions);
|
|
124
124
|
|
|
125
125
|
const prepareUpload = (
|
|
126
126
|
parentId: string,
|
package/src/common/constants.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export const DEFAULT_API_BASE_URL = "/_/api";
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
<script setup lang="ts">
|
|
2
|
-
import { computed, nextTick, onMounted, ref } from "vue";
|
|
3
|
-
import { useTextareaAutosize } from "@vueuse/core";
|
|
4
|
-
|
|
5
|
-
import {
|
|
6
|
-
InputField,
|
|
7
|
-
Label,
|
|
8
|
-
SideDrawerControls,
|
|
9
|
-
SideDrawerHeader,
|
|
10
|
-
TextArea,
|
|
11
|
-
} from "@knime/components";
|
|
12
|
-
|
|
13
|
-
type Props = {
|
|
14
|
-
isCreationPending?: boolean;
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
withDefaults(defineProps<Props>(), { isCreationPending: false });
|
|
18
|
-
|
|
19
|
-
const emit = defineEmits<{
|
|
20
|
-
create: [{ name: string; description: string }];
|
|
21
|
-
cancel: [hasUnsavedChanges: boolean];
|
|
22
|
-
}>();
|
|
23
|
-
|
|
24
|
-
const versionName = ref("");
|
|
25
|
-
const versionDescription = ref("");
|
|
26
|
-
|
|
27
|
-
const descriptionEditor = ref<InstanceType<typeof TextArea> | null>(null);
|
|
28
|
-
|
|
29
|
-
onMounted(() => {
|
|
30
|
-
useTextareaAutosize({
|
|
31
|
-
element: descriptionEditor.value?.$el.getElementsByTagName("textarea")[0],
|
|
32
|
-
input: versionDescription,
|
|
33
|
-
});
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
const doValidate = ref(false);
|
|
37
|
-
|
|
38
|
-
const isVersionNameInvalid = computed(() => {
|
|
39
|
-
return doValidate.value && versionName.value.length <= 0;
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
const hasUnsavedChanges = computed(() => {
|
|
43
|
-
return versionName.value !== "" || versionDescription.value !== "";
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
const onCreate = async () => {
|
|
47
|
-
doValidate.value = true;
|
|
48
|
-
await nextTick();
|
|
49
|
-
|
|
50
|
-
if (!isVersionNameInvalid.value) {
|
|
51
|
-
emit("create", {
|
|
52
|
-
name: versionName.value,
|
|
53
|
-
description: versionDescription.value,
|
|
54
|
-
});
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
</script>
|
|
58
|
-
|
|
59
|
-
<template>
|
|
60
|
-
<div class="create-version-form">
|
|
61
|
-
<SideDrawerHeader
|
|
62
|
-
title="Create Version"
|
|
63
|
-
description="Give your version a name and description. Versions can be used to create a deployment.
|
|
64
|
-
"
|
|
65
|
-
:is-sub-drawer="true"
|
|
66
|
-
@close="$emit('cancel', hasUnsavedChanges)"
|
|
67
|
-
/>
|
|
68
|
-
<div class="form-content">
|
|
69
|
-
<Label text="Version name">
|
|
70
|
-
<InputField
|
|
71
|
-
v-model="versionName"
|
|
72
|
-
type="text"
|
|
73
|
-
required
|
|
74
|
-
:is-valid="!isVersionNameInvalid"
|
|
75
|
-
/>
|
|
76
|
-
<div v-if="isVersionNameInvalid" class="error">
|
|
77
|
-
Please enter at least 1 character.
|
|
78
|
-
</div>
|
|
79
|
-
</Label>
|
|
80
|
-
<Label text="Description">
|
|
81
|
-
<TextArea
|
|
82
|
-
ref="descriptionEditor"
|
|
83
|
-
v-model="versionDescription"
|
|
84
|
-
class="description"
|
|
85
|
-
/>
|
|
86
|
-
</Label>
|
|
87
|
-
<div class="controls">
|
|
88
|
-
<SideDrawerControls
|
|
89
|
-
class="create-version-controls"
|
|
90
|
-
:edit-enabled="true"
|
|
91
|
-
:processing="isCreationPending"
|
|
92
|
-
action-label="Create"
|
|
93
|
-
:disabled="isVersionNameInvalid || isCreationPending"
|
|
94
|
-
@save="onCreate"
|
|
95
|
-
@cancel="$emit('cancel', hasUnsavedChanges)"
|
|
96
|
-
/>
|
|
97
|
-
</div>
|
|
98
|
-
</div>
|
|
99
|
-
</div>
|
|
100
|
-
</template>
|
|
101
|
-
|
|
102
|
-
<style lang="postcss" scoped>
|
|
103
|
-
.create-version-form {
|
|
104
|
-
display: flex;
|
|
105
|
-
flex-direction: column;
|
|
106
|
-
width: 100%;
|
|
107
|
-
height: 100%;
|
|
108
|
-
max-height: 100%;
|
|
109
|
-
|
|
110
|
-
& .form-content {
|
|
111
|
-
z-index: 1;
|
|
112
|
-
display: flex;
|
|
113
|
-
flex-direction: column;
|
|
114
|
-
gap: 30px;
|
|
115
|
-
height: 100%;
|
|
116
|
-
padding: 30px 30px 0;
|
|
117
|
-
overflow: auto;
|
|
118
|
-
overscroll-behavior: none;
|
|
119
|
-
background-color: var(--knime-gray-ultra-light);
|
|
120
|
-
isolation: isolate;
|
|
121
|
-
|
|
122
|
-
& .description {
|
|
123
|
-
display: flex;
|
|
124
|
-
width: 100%;
|
|
125
|
-
max-width: unset;
|
|
126
|
-
|
|
127
|
-
& :deep(textarea) {
|
|
128
|
-
box-sizing: content-box;
|
|
129
|
-
width: 100%;
|
|
130
|
-
max-height: 200px;
|
|
131
|
-
resize: none;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
& .error {
|
|
136
|
-
position: absolute;
|
|
137
|
-
margin-top: 6px;
|
|
138
|
-
font-size: 13px;
|
|
139
|
-
font-weight: 300;
|
|
140
|
-
line-height: 18px;
|
|
141
|
-
color: var(--theme-color-error);
|
|
142
|
-
word-break: keep-all;
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
& .controls {
|
|
146
|
-
margin: 0 -30px;
|
|
147
|
-
margin-top: auto;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
.create-version-controls {
|
|
151
|
-
margin: 0;
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
</style>
|