tapimo 0.4.1 → 0.4.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/ApiKey.d.ts +1 -9
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +2 -3
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +53 -27
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +32 -17
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +1990 -1442
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +23 -9
- package/dist/App.js.map +1 -1
- package/dist/Assets.d.ts +10 -0
- package/dist/Assets.d.ts.map +1 -1
- package/dist/Assets.js +4 -0
- package/dist/Assets.js.map +1 -1
- package/dist/Auth.d.ts +2 -1
- package/dist/Auth.d.ts.map +1 -1
- package/dist/Auth.js +2 -1
- package/dist/Auth.js.map +1 -1
- package/dist/Scope.d.ts +40 -15
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +44 -13
- package/dist/Scope.js.map +1 -1
- package/dist/admin/App.d.ts +560 -9
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +38 -6
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +10 -24
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +10 -3
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +833 -0
- package/dist/admin/apps/organizations.d.ts.map +1 -0
- package/dist/admin/apps/organizations.js +733 -0
- package/dist/admin/apps/organizations.js.map +1 -0
- package/dist/admin/apps/scopes.d.ts +8 -0
- package/dist/admin/apps/scopes.d.ts.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +57 -57
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.d.ts.map +1 -1
- package/dist/admin/ui.generated.js +53 -13
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts +10 -0
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +8 -0
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts +9 -0
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +14 -0
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/data/App.d.ts +1304 -1304
- package/dist/apps/data/FundingRouteProviders.d.ts +4 -22
- package/dist/apps/data/FundingRouteProviders.d.ts.map +1 -1
- package/dist/apps/data/FundingRouteProviders.js +10 -120
- package/dist/apps/data/FundingRouteProviders.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +38 -38
- package/dist/apps/data/routes/addresses.d.ts +24 -24
- package/dist/apps/data/routes/blocks.d.ts +39 -39
- package/dist/apps/data/routes/fee-amm.d.ts +20 -20
- package/dist/apps/data/routes/funding.js +7 -7
- package/dist/apps/data/routes/funding.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +5 -5
- package/dist/apps/data/routes/tokenlist.d.ts +12 -12
- package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
- package/dist/apps/management/App.d.ts +808 -267
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/App.js +2 -2
- package/dist/apps/management/Billing.d.ts +3 -0
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +7 -2
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +116 -100
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +41 -30
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +182 -50
- package/dist/apps/management/routes/billing.d.ts.map +1 -1
- package/dist/apps/management/routes/billing.js +14 -14
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +93 -20
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +12 -15
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/members.d.ts +89 -18
- package/dist/apps/management/routes/members.d.ts.map +1 -1
- package/dist/apps/management/routes/members.js +10 -10
- package/dist/apps/management/routes/members.js.map +1 -1
- package/dist/apps/management/routes/orgs.d.ts +100 -40
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +19 -19
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +122 -33
- package/dist/apps/management/routes/projects.d.ts.map +1 -1
- package/dist/apps/management/routes/projects.js +12 -13
- package/dist/apps/management/routes/projects.js.map +1 -1
- package/dist/apps/management/routes/scopes.d.ts +4 -18
- package/dist/apps/management/routes/scopes.d.ts.map +1 -1
- package/dist/apps/management/routes/scopes.js +6 -7
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +63 -19
- package/dist/apps/management/routes/usage.d.ts.map +1 -1
- package/dist/apps/management/routes/usage.js +9 -10
- package/dist/apps/management/routes/usage.js.map +1 -1
- package/dist/apps/mcp.d.ts.map +1 -1
- package/dist/apps/mcp.js +38 -4
- package/dist/apps/mcp.js.map +1 -1
- package/dist/apps/relay/App.d.ts +26 -4
- package/dist/apps/relay/App.d.ts.map +1 -1
- package/dist/apps/relay/App.js +17 -14
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/cloudflare.d.ts +2 -0
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +4 -0
- package/dist/cloudflare.js.map +1 -1
- package/dist/db/Db.d.ts +5 -3
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +52 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +13 -0
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +16 -1
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/adminAuditLogs.d.ts +27 -0
- package/dist/db/tables/adminAuditLogs.d.ts.map +1 -0
- package/dist/db/tables/adminAuditLogs.js +19 -0
- package/dist/db/tables/adminAuditLogs.js.map +1 -0
- package/dist/db/tables/invitations.d.ts +1 -1
- package/dist/db/tables/invitations.d.ts.map +1 -1
- package/dist/db/tables/memberships.d.ts +32 -4
- package/dist/db/tables/memberships.d.ts.map +1 -1
- package/dist/db/tables/memberships.js +31 -0
- package/dist/db/tables/memberships.js.map +1 -1
- package/dist/db/tables/organizations.d.ts +43 -1
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +103 -0
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/projects.d.ts +25 -0
- package/dist/db/tables/projects.d.ts.map +1 -1
- package/dist/db/tables/projects.js +22 -0
- package/dist/db/tables/projects.js.map +1 -1
- package/dist/db/tables/webhookDeliveries.d.ts +26 -0
- package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
- package/dist/db/tables/webhookDeliveries.js +37 -0
- package/dist/db/tables/webhookDeliveries.js.map +1 -1
- package/dist/internal/Auth.d.ts +46 -40
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +118 -69
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cursor.d.ts +1 -1
- package/dist/internal/Cursor.d.ts.map +1 -1
- package/dist/internal/Cursor.js +4 -0
- package/dist/internal/Cursor.js.map +1 -1
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +2 -0
- package/dist/internal/EdgeCache.js.map +1 -1
- package/dist/internal/Errors.d.ts +6 -0
- package/dist/internal/Errors.d.ts.map +1 -0
- package/dist/internal/Errors.js +16 -0
- package/dist/internal/Errors.js.map +1 -0
- package/dist/internal/FundingRoutes.d.ts +15 -43
- package/dist/internal/FundingRoutes.d.ts.map +1 -1
- package/dist/internal/FundingRoutes.js +8 -17
- package/dist/internal/FundingRoutes.js.map +1 -1
- package/dist/internal/Log.d.ts +16 -1
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +5 -3
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/Store.d.ts +61 -16
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +72 -17
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Viem.d.ts +1 -1
- package/dist/internal/index.d.ts +27 -0
- package/dist/internal/index.d.ts.map +1 -0
- package/dist/internal/index.js +27 -0
- package/dist/internal/index.js.map +1 -0
- package/package.json +8 -3
- package/src/ApiKey.ts +2 -3
- package/src/ApiKeys.ts +95 -17
- package/src/App.test.ts +104 -6
- package/src/App.ts +29 -9
- package/src/Assets.ts +8 -0
- package/src/Auth.test-d.ts +36 -0
- package/src/Auth.ts +20 -1
- package/src/Client.test-d.ts +17 -17
- package/src/Scope.test.ts +34 -0
- package/src/Scope.ts +53 -17
- package/src/admin/App.test.ts +33 -3
- package/src/admin/App.ts +49 -14
- package/src/admin/apps/api-keys.ts +10 -3
- package/src/admin/apps/organizations.test.ts +455 -0
- package/src/admin/apps/organizations.ts +953 -0
- package/src/admin/apps/scopes.test.ts +10 -0
- package/src/admin/ui/plugin.ts +1 -1
- package/src/admin/ui/src/components/MobileProfile.tsx +2 -0
- package/src/admin/ui/src/components/ThemeToggle.tsx +20 -0
- package/src/admin/ui/src/lib/api-keys.ts +36 -19
- package/src/admin/ui/src/lib/config.ts +2 -3
- package/src/admin/ui/src/lib/organizations.test.ts +89 -0
- package/src/admin/ui/src/lib/organizations.ts +262 -0
- package/src/admin/ui/src/lib/query-client.ts +3 -1
- package/src/admin/ui/src/lib/theme.ts +57 -0
- package/src/admin/ui/src/routeTree.gen.ts +47 -4
- package/src/admin/ui/src/routes/__root.tsx +18 -3
- package/src/admin/ui/src/routes/api-keys.tsx +52 -7
- package/src/admin/ui/src/routes/index.tsx +1 -1
- package/src/admin/ui/src/routes/organizations.tsx +158 -0
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +710 -0
- package/src/admin/ui/src/start.ts +6 -0
- package/src/admin/ui.generated.ts +63 -13
- package/src/analytics/Analytics.ts +25 -0
- package/src/analytics/tables/requestEvents.ts +33 -0
- package/src/apps/composition.test.ts +82 -2
- package/src/apps/data/FundingRouteProviders.test.ts +37 -93
- package/src/apps/data/FundingRouteProviders.ts +14 -161
- package/src/apps/data/routes/funding.test.ts +7 -42
- package/src/apps/data/routes/funding.ts +8 -8
- package/src/apps/data/routes/indexer.test.ts +2 -2
- package/src/apps/data/routes/webhooks.test.ts +2 -2
- package/src/apps/management/App.ts +2 -2
- package/src/apps/management/Billing.ts +10 -2
- package/src/apps/management/routes/api-keys.test.ts +137 -1
- package/src/apps/management/routes/api-keys.ts +63 -38
- package/src/apps/management/routes/billing.ts +14 -14
- package/src/apps/management/routes/invitations.test.ts +102 -1
- package/src/apps/management/routes/invitations.ts +13 -15
- package/src/apps/management/routes/members.ts +10 -10
- package/src/apps/management/routes/orgs.test.ts +78 -16
- package/src/apps/management/routes/orgs.ts +21 -20
- package/src/apps/management/routes/projects.ts +12 -13
- package/src/apps/management/routes/scopes.test.ts +16 -0
- package/src/apps/management/routes/scopes.ts +6 -7
- package/src/apps/management/routes/usage.ts +9 -14
- package/src/apps/mcp.test.ts +72 -7
- package/src/apps/mcp.ts +46 -4
- package/src/apps/relay/App.test.ts +23 -18
- package/src/apps/relay/App.ts +35 -14
- package/src/cloudflare.ts +5 -0
- package/src/db/Db.ts +59 -3
- package/src/db/Schema.ts +20 -1
- package/src/db/tables/adminAuditLogs.ts +47 -0
- package/src/db/tables/invitations.ts +1 -1
- package/src/db/tables/memberships.ts +59 -3
- package/src/db/tables/organizations.ts +148 -1
- package/src/db/tables/projects.ts +47 -0
- package/src/db/tables/webhookDeliveries.ts +83 -0
- package/src/internal/Auth.test.ts +571 -23
- package/src/internal/Auth.ts +166 -94
- package/src/internal/Cursor.test.ts +10 -0
- package/src/internal/Cursor.ts +5 -1
- package/src/internal/EdgeCache.test.ts +11 -0
- package/src/internal/EdgeCache.ts +2 -0
- package/src/internal/FundingRoutes.test.ts +8 -8
- package/src/internal/FundingRoutes.ts +25 -29
- package/src/internal/Log.test.ts +41 -3
- package/src/internal/Log.ts +23 -4
- package/src/internal/Store.test-d.ts +15 -0
- package/src/internal/Store.test.ts +153 -2
- package/src/internal/Store.ts +157 -41
- package/src/internal/index.test.ts +34 -0
- package/src/internal/index.ts +26 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type Selectable } from 'kysely';
|
|
2
2
|
import type * as Db from '../Db.js';
|
|
3
3
|
import type * as db_Schema from '../Schema.js';
|
|
4
4
|
import type * as Memberships from './memberships.js';
|
|
@@ -62,6 +62,14 @@ export declare function deleteOrganization(db: Db.Db, id: string): Promise<boole
|
|
|
62
62
|
* @returns The record, or `undefined` when absent.
|
|
63
63
|
*/
|
|
64
64
|
export declare function get(db: Db.Db, id: string): Promise<Record | undefined>;
|
|
65
|
+
/**
|
|
66
|
+
* Reads an organization with current member and project counts.
|
|
67
|
+
*
|
|
68
|
+
* @param db - The database.
|
|
69
|
+
* @param id - The organization id.
|
|
70
|
+
* @returns The organization summary, or `undefined` when absent.
|
|
71
|
+
*/
|
|
72
|
+
export declare function getSummary(db: Db.Db, id: string): Promise<search.Result | undefined>;
|
|
65
73
|
/**
|
|
66
74
|
* Lists organizations, newest first.
|
|
67
75
|
*
|
|
@@ -69,6 +77,40 @@ export declare function get(db: Db.Db, id: string): Promise<Record | undefined>;
|
|
|
69
77
|
* @returns The records.
|
|
70
78
|
*/
|
|
71
79
|
export declare function list(db: Db.Db): Promise<Record[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Searches organizations for the admin lookup surface, newest first. Results
|
|
82
|
+
* include member and project counts and use a stable `(createdAt, id)` keyset.
|
|
83
|
+
*
|
|
84
|
+
* @param db - The database.
|
|
85
|
+
* @param options - Search, keyset, and page-size options.
|
|
86
|
+
* @returns At most `limit + 1` rows so the caller can derive a next cursor.
|
|
87
|
+
*/
|
|
88
|
+
export declare function search(db: Db.Db, options: search.Options): Promise<search.Result[]>;
|
|
89
|
+
export declare namespace search {
|
|
90
|
+
/** Cursor fields for the last organization returned by the previous page. */
|
|
91
|
+
type Cursor = {
|
|
92
|
+
/** Organization creation time. */
|
|
93
|
+
createdAt: string;
|
|
94
|
+
/** Organization id, used as a deterministic tie-breaker. */
|
|
95
|
+
id: string;
|
|
96
|
+
};
|
|
97
|
+
/** Options for {@link search}. */
|
|
98
|
+
type Options = {
|
|
99
|
+
/** Last organization returned by the previous page. */
|
|
100
|
+
cursor?: Cursor | undefined;
|
|
101
|
+
/** Requested page size. */
|
|
102
|
+
limit: number;
|
|
103
|
+
/** Exact resource id or case-insensitive name/email prefix search. */
|
|
104
|
+
query?: string | undefined;
|
|
105
|
+
};
|
|
106
|
+
/** Organization summary returned by {@link search}. */
|
|
107
|
+
type Result = Record & {
|
|
108
|
+
/** Number of current organization members. */
|
|
109
|
+
memberCount: number;
|
|
110
|
+
/** Number of projects owned by the organization. */
|
|
111
|
+
projectCount: number;
|
|
112
|
+
};
|
|
113
|
+
}
|
|
72
114
|
/**
|
|
73
115
|
* Lists organizations owned by `userId`, newest first.
|
|
74
116
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../../src/db/tables/organizations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"organizations.d.ts","sourceRoot":"","sources":["../../../src/db/tables/organizations.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { sql } from 'kysely';
|
|
1
2
|
import * as Id from '../../internal/Id.js';
|
|
2
3
|
/**
|
|
3
4
|
* Inserts an organization and returns the stored record. The `id` defaults to
|
|
@@ -93,6 +94,39 @@ export function deleteOrganization(db, id) {
|
|
|
93
94
|
export function get(db, id) {
|
|
94
95
|
return db.kysely.selectFrom('organizations').selectAll().where('id', '=', id).executeTakeFirst();
|
|
95
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Reads an organization with current member and project counts.
|
|
99
|
+
*
|
|
100
|
+
* @param db - The database.
|
|
101
|
+
* @param id - The organization id.
|
|
102
|
+
* @returns The organization summary, or `undefined` when absent.
|
|
103
|
+
*/
|
|
104
|
+
export async function getSummary(db, id) {
|
|
105
|
+
const record = await db.kysely
|
|
106
|
+
.selectFrom('organizations')
|
|
107
|
+
.selectAll('organizations')
|
|
108
|
+
.select((eb) => [
|
|
109
|
+
eb
|
|
110
|
+
.selectFrom('memberships')
|
|
111
|
+
.select((builder) => builder.fn.countAll().as('count'))
|
|
112
|
+
.whereRef('memberships.orgId', '=', 'organizations.id')
|
|
113
|
+
.as('memberCount'),
|
|
114
|
+
eb
|
|
115
|
+
.selectFrom('projects')
|
|
116
|
+
.select((builder) => builder.fn.countAll().as('count'))
|
|
117
|
+
.whereRef('projects.orgId', '=', 'organizations.id')
|
|
118
|
+
.as('projectCount'),
|
|
119
|
+
])
|
|
120
|
+
.where('organizations.id', '=', id)
|
|
121
|
+
.executeTakeFirst();
|
|
122
|
+
if (!record)
|
|
123
|
+
return undefined;
|
|
124
|
+
return {
|
|
125
|
+
...record,
|
|
126
|
+
memberCount: Number(record.memberCount),
|
|
127
|
+
projectCount: Number(record.projectCount),
|
|
128
|
+
};
|
|
129
|
+
}
|
|
96
130
|
/**
|
|
97
131
|
* Lists organizations, newest first.
|
|
98
132
|
*
|
|
@@ -102,6 +136,75 @@ export function get(db, id) {
|
|
|
102
136
|
export function list(db) {
|
|
103
137
|
return db.kysely.selectFrom('organizations').selectAll().orderBy('createdAt', 'desc').execute();
|
|
104
138
|
}
|
|
139
|
+
/**
|
|
140
|
+
* Searches organizations for the admin lookup surface, newest first. Results
|
|
141
|
+
* include member and project counts and use a stable `(createdAt, id)` keyset.
|
|
142
|
+
*
|
|
143
|
+
* @param db - The database.
|
|
144
|
+
* @param options - Search, keyset, and page-size options.
|
|
145
|
+
* @returns At most `limit + 1` rows so the caller can derive a next cursor.
|
|
146
|
+
*/
|
|
147
|
+
export async function search(db, options) {
|
|
148
|
+
const { cursor, limit, query: searchQuery } = options;
|
|
149
|
+
let query = db.kysely
|
|
150
|
+
.selectFrom('organizations')
|
|
151
|
+
.selectAll('organizations')
|
|
152
|
+
.select((eb) => [
|
|
153
|
+
eb
|
|
154
|
+
.selectFrom('memberships')
|
|
155
|
+
.select((builder) => builder.fn.countAll().as('count'))
|
|
156
|
+
.whereRef('memberships.orgId', '=', 'organizations.id')
|
|
157
|
+
.as('memberCount'),
|
|
158
|
+
eb
|
|
159
|
+
.selectFrom('projects')
|
|
160
|
+
.select((builder) => builder.fn.countAll().as('count'))
|
|
161
|
+
.whereRef('projects.orgId', '=', 'organizations.id')
|
|
162
|
+
.as('projectCount'),
|
|
163
|
+
]);
|
|
164
|
+
if (searchQuery?.startsWith('org_'))
|
|
165
|
+
query = query.where('organizations.id', '=', searchQuery);
|
|
166
|
+
else if (searchQuery?.startsWith('usr_'))
|
|
167
|
+
query = query.where((eb) => eb.or([
|
|
168
|
+
eb('organizations.userId', '=', searchQuery),
|
|
169
|
+
eb('organizations.id', 'in', eb
|
|
170
|
+
.selectFrom('memberships')
|
|
171
|
+
.select('memberships.orgId')
|
|
172
|
+
.where('memberships.userId', '=', searchQuery)),
|
|
173
|
+
]));
|
|
174
|
+
else if (searchQuery) {
|
|
175
|
+
const pattern = `${searchQuery
|
|
176
|
+
.toLowerCase()
|
|
177
|
+
.replaceAll('\\', '\\\\')
|
|
178
|
+
.replaceAll('%', '\\%')
|
|
179
|
+
.replaceAll('_', '\\_')}%`;
|
|
180
|
+
query = query.where((eb) => eb.or([
|
|
181
|
+
sql `lower(${sql.ref('organizations.name')}) LIKE ${pattern} ESCAPE '\\'`,
|
|
182
|
+
eb('organizations.id', 'in', eb
|
|
183
|
+
.selectFrom('memberships')
|
|
184
|
+
.innerJoin('users', 'users.id', 'memberships.userId')
|
|
185
|
+
.select('memberships.orgId')
|
|
186
|
+
.where(sql `lower(${sql.ref('users.email')}) LIKE ${pattern} ESCAPE '\\'`)),
|
|
187
|
+
]));
|
|
188
|
+
}
|
|
189
|
+
if (cursor)
|
|
190
|
+
query = query.where((eb) => eb.or([
|
|
191
|
+
eb('organizations.createdAt', '<', cursor.createdAt),
|
|
192
|
+
eb.and([
|
|
193
|
+
eb('organizations.createdAt', '=', cursor.createdAt),
|
|
194
|
+
eb('organizations.id', '<', cursor.id),
|
|
195
|
+
]),
|
|
196
|
+
]));
|
|
197
|
+
const records = await query
|
|
198
|
+
.orderBy('organizations.createdAt', 'desc')
|
|
199
|
+
.orderBy('organizations.id', 'desc')
|
|
200
|
+
.limit(limit + 1)
|
|
201
|
+
.execute();
|
|
202
|
+
return records.map((record) => ({
|
|
203
|
+
...record,
|
|
204
|
+
memberCount: Number(record.memberCount),
|
|
205
|
+
projectCount: Number(record.projectCount),
|
|
206
|
+
}));
|
|
207
|
+
}
|
|
105
208
|
/**
|
|
106
209
|
* Lists organizations owned by `userId`, newest first.
|
|
107
210
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../../src/db/tables/organizations.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"organizations.js","sourceRoot":"","sources":["../../../src/db/tables/organizations.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,31 @@ export declare function get(db: Db.Db, id: string): Promise<Record | undefined>;
|
|
|
46
46
|
* @returns The records.
|
|
47
47
|
*/
|
|
48
48
|
export declare function listByOrg(db: Db.Db, orgId: string): Promise<Record[]>;
|
|
49
|
+
/**
|
|
50
|
+
* Lists a bounded page of an organization's projects, newest first.
|
|
51
|
+
*
|
|
52
|
+
* @param db - The database.
|
|
53
|
+
* @param orgId - The organization id.
|
|
54
|
+
* @param options - Keyset and page-size options.
|
|
55
|
+
* @returns At most `limit + 1` rows for next-cursor derivation.
|
|
56
|
+
*/
|
|
57
|
+
export declare function listByOrgPage(db: Db.Db, orgId: string, options: listByOrgPage.Options): Promise<Record[]>;
|
|
58
|
+
export declare namespace listByOrgPage {
|
|
59
|
+
/** Cursor fields for the last project on the previous page. */
|
|
60
|
+
type Cursor = {
|
|
61
|
+
/** Project creation time. */
|
|
62
|
+
createdAt: string;
|
|
63
|
+
/** Project id, used as a deterministic tie-breaker. */
|
|
64
|
+
id: string;
|
|
65
|
+
};
|
|
66
|
+
/** Options for {@link listByOrgPage}. */
|
|
67
|
+
type Options = {
|
|
68
|
+
/** Last project returned by the previous page. */
|
|
69
|
+
cursor?: Cursor | undefined;
|
|
70
|
+
/** Requested page size. */
|
|
71
|
+
limit: number;
|
|
72
|
+
};
|
|
73
|
+
}
|
|
49
74
|
/**
|
|
50
75
|
* Renames a project, bumping `updatedAt`.
|
|
51
76
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/db/tables/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,KAAK,SAAS,MAAM,cAAc,CAAA;AAE9C,sEAAsE;AACtE,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAA;AAErC,4BAA4B;AAC5B,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAEtC;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAatE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,gDAAgD;IAChD,KAAK,KAAK,GAAG;QACX,mCAAmC;QACnC,IAAI,EAAE,MAAM,CAAA;QACZ,wCAAwC;QACxC,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3E;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOrE;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO9F;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,8BAA8B;IAC9B,KAAK,KAAK,GAAG;QACX,uCAAuC;QACvC,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF"}
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../../src/db/tables/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAGxC,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,KAAK,SAAS,MAAM,cAAc,CAAA;AAE9C,sEAAsE;AACtE,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,OAAO,CAAA;AAErC,4BAA4B;AAC5B,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAEtC;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAatE;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,gDAAgD;IAChD,KAAK,KAAK,GAAG;QACX,mCAAmC;QACnC,IAAI,EAAE,MAAM,CAAA;QACZ,wCAAwC;QACxC,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAG3E;AAED;;;;;;GAMG;AACH,wBAAgB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAEtE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAOrE;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,CAAC,OAAO,GAC7B,OAAO,CAAC,MAAM,EAAE,CAAC,CAenB;AAED,MAAM,CAAC,OAAO,WAAW,aAAa,CAAC;IACrC,+DAA+D;IAC/D,KAAK,MAAM,GAAG;QACZ,6BAA6B;QAC7B,SAAS,EAAE,MAAM,CAAA;QACjB,uDAAuD;QACvD,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IAED,yCAAyC;IACzC,KAAK,OAAO,GAAG;QACb,kDAAkD;QAClD,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,2BAA2B;QAC3B,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;CACF;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO9F;AAED,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,8BAA8B;IAC9B,KAAK,KAAK,GAAG;QACX,uCAAuC;QACvC,IAAI,EAAE,MAAM,CAAA;KACb,CAAA;CACF"}
|
|
@@ -56,6 +56,28 @@ export function listByOrg(db, orgId) {
|
|
|
56
56
|
.orderBy('createdAt', 'desc')
|
|
57
57
|
.execute();
|
|
58
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Lists a bounded page of an organization's projects, newest first.
|
|
61
|
+
*
|
|
62
|
+
* @param db - The database.
|
|
63
|
+
* @param orgId - The organization id.
|
|
64
|
+
* @param options - Keyset and page-size options.
|
|
65
|
+
* @returns At most `limit + 1` rows for next-cursor derivation.
|
|
66
|
+
*/
|
|
67
|
+
export function listByOrgPage(db, orgId, options) {
|
|
68
|
+
const cursor = options.cursor;
|
|
69
|
+
let query = db.kysely.selectFrom('projects').selectAll().where('orgId', '=', orgId);
|
|
70
|
+
if (cursor)
|
|
71
|
+
query = query.where((eb) => eb.or([
|
|
72
|
+
eb('createdAt', '<', cursor.createdAt),
|
|
73
|
+
eb.and([eb('createdAt', '=', cursor.createdAt), eb('id', '<', cursor.id)]),
|
|
74
|
+
]));
|
|
75
|
+
return query
|
|
76
|
+
.orderBy('createdAt', 'desc')
|
|
77
|
+
.orderBy('id', 'desc')
|
|
78
|
+
.limit(options.limit + 1)
|
|
79
|
+
.execute();
|
|
80
|
+
}
|
|
59
81
|
/**
|
|
60
82
|
* Renames a project, bumping `updatedAt`.
|
|
61
83
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/db/tables/projects.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAU1C;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,EAAS,EAAE,KAAmB;IACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACpC,OAAO,EAAE,CAAC,MAAM;SACb,UAAU,CAAC,UAAU,CAAC;SACtB,MAAM,CAAC;QACN,SAAS,EAAE,GAAG;QACd,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,GAAG;KACf,CAAC;SACD,YAAY,EAAE;SACd,uBAAuB,EAAE,CAAA;AAC9B,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAS,EAAE,EAAU;IACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAA;IAC7F,OAAO,MAAM,CAAC,cAAc,GAAG,EAAE,CAAA;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,EAAS,EAAE,EAAU;IACvC,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAA;AAC7F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,EAAS,EAAE,KAAa;IAChD,OAAO,EAAE,CAAC,MAAM;SACb,UAAU,CAAC,UAAU,CAAC;SACtB,SAAS,EAAE;SACX,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC;SAC1B,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;SAC5B,OAAO,EAAE,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,EAAS,EAAE,EAAU,EAAE,KAAmB;IAC/D,OAAO,EAAE,CAAC,MAAM;SACb,WAAW,CAAC,UAAU,CAAC;SACvB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;SAC9D,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;SACpB,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;AACvB,CAAC"}
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../../src/db/tables/projects.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAU1C;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,EAAS,EAAE,KAAmB;IACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACpC,OAAO,EAAE,CAAC,MAAM;SACb,UAAU,CAAC,UAAU,CAAC;SACtB,MAAM,CAAC;QACN,SAAS,EAAE,GAAG;QACd,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,SAAS,EAAE,GAAG;KACf,CAAC;SACD,YAAY,EAAE;SACd,uBAAuB,EAAE,CAAA;AAC9B,CAAC;AAYD;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAS,EAAE,EAAU;IACvD,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAA;IAC7F,OAAO,MAAM,CAAC,cAAc,GAAG,EAAE,CAAA;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,GAAG,CAAC,EAAS,EAAE,EAAU;IACvC,OAAO,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,gBAAgB,EAAE,CAAA;AAC7F,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAC,EAAS,EAAE,KAAa;IAChD,OAAO,EAAE,CAAC,MAAM;SACb,UAAU,CAAC,UAAU,CAAC;SACtB,SAAS,EAAE;SACX,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC;SAC1B,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;SAC5B,OAAO,EAAE,CAAA;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAC3B,EAAS,EACT,KAAa,EACb,OAA8B;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAC7B,IAAI,KAAK,GAAG,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,KAAK,CAAC,CAAA;IACnF,IAAI,MAAM;QACR,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CACzB,EAAE,CAAC,EAAE,CAAC;YACJ,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;YACtC,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;SAC3E,CAAC,CACH,CAAA;IACH,OAAO,KAAK;SACT,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC;SAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC;SACxB,OAAO,EAAE,CAAA;AACd,CAAC;AAoBD;;;;;;;GAOG;AACH,MAAM,UAAU,MAAM,CAAC,EAAS,EAAE,EAAU,EAAE,KAAmB;IAC/D,OAAO,EAAE,CAAC,MAAM;SACb,WAAW,CAAC,UAAU,CAAC;SACvB,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;SAC9D,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;SACpB,YAAY,EAAE;SACd,gBAAgB,EAAE,CAAA;AACvB,CAAC"}
|
|
@@ -6,6 +6,8 @@ import type * as db_Schema from '../Schema.js';
|
|
|
6
6
|
export type Table = db_Schema.WebhookDelivery;
|
|
7
7
|
/** A stored webhook-delivery row. */
|
|
8
8
|
export type Record = Selectable<Table>;
|
|
9
|
+
/** A failed delivery joined to its organization-owned subscription. */
|
|
10
|
+
export type OrganizationFailure = Pick<Record, 'attempt' | 'createdAt' | 'error' | 'id' | 'responseStatus' | 'subscriptionId'>;
|
|
9
11
|
/** Maps a stored row to the domain delivery (null columns → absent fields). */
|
|
10
12
|
export declare function toDelivery(row: Record): Webhooks.Delivery;
|
|
11
13
|
/**
|
|
@@ -27,6 +29,30 @@ export declare function insert(db: Db.Db, delivery: Webhooks.Delivery, expiresAt
|
|
|
27
29
|
* @returns The deliveries.
|
|
28
30
|
*/
|
|
29
31
|
export declare function list(db: Db.Db, subscriptionId: string, options: list.Options): Promise<Webhooks.Delivery[]>;
|
|
32
|
+
/** Lists recent failed webhook deliveries across an organization. */
|
|
33
|
+
export declare function listFailuresByOrg(db: Db.Db, orgId: string, options: listFailuresByOrg.Options): Promise<OrganizationFailure[]>;
|
|
34
|
+
export declare namespace listFailuresByOrg {
|
|
35
|
+
/** Bounds for the organization failure scan. */
|
|
36
|
+
type Options = {
|
|
37
|
+
/** Window start (ISO 8601), inclusive. */
|
|
38
|
+
from: string;
|
|
39
|
+
/** Maximum failures to return. */
|
|
40
|
+
limit: number;
|
|
41
|
+
/** ISO timestamp retention is evaluated against. */
|
|
42
|
+
now: string;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Counts failed webhook deliveries across an organization in a time window. */
|
|
46
|
+
export declare function countFailuresByOrg(db: Db.Db, orgId: string, options: countFailuresByOrg.Options): Promise<number>;
|
|
47
|
+
export declare namespace countFailuresByOrg {
|
|
48
|
+
/** Bounds for the organization failure count. */
|
|
49
|
+
type Options = {
|
|
50
|
+
/** Window start (ISO 8601), inclusive. */
|
|
51
|
+
from: string;
|
|
52
|
+
/** ISO timestamp retention is evaluated against. */
|
|
53
|
+
now: string;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
30
56
|
export declare namespace list {
|
|
31
57
|
/** Options for {@link list}. */
|
|
32
58
|
type Options = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookDeliveries.d.ts","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAExC,OAAO,KAAK,KAAK,QAAQ,MAAM,4BAA4B,CAAA;AAC3D,OAAO,KAAK,KAAK,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,KAAK,KAAK,SAAS,MAAM,cAAc,CAAA;AAE9C,wFAAwF;AACxF,MAAM,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAA;AAE7C,qCAAqC;AACrC,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;AAEtC,+EAA+E;AAC/E,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ,CAczD;AAED;;;;;;GAMG;AACH,wBAAsB,MAAM,CAC1B,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;;;;;;;GASG;AACH,wBAAsB,IAAI,CACxB,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,cAAc,EAAE,MAAM,EACtB,OAAO,EAAE,IAAI,CAAC,OAAO,GACpB,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAW9B;AAED,MAAM,CAAC,OAAO,WAAW,IAAI,CAAC;IAC5B,gCAAgC;IAChC,KAAK,OAAO,GAAG;QACb,wEAAwE;QACxE,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC3B,oCAAoC;QACpC,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC1B,oDAAoD;QACpD,GAAG,EAAE,MAAM,CAAA;QACX,mFAAmF;QACnF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;KAC5B,CAAA;CACF;AAED;;;;;;;GAOG;AACH,wBAAsB,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAQ3F;AAED;;;;;;;;GAQG;AACH,wBAAsB,GAAG,CACvB,EAAE,EAAE,EAAE,CAAC,EAAE,EACT,cAAc,EAAE,MAAM,EACtB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,CASnC;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E"}
|
|
1
|
+
{"version":3,"file":"webhookDeliveries.d.ts","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"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"}
|
|
@@ -65,6 +65,43 @@ export async function list(db, subscriptionId, options) {
|
|
|
65
65
|
query = query.limit(options.limit);
|
|
66
66
|
return (await query.execute()).map(toDelivery);
|
|
67
67
|
}
|
|
68
|
+
/** Lists recent failed webhook deliveries across an organization. */
|
|
69
|
+
export function listFailuresByOrg(db, orgId, options) {
|
|
70
|
+
return db.kysely
|
|
71
|
+
.selectFrom('webhook_deliveries')
|
|
72
|
+
.innerJoin('webhook_subscriptions', 'webhook_subscriptions.id', 'webhook_deliveries.subscriptionId')
|
|
73
|
+
.select([
|
|
74
|
+
'webhook_deliveries.attempt',
|
|
75
|
+
'webhook_deliveries.createdAt',
|
|
76
|
+
'webhook_deliveries.error',
|
|
77
|
+
'webhook_deliveries.id',
|
|
78
|
+
'webhook_deliveries.responseStatus',
|
|
79
|
+
'webhook_deliveries.subscriptionId',
|
|
80
|
+
])
|
|
81
|
+
.where('webhook_subscriptions.ownerId', '=', orgId)
|
|
82
|
+
.where('webhook_subscriptions.ownerType', '=', 'api_key')
|
|
83
|
+
.where('webhook_deliveries.createdAt', '>=', options.from)
|
|
84
|
+
.where('webhook_deliveries.expiresAt', '>', options.now)
|
|
85
|
+
.where('webhook_deliveries.status', '=', 'failed')
|
|
86
|
+
.orderBy('webhook_deliveries.createdAt', 'desc')
|
|
87
|
+
.orderBy('webhook_deliveries.id', 'desc')
|
|
88
|
+
.limit(options.limit)
|
|
89
|
+
.execute();
|
|
90
|
+
}
|
|
91
|
+
/** Counts failed webhook deliveries across an organization in a time window. */
|
|
92
|
+
export async function countFailuresByOrg(db, orgId, options) {
|
|
93
|
+
const row = await db.kysely
|
|
94
|
+
.selectFrom('webhook_deliveries')
|
|
95
|
+
.innerJoin('webhook_subscriptions', 'webhook_subscriptions.id', 'webhook_deliveries.subscriptionId')
|
|
96
|
+
.select((eb) => eb.fn.countAll().as('count'))
|
|
97
|
+
.where('webhook_subscriptions.ownerId', '=', orgId)
|
|
98
|
+
.where('webhook_subscriptions.ownerType', '=', 'api_key')
|
|
99
|
+
.where('webhook_deliveries.createdAt', '>=', options.from)
|
|
100
|
+
.where('webhook_deliveries.expiresAt', '>', options.now)
|
|
101
|
+
.where('webhook_deliveries.status', '=', 'failed')
|
|
102
|
+
.executeTakeFirstOrThrow();
|
|
103
|
+
return Number(row.count);
|
|
104
|
+
}
|
|
68
105
|
/**
|
|
69
106
|
* Counts a subscription's unexpired deliveries.
|
|
70
107
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webhookDeliveries.js","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"webhookDeliveries.js","sourceRoot":"","sources":["../../../src/db/tables/webhookDeliveries.ts"],"names":[],"mappings":"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"}
|
package/dist/internal/Auth.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export type Context = {
|
|
|
28
28
|
resolve: (c: hono_Context, token: string) => Promise<ApiKey.ApiKey | null>;
|
|
29
29
|
} | undefined;
|
|
30
30
|
/** MPP payment configuration. */
|
|
31
|
-
mpp?:
|
|
31
|
+
mpp?: MppHandler | undefined;
|
|
32
32
|
/**
|
|
33
33
|
* Configured default anonymous public quota. Used as the throttle ceiling for
|
|
34
34
|
* sandbox keys without active billing on routes that expose no public lane
|
|
@@ -65,21 +65,26 @@ export type Payment = {
|
|
|
65
65
|
/** Payment protocol kind. */
|
|
66
66
|
type: 'mpp';
|
|
67
67
|
};
|
|
68
|
-
/** MPP
|
|
69
|
-
export
|
|
70
|
-
/**
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
68
|
+
/** MPP route-policy types. Distinct from the SIWE {@link Session} capability. */
|
|
69
|
+
export declare namespace Mpp {
|
|
70
|
+
/** MPP Session request options used by route access policies. */
|
|
71
|
+
type Session = Method.RequestDefaults<ReturnType<typeof tempo.session>> & {
|
|
72
|
+
/** Optional human-readable payment description. */
|
|
73
|
+
description?: string | undefined;
|
|
74
|
+
/** Optional challenge expiration timestamp or date. */
|
|
75
|
+
expires?: Date | string | undefined;
|
|
76
|
+
/** Optional server-defined correlation data. */
|
|
77
|
+
meta?: Record<string, string> | undefined;
|
|
78
|
+
/** Optional route/resource scope bound to the challenge. */
|
|
79
|
+
scope?: string | undefined;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
79
82
|
/** MPP payment handler consumed by auth policies. */
|
|
80
|
-
type
|
|
81
|
-
/**
|
|
82
|
-
|
|
83
|
+
type MppHandler = {
|
|
84
|
+
/** Paid-request quota per access principal. */
|
|
85
|
+
rateLimit?: RateLimit.Limit | undefined;
|
|
86
|
+
/** Creates a Hono middleware for a Tempo Session payment. */
|
|
87
|
+
session(options: Mpp.Session): MiddlewareHandler;
|
|
83
88
|
};
|
|
84
89
|
/**
|
|
85
90
|
* Route-level auth policy override. Each lane is independent: `true` enables it
|
|
@@ -98,10 +103,12 @@ export type PolicyOverride = {
|
|
|
98
103
|
/** Required API-key scopes override for this route. */
|
|
99
104
|
scopes?: readonly Scope.Id[] | undefined;
|
|
100
105
|
} | boolean | undefined;
|
|
101
|
-
/** MPP paid lane: object to override the
|
|
106
|
+
/** MPP paid lane: object to override the Session request, or boolean to enable/disable. */
|
|
102
107
|
mpp?: {
|
|
103
|
-
/**
|
|
104
|
-
|
|
108
|
+
/** Paid-request quota override for this route (a protective per-route cap). */
|
|
109
|
+
rateLimit?: RateLimit.Limit | undefined;
|
|
110
|
+
/** Tempo Session request override for this route. */
|
|
111
|
+
session?: Mpp.Session | undefined;
|
|
105
112
|
} | boolean | undefined;
|
|
106
113
|
/** Public lane: object to override the quota, or boolean to enable/disable. */
|
|
107
114
|
public?: {
|
|
@@ -123,7 +130,7 @@ export type Principal = {
|
|
|
123
130
|
orgId: string;
|
|
124
131
|
/** Payment metadata for paid overflow requests. */
|
|
125
132
|
payment?: Payment | undefined;
|
|
126
|
-
/**
|
|
133
|
+
/** Attributed project id, when present. */
|
|
127
134
|
projectId?: string | undefined;
|
|
128
135
|
/** Principal kind. */
|
|
129
136
|
type: 'api_key';
|
|
@@ -164,9 +171,9 @@ export type Principal = {
|
|
|
164
171
|
export type Variables = {
|
|
165
172
|
/** Auth context consumed by protected handlers. */
|
|
166
173
|
auth: Context;
|
|
167
|
-
/** Caller's membership resolved by {@link ensureOrg}; absent for `super_admin`. */
|
|
174
|
+
/** Caller's membership resolved by {@link ensureOrg} or {@link ensureProject}; absent for API keys and `super_admin`. */
|
|
168
175
|
membership?: Memberships.Record | undefined;
|
|
169
|
-
/** Organization resolved by {@link ensureOrg} for the current request. */
|
|
176
|
+
/** Organization resolved by {@link ensureOrg} or {@link ensureProject} for the current request. */
|
|
170
177
|
org?: Organizations.Record | undefined;
|
|
171
178
|
/** Authenticated or anonymous caller. */
|
|
172
179
|
principal?: Principal | undefined;
|
|
@@ -178,27 +185,18 @@ export declare function getPrincipal<environment extends Environment>(c: hono_Co
|
|
|
178
185
|
Variables: import("hono").ContextVariableMap & Record<string, any>;
|
|
179
186
|
} : environment)["Variables"]["principal"]> | null;
|
|
180
187
|
/**
|
|
181
|
-
* Guards
|
|
182
|
-
* are members of; the super admin reaches any. Missing or foreign
|
|
183
|
-
* organizations return `404`, so foreign org ids are indistinguishable from
|
|
184
|
-
* absent ones; a member below the required role gets `403` (the resource is
|
|
185
|
-
* visible to them, the action is not). The resolved organization and
|
|
186
|
-
* membership land on context — read them with {@link org} and
|
|
187
|
-
* {@link membership}.
|
|
188
|
+
* Guards `:orgId` routes and resolves the organization. Sessions require membership, API keys require ownership, and the super admin bypasses ownership.
|
|
188
189
|
*/
|
|
189
190
|
export declare function ensureOrg(options?: ensureOrg.Options): MiddlewareHandler;
|
|
190
191
|
export declare namespace ensureOrg {
|
|
191
192
|
/** Options for the org guard. */
|
|
192
193
|
type Options = {
|
|
193
|
-
/** Minimum role
|
|
194
|
+
/** Minimum session role; defaults to `member`. */
|
|
194
195
|
role?: Memberships.Role | undefined;
|
|
195
196
|
};
|
|
196
197
|
}
|
|
197
198
|
/**
|
|
198
|
-
* Guards project
|
|
199
|
-
* which must run first. Projects resolve only within the scoped organization;
|
|
200
|
-
* missing or cross-org projects return `404`. The resolved project lands on
|
|
201
|
-
* context — read it with {@link project}.
|
|
199
|
+
* Guards `:projectId` routes and resolves the project. Flat routes authorize against its organization; nested routes preserve the scope from {@link ensureOrg}.
|
|
202
200
|
*/
|
|
203
201
|
export declare function ensureProject(): MiddlewareHandler;
|
|
204
202
|
/**
|
|
@@ -225,9 +223,9 @@ export declare function ensureProjectError(c: hono_Context): Response & import("
|
|
|
225
223
|
};
|
|
226
224
|
requestId: string;
|
|
227
225
|
}, 404, "json">;
|
|
228
|
-
/** Reads the caller's membership resolved by
|
|
226
|
+
/** Reads the caller's membership resolved by the organization or project guard; `undefined` for API keys and `super_admin`. */
|
|
229
227
|
export declare function membership<environment extends Environment>(c: hono_Context<environment>): Memberships.Record | undefined;
|
|
230
|
-
/** Reads the organization resolved by
|
|
228
|
+
/** Reads the organization resolved by the organization or project guard; throws when neither middleware ran. */
|
|
231
229
|
export declare function org<environment extends Environment>(c: hono_Context<environment>): Organizations.Record;
|
|
232
230
|
/** Reads the project resolved by {@link ensureProject}; throws when the middleware did not run. */
|
|
233
231
|
export declare function project<environment extends Environment>(c: hono_Context<environment>): Projects.Record;
|
|
@@ -351,6 +349,8 @@ export declare namespace middleware {
|
|
|
351
349
|
} | false | undefined;
|
|
352
350
|
/** Rate-limit store options. */
|
|
353
351
|
rateLimit?: RateLimit.memory.Options | undefined;
|
|
352
|
+
/** Scope catalog accepted while resolving API-key records. */
|
|
353
|
+
scopeCatalog?: Scope.Catalog | undefined;
|
|
354
354
|
/** Session lane resolution — the session surface's capability; omit to leave the session lane closed. */
|
|
355
355
|
session?: Session | undefined;
|
|
356
356
|
/**
|
|
@@ -373,8 +373,10 @@ export declare namespace middleware {
|
|
|
373
373
|
};
|
|
374
374
|
/** MPP payment options used by auth middleware. */
|
|
375
375
|
type MppOptions = Omit<NonNullable<Parameters<typeof Mppx.create>[0]>, 'methods'> & {
|
|
376
|
-
/**
|
|
377
|
-
|
|
376
|
+
/** Paid-request quota per access principal. Defaults to 100 per minute. */
|
|
377
|
+
rateLimit?: RateLimit.Limit | undefined;
|
|
378
|
+
/** Global Tempo Session options passed to the MPP method instantiator. */
|
|
379
|
+
session?: NonNullable<Parameters<typeof tempo.session>[0]> | undefined;
|
|
378
380
|
};
|
|
379
381
|
}
|
|
380
382
|
/**
|
|
@@ -392,7 +394,7 @@ export declare function install(options: install.Options): {
|
|
|
392
394
|
export declare namespace install {
|
|
393
395
|
/** Options for building the built-in auth pieces. */
|
|
394
396
|
type Options = {
|
|
395
|
-
auth: (Omit<middleware.Options, 'session'> & {
|
|
397
|
+
auth: (Omit<middleware.Options, 'scopeCatalog' | 'session'> & {
|
|
396
398
|
/** Session sign-in surface: mounts `/v1/auth/siwe` (challenge/verify/logout) and enables the session lane. Pass true for defaults or a config object. Requires `kv`. */
|
|
397
399
|
session?: Session | undefined;
|
|
398
400
|
}) | false | undefined;
|
|
@@ -402,6 +404,8 @@ export declare namespace install {
|
|
|
402
404
|
kv: {
|
|
403
405
|
store: Store.State;
|
|
404
406
|
} | undefined;
|
|
407
|
+
/** Scope catalog accepted while resolving API-key records. */
|
|
408
|
+
scopeCatalog: Scope.Catalog;
|
|
405
409
|
};
|
|
406
410
|
/** Session sign-in surface configuration: `true` for defaults, or a config object. */
|
|
407
411
|
type Session = boolean | {
|
|
@@ -486,8 +490,10 @@ export declare namespace require {
|
|
|
486
490
|
} | undefined;
|
|
487
491
|
/** MPP payment access policy. */
|
|
488
492
|
mpp?: {
|
|
489
|
-
/**
|
|
490
|
-
|
|
493
|
+
/** Paid-request quota override for this route (a protective per-route cap). */
|
|
494
|
+
rateLimit?: RateLimit.Limit | undefined;
|
|
495
|
+
/** Tempo Session request policy. */
|
|
496
|
+
session: Mpp.Session;
|
|
491
497
|
} | undefined;
|
|
492
498
|
/** Public access policy. */
|
|
493
499
|
public?: {
|