@blimu/backend 1.2.1 → 1.2.2

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 (46) hide show
  1. package/README.md +9 -0
  2. package/dist/client.cjs +43 -0
  3. package/dist/client.cjs.map +1 -1
  4. package/dist/client.d.mts +3 -1
  5. package/dist/client.d.ts +3 -1
  6. package/dist/client.mjs +43 -0
  7. package/dist/client.mjs.map +1 -1
  8. package/dist/index.cjs +101 -92
  9. package/dist/index.cjs.map +1 -1
  10. package/dist/index.d.mts +31 -18
  11. package/dist/index.d.ts +31 -18
  12. package/dist/index.mjs +99 -92
  13. package/dist/index.mjs.map +1 -1
  14. package/dist/{schema-CGYqiv8k.d.mts → schema-CdEZKE7E.d.mts} +17 -2
  15. package/dist/{schema-CGYqiv8k.d.ts → schema-CdEZKE7E.d.ts} +17 -2
  16. package/dist/schema.cjs.map +1 -1
  17. package/dist/schema.d.mts +1 -1
  18. package/dist/schema.d.ts +1 -1
  19. package/dist/services/auth_jwks.cjs +69 -0
  20. package/dist/services/auth_jwks.cjs.map +1 -0
  21. package/dist/services/auth_jwks.d.mts +13 -0
  22. package/dist/services/auth_jwks.d.ts +13 -0
  23. package/dist/services/auth_jwks.mjs +44 -0
  24. package/dist/services/auth_jwks.mjs.map +1 -0
  25. package/dist/services/bulk_resources.d.mts +1 -1
  26. package/dist/services/bulk_resources.d.ts +1 -1
  27. package/dist/services/bulk_roles.d.mts +1 -1
  28. package/dist/services/bulk_roles.d.ts +1 -1
  29. package/dist/services/entitlements.d.mts +1 -1
  30. package/dist/services/entitlements.d.ts +1 -1
  31. package/dist/services/oauth.d.mts +1 -1
  32. package/dist/services/oauth.d.ts +1 -1
  33. package/dist/services/plans.d.mts +1 -1
  34. package/dist/services/plans.d.ts +1 -1
  35. package/dist/services/resource_members.d.mts +1 -1
  36. package/dist/services/resource_members.d.ts +1 -1
  37. package/dist/services/resources.d.mts +1 -1
  38. package/dist/services/resources.d.ts +1 -1
  39. package/dist/services/roles.d.mts +1 -1
  40. package/dist/services/roles.d.ts +1 -1
  41. package/dist/services/usage.d.mts +1 -1
  42. package/dist/services/usage.d.ts +1 -1
  43. package/dist/services/users.d.mts +1 -1
  44. package/dist/services/users.d.ts +1 -1
  45. package/dist/tsconfig.tsbuildinfo +1 -1
  46. package/package.json +1 -1
package/dist/index.d.mts CHANGED
@@ -2,11 +2,13 @@ export { Blimu, BlimuError, ClientOption } from './client.mjs';
2
2
  export * from '@blimu/fetch';
3
3
  export { FetchError, parseNDJSONStream, parseSSEStream } from '@blimu/fetch';
4
4
  export { PaginableQuery, isNotUndefined, listAll, paginate } from './utils.mjs';
5
- export { s as Schema } from './schema-CGYqiv8k.mjs';
5
+ import { J as JWK$1 } from './schema-CdEZKE7E.mjs';
6
+ export { s as Schema } from './schema-CdEZKE7E.mjs';
6
7
  import { z } from 'zod';
7
8
  export { BulkResourcesService } from './services/bulk_resources.mjs';
8
9
  export { BulkRolesService } from './services/bulk_roles.mjs';
9
10
  export { EntitlementsService } from './services/entitlements.mjs';
11
+ export { AuthJwksService } from './services/auth_jwks.mjs';
10
12
  export { PlansService } from './services/plans.mjs';
11
13
  export { ResourceMembersService } from './services/resource_members.mjs';
12
14
  export { ResourcesService } from './services/resources.mjs';
@@ -109,6 +111,16 @@ declare const IntrospectionResponseSchema: z.ZodObject<{
109
111
  token_type: z.ZodOptional<z.ZodString>;
110
112
  username: z.ZodOptional<z.ZodString>;
111
113
  }, z.core.$strip>;
114
+ declare const JWKSchema: z.ZodObject<{
115
+ keys: z.ZodArray<z.ZodObject<{
116
+ alg: z.ZodString;
117
+ e: z.ZodString;
118
+ kid: z.ZodString;
119
+ kty: z.ZodString;
120
+ n: z.ZodString;
121
+ use: z.ZodString;
122
+ }, z.core.$strip>>;
123
+ }, z.core.$strip>;
112
124
  declare const PlanDeleteResponseSchema: z.ZodObject<{
113
125
  success: z.ZodBoolean;
114
126
  }, z.core.$strip>;
@@ -471,6 +483,9 @@ declare const ResourceListSchema: z.ZodObject<{
471
483
  page: z.ZodNumber;
472
484
  total: z.ZodNumber;
473
485
  }, z.core.$strip>;
486
+ declare const AuthJwksGetOAuthAppJwksQuerySchema: z.ZodObject<{
487
+ client_id: z.ZodOptional<z.ZodString>;
488
+ }, z.core.$strip>;
474
489
  declare const EntitlementsListForResourceQuerySchema: z.ZodObject<{
475
490
  userId: z.ZodString;
476
491
  }, z.core.$strip>;
@@ -521,6 +536,7 @@ declare const UsersListQuerySchema: z.ZodObject<{
521
536
  search: z.ZodOptional<z.ZodString>;
522
537
  }, z.core.$strip>;
523
538
 
539
+ declare const schema_zod_AuthJwksGetOAuthAppJwksQuerySchema: typeof AuthJwksGetOAuthAppJwksQuerySchema;
524
540
  declare const schema_zod_AuthorizeRequestSchema: typeof AuthorizeRequestSchema;
525
541
  declare const schema_zod_BalanceResponseSchema: typeof BalanceResponseSchema;
526
542
  declare const schema_zod_CheckLimitResponseSchema: typeof CheckLimitResponseSchema;
@@ -539,6 +555,7 @@ declare const schema_zod_EntitlementsListForTenantQuerySchema: typeof Entitlemen
539
555
  declare const schema_zod_EntitlementsListResultSchema: typeof EntitlementsListResultSchema;
540
556
  declare const schema_zod_IntrospectionRequestSchema: typeof IntrospectionRequestSchema;
541
557
  declare const schema_zod_IntrospectionResponseSchema: typeof IntrospectionResponseSchema;
558
+ declare const schema_zod_JWKSchema: typeof JWKSchema;
542
559
  declare const schema_zod_OauthCheckConsentRequiredQuerySchema: typeof OauthCheckConsentRequiredQuerySchema;
543
560
  declare const schema_zod_PlanAssignBodySchema: typeof PlanAssignBodySchema;
544
561
  declare const schema_zod_PlanDeleteResponseSchema: typeof PlanDeleteResponseSchema;
@@ -578,23 +595,14 @@ declare const schema_zod_UserSchema: typeof UserSchema;
578
595
  declare const schema_zod_UserUpdateBodySchema: typeof UserUpdateBodySchema;
579
596
  declare const schema_zod_UsersListQuerySchema: typeof UsersListQuerySchema;
580
597
  declare namespace schema_zod {
581
- export { schema_zod_AuthorizeRequestSchema as AuthorizeRequestSchema, schema_zod_BalanceResponseSchema as BalanceResponseSchema, schema_zod_CheckLimitResponseSchema as CheckLimitResponseSchema, schema_zod_ConsentCheckResponseSchema as ConsentCheckResponseSchema, schema_zod_DeviceAuthorizeRequestSchema as DeviceAuthorizeRequestSchema, schema_zod_DeviceAuthorizeResponseSchema as DeviceAuthorizeResponseSchema, schema_zod_DeviceCodeInfoResponseSchema as DeviceCodeInfoResponseSchema, schema_zod_DeviceCodeRequestSchema as DeviceCodeRequestSchema, schema_zod_DeviceCodeResponseSchema as DeviceCodeResponseSchema, schema_zod_DeviceTokenRequestSchema as DeviceTokenRequestSchema, schema_zod_EntitlementCheckBodySchema as EntitlementCheckBodySchema, schema_zod_EntitlementCheckResultSchema as EntitlementCheckResultSchema, schema_zod_EntitlementTypeSchema as EntitlementTypeSchema, schema_zod_EntitlementsListForResourceQuerySchema as EntitlementsListForResourceQuerySchema, schema_zod_EntitlementsListForTenantQuerySchema as EntitlementsListForTenantQuerySchema, schema_zod_EntitlementsListResultSchema as EntitlementsListResultSchema, schema_zod_IntrospectionRequestSchema as IntrospectionRequestSchema, schema_zod_IntrospectionResponseSchema as IntrospectionResponseSchema, schema_zod_OauthCheckConsentRequiredQuerySchema as OauthCheckConsentRequiredQuerySchema, schema_zod_PlanAssignBodySchema as PlanAssignBodySchema, schema_zod_PlanDeleteResponseSchema as PlanDeleteResponseSchema, schema_zod_PlanResponseSchema as PlanResponseSchema, schema_zod_PlanTypeSchema as PlanTypeSchema, schema_zod_ResourceBulkCreateBodySchema as ResourceBulkCreateBodySchema, schema_zod_ResourceBulkResultSchema as ResourceBulkResultSchema, schema_zod_ResourceCreateBodySchema as ResourceCreateBodySchema, schema_zod_ResourceListSchema as ResourceListSchema, schema_zod_ResourceMemberListSchema as ResourceMemberListSchema, schema_zod_ResourceMembersListQuerySchema as ResourceMembersListQuerySchema, schema_zod_ResourceSchema as ResourceSchema, schema_zod_ResourceTypeSchema as ResourceTypeSchema, schema_zod_ResourceUpdateBodySchema as ResourceUpdateBodySchema, schema_zod_ResourcesListQuerySchema as ResourcesListQuerySchema, schema_zod_RevocationRequestSchema as RevocationRequestSchema, schema_zod_RoleBulkCreateBodySchema as RoleBulkCreateBodySchema, schema_zod_RoleBulkResultSchema as RoleBulkResultSchema, schema_zod_RoleCreateBodySchema as RoleCreateBodySchema, schema_zod_RoleListSchema as RoleListSchema, schema_zod_RoleSchema as RoleSchema, schema_zod_RolesListQuerySchema as RolesListQuerySchema, schema_zod_TokenRequestSchema as TokenRequestSchema, schema_zod_TokenResponseSchema as TokenResponseSchema, schema_zod_TransactionHistoryResponseSchema as TransactionHistoryResponseSchema, schema_zod_UsageCheckBodySchema as UsageCheckBodySchema, schema_zod_UsageConsumeBodySchema as UsageConsumeBodySchema, schema_zod_UsageCreditBodySchema as UsageCreditBodySchema, schema_zod_UsageGetBalanceQuerySchema as UsageGetBalanceQuerySchema, schema_zod_UsageGetTransactionHistoryQuerySchema as UsageGetTransactionHistoryQuerySchema, schema_zod_UsageLimitTypeSchema as UsageLimitTypeSchema, schema_zod_UsageWalletResponseSchema as UsageWalletResponseSchema, schema_zod_UserCreateBodySchema as UserCreateBodySchema, schema_zod_UserListSchema as UserListSchema, schema_zod_UserResourceListSchema as UserResourceListSchema, schema_zod_UserSchema as UserSchema, schema_zod_UserUpdateBodySchema as UserUpdateBodySchema, schema_zod_UsersListQuerySchema as UsersListQuerySchema };
598
+ export { schema_zod_AuthJwksGetOAuthAppJwksQuerySchema as AuthJwksGetOAuthAppJwksQuerySchema, schema_zod_AuthorizeRequestSchema as AuthorizeRequestSchema, schema_zod_BalanceResponseSchema as BalanceResponseSchema, schema_zod_CheckLimitResponseSchema as CheckLimitResponseSchema, schema_zod_ConsentCheckResponseSchema as ConsentCheckResponseSchema, schema_zod_DeviceAuthorizeRequestSchema as DeviceAuthorizeRequestSchema, schema_zod_DeviceAuthorizeResponseSchema as DeviceAuthorizeResponseSchema, schema_zod_DeviceCodeInfoResponseSchema as DeviceCodeInfoResponseSchema, schema_zod_DeviceCodeRequestSchema as DeviceCodeRequestSchema, schema_zod_DeviceCodeResponseSchema as DeviceCodeResponseSchema, schema_zod_DeviceTokenRequestSchema as DeviceTokenRequestSchema, schema_zod_EntitlementCheckBodySchema as EntitlementCheckBodySchema, schema_zod_EntitlementCheckResultSchema as EntitlementCheckResultSchema, schema_zod_EntitlementTypeSchema as EntitlementTypeSchema, schema_zod_EntitlementsListForResourceQuerySchema as EntitlementsListForResourceQuerySchema, schema_zod_EntitlementsListForTenantQuerySchema as EntitlementsListForTenantQuerySchema, schema_zod_EntitlementsListResultSchema as EntitlementsListResultSchema, schema_zod_IntrospectionRequestSchema as IntrospectionRequestSchema, schema_zod_IntrospectionResponseSchema as IntrospectionResponseSchema, schema_zod_JWKSchema as JWKSchema, schema_zod_OauthCheckConsentRequiredQuerySchema as OauthCheckConsentRequiredQuerySchema, schema_zod_PlanAssignBodySchema as PlanAssignBodySchema, schema_zod_PlanDeleteResponseSchema as PlanDeleteResponseSchema, schema_zod_PlanResponseSchema as PlanResponseSchema, schema_zod_PlanTypeSchema as PlanTypeSchema, schema_zod_ResourceBulkCreateBodySchema as ResourceBulkCreateBodySchema, schema_zod_ResourceBulkResultSchema as ResourceBulkResultSchema, schema_zod_ResourceCreateBodySchema as ResourceCreateBodySchema, schema_zod_ResourceListSchema as ResourceListSchema, schema_zod_ResourceMemberListSchema as ResourceMemberListSchema, schema_zod_ResourceMembersListQuerySchema as ResourceMembersListQuerySchema, schema_zod_ResourceSchema as ResourceSchema, schema_zod_ResourceTypeSchema as ResourceTypeSchema, schema_zod_ResourceUpdateBodySchema as ResourceUpdateBodySchema, schema_zod_ResourcesListQuerySchema as ResourcesListQuerySchema, schema_zod_RevocationRequestSchema as RevocationRequestSchema, schema_zod_RoleBulkCreateBodySchema as RoleBulkCreateBodySchema, schema_zod_RoleBulkResultSchema as RoleBulkResultSchema, schema_zod_RoleCreateBodySchema as RoleCreateBodySchema, schema_zod_RoleListSchema as RoleListSchema, schema_zod_RoleSchema as RoleSchema, schema_zod_RolesListQuerySchema as RolesListQuerySchema, schema_zod_TokenRequestSchema as TokenRequestSchema, schema_zod_TokenResponseSchema as TokenResponseSchema, schema_zod_TransactionHistoryResponseSchema as TransactionHistoryResponseSchema, schema_zod_UsageCheckBodySchema as UsageCheckBodySchema, schema_zod_UsageConsumeBodySchema as UsageConsumeBodySchema, schema_zod_UsageCreditBodySchema as UsageCreditBodySchema, schema_zod_UsageGetBalanceQuerySchema as UsageGetBalanceQuerySchema, schema_zod_UsageGetTransactionHistoryQuerySchema as UsageGetTransactionHistoryQuerySchema, schema_zod_UsageLimitTypeSchema as UsageLimitTypeSchema, schema_zod_UsageWalletResponseSchema as UsageWalletResponseSchema, schema_zod_UserCreateBodySchema as UserCreateBodySchema, schema_zod_UserListSchema as UserListSchema, schema_zod_UserResourceListSchema as UserResourceListSchema, schema_zod_UserSchema as UserSchema, schema_zod_UserUpdateBodySchema as UserUpdateBodySchema, schema_zod_UsersListQuerySchema as UsersListQuerySchema };
582
599
  }
583
600
 
584
- interface JWK {
585
- kty: string;
586
- use: string;
587
- kid: string;
588
- alg: string;
589
- n: string;
590
- e: string;
591
- }
592
- interface JWKSet {
593
- keys: JWK[];
594
- }
601
+ type JWK = JWK$1['keys'][number];
602
+ type JWKSet = JWK$1;
595
603
  interface VerifyTokenOptions {
596
- url?: string;
597
604
  secretKey?: string;
605
+ clientId?: string;
598
606
  token: string;
599
607
  runtimeApiUrl?: string | undefined;
600
608
  }
@@ -605,14 +613,19 @@ interface TokenVerifierOptions {
605
613
  declare class TokenVerifier {
606
614
  private readonly cache;
607
615
  private readonly cacheTTL;
608
- private readonly runtimeApiUrl;
616
+ private readonly baseURL;
609
617
  constructor(options?: TokenVerifierOptions);
610
- private fetchJWKSet;
611
618
  private jwkToKeyObject;
612
619
  private getPublicKey;
613
620
  verifyToken<T = unknown>(options: VerifyTokenOptions): Promise<T>;
614
- clearCache(secretKeyOrUrl?: string): void;
621
+ clearCache(cacheKey?: string): void;
615
622
  }
616
623
  declare function verifyToken<T = unknown>(options: VerifyTokenOptions): Promise<T>;
624
+ interface VerifyOAuthTokenOptions {
625
+ token: string;
626
+ clientId: string;
627
+ runtimeApiUrl?: string | undefined;
628
+ }
629
+ declare function verifyOAuthToken<T = unknown>(options: VerifyOAuthTokenOptions): Promise<T>;
617
630
 
618
- export { type JWK, type JWKSet, TokenVerifier, type TokenVerifierOptions, type VerifyTokenOptions, schema_zod as ZodSchema, verifyToken };
631
+ export { type JWK, type JWKSet, TokenVerifier, type TokenVerifierOptions, type VerifyOAuthTokenOptions, type VerifyTokenOptions, schema_zod as ZodSchema, verifyOAuthToken, verifyToken };
package/dist/index.d.ts CHANGED
@@ -2,11 +2,13 @@ export { Blimu, BlimuError, ClientOption } from './client.js';
2
2
  export * from '@blimu/fetch';
3
3
  export { FetchError, parseNDJSONStream, parseSSEStream } from '@blimu/fetch';
4
4
  export { PaginableQuery, isNotUndefined, listAll, paginate } from './utils.js';
5
- export { s as Schema } from './schema-CGYqiv8k.js';
5
+ import { J as JWK$1 } from './schema-CdEZKE7E.js';
6
+ export { s as Schema } from './schema-CdEZKE7E.js';
6
7
  import { z } from 'zod';
7
8
  export { BulkResourcesService } from './services/bulk_resources.js';
8
9
  export { BulkRolesService } from './services/bulk_roles.js';
9
10
  export { EntitlementsService } from './services/entitlements.js';
11
+ export { AuthJwksService } from './services/auth_jwks.js';
10
12
  export { PlansService } from './services/plans.js';
11
13
  export { ResourceMembersService } from './services/resource_members.js';
12
14
  export { ResourcesService } from './services/resources.js';
@@ -109,6 +111,16 @@ declare const IntrospectionResponseSchema: z.ZodObject<{
109
111
  token_type: z.ZodOptional<z.ZodString>;
110
112
  username: z.ZodOptional<z.ZodString>;
111
113
  }, z.core.$strip>;
114
+ declare const JWKSchema: z.ZodObject<{
115
+ keys: z.ZodArray<z.ZodObject<{
116
+ alg: z.ZodString;
117
+ e: z.ZodString;
118
+ kid: z.ZodString;
119
+ kty: z.ZodString;
120
+ n: z.ZodString;
121
+ use: z.ZodString;
122
+ }, z.core.$strip>>;
123
+ }, z.core.$strip>;
112
124
  declare const PlanDeleteResponseSchema: z.ZodObject<{
113
125
  success: z.ZodBoolean;
114
126
  }, z.core.$strip>;
@@ -471,6 +483,9 @@ declare const ResourceListSchema: z.ZodObject<{
471
483
  page: z.ZodNumber;
472
484
  total: z.ZodNumber;
473
485
  }, z.core.$strip>;
486
+ declare const AuthJwksGetOAuthAppJwksQuerySchema: z.ZodObject<{
487
+ client_id: z.ZodOptional<z.ZodString>;
488
+ }, z.core.$strip>;
474
489
  declare const EntitlementsListForResourceQuerySchema: z.ZodObject<{
475
490
  userId: z.ZodString;
476
491
  }, z.core.$strip>;
@@ -521,6 +536,7 @@ declare const UsersListQuerySchema: z.ZodObject<{
521
536
  search: z.ZodOptional<z.ZodString>;
522
537
  }, z.core.$strip>;
523
538
 
539
+ declare const schema_zod_AuthJwksGetOAuthAppJwksQuerySchema: typeof AuthJwksGetOAuthAppJwksQuerySchema;
524
540
  declare const schema_zod_AuthorizeRequestSchema: typeof AuthorizeRequestSchema;
525
541
  declare const schema_zod_BalanceResponseSchema: typeof BalanceResponseSchema;
526
542
  declare const schema_zod_CheckLimitResponseSchema: typeof CheckLimitResponseSchema;
@@ -539,6 +555,7 @@ declare const schema_zod_EntitlementsListForTenantQuerySchema: typeof Entitlemen
539
555
  declare const schema_zod_EntitlementsListResultSchema: typeof EntitlementsListResultSchema;
540
556
  declare const schema_zod_IntrospectionRequestSchema: typeof IntrospectionRequestSchema;
541
557
  declare const schema_zod_IntrospectionResponseSchema: typeof IntrospectionResponseSchema;
558
+ declare const schema_zod_JWKSchema: typeof JWKSchema;
542
559
  declare const schema_zod_OauthCheckConsentRequiredQuerySchema: typeof OauthCheckConsentRequiredQuerySchema;
543
560
  declare const schema_zod_PlanAssignBodySchema: typeof PlanAssignBodySchema;
544
561
  declare const schema_zod_PlanDeleteResponseSchema: typeof PlanDeleteResponseSchema;
@@ -578,23 +595,14 @@ declare const schema_zod_UserSchema: typeof UserSchema;
578
595
  declare const schema_zod_UserUpdateBodySchema: typeof UserUpdateBodySchema;
579
596
  declare const schema_zod_UsersListQuerySchema: typeof UsersListQuerySchema;
580
597
  declare namespace schema_zod {
581
- export { schema_zod_AuthorizeRequestSchema as AuthorizeRequestSchema, schema_zod_BalanceResponseSchema as BalanceResponseSchema, schema_zod_CheckLimitResponseSchema as CheckLimitResponseSchema, schema_zod_ConsentCheckResponseSchema as ConsentCheckResponseSchema, schema_zod_DeviceAuthorizeRequestSchema as DeviceAuthorizeRequestSchema, schema_zod_DeviceAuthorizeResponseSchema as DeviceAuthorizeResponseSchema, schema_zod_DeviceCodeInfoResponseSchema as DeviceCodeInfoResponseSchema, schema_zod_DeviceCodeRequestSchema as DeviceCodeRequestSchema, schema_zod_DeviceCodeResponseSchema as DeviceCodeResponseSchema, schema_zod_DeviceTokenRequestSchema as DeviceTokenRequestSchema, schema_zod_EntitlementCheckBodySchema as EntitlementCheckBodySchema, schema_zod_EntitlementCheckResultSchema as EntitlementCheckResultSchema, schema_zod_EntitlementTypeSchema as EntitlementTypeSchema, schema_zod_EntitlementsListForResourceQuerySchema as EntitlementsListForResourceQuerySchema, schema_zod_EntitlementsListForTenantQuerySchema as EntitlementsListForTenantQuerySchema, schema_zod_EntitlementsListResultSchema as EntitlementsListResultSchema, schema_zod_IntrospectionRequestSchema as IntrospectionRequestSchema, schema_zod_IntrospectionResponseSchema as IntrospectionResponseSchema, schema_zod_OauthCheckConsentRequiredQuerySchema as OauthCheckConsentRequiredQuerySchema, schema_zod_PlanAssignBodySchema as PlanAssignBodySchema, schema_zod_PlanDeleteResponseSchema as PlanDeleteResponseSchema, schema_zod_PlanResponseSchema as PlanResponseSchema, schema_zod_PlanTypeSchema as PlanTypeSchema, schema_zod_ResourceBulkCreateBodySchema as ResourceBulkCreateBodySchema, schema_zod_ResourceBulkResultSchema as ResourceBulkResultSchema, schema_zod_ResourceCreateBodySchema as ResourceCreateBodySchema, schema_zod_ResourceListSchema as ResourceListSchema, schema_zod_ResourceMemberListSchema as ResourceMemberListSchema, schema_zod_ResourceMembersListQuerySchema as ResourceMembersListQuerySchema, schema_zod_ResourceSchema as ResourceSchema, schema_zod_ResourceTypeSchema as ResourceTypeSchema, schema_zod_ResourceUpdateBodySchema as ResourceUpdateBodySchema, schema_zod_ResourcesListQuerySchema as ResourcesListQuerySchema, schema_zod_RevocationRequestSchema as RevocationRequestSchema, schema_zod_RoleBulkCreateBodySchema as RoleBulkCreateBodySchema, schema_zod_RoleBulkResultSchema as RoleBulkResultSchema, schema_zod_RoleCreateBodySchema as RoleCreateBodySchema, schema_zod_RoleListSchema as RoleListSchema, schema_zod_RoleSchema as RoleSchema, schema_zod_RolesListQuerySchema as RolesListQuerySchema, schema_zod_TokenRequestSchema as TokenRequestSchema, schema_zod_TokenResponseSchema as TokenResponseSchema, schema_zod_TransactionHistoryResponseSchema as TransactionHistoryResponseSchema, schema_zod_UsageCheckBodySchema as UsageCheckBodySchema, schema_zod_UsageConsumeBodySchema as UsageConsumeBodySchema, schema_zod_UsageCreditBodySchema as UsageCreditBodySchema, schema_zod_UsageGetBalanceQuerySchema as UsageGetBalanceQuerySchema, schema_zod_UsageGetTransactionHistoryQuerySchema as UsageGetTransactionHistoryQuerySchema, schema_zod_UsageLimitTypeSchema as UsageLimitTypeSchema, schema_zod_UsageWalletResponseSchema as UsageWalletResponseSchema, schema_zod_UserCreateBodySchema as UserCreateBodySchema, schema_zod_UserListSchema as UserListSchema, schema_zod_UserResourceListSchema as UserResourceListSchema, schema_zod_UserSchema as UserSchema, schema_zod_UserUpdateBodySchema as UserUpdateBodySchema, schema_zod_UsersListQuerySchema as UsersListQuerySchema };
598
+ export { schema_zod_AuthJwksGetOAuthAppJwksQuerySchema as AuthJwksGetOAuthAppJwksQuerySchema, schema_zod_AuthorizeRequestSchema as AuthorizeRequestSchema, schema_zod_BalanceResponseSchema as BalanceResponseSchema, schema_zod_CheckLimitResponseSchema as CheckLimitResponseSchema, schema_zod_ConsentCheckResponseSchema as ConsentCheckResponseSchema, schema_zod_DeviceAuthorizeRequestSchema as DeviceAuthorizeRequestSchema, schema_zod_DeviceAuthorizeResponseSchema as DeviceAuthorizeResponseSchema, schema_zod_DeviceCodeInfoResponseSchema as DeviceCodeInfoResponseSchema, schema_zod_DeviceCodeRequestSchema as DeviceCodeRequestSchema, schema_zod_DeviceCodeResponseSchema as DeviceCodeResponseSchema, schema_zod_DeviceTokenRequestSchema as DeviceTokenRequestSchema, schema_zod_EntitlementCheckBodySchema as EntitlementCheckBodySchema, schema_zod_EntitlementCheckResultSchema as EntitlementCheckResultSchema, schema_zod_EntitlementTypeSchema as EntitlementTypeSchema, schema_zod_EntitlementsListForResourceQuerySchema as EntitlementsListForResourceQuerySchema, schema_zod_EntitlementsListForTenantQuerySchema as EntitlementsListForTenantQuerySchema, schema_zod_EntitlementsListResultSchema as EntitlementsListResultSchema, schema_zod_IntrospectionRequestSchema as IntrospectionRequestSchema, schema_zod_IntrospectionResponseSchema as IntrospectionResponseSchema, schema_zod_JWKSchema as JWKSchema, schema_zod_OauthCheckConsentRequiredQuerySchema as OauthCheckConsentRequiredQuerySchema, schema_zod_PlanAssignBodySchema as PlanAssignBodySchema, schema_zod_PlanDeleteResponseSchema as PlanDeleteResponseSchema, schema_zod_PlanResponseSchema as PlanResponseSchema, schema_zod_PlanTypeSchema as PlanTypeSchema, schema_zod_ResourceBulkCreateBodySchema as ResourceBulkCreateBodySchema, schema_zod_ResourceBulkResultSchema as ResourceBulkResultSchema, schema_zod_ResourceCreateBodySchema as ResourceCreateBodySchema, schema_zod_ResourceListSchema as ResourceListSchema, schema_zod_ResourceMemberListSchema as ResourceMemberListSchema, schema_zod_ResourceMembersListQuerySchema as ResourceMembersListQuerySchema, schema_zod_ResourceSchema as ResourceSchema, schema_zod_ResourceTypeSchema as ResourceTypeSchema, schema_zod_ResourceUpdateBodySchema as ResourceUpdateBodySchema, schema_zod_ResourcesListQuerySchema as ResourcesListQuerySchema, schema_zod_RevocationRequestSchema as RevocationRequestSchema, schema_zod_RoleBulkCreateBodySchema as RoleBulkCreateBodySchema, schema_zod_RoleBulkResultSchema as RoleBulkResultSchema, schema_zod_RoleCreateBodySchema as RoleCreateBodySchema, schema_zod_RoleListSchema as RoleListSchema, schema_zod_RoleSchema as RoleSchema, schema_zod_RolesListQuerySchema as RolesListQuerySchema, schema_zod_TokenRequestSchema as TokenRequestSchema, schema_zod_TokenResponseSchema as TokenResponseSchema, schema_zod_TransactionHistoryResponseSchema as TransactionHistoryResponseSchema, schema_zod_UsageCheckBodySchema as UsageCheckBodySchema, schema_zod_UsageConsumeBodySchema as UsageConsumeBodySchema, schema_zod_UsageCreditBodySchema as UsageCreditBodySchema, schema_zod_UsageGetBalanceQuerySchema as UsageGetBalanceQuerySchema, schema_zod_UsageGetTransactionHistoryQuerySchema as UsageGetTransactionHistoryQuerySchema, schema_zod_UsageLimitTypeSchema as UsageLimitTypeSchema, schema_zod_UsageWalletResponseSchema as UsageWalletResponseSchema, schema_zod_UserCreateBodySchema as UserCreateBodySchema, schema_zod_UserListSchema as UserListSchema, schema_zod_UserResourceListSchema as UserResourceListSchema, schema_zod_UserSchema as UserSchema, schema_zod_UserUpdateBodySchema as UserUpdateBodySchema, schema_zod_UsersListQuerySchema as UsersListQuerySchema };
582
599
  }
583
600
 
584
- interface JWK {
585
- kty: string;
586
- use: string;
587
- kid: string;
588
- alg: string;
589
- n: string;
590
- e: string;
591
- }
592
- interface JWKSet {
593
- keys: JWK[];
594
- }
601
+ type JWK = JWK$1['keys'][number];
602
+ type JWKSet = JWK$1;
595
603
  interface VerifyTokenOptions {
596
- url?: string;
597
604
  secretKey?: string;
605
+ clientId?: string;
598
606
  token: string;
599
607
  runtimeApiUrl?: string | undefined;
600
608
  }
@@ -605,14 +613,19 @@ interface TokenVerifierOptions {
605
613
  declare class TokenVerifier {
606
614
  private readonly cache;
607
615
  private readonly cacheTTL;
608
- private readonly runtimeApiUrl;
616
+ private readonly baseURL;
609
617
  constructor(options?: TokenVerifierOptions);
610
- private fetchJWKSet;
611
618
  private jwkToKeyObject;
612
619
  private getPublicKey;
613
620
  verifyToken<T = unknown>(options: VerifyTokenOptions): Promise<T>;
614
- clearCache(secretKeyOrUrl?: string): void;
621
+ clearCache(cacheKey?: string): void;
615
622
  }
616
623
  declare function verifyToken<T = unknown>(options: VerifyTokenOptions): Promise<T>;
624
+ interface VerifyOAuthTokenOptions {
625
+ token: string;
626
+ clientId: string;
627
+ runtimeApiUrl?: string | undefined;
628
+ }
629
+ declare function verifyOAuthToken<T = unknown>(options: VerifyOAuthTokenOptions): Promise<T>;
617
630
 
618
- export { type JWK, type JWKSet, TokenVerifier, type TokenVerifierOptions, type VerifyTokenOptions, schema_zod as ZodSchema, verifyToken };
631
+ export { type JWK, type JWKSet, TokenVerifier, type TokenVerifierOptions, type VerifyOAuthTokenOptions, type VerifyTokenOptions, schema_zod as ZodSchema, verifyOAuthToken, verifyToken };
package/dist/index.mjs CHANGED
@@ -22,6 +22,47 @@ function buildAuthStrategies(cfg) {
22
22
  return authStrategies;
23
23
  }
24
24
 
25
+ // src/services/auth_jwks.ts
26
+ var AuthJwksService = class {
27
+ constructor(core) {
28
+ this.core = core;
29
+ }
30
+ /**
31
+ * GET /v1/auth/.well-known/jwks.json*
32
+ * @summary Get JSON Web Key Set for environment (Public)*
33
+ * @description Returns the public keys used to verify JWT tokens issued by this environment. Authenticate using either x-api-key header (secretKey) or x-blimu-publishable-key header (publishableKey).*/
34
+ getJwks(init) {
35
+ return this.core.request({
36
+ method: "GET",
37
+ path: `/v1/auth/.well-known/jwks.json`,
38
+ ...init ?? {}
39
+ });
40
+ }
41
+ /**
42
+ * GET /v1/auth/.well-known/public-key.pem*
43
+ * @summary Get environment public key (PEM)*
44
+ * @description Returns the public key in PEM format for verifying JWT tokens. Authenticate with x-api-key or x-blimu-publishable-key.*/
45
+ getPublicKeyPem(init) {
46
+ return this.core.request({
47
+ method: "GET",
48
+ path: `/v1/auth/.well-known/public-key.pem`,
49
+ ...init ?? {}
50
+ });
51
+ }
52
+ /**
53
+ * GET /v1/auth/oauth/.well-known/jwks.json*
54
+ * @summary Get JSON Web Key Set for OAuth app (Public)*
55
+ * @description Returns the public key for a specific OAuth app to verify JWT tokens. This is a public endpoint following OAuth2/OIDC standards. Provide client_id to get keys for a specific OAuth app, or use authenticated endpoint for environment keys.*/
56
+ getOAuthAppJwks(query, init) {
57
+ return this.core.request({
58
+ method: "GET",
59
+ path: `/v1/auth/oauth/.well-known/jwks.json`,
60
+ query,
61
+ ...init ?? {}
62
+ });
63
+ }
64
+ };
65
+
25
66
  // src/services/bulk_resources.ts
26
67
  var BulkResourcesService = class {
27
68
  constructor(core) {
@@ -529,6 +570,7 @@ var UsersService = class {
529
570
 
530
571
  // src/client.ts
531
572
  var Blimu = class {
573
+ authJwks;
532
574
  bulkResources;
533
575
  bulkRoles;
534
576
  entitlements;
@@ -548,6 +590,7 @@ var Blimu = class {
548
590
  baseURL: options?.baseURL ?? "https://api.blimu.dev",
549
591
  ...authStrategies.length > 0 ? { authStrategies } : {}
550
592
  });
593
+ this.authJwks = new AuthJwksService(core);
551
594
  this.bulkResources = new BulkResourcesService(core);
552
595
  this.bulkRoles = new BulkRolesService(core);
553
596
  this.entitlements = new EntitlementsService(core);
@@ -598,6 +641,7 @@ var schema_exports = {};
598
641
  // src/schema.zod.ts
599
642
  var schema_zod_exports = {};
600
643
  __export(schema_zod_exports, {
644
+ AuthJwksGetOAuthAppJwksQuerySchema: () => AuthJwksGetOAuthAppJwksQuerySchema,
601
645
  AuthorizeRequestSchema: () => AuthorizeRequestSchema,
602
646
  BalanceResponseSchema: () => BalanceResponseSchema,
603
647
  CheckLimitResponseSchema: () => CheckLimitResponseSchema,
@@ -616,6 +660,7 @@ __export(schema_zod_exports, {
616
660
  EntitlementsListResultSchema: () => EntitlementsListResultSchema,
617
661
  IntrospectionRequestSchema: () => IntrospectionRequestSchema,
618
662
  IntrospectionResponseSchema: () => IntrospectionResponseSchema,
663
+ JWKSchema: () => JWKSchema,
619
664
  OauthCheckConsentRequiredQuerySchema: () => OauthCheckConsentRequiredQuerySchema,
620
665
  PlanAssignBodySchema: () => PlanAssignBodySchema,
621
666
  PlanDeleteResponseSchema: () => PlanDeleteResponseSchema,
@@ -781,6 +826,16 @@ var IntrospectionResponseSchema = z.object({
781
826
  /** Username or user ID */
782
827
  username: z.string().optional()
783
828
  });
829
+ var JWKSchema = z.object({
830
+ keys: z.object({
831
+ alg: z.string(),
832
+ e: z.string(),
833
+ kid: z.string(),
834
+ kty: z.string(),
835
+ n: z.string(),
836
+ use: z.string()
837
+ }).array()
838
+ });
784
839
  var PlanDeleteResponseSchema = z.object({ success: z.boolean() });
785
840
  var ResourceMemberListSchema = z.object({
786
841
  items: z.object({
@@ -1138,6 +1193,10 @@ var ResourceListSchema = z.object({
1138
1193
  page: z.number(),
1139
1194
  total: z.number()
1140
1195
  });
1196
+ var AuthJwksGetOAuthAppJwksQuerySchema = z.object({
1197
+ /** OAuth app client ID to get public keys for */
1198
+ client_id: z.string().optional()
1199
+ });
1141
1200
  var EntitlementsListForResourceQuerySchema = z.object({
1142
1201
  /** The unique identifier of the user */
1143
1202
  userId: z.string()
@@ -1206,40 +1265,14 @@ var UsersListQuerySchema = z.object({
1206
1265
  // src/token-verifier.ts
1207
1266
  import * as crypto from "crypto";
1208
1267
  import * as jwt from "jsonwebtoken";
1268
+ import { FetchClient as FetchClient2 } from "@blimu/fetch";
1209
1269
  var TokenVerifier = class {
1210
1270
  cache = /* @__PURE__ */ new Map();
1211
1271
  cacheTTL;
1212
- runtimeApiUrl;
1272
+ baseURL;
1213
1273
  constructor(options) {
1214
1274
  this.cacheTTL = options?.cacheTTL ?? 60 * 60 * 1e3;
1215
- this.runtimeApiUrl = options?.runtimeApiUrl ?? "https://api.blimu.dev";
1216
- }
1217
- /**
1218
- * Fetch JWK Set from runtime-api
1219
- */
1220
- async fetchJWKSet(endpoint, headers) {
1221
- console.log(`[TokenVerifier] \u{1F4E1} Fetching JWK Set from: ${endpoint}`);
1222
- if (headers) {
1223
- console.log(
1224
- `[TokenVerifier] \u{1F4E1} Request headers: ${JSON.stringify(Object.keys(headers).map((k) => `${k}: ${k === "x-api-key" ? "***" : headers[k]}`))}`
1225
- );
1226
- }
1227
- const response = await fetch(endpoint, {
1228
- method: "GET",
1229
- headers: {
1230
- "Content-Type": "application/json",
1231
- ...headers
1232
- }
1233
- });
1234
- console.log(`[TokenVerifier] \u{1F4E1} Response status: ${response.status} ${response.statusText}`);
1235
- if (!response.ok) {
1236
- const errorText = await response.text();
1237
- console.error(`[TokenVerifier] \u274C Failed to fetch JWKs: ${response.status} ${errorText}`);
1238
- throw new FetchError("Failed to fetch JWKs", response.status, errorText);
1239
- }
1240
- const jwkSet = await response.json();
1241
- console.log(`[TokenVerifier] \u2705 Successfully fetched JWK Set with ${jwkSet.keys.length} keys`);
1242
- return jwkSet;
1275
+ this.baseURL = options?.runtimeApiUrl ?? "https://api.blimu.dev";
1243
1276
  }
1244
1277
  /**
1245
1278
  * Convert JWK to KeyObject
@@ -1258,25 +1291,19 @@ var TokenVerifier = class {
1258
1291
  /**
1259
1292
  * Get public key for a specific key ID
1260
1293
  */
1261
- async getPublicKey(kid, cacheKey, endpoint, headers) {
1294
+ async getPublicKey(kid, cacheKey, fetchJwks) {
1262
1295
  const cached = this.cache.get(cacheKey);
1263
1296
  if (cached && cached.expiresAt > Date.now()) {
1264
- console.log(`[TokenVerifier] \u2705 Using cached key for kid: ${kid}`);
1265
1297
  return cached.key;
1266
1298
  }
1267
- console.log(`[TokenVerifier] \u{1F50D} Cache miss or expired. Fetching new key for kid: ${kid}`);
1268
- const jwkSet = await this.fetchJWKSet(endpoint, headers);
1299
+ const jwkSet = await fetchJwks();
1269
1300
  const jwk = jwkSet.keys.find((k) => k.kid === kid);
1270
1301
  if (!jwk) {
1271
1302
  const availableKids = jwkSet.keys.map((k) => k.kid).join(", ");
1272
- console.error(
1273
- `[TokenVerifier] \u274C Key with kid '${kid}' not found in JWK Set. Available kids: ${availableKids}`
1274
- );
1275
1303
  throw new Error(
1276
1304
  `Key with kid '${kid}' not found in JWK Set. Available kids: ${availableKids}`
1277
1305
  );
1278
1306
  }
1279
- console.log(`[TokenVerifier] \u2705 Found key with kid: ${kid}`);
1280
1307
  const keyObject = this.jwkToKeyObject(jwk);
1281
1308
  this.cache.set(cacheKey, {
1282
1309
  key: keyObject,
@@ -1286,15 +1313,16 @@ var TokenVerifier = class {
1286
1313
  return keyObject;
1287
1314
  }
1288
1315
  /**
1289
- * Verify JWT token using JWKs from runtime-api
1316
+ * Verify JWT token using JWKs from Blimu runtime API.
1317
+ * Supports: environment/session tokens (secretKey) or OAuth app tokens (clientId).
1290
1318
  */
1291
1319
  async verifyToken(options) {
1292
- const { url, secretKey, token, runtimeApiUrl } = options;
1293
- if (!url && !secretKey) {
1294
- throw new Error("Either url or secretKey must be provided");
1295
- }
1296
- if (url && secretKey) {
1297
- throw new Error("Cannot provide both url and secretKey");
1320
+ const { secretKey, clientId, token, runtimeApiUrl } = options;
1321
+ const provided = [secretKey, clientId].filter(Boolean);
1322
+ if (provided.length !== 1) {
1323
+ throw new Error(
1324
+ "Exactly one of secretKey or clientId must be provided. Use secretKey for environment/session tokens, clientId for OAuth app access tokens."
1325
+ );
1298
1326
  }
1299
1327
  const decoded = jwt.decode(token, { complete: true });
1300
1328
  if (!decoded || typeof decoded === "string") {
@@ -1304,67 +1332,38 @@ var TokenVerifier = class {
1304
1332
  if (!header.kid) {
1305
1333
  throw new Error("Token missing kid in header");
1306
1334
  }
1307
- let endpoint;
1335
+ const baseURL = runtimeApiUrl ?? this.baseURL;
1308
1336
  let cacheKey;
1309
- let headers;
1337
+ let fetchJwks;
1310
1338
  if (secretKey) {
1311
- const apiUrl = runtimeApiUrl ?? this.runtimeApiUrl;
1312
- endpoint = `${apiUrl}/v1/auth/.well-known/jwks.json`;
1313
1339
  cacheKey = secretKey;
1314
- headers = {
1315
- "x-api-key": secretKey
1316
- };
1317
- console.log(
1318
- `[TokenVerifier] \u{1F50D} Verifying token with kid: ${header.kid}, endpoint: ${endpoint}`
1319
- );
1340
+ const core = new FetchClient2({
1341
+ baseURL,
1342
+ authStrategies: buildAuthStrategies({ apiKey: secretKey, baseURL })
1343
+ });
1344
+ const authJwks = new AuthJwksService(core);
1345
+ fetchJwks = () => authJwks.getJwks();
1320
1346
  } else {
1321
- endpoint = url;
1322
- cacheKey = url;
1323
- console.log(
1324
- `[TokenVerifier] \u{1F50D} Verifying token with kid: ${header.kid}, endpoint: ${endpoint}`
1325
- );
1347
+ cacheKey = `oauth:${clientId}`;
1348
+ const core = new FetchClient2({ baseURL });
1349
+ const authJwks = new AuthJwksService(core);
1350
+ fetchJwks = () => authJwks.getOAuthAppJwks({ client_id: clientId });
1326
1351
  }
1327
1352
  let publicKey;
1328
1353
  try {
1329
- publicKey = await this.getPublicKey(header.kid, cacheKey, endpoint, headers);
1330
- console.log(`[TokenVerifier] \u2705 Successfully retrieved public key for kid: ${header.kid}`);
1331
- } catch (error) {
1332
- console.error(
1333
- `[TokenVerifier] \u274C Failed to get public key (first attempt): ${error instanceof Error ? error.message : String(error)}`
1334
- );
1354
+ publicKey = await this.getPublicKey(header.kid, cacheKey, fetchJwks);
1355
+ } catch {
1335
1356
  this.clearCache(cacheKey);
1336
- console.log(`[TokenVerifier] \u{1F504} Retrying after cache clear...`);
1337
- try {
1338
- publicKey = await this.getPublicKey(header.kid, cacheKey, endpoint, headers);
1339
- console.log(
1340
- `[TokenVerifier] \u2705 Successfully retrieved public key for kid: ${header.kid} (retry)`
1341
- );
1342
- } catch (retryError) {
1343
- console.error(
1344
- `[TokenVerifier] \u274C Failed to get public key (retry): ${retryError instanceof Error ? retryError.message : String(retryError)}`
1345
- );
1346
- throw retryError;
1347
- }
1348
- }
1349
- try {
1350
- const payload = jwt.verify(token, publicKey, {
1351
- algorithms: ["RS256"]
1352
- });
1353
- console.log(`[TokenVerifier] \u2705 Token verified successfully`);
1354
- return payload;
1355
- } catch (error) {
1356
- console.error(
1357
- `[TokenVerifier] \u274C JWT verification failed: ${error instanceof Error ? error.message : String(error)}`
1358
- );
1359
- throw error;
1357
+ publicKey = await this.getPublicKey(header.kid, cacheKey, fetchJwks);
1360
1358
  }
1359
+ return jwt.verify(token, publicKey, { algorithms: ["RS256"] });
1361
1360
  }
1362
1361
  /**
1363
1362
  * Clear cache (useful for testing or key rotation)
1364
1363
  */
1365
- clearCache(secretKeyOrUrl) {
1366
- if (secretKeyOrUrl) {
1367
- this.cache.delete(secretKeyOrUrl);
1364
+ clearCache(cacheKey) {
1365
+ if (cacheKey) {
1366
+ this.cache.delete(cacheKey);
1368
1367
  } else {
1369
1368
  this.cache.clear();
1370
1369
  }
@@ -1374,7 +1373,14 @@ async function verifyToken(options) {
1374
1373
  const verifier = new TokenVerifier();
1375
1374
  return verifier.verifyToken(options);
1376
1375
  }
1376
+ async function verifyOAuthToken(options) {
1377
+ return verifyToken({
1378
+ ...options,
1379
+ clientId: options.clientId
1380
+ });
1381
+ }
1377
1382
  export {
1383
+ AuthJwksService,
1378
1384
  Blimu,
1379
1385
  BlimuError,
1380
1386
  BulkResourcesService,
@@ -1395,6 +1401,7 @@ export {
1395
1401
  paginate,
1396
1402
  parseNDJSONStream,
1397
1403
  parseSSEStream,
1404
+ verifyOAuthToken,
1398
1405
  verifyToken
1399
1406
  };
1400
1407
  //# sourceMappingURL=index.mjs.map