@logto/cloud 0.2.5-5deb133 → 0.2.5-5e334eb

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 (2) hide show
  1. package/lib/routes/index.d.ts +705 -96
  2. package/package.json +14 -18
@@ -1,11 +1,13 @@
1
- // Generated by dts-bundle-generator v8.0.1
1
+ // Generated by dts-bundle-generator v9.3.1
2
2
 
3
- import { RequestContext } from '@withtyped/server';
3
+ import { Json, JsonObject, RequestContext } from '@withtyped/server';
4
4
  import { InferModelType } from '@withtyped/server/model';
5
5
 
6
6
  export type WithAuthContext<Context = RequestContext> = Context & {
7
7
  auth: {
8
+ /** The ID of the authenticated subject (`sub`). */
8
9
  id: string;
10
+ /** The scopes that the subject has (`scope`). */
9
11
  scopes: string[];
10
12
  };
11
13
  };
@@ -17,35 +19,129 @@ declare enum VerificationCodeType {
17
19
  /** @deprecated Use `Generic` type template for sending test sms/email use case */
18
20
  Test = "Test"
19
21
  }
22
+ declare enum TemplateType {
23
+ /** The template for sending verification code when user is signing in. */
24
+ SignIn = "SignIn",
25
+ /** The template for sending verification code when user is registering. */
26
+ Register = "Register",
27
+ /** The template for sending verification code when user is resetting password. */
28
+ ForgotPassword = "ForgotPassword",
29
+ /** The template for sending organization invitation. */
30
+ OrganizationInvitation = "OrganizationInvitation",
31
+ /** The template for generic usage. */
32
+ Generic = "Generic"
33
+ }
34
+ declare enum OrganizationInvitationStatus {
35
+ Pending = "Pending",
36
+ Accepted = "Accepted",
37
+ Expired = "Expired",
38
+ Revoked = "Revoked"
39
+ }
40
+ /** The scopes (permissions) defined by the organization template. */
41
+ export type OrganizationScope = {
42
+ tenantId: string;
43
+ /** The globally unique identifier of the organization scope. */
44
+ id: string;
45
+ /** The organization scope's name, unique within the organization template. */
46
+ name: string;
47
+ /** A brief description of the organization scope. */
48
+ description: string | null;
49
+ };
50
+ declare enum LogtoJwtTokenKeyType {
51
+ AccessToken = "access-token",
52
+ ClientCredentials = "client-credentials"
53
+ }
54
+ /**
55
+ * The simplified organization role entity that is returned in the `roles` field
56
+ * of the organization.
57
+ */
58
+ export type OrganizationRoleEntity = {
59
+ id: string;
60
+ name: string;
61
+ };
20
62
  declare enum TenantTag {
21
63
  Development = "development",
22
- Staging = "staging",
23
64
  Production = "production"
24
65
  }
25
- declare const AffiliateProperties: import("@withtyped/server/model").default<"affiliate_properties", {
66
+ declare enum TenantRole {
67
+ /** Admin of the tenant, who has all permissions. */
68
+ Admin = "admin",
69
+ /** Collaborator of the tenant, who has permissions to operate the tenant data, but not the tenant settings. */
70
+ Collaborator = "collaborator"
71
+ }
72
+ declare const availableReportableUsageKeys: readonly [
73
+ "tokenLimit",
74
+ "machineToMachineLimit",
75
+ "resourcesLimit",
76
+ "enterpriseSsoLimit",
77
+ "hooksLimit",
78
+ "tenantMembersLimit",
79
+ "mfaEnabled",
80
+ "organizationsEnabled",
81
+ "organizationsLimit"
82
+ ];
83
+ export type ReportableUsageKey = (typeof availableReportableUsageKeys)[number];
84
+ export type RealtimeReportableUsageKey = Exclude<ReportableUsageKey, "tokenLimit">;
85
+ declare enum LogtoSkuType {
86
+ Basic = "Basic",
87
+ AddOn = "AddOn"
88
+ }
89
+ declare const AffiliateProperties: import("@withtyped/server/lib/model/index.js").default<"affiliate_properties", {
26
90
  createdAt: Date;
27
91
  affiliateId: string;
28
92
  type: "hostname" | "query";
29
93
  value: string;
30
94
  }, "createdAt", "createdAt">;
31
95
  export type AffiliateProperty = InferModelType<typeof AffiliateProperties>;
32
- declare const Affiliates: import("@withtyped/server/model").default<"affiliates", {
33
- id: string;
34
- createdAt: Date;
96
+ declare const Affiliates: import("@withtyped/server/lib/model/index.js").default<"affiliates", {
35
97
  name: string;
36
- }, "createdAt" | "id", "createdAt" | "id">;
98
+ createdAt: Date;
99
+ id: string;
100
+ }, "id" | "createdAt", "id" | "createdAt">;
37
101
  export type Affiliate = InferModelType<typeof Affiliates>;
102
+ declare enum RegionName {
103
+ EU = "EU",
104
+ US = "US",
105
+ AU = "AU"
106
+ }
38
107
  export type AffiliateData = Affiliate & {
39
108
  properties: Array<Pick<AffiliateProperty, "type" | "value">>;
40
109
  };
41
- declare const router: import("@withtyped/server").Router<WithAuthContext, import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
42
- options: {};
110
+ declare const router: import("@withtyped/server").Router<RequestContext, WithAuthContext<Omit<import("@withtyped/server").BaseContext & {
111
+ request: {
112
+ id?: string | undefined;
113
+ method?: import("@withtyped/server").RequestMethod | undefined;
114
+ headers: import("http").IncomingHttpHeaders;
115
+ url: URL;
116
+ body?: unknown;
117
+ };
118
+ }, "request"> & {
119
+ request: Record<string, unknown> & {
120
+ id?: string | undefined;
121
+ method?: import("@withtyped/server").RequestMethod | undefined;
122
+ headers: import("http").IncomingHttpHeaders;
123
+ url: URL;
124
+ body?: unknown;
125
+ } & {
126
+ body?: Json | undefined;
127
+ bodyRaw?: Buffer | undefined;
128
+ };
129
+ }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
43
130
  patch: {
44
131
  "/tenants/:tenantId": import("@withtyped/server").PathGuard<"/:tenantId", unknown, {
45
132
  name?: string | undefined;
46
133
  }, {
47
134
  id: string;
48
135
  name: string;
136
+ quota: {
137
+ mauLimit: number | null;
138
+ tokenLimit: number | null;
139
+ };
140
+ createdAt: Date;
141
+ usage: {
142
+ activeUsers: number;
143
+ tokenUsage: number;
144
+ };
49
145
  indicator: string;
50
146
  isSuspended: boolean;
51
147
  planId: string;
@@ -54,16 +150,22 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
54
150
  planId: string;
55
151
  currentPeriodStart: Date;
56
152
  currentPeriodEnd: Date;
153
+ isEnterprisePlan: boolean;
154
+ id?: string | undefined;
155
+ upcomingInvoice?: {
156
+ subtotal: number;
157
+ subtotalExcludingTax: number | null;
158
+ total: number;
159
+ totalExcludingTax: number | null;
160
+ } | null | undefined;
161
+ isAddOnAvailable?: boolean | undefined;
57
162
  };
163
+ regionName: RegionName;
58
164
  tag: TenantTag;
59
- usage: {
60
- activeUsers: number;
61
- cost: number;
62
- };
63
165
  openInvoices: {
64
166
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
65
- createdAt: Date;
66
167
  id: string;
168
+ createdAt: Date;
67
169
  updatedAt: Date;
68
170
  customerId: string | null;
69
171
  billingReason: string | null;
@@ -77,10 +179,20 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
77
179
  }[];
78
180
  }>;
79
181
  };
182
+ options: {};
80
183
  get: {
81
184
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
82
185
  id: string;
83
186
  name: string;
187
+ quota: {
188
+ mauLimit: number | null;
189
+ tokenLimit: number | null;
190
+ };
191
+ createdAt: Date;
192
+ usage: {
193
+ activeUsers: number;
194
+ tokenUsage: number;
195
+ };
84
196
  indicator: string;
85
197
  isSuspended: boolean;
86
198
  planId: string;
@@ -89,16 +201,22 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
89
201
  planId: string;
90
202
  currentPeriodStart: Date;
91
203
  currentPeriodEnd: Date;
204
+ isEnterprisePlan: boolean;
205
+ id?: string | undefined;
206
+ upcomingInvoice?: {
207
+ subtotal: number;
208
+ subtotalExcludingTax: number | null;
209
+ total: number;
210
+ totalExcludingTax: number | null;
211
+ } | null | undefined;
212
+ isAddOnAvailable?: boolean | undefined;
92
213
  };
214
+ regionName: RegionName;
93
215
  tag: TenantTag;
94
- usage: {
95
- activeUsers: number;
96
- cost: number;
97
- };
98
216
  openInvoices: {
99
217
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
100
- createdAt: Date;
101
218
  id: string;
219
+ createdAt: Date;
102
220
  updatedAt: Date;
103
221
  customerId: string | null;
104
222
  billingReason: string | null;
@@ -116,9 +234,19 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
116
234
  "/tenants": import("@withtyped/server").PathGuard<"/", unknown, {
117
235
  name?: string | undefined;
118
236
  tag?: TenantTag | undefined;
237
+ regionName?: RegionName | undefined;
119
238
  }, {
120
239
  id: string;
121
240
  name: string;
241
+ quota: {
242
+ mauLimit: number | null;
243
+ tokenLimit: number | null;
244
+ };
245
+ createdAt: Date;
246
+ usage: {
247
+ activeUsers: number;
248
+ tokenUsage: number;
249
+ };
122
250
  indicator: string;
123
251
  isSuspended: boolean;
124
252
  planId: string;
@@ -127,16 +255,22 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
127
255
  planId: string;
128
256
  currentPeriodStart: Date;
129
257
  currentPeriodEnd: Date;
258
+ isEnterprisePlan: boolean;
259
+ id?: string | undefined;
260
+ upcomingInvoice?: {
261
+ subtotal: number;
262
+ subtotalExcludingTax: number | null;
263
+ total: number;
264
+ totalExcludingTax: number | null;
265
+ } | null | undefined;
266
+ isAddOnAvailable?: boolean | undefined;
130
267
  };
268
+ regionName: RegionName;
131
269
  tag: TenantTag;
132
- usage: {
133
- activeUsers: number;
134
- cost: number;
135
- };
136
270
  openInvoices: {
137
271
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
138
- createdAt: Date;
139
272
  id: string;
273
+ createdAt: Date;
140
274
  updatedAt: Date;
141
275
  customerId: string | null;
142
276
  billingReason: string | null;
@@ -157,14 +291,97 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
157
291
  copy: {};
158
292
  head: {};
159
293
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
160
- options: {};
161
294
  patch: {};
295
+ options: {};
162
296
  get: {
163
297
  "/tenants/my/subscription": import("@withtyped/server").PathGuard<"/my/subscription", unknown, unknown, {
164
298
  status: "incomplete" | "incomplete_expired" | "trialing" | "active" | "past_due" | "canceled" | "unpaid" | "paused";
165
299
  planId: string;
166
300
  currentPeriodStart: Date;
167
301
  currentPeriodEnd: Date;
302
+ isEnterprisePlan: boolean;
303
+ id?: string | undefined;
304
+ upcomingInvoice?: {
305
+ subtotal: number;
306
+ subtotalExcludingTax: number | null;
307
+ total: number;
308
+ totalExcludingTax: number | null;
309
+ } | null | undefined;
310
+ isAddOnAvailable?: boolean | undefined;
311
+ }>;
312
+ } & {
313
+ "/tenants/my/subscription-usage": import("@withtyped/server").PathGuard<"/my/subscription-usage", unknown, unknown, {
314
+ usage: {
315
+ applicationsLimit: number;
316
+ machineToMachineLimit: number;
317
+ resourcesLimit: number;
318
+ scopesPerResourceLimit: number;
319
+ socialConnectorsLimit: number;
320
+ machineToMachineRolesLimit: number;
321
+ scopesPerRoleLimit: number;
322
+ hooksLimit: number;
323
+ mfaEnabled: boolean;
324
+ organizationsEnabled: boolean;
325
+ thirdPartyApplicationsLimit: number;
326
+ tenantMembersLimit: number;
327
+ customJwtEnabled: boolean;
328
+ subjectTokenEnabled: boolean;
329
+ bringYourUiEnabled: boolean;
330
+ userRolesLimit: number;
331
+ enterpriseSsoLimit: number;
332
+ organizationsLimit: number;
333
+ idpInitiatedSsoEnabled: boolean;
334
+ };
335
+ resources: Record<string, number>;
336
+ roles: Record<string, number>;
337
+ quota: {
338
+ mauLimit: number | null;
339
+ tokenLimit: number | null;
340
+ applicationsLimit: number | null;
341
+ machineToMachineLimit: number | null;
342
+ resourcesLimit: number | null;
343
+ scopesPerResourceLimit: number | null;
344
+ socialConnectorsLimit: number | null;
345
+ machineToMachineRolesLimit: number | null;
346
+ scopesPerRoleLimit: number | null;
347
+ hooksLimit: number | null;
348
+ auditLogsRetentionDays: number | null;
349
+ mfaEnabled: boolean;
350
+ organizationsEnabled: boolean;
351
+ thirdPartyApplicationsLimit: number | null;
352
+ tenantMembersLimit: number | null;
353
+ customJwtEnabled: boolean;
354
+ subjectTokenEnabled: boolean;
355
+ bringYourUiEnabled: boolean;
356
+ userRolesLimit: number | null;
357
+ enterpriseSsoLimit: number | null;
358
+ organizationsLimit: number | null;
359
+ idpInitiatedSsoEnabled: boolean;
360
+ };
361
+ basicQuota: {
362
+ mauLimit: number | null;
363
+ tokenLimit: number | null;
364
+ applicationsLimit: number | null;
365
+ machineToMachineLimit: number | null;
366
+ resourcesLimit: number | null;
367
+ scopesPerResourceLimit: number | null;
368
+ socialConnectorsLimit: number | null;
369
+ machineToMachineRolesLimit: number | null;
370
+ scopesPerRoleLimit: number | null;
371
+ hooksLimit: number | null;
372
+ auditLogsRetentionDays: number | null;
373
+ mfaEnabled: boolean;
374
+ organizationsEnabled: boolean;
375
+ thirdPartyApplicationsLimit: number | null;
376
+ tenantMembersLimit: number | null;
377
+ customJwtEnabled: boolean;
378
+ subjectTokenEnabled: boolean;
379
+ bringYourUiEnabled: boolean;
380
+ userRolesLimit: number | null;
381
+ enterpriseSsoLimit: number | null;
382
+ organizationsLimit: number | null;
383
+ idpInitiatedSsoEnabled: boolean;
384
+ };
168
385
  }>;
169
386
  } & {
170
387
  "/tenants/:tenantId/subscription": import("@withtyped/server").PathGuard<"/:tenantId/subscription", unknown, unknown, {
@@ -172,13 +389,101 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
172
389
  planId: string;
173
390
  currentPeriodStart: Date;
174
391
  currentPeriodEnd: Date;
392
+ isEnterprisePlan: boolean;
393
+ id?: string | undefined;
394
+ upcomingInvoice?: {
395
+ subtotal: number;
396
+ subtotalExcludingTax: number | null;
397
+ total: number;
398
+ totalExcludingTax: number | null;
399
+ } | null | undefined;
400
+ isAddOnAvailable?: boolean | undefined;
401
+ }>;
402
+ } & {
403
+ "/tenants/:tenantId/subscription-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription-usage", unknown, unknown, {
404
+ usage: {
405
+ applicationsLimit: number;
406
+ machineToMachineLimit: number;
407
+ resourcesLimit: number;
408
+ scopesPerResourceLimit: number;
409
+ socialConnectorsLimit: number;
410
+ machineToMachineRolesLimit: number;
411
+ scopesPerRoleLimit: number;
412
+ hooksLimit: number;
413
+ mfaEnabled: boolean;
414
+ organizationsEnabled: boolean;
415
+ thirdPartyApplicationsLimit: number;
416
+ tenantMembersLimit: number;
417
+ customJwtEnabled: boolean;
418
+ subjectTokenEnabled: boolean;
419
+ bringYourUiEnabled: boolean;
420
+ userRolesLimit: number;
421
+ enterpriseSsoLimit: number;
422
+ organizationsLimit: number;
423
+ idpInitiatedSsoEnabled: boolean;
424
+ };
425
+ resources: Record<string, number>;
426
+ roles: Record<string, number>;
427
+ quota: {
428
+ mauLimit: number | null;
429
+ tokenLimit: number | null;
430
+ applicationsLimit: number | null;
431
+ machineToMachineLimit: number | null;
432
+ resourcesLimit: number | null;
433
+ scopesPerResourceLimit: number | null;
434
+ socialConnectorsLimit: number | null;
435
+ machineToMachineRolesLimit: number | null;
436
+ scopesPerRoleLimit: number | null;
437
+ hooksLimit: number | null;
438
+ auditLogsRetentionDays: number | null;
439
+ mfaEnabled: boolean;
440
+ organizationsEnabled: boolean;
441
+ thirdPartyApplicationsLimit: number | null;
442
+ tenantMembersLimit: number | null;
443
+ customJwtEnabled: boolean;
444
+ subjectTokenEnabled: boolean;
445
+ bringYourUiEnabled: boolean;
446
+ userRolesLimit: number | null;
447
+ enterpriseSsoLimit: number | null;
448
+ organizationsLimit: number | null;
449
+ idpInitiatedSsoEnabled: boolean;
450
+ };
451
+ basicQuota: {
452
+ mauLimit: number | null;
453
+ tokenLimit: number | null;
454
+ applicationsLimit: number | null;
455
+ machineToMachineLimit: number | null;
456
+ resourcesLimit: number | null;
457
+ scopesPerResourceLimit: number | null;
458
+ socialConnectorsLimit: number | null;
459
+ machineToMachineRolesLimit: number | null;
460
+ scopesPerRoleLimit: number | null;
461
+ hooksLimit: number | null;
462
+ auditLogsRetentionDays: number | null;
463
+ mfaEnabled: boolean;
464
+ organizationsEnabled: boolean;
465
+ thirdPartyApplicationsLimit: number | null;
466
+ tenantMembersLimit: number | null;
467
+ customJwtEnabled: boolean;
468
+ subjectTokenEnabled: boolean;
469
+ bringYourUiEnabled: boolean;
470
+ userRolesLimit: number | null;
471
+ enterpriseSsoLimit: number | null;
472
+ organizationsLimit: number | null;
473
+ idpInitiatedSsoEnabled: boolean;
474
+ };
475
+ }>;
476
+ } & {
477
+ "/tenants/:tenantId/subscription/periodic-usage": import("@withtyped/server").PathGuard<"/:tenantId/subscription/periodic-usage", unknown, unknown, {
478
+ mauLimit: number;
479
+ tokenLimit: number;
175
480
  }>;
176
481
  } & {
177
482
  "/tenants/:tenantId/invoices": import("@withtyped/server").PathGuard<"/:tenantId/invoices", unknown, unknown, {
178
483
  invoices: {
179
484
  status: "void" | "open" | "draft" | "paid" | "uncollectible" | null;
180
- createdAt: Date;
181
485
  id: string;
486
+ createdAt: Date;
182
487
  updatedAt: Date;
183
488
  customerId: string | null;
184
489
  billingReason: string | null;
@@ -190,19 +495,58 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
190
495
  hostedInvoiceUrl: string | null;
191
496
  invoicePdf: string | null;
192
497
  planName: string | null;
498
+ skuId?: string | null | undefined;
193
499
  }[];
194
500
  }>;
501
+ } & {
502
+ "/tenants/:tenantId/available-skus": import("@withtyped/server").PathGuard<"/:tenantId/available-skus", {
503
+ type?: LogtoSkuType | undefined;
504
+ }, unknown, {
505
+ type: LogtoSkuType;
506
+ id: string;
507
+ name: string | null;
508
+ quota: {
509
+ mauLimit?: number | null | undefined;
510
+ tokenLimit?: number | null | undefined;
511
+ applicationsLimit?: number | null | undefined;
512
+ machineToMachineLimit?: number | null | undefined;
513
+ resourcesLimit?: number | null | undefined;
514
+ scopesPerResourceLimit?: number | null | undefined;
515
+ socialConnectorsLimit?: number | null | undefined;
516
+ machineToMachineRolesLimit?: number | null | undefined;
517
+ scopesPerRoleLimit?: number | null | undefined;
518
+ hooksLimit?: number | null | undefined;
519
+ auditLogsRetentionDays?: number | null | undefined;
520
+ mfaEnabled?: boolean | undefined;
521
+ organizationsEnabled?: boolean | undefined;
522
+ thirdPartyApplicationsLimit?: number | null | undefined;
523
+ tenantMembersLimit?: number | null | undefined;
524
+ customJwtEnabled?: boolean | undefined;
525
+ subjectTokenEnabled?: boolean | undefined;
526
+ bringYourUiEnabled?: boolean | undefined;
527
+ userRolesLimit?: number | null | undefined;
528
+ enterpriseSsoLimit?: number | null | undefined;
529
+ organizationsLimit?: number | null | undefined;
530
+ idpInitiatedSsoEnabled?: boolean | undefined;
531
+ };
532
+ createdAt: Date;
533
+ updatedAt: Date;
534
+ defaultPriceId: string | null;
535
+ unitPrice: number | null;
536
+ productId: string | null;
537
+ }[]>;
195
538
  } & {
196
539
  "/tenants/:tenantId/invoices/:invoiceId/hosted-invoice-url": import("@withtyped/server").PathGuard<"/:tenantId/invoices/:invoiceId/hosted-invoice-url", unknown, unknown, {
197
540
  hostedInvoiceUrl: string;
198
541
  }>;
199
- } & {
200
- "/tenants/:tenantId/usage": import("@withtyped/server").PathGuard<"/:tenantId/usage", unknown, unknown, {
201
- activeUsers: number;
202
- cost: number;
203
- }>;
204
542
  };
205
543
  post: {
544
+ "/tenants/my/subscription/item-updates": import("@withtyped/server").PathGuard<"/my/subscription/item-updates", unknown, {
545
+ usageKey: RealtimeReportableUsageKey;
546
+ }, {
547
+ message: string;
548
+ }>;
549
+ } & {
206
550
  "/tenants/:tenantId/stripe-customer-portal": import("@withtyped/server").PathGuard<"/:tenantId/stripe-customer-portal", unknown, {
207
551
  callbackUrl?: string | undefined;
208
552
  }, {
@@ -216,8 +560,8 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
216
560
  copy: {};
217
561
  head: {};
218
562
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
219
- options: {};
220
563
  patch: {};
564
+ options: {};
221
565
  get: {
222
566
  "/services/mails/usage": import("@withtyped/server").PathGuard<"/mails/usage", {
223
567
  from?: string | undefined;
@@ -228,9 +572,11 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
228
572
  post: {
229
573
  "/services/mails": import("@withtyped/server").PathGuard<"/mails", unknown, {
230
574
  data: {
231
- type: VerificationCodeType;
575
+ type: TemplateType | VerificationCodeType;
232
576
  payload: {
233
- code: string;
577
+ code?: string | undefined;
578
+ link?: string | undefined;
579
+ } & Record<string, string> & {
234
580
  senderName?: string | undefined;
235
581
  companyInformation?: string | undefined;
236
582
  appLogo?: string | undefined;
@@ -241,26 +587,117 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
241
587
  } & {
242
588
  "/services/send-sms": import("@withtyped/server").PathGuard<"/send-sms", unknown, {
243
589
  data: {
244
- type: VerificationCodeType;
590
+ type: TemplateType | VerificationCodeType;
245
591
  to: string;
246
592
  payload: {
247
- code: string;
248
- };
593
+ code?: string | undefined;
594
+ link?: string | undefined;
595
+ } & Record<string, string>;
249
596
  };
250
597
  }, unknown>;
598
+ } & {
599
+ "/services/custom-jwt": import("@withtyped/server").PathGuard<"/custom-jwt", {
600
+ isTest?: string | undefined;
601
+ }, {
602
+ context: Record<string, Json>;
603
+ script: string;
604
+ tokenType: LogtoJwtTokenKeyType.AccessToken;
605
+ token: Record<string, Json>;
606
+ environmentVariables?: Record<string, string> | undefined;
607
+ } | {
608
+ script: string;
609
+ tokenType: LogtoJwtTokenKeyType.ClientCredentials;
610
+ token: Record<string, Json>;
611
+ environmentVariables?: Record<string, string> | undefined;
612
+ }, Record<string, unknown>>;
613
+ };
614
+ put: {
615
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, {
616
+ "jwt.accessToken"?: {
617
+ production?: string | undefined;
618
+ test?: string | undefined;
619
+ } | undefined;
620
+ "jwt.clientCredentials"?: {
621
+ production?: string | undefined;
622
+ test?: string | undefined;
623
+ } | undefined;
624
+ }, unknown>;
625
+ };
626
+ delete: {
627
+ "/services/custom-jwt/worker": import("@withtyped/server").PathGuard<"/custom-jwt/worker", unknown, unknown, unknown>;
251
628
  };
252
- put: {};
253
- delete: {};
254
629
  copy: {};
255
630
  head: {};
256
631
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
257
- options: {};
258
632
  patch: {};
633
+ options: {};
259
634
  get: {
260
- "/subscription-plans": import("@withtyped/server").PathGuard<"/", unknown, unknown, {
261
- createdAt: Date;
635
+ "/skus": import("@withtyped/server").PathGuard<"/", {
636
+ type?: LogtoSkuType | undefined;
637
+ }, unknown, {
638
+ type: LogtoSkuType;
262
639
  id: string;
263
- name: string;
640
+ name: string | null;
641
+ quota: {
642
+ mauLimit?: number | null | undefined;
643
+ tokenLimit?: number | null | undefined;
644
+ applicationsLimit?: number | null | undefined;
645
+ machineToMachineLimit?: number | null | undefined;
646
+ resourcesLimit?: number | null | undefined;
647
+ scopesPerResourceLimit?: number | null | undefined;
648
+ socialConnectorsLimit?: number | null | undefined;
649
+ machineToMachineRolesLimit?: number | null | undefined;
650
+ scopesPerRoleLimit?: number | null | undefined;
651
+ hooksLimit?: number | null | undefined;
652
+ auditLogsRetentionDays?: number | null | undefined;
653
+ mfaEnabled?: boolean | undefined;
654
+ organizationsEnabled?: boolean | undefined;
655
+ thirdPartyApplicationsLimit?: number | null | undefined;
656
+ tenantMembersLimit?: number | null | undefined;
657
+ customJwtEnabled?: boolean | undefined;
658
+ subjectTokenEnabled?: boolean | undefined;
659
+ bringYourUiEnabled?: boolean | undefined;
660
+ userRolesLimit?: number | null | undefined;
661
+ enterpriseSsoLimit?: number | null | undefined;
662
+ organizationsLimit?: number | null | undefined;
663
+ idpInitiatedSsoEnabled?: boolean | undefined;
664
+ };
665
+ createdAt: Date;
666
+ updatedAt: Date;
667
+ defaultPriceId: string | null;
668
+ unitPrice: number | null;
669
+ productId: string | null;
670
+ }[]>;
671
+ };
672
+ post: {
673
+ "/skus": import("@withtyped/server").PathGuard<"/", unknown, {
674
+ type: LogtoSkuType.AddOn;
675
+ quota: {
676
+ tokenLimit?: number | null | undefined;
677
+ machineToMachineLimit?: number | null | undefined;
678
+ resourcesLimit?: number | null | undefined;
679
+ enterpriseSsoLimit?: number | null | undefined;
680
+ hooksLimit?: number | null | undefined;
681
+ tenantMembersLimit?: number | null | undefined;
682
+ mfaEnabled?: boolean | undefined;
683
+ organizationsEnabled?: boolean | undefined;
684
+ organizationsLimit?: number | null | undefined;
685
+ mauLimit?: number | null | undefined;
686
+ applicationsLimit?: number | null | undefined;
687
+ scopesPerResourceLimit?: number | null | undefined;
688
+ socialConnectorsLimit?: number | null | undefined;
689
+ machineToMachineRolesLimit?: number | null | undefined;
690
+ scopesPerRoleLimit?: number | null | undefined;
691
+ auditLogsRetentionDays?: number | null | undefined;
692
+ thirdPartyApplicationsLimit?: number | null | undefined;
693
+ customJwtEnabled?: boolean | undefined;
694
+ subjectTokenEnabled?: boolean | undefined;
695
+ bringYourUiEnabled?: boolean | undefined;
696
+ userRolesLimit?: number | null | undefined;
697
+ idpInitiatedSsoEnabled?: boolean | undefined;
698
+ };
699
+ } | {
700
+ type: LogtoSkuType.Basic;
264
701
  quota: {
265
702
  mauLimit: number | null;
266
703
  tokenLimit: number | null;
@@ -268,79 +705,94 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
268
705
  machineToMachineLimit: number | null;
269
706
  resourcesLimit: number | null;
270
707
  scopesPerResourceLimit: number | null;
271
- customDomainEnabled: boolean;
272
- omniSignInEnabled: boolean;
273
- builtInEmailConnectorEnabled: boolean;
274
708
  socialConnectorsLimit: number | null;
275
- standardConnectorsLimit: number | null;
276
- rolesLimit: number | null;
277
709
  machineToMachineRolesLimit: number | null;
278
710
  scopesPerRoleLimit: number | null;
279
711
  hooksLimit: number | null;
280
712
  auditLogsRetentionDays: number | null;
281
713
  mfaEnabled: boolean;
282
714
  organizationsEnabled: boolean;
283
- ssoEnabled: boolean;
715
+ thirdPartyApplicationsLimit: number | null;
716
+ tenantMembersLimit: number | null;
717
+ customJwtEnabled: boolean;
718
+ subjectTokenEnabled: boolean;
719
+ bringYourUiEnabled: boolean;
720
+ userRolesLimit: number | null;
721
+ enterpriseSsoLimit: number | null;
722
+ organizationsLimit: number | null;
723
+ idpInitiatedSsoEnabled: boolean;
284
724
  };
285
- stripeProducts: {
286
- type: "flat" | "tier1" | "tier2" | "tier3";
287
- id: string;
288
- name: string;
289
- price: {
290
- id: string;
291
- unitAmountDecimal: string;
292
- quantity?: 1 | undefined;
293
- unitAmount?: number | null | undefined;
294
- };
295
- description?: string | undefined;
296
- }[];
725
+ }, {
726
+ id: string;
727
+ createdAt: Date;
728
+ type: LogtoSkuType;
297
729
  updatedAt: Date;
298
- }[]>;
299
- };
300
- post: {};
301
- put: {};
302
- delete: {};
303
- copy: {};
304
- head: {};
305
- }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
306
- options: {};
307
- patch: {};
308
- get: {
309
- "/my/tenant": import("@withtyped/server").PathGuard<"/tenant", unknown, unknown, {
730
+ quota: {
731
+ mauLimit?: number | null | undefined;
732
+ tokenLimit?: number | null | undefined;
733
+ applicationsLimit?: number | null | undefined;
734
+ machineToMachineLimit?: number | null | undefined;
735
+ resourcesLimit?: number | null | undefined;
736
+ scopesPerResourceLimit?: number | null | undefined;
737
+ socialConnectorsLimit?: number | null | undefined;
738
+ machineToMachineRolesLimit?: number | null | undefined;
739
+ scopesPerRoleLimit?: number | null | undefined;
740
+ hooksLimit?: number | null | undefined;
741
+ auditLogsRetentionDays?: number | null | undefined;
742
+ mfaEnabled?: boolean | undefined;
743
+ organizationsEnabled?: boolean | undefined;
744
+ thirdPartyApplicationsLimit?: number | null | undefined;
745
+ tenantMembersLimit?: number | null | undefined;
746
+ customJwtEnabled?: boolean | undefined;
747
+ subjectTokenEnabled?: boolean | undefined;
748
+ bringYourUiEnabled?: boolean | undefined;
749
+ userRolesLimit?: number | null | undefined;
750
+ enterpriseSsoLimit?: number | null | undefined;
751
+ organizationsLimit?: number | null | undefined;
752
+ idpInitiatedSsoEnabled?: boolean | undefined;
753
+ };
754
+ }>;
755
+ } & {
756
+ "/skus/:skuId/products": import("@withtyped/server").PathGuard<"/:skuId/products", {
757
+ isOneTime?: string | undefined;
758
+ }, {
310
759
  name: string;
311
- id: string;
312
- indicator: string;
313
- isSuspended: boolean;
314
- tag: TenantTag;
760
+ unitPrice: number;
761
+ }, {
762
+ productId: string;
315
763
  }>;
316
764
  };
317
- post: {};
318
765
  put: {};
319
- delete: {};
766
+ delete: {
767
+ "/skus/:skuId": import("@withtyped/server").PathGuard<"/:skuId", unknown, unknown, unknown>;
768
+ };
320
769
  copy: {};
321
770
  head: {};
322
771
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
323
- options: {};
324
772
  patch: {};
773
+ options: {};
325
774
  get: {
326
775
  "/checkout-session/:id": import("@withtyped/server").PathGuard<"/:id", unknown, unknown, {
327
- status: "open" | "complete" | "expired";
328
- createdAt: Date;
329
776
  id: string;
777
+ createdAt: Date;
330
778
  userId: string;
331
- updatedAt: Date;
779
+ status: "open" | "complete" | "expired";
332
780
  tenantId: string | null;
333
- planId: string;
781
+ updatedAt: Date;
782
+ planId: string | null;
783
+ skuId: string | null;
334
784
  }>;
335
785
  };
336
786
  post: {
337
787
  "/checkout-session": import("@withtyped/server").PathGuard<"/", unknown, {
338
- planId: string;
339
788
  successCallbackUrl: string;
340
789
  tenantId?: string | undefined;
341
- cancelCallbackUrl?: string | undefined;
342
- tenantTag?: TenantTag | undefined;
790
+ planId?: string | undefined;
791
+ skuId?: string | undefined;
343
792
  tenantName?: string | undefined;
793
+ tenantTag?: TenantTag | undefined;
794
+ tenantRegionName?: RegionName | undefined;
795
+ cancelCallbackUrl?: string | undefined;
344
796
  }, {
345
797
  sessionId: string;
346
798
  redirectUri?: string | null | undefined;
@@ -351,8 +803,8 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
351
803
  copy: {};
352
804
  head: {};
353
805
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
354
- options: {};
355
806
  patch: {};
807
+ options: {};
356
808
  get: {
357
809
  "/affiliates": import("@withtyped/server").PathGuard<"/", unknown, unknown, AffiliateData[]>;
358
810
  };
@@ -360,33 +812,33 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
360
812
  "/affiliates": import("@withtyped/server").PathGuard<"/", unknown, {
361
813
  name: string;
362
814
  }, {
363
- createdAt: Date;
364
815
  id: string;
816
+ createdAt: Date;
365
817
  name: string;
366
818
  }>;
367
819
  } & {
368
820
  "/affiliates/:id/properties": import("@withtyped/server").PathGuard<"/:id/properties", unknown, {
369
- value: string;
370
821
  type: "hostname" | "query";
371
- }, {
372
822
  value: string;
373
- type: "hostname" | "query";
823
+ }, {
374
824
  createdAt: Date;
375
825
  affiliateId: string;
826
+ type: "hostname" | "query";
827
+ value: string;
376
828
  }>;
377
829
  };
378
830
  put: {};
379
831
  delete: {
380
832
  "/affiliates/:id/properties": import("@withtyped/server").PathGuard<"/:id/properties", unknown, {
381
- value: string;
382
833
  type: "hostname" | "query";
834
+ value: string;
383
835
  }, unknown>;
384
836
  };
385
837
  copy: {};
386
838
  head: {};
387
839
  }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
388
- options: {};
389
840
  patch: {};
841
+ options: {};
390
842
  get: {};
391
843
  post: {
392
844
  "/affiliate-logs": import("@withtyped/server").PathGuard<"/", unknown, {
@@ -395,8 +847,8 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
395
847
  hostname?: string | undefined;
396
848
  query?: string | undefined;
397
849
  }, {
398
- createdAt: Date;
399
850
  id: string;
851
+ createdAt: Date;
400
852
  affiliateId: string | null;
401
853
  userId: string;
402
854
  createdVia: {
@@ -410,7 +862,164 @@ declare const router: import("@withtyped/server").Router<WithAuthContext, import
410
862
  delete: {};
411
863
  copy: {};
412
864
  head: {};
865
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
866
+ patch: {
867
+ "/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:invitationId/status", unknown, {
868
+ status: OrganizationInvitationStatus.Accepted;
869
+ }, unknown>;
870
+ };
871
+ options: {};
872
+ get: {
873
+ "/invitations": import("@withtyped/server").PathGuard<"/", unknown, unknown, ({
874
+ id: string;
875
+ createdAt: number;
876
+ status: OrganizationInvitationStatus;
877
+ tenantId: string;
878
+ updatedAt: number;
879
+ inviterId: string | null;
880
+ invitee: string;
881
+ acceptedUserId: string | null;
882
+ organizationId: string;
883
+ expiresAt: number;
884
+ organizationRoles: OrganizationRoleEntity[];
885
+ } & {
886
+ tenantName: string;
887
+ tenantTag: TenantTag;
888
+ })[]>;
889
+ } & {
890
+ "/invitations/:invitationId": import("@withtyped/server").PathGuard<"/:invitationId", unknown, unknown, {
891
+ id: string;
892
+ createdAt: number;
893
+ status: OrganizationInvitationStatus;
894
+ tenantId: string;
895
+ updatedAt: number;
896
+ inviterId: string | null;
897
+ invitee: string;
898
+ acceptedUserId: string | null;
899
+ organizationId: string;
900
+ expiresAt: number;
901
+ organizationRoles: OrganizationRoleEntity[];
902
+ }>;
903
+ };
904
+ post: {};
905
+ put: {};
906
+ delete: {};
907
+ copy: {};
908
+ head: {};
909
+ }, "/api">>, import("@withtyped/server").RoutesWithPrefix<{
910
+ patch: {};
911
+ options: {};
912
+ get: {};
913
+ post: {};
914
+ put: {};
915
+ delete: {
916
+ "/me": import("@withtyped/server").PathGuard<"/", unknown, unknown, unknown>;
917
+ };
918
+ copy: {};
919
+ head: {};
413
920
  }, "/api">>, "/api">;
921
+ export declare const tenantAuthRouter: import("@withtyped/server").Router<RequestContext, import("@withtyped/server").WithBodyContext<import("@withtyped/server").BaseContext & {
922
+ request: {
923
+ id?: string | undefined;
924
+ method?: import("@withtyped/server").RequestMethod | undefined;
925
+ headers: import("http").IncomingHttpHeaders;
926
+ url: URL;
927
+ body?: unknown;
928
+ };
929
+ }>, import("@withtyped/server").MergeRoutes<import("@withtyped/server").BaseRoutes, import("@withtyped/server").RoutesWithPrefix<{
930
+ patch: {
931
+ "/:tenantId/invitations/:invitationId/status": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/status", unknown, {
932
+ status: OrganizationInvitationStatus.Revoked;
933
+ }, {
934
+ id: string;
935
+ createdAt: number;
936
+ status: OrganizationInvitationStatus;
937
+ tenantId: string;
938
+ updatedAt: number;
939
+ inviterId: string | null;
940
+ invitee: string;
941
+ acceptedUserId: string | null;
942
+ organizationId: string;
943
+ expiresAt: number;
944
+ organizationRoles: OrganizationRoleEntity[];
945
+ }>;
946
+ };
947
+ options: {};
948
+ get: {
949
+ "/:tenantId/members": import("@withtyped/server").PathGuard<"/:tenantId/members", unknown, unknown, {
950
+ id: string;
951
+ name: string | null;
952
+ username: string | null;
953
+ primaryEmail: string | null;
954
+ primaryPhone: string | null;
955
+ avatar: string | null;
956
+ organizationRoles: OrganizationRoleEntity[];
957
+ }[]>;
958
+ } & {
959
+ "/:tenantId/members/:userId/scopes": import("@withtyped/server").PathGuard<"/:tenantId/members/:userId/scopes", unknown, unknown, OrganizationScope[]>;
960
+ } & {
961
+ "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, unknown, ({
962
+ id: string;
963
+ createdAt: number;
964
+ status: OrganizationInvitationStatus;
965
+ tenantId: string;
966
+ updatedAt: number;
967
+ inviterId: string | null;
968
+ invitee: string;
969
+ acceptedUserId: string | null;
970
+ organizationId: string;
971
+ expiresAt: number;
972
+ organizationRoles: OrganizationRoleEntity[];
973
+ } & {
974
+ inviterName?: string | undefined;
975
+ })[]>;
976
+ };
977
+ post: {
978
+ "/:tenantId/invitations": import("@withtyped/server").PathGuard<"/:tenantId/invitations", unknown, {
979
+ invitee: string | string[];
980
+ roleName: TenantRole;
981
+ expiresAt?: number | undefined;
982
+ }, {
983
+ id: string;
984
+ createdAt: number;
985
+ status: OrganizationInvitationStatus;
986
+ tenantId: string;
987
+ updatedAt: number;
988
+ inviterId: string | null;
989
+ invitee: string;
990
+ acceptedUserId: string | null;
991
+ organizationId: string;
992
+ expiresAt: number;
993
+ organizationRoles: OrganizationRoleEntity[];
994
+ } | {
995
+ id: string;
996
+ createdAt: number;
997
+ status: OrganizationInvitationStatus;
998
+ tenantId: string;
999
+ updatedAt: number;
1000
+ inviterId: string | null;
1001
+ invitee: string;
1002
+ acceptedUserId: string | null;
1003
+ organizationId: string;
1004
+ expiresAt: number;
1005
+ organizationRoles: OrganizationRoleEntity[];
1006
+ }[]>;
1007
+ } & {
1008
+ "/:tenantId/invitations/:invitationId/message": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId/message", unknown, unknown, unknown>;
1009
+ };
1010
+ put: {
1011
+ "/:tenantId/members/:userId/roles": import("@withtyped/server").PathGuard<"/:tenantId/members/:userId/roles", unknown, {
1012
+ roleName: TenantRole;
1013
+ }, unknown>;
1014
+ };
1015
+ delete: {
1016
+ "/:tenantId/members/:userId": import("@withtyped/server").PathGuard<"/:tenantId/members/:userId", unknown, unknown, unknown>;
1017
+ } & {
1018
+ "/:tenantId/invitations/:invitationId": import("@withtyped/server").PathGuard<"/:tenantId/invitations/:invitationId", unknown, unknown, unknown>;
1019
+ };
1020
+ copy: {};
1021
+ head: {};
1022
+ }, "/api/tenants">>, "/api/tenants">;
414
1023
 
415
1024
  export {
416
1025
  router as default,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@logto/cloud",
3
- "version": "0.2.5-5deb133",
3
+ "version": "0.2.5-5e334eb",
4
4
  "description": "Logto Cloud service.",
5
5
  "main": "build/index.js",
6
6
  "author": "Silverhand Inc. <contact@silverhand.io>",
@@ -16,25 +16,24 @@
16
16
  "#src/*": "./build/*"
17
17
  },
18
18
  "devDependencies": {
19
- "@silverhand/eslint-config": "4.0.1",
20
- "@silverhand/jest-config": "4.0.0",
21
- "@silverhand/ts-config": "4.0.0",
19
+ "@silverhand/eslint-config": "6.0.1",
20
+ "@silverhand/ts-config": "6.0.0",
22
21
  "@types/accepts": "^1.3.5",
23
22
  "@types/http-proxy": "^1.17.9",
24
- "@types/jest": "^29.4.0",
25
23
  "@types/mime-types": "^2.1.1",
26
- "@types/node": "^18.11.18",
24
+ "@types/node": "^20.0.0",
27
25
  "@types/yargs": "^17.0.24",
28
- "dts-bundle-generator": "^8.0.1",
29
- "eslint": "^8.44.0",
30
- "jest": "^29.5.0",
26
+ "dts-bundle-generator": "^9.3.1",
27
+ "eslint": "^8.57.0",
31
28
  "lint-staged": "^15.0.0",
32
29
  "nodemon": "^3.0.0",
33
30
  "prettier": "^3.0.0",
34
- "typescript": "^5.0.0"
31
+ "typescript": "^5.3.3",
32
+ "vite-tsconfig-paths": "^5.0.0",
33
+ "vitest": "^2.0.0"
35
34
  },
36
35
  "engines": {
37
- "node": "^18.12.0"
36
+ "node": "^20.9.0"
38
37
  },
39
38
  "eslintConfig": {
40
39
  "extends": "@silverhand",
@@ -50,22 +49,19 @@
50
49
  "access": "public"
51
50
  },
52
51
  "dependencies": {
53
- "@silverhand/essentials": "^2.8.6",
54
- "@withtyped/server": "^0.12.7"
52
+ "@silverhand/essentials": "^2.9.2",
53
+ "@withtyped/server": "^0.14.0"
55
54
  },
56
55
  "scripts": {
57
56
  "precommit": "lint-staged",
58
57
  "build": "rm -rf build/ && tsc -p tsconfig.build.json && pnpm build:lib",
59
58
  "//": "It is not used to build the service itself.",
60
- "build:lib": "rm -rf lib/ && dts-bundle-generator src/routes/index.ts --project tsconfig.build.json -o lib/routes/index.d.ts",
61
- "build:test": "rm -rf build/ && tsc -p tsconfig.test.json --sourcemap",
59
+ "build:lib": "rm -rf lib/ && dts-bundle-generator src/routes/index.ts --project tsconfig.build.lib.json -o lib/routes/index.d.ts",
62
60
  "lint": "eslint --ext .ts src",
63
61
  "lint:report": "pnpm lint --format json --output-file report.json",
64
62
  "dev": "rm -rf build/ && nodemon",
65
63
  "start": "NODE_ENV=production node .",
66
- "test:only": "NODE_OPTIONS=\"--experimental-vm-modules --max_old_space_size=4096\" jest --logHeapUsage",
67
- "test": "pnpm build:test && pnpm test:only && pnpm build:lib && pnpm test:types",
68
- "test:ci": "pnpm test:only --coverage --silent",
64
+ "test": "vitest && pnpm build:lib && pnpm test:types",
69
65
  "test:types": "tsc -p tsconfig.test.types.json",
70
66
  "cli": "node ./build/cli/index.js"
71
67
  }