@selvajs/platform 0.20.2 → 0.21.0-beta.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/apiTokens/index.d.ts +6 -0
- package/dist/apiTokens/index.d.ts.map +1 -0
- package/dist/apiTokens/index.js +3 -0
- package/dist/apiTokens/index.js.map +1 -0
- package/dist/apiTokens/interface.d.ts +37 -0
- package/dist/apiTokens/interface.d.ts.map +1 -0
- package/dist/apiTokens/interface.js +2 -0
- package/dist/apiTokens/interface.js.map +1 -0
- package/dist/apiTokens/scope.d.ts +28 -0
- package/dist/apiTokens/scope.d.ts.map +1 -0
- package/dist/apiTokens/scope.js +50 -0
- package/dist/apiTokens/scope.js.map +1 -0
- package/dist/apiTokens/types.d.ts +79 -0
- package/dist/apiTokens/types.d.ts.map +1 -0
- package/dist/apiTokens/types.js +54 -0
- package/dist/apiTokens/types.js.map +1 -0
- package/dist/auth/index.d.ts +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/interface.d.ts +29 -0
- package/dist/auth/interface.d.ts.map +1 -1
- package/dist/context.d.ts +9 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js.map +1 -1
- package/dist/data/interface.d.ts +7 -0
- package/dist/data/interface.d.ts.map +1 -1
- package/dist/data/interface.js.map +1 -1
- package/dist/events/index.d.ts +1 -1
- package/dist/events/index.d.ts.map +1 -1
- package/dist/events/index.js +1 -1
- package/dist/events/index.js.map +1 -1
- package/dist/events/interface.d.ts +34 -1
- package/dist/events/interface.d.ts.map +1 -1
- package/dist/events/interface.js +5 -0
- package/dist/events/interface.js.map +1 -1
- package/dist/index.d.ts +6 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -3
- package/dist/index.js.map +1 -1
- package/dist/notifications/types.d.ts +1 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/organizations/schemas.d.ts +15 -2
- package/dist/organizations/schemas.d.ts.map +1 -1
- package/dist/organizations/schemas.js +19 -5
- package/dist/organizations/schemas.js.map +1 -1
- package/dist/permissions/types.d.ts +9 -2
- package/dist/permissions/types.d.ts.map +1 -1
- package/dist/permissions/types.js +10 -3
- package/dist/permissions/types.js.map +1 -1
- package/dist/projects/schemas.d.ts +1 -1
- package/dist/testing/index.d.ts +2 -0
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/suites/apiTokenStoreSuite.d.ts +29 -0
- package/dist/testing/suites/apiTokenStoreSuite.d.ts.map +1 -0
- package/dist/testing/suites/apiTokenStoreSuite.js +190 -0
- package/dist/testing/suites/apiTokenStoreSuite.js.map +1 -0
- package/package.json +6 -1
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EACX,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,EACV,MAAM,qBAAqB,CAAC;AAK7B,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACnF,YAAY,EACX,aAAa,EACb,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,UAAU,EACV,iBAAiB,EACjB,sBAAsB,EACtB,MAAM,qBAAqB,CAAC;AAK7B,YAAY,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EACxB,6BAA6B,EAC7B,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AAG3E,YAAY,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACnF,YAAY,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,YAAY,EACX,OAAO,EACP,aAAa,EACb,YAAY,EACZ,cAAc,EACd,cAAc,EACd,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACN,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,UAAU,EACV,OAAO,EACP,cAAc,EACd,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,4BAA4B,EAC5B,6BAA6B,EAC7B,MAAM,4BAA4B,CAAC;AAGpC,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAG3D,YAAY,EACX,QAAQ,EACR,cAAc,EACd,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACN,oBAAoB,EACpB,oBAAoB,EACpB,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,qBAAqB,EACrB,MAAM,sBAAsB,CAAC;AAG9B,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EACN,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,YAAY,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AACpG,YAAY,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EACN,0BAA0B,EAC1B,gCAAgC,EAChC,MAAM,+BAA+B,CAAC;AAGvC,YAAY,EACX,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACN,aAAa,EACb,sBAAsB,EACtB,yBAAyB,EACzB,yBAAyB,EACzB,oBAAoB,EACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACN,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,UAAU,EACV,UAAU,EACV,MAAM,0BAA0B,CAAC;AAKlC,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACrE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,EAAE,6BAA6B,EAAE,MAAM,uBAAuB,CAAC;AACtE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,OAAO,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AAKrE,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACN,eAAe,EACf,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,sBAAsB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAChG,YAAY,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,UAAU,EACV,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAKvD,YAAY,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAKtD,YAAY,EACX,mBAAmB,EACnB,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACzE,YAAY,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAK1F,YAAY,EACX,wBAAwB,EACxB,yBAAyB,EACzB,+BAA+B,EAC/B,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EACN,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,MAAM,0BAA0B,CAAC;AAKlC,YAAY,EACX,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,sBAAsB,EACtB,2BAA2B,EAC3B,iBAAiB,EACjB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,MAAM,mBAAmB,CAAC;AAK3B,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,YAAY,EACX,aAAa,EACb,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,WAAW,EACX,MAAM,mBAAmB,CAAC;AAK3B,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC9F,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAK7D,YAAY,EACX,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAKjE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAK1D,YAAY,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAKpD,YAAY,EACX,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAKpE,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAK9D,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAKhE,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EACN,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,MAAM,cAAc,CAAC;AAEtB,YAAY,EAAE,WAAW,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE,YAAY,EACX,WAAW,EACX,UAAU,EACV,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// @selvajs/platform — published API contract. Every symbol here is breaking-change-protected.
|
|
2
|
-
export { PlatformPermissionSchema, ALL_PLATFORM_PERMISSIONS } from './permissions/types.js';
|
|
2
|
+
export { PlatformPermissionSchema, ALL_PLATFORM_PERMISSIONS, OPERATOR_PLATFORM_PERMISSIONS } from './permissions/types.js';
|
|
3
3
|
export { emptyProfile } from './userProfile/types.js';
|
|
4
4
|
export { orgPaths } from './organizations/paths.js';
|
|
5
|
-
export { OrgRoleSchema, OrgPermissionSchema, OrgAssetKindSchema, ALL_ORG_ASSET_KINDS, SlugSchema, slugify, RESERVED_SLUGS, CreateOrgSchema, UpdateOrgSchema, ALL_ORG_PERMISSIONS, DEFAULT_ORG_PERMISSIONS, OWNER_ADMIN_ONLY_PERMISSIONS, MEMBER_ASSIGNABLE_PERMISSIONS } from './organizations/schemas.js';
|
|
5
|
+
export { OrgRoleSchema, OrgPermissionSchema, OrgAssetKindSchema, ALL_ORG_ASSET_KINDS, SlugSchema, slugify, RESERVED_SLUGS, CreateOrgSchema, UpdateOrgSchema, ALL_ORG_PERMISSIONS, ORG_MANAGEMENT_PERMISSIONS, DEFAULT_ORG_PERMISSIONS, OWNER_ADMIN_ONLY_PERMISSIONS, MEMBER_ASSIGNABLE_PERMISSIONS } from './organizations/schemas.js';
|
|
6
|
+
export { ApiScopeActionSchema, ApiScopeStringSchema, ApiTokenRevokeReasonSchema, API_TOKEN_LIFETIME_DAYS, parseApiScope, formatApiScope, describeApiScope, scopeAllows, narrowApiTokenContext } from './apiTokens/index.js';
|
|
6
7
|
export { ProjectVisibilitySchema, ProjectRoleSchema, validateProjectFlags } from './projects/schemas.js';
|
|
7
8
|
export { PlatformProjectGrantSchema, PlatformProjectGranteeTypeSchema } from './platformProjects/schemas.js';
|
|
8
9
|
export { GH_EXTENSIONS, COVER_IMAGE_EXTENSIONS, ALLOWED_UPLOAD_EXTENSIONS, COVER_IMAGE_CONTENT_TYPES, toDefinitionListItem } from './definitions/types.js';
|
|
@@ -17,7 +18,7 @@ export { ERASED_ACTOR_ID } from './data/interface.js';
|
|
|
17
18
|
export { isPlatformServer, isOrgServer } from './computeServer/types.js';
|
|
18
19
|
export { serversVisibleTo, defaultServerIdFor, resolveServerForOrg, findServerById, platformServers, orgServersFor, scopeConfigToOrg } from './computeServer/utils.js';
|
|
19
20
|
export { canView, canSolve, canEdit, canManage, canEditProjectSettings, canChangeVisibilityToPublic, canEditDefinition, canReclaim, canCreateProject, canChangeOrgRole, checkOwnerRemoval, withAdminBypass } from './access/rules.js';
|
|
20
|
-
export { actorFrom, NoopEventSink, AUDIT_EVENT_VERSION } from './events/interface.js';
|
|
21
|
+
export { actorFrom, actorOf, NoopEventSink, AUDIT_EVENT_VERSION } from './events/interface.js';
|
|
21
22
|
export { NoopSolveMetricSink } from './metrics/interface.js';
|
|
22
23
|
export { NoopSolveResultCache } from './solveCache/interface.js';
|
|
23
24
|
export { NoopErrorReporter } from './errors/interface.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8FAA8F;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* The string is persisted in user preferences, so renaming one silently resets
|
|
7
7
|
* that preference for everyone who set it. Add rather than rename.
|
|
8
8
|
*/
|
|
9
|
-
export type NotificationKind = 'org.invite' | 'auth.magic-link';
|
|
9
|
+
export type NotificationKind = 'org.invite' | 'auth.magic-link' | 'api_token.created';
|
|
10
10
|
/**
|
|
11
11
|
* One message, rendered and addressed, ready for a transport.
|
|
12
12
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/notifications/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,iBAAiB,GAAG,mBAAmB,CAAC;AAEtF;;;;;;GAMG;AACH,MAAM,WAAW,eAAe;IAC/B,IAAI,EAAE,gBAAgB,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,UAAU,GACrB;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC"}
|
|
@@ -30,19 +30,32 @@ export declare const OrgAssetKindSchema: z.ZodEnum<{
|
|
|
30
30
|
}>;
|
|
31
31
|
export type OrgAssetKind = z.infer<typeof OrgAssetKindSchema>;
|
|
32
32
|
export declare const ALL_ORG_ASSET_KINDS: readonly OrgAssetKind[];
|
|
33
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Org-scope permissions. A user may hold different sets in different orgs.
|
|
35
|
+
*
|
|
36
|
+
* `read_all_org_projects` lets its holder mint an API token that reads and
|
|
37
|
+
* solves every project in the org, including ones they aren't a member of.
|
|
38
|
+
*/
|
|
34
39
|
export declare const OrgPermissionSchema: z.ZodEnum<{
|
|
35
40
|
manage_org_members: "manage_org_members";
|
|
36
41
|
manage_org_compute: "manage_org_compute";
|
|
37
42
|
manage_definitions: "manage_definitions";
|
|
38
43
|
manage_projects: "manage_projects";
|
|
44
|
+
read_all_org_projects: "read_all_org_projects";
|
|
39
45
|
}>;
|
|
40
46
|
export type OrgPermission = z.infer<typeof OrgPermissionSchema>;
|
|
41
47
|
export declare const ALL_ORG_PERMISSIONS: readonly OrgPermission[];
|
|
48
|
+
/** The permissions that run some part of `/team`. */
|
|
49
|
+
export declare const ORG_MANAGEMENT_PERMISSIONS: readonly OrgPermission[];
|
|
42
50
|
/** Governance perms — never grantable to `member`. */
|
|
43
51
|
export declare const OWNER_ADMIN_ONLY_PERMISSIONS: readonly OrgPermission[];
|
|
44
52
|
export declare const MEMBER_ASSIGNABLE_PERMISSIONS: readonly OrgPermission[];
|
|
45
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Applied when adding a member without an explicit permissions list.
|
|
55
|
+
*
|
|
56
|
+
* `read_all_org_projects` is never a default: a key holding it reads projects
|
|
57
|
+
* its owner isn't a member of, without the audit trail Reclaim leaves.
|
|
58
|
+
*/
|
|
46
59
|
export declare const DEFAULT_ORG_PERMISSIONS: Record<OrgRole, readonly OrgPermission[]>;
|
|
47
60
|
export declare const CreateOrgSchema: z.ZodObject<{
|
|
48
61
|
name: z.ZodString;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/organizations/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/organizations/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAa3C,CAAC;AAIF;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAO5C;AAED,qFAAqF;AACrF,eAAO,MAAM,UAAU,aAUpB,CAAC;AAEJ,eAAO,MAAM,aAAa;;;;EAAuC,CAAC;AAClE,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,4IAA4I;AAC5I,eAAO,MAAM,kBAAkB;;;EAA8B,CAAC;AAC9D,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB,EAAE,SAAS,YAAY,EAA+B,CAAC;AAEvF;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB;;;;;;EAM9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB,EAAE,SAAS,aAAa,EAAgC,CAAC;AAEzF,qDAAqD;AACrD,eAAO,MAAM,0BAA0B,EAAE,SAAS,aAAa,EAE9D,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,4BAA4B,EAAE,SAAS,aAAa,EAGhE,CAAC;AAEF,eAAO,MAAM,6BAA6B,EAAE,SAAS,aAAa,EAEjE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,aAAa,EAAE,CAI7E,CAAC;AAEF,eAAO,MAAM,eAAe;;;iBAG1B,CAAC;AAEH,eAAO,MAAM,eAAe;;;iBAA4B,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC7D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -16,6 +16,7 @@ export const RESERVED_SLUGS = [
|
|
|
16
16
|
'login',
|
|
17
17
|
'logout',
|
|
18
18
|
'setup',
|
|
19
|
+
'settings',
|
|
19
20
|
'team',
|
|
20
21
|
'library',
|
|
21
22
|
'projects',
|
|
@@ -48,24 +49,37 @@ export const OrgRoleSchema = z.enum(['owner', 'admin', 'member']);
|
|
|
48
49
|
/** Kinds of org-scoped branding asset. Adding a kind is a single entry here — path, upload route, store, and UI are all generic over it. */
|
|
49
50
|
export const OrgAssetKindSchema = z.enum(['logo', 'favicon']);
|
|
50
51
|
export const ALL_ORG_ASSET_KINDS = OrgAssetKindSchema.options;
|
|
51
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Org-scope permissions. A user may hold different sets in different orgs.
|
|
54
|
+
*
|
|
55
|
+
* `read_all_org_projects` lets its holder mint an API token that reads and
|
|
56
|
+
* solves every project in the org, including ones they aren't a member of.
|
|
57
|
+
*/
|
|
52
58
|
export const OrgPermissionSchema = z.enum([
|
|
53
59
|
'manage_org_members',
|
|
54
60
|
'manage_org_compute',
|
|
55
61
|
'manage_definitions',
|
|
56
|
-
'manage_projects'
|
|
62
|
+
'manage_projects',
|
|
63
|
+
'read_all_org_projects'
|
|
57
64
|
]);
|
|
58
65
|
export const ALL_ORG_PERMISSIONS = OrgPermissionSchema.options;
|
|
66
|
+
/** The permissions that run some part of `/team`. */
|
|
67
|
+
export const ORG_MANAGEMENT_PERMISSIONS = ALL_ORG_PERMISSIONS.filter((p) => p !== 'read_all_org_projects');
|
|
59
68
|
/** Governance perms — never grantable to `member`. */
|
|
60
69
|
export const OWNER_ADMIN_ONLY_PERMISSIONS = [
|
|
61
70
|
'manage_org_members',
|
|
62
71
|
'manage_org_compute'
|
|
63
72
|
];
|
|
64
73
|
export const MEMBER_ASSIGNABLE_PERMISSIONS = ALL_ORG_PERMISSIONS.filter((p) => !OWNER_ADMIN_ONLY_PERMISSIONS.includes(p));
|
|
65
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Applied when adding a member without an explicit permissions list.
|
|
76
|
+
*
|
|
77
|
+
* `read_all_org_projects` is never a default: a key holding it reads projects
|
|
78
|
+
* its owner isn't a member of, without the audit trail Reclaim leaves.
|
|
79
|
+
*/
|
|
66
80
|
export const DEFAULT_ORG_PERMISSIONS = {
|
|
67
|
-
owner: [...
|
|
68
|
-
admin: [...
|
|
81
|
+
owner: [...ORG_MANAGEMENT_PERMISSIONS],
|
|
82
|
+
admin: [...ORG_MANAGEMENT_PERMISSIONS],
|
|
69
83
|
member: []
|
|
70
84
|
};
|
|
71
85
|
export const CreateOrgSchema = z.object({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/organizations/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAChD,GAAG;IACH,KAAK;IACL,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,MAAM;IACN,SAAS;IACT,UAAU;IACV,eAAe;CACf,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,OAAO,IAAI;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChB,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACzB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;KAC5C,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC;KAC7C,KAAK,CACL,iCAAiC,EACjC,4FAA4F,CAC5F;KACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;IACzC,OAAO,EAAE,qCAAqC;CAC9C,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGlE,4IAA4I;AAC5I,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAG9D,MAAM,CAAC,MAAM,mBAAmB,GAA4B,kBAAkB,CAAC,OAAO,CAAC;AAEvF
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/organizations/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB;IAChD,GAAG;IACH,KAAK;IACL,OAAO;IACP,MAAM;IACN,OAAO;IACP,QAAQ;IACR,OAAO;IACP,UAAU;IACV,MAAM;IACN,SAAS;IACT,UAAU;IACV,eAAe;CACf,CAAC;AAEF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,CAAC;AAElD;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,IAAY;IACnC,OAAO,IAAI;SACT,IAAI,EAAE;SACN,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChB,CAAC;AAED,qFAAqF;AACrF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACzB,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;KAC5C,GAAG,CAAC,EAAE,EAAE,oCAAoC,CAAC;KAC7C,KAAK,CACL,iCAAiC,EACjC,4FAA4F,CAC5F;KACA,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;IACzC,OAAO,EAAE,qCAAqC;CAC9C,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;AAGlE,4IAA4I;AAC5I,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;AAG9D,MAAM,CAAC,MAAM,mBAAmB,GAA4B,kBAAkB,CAAC,OAAO,CAAC;AAEvF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC;IACzC,oBAAoB;IACpB,oBAAoB;IACpB,oBAAoB;IACpB,iBAAiB;IACjB,uBAAuB;CACvB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,mBAAmB,GAA6B,mBAAmB,CAAC,OAAO,CAAC;AAEzF,qDAAqD;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAA6B,mBAAmB,CAAC,MAAM,CAC7F,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,uBAAuB,CACpC,CAAC;AAEF,sDAAsD;AACtD,MAAM,CAAC,MAAM,4BAA4B,GAA6B;IACrE,oBAAoB;IACpB,oBAAoB;CACpB,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAA6B,mBAAmB,CAAC,MAAM,CAChG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,CAChD,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAA8C;IACjF,KAAK,EAAE,CAAC,GAAG,0BAA0B,CAAC;IACtC,KAAK,EAAE,CAAC,GAAG,0BAA0B,CAAC;IACtC,MAAM,EAAE,EAAE;CACV,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACjE,IAAI,EAAE,UAAU;CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,eAAe,CAAC,OAAO,EAAE,CAAC"}
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Platform-scope permissions.
|
|
4
|
-
* regular users hold an empty array.
|
|
3
|
+
* Platform-scope permissions. All but `manage_api_tokens` are reserved for
|
|
4
|
+
* Selva staff and instance operators; regular users hold an empty array.
|
|
5
5
|
*
|
|
6
6
|
* - `instance_admin` — superuser; implies every other permission
|
|
7
7
|
* - `manage_compute` — configure the instance-wide Rhino.Compute pool
|
|
8
8
|
* - `manage_instance_users` — disable/enable any user on the instance
|
|
9
9
|
* - `manage_updates` — run system updates
|
|
10
|
+
* - `manage_api_tokens` — mint API tokens for yourself
|
|
10
11
|
*/
|
|
11
12
|
export declare const PlatformPermissionSchema: z.ZodEnum<{
|
|
12
13
|
instance_admin: "instance_admin";
|
|
13
14
|
manage_compute: "manage_compute";
|
|
14
15
|
manage_instance_users: "manage_instance_users";
|
|
15
16
|
manage_updates: "manage_updates";
|
|
17
|
+
manage_api_tokens: "manage_api_tokens";
|
|
16
18
|
}>;
|
|
17
19
|
export type PlatformPermission = z.infer<typeof PlatformPermissionSchema>;
|
|
18
20
|
export declare const ALL_PLATFORM_PERMISSIONS: readonly PlatformPermission[];
|
|
21
|
+
/**
|
|
22
|
+
* The permissions that admit someone to the `/admin` operator surface.
|
|
23
|
+
* `manage_api_tokens` is granted to ordinary users, who have no business there.
|
|
24
|
+
*/
|
|
25
|
+
export declare const OPERATOR_PLATFORM_PERMISSIONS: readonly PlatformPermission[];
|
|
19
26
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB;;;;;;EAMnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,wBAAwB,EAAE,SAAS,kBAAkB,EACjC,CAAC;AAElC;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,kBAAkB,EACL,CAAC"}
|
|
@@ -1,18 +1,25 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
/**
|
|
3
|
-
* Platform-scope permissions.
|
|
4
|
-
* regular users hold an empty array.
|
|
3
|
+
* Platform-scope permissions. All but `manage_api_tokens` are reserved for
|
|
4
|
+
* Selva staff and instance operators; regular users hold an empty array.
|
|
5
5
|
*
|
|
6
6
|
* - `instance_admin` — superuser; implies every other permission
|
|
7
7
|
* - `manage_compute` — configure the instance-wide Rhino.Compute pool
|
|
8
8
|
* - `manage_instance_users` — disable/enable any user on the instance
|
|
9
9
|
* - `manage_updates` — run system updates
|
|
10
|
+
* - `manage_api_tokens` — mint API tokens for yourself
|
|
10
11
|
*/
|
|
11
12
|
export const PlatformPermissionSchema = z.enum([
|
|
12
13
|
'instance_admin',
|
|
13
14
|
'manage_compute',
|
|
14
15
|
'manage_instance_users',
|
|
15
|
-
'manage_updates'
|
|
16
|
+
'manage_updates',
|
|
17
|
+
'manage_api_tokens'
|
|
16
18
|
]);
|
|
17
19
|
export const ALL_PLATFORM_PERMISSIONS = PlatformPermissionSchema.options;
|
|
20
|
+
/**
|
|
21
|
+
* The permissions that admit someone to the `/admin` operator surface.
|
|
22
|
+
* `manage_api_tokens` is granted to ordinary users, who have no business there.
|
|
23
|
+
*/
|
|
24
|
+
export const OPERATOR_PLATFORM_PERMISSIONS = ALL_PLATFORM_PERMISSIONS.filter((p) => p !== 'manage_api_tokens');
|
|
18
25
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/permissions/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC9C,gBAAgB;IAChB,gBAAgB;IAChB,uBAAuB;IACvB,gBAAgB;IAChB,mBAAmB;CACnB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GACpC,wBAAwB,CAAC,OAAO,CAAC;AAElC;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GACzC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,mBAAmB,CAAC,CAAC"}
|
package/dist/testing/index.d.ts
CHANGED
|
@@ -26,4 +26,6 @@ export { runPlatformPermissionStoreConformance } from './suites/platformPermissi
|
|
|
26
26
|
export type { PlatformPermissionStoreConformanceOptions } from './suites/platformPermissionStoreSuite.js';
|
|
27
27
|
export { runPlatformProjectGrantStoreConformance } from './suites/platformProjectGrantStoreSuite.js';
|
|
28
28
|
export type { PlatformProjectGrantStoreConformanceOptions } from './suites/platformProjectGrantStoreSuite.js';
|
|
29
|
+
export { runApiTokenStoreConformance } from './suites/apiTokenStoreSuite.js';
|
|
30
|
+
export type { ApiTokenStoreConformanceOptions, ApiTokenTestScope } from './suites/apiTokenStoreSuite.js';
|
|
29
31
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,YAAY,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAE5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnG,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,YAAY,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAEhG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,YAAY,EACX,gCAAgC,EAChC,kBAAkB,EAClB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACzF,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EACX,iCAAiC,EACjC,mBAAmB,EACnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AACjG,YAAY,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAE1G,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AACrG,YAAY,EAAE,2CAA2C,EAAE,MAAM,4CAA4C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,YAAY,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEtF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,YAAY,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC3E,YAAY,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AAEpF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EAAE,iCAAiC,EAAE,MAAM,kCAAkC,CAAC;AAE1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,YAAY,EAAE,kCAAkC,EAAE,MAAM,mCAAmC,CAAC;AAE5F,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACzE,YAAY,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEnG,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvF,YAAY,EAAE,oCAAoC,EAAE,MAAM,qCAAqC,CAAC;AAEhG,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAC/E,YAAY,EACX,gCAAgC,EAChC,kBAAkB,EAClB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACzF,YAAY,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAE9E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACjF,YAAY,EACX,iCAAiC,EACjC,mBAAmB,EACnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AACjG,YAAY,EAAE,yCAAyC,EAAE,MAAM,0CAA0C,CAAC;AAE1G,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AACrG,YAAY,EAAE,2CAA2C,EAAE,MAAM,4CAA4C,CAAC;AAE9G,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAC7E,YAAY,EACX,+BAA+B,EAC/B,iBAAiB,EACjB,MAAM,gCAAgC,CAAC"}
|
package/dist/testing/index.js
CHANGED
|
@@ -12,4 +12,5 @@ export { runEventSinkConformance, RecordingEventSink } from './suites/eventSinkS
|
|
|
12
12
|
export { runSolveMetricSinkConformance } from './suites/solveMetricSinkSuite.js';
|
|
13
13
|
export { runPlatformPermissionStoreConformance } from './suites/platformPermissionStoreSuite.js';
|
|
14
14
|
export { runPlatformProjectGrantStoreConformance } from './suites/platformProjectGrantStoreSuite.js';
|
|
15
|
+
export { runApiTokenStoreConformance } from './suites/apiTokenStoreSuite.js';
|
|
15
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AAGvF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAM/E,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAMjF,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAGjG,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAG7E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAGjF,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAGnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AAGzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AAGvF,OAAO,EAAE,4BAA4B,EAAE,MAAM,iCAAiC,CAAC;AAM/E,OAAO,EAAE,uBAAuB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGzF,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AAMjF,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAGjG,OAAO,EAAE,uCAAuC,EAAE,MAAM,4CAA4C,CAAC;AAGrG,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter conformance suite for IApiTokenStore.
|
|
3
|
+
*
|
|
4
|
+
* The rules adapters must honour:
|
|
5
|
+
*
|
|
6
|
+
* - `getByTokenHash` returns live tokens only. It is the resolver's sole read,
|
|
7
|
+
* so a revoked or expired row slipping through is a working credential.
|
|
8
|
+
* - Read paths other than `getByTokenHash` never return `tokenHash`.
|
|
9
|
+
* - Revoking keeps the row (marked), so audit events still resolve to a name.
|
|
10
|
+
*/
|
|
11
|
+
import type { IApiTokenStore } from '../../apiTokens/interface.js';
|
|
12
|
+
import { type SeedUserFn } from './helpers.js';
|
|
13
|
+
export interface ApiTokenTestScope {
|
|
14
|
+
/** Token owner. Must be seeded and a member of `orgId`. */
|
|
15
|
+
ownerId: string;
|
|
16
|
+
/** Access token for `ownerId`, for adapters with DB-side auth. */
|
|
17
|
+
ownerSessionToken?: string;
|
|
18
|
+
orgId: string;
|
|
19
|
+
/** A second org, for cross-org isolation checks. The owner needn't belong to it. */
|
|
20
|
+
otherOrgId: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ApiTokenStoreConformanceOptions {
|
|
23
|
+
name: string;
|
|
24
|
+
createStore: () => Promise<IApiTokenStore> | IApiTokenStore;
|
|
25
|
+
createScope?: () => Promise<ApiTokenTestScope> | ApiTokenTestScope;
|
|
26
|
+
seedUser?: SeedUserFn;
|
|
27
|
+
}
|
|
28
|
+
export declare function runApiTokenStoreConformance(opts: ApiTokenStoreConformanceOptions): void;
|
|
29
|
+
//# sourceMappingURL=apiTokenStoreSuite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiTokenStoreSuite.d.ts","sourceRoot":"","sources":["../../../src/testing/suites/apiTokenStoreSuite.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAExF,MAAM,WAAW,iBAAiB;IACjC,2DAA2D;IAC3D,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,+BAA+B;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,cAAc,CAAC;IAC5D,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,GAAG,iBAAiB,CAAC;IACnE,QAAQ,CAAC,EAAE,UAAU,CAAC;CACtB;AA4BD,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,+BAA+B,GAAG,IAAI,CAmKvF"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapter conformance suite for IApiTokenStore.
|
|
3
|
+
*
|
|
4
|
+
* The rules adapters must honour:
|
|
5
|
+
*
|
|
6
|
+
* - `getByTokenHash` returns live tokens only. It is the resolver's sole read,
|
|
7
|
+
* so a revoked or expired row slipping through is a working credential.
|
|
8
|
+
* - Read paths other than `getByTokenHash` never return `tokenHash`.
|
|
9
|
+
* - Revoking keeps the row (marked), so audit events still resolve to a name.
|
|
10
|
+
*/
|
|
11
|
+
import { describe, it, expect } from 'vitest';
|
|
12
|
+
import { SYSTEM_CONTEXT } from '../../context.js';
|
|
13
|
+
import { makeSeedHelpers, makeUuid, noopSeedUser } from './helpers.js';
|
|
14
|
+
const DEFAULT_SCOPE = {
|
|
15
|
+
ownerId: 'owner-1',
|
|
16
|
+
orgId: 'org-1',
|
|
17
|
+
otherOrgId: 'org-2'
|
|
18
|
+
};
|
|
19
|
+
const DAY = 24 * 60 * 60 * 1000;
|
|
20
|
+
function token(scope, overrides = {}) {
|
|
21
|
+
const now = Date.now();
|
|
22
|
+
return {
|
|
23
|
+
id: makeUuid(),
|
|
24
|
+
userId: scope.ownerId,
|
|
25
|
+
createdBy: scope.ownerId,
|
|
26
|
+
orgId: scope.orgId,
|
|
27
|
+
name: 'conformance key',
|
|
28
|
+
tokenHash: `hash-${makeUuid()}`,
|
|
29
|
+
scopes: ['read:all'],
|
|
30
|
+
createdAt: new Date(now).toISOString(),
|
|
31
|
+
expiresAt: new Date(now + 30 * DAY).toISOString(),
|
|
32
|
+
lastUsedAt: null,
|
|
33
|
+
revokedAt: null,
|
|
34
|
+
...overrides
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
export function runApiTokenStoreConformance(opts) {
|
|
38
|
+
const { name, createStore, createScope, seedUser = noopSeedUser } = opts;
|
|
39
|
+
const { ctx, registerToken } = makeSeedHelpers(seedUser);
|
|
40
|
+
const scopeFor = async () => {
|
|
41
|
+
const s = createScope ? await createScope() : DEFAULT_SCOPE;
|
|
42
|
+
if (s.ownerSessionToken)
|
|
43
|
+
registerToken(s.ownerId, s.ownerSessionToken);
|
|
44
|
+
return s;
|
|
45
|
+
};
|
|
46
|
+
describe(`IApiTokenStore conformance: ${name}`, () => {
|
|
47
|
+
it('create + getByTokenHash round-trips', async () => {
|
|
48
|
+
const store = await createStore();
|
|
49
|
+
const scope = await scopeFor();
|
|
50
|
+
const t = token(scope);
|
|
51
|
+
await store.create(ctx(scope.ownerId), t);
|
|
52
|
+
const got = await store.getByTokenHash(SYSTEM_CONTEXT, t.tokenHash);
|
|
53
|
+
expect(got?.id).toBe(t.id);
|
|
54
|
+
expect(got?.scopes).toEqual(['read:all']);
|
|
55
|
+
expect(got?.userId).toBe(scope.ownerId);
|
|
56
|
+
});
|
|
57
|
+
it('getByTokenHash returns null for an unknown hash', async () => {
|
|
58
|
+
const store = await createStore();
|
|
59
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, `nope-${makeUuid()}`)).toBeNull();
|
|
60
|
+
});
|
|
61
|
+
it('getByTokenHash returns null for an expired token', async () => {
|
|
62
|
+
const store = await createStore();
|
|
63
|
+
const scope = await scopeFor();
|
|
64
|
+
const t = token(scope, { expiresAt: new Date(Date.now() - 60_000).toISOString() });
|
|
65
|
+
await store.create(ctx(scope.ownerId), t);
|
|
66
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, t.tokenHash)).toBeNull();
|
|
67
|
+
});
|
|
68
|
+
it('revoke stops resolution but keeps the row, marked', async () => {
|
|
69
|
+
const store = await createStore();
|
|
70
|
+
const scope = await scopeFor();
|
|
71
|
+
const t = token(scope);
|
|
72
|
+
await store.create(ctx(scope.ownerId), t);
|
|
73
|
+
await store.revoke(ctx(scope.ownerId), t.id, 'owner');
|
|
74
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, t.tokenHash)).toBeNull();
|
|
75
|
+
const row = await store.get(ctx(scope.ownerId), t.id);
|
|
76
|
+
expect(row?.revokedAt).toBeTruthy();
|
|
77
|
+
});
|
|
78
|
+
it('revoke is idempotent and keeps the first revocation time', async () => {
|
|
79
|
+
const store = await createStore();
|
|
80
|
+
const scope = await scopeFor();
|
|
81
|
+
const t = token(scope);
|
|
82
|
+
await store.create(ctx(scope.ownerId), t);
|
|
83
|
+
await store.revoke(ctx(scope.ownerId), t.id, 'owner');
|
|
84
|
+
const first = (await store.get(ctx(scope.ownerId), t.id))?.revokedAt;
|
|
85
|
+
await store.revoke(ctx(scope.ownerId), t.id, 'admin');
|
|
86
|
+
expect((await store.get(ctx(scope.ownerId), t.id))?.revokedAt).toBe(first);
|
|
87
|
+
});
|
|
88
|
+
it('get and listByOrg never return tokenHash', async () => {
|
|
89
|
+
const store = await createStore();
|
|
90
|
+
const scope = await scopeFor();
|
|
91
|
+
const t = token(scope);
|
|
92
|
+
await store.create(ctx(scope.ownerId), t);
|
|
93
|
+
const row = await store.get(ctx(scope.ownerId), t.id);
|
|
94
|
+
expect(row).not.toBeNull();
|
|
95
|
+
expect(row).not.toHaveProperty('tokenHash');
|
|
96
|
+
const page = await store.listByOrg(ctx(scope.ownerId), scope.orgId, { limit: 100 });
|
|
97
|
+
const listed = page.items.find((i) => i.id === t.id);
|
|
98
|
+
expect(listed).toBeDefined();
|
|
99
|
+
expect(listed).not.toHaveProperty('tokenHash');
|
|
100
|
+
});
|
|
101
|
+
it('listByOrg filters by org and, when given, by owner', async () => {
|
|
102
|
+
const store = await createStore();
|
|
103
|
+
const scope = await scopeFor();
|
|
104
|
+
const { userId: otherUser } = await seedUser(makeUuid());
|
|
105
|
+
const mine = token(scope);
|
|
106
|
+
const theirs = token(scope, { userId: otherUser, createdBy: otherUser });
|
|
107
|
+
const elsewhere = token(scope, { orgId: scope.otherOrgId });
|
|
108
|
+
await store.create(ctx(scope.ownerId), mine);
|
|
109
|
+
await store.create(SYSTEM_CONTEXT, theirs);
|
|
110
|
+
await store.create(SYSTEM_CONTEXT, elsewhere);
|
|
111
|
+
const all = await store.listByOrg(SYSTEM_CONTEXT, scope.orgId, { limit: 100 });
|
|
112
|
+
const ids = all.items.map((i) => i.id);
|
|
113
|
+
expect(ids).toContain(mine.id);
|
|
114
|
+
expect(ids).toContain(theirs.id);
|
|
115
|
+
expect(ids).not.toContain(elsewhere.id);
|
|
116
|
+
const own = await store.listByOrg(SYSTEM_CONTEXT, scope.orgId, {
|
|
117
|
+
limit: 100,
|
|
118
|
+
userId: scope.ownerId
|
|
119
|
+
});
|
|
120
|
+
expect(own.items.map((i) => i.id)).toContain(mine.id);
|
|
121
|
+
expect(own.items.map((i) => i.id)).not.toContain(theirs.id);
|
|
122
|
+
});
|
|
123
|
+
it('revokeAllForUser revokes one owner in one org and reports the ids', async () => {
|
|
124
|
+
const store = await createStore();
|
|
125
|
+
const scope = await scopeFor();
|
|
126
|
+
const { userId: bystander } = await seedUser(makeUuid());
|
|
127
|
+
const a = token(scope);
|
|
128
|
+
const b = token(scope);
|
|
129
|
+
const otherOrg = token(scope, { orgId: scope.otherOrgId });
|
|
130
|
+
const someoneElse = token(scope, { userId: bystander, createdBy: bystander });
|
|
131
|
+
for (const t of [a, b, otherOrg, someoneElse])
|
|
132
|
+
await store.create(SYSTEM_CONTEXT, t);
|
|
133
|
+
const revoked = await store.revokeAllForUser(SYSTEM_CONTEXT, scope.ownerId, {
|
|
134
|
+
orgId: scope.orgId,
|
|
135
|
+
reason: 'member_removed'
|
|
136
|
+
});
|
|
137
|
+
expect(revoked.sort()).toEqual([a.id, b.id].sort());
|
|
138
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, a.tokenHash)).toBeNull();
|
|
139
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, otherOrg.tokenHash)).not.toBeNull();
|
|
140
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, someoneElse.tokenHash)).not.toBeNull();
|
|
141
|
+
});
|
|
142
|
+
it('revokeAllForUser without an org reaches every org', async () => {
|
|
143
|
+
const store = await createStore();
|
|
144
|
+
const scope = await scopeFor();
|
|
145
|
+
const a = token(scope);
|
|
146
|
+
const b = token(scope, { orgId: scope.otherOrgId });
|
|
147
|
+
for (const t of [a, b])
|
|
148
|
+
await store.create(SYSTEM_CONTEXT, t);
|
|
149
|
+
await store.revokeAllForUser(SYSTEM_CONTEXT, scope.ownerId, { reason: 'user_disabled' });
|
|
150
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, a.tokenHash)).toBeNull();
|
|
151
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, b.tokenHash)).toBeNull();
|
|
152
|
+
});
|
|
153
|
+
it('touchLastUsed records the time', async () => {
|
|
154
|
+
const store = await createStore();
|
|
155
|
+
const scope = await scopeFor();
|
|
156
|
+
const t = token(scope);
|
|
157
|
+
await store.create(ctx(scope.ownerId), t);
|
|
158
|
+
const at = new Date().toISOString();
|
|
159
|
+
await store.touchLastUsed(SYSTEM_CONTEXT, t.id, at);
|
|
160
|
+
const row = await store.get(ctx(scope.ownerId), t.id);
|
|
161
|
+
expect(Date.parse(row.lastUsedAt)).toBe(Date.parse(at));
|
|
162
|
+
});
|
|
163
|
+
it('eraseUser deletes their tokens and clears createdBy on ones they minted', async () => {
|
|
164
|
+
const store = await createStore();
|
|
165
|
+
const scope = await scopeFor();
|
|
166
|
+
const { userId: other } = await seedUser(makeUuid());
|
|
167
|
+
const owned = token(scope);
|
|
168
|
+
const mintedForOther = token(scope, { userId: other, createdBy: scope.ownerId });
|
|
169
|
+
for (const t of [owned, mintedForOther])
|
|
170
|
+
await store.create(SYSTEM_CONTEXT, t);
|
|
171
|
+
await store.eraseUser(SYSTEM_CONTEXT, scope.ownerId);
|
|
172
|
+
expect(await store.get(SYSTEM_CONTEXT, owned.id)).toBeNull();
|
|
173
|
+
const kept = await store.get(SYSTEM_CONTEXT, mintedForOther.id);
|
|
174
|
+
expect(kept?.createdBy).toBeNull();
|
|
175
|
+
expect(await store.getByTokenHash(SYSTEM_CONTEXT, mintedForOther.tokenHash)).not.toBeNull();
|
|
176
|
+
});
|
|
177
|
+
it('deleteByOrg removes only that org’s tokens', async () => {
|
|
178
|
+
const store = await createStore();
|
|
179
|
+
const scope = await scopeFor();
|
|
180
|
+
const doomed = token(scope);
|
|
181
|
+
const kept = token(scope, { orgId: scope.otherOrgId });
|
|
182
|
+
for (const t of [doomed, kept])
|
|
183
|
+
await store.create(SYSTEM_CONTEXT, t);
|
|
184
|
+
await store.deleteByOrg(SYSTEM_CONTEXT, scope.orgId);
|
|
185
|
+
expect(await store.get(SYSTEM_CONTEXT, doomed.id)).toBeNull();
|
|
186
|
+
expect(await store.get(SYSTEM_CONTEXT, kept.id)).not.toBeNull();
|
|
187
|
+
});
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=apiTokenStoreSuite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiTokenStoreSuite.js","sourceRoot":"","sources":["../../../src/testing/suites/apiTokenStoreSuite.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@selvajs/platform",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.0-beta.0",
|
|
4
4
|
"description": "Pure TypeScript interfaces for Selva platform providers (auth, definitions, compute)",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "VektorNode",
|
|
@@ -78,6 +78,11 @@
|
|
|
78
78
|
"types": "./dist/invites/index.d.ts",
|
|
79
79
|
"import": "./dist/invites/index.js"
|
|
80
80
|
},
|
|
81
|
+
"./apiTokens": {
|
|
82
|
+
"selva-source": "./src/apiTokens/index.ts",
|
|
83
|
+
"types": "./dist/apiTokens/index.d.ts",
|
|
84
|
+
"import": "./dist/apiTokens/index.js"
|
|
85
|
+
},
|
|
81
86
|
"./shareLinks": {
|
|
82
87
|
"selva-source": "./src/shareLinks/index.ts",
|
|
83
88
|
"types": "./dist/shareLinks/index.d.ts",
|