@kindgi/platform 0.1.7-rc.0 → 0.1.8-rc.0
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/dist/in-memory/project-binding.d.ts +8 -3
- package/dist/in-memory/project-binding.d.ts.map +1 -1
- package/dist/in-memory/project-binding.js +34 -0
- package/dist/in-memory/project-binding.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/project-binding.d.ts +38 -1
- package/dist/project-binding.d.ts.map +1 -1
- package/dist/tenant-hierarchy-binding.d.ts +40 -0
- package/dist/tenant-hierarchy-binding.d.ts.map +1 -1
- package/dist/types.d.ts +7 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/src/in-memory/project-binding.ts +41 -3
- package/src/index.ts +2 -0
- package/src/project-binding.ts +46 -1
- package/src/tenant-hierarchy-binding.ts +41 -0
- package/src/types.ts +7 -0
- package/tests/in-memory-project-binding.test.ts +18 -1
- package/tests/project-binding.conformance.ts +189 -0
|
@@ -18,12 +18,17 @@ import type { OrgId, TenantId } from '@kindgi/types';
|
|
|
18
18
|
import type { ProjectBinding, ProjectMembershipBinding } from '../project-binding.js';
|
|
19
19
|
import type { TeamProjectGrantBinding } from '../team-project-grant-binding.js';
|
|
20
20
|
/**
|
|
21
|
-
* `orgExists`: whether an org is the tenant's (live). Given, a project or
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* - `orgExists`: whether an org is the tenant's (live). Given, a project or
|
|
22
|
+
* team created in or moved to another org is `org-not-found`, as the
|
|
23
|
+
* durable bindings answer; absent, any `orgId` is taken as it is.
|
|
24
|
+
* - `productionLimit`: the tenant's limit on projects in production
|
|
25
|
+
* (`TenantLimits.projectsInProduction`), read where it's kept;
|
|
26
|
+
* `undefined` for none. Read synchronously, so `setProduction` reads,
|
|
27
|
+
* counts and changes in one step, as a database's lock makes it.
|
|
24
28
|
*/
|
|
25
29
|
export interface InMemoryHierarchyOptions {
|
|
26
30
|
readonly orgExists?: (tenantId: TenantId, orgId: OrgId) => boolean | Promise<boolean>;
|
|
31
|
+
readonly productionLimit?: (tenantId: TenantId) => number | undefined;
|
|
27
32
|
}
|
|
28
33
|
/**
|
|
29
34
|
* Combined factory — returns the three project-related bindings that
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-binding.d.ts","sourceRoot":"","sources":["../../src/in-memory/project-binding.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAU,KAAK,EAA2B,QAAQ,EAAU,MAAM,eAAe,CAAC;AAE9F,OAAO,KAAK,EACV,cAAc,EAKd,wBAAwB,
|
|
1
|
+
{"version":3,"file":"project-binding.d.ts","sourceRoot":"","sources":["../../src/in-memory/project-binding.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EAAU,KAAK,EAA2B,QAAQ,EAAU,MAAM,eAAe,CAAC;AAE9F,OAAO,KAAK,EACV,cAAc,EAKd,wBAAwB,EAIzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAGV,uBAAuB,EACxB,MAAM,kCAAkC,CAAC;AAwB1C;;;;;;;;GAQG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACtF,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,MAAM,GAAG,SAAS,CAAC;CACvE;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,GAAE,wBAA6B,GAAG;IAClF,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,wBAAwB,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;CAC1C,CAwWA"}
|
|
@@ -28,6 +28,20 @@ export function makeInMemoryProjectBinding(options = {}) {
|
|
|
28
28
|
return undefined;
|
|
29
29
|
return p;
|
|
30
30
|
}
|
|
31
|
+
/** `limit-reached` when the tenant's projects in production are at its limit or past it. */
|
|
32
|
+
function limitReached(tenantId) {
|
|
33
|
+
const limit = options.productionLimit?.(tenantId);
|
|
34
|
+
if (limit === undefined)
|
|
35
|
+
return undefined;
|
|
36
|
+
let inProduction = 0;
|
|
37
|
+
for (const row of projectRows.values()) {
|
|
38
|
+
if (row.tenantId === tenantId && row.productionSince !== undefined)
|
|
39
|
+
inProduction += 1;
|
|
40
|
+
}
|
|
41
|
+
return inProduction >= limit
|
|
42
|
+
? { kind: 'limit-reached', projectsInProduction: limit, inProduction }
|
|
43
|
+
: undefined;
|
|
44
|
+
}
|
|
31
45
|
function tenantAlreadyHasDefault(tenantId) {
|
|
32
46
|
for (const row of projectRows.values()) {
|
|
33
47
|
if (row.tenantId === tenantId && row.isDefault)
|
|
@@ -142,10 +156,30 @@ export function makeInMemoryProjectBinding(options = {}) {
|
|
|
142
156
|
updatedAt: nowTimestamp(),
|
|
143
157
|
...(nextOrgId !== undefined ? { orgId: nextOrgId } : {}),
|
|
144
158
|
...(nextDescription !== undefined ? { description: nextDescription } : {}),
|
|
159
|
+
...(row.productionSince !== undefined ? { productionSince: row.productionSince } : {}),
|
|
145
160
|
};
|
|
146
161
|
projectRows.set(projectId, next);
|
|
147
162
|
return { kind: 'ok' };
|
|
148
163
|
},
|
|
164
|
+
async setProduction(tenantId, projectId, production) {
|
|
165
|
+
const row = findProjectInTenant(tenantId, projectId);
|
|
166
|
+
if (row === undefined)
|
|
167
|
+
return { kind: 'project-not-found' };
|
|
168
|
+
if ((row.productionSince !== undefined) === production) {
|
|
169
|
+
return { kind: 'ok', productionSince: row.productionSince ?? null, changed: false };
|
|
170
|
+
}
|
|
171
|
+
// Read, counted and changed with no await between: one step, as a database's lock makes it.
|
|
172
|
+
const refused = production ? limitReached(tenantId) : undefined;
|
|
173
|
+
if (refused !== undefined)
|
|
174
|
+
return refused;
|
|
175
|
+
const now = nowTimestamp();
|
|
176
|
+
const { productionSince: _was, ...rest } = row;
|
|
177
|
+
const next = production
|
|
178
|
+
? { ...rest, productionSince: now, updatedAt: now }
|
|
179
|
+
: { ...rest, updatedAt: now };
|
|
180
|
+
projectRows.set(projectId, next);
|
|
181
|
+
return { kind: 'ok', productionSince: next.productionSince ?? null, changed: true };
|
|
182
|
+
},
|
|
149
183
|
async delete(tenantId, projectId) {
|
|
150
184
|
const row = findProjectInTenant(tenantId, projectId);
|
|
151
185
|
if (row === undefined)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-binding.js","sourceRoot":"","sources":["../../src/in-memory/project-binding.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"project-binding.js","sourceRoot":"","sources":["../../src/in-memory/project-binding.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,9 +10,9 @@ export type * from './types.js';
|
|
|
10
10
|
export { scopeKey } from './scope.js';
|
|
11
11
|
export type { OrgBinding, OrgCreateOutcome, OrgListFilter, OrgDeleteConflict, OrgUpdateOutcome, } from './org-binding.js';
|
|
12
12
|
export type { TeamBinding, TeamCreateOutcome, TeamListFilter, TeamMembershipAddInput, TeamMembershipAddOutcome, TeamMembershipBinding, TeamMembershipUpdateRoleOutcome, TeamUpdateOutcome, } from './team-binding.js';
|
|
13
|
-
export type { ProjectBinding, ProjectCreateOutcome, ProjectListFilter, ProjectMembershipAddInput, ProjectMembershipAddOutcome, ProjectMembershipBinding, ProjectMembershipUpdateRoleOutcome, ProjectUpdateOutcome, } from './project-binding.js';
|
|
13
|
+
export type { ProjectBinding, ProjectCreateOutcome, ProjectListFilter, ProjectMembershipAddInput, ProjectMembershipAddOutcome, ProjectMembershipBinding, ProjectMembershipUpdateRoleOutcome, ProjectProductionOutcome, ProjectUpdateOutcome, } from './project-binding.js';
|
|
14
14
|
export type { TeamProjectGrant, TeamProjectGrantAddInput, TeamProjectGrantBinding, } from './team-project-grant-binding.js';
|
|
15
15
|
export { makeInMemoryOrgBinding, makeInMemoryTeamBinding, makeInMemoryProjectBinding, } from './in-memory/index.js';
|
|
16
16
|
export type { InMemoryHierarchyOptions } from './in-memory/index.js';
|
|
17
|
-
export type { AddProjectMemberError, AddProjectMemberParams, AddTeamMemberError, AddTeamMemberParams, AddTeamProjectGrantError, AddTeamProjectGrantResult, CreateOrgError, CreateOrgParams, CreateProjectError, CreateProjectParams, CreateTeamError, CreateTeamParams, DeleteTeamParams, MembershipWriteError, RemoveProjectMemberParams, RemoveTeamMemberParams, RemoveTeamProjectGrantParams, TeamProjectGrantParams, TeamProjectGrantUpdateRoleOutcome, TenantHierarchyBinding, TenantSummary, UpdateProjectMemberRoleParams, UpdateTeamMemberRoleParams, } from './tenant-hierarchy-binding.js';
|
|
17
|
+
export type { AddProjectMemberError, AddProjectMemberParams, AddTeamMemberError, AddTeamMemberParams, AddTeamProjectGrantError, AddTeamProjectGrantResult, CreateOrgError, CreateOrgParams, CreateProjectError, CreateProjectParams, CreateTeamError, CreateTeamParams, DeleteTeamParams, MembershipWriteError, RemoveProjectMemberParams, RemoveTeamMemberParams, RemoveTeamProjectGrantParams, TeamProjectGrantParams, TeamProjectGrantUpdateRoleOutcome, TenantHierarchyBinding, TenantLimits, TenantSummary, UpdateProjectMemberRoleParams, UpdateTeamMemberRoleParams, } from './tenant-hierarchy-binding.js';
|
|
18
18
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,+BAA+B,EAC/B,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,kCAAkC,EAClC,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,iCAAiC,EACjC,sBAAsB,EACtB,aAAa,EACb,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA;;;;;;GAMG;AAEH,mBAAmB,YAAY,CAAC;AAChC,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,YAAY,EACV,UAAU,EACV,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,cAAc,EACd,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,+BAA+B,EAC/B,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,yBAAyB,EACzB,2BAA2B,EAC3B,wBAAwB,EACxB,kCAAkC,EAClC,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,yBAAyB,EACzB,sBAAsB,EACtB,4BAA4B,EAC5B,sBAAsB,EACtB,iCAAiC,EACjC,sBAAsB,EACtB,YAAY,EACZ,aAAa,EACb,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAYjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;AAYjC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAoCtC,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC"}
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* get wrong resolve to an outcome discriminated on `kind` instead of
|
|
22
22
|
* rejecting.
|
|
23
23
|
*/
|
|
24
|
-
import type { Filter, OrgId, Page, ProjectId, TenantId, UserId } from '@kindgi/types';
|
|
24
|
+
import type { Filter, OrgId, Page, ProjectId, TenantId, Timestamp, UserId } from '@kindgi/types';
|
|
25
25
|
import type { Project, ProjectMembership, ProjectPatch, ProjectRole, ProjectSpec } from './types.js';
|
|
26
26
|
/**
|
|
27
27
|
* `list` filter for projects. Same shape as `TeamListFilter` — `orgId`
|
|
@@ -83,6 +83,25 @@ export interface ProjectBinding {
|
|
|
83
83
|
* team grants with it.
|
|
84
84
|
*/
|
|
85
85
|
delete(tenantId: TenantId, projectId: ProjectId): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Put the project in production (`production: true`), or take it out.
|
|
88
|
+
* Optional: without it, the production route answers 501
|
|
89
|
+
* `production-unsupported`. Setting what's already set changes nothing:
|
|
90
|
+
* it answers `changed: false` and keeps the first `productionSince`. A
|
|
91
|
+
* runtime that meters usage records each change (`project.production`,
|
|
92
|
+
* `on` or `off`) in the same transaction as the change.
|
|
93
|
+
*
|
|
94
|
+
* With the tenant's limit set (`TenantLimits.projectsInProduction`),
|
|
95
|
+
* putting a project in production reads the limit, counts the tenant's
|
|
96
|
+
* projects already in production, and answers `limit-reached` without a
|
|
97
|
+
* change when they're at the limit or past it. The binding reads the
|
|
98
|
+
* limit itself, where the runtime keeps it, and the read, the count and
|
|
99
|
+
* the change are one step: two projects put in production at once can't
|
|
100
|
+
* both pass on the last place, and a limit changed meanwhile is the one
|
|
101
|
+
* counted against. Taking a project out, and a project already in
|
|
102
|
+
* production, are never counted.
|
|
103
|
+
*/
|
|
104
|
+
setProduction?(tenantId: TenantId, projectId: ProjectId, production: boolean): Promise<ProjectProductionOutcome>;
|
|
86
105
|
}
|
|
87
106
|
/**
|
|
88
107
|
* User↔project direct-grant membership. Additive with team grants
|
|
@@ -141,6 +160,24 @@ export type ProjectCreateOutcome = {
|
|
|
141
160
|
readonly kind: 'org-not-found';
|
|
142
161
|
readonly orgId: OrgId;
|
|
143
162
|
};
|
|
163
|
+
/** What `ProjectBinding.setProduction` did. */
|
|
164
|
+
export type ProjectProductionOutcome = {
|
|
165
|
+
readonly kind: 'ok';
|
|
166
|
+
/** When it went into production; `null` now that it isn't in production. */
|
|
167
|
+
readonly productionSince: Timestamp | null;
|
|
168
|
+
/** `false` when it was already so, and nothing was written. */
|
|
169
|
+
readonly changed: boolean;
|
|
170
|
+
} | {
|
|
171
|
+
/** No project with this id in the tenant. */
|
|
172
|
+
readonly kind: 'project-not-found';
|
|
173
|
+
} | {
|
|
174
|
+
/** Not put in production: the tenant's projects in production are at its limit, or past it. */
|
|
175
|
+
readonly kind: 'limit-reached';
|
|
176
|
+
/** The limit. */
|
|
177
|
+
readonly projectsInProduction: number;
|
|
178
|
+
/** The tenant's projects in production now. */
|
|
179
|
+
readonly inProduction: number;
|
|
180
|
+
};
|
|
144
181
|
/** What `ProjectBinding.update` did. */
|
|
145
182
|
export type ProjectUpdateOutcome = {
|
|
146
183
|
readonly kind: 'ok';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-binding.d.ts","sourceRoot":"","sources":["../src/project-binding.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"project-binding.d.ts","sourceRoot":"","sources":["../src/project-binding.ts"],"names":[],"mappings":"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"}
|
|
@@ -179,6 +179,46 @@ export interface TenantSummary {
|
|
|
179
179
|
readonly slug: string;
|
|
180
180
|
readonly createdAt: string;
|
|
181
181
|
readonly updatedAt: string;
|
|
182
|
+
/**
|
|
183
|
+
* Whether the tenant may put projects in production. Absent means
|
|
184
|
+
* allowed: a runtime that doesn't gate production leaves it out. The
|
|
185
|
+
* production route checks it only when its gate is on.
|
|
186
|
+
*/
|
|
187
|
+
readonly productionAllowed?: boolean;
|
|
188
|
+
/** The tenant's limits that are set. Absent when none is. */
|
|
189
|
+
readonly limits?: TenantLimits;
|
|
190
|
+
/**
|
|
191
|
+
* Where the tenant stands, on a runtime serving many tenants: `closing`
|
|
192
|
+
* (readable and exportable for its window, nothing runs) or `suspended`
|
|
193
|
+
* (the same, reversibly). `closing` wins. Absent: active.
|
|
194
|
+
*/
|
|
195
|
+
readonly state?: 'active' | 'suspended' | 'closing';
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* A tenant's limits, each absent while it isn't set (and then not
|
|
199
|
+
* enforced). Set per tenant by the system API; a self-hosted runtime
|
|
200
|
+
* sets none unless its operator does.
|
|
201
|
+
*/
|
|
202
|
+
export interface TenantLimits {
|
|
203
|
+
/** API requests a minute, as a token bucket. Past it: 429 `rate-limit-exceeded`. */
|
|
204
|
+
readonly apiRequestsPerMinute?: number;
|
|
205
|
+
/** Webhook deliveries received a minute, across the tenant's triggers. Past it: 429. */
|
|
206
|
+
readonly webhookReceivesPerMinute?: number;
|
|
207
|
+
/** Runs executing at once. Past it, a new run waits as `pending`. */
|
|
208
|
+
readonly runsAtOnce?: number;
|
|
209
|
+
/** Runs waiting as `pending`. Past it, a new run is refused with 429. */
|
|
210
|
+
readonly runsPending?: number;
|
|
211
|
+
/** Tool calls in flight to the tenant's pack services. Past it, a call waits for a slot. */
|
|
212
|
+
readonly toolCallsInFlight?: number;
|
|
213
|
+
/** Approvals waiting for a decision. Past it, the step that asks fails, naming the limit. */
|
|
214
|
+
readonly approvalsPending?: number;
|
|
215
|
+
/**
|
|
216
|
+
* Projects in production at once. Past it, putting another project in
|
|
217
|
+
* production is refused with 403 `production-limit-reached`. Lowering it
|
|
218
|
+
* takes no project out of production: with more in production than the
|
|
219
|
+
* limit, the next one waits until enough come out.
|
|
220
|
+
*/
|
|
221
|
+
readonly projectsInProduction?: number;
|
|
182
222
|
}
|
|
183
223
|
/**
|
|
184
224
|
* Tenant-hierarchy CRUD binding. Every route that creates orgs /
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tenant-hierarchy-binding.d.ts","sourceRoot":"","sources":["../src/tenant-hierarchy-binding.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tenant-hierarchy-binding.d.ts","sourceRoot":"","sources":["../src/tenant-hierarchy-binding.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACxF,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACxE,OAAO,KAAK,EACV,OAAO,EACP,WAAW,EACX,WAAW,EACX,eAAe,EACf,QAAQ,EACR,QAAQ,EACT,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,MAAM,cAAc,GACtB;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACtF;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED,MAAM,MAAM,eAAe,GACvB;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;AACxF,4EAA4E;GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACnF;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAC1B;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE;AACxF,4EAA4E;GAC1E;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;CAAE,GACnF;IAAE,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GACzF;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE3F,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,0CAA0C;IAC1C,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,qBAAqB,GAC7B;IACE,6CAA6C;IAC7C,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CAC1B,GACD;IACE,sEAAsE;IACtE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAExF,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,sCAAsC;AACtC,MAAM,WAAW,0BAA2B,SAAQ,sBAAsB;IACxE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC9E,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;CAC5B;AAED,oDAAoD;AACpD,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;CAChC;AAED,iDAAiD;AACjD,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,wBAAwB,GAChC;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1F,mGAAmG;AACnG,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;CAClC;AAED,MAAM,MAAM,iCAAiC,GACzC;IAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAA;CAAE,GACzD;IAAE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAA;CAAE,CAAC;AAE9C,4BAA4B;AAC5B,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,mGAAmG;AACnG,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;;GAKG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IACrC,6DAA6D;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;CACrD;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,wFAAwF;IACxF,QAAQ,CAAC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAC3C,qEAAqE;IACrE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,yEAAyE;IACzE,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,4FAA4F;IAC5F,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IACpC,6FAA6F;IAC7F,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACxC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;KAAE,EAAE,cAAc,CAAC,CAAC,CAAC;IAC/F,UAAU,CACR,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IACjE,aAAa,CACX,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,MAAM,CAAC;QAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;KAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC1E,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC;IACtF,gBAAgB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAC/F;;;;;;OAMG;IACH,gBAAgB,CAAC,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC/F,+FAA+F;IAC/F,oBAAoB,CAAC,CACnB,MAAM,EAAE,0BAA0B,GACjC,OAAO,CAAC,MAAM,CAAC,+BAA+B,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC1E,iGAAiG;IACjG,mBAAmB,CAAC,CAClB,MAAM,EAAE,yBAAyB,GAChC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC/C,yGAAyG;IACzG,uBAAuB,CAAC,CACtB,MAAM,EAAE,6BAA6B,GACpC,OAAO,CAAC,MAAM,CAAC,kCAAkC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC7E;;;;;;OAMG;IACH,mBAAmB,CAAC,CAClB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC,yBAAyB,EAAE,wBAAwB,CAAC,CAAC,CAAC;IACxE,kEAAkE;IAClE,0BAA0B,CAAC,CACzB,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAAC,MAAM,CAAC,iCAAiC,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC5E,yFAAyF;IACzF,sBAAsB,CAAC,CACrB,MAAM,EAAE,4BAA4B,GACnC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC,CAAC;IAC/C;;;;;;OAMG;IACH,UAAU,CAAC,CACT,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,MAAM,CAAC;QAAE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;IACxE;;;;OAIG;IACH,SAAS,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC;CAC9D"}
|
package/dist/types.d.ts
CHANGED
|
@@ -88,6 +88,13 @@ export interface Project {
|
|
|
88
88
|
*/
|
|
89
89
|
readonly isDefault: boolean;
|
|
90
90
|
readonly description?: string;
|
|
91
|
+
/**
|
|
92
|
+
* When the project was put in production; absent while it isn't. A run
|
|
93
|
+
* in a project in production is a production run (usage class
|
|
94
|
+
* `production`), and a run anywhere else is staging. Set and cleared by
|
|
95
|
+
* `ProjectBinding.setProduction`.
|
|
96
|
+
*/
|
|
97
|
+
readonly productionSince?: Timestamp;
|
|
91
98
|
readonly createdAt: Timestamp;
|
|
92
99
|
readonly updatedAt: Timestamp;
|
|
93
100
|
}
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,sCAAsC;AACtC,iCAAiC;;AA2LjC,sEAAsE;AACtE,mBAAmB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kindgi/platform",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.8-rc.0",
|
|
4
4
|
"description": "Multi-tenant hierarchy primitives — the Tenant → Org → Team → Project + User type surface, the `Scope` discriminated access-boundary, binding interfaces for orgs, teams, projects, memberships, team-project grants and the tenant hierarchy, and reference in-memory adapters.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"README.md"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@kindgi/types": "0.1.
|
|
33
|
+
"@kindgi/types": "0.1.8-rc.0"
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@types/node": "^22.10.5",
|
|
@@ -28,6 +28,7 @@ import type {
|
|
|
28
28
|
ProjectMembershipAddOutcome,
|
|
29
29
|
ProjectMembershipBinding,
|
|
30
30
|
ProjectMembershipUpdateRoleOutcome,
|
|
31
|
+
ProjectProductionOutcome,
|
|
31
32
|
ProjectUpdateOutcome,
|
|
32
33
|
} from '../project-binding.js';
|
|
33
34
|
import type {
|
|
@@ -59,12 +60,17 @@ function grantKey(teamId: TeamId, projectId: ProjectId): string {
|
|
|
59
60
|
}
|
|
60
61
|
|
|
61
62
|
/**
|
|
62
|
-
* `orgExists`: whether an org is the tenant's (live). Given, a project or
|
|
63
|
-
*
|
|
64
|
-
*
|
|
63
|
+
* - `orgExists`: whether an org is the tenant's (live). Given, a project or
|
|
64
|
+
* team created in or moved to another org is `org-not-found`, as the
|
|
65
|
+
* durable bindings answer; absent, any `orgId` is taken as it is.
|
|
66
|
+
* - `productionLimit`: the tenant's limit on projects in production
|
|
67
|
+
* (`TenantLimits.projectsInProduction`), read where it's kept;
|
|
68
|
+
* `undefined` for none. Read synchronously, so `setProduction` reads,
|
|
69
|
+
* counts and changes in one step, as a database's lock makes it.
|
|
65
70
|
*/
|
|
66
71
|
export interface InMemoryHierarchyOptions {
|
|
67
72
|
readonly orgExists?: (tenantId: TenantId, orgId: OrgId) => boolean | Promise<boolean>;
|
|
73
|
+
readonly productionLimit?: (tenantId: TenantId) => number | undefined;
|
|
68
74
|
}
|
|
69
75
|
|
|
70
76
|
/**
|
|
@@ -89,6 +95,19 @@ export function makeInMemoryProjectBinding(options: InMemoryHierarchyOptions = {
|
|
|
89
95
|
return p;
|
|
90
96
|
}
|
|
91
97
|
|
|
98
|
+
/** `limit-reached` when the tenant's projects in production are at its limit or past it. */
|
|
99
|
+
function limitReached(tenantId: TenantId): ProjectProductionOutcome | undefined {
|
|
100
|
+
const limit = options.productionLimit?.(tenantId);
|
|
101
|
+
if (limit === undefined) return undefined;
|
|
102
|
+
let inProduction = 0;
|
|
103
|
+
for (const row of projectRows.values()) {
|
|
104
|
+
if (row.tenantId === tenantId && row.productionSince !== undefined) inProduction += 1;
|
|
105
|
+
}
|
|
106
|
+
return inProduction >= limit
|
|
107
|
+
? { kind: 'limit-reached', projectsInProduction: limit, inProduction }
|
|
108
|
+
: undefined;
|
|
109
|
+
}
|
|
110
|
+
|
|
92
111
|
function tenantAlreadyHasDefault(tenantId: TenantId): boolean {
|
|
93
112
|
for (const row of projectRows.values()) {
|
|
94
113
|
if (row.tenantId === tenantId && row.isDefault) return true;
|
|
@@ -215,11 +234,30 @@ export function makeInMemoryProjectBinding(options: InMemoryHierarchyOptions = {
|
|
|
215
234
|
updatedAt: nowTimestamp(),
|
|
216
235
|
...(nextOrgId !== undefined ? { orgId: nextOrgId } : {}),
|
|
217
236
|
...(nextDescription !== undefined ? { description: nextDescription } : {}),
|
|
237
|
+
...(row.productionSince !== undefined ? { productionSince: row.productionSince } : {}),
|
|
218
238
|
};
|
|
219
239
|
projectRows.set(projectId, next);
|
|
220
240
|
return { kind: 'ok' };
|
|
221
241
|
},
|
|
222
242
|
|
|
243
|
+
async setProduction(tenantId, projectId, production): Promise<ProjectProductionOutcome> {
|
|
244
|
+
const row = findProjectInTenant(tenantId, projectId);
|
|
245
|
+
if (row === undefined) return { kind: 'project-not-found' };
|
|
246
|
+
if ((row.productionSince !== undefined) === production) {
|
|
247
|
+
return { kind: 'ok', productionSince: row.productionSince ?? null, changed: false };
|
|
248
|
+
}
|
|
249
|
+
// Read, counted and changed with no await between: one step, as a database's lock makes it.
|
|
250
|
+
const refused = production ? limitReached(tenantId) : undefined;
|
|
251
|
+
if (refused !== undefined) return refused;
|
|
252
|
+
const now = nowTimestamp();
|
|
253
|
+
const { productionSince: _was, ...rest } = row;
|
|
254
|
+
const next: Project = production
|
|
255
|
+
? { ...rest, productionSince: now, updatedAt: now }
|
|
256
|
+
: { ...rest, updatedAt: now };
|
|
257
|
+
projectRows.set(projectId, next);
|
|
258
|
+
return { kind: 'ok', productionSince: next.productionSince ?? null, changed: true };
|
|
259
|
+
},
|
|
260
|
+
|
|
223
261
|
async delete(tenantId, projectId): Promise<void> {
|
|
224
262
|
const row = findProjectInTenant(tenantId, projectId);
|
|
225
263
|
if (row === undefined) return;
|
package/src/index.ts
CHANGED
|
@@ -38,6 +38,7 @@ export type {
|
|
|
38
38
|
ProjectMembershipAddOutcome,
|
|
39
39
|
ProjectMembershipBinding,
|
|
40
40
|
ProjectMembershipUpdateRoleOutcome,
|
|
41
|
+
ProjectProductionOutcome,
|
|
41
42
|
ProjectUpdateOutcome,
|
|
42
43
|
} from './project-binding.js';
|
|
43
44
|
export type {
|
|
@@ -74,6 +75,7 @@ export type {
|
|
|
74
75
|
TeamProjectGrantParams,
|
|
75
76
|
TeamProjectGrantUpdateRoleOutcome,
|
|
76
77
|
TenantHierarchyBinding,
|
|
78
|
+
TenantLimits,
|
|
77
79
|
TenantSummary,
|
|
78
80
|
UpdateProjectMemberRoleParams,
|
|
79
81
|
UpdateTeamMemberRoleParams,
|
package/src/project-binding.ts
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
* rejecting.
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
|
-
import type { Filter, OrgId, Page, ProjectId, TenantId, UserId } from '@kindgi/types';
|
|
28
|
+
import type { Filter, OrgId, Page, ProjectId, TenantId, Timestamp, UserId } from '@kindgi/types';
|
|
29
29
|
|
|
30
30
|
import type {
|
|
31
31
|
Project,
|
|
@@ -101,6 +101,29 @@ export interface ProjectBinding {
|
|
|
101
101
|
* team grants with it.
|
|
102
102
|
*/
|
|
103
103
|
delete(tenantId: TenantId, projectId: ProjectId): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Put the project in production (`production: true`), or take it out.
|
|
106
|
+
* Optional: without it, the production route answers 501
|
|
107
|
+
* `production-unsupported`. Setting what's already set changes nothing:
|
|
108
|
+
* it answers `changed: false` and keeps the first `productionSince`. A
|
|
109
|
+
* runtime that meters usage records each change (`project.production`,
|
|
110
|
+
* `on` or `off`) in the same transaction as the change.
|
|
111
|
+
*
|
|
112
|
+
* With the tenant's limit set (`TenantLimits.projectsInProduction`),
|
|
113
|
+
* putting a project in production reads the limit, counts the tenant's
|
|
114
|
+
* projects already in production, and answers `limit-reached` without a
|
|
115
|
+
* change when they're at the limit or past it. The binding reads the
|
|
116
|
+
* limit itself, where the runtime keeps it, and the read, the count and
|
|
117
|
+
* the change are one step: two projects put in production at once can't
|
|
118
|
+
* both pass on the last place, and a limit changed meanwhile is the one
|
|
119
|
+
* counted against. Taking a project out, and a project already in
|
|
120
|
+
* production, are never counted.
|
|
121
|
+
*/
|
|
122
|
+
setProduction?(
|
|
123
|
+
tenantId: TenantId,
|
|
124
|
+
projectId: ProjectId,
|
|
125
|
+
production: boolean,
|
|
126
|
+
): Promise<ProjectProductionOutcome>;
|
|
104
127
|
}
|
|
105
128
|
|
|
106
129
|
/**
|
|
@@ -168,6 +191,28 @@ export type ProjectCreateOutcome =
|
|
|
168
191
|
readonly orgId: OrgId;
|
|
169
192
|
};
|
|
170
193
|
|
|
194
|
+
/** What `ProjectBinding.setProduction` did. */
|
|
195
|
+
export type ProjectProductionOutcome =
|
|
196
|
+
| {
|
|
197
|
+
readonly kind: 'ok';
|
|
198
|
+
/** When it went into production; `null` now that it isn't in production. */
|
|
199
|
+
readonly productionSince: Timestamp | null;
|
|
200
|
+
/** `false` when it was already so, and nothing was written. */
|
|
201
|
+
readonly changed: boolean;
|
|
202
|
+
}
|
|
203
|
+
| {
|
|
204
|
+
/** No project with this id in the tenant. */
|
|
205
|
+
readonly kind: 'project-not-found';
|
|
206
|
+
}
|
|
207
|
+
| {
|
|
208
|
+
/** Not put in production: the tenant's projects in production are at its limit, or past it. */
|
|
209
|
+
readonly kind: 'limit-reached';
|
|
210
|
+
/** The limit. */
|
|
211
|
+
readonly projectsInProduction: number;
|
|
212
|
+
/** The tenant's projects in production now. */
|
|
213
|
+
readonly inProduction: number;
|
|
214
|
+
};
|
|
215
|
+
|
|
171
216
|
/** What `ProjectBinding.update` did. */
|
|
172
217
|
export type ProjectUpdateOutcome =
|
|
173
218
|
| { readonly kind: 'ok' }
|
|
@@ -182,6 +182,47 @@ export interface TenantSummary {
|
|
|
182
182
|
readonly slug: string;
|
|
183
183
|
readonly createdAt: string;
|
|
184
184
|
readonly updatedAt: string;
|
|
185
|
+
/**
|
|
186
|
+
* Whether the tenant may put projects in production. Absent means
|
|
187
|
+
* allowed: a runtime that doesn't gate production leaves it out. The
|
|
188
|
+
* production route checks it only when its gate is on.
|
|
189
|
+
*/
|
|
190
|
+
readonly productionAllowed?: boolean;
|
|
191
|
+
/** The tenant's limits that are set. Absent when none is. */
|
|
192
|
+
readonly limits?: TenantLimits;
|
|
193
|
+
/**
|
|
194
|
+
* Where the tenant stands, on a runtime serving many tenants: `closing`
|
|
195
|
+
* (readable and exportable for its window, nothing runs) or `suspended`
|
|
196
|
+
* (the same, reversibly). `closing` wins. Absent: active.
|
|
197
|
+
*/
|
|
198
|
+
readonly state?: 'active' | 'suspended' | 'closing';
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* A tenant's limits, each absent while it isn't set (and then not
|
|
203
|
+
* enforced). Set per tenant by the system API; a self-hosted runtime
|
|
204
|
+
* sets none unless its operator does.
|
|
205
|
+
*/
|
|
206
|
+
export interface TenantLimits {
|
|
207
|
+
/** API requests a minute, as a token bucket. Past it: 429 `rate-limit-exceeded`. */
|
|
208
|
+
readonly apiRequestsPerMinute?: number;
|
|
209
|
+
/** Webhook deliveries received a minute, across the tenant's triggers. Past it: 429. */
|
|
210
|
+
readonly webhookReceivesPerMinute?: number;
|
|
211
|
+
/** Runs executing at once. Past it, a new run waits as `pending`. */
|
|
212
|
+
readonly runsAtOnce?: number;
|
|
213
|
+
/** Runs waiting as `pending`. Past it, a new run is refused with 429. */
|
|
214
|
+
readonly runsPending?: number;
|
|
215
|
+
/** Tool calls in flight to the tenant's pack services. Past it, a call waits for a slot. */
|
|
216
|
+
readonly toolCallsInFlight?: number;
|
|
217
|
+
/** Approvals waiting for a decision. Past it, the step that asks fails, naming the limit. */
|
|
218
|
+
readonly approvalsPending?: number;
|
|
219
|
+
/**
|
|
220
|
+
* Projects in production at once. Past it, putting another project in
|
|
221
|
+
* production is refused with 403 `production-limit-reached`. Lowering it
|
|
222
|
+
* takes no project out of production: with more in production than the
|
|
223
|
+
* limit, the next one waits until enough come out.
|
|
224
|
+
*/
|
|
225
|
+
readonly projectsInProduction?: number;
|
|
185
226
|
}
|
|
186
227
|
|
|
187
228
|
/**
|
package/src/types.ts
CHANGED
|
@@ -130,6 +130,13 @@ export interface Project {
|
|
|
130
130
|
*/
|
|
131
131
|
readonly isDefault: boolean;
|
|
132
132
|
readonly description?: string;
|
|
133
|
+
/**
|
|
134
|
+
* When the project was put in production; absent while it isn't. A run
|
|
135
|
+
* in a project in production is a production run (usage class
|
|
136
|
+
* `production`), and a run anywhere else is staging. Set and cleared by
|
|
137
|
+
* `ProjectBinding.setProduction`.
|
|
138
|
+
*/
|
|
139
|
+
readonly productionSince?: Timestamp;
|
|
133
140
|
readonly createdAt: Timestamp;
|
|
134
141
|
readonly updatedAt: Timestamp;
|
|
135
142
|
}
|
|
@@ -6,13 +6,30 @@
|
|
|
6
6
|
* in-memory reference adapter.
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
+
import type { TenantId } from '@kindgi/types';
|
|
10
|
+
|
|
9
11
|
import { makeInMemoryProjectBinding } from '../src/in-memory/project-binding.js';
|
|
10
12
|
import {
|
|
11
13
|
CONFORMANCE_MISSING_ORG,
|
|
12
14
|
runProjectBindingConformance,
|
|
13
15
|
} from './project-binding.conformance.js';
|
|
14
16
|
|
|
15
|
-
runProjectBindingConformance(
|
|
17
|
+
runProjectBindingConformance(
|
|
18
|
+
() => {
|
|
19
|
+
// The tenant's limit where the binding reads it, as a runtime keeps it beside the tenant.
|
|
20
|
+
const limits = new Map<TenantId, number>();
|
|
21
|
+
return {
|
|
22
|
+
...makeInMemoryProjectBinding({ productionLimit: (tenantId) => limits.get(tenantId) }),
|
|
23
|
+
setProductionLimit: (tenantId, limit) => {
|
|
24
|
+
if (limit === undefined) limits.delete(tenantId);
|
|
25
|
+
else limits.set(tenantId, limit);
|
|
26
|
+
return Promise.resolve();
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
'InMemoryProjectBinding',
|
|
31
|
+
{ production: true, productionLimit: true },
|
|
32
|
+
);
|
|
16
33
|
// With an org check: every org but the missing one is the tenant's.
|
|
17
34
|
runProjectBindingConformance(
|
|
18
35
|
() =>
|
|
@@ -63,6 +63,11 @@ export function runProjectBindingConformance(
|
|
|
63
63
|
readonly projects: ProjectBinding;
|
|
64
64
|
readonly memberships: ProjectMembershipBinding;
|
|
65
65
|
readonly grants: TeamProjectGrantBinding;
|
|
66
|
+
/**
|
|
67
|
+
* With `productionLimit`: set the tenant's limit on projects in
|
|
68
|
+
* production (`undefined` for none) where this binding reads it.
|
|
69
|
+
*/
|
|
70
|
+
readonly setProductionLimit?: (tenantId: TenantId, limit: number | undefined) => Promise<void>;
|
|
66
71
|
},
|
|
67
72
|
label = 'ProjectBinding',
|
|
68
73
|
options: {
|
|
@@ -72,6 +77,18 @@ export function runProjectBindingConformance(
|
|
|
72
77
|
* `org-not-found`.
|
|
73
78
|
*/
|
|
74
79
|
readonly checksOrgs?: boolean;
|
|
80
|
+
/**
|
|
81
|
+
* The binding implements `setProduction`: a project put in production
|
|
82
|
+
* and taken out, with repeats changing nothing.
|
|
83
|
+
*/
|
|
84
|
+
readonly production?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Its `setProduction` reads the tenant's limit (set through
|
|
87
|
+
* `setProductionLimit`) and counts against it: only the tenant's own
|
|
88
|
+
* projects, only going in, the limit as it is at the call, and two at
|
|
89
|
+
* once can't both take the last place.
|
|
90
|
+
*/
|
|
91
|
+
readonly productionLimit?: boolean;
|
|
75
92
|
} = {},
|
|
76
93
|
): void {
|
|
77
94
|
describe(`${label} — project CRUD`, () => {
|
|
@@ -113,6 +130,178 @@ export function runProjectBindingConformance(
|
|
|
113
130
|
});
|
|
114
131
|
});
|
|
115
132
|
|
|
133
|
+
if (options.production === true) {
|
|
134
|
+
describe(`${label} — production`, () => {
|
|
135
|
+
function setter(projects: ProjectBinding) {
|
|
136
|
+
const set = projects.setProduction?.bind(projects);
|
|
137
|
+
if (set === undefined) throw new Error('this binding has no setProduction');
|
|
138
|
+
return set;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
it('puts a project in production, then takes it out', async () => {
|
|
142
|
+
const { projects } = makeBinding();
|
|
143
|
+
const id = await createProject(projects, T1, { name: 'Shop', slug: 'shop' });
|
|
144
|
+
const set = setter(projects);
|
|
145
|
+
const on = await set(T1, id, true);
|
|
146
|
+
expect(on.kind).toBe('ok');
|
|
147
|
+
const since = on.kind === 'ok' ? on.productionSince : null;
|
|
148
|
+
expect(typeof since).toBe('string');
|
|
149
|
+
expect(on.kind === 'ok' && on.changed).toBe(true);
|
|
150
|
+
expect((await projects.get(T1, id))?.productionSince).toBe(since);
|
|
151
|
+
expect((await projects.list(T1, {})).items.find((p) => p.id === id)?.productionSince).toBe(
|
|
152
|
+
since,
|
|
153
|
+
);
|
|
154
|
+
|
|
155
|
+
expect(await set(T1, id, false)).toEqual({
|
|
156
|
+
kind: 'ok',
|
|
157
|
+
productionSince: null,
|
|
158
|
+
changed: true,
|
|
159
|
+
});
|
|
160
|
+
expect((await projects.get(T1, id))?.productionSince).toBeUndefined();
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
it('a repeat changes nothing, and keeps the first productionSince', async () => {
|
|
164
|
+
const { projects } = makeBinding();
|
|
165
|
+
const id = await createProject(projects, T1, { name: 'Shop', slug: 'shop' });
|
|
166
|
+
const set = setter(projects);
|
|
167
|
+
const first = await set(T1, id, true);
|
|
168
|
+
const since = first.kind === 'ok' ? first.productionSince : null;
|
|
169
|
+
expect(await set(T1, id, true)).toEqual({
|
|
170
|
+
kind: 'ok',
|
|
171
|
+
productionSince: since,
|
|
172
|
+
changed: false,
|
|
173
|
+
});
|
|
174
|
+
await set(T1, id, false);
|
|
175
|
+
expect(await set(T1, id, false)).toEqual({
|
|
176
|
+
kind: 'ok',
|
|
177
|
+
productionSince: null,
|
|
178
|
+
changed: false,
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
it('an update keeps productionSince', async () => {
|
|
183
|
+
const { projects } = makeBinding();
|
|
184
|
+
const id = await createProject(projects, T1, { name: 'Shop', slug: 'shop' });
|
|
185
|
+
const on = await setter(projects)(T1, id, true);
|
|
186
|
+
expect(await projects.update(T1, id, { name: 'Shop, renamed' })).toEqual({ kind: 'ok' });
|
|
187
|
+
expect((await projects.get(T1, id))?.productionSince).toBe(
|
|
188
|
+
on.kind === 'ok' ? on.productionSince : 'not ok',
|
|
189
|
+
);
|
|
190
|
+
});
|
|
191
|
+
|
|
192
|
+
it("an unknown project, or another tenant's: project-not-found, nothing changed", async () => {
|
|
193
|
+
const { projects } = makeBinding();
|
|
194
|
+
const id = await createProject(projects, T1, { name: 'Shop', slug: 'shop' });
|
|
195
|
+
const set = setter(projects);
|
|
196
|
+
expect(await set(T1, 'project-missing' as ProjectId, true)).toEqual({
|
|
197
|
+
kind: 'project-not-found',
|
|
198
|
+
});
|
|
199
|
+
expect(await set(T2, id, true)).toEqual({ kind: 'project-not-found' });
|
|
200
|
+
expect((await projects.get(T1, id))?.productionSince).toBeUndefined();
|
|
201
|
+
});
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
if (options.productionLimit === true) {
|
|
206
|
+
describe(`${label} — the limit on projects in production`, () => {
|
|
207
|
+
async function threeProjects(projects: ProjectBinding, tenant: TenantId) {
|
|
208
|
+
const ids: ProjectId[] = [];
|
|
209
|
+
for (const name of ['One', 'Two', 'Three']) {
|
|
210
|
+
ids.push(await createProject(projects, tenant, { name, slug: name.toLowerCase() }));
|
|
211
|
+
}
|
|
212
|
+
return ids as [ProjectId, ProjectId, ProjectId];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/** A fresh binding, its `setProduction`, and the setter of the tenant's limit. */
|
|
216
|
+
function limited() {
|
|
217
|
+
const made = makeBinding();
|
|
218
|
+
const set = made.projects.setProduction?.bind(made.projects);
|
|
219
|
+
if (set === undefined) throw new Error('this binding has no setProduction');
|
|
220
|
+
const limit = made.setProductionLimit;
|
|
221
|
+
if (limit === undefined) throw new Error('productionLimit needs setProductionLimit');
|
|
222
|
+
return { projects: made.projects, set, limit };
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
it('at the limit: limit-reached, and nothing changes', async () => {
|
|
226
|
+
const { projects, set, limit } = limited();
|
|
227
|
+
const [a, b, c] = await threeProjects(projects, T1);
|
|
228
|
+
await limit(T1, 2);
|
|
229
|
+
expect((await set(T1, a, true)).kind).toBe('ok');
|
|
230
|
+
expect((await set(T1, b, true)).kind).toBe('ok');
|
|
231
|
+
expect(await set(T1, c, true)).toEqual({
|
|
232
|
+
kind: 'limit-reached',
|
|
233
|
+
projectsInProduction: 2,
|
|
234
|
+
inProduction: 2,
|
|
235
|
+
});
|
|
236
|
+
expect((await projects.get(T1, c))?.productionSince).toBeUndefined();
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
it("only the tenant's own projects count", async () => {
|
|
240
|
+
const { projects, set, limit } = limited();
|
|
241
|
+
const theirs = await threeProjects(projects, T2);
|
|
242
|
+
for (const id of theirs) await set(T2, id, true);
|
|
243
|
+
const [mine] = await threeProjects(projects, T1);
|
|
244
|
+
await limit(T1, 1);
|
|
245
|
+
expect((await set(T1, mine, true)).kind).toBe('ok');
|
|
246
|
+
});
|
|
247
|
+
|
|
248
|
+
it('a repeat, and taking one out, are never counted', async () => {
|
|
249
|
+
const { projects, set, limit } = limited();
|
|
250
|
+
const [a, b] = await threeProjects(projects, T1);
|
|
251
|
+
await limit(T1, 1);
|
|
252
|
+
expect((await set(T1, a, true)).kind).toBe('ok');
|
|
253
|
+
expect(await set(T1, a, true)).toMatchObject({ kind: 'ok', changed: false });
|
|
254
|
+
expect(await set(T1, a, false)).toMatchObject({ kind: 'ok', changed: true });
|
|
255
|
+
expect((await set(T1, b, true)).kind).toBe('ok');
|
|
256
|
+
});
|
|
257
|
+
|
|
258
|
+
it('the limit as it is at the call: raised, lowered, then unset', async () => {
|
|
259
|
+
const { projects, set, limit } = limited();
|
|
260
|
+
const [a, b, c] = await threeProjects(projects, T1);
|
|
261
|
+
await limit(T1, 1);
|
|
262
|
+
expect((await set(T1, a, true)).kind).toBe('ok');
|
|
263
|
+
expect((await set(T1, b, true)).kind).toBe('limit-reached');
|
|
264
|
+
await limit(T1, 2);
|
|
265
|
+
expect((await set(T1, b, true)).kind).toBe('ok');
|
|
266
|
+
await limit(T1, 1);
|
|
267
|
+
expect(await set(T1, c, true)).toEqual({
|
|
268
|
+
kind: 'limit-reached',
|
|
269
|
+
projectsInProduction: 1,
|
|
270
|
+
inProduction: 2,
|
|
271
|
+
});
|
|
272
|
+
await limit(T1, undefined);
|
|
273
|
+
expect((await set(T1, c, true)).kind).toBe('ok');
|
|
274
|
+
});
|
|
275
|
+
|
|
276
|
+
it('a limit below the count refuses the next, and takes none out', async () => {
|
|
277
|
+
const { projects, set, limit } = limited();
|
|
278
|
+
const [a, b, c] = await threeProjects(projects, T1);
|
|
279
|
+
await set(T1, a, true);
|
|
280
|
+
await set(T1, b, true);
|
|
281
|
+
await limit(T1, 1);
|
|
282
|
+
expect(await set(T1, c, true)).toEqual({
|
|
283
|
+
kind: 'limit-reached',
|
|
284
|
+
projectsInProduction: 1,
|
|
285
|
+
inProduction: 2,
|
|
286
|
+
});
|
|
287
|
+
expect((await projects.get(T1, a))?.productionSince).toBeDefined();
|
|
288
|
+
expect((await projects.get(T1, b))?.productionSince).toBeDefined();
|
|
289
|
+
});
|
|
290
|
+
|
|
291
|
+
it('two projects put in production at once, with one place left: one goes in', async () => {
|
|
292
|
+
const { projects, set, limit } = limited();
|
|
293
|
+
const [a, b] = await threeProjects(projects, T1);
|
|
294
|
+
await limit(T1, 1);
|
|
295
|
+
const outcomes = await Promise.all([set(T1, a, true), set(T1, b, true)]);
|
|
296
|
+
expect(outcomes.map((o) => o.kind).sort()).toEqual(['limit-reached', 'ok']);
|
|
297
|
+
const live = [await projects.get(T1, a), await projects.get(T1, b)].filter(
|
|
298
|
+
(p) => p?.productionSince !== undefined,
|
|
299
|
+
);
|
|
300
|
+
expect(live).toHaveLength(1);
|
|
301
|
+
});
|
|
302
|
+
});
|
|
303
|
+
}
|
|
304
|
+
|
|
116
305
|
describe(`${label} — Default project`, () => {
|
|
117
306
|
it('getDefault returns undefined before any Default is created', async () => {
|
|
118
307
|
const { projects } = makeBinding();
|