@controlplane/schema 1.0.6 → 1.0.8

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 (63) hide show
  1. package/build/src/interfaces/accessreport.d.ts +11 -11
  2. package/build/src/interfaces/agent.d.ts +14 -10
  3. package/build/src/interfaces/auditctx.d.ts +4 -4
  4. package/build/src/interfaces/base.d.ts +20 -20
  5. package/build/src/interfaces/cloudaccount.d.ts +7 -7
  6. package/build/src/interfaces/command.d.ts +164 -125
  7. package/build/src/interfaces/config.d.ts +2 -4
  8. package/build/src/interfaces/containerstatus.d.ts +6 -6
  9. package/build/src/interfaces/cronjob.d.ts +1 -1
  10. package/build/src/interfaces/dbcluster.d.ts +1 -1
  11. package/build/src/interfaces/deployment.d.ts +20 -20
  12. package/build/src/interfaces/domain.d.ts +67 -67
  13. package/build/src/interfaces/env.d.ts +1 -1
  14. package/build/src/interfaces/envoy.d.ts +5 -5
  15. package/build/src/interfaces/envoyAccessLog.d.ts +1 -1
  16. package/build/src/interfaces/envoyCluster.d.ts +9 -9
  17. package/build/src/interfaces/envoyCommon.d.ts +301 -301
  18. package/build/src/interfaces/envoyExcExtAuth.d.ts +2 -2
  19. package/build/src/interfaces/envoyHttp.d.ts +146 -146
  20. package/build/src/interfaces/envoyRateLimit.d.ts +1 -1
  21. package/build/src/interfaces/event.d.ts +9 -9
  22. package/build/src/interfaces/group.d.ts +2 -2
  23. package/build/src/interfaces/gvc.d.ts +185 -66
  24. package/build/src/interfaces/identity.d.ts +96 -63
  25. package/build/src/interfaces/image.d.ts +1 -1
  26. package/build/src/interfaces/ipSet.d.ts +14 -14
  27. package/build/src/interfaces/location.d.ts +16 -16
  28. package/build/src/interfaces/memcache.d.ts +7 -7
  29. package/build/src/interfaces/mk8s.d.ts +65 -65
  30. package/build/src/interfaces/mk8sAddons.d.ts +127 -60
  31. package/build/src/interfaces/mk8sAws.d.ts +6 -6
  32. package/build/src/interfaces/mk8sAzure.d.ts +10 -10
  33. package/build/src/interfaces/mk8sCommon.d.ts +26 -26
  34. package/build/src/interfaces/mk8sDigitalOcean.d.ts +2 -2
  35. package/build/src/interfaces/mk8sEphemeral.d.ts +1 -1
  36. package/build/src/interfaces/mk8sGcp.d.ts +9 -9
  37. package/build/src/interfaces/mk8sGeneric.d.ts +5 -5
  38. package/build/src/interfaces/mk8sHetzner.d.ts +10 -10
  39. package/build/src/interfaces/mk8sLambdalabs.d.ts +5 -5
  40. package/build/src/interfaces/mk8sLinode.d.ts +6 -6
  41. package/build/src/interfaces/mk8sOblivus.d.ts +5 -5
  42. package/build/src/interfaces/mk8sPaperspace.d.ts +5 -5
  43. package/build/src/interfaces/mk8sTriton.d.ts +23 -23
  44. package/build/src/interfaces/org.d.ts +34 -32
  45. package/build/src/interfaces/orgLogging.d.ts +32 -25
  46. package/build/src/interfaces/permissions.d.ts +1 -1
  47. package/build/src/interfaces/policy.d.ts +2 -2
  48. package/build/src/interfaces/policyMembership.d.ts +6 -6
  49. package/build/src/interfaces/query.d.ts +24 -17
  50. package/build/src/interfaces/quota.d.ts +1 -1
  51. package/build/src/interfaces/resourcePolicy.d.ts +1 -1
  52. package/build/src/interfaces/secret.d.ts +23 -23
  53. package/build/src/interfaces/serviceaccount.d.ts +7 -7
  54. package/build/src/interfaces/spicedb.d.ts +1 -1
  55. package/build/src/interfaces/statefulSet.d.ts +1 -1
  56. package/build/src/interfaces/task.d.ts +1 -1
  57. package/build/src/interfaces/tenant.d.ts +5 -5
  58. package/build/src/interfaces/tracing.d.ts +16 -8
  59. package/build/src/interfaces/user.d.ts +12 -12
  60. package/build/src/interfaces/volumeSet.d.ts +54 -46
  61. package/build/src/interfaces/workload.d.ts +241 -200
  62. package/build/src/interfaces/workloadOptions.d.ts +47 -14
  63. package/package.json +1 -1
@@ -1,64 +1,11 @@
1
- import { Port } from './port';
2
- import { Regex, Kind, Tags, Links } from './base';
3
- import { EnvVar } from './env';
4
- import { VolumeSpec } from './volumeSpec';
5
- import { DefaultOptions, LocalOptions } from './workloadOptions';
6
- import { EnvoyFilters } from './envoy';
7
- export type Memory = string;
8
- export type Cpu = string;
9
- export interface HealthCheckSpec {
10
- exec?: {
11
- command?: string[];
12
- };
13
- grpc?: {
14
- port?: Port;
15
- };
16
- tcpSocket?: {
17
- port?: number;
18
- };
19
- httpGet?: {
20
- path?: string;
21
- port?: number;
22
- httpHeaders?: {
23
- name: string;
24
- value: string;
25
- }[];
26
- scheme?: 'HTTP' | 'HTTPS';
27
- };
28
- initialDelaySeconds?: number;
29
- periodSeconds?: number;
30
- timeoutSeconds?: number;
31
- successThreshold?: number;
32
- failureThreshold?: number;
33
- }
34
- export interface RolloutOptions {
35
- minReadySeconds?: number;
36
- maxUnavailableReplicas?: string;
37
- maxSurgeReplicas?: string;
38
- scalingPolicy?: 'OrderedReady' | 'Parallel';
39
- terminationGracePeriodSeconds?: number;
40
- }
41
- export interface RolloutOptionsStateful {
42
- minReadySeconds?: number;
43
- maxSurgeReplicas?: string;
44
- scalingPolicy?: 'OrderedReady' | 'Parallel';
45
- terminationGracePeriodSeconds?: number;
46
- maxUnavailableReplicas?: string;
47
- }
48
- export interface SecurityOptions {
49
- filesystemGroupId?: number;
50
- }
51
- export interface GpuResource {
52
- nvidia?: {
53
- model?: any;
54
- quantity?: number;
55
- };
56
- custom?: {
57
- resource: string;
58
- runtimeClass?: string;
59
- quantity?: number;
60
- };
61
- }
1
+ import { Regex, Kind, Tags, Links } from './base.js';
2
+ import { EnvVar } from './env.js';
3
+ import { VolumeSpec } from './volumeSpec.js';
4
+ import { DefaultOptions, LocalOptions } from './workloadOptions.js';
5
+ import { AccessLog } from './envoyAccessLog.js';
6
+ import { Cluster } from './envoyCluster.js';
7
+ import { ExcExtAuth, ExcludedRateLimit } from './envoyExcExtAuth.js';
8
+ import { HttpFilter } from './envoyHttp.js';
62
9
  export interface ContainerSpec {
63
10
  name?: string;
64
11
  image: string;
@@ -79,7 +26,7 @@ export interface ContainerSpec {
79
26
  command?: string[];
80
27
  };
81
28
  grpc?: {
82
- port?: Port;
29
+ port?: number;
83
30
  };
84
31
  tcpSocket?: {
85
32
  port?: number;
@@ -104,7 +51,7 @@ export interface ContainerSpec {
104
51
  command?: string[];
105
52
  };
106
53
  grpc?: {
107
- port?: Port;
54
+ port?: number;
108
55
  };
109
56
  tcpSocket?: {
110
57
  port?: number;
@@ -156,53 +103,11 @@ export interface ContainerSpec {
156
103
  };
157
104
  volumes?: VolumeSpec[];
158
105
  }
159
- export interface HealthCheckStatus {
160
- active: boolean;
161
- success?: boolean;
162
- code?: number;
163
- message?: string;
164
- failures?: number;
165
- successes?: number;
166
- lastChecked?: Date;
167
- }
168
- export interface LoadBalancerStatus {
169
- origin?: string;
170
- url?: string;
171
- }
172
- export interface ResolvedImage {
173
- digest?: string;
174
- manifests?: {
175
- image: string;
176
- mediaType: string;
177
- digest: string;
178
- platform?: {
179
- [x: string]: string;
180
- };
181
- }[];
182
- }
183
- export interface ResolvedImages {
184
- resolvedForVersion?: number;
185
- resolvedAt?: Date;
186
- errorMessages?: string[];
187
- nextRetryAt?: Date;
188
- images?: ResolvedImage[];
189
- }
190
- export interface WorkloadStatus {
191
- parentId?: string;
192
- canonicalEndpoint?: string;
193
- endpoint?: string;
194
- internalName?: string;
195
- replicaInternalNames?: string[];
196
- healthCheck?: HealthCheckStatus;
197
- currentReplicaCount?: number;
198
- resolvedImages?: ResolvedImages;
199
- loadBalancer?: LoadBalancerStatus[];
200
- [x: string]: any;
201
- }
202
- export interface HeaderFilter {
203
- key: string;
204
- allowedValues?: Regex[];
205
- blockedValues?: Regex[];
106
+ export type Cpu = string;
107
+ export interface Extras {
108
+ affinity?: any;
109
+ tolerations?: any[];
110
+ topologySpreadConstraints?: any[];
206
111
  }
207
112
  export interface FirewallSpec {
208
113
  external?: {
@@ -224,7 +129,56 @@ export interface FirewallSpec {
224
129
  inboundAllowWorkload?: string[];
225
130
  };
226
131
  }
227
- export type ScheduleType = string;
132
+ export interface GpuResource {
133
+ nvidia?: {
134
+ model?: any;
135
+ quantity?: number;
136
+ };
137
+ custom?: {
138
+ resource: string;
139
+ runtimeClass?: string;
140
+ quantity?: number;
141
+ };
142
+ }
143
+ export interface HeaderFilter {
144
+ key: string;
145
+ allowedValues?: Regex[];
146
+ blockedValues?: Regex[];
147
+ }
148
+ export interface HealthCheckSpec {
149
+ exec?: {
150
+ command?: string[];
151
+ };
152
+ grpc?: {
153
+ port?: number;
154
+ };
155
+ tcpSocket?: {
156
+ port?: number;
157
+ };
158
+ httpGet?: {
159
+ path?: string;
160
+ port?: number;
161
+ httpHeaders?: {
162
+ name: string;
163
+ value: string;
164
+ }[];
165
+ scheme?: 'HTTP' | 'HTTPS';
166
+ };
167
+ initialDelaySeconds?: number;
168
+ periodSeconds?: number;
169
+ timeoutSeconds?: number;
170
+ successThreshold?: number;
171
+ failureThreshold?: number;
172
+ }
173
+ export interface HealthCheckStatus {
174
+ active: boolean;
175
+ success?: boolean;
176
+ code?: number;
177
+ message?: string;
178
+ failures?: number;
179
+ successes?: number;
180
+ lastChecked?: Date;
181
+ }
228
182
  export interface JobSpec {
229
183
  schedule: ScheduleType;
230
184
  concurrencyPolicy?: 'Forbid' | 'Replace' | 'Allow';
@@ -255,83 +209,54 @@ export interface LoadBalancerSpec {
255
209
  };
256
210
  replicaDirect?: boolean;
257
211
  }
258
- export interface Extras {
259
- affinity?: any;
260
- tolerations?: any[];
261
- topologySpreadConstraints?: any[];
212
+ export interface LoadBalancerStatus {
213
+ origin?: string;
214
+ url?: string;
215
+ }
216
+ export type Memory = string;
217
+ export interface PodZoneMap {
218
+ [x: string]: string;
262
219
  }
263
220
  export interface RequestRetryPolicy {
264
221
  attempts?: number;
265
222
  retryOn?: string[];
266
223
  }
267
- export type WorkloadType = 'serverless' | 'standard' | 'cron' | 'stateful';
268
- export interface WorkloadSpec {
269
- type?: WorkloadType;
270
- identityLink?: string;
271
- containers: ContainerSpec[];
272
- firewallConfig?: {
273
- external?: {
274
- inboundAllowCIDR?: string[];
275
- inboundBlockedCIDR?: string[];
276
- outboundAllowHostname?: string[];
277
- outboundAllowPort?: ({
278
- protocol: 'http' | 'https' | 'tcp';
279
- number: number;
280
- })[];
281
- outboundAllowCIDR?: string[];
282
- outboundBlockedCIDR?: string[];
283
- http?: {
284
- inboundHeaderFilter?: HeaderFilter[];
285
- };
286
- };
287
- internal?: {
288
- inboundAllowType?: 'none' | 'same-gvc' | 'same-org' | 'workload-list';
289
- inboundAllowWorkload?: string[];
290
- };
291
- };
292
- defaultOptions?: DefaultOptions;
293
- localOptions?: LocalOptions;
294
- job?: {
295
- schedule: ScheduleType;
296
- concurrencyPolicy?: 'Forbid' | 'Replace' | 'Allow';
297
- historyLimit?: number;
298
- restartPolicy?: 'OnFailure' | 'Never';
299
- activeDeadlineSeconds?: number;
300
- };
301
- sidecar?: {
302
- envoy?: EnvoyFilters;
303
- };
304
- supportDynamicTags?: boolean;
305
- rolloutOptions?: any;
306
- securityOptions?: {
307
- filesystemGroupId?: number;
308
- };
309
- loadBalancer?: {
310
- direct?: {
311
- enabled: boolean;
312
- ports?: LoadBalancerPort[];
313
- ipSet?: string;
314
- };
315
- geoLocation?: {
316
- enabled?: boolean;
317
- headers?: {
318
- asn?: string;
319
- city?: string;
320
- country?: string;
321
- region?: string;
322
- };
224
+ export interface ResolvedImage {
225
+ digest?: string;
226
+ manifests?: {
227
+ image: string;
228
+ mediaType: string;
229
+ digest: string;
230
+ platform?: {
231
+ [x: string]: string;
323
232
  };
324
- replicaDirect?: boolean;
325
- };
326
- extras?: {
327
- affinity?: any;
328
- tolerations?: any[];
329
- topologySpreadConstraints?: any[];
330
- };
331
- requestRetryPolicy?: {
332
- attempts?: number;
333
- retryOn?: string[];
334
- };
233
+ }[];
234
+ }
235
+ export interface ResolvedImages {
236
+ resolvedForVersion?: number;
237
+ resolvedAt?: Date;
238
+ errorMessages?: string[];
239
+ nextRetryAt?: Date;
240
+ images?: ResolvedImage[];
241
+ }
242
+ export interface RolloutOptions {
243
+ minReadySeconds?: number;
244
+ maxUnavailableReplicas?: string;
245
+ maxSurgeReplicas?: string;
246
+ scalingPolicy?: 'OrderedReady' | 'Parallel';
247
+ terminationGracePeriodSeconds?: number;
248
+ }
249
+ export interface RolloutOptionsStateful {
250
+ minReadySeconds?: number;
251
+ maxSurgeReplicas?: string;
252
+ scalingPolicy?: 'OrderedReady' | 'Parallel';
253
+ terminationGracePeriodSeconds?: number;
254
+ maxUnavailableReplicas?: string;
255
+ }
256
+ export type ScheduleType = string;
257
+ export interface SecurityOptions {
258
+ filesystemGroupId?: number;
259
+ runAsUser?: number;
335
260
  }
336
261
  export interface Workload {
337
262
  id?: string;
@@ -378,12 +303,21 @@ export interface Workload {
378
303
  activeDeadlineSeconds?: number;
379
304
  };
380
305
  sidecar?: {
381
- envoy?: EnvoyFilters;
306
+ envoy?: {
307
+ accessLog?: AccessLog[];
308
+ clusters?: Cluster[];
309
+ excludedExternalAuth?: ExcExtAuth[];
310
+ excludedRateLimit?: ExcludedRateLimit[];
311
+ http?: HttpFilter[];
312
+ network?: any[];
313
+ volumes?: VolumeSpec[];
314
+ };
382
315
  };
383
316
  supportDynamicTags?: boolean;
384
317
  rolloutOptions?: any;
385
318
  securityOptions?: {
386
319
  filesystemGroupId?: number;
320
+ runAsUser?: number;
387
321
  };
388
322
  loadBalancer?: {
389
323
  direct?: {
@@ -412,27 +346,134 @@ export interface Workload {
412
346
  retryOn?: string[];
413
347
  };
414
348
  };
415
- status?: WorkloadStatus;
416
- }
417
- export interface PodZoneMap {
418
- [x: string]: string;
349
+ status?: {
350
+ parentId?: string;
351
+ canonicalEndpoint?: string;
352
+ endpoint?: string;
353
+ internalName?: string;
354
+ replicaInternalNames?: string[];
355
+ healthCheck?: {
356
+ active: boolean;
357
+ success?: boolean;
358
+ code?: number;
359
+ message?: string;
360
+ failures?: number;
361
+ successes?: number;
362
+ lastChecked?: Date;
363
+ };
364
+ currentReplicaCount?: number;
365
+ resolvedImages?: {
366
+ resolvedForVersion?: number;
367
+ resolvedAt?: Date;
368
+ errorMessages?: string[];
369
+ nextRetryAt?: Date;
370
+ images?: ResolvedImage[];
371
+ };
372
+ loadBalancer?: LoadBalancerStatus[];
373
+ [x: string]: any;
374
+ };
419
375
  }
420
- export interface WorkloadConfig {
421
- scheduling?: {
422
- fingerprint?: string;
423
- version?: number;
376
+ export interface WorkloadSpec {
377
+ type?: WorkloadType;
378
+ identityLink?: string;
379
+ containers: ContainerSpec[];
380
+ firewallConfig?: {
381
+ external?: {
382
+ inboundAllowCIDR?: string[];
383
+ inboundBlockedCIDR?: string[];
384
+ outboundAllowHostname?: string[];
385
+ outboundAllowPort?: ({
386
+ protocol: 'http' | 'https' | 'tcp';
387
+ number: number;
388
+ })[];
389
+ outboundAllowCIDR?: string[];
390
+ outboundBlockedCIDR?: string[];
391
+ http?: {
392
+ inboundHeaderFilter?: HeaderFilter[];
393
+ };
394
+ };
395
+ internal?: {
396
+ inboundAllowType?: 'none' | 'same-gvc' | 'same-org' | 'workload-list';
397
+ inboundAllowWorkload?: string[];
398
+ };
424
399
  };
425
- thinProvision?: number;
426
- podZoneMap?: {
427
- [x: string]: string;
400
+ defaultOptions?: DefaultOptions;
401
+ localOptions?: LocalOptions;
402
+ job?: {
403
+ schedule: ScheduleType;
404
+ concurrencyPolicy?: 'Forbid' | 'Replace' | 'Allow';
405
+ historyLimit?: number;
406
+ restartPolicy?: 'OnFailure' | 'Never';
407
+ activeDeadlineSeconds?: number;
428
408
  };
429
- locationPodZoneMap?: {
430
- [x: string]: PodZoneMap;
409
+ sidecar?: {
410
+ envoy?: {
411
+ accessLog?: AccessLog[];
412
+ clusters?: Cluster[];
413
+ excludedExternalAuth?: ExcExtAuth[];
414
+ excludedRateLimit?: ExcludedRateLimit[];
415
+ http?: HttpFilter[];
416
+ network?: any[];
417
+ volumes?: VolumeSpec[];
418
+ };
431
419
  };
432
- proxy?: {
433
- minCpu?: number;
420
+ supportDynamicTags?: boolean;
421
+ rolloutOptions?: any;
422
+ securityOptions?: {
423
+ filesystemGroupId?: number;
424
+ runAsUser?: number;
434
425
  };
435
- subsets?: {
436
- enabled?: boolean;
426
+ loadBalancer?: {
427
+ direct?: {
428
+ enabled: boolean;
429
+ ports?: LoadBalancerPort[];
430
+ ipSet?: string;
431
+ };
432
+ geoLocation?: {
433
+ enabled?: boolean;
434
+ headers?: {
435
+ asn?: string;
436
+ city?: string;
437
+ country?: string;
438
+ region?: string;
439
+ };
440
+ };
441
+ replicaDirect?: boolean;
442
+ };
443
+ extras?: {
444
+ affinity?: any;
445
+ tolerations?: any[];
446
+ topologySpreadConstraints?: any[];
447
+ };
448
+ requestRetryPolicy?: {
449
+ attempts?: number;
450
+ retryOn?: string[];
437
451
  };
438
452
  }
453
+ export interface WorkloadStatus {
454
+ parentId?: string;
455
+ canonicalEndpoint?: string;
456
+ endpoint?: string;
457
+ internalName?: string;
458
+ replicaInternalNames?: string[];
459
+ healthCheck?: {
460
+ active: boolean;
461
+ success?: boolean;
462
+ code?: number;
463
+ message?: string;
464
+ failures?: number;
465
+ successes?: number;
466
+ lastChecked?: Date;
467
+ };
468
+ currentReplicaCount?: number;
469
+ resolvedImages?: {
470
+ resolvedForVersion?: number;
471
+ resolvedAt?: Date;
472
+ errorMessages?: string[];
473
+ nextRetryAt?: Date;
474
+ images?: ResolvedImage[];
475
+ };
476
+ loadBalancer?: LoadBalancerStatus[];
477
+ [x: string]: any;
478
+ }
479
+ export type WorkloadType = 'serverless' | 'standard' | 'cron' | 'stateful';
@@ -1,15 +1,3 @@
1
- export interface KedaTrigger {
2
- type: string;
3
- metadata?: {
4
- [x: string]: string | any;
5
- };
6
- name?: string;
7
- useCachedMetrics?: boolean;
8
- metricType?: 'AverageValue' | 'Value' | 'Utilization';
9
- authenticationRef?: {
10
- name: string;
11
- };
12
- }
13
1
  export interface DefaultOptions {
14
2
  autoscaling?: {
15
3
  metric?: 'concurrency' | 'cpu' | 'memory' | 'rps' | 'latency' | 'keda' | 'disabled';
@@ -53,7 +41,20 @@ export interface DefaultOptions {
53
41
  enabled?: boolean;
54
42
  };
55
43
  }
56
- export type LocalOptions = ({
44
+ export interface KedaTrigger {
45
+ type: string;
46
+ metadata?: {
47
+ [x: string]: string | any;
48
+ };
49
+ name?: string;
50
+ useCachedMetrics?: boolean;
51
+ metricType?: 'AverageValue' | 'Value' | 'Utilization';
52
+ authenticationRef?: {
53
+ name: string;
54
+ };
55
+ }
56
+ export type LocalOptions = LocalOptionsItem[];
57
+ export interface LocalOptionsItem {
57
58
  autoscaling?: {
58
59
  metric?: 'concurrency' | 'cpu' | 'memory' | 'rps' | 'latency' | 'keda' | 'disabled';
59
60
  multi?: {
@@ -96,4 +97,36 @@ export type LocalOptions = ({
96
97
  enabled?: boolean;
97
98
  };
98
99
  location: string;
99
- })[];
100
+ }
101
+ export interface OptionsAutoscaling {
102
+ metric?: 'concurrency' | 'cpu' | 'memory' | 'rps' | 'latency' | 'keda' | 'disabled';
103
+ multi?: {
104
+ metric?: any;
105
+ target?: number;
106
+ }[];
107
+ metricPercentile?: 'p50' | 'p75' | 'p99';
108
+ target?: number;
109
+ maxScale?: number;
110
+ minScale?: number;
111
+ scaleToZeroDelay?: number;
112
+ maxConcurrency?: number;
113
+ keda?: {
114
+ triggers?: KedaTrigger[];
115
+ advanced?: {
116
+ scalingModifiers?: {
117
+ target?: string;
118
+ activationTarget?: string;
119
+ metricType?: 'AverageValue' | 'Value' | 'Utilization';
120
+ formula?: string;
121
+ };
122
+ };
123
+ fallback?: {
124
+ failureThreshold: number;
125
+ replicas: number;
126
+ behavior?: 'static' | 'currentReplicas' | 'currentReplicasIfHigher' | 'currentReplicasIfLower';
127
+ };
128
+ pollingInterval?: number;
129
+ cooldownPeriod?: number;
130
+ initialCooldownPeriod?: number;
131
+ };
132
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@controlplane/schema",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Control Plane Corporation Schema",
5
5
  "scripts": {
6
6
  "build": "tsc",