@daocloud-proto/kangaroo 0.5.0-18 → 0.5.0-182

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.
@@ -3,12 +3,39 @@
3
3
  /*
4
4
  * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
5
  */
6
+
7
+ export enum PermissionsType {
8
+ ScanImage = "ScanImage",
9
+ DeleteImage = "DeleteImage",
10
+ GetImage = "GetImage",
11
+ CreateImageKey = "CreateImageKey",
12
+ CreateConnectedRegistry = "CreateConnectedRegistry",
13
+ DeleteConnectedRegistry = "DeleteConnectedRegistry",
14
+ UpdateConnectedRegistry = "UpdateConnectedRegistry",
15
+ GetConnectedRegistry = "GetConnectedRegistry",
16
+ CreateRegistryIntegration = "CreateRegistryIntegration",
17
+ DeleteRegistryIntegration = "DeleteRegistryIntegration",
18
+ UpdateRegistryIntegration = "UpdateRegistryIntegration",
19
+ GetRegistryIntegration = "GetRegistryIntegration",
20
+ CreateRegistrySpace = "CreateRegistrySpace",
21
+ DeleteRegistrySpace = "DeleteRegistrySpace",
22
+ UpdateRegistrySpace = "UpdateRegistrySpace",
23
+ GetRegistrySpace = "GetRegistrySpace",
24
+ BindRegistrySpace = "BindRegistrySpace",
25
+ CreateManagedHarbor = "CreateManagedHarbor",
26
+ DeleteManagedHarbor = "DeleteManagedHarbor",
27
+ UpdateManagedHarbor = "UpdateManagedHarbor",
28
+ GetManagedHarbor = "GetManagedHarbor",
29
+ CreateImage = "CreateImage",
30
+ UpdateImage = "UpdateImage",
31
+ }
32
+
6
33
  export type GlobalPermissionsResponse = {
7
- permissions?: string[]
34
+ permissions?: PermissionsType[]
8
35
  }
9
36
 
10
37
  export type WorkspacePermissionsResponse = {
11
- permissions?: string[]
38
+ permissions?: PermissionsType[]
12
39
  }
13
40
 
14
41
  export type WorkspacePermissionsRequest = {
@@ -8,6 +8,12 @@ import * as KangarooIoApiTypesObjectmeta from "../../types/objectmeta.pb"
8
8
  import * as KangarooIoApiTypesPage from "../../types/page.pb"
9
9
  import * as KangarooIoApiHarborV1alpha1Redis from "./redis.pb"
10
10
 
11
+ export enum TLSType {
12
+ TLS_TYPE_UNSPECIFIED = "TLS_TYPE_UNSPECIFIED",
13
+ SELF_SIGNED = "SELF_SIGNED",
14
+ CUSTOM = "CUSTOM",
15
+ }
16
+
11
17
  export enum VerifyHarborOperatorResponseHarborOperatorStatus {
12
18
  STATUS_UNSPECIFIED = "STATUS_UNSPECIFIED",
13
19
  STATUS_HARBOR_OPERATOR_IS_NOT_INSTALLED = "STATUS_HARBOR_OPERATOR_IS_NOT_INSTALLED",
@@ -101,6 +107,7 @@ export type HarborClusterSpec = {
101
107
  userSyncToHarbor?: boolean
102
108
  adminPassword?: string
103
109
  enableTrivy?: boolean
110
+ enableMetrics?: boolean
104
111
  }
105
112
 
106
113
  export type Resources = {
@@ -179,6 +186,12 @@ export type ExposeSpec = {
179
186
  nodePortSpec?: ExposeNodePortSpec
180
187
  externalUrl?: string
181
188
  exposeHttps?: boolean
189
+ httpsSpec?: HttpsSpec
190
+ }
191
+
192
+ export type HttpsSpec = {
193
+ namespace?: string
194
+ name?: string
182
195
  }
183
196
 
184
197
  export type ExposeIngressSpec = {
@@ -244,4 +257,50 @@ export type VerifyNodePortRequest = {
244
257
 
245
258
  export type VerifyNodePortResponse = {
246
259
  status?: boolean
260
+ }
261
+
262
+ export type ListTLSRequest = {
263
+ cluster?: string
264
+ namespace?: string
265
+ }
266
+
267
+ export type ListTLSResponse = {
268
+ items?: ListTLSResponseItem[]
269
+ }
270
+
271
+ export type ListTLSResponseItem = {
272
+ namespace?: string
273
+ name?: string
274
+ type?: TLSType
275
+ }
276
+
277
+ export type CheckDependServiceRequest = {
278
+ name?: string
279
+ namespace?: string
280
+ cluster?: string
281
+ database?: DatabaseSpec
282
+ cache?: CacheSpec
283
+ storage?: OCIStorageSpec
284
+ }
285
+
286
+ export type DatabaseCheckResponse = {
287
+ status?: string
288
+ message?: string
289
+ }
290
+
291
+ export type CacheCheckResponse = {
292
+ status?: string
293
+ message?: string
294
+ }
295
+
296
+ export type StorageCheckResponse = {
297
+ status?: string
298
+ message?: string
299
+ }
300
+
301
+ export type CheckDependServiceResponse = {
302
+ completed?: boolean
303
+ db?: DatabaseCheckResponse
304
+ cache?: CacheCheckResponse
305
+ storage?: StorageCheckResponse
247
306
  }
@@ -6,6 +6,7 @@
6
6
 
7
7
  import * as fm from "../../../../fetch.pb"
8
8
  import * as GoogleProtobufEmpty from "../../../../google/protobuf/empty.pb"
9
+ import * as KangarooIoApiTypesObjectmeta from "../../types/objectmeta.pb"
9
10
  import * as KangarooIoApiHarborV1alpha1Harbor from "./harbor.pb"
10
11
  import * as KangarooIoApiHarborV1alpha1Redis from "./redis.pb"
11
12
  export class Harbor {
@@ -39,4 +40,13 @@ export class Harbor {
39
40
  static ListRedis(req: KangarooIoApiHarborV1alpha1Redis.ListRedisRequest, initReq?: fm.InitReq): Promise<KangarooIoApiHarborV1alpha1Redis.ListRedisResponse> {
40
41
  return fm.fetchReq<KangarooIoApiHarborV1alpha1Redis.ListRedisRequest, KangarooIoApiHarborV1alpha1Redis.ListRedisResponse>(`/apis/kangaroo.io/v1alpha1/workspace/${req["workspace"]}/redis?${fm.renderURLSearchParams(req, ["workspace"])}`, {...initReq, method: "GET"})
41
42
  }
43
+ static ListTLSSecret(req: KangarooIoApiHarborV1alpha1Harbor.ListTLSRequest, initReq?: fm.InitReq): Promise<KangarooIoApiHarborV1alpha1Harbor.ListTLSResponse> {
44
+ return fm.fetchReq<KangarooIoApiHarborV1alpha1Harbor.ListTLSRequest, KangarooIoApiHarborV1alpha1Harbor.ListTLSResponse>(`/apis/kangaroo.io/v1alpha1/cluster/${req["cluster"]}/namespace/${req["namespace"]}/tls?${fm.renderURLSearchParams(req, ["cluster", "namespace"])}`, {...initReq, method: "GET"})
45
+ }
46
+ static CreateVerifyDependService(req: KangarooIoApiHarborV1alpha1Harbor.CheckDependServiceRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
47
+ return fm.fetchReq<KangarooIoApiHarborV1alpha1Harbor.CheckDependServiceRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/cluster/${req["cluster"]}/namespace/${req["namespace"]}/harbors/${req["name"]}/verify`, {...initReq, method: "POST", body: JSON.stringify(req)})
48
+ }
49
+ static GetVerifyDependService(req: KangarooIoApiTypesObjectmeta.ObjectMeta, initReq?: fm.InitReq): Promise<KangarooIoApiHarborV1alpha1Harbor.CheckDependServiceResponse> {
50
+ return fm.fetchReq<KangarooIoApiTypesObjectmeta.ObjectMeta, KangarooIoApiHarborV1alpha1Harbor.CheckDependServiceResponse>(`/apis/kangaroo.io/v1alpha1/cluster/${req["cluster"]}/namespace/${req["namespace"]}/harbors/${req["name"]}/verify?${fm.renderURLSearchParams(req, ["cluster", "namespace", "name"])}`, {...initReq, method: "GET"})
51
+ }
42
52
  }
@@ -66,16 +66,24 @@ export type ListProjectRequest = {
66
66
  }
67
67
 
68
68
  export type ListProjectResponse = {
69
- items?: string[]
69
+ items?: ListProjectResponseItem[]
70
70
  pagination?: KangarooIoApiTypesPage.Page
71
71
  }
72
72
 
73
+ export type ListProjectResponseItem = {
74
+ name?: string
75
+ public?: boolean
76
+ total?: string
77
+ createTime?: string
78
+ }
79
+
73
80
  export type Repository = {
74
81
  name?: string
75
82
  public?: boolean
76
83
  tagCount?: string
77
84
  pullCount?: string
78
85
  updateTime?: string
86
+ description?: string
79
87
  }
80
88
 
81
89
  export type ListRepositoriesRequest = {
@@ -180,6 +188,10 @@ export type TagInfoResponse = {
180
188
  references?: Reference[]
181
189
  }
182
190
 
191
+ export type TagInfoBuildHistoryResponse = {
192
+ buildHistory?: BuildHistory[]
193
+ }
194
+
183
195
  export type ExtraAttrs = {
184
196
  architecture?: string
185
197
  author?: string
@@ -397,4 +409,23 @@ export type GetPushCommandResponse = {
397
409
  cmd?: string
398
410
  expired?: string
399
411
  expiredAt?: string
412
+ }
413
+
414
+ export type UpdateRepositoryDescriptionRequest = {
415
+ workspace?: string
416
+ registry?: string
417
+ project?: string
418
+ repository?: string
419
+ description?: string
420
+ }
421
+
422
+ export type UpdateRepositoryDescriptionResponse = {
423
+ description?: string
424
+ }
425
+
426
+ export type GetRepositoryRequest = {
427
+ workspace?: string
428
+ registry?: string
429
+ project?: string
430
+ repository?: string
400
431
  }
@@ -0,0 +1,148 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as KangarooIoApiTypesPage from "../../types/page.pb"
8
+
9
+ export enum RetentionRuleTemplate {
10
+ RETENTION_RULE_TEMPLATE_UNSPECIFIED = "RETENTION_RULE_TEMPLATE_UNSPECIFIED",
11
+ N_DAYS_SINCE_LAST_PULL = "N_DAYS_SINCE_LAST_PULL",
12
+ N_DAYS_SINCE_LAST_PUSH = "N_DAYS_SINCE_LAST_PUSH",
13
+ TYPE_ALWAYS = "TYPE_ALWAYS",
14
+ LATEST_PULLED_N = "LATEST_PULLED_N",
15
+ LATEST_PUSHED_K = "LATEST_PUSHED_K",
16
+ }
17
+
18
+ export enum RetentionRuleTriggerKind {
19
+ RETENTION_RULE_TRIGGER_KIND_UNSPECIFIED = "RETENTION_RULE_TRIGGER_KIND_UNSPECIFIED",
20
+ MANUAL = "MANUAL",
21
+ SCHEDULED = "SCHEDULED",
22
+ }
23
+
24
+ export enum RetentionDecoration {
25
+ RETENTION_DECORATION_UNSPECIFIED = "RETENTION_DECORATION_UNSPECIFIED",
26
+ REPO_MATCHES = "REPO_MATCHES",
27
+ REPO_EXCLUDES = "REPO_EXCLUDES",
28
+ }
29
+
30
+ export enum RetentionExecutionStatus {
31
+ RETENTION_EXECUTION_STATUS_UNSPECIFIED = "RETENTION_EXECUTION_STATUS_UNSPECIFIED",
32
+ RETENTION_EXECUTION_STATUS_RUNNING = "RETENTION_EXECUTION_STATUS_RUNNING",
33
+ RETENTION_EXECUTION_STATUS_STOPPED = "RETENTION_EXECUTION_STATUS_STOPPED",
34
+ RETENTION_EXECUTION_STATUS_SUCCEED = "RETENTION_EXECUTION_STATUS_SUCCEED",
35
+ RETENTION_EXECUTION_STATUS_ERROR = "RETENTION_EXECUTION_STATUS_ERROR",
36
+ }
37
+
38
+ export enum RetentionExecutionTrigger {
39
+ RETENTION_EXECUTION_TRIGGER_MANUAL = "RETENTION_EXECUTION_TRIGGER_MANUAL",
40
+ RETENTION_EXECUTION_TRIGGER_SCHEDULED = "RETENTION_EXECUTION_TRIGGER_SCHEDULED",
41
+ }
42
+
43
+ export type RetentionPolicy = {
44
+ algorithm?: string
45
+ id?: string
46
+ rules?: RetentionRule[]
47
+ scope?: RetentionPolicyScope
48
+ trigger?: RetentionRuleTrigger
49
+ }
50
+
51
+ export type RetentionRule = {
52
+ action?: string
53
+ disabled?: boolean
54
+ id?: string
55
+ params?: {[key: string]: string}
56
+ priority?: string
57
+ scopeSelectors?: RetentionSelector[]
58
+ template?: RetentionRuleTemplate
59
+ }
60
+
61
+ export type RetentionPolicyScope = {
62
+ level?: string
63
+ ref?: string
64
+ }
65
+
66
+ export type RetentionRuleTrigger = {
67
+ kind?: RetentionRuleTriggerKind
68
+ settings?: RetentionRuleTriggerSettings
69
+ }
70
+
71
+ export type RetentionRuleTriggerSettings = {
72
+ cron?: string
73
+ }
74
+
75
+ export type RetentionSelector = {
76
+ decoration?: RetentionDecoration
77
+ extras?: string
78
+ kind?: string
79
+ pattern?: string
80
+ }
81
+
82
+ export type GetRetentionRequest = {
83
+ registry?: string
84
+ retentionId?: string
85
+ workspace?: string
86
+ }
87
+
88
+ export type UpdateRetentionRequest = {
89
+ registry?: string
90
+ retention?: RetentionPolicy
91
+ workspace?: string
92
+ retentionId?: string
93
+ }
94
+
95
+ export type RetentionExecution = {
96
+ dryRun?: boolean
97
+ endTime?: string
98
+ id?: string
99
+ policyId?: string
100
+ startTime?: string
101
+ status?: RetentionExecutionStatus
102
+ trigger?: RetentionExecutionTrigger
103
+ }
104
+
105
+ export type ListRetentionExecutionsRequest = {
106
+ registry?: string
107
+ retentionId?: string
108
+ workspace?: string
109
+ page?: number
110
+ pageSize?: number
111
+ }
112
+
113
+ export type ListRetentionExecutionsResponse = {
114
+ items?: RetentionExecution[]
115
+ pagination?: KangarooIoApiTypesPage.Page
116
+ }
117
+
118
+ export type CreateRetentionExecutionRequest = {
119
+ registry?: string
120
+ retentionId?: string
121
+ workspace?: string
122
+ dryRun?: boolean
123
+ }
124
+
125
+ export type StopRetentionExecutionRequest = {
126
+ registry?: string
127
+ retentionId?: string
128
+ workspace?: string
129
+ executionId?: string
130
+ }
131
+
132
+ export type CreateRetentionRuleRequest = {
133
+ registry?: string
134
+ retentionId?: string
135
+ workspace?: string
136
+ rule?: RetentionRule
137
+ }
138
+
139
+ export type CreateRetentionRuleResponse = {
140
+ rule?: RetentionRule[]
141
+ }
142
+
143
+ export type DeleteRetentionRuleRequest = {
144
+ registry?: string
145
+ retentionId?: string
146
+ workspace?: string
147
+ rule?: RetentionRule[]
148
+ }
@@ -7,6 +7,7 @@
7
7
  import * as fm from "../../../../fetch.pb"
8
8
  import * as GoogleProtobufEmpty from "../../../../google/protobuf/empty.pb"
9
9
  import * as KangarooIoApiImageV1alpha1Image from "./image.pb"
10
+ import * as KangarooIoApiImageV1alpha1Retention from "./retention.pb"
10
11
  export class Image {
11
12
  static ListRegistry(req: KangarooIoApiImageV1alpha1Image.ListRegistryRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.ListRegistryResponse> {
12
13
  return fm.fetchReq<KangarooIoApiImageV1alpha1Image.ListRegistryRequest, KangarooIoApiImageV1alpha1Image.ListRegistryResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/summary?${fm.renderURLSearchParams(req, ["workspace"])}`, {...initReq, method: "GET"})
@@ -17,12 +18,21 @@ export class Image {
17
18
  static ListRepositories(req: KangarooIoApiImageV1alpha1Image.ListRepositoriesRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.ListRepositoriesResponse> {
18
19
  return fm.fetchReq<KangarooIoApiImageV1alpha1Image.ListRepositoriesRequest, KangarooIoApiImageV1alpha1Image.ListRepositoriesResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/projects/${req["project"]}/repositories?${fm.renderURLSearchParams(req, ["workspace", "registry", "project"])}`, {...initReq, method: "GET"})
19
20
  }
21
+ static UpdateRepositoryDescription(req: KangarooIoApiImageV1alpha1Image.UpdateRepositoryDescriptionRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.UpdateRepositoryDescriptionResponse> {
22
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Image.UpdateRepositoryDescriptionRequest, KangarooIoApiImageV1alpha1Image.UpdateRepositoryDescriptionResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/projects/${req["project"]}/repositories/${req["repository"]}`, {...initReq, method: "PUT", body: JSON.stringify(req)})
23
+ }
24
+ static GetRepository(req: KangarooIoApiImageV1alpha1Image.GetRepositoryRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.Repository> {
25
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Image.GetRepositoryRequest, KangarooIoApiImageV1alpha1Image.Repository>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/projects/${req["project"]}/repositories/${req["repository"]}?${fm.renderURLSearchParams(req, ["workspace", "registry", "project", "repository"])}`, {...initReq, method: "GET"})
26
+ }
20
27
  static ListArtifacts(req: KangarooIoApiImageV1alpha1Image.ListArtifactsRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.ListArtifactsResponse> {
21
28
  return fm.fetchReq<KangarooIoApiImageV1alpha1Image.ListArtifactsRequest, KangarooIoApiImageV1alpha1Image.ListArtifactsResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/projects/${req["project"]}/repositories/${req["repository"]}/artifacts?${fm.renderURLSearchParams(req, ["workspace", "registry", "project", "repository"])}`, {...initReq, method: "GET"})
22
29
  }
23
30
  static GetArtifactsInfo(req: KangarooIoApiImageV1alpha1Image.TagInfoRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.TagInfoResponse> {
24
31
  return fm.fetchReq<KangarooIoApiImageV1alpha1Image.TagInfoRequest, KangarooIoApiImageV1alpha1Image.TagInfoResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/projects/${req["project"]}/repositories/${req["repository"]}/artifacts/${req["digest"]}?${fm.renderURLSearchParams(req, ["workspace", "registry", "project", "repository", "digest"])}`, {...initReq, method: "GET"})
25
32
  }
33
+ static GetArtifactsInfoBuildHistory(req: KangarooIoApiImageV1alpha1Image.TagInfoRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.TagInfoBuildHistoryResponse> {
34
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Image.TagInfoRequest, KangarooIoApiImageV1alpha1Image.TagInfoBuildHistoryResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/projects/${req["project"]}/repositories/${req["repository"]}/artifacts/history/${req["digest"]}?${fm.renderURLSearchParams(req, ["workspace", "registry", "project", "repository", "digest"])}`, {...initReq, method: "GET"})
35
+ }
26
36
  static DeleteRepositories(req: KangarooIoApiImageV1alpha1Image.DeleteRepositoriesRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
27
37
  return fm.fetchReq<KangarooIoApiImageV1alpha1Image.DeleteRepositoriesRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/projects/${req["project"]}/repositories/${req["repository"]}`, {...initReq, method: "DELETE"})
28
38
  }
@@ -74,4 +84,27 @@ export class Image {
74
84
  static APIListArtifacts(req: KangarooIoApiImageV1alpha1Image.APIListArtifactsRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Image.APIListArtifactsResponse> {
75
85
  return fm.fetchReq<KangarooIoApiImageV1alpha1Image.APIListArtifactsRequest, KangarooIoApiImageV1alpha1Image.APIListArtifactsResponse>(`/apis/kangaroo.io/v1alpha1/select/registries/${req["registry"]}/projects/${req["project"]}/repositories/${req["repository"]}/artifacts?${fm.renderURLSearchParams(req, ["registry", "project", "repository"])}`, {...initReq, method: "GET"})
76
86
  }
87
+ }
88
+ export class Retention {
89
+ static GetRetention(req: KangarooIoApiImageV1alpha1Retention.GetRetentionRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Retention.RetentionPolicy> {
90
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Retention.GetRetentionRequest, KangarooIoApiImageV1alpha1Retention.RetentionPolicy>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/retention/${req["retentionId"]}?${fm.renderURLSearchParams(req, ["workspace", "registry", "retentionId"])}`, {...initReq, method: "GET"})
91
+ }
92
+ static UpdateRetention(req: KangarooIoApiImageV1alpha1Retention.UpdateRetentionRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Retention.RetentionPolicy> {
93
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Retention.UpdateRetentionRequest, KangarooIoApiImageV1alpha1Retention.RetentionPolicy>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/retention/${req["retentionId"]}`, {...initReq, method: "PUT", body: JSON.stringify(req)})
94
+ }
95
+ static CreateRetentionRule(req: KangarooIoApiImageV1alpha1Retention.CreateRetentionRuleRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Retention.CreateRetentionRuleResponse> {
96
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Retention.CreateRetentionRuleRequest, KangarooIoApiImageV1alpha1Retention.CreateRetentionRuleResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/retention/${req["retentionId"]}/Rule`, {...initReq, method: "POST", body: JSON.stringify(req)})
97
+ }
98
+ static DeleteRetentionRule(req: KangarooIoApiImageV1alpha1Retention.DeleteRetentionRuleRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
99
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Retention.DeleteRetentionRuleRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/retention/${req["retentionId"]}/Rule`, {...initReq, method: "DELETE", body: JSON.stringify(req)})
100
+ }
101
+ static ListRetentionExecutions(req: KangarooIoApiImageV1alpha1Retention.ListRetentionExecutionsRequest, initReq?: fm.InitReq): Promise<KangarooIoApiImageV1alpha1Retention.ListRetentionExecutionsResponse> {
102
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Retention.ListRetentionExecutionsRequest, KangarooIoApiImageV1alpha1Retention.ListRetentionExecutionsResponse>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/retention/${req["retentionId"]}/executions?${fm.renderURLSearchParams(req, ["workspace", "registry", "retentionId"])}`, {...initReq, method: "GET"})
103
+ }
104
+ static CreateRetentionExecution(req: KangarooIoApiImageV1alpha1Retention.CreateRetentionExecutionRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
105
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Retention.CreateRetentionExecutionRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/retention/${req["retentionId"]}/executions`, {...initReq, method: "POST", body: JSON.stringify(req)})
106
+ }
107
+ static StopRetentionExecution(req: KangarooIoApiImageV1alpha1Retention.StopRetentionExecutionRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
108
+ return fm.fetchReq<KangarooIoApiImageV1alpha1Retention.StopRetentionExecutionRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/workspaces/${req["workspace"]}/registries/${req["registry"]}/retention/${req["retentionId"]}/executions/${req["executionId"]}`, {...initReq, method: "PUT"})
109
+ }
77
110
  }
@@ -33,6 +33,7 @@ export type Registry = {
33
33
  integratedType?: IntegratedType
34
34
  status?: RegistryStatus
35
35
  createAt?: string
36
+ isExist?: boolean
36
37
  }
37
38
 
38
39
  export type RegistryStatus = {
@@ -70,6 +71,18 @@ export type ListRegistryResponse = {
70
71
  pagination?: KangarooIoApiTypesPage.Page
71
72
  }
72
73
 
74
+ export type ListFilterRegistryRequest = {
75
+ page?: number
76
+ pageSize?: number
77
+ registry?: string
78
+ fuzzyName?: string
79
+ }
80
+
81
+ export type ListFilterRegistryResponse = {
82
+ items?: Registry[]
83
+ pagination?: KangarooIoApiTypesPage.Page
84
+ }
85
+
73
86
  export type RegistryAdminCredential = {
74
87
  username?: string
75
88
  password?: string
@@ -0,0 +1,284 @@
1
+ /* eslint-disable */
2
+ // @ts-nocheck
3
+ /*
4
+ * This file is a generated Typescript file for GRPC Gateway, DO NOT MODIFY
5
+ */
6
+
7
+ import * as KangarooIoApiTypesPage from "../../types/page.pb"
8
+
9
+ export enum NativeRegistryType {
10
+ NATIVE_REGISTRY_UNSPECIFIED = "NATIVE_REGISTRY_UNSPECIFIED",
11
+ NATIVE_REGISTRY_DOCKER_REGISTRY = "NATIVE_REGISTRY_DOCKER_REGISTRY",
12
+ NATIVE_REGISTRY_HARBOR = "NATIVE_REGISTRY_HARBOR",
13
+ NATIVE_REGISTRY_JFROG_ARTIFACTORY = "NATIVE_REGISTRY_JFROG_ARTIFACTORY",
14
+ }
15
+
16
+ export enum TriggerMode {
17
+ TRIGGER_MODEL_UNSPECIFIED = "TRIGGER_MODEL_UNSPECIFIED",
18
+ TRIGGER_MODEL_MANUAL = "TRIGGER_MODEL_MANUAL",
19
+ TRIGGER_MODEL_SCHEDULE = "TRIGGER_MODEL_SCHEDULE",
20
+ TRIGGER_MODEL_EVENT_BASED = "TRIGGER_MODEL_EVENT_BASED",
21
+ }
22
+
23
+ export enum NativeRegistryregistry_status {
24
+ UNSPECIFIED = "UNSPECIFIED",
25
+ HEALTHY = "HEALTHY",
26
+ UNHEALTHY = "UNHEALTHY",
27
+ }
28
+
29
+ export enum NativeRegistryCredentialcredential_type {
30
+ UNSPECIFIED = "UNSPECIFIED",
31
+ BASIC = "BASIC",
32
+ OAUTH = "OAUTH",
33
+ SECRET = "SECRET",
34
+ }
35
+
36
+ export enum CreateNativeRegistryRequestType {
37
+ UNSPECIFIED = "UNSPECIFIED",
38
+ INTEGRATION = "INTEGRATION",
39
+ NATIVE = "NATIVE",
40
+ }
41
+
42
+ export enum FilterFilterType {
43
+ UNSPECIFIED = "UNSPECIFIED",
44
+ NAME = "NAME",
45
+ TAG = "TAG",
46
+ }
47
+
48
+ export enum FilterDecoration {
49
+ DECORATION_UNSPECIFIED = "DECORATION_UNSPECIFIED",
50
+ DECORATION_MATCHES = "DECORATION_MATCHES",
51
+ DECORATION_EXCLUDES = "DECORATION_EXCLUDES",
52
+ }
53
+
54
+ export enum ExecutionStatus {
55
+ STATUS_UNSPECIFIED = "STATUS_UNSPECIFIED",
56
+ STATUS_STOPPED = "STATUS_STOPPED",
57
+ STATUS_SUCCEED = "STATUS_SUCCEED",
58
+ STATUS_FAILED = "STATUS_FAILED",
59
+ STATUS_IN_PROGRESS = "STATUS_IN_PROGRESS",
60
+ }
61
+
62
+ export enum ReplicationTaskOperation {
63
+ OPERATION_UNSPECIFIED = "OPERATION_UNSPECIFIED",
64
+ OPERATION_DELETE = "OPERATION_DELETE",
65
+ OPERATION_COPY = "OPERATION_COPY",
66
+ }
67
+
68
+ export enum ReplicationTaskStatus {
69
+ STATUS_UNSPECIFIED = "STATUS_UNSPECIFIED",
70
+ STATUS_STOPPED = "STATUS_STOPPED",
71
+ STATUS_SUCCEED = "STATUS_SUCCEED",
72
+ STATUS_FAILED = "STATUS_FAILED",
73
+ STATUS_PENDING = "STATUS_PENDING",
74
+ STATUS_IN_PROGRESS = "STATUS_IN_PROGRESS",
75
+ }
76
+
77
+ export type ListNativeRegistryRequest = {
78
+ registry?: string
79
+ page?: number
80
+ pageSize?: number
81
+ fuzzyName?: string
82
+ }
83
+
84
+ export type NativeRegistry = {
85
+ id?: string
86
+ type?: NativeRegistryType
87
+ name?: string
88
+ url?: string
89
+ nativeRegistryCredential?: NativeRegistryCredential
90
+ insecure?: boolean
91
+ description?: string
92
+ status?: NativeRegistryregistry_status
93
+ creationTime?: string
94
+ }
95
+
96
+ export type NativeRegistryCredential = {
97
+ accessKey?: string
98
+ accessSecret?: string
99
+ type?: NativeRegistryCredentialcredential_type
100
+ }
101
+
102
+ export type ListNativeRegistryResponse = {
103
+ items?: NativeRegistry[]
104
+ pagination?: KangarooIoApiTypesPage.Page
105
+ }
106
+
107
+ export type NativeRegistrySpec = {
108
+ type?: NativeRegistryType
109
+ name?: string
110
+ url?: string
111
+ nativeRegistryCredential?: NativeRegistryCredential
112
+ insecure?: boolean
113
+ description?: string
114
+ }
115
+
116
+ export type CreateNativeRegistryRequest = {
117
+ registry?: string
118
+ createType?: CreateNativeRegistryRequestType
119
+ integrationRegistry?: string[]
120
+ nativeRegistry?: NativeRegistrySpec
121
+ }
122
+
123
+ export type UpdateNativeRegistryRequest = {
124
+ registry?: string
125
+ nativeRegistryId?: string
126
+ nativeRegistry?: NativeRegistrySpec
127
+ }
128
+
129
+ export type DeleteNativeRegistryRequest = {
130
+ registry?: string
131
+ nativeRegistryId?: string
132
+ }
133
+
134
+ export type Policy = {
135
+ destRegistry?: NativeRegistry
136
+ srcRegistry?: NativeRegistry
137
+ enabled?: boolean
138
+ creationTime?: string
139
+ updateTime?: string
140
+ speed?: string
141
+ id?: string
142
+ override?: boolean
143
+ name?: string
144
+ description?: string
145
+ destNamespace?: string
146
+ filters?: Filter[]
147
+ trigger?: Trigger
148
+ }
149
+
150
+ export type Trigger = {
151
+ cron?: string
152
+ type?: TriggerMode
153
+ }
154
+
155
+ export type Filter = {
156
+ type?: FilterFilterType
157
+ value?: string
158
+ decoration?: FilterDecoration
159
+ }
160
+
161
+ export type ListPoliciesRequest = {
162
+ registry?: string
163
+ page?: number
164
+ pageSize?: number
165
+ fuzzyName?: string
166
+ }
167
+
168
+ export type ListPoliciesResponse = {
169
+ items?: Policy[]
170
+ pagination?: KangarooIoApiTypesPage.Page
171
+ }
172
+
173
+ export type DeletePolicyRequest = {
174
+ registry?: string
175
+ policyId?: string
176
+ }
177
+
178
+ export type CreateExecutionRequest = {
179
+ registry?: string
180
+ policyId?: string
181
+ }
182
+
183
+ export type StopExecutionRequest = {
184
+ registry?: string
185
+ executionId?: string
186
+ }
187
+
188
+ export type Execution = {
189
+ endTime?: string
190
+ failed?: string
191
+ id?: string
192
+ inProgress?: string
193
+ policyId?: string
194
+ startTime?: string
195
+ status?: ExecutionStatus
196
+ statusText?: string
197
+ stopped?: string
198
+ succeed?: string
199
+ total?: string
200
+ trigger?: TriggerMode
201
+ }
202
+
203
+ export type ListExecutionsRequest = {
204
+ registry?: string
205
+ page?: number
206
+ pageSize?: number
207
+ policyId?: string
208
+ status?: string
209
+ trigger?: string
210
+ }
211
+
212
+ export type ListExecutionsResponse = {
213
+ items?: Execution[]
214
+ pagination?: KangarooIoApiTypesPage.Page
215
+ }
216
+
217
+ export type CreatePolicyRequest = {
218
+ registry?: string
219
+ name?: string
220
+ description?: string
221
+ trigger?: Trigger
222
+ filters?: Filter[]
223
+ srcRegistryId?: string
224
+ destRegistryId?: string
225
+ enabled?: boolean
226
+ override?: boolean
227
+ destNamespace?: string
228
+ }
229
+
230
+ export type UpdatePolicyRequest = {
231
+ registry?: string
232
+ policyId?: string
233
+ name?: string
234
+ description?: string
235
+ trigger?: Trigger
236
+ filters?: Filter[]
237
+ srcRegistry?: NativeRegistry
238
+ destRegistry?: NativeRegistry
239
+ enabled?: boolean
240
+ override?: boolean
241
+ destNamespace?: string
242
+ }
243
+
244
+ export type GetExecutionRequest = {
245
+ registry?: string
246
+ executionId?: string
247
+ }
248
+
249
+ export type ListReplicationTasksRequest = {
250
+ registry?: string
251
+ executionId?: string
252
+ page?: number
253
+ pageSize?: number
254
+ resourceType?: string
255
+ status?: string
256
+ }
257
+
258
+ export type ListReplicationTasksResponse = {
259
+ items?: ReplicationTask[]
260
+ pagination?: KangarooIoApiTypesPage.Page
261
+ }
262
+
263
+ export type ReplicationTask = {
264
+ destResource?: string
265
+ endTime?: string
266
+ executionId?: string
267
+ id?: string
268
+ jobId?: string
269
+ operation?: ReplicationTaskOperation
270
+ resourceType?: string
271
+ srcResource?: string
272
+ startTime?: string
273
+ status?: ReplicationTaskStatus
274
+ }
275
+
276
+ export type GetReplicationTaskLogRequest = {
277
+ registry?: string
278
+ executionId?: string
279
+ taskId?: string
280
+ }
281
+
282
+ export type GetReplicationTaskLogResponse = {
283
+ log?: string
284
+ }
@@ -7,6 +7,7 @@
7
7
  import * as fm from "../../../../fetch.pb"
8
8
  import * as GoogleProtobufEmpty from "../../../../google/protobuf/empty.pb"
9
9
  import * as KangarooIoApiRegistryV1alpha1Registry from "./registry.pb"
10
+ import * as KangarooIoApiRegistryV1alpha1Replication from "./replication.pb"
10
11
  export class Registries {
11
12
  static CreateRegistry(req: KangarooIoApiRegistryV1alpha1Registry.CreateRegistryRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Registry.Registry> {
12
13
  return fm.fetchReq<KangarooIoApiRegistryV1alpha1Registry.CreateRegistryRequest, KangarooIoApiRegistryV1alpha1Registry.Registry>(`/apis/kangaroo.io/v1alpha1/registries`, {...initReq, method: "POST", body: JSON.stringify(req)})
@@ -47,4 +48,51 @@ export class Registries {
47
48
  static GetStorageStatistic(req: KangarooIoApiRegistryV1alpha1Registry.GetStorageStatisticRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Registry.GetStorageStatisticResponse> {
48
49
  return fm.fetchReq<KangarooIoApiRegistryV1alpha1Registry.GetStorageStatisticRequest, KangarooIoApiRegistryV1alpha1Registry.GetStorageStatisticResponse>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/storage_statistic?${fm.renderURLSearchParams(req, ["registry"])}`, {...initReq, method: "GET"})
49
50
  }
51
+ static ListFilterRegistry(req: KangarooIoApiRegistryV1alpha1Registry.ListFilterRegistryRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Registry.ListFilterRegistryResponse> {
52
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Registry.ListFilterRegistryRequest, KangarooIoApiRegistryV1alpha1Registry.ListFilterRegistryResponse>(`/apis/kangaroo.io/v1alpha1/filter_registries/${req["registry"]}/registries?${fm.renderURLSearchParams(req, ["registry"])}`, {...initReq, method: "GET"})
53
+ }
54
+ }
55
+ export class Replications {
56
+ static ListNativeRegistry(req: KangarooIoApiRegistryV1alpha1Replication.ListNativeRegistryRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Replication.ListNativeRegistryResponse> {
57
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.ListNativeRegistryRequest, KangarooIoApiRegistryV1alpha1Replication.ListNativeRegistryResponse>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/native/registries?${fm.renderURLSearchParams(req, ["registry"])}`, {...initReq, method: "GET"})
58
+ }
59
+ static CreateNativeRegistry(req: KangarooIoApiRegistryV1alpha1Replication.CreateNativeRegistryRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
60
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.CreateNativeRegistryRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/native/registries`, {...initReq, method: "POST", body: JSON.stringify(req)})
61
+ }
62
+ static UpdateNativeRegistry(req: KangarooIoApiRegistryV1alpha1Replication.UpdateNativeRegistryRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Replication.NativeRegistry> {
63
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.UpdateNativeRegistryRequest, KangarooIoApiRegistryV1alpha1Replication.NativeRegistry>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/native/registries/${req["nativeRegistryId"]}`, {...initReq, method: "PUT", body: JSON.stringify(req)})
64
+ }
65
+ static DeleteNativeRegistry(req: KangarooIoApiRegistryV1alpha1Replication.DeleteNativeRegistryRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
66
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.DeleteNativeRegistryRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/native/registries/${req["nativeRegistryId"]}`, {...initReq, method: "DELETE"})
67
+ }
68
+ static ListPolicies(req: KangarooIoApiRegistryV1alpha1Replication.ListPoliciesRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Replication.ListPoliciesResponse> {
69
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.ListPoliciesRequest, KangarooIoApiRegistryV1alpha1Replication.ListPoliciesResponse>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/policies?${fm.renderURLSearchParams(req, ["registry"])}`, {...initReq, method: "GET"})
70
+ }
71
+ static DeletePolicy(req: KangarooIoApiRegistryV1alpha1Replication.DeletePolicyRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
72
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.DeletePolicyRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/policies/${req["policyId"]}`, {...initReq, method: "DELETE"})
73
+ }
74
+ static CreateExecution(req: KangarooIoApiRegistryV1alpha1Replication.CreateExecutionRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
75
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.CreateExecutionRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/executions`, {...initReq, method: "POST", body: JSON.stringify(req)})
76
+ }
77
+ static StopExecution(req: KangarooIoApiRegistryV1alpha1Replication.StopExecutionRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
78
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.StopExecutionRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/executions/${req["executionId"]}`, {...initReq, method: "PUT"})
79
+ }
80
+ static ListExecutions(req: KangarooIoApiRegistryV1alpha1Replication.ListExecutionsRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Replication.ListExecutionsResponse> {
81
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.ListExecutionsRequest, KangarooIoApiRegistryV1alpha1Replication.ListExecutionsResponse>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/executions?${fm.renderURLSearchParams(req, ["registry"])}`, {...initReq, method: "GET"})
82
+ }
83
+ static GetExecution(req: KangarooIoApiRegistryV1alpha1Replication.GetExecutionRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Replication.Execution> {
84
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.GetExecutionRequest, KangarooIoApiRegistryV1alpha1Replication.Execution>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/executions/${req["executionId"]}?${fm.renderURLSearchParams(req, ["registry", "executionId"])}`, {...initReq, method: "GET"})
85
+ }
86
+ static ListReplicationTasks(req: KangarooIoApiRegistryV1alpha1Replication.ListReplicationTasksRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Replication.ListReplicationTasksResponse> {
87
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.ListReplicationTasksRequest, KangarooIoApiRegistryV1alpha1Replication.ListReplicationTasksResponse>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/executions/${req["executionId"]}/tasks?${fm.renderURLSearchParams(req, ["registry", "executionId"])}`, {...initReq, method: "GET"})
88
+ }
89
+ static GetReplicationTasksLog(req: KangarooIoApiRegistryV1alpha1Replication.GetReplicationTaskLogRequest, initReq?: fm.InitReq): Promise<KangarooIoApiRegistryV1alpha1Replication.GetReplicationTaskLogResponse> {
90
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.GetReplicationTaskLogRequest, KangarooIoApiRegistryV1alpha1Replication.GetReplicationTaskLogResponse>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/executions/${req["executionId"]}/tasks/${req["taskId"]}/log?${fm.renderURLSearchParams(req, ["registry", "executionId", "taskId"])}`, {...initReq, method: "GET"})
91
+ }
92
+ static CreatePolicy(req: KangarooIoApiRegistryV1alpha1Replication.CreatePolicyRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
93
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.CreatePolicyRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/policies`, {...initReq, method: "POST", body: JSON.stringify(req)})
94
+ }
95
+ static UpdatePolicy(req: KangarooIoApiRegistryV1alpha1Replication.UpdatePolicyRequest, initReq?: fm.InitReq): Promise<GoogleProtobufEmpty.Empty> {
96
+ return fm.fetchReq<KangarooIoApiRegistryV1alpha1Replication.UpdatePolicyRequest, GoogleProtobufEmpty.Empty>(`/apis/kangaroo.io/v1alpha1/registries/${req["registry"]}/policies/${req["policyId"]}`, {...initReq, method: "PUT", body: JSON.stringify(req)})
97
+ }
50
98
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name":"@daocloud-proto/kangaroo",
3
- "version":"0.5.0-18",
3
+ "version":"0.5.0-182",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {