@happyvertical/smrt-users 0.51.32 → 0.51.33
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/__tests__/helpers/oidc-test-server.d.ts +45 -0
- package/dist/__tests__/helpers/oidc-test-server.d.ts.map +1 -0
- package/dist/__tests__/helpers/postgres-rls-reset.d.ts +15 -0
- package/dist/__tests__/helpers/postgres-rls-reset.d.ts.map +1 -0
- package/dist/app-contract.d.ts +11 -1
- package/dist/chunks/{TerminalAuthService-Mj7kASo7.js → TerminalAuthService-CLDmxYuC.js} +2 -2
- package/dist/chunks/{TerminalAuthService-Mj7kASo7.js.map → TerminalAuthService-CLDmxYuC.js.map} +1 -1
- package/dist/collections/AccessRequestCollection.d.ts +10 -0
- package/dist/collections/CliAuthApproveLimitCollection.d.ts +5 -0
- package/dist/collections/CliAuthRequestCollection.d.ts +5 -0
- package/dist/collections/GroupCollection.d.ts +4 -0
- package/dist/collections/GroupMemberCollection.d.ts +4 -0
- package/dist/collections/GroupRoleCollection.d.ts +4 -0
- package/dist/collections/MagicLinkTokenCollection.d.ts +7 -0
- package/dist/collections/MembershipCollection.d.ts +4 -0
- package/dist/collections/MembershipOverrideCollection.d.ts +4 -0
- package/dist/collections/PermissionCollection.d.ts +4 -0
- package/dist/collections/ResourceGrantCollection.d.ts +1 -0
- package/dist/collections/RoleCollection.d.ts +5 -1
- package/dist/collections/RolePermissionCollection.d.ts +6 -2
- package/dist/collections/SessionCollection.d.ts +4 -0
- package/dist/collections/TenantCollection.d.ts +4 -0
- package/dist/collections/TenantIntegrationCollection.d.ts +6 -1
- package/dist/collections/TenantPermissionOverrideCollection.d.ts +4 -0
- package/dist/collections/UserCollection.d.ts +6 -2
- package/dist/index.d.ts +56 -0
- package/dist/index.js +3 -3
- package/dist/manifest.json +1 -1
- package/dist/migrations/backfillLegacyUserProfiles.d.ts +1 -1
- package/dist/migrations/backfillUserEmailKeys.d.ts +1 -1
- package/dist/migrations/materializeTenantHierarchy.d.ts +2 -2
- package/dist/models/AccessRequest.d.ts +22 -0
- package/dist/models/CliAuthApproveLimit.d.ts +5 -0
- package/dist/models/CliAuthRequest.d.ts +12 -0
- package/dist/models/Group.d.ts +5 -1
- package/dist/models/GroupMember.d.ts +5 -1
- package/dist/models/GroupRole.d.ts +5 -1
- package/dist/models/MagicLinkToken.d.ts +9 -1
- package/dist/models/Membership.d.ts +6 -2
- package/dist/models/MembershipOverride.d.ts +5 -1
- package/dist/models/Permission.d.ts +5 -1
- package/dist/models/ResourceGrant.d.ts +2 -1
- package/dist/models/Role.d.ts +6 -2
- package/dist/models/RolePermission.d.ts +5 -1
- package/dist/models/Session.d.ts +5 -1
- package/dist/models/Tenant.d.ts +6 -2
- package/dist/models/TenantIntegration.d.ts +10 -1
- package/dist/models/TenantPermissionOverride.d.ts +5 -1
- package/dist/models/User.d.ts +6 -2
- package/dist/models/tenant-hierarchy.d.ts +23 -0
- package/dist/services/AccessRequestService.d.ts +42 -6
- package/dist/services/MagicLinkService.d.ts +30 -1
- package/dist/services/MobileAuthService.d.ts +43 -5
- package/dist/services/OidcLoginService.d.ts +12 -2
- package/dist/services/OperationPermissionService.d.ts +7 -3
- package/dist/services/PermissionCatalogService.d.ts +5 -1
- package/dist/services/PermissionResolver.d.ts +8 -4
- package/dist/services/PostgresPermissionPolicies.d.ts +6 -2
- package/dist/services/ResourceGrantService.d.ts +4 -3
- package/dist/services/SessionPermissionContext.d.ts +8 -4
- package/dist/services/SessionService.d.ts +10 -6
- package/dist/services/TenantService.d.ts +8 -4
- package/dist/services/TerminalAuthService.d.ts +23 -4
- package/dist/services/authorization-read-options.d.ts +2 -1
- package/dist/smrt-knowledge.json +4 -4
- package/dist/sveltekit/index.d.ts +23 -5
- package/dist/sveltekit/mobile-handlers.d.ts +42 -2
- package/dist/sveltekit/resource-list-handler.d.ts +30 -4
- package/dist/sveltekit/types.d.ts +6 -2
- package/dist/sveltekit.js +1 -1
- package/dist/ui.d.ts +7 -1
- package/package.json +10 -10
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared OIDC test-IdP harness: a real HTTP server implementing discovery,
|
|
3
|
+
* JWKS, token, and userinfo endpoints with jose-signed ID tokens. Extracted
|
|
4
|
+
* from oidc-login-service.test.ts so the mobile handler suite (issue #1748)
|
|
5
|
+
* exercises the same provider-generic PKCE surface instead of inventing a
|
|
6
|
+
* second mock.
|
|
7
|
+
*/
|
|
8
|
+
import { type DatabaseInterface } from '@happyvertical/smrt-core/migrations';
|
|
9
|
+
export interface OidcTestServerOptions {
|
|
10
|
+
authorizationResponseIssuerSupported?: boolean;
|
|
11
|
+
audience?: string | string[];
|
|
12
|
+
authorizedParty?: string;
|
|
13
|
+
idTokenEmailVerified?: boolean;
|
|
14
|
+
includeEmailInIdToken?: boolean;
|
|
15
|
+
userInfoEmailVerified?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export interface OidcTestServer {
|
|
18
|
+
close: () => Promise<void>;
|
|
19
|
+
issuer: string;
|
|
20
|
+
/** Nonce stamped into subsequently issued ID tokens. */
|
|
21
|
+
setNonce: (value: string) => void;
|
|
22
|
+
tokenRequests: Array<{
|
|
23
|
+
authorization?: string;
|
|
24
|
+
params: URLSearchParams;
|
|
25
|
+
}>;
|
|
26
|
+
userinfoRequests: Array<{
|
|
27
|
+
authorization?: string;
|
|
28
|
+
}>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Schema for the tables OIDC user provisioning touches
|
|
32
|
+
* (`UserCollection.getOrCreateFromOidc`): the smrt-profiles trio plus users
|
|
33
|
+
* and sessions. Extend with further DDL per suite as needed.
|
|
34
|
+
*
|
|
35
|
+
* Tenant-scoped tables (`profile_types`, `profiles`) key on
|
|
36
|
+
* `(tenant_id, slug, context, _meta_type)` since smrt#2360 — keep this DDL in
|
|
37
|
+
* step with the framework schema or `save()`'s ON CONFLICT cannot bind.
|
|
38
|
+
*/
|
|
39
|
+
export declare const OIDC_USERS_TEST_SCHEMA = "\nCREATE TABLE IF NOT EXISTS \"_smrt_backfills\" (\n \"name\" TEXT PRIMARY KEY NOT NULL,\n \"applied_at\" TIMESTAMP DEFAULT current_timestamp,\n \"description\" TEXT,\n \"package_name\" TEXT\n);\n\nCREATE TABLE IF NOT EXISTS \"profile_types\" (\n \"id\" TEXT PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" TEXT,\n \"name\" TEXT DEFAULT '',\n \"description\" TEXT\n);\nCREATE UNIQUE INDEX IF NOT EXISTS \"profile_types_slug_context_meta_type_idx\" ON \"profile_types\" (\"tenant_id\", \"slug\", \"context\", \"_meta_type\");\nCREATE INDEX IF NOT EXISTS \"profile_types_meta_type_idx\" ON \"profile_types\" (\"_meta_type\");\n\nCREATE TABLE IF NOT EXISTS \"profiles\" (\n \"id\" TEXT PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"_meta_type\" TEXT NOT NULL,\n \"_meta_data\" JSON,\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"tenant_id\" TEXT,\n \"type_id\" TEXT,\n \"email\" TEXT,\n \"email_key\" TEXT,\n \"name\" TEXT DEFAULT '',\n \"description\" TEXT\n);\nCREATE UNIQUE INDEX IF NOT EXISTS \"profiles_slug_context_meta_type_idx\" ON \"profiles\" (\"tenant_id\", \"slug\", \"context\", \"_meta_type\");\nCREATE INDEX IF NOT EXISTS \"profiles_meta_type_idx\" ON \"profiles\" (\"_meta_type\");\nCREATE INDEX IF NOT EXISTS \"profiles_email_key_idx\" ON \"profiles\" (\"email_key\");\n\nCREATE TABLE IF NOT EXISTS \"oidc_profile_email_reservations\" (\n \"id\" TEXT PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"profile_id\" TEXT NOT NULL,\n \"email_key\" TEXT NOT NULL\n);\nCREATE UNIQUE INDEX IF NOT EXISTS \"oidc_profile_email_reservations_slug_context_idx\" ON \"oidc_profile_email_reservations\" (\"slug\", \"context\");\nCREATE UNIQUE INDEX IF NOT EXISTS \"oidc_profile_email_reservations_profile_id_idx\" ON \"oidc_profile_email_reservations\" (\"profile_id\");\nCREATE UNIQUE INDEX IF NOT EXISTS \"oidc_profile_email_reservations_email_key_idx\" ON \"oidc_profile_email_reservations\" (\"email_key\");\n\nCREATE TABLE IF NOT EXISTS \"oidc_identities\" (\n \"id\" TEXT PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"profile_id\" TEXT NOT NULL,\n \"provider\" TEXT DEFAULT '',\n \"issuer\" TEXT DEFAULT '',\n \"subject\" TEXT DEFAULT '',\n \"identity_key\" TEXT,\n \"email\" TEXT DEFAULT '',\n \"last_used_at\" TIMESTAMP\n);\nCREATE UNIQUE INDEX IF NOT EXISTS \"oidc_identities_slug_context_idx\" ON \"oidc_identities\" (\"slug\", \"context\");\nCREATE UNIQUE INDEX IF NOT EXISTS \"oidc_identities_identity_key_idx\" ON \"oidc_identities\" (\"identity_key\");\n\nCREATE TABLE IF NOT EXISTS \"users\" (\n \"id\" TEXT PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"profile_id\" TEXT DEFAULT '',\n \"email\" TEXT DEFAULT '',\n \"email_key\" TEXT,\n \"status\" TEXT,\n \"last_login_at\" TIMESTAMP\n);\nCREATE UNIQUE INDEX IF NOT EXISTS \"users_slug_context_idx\" ON \"users\" (\"slug\", \"context\");\nCREATE UNIQUE INDEX IF NOT EXISTS \"users_profile_id_idx\" ON \"users\" (\"profile_id\");\nCREATE UNIQUE INDEX IF NOT EXISTS \"users_email_key_idx\" ON \"users\" (\"email_key\");\n\nCREATE TABLE IF NOT EXISTS \"sessions\" (\n \"id\" TEXT PRIMARY KEY NOT NULL,\n \"slug\" TEXT NOT NULL,\n \"context\" TEXT NOT NULL DEFAULT '',\n \"created_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"updated_at\" TIMESTAMP NOT NULL DEFAULT current_timestamp,\n \"user_id\" TEXT DEFAULT '',\n \"tenant_id\" TEXT,\n \"status\" TEXT,\n \"expires_at\" TIMESTAMP,\n \"user_agent\" TEXT DEFAULT '',\n \"ip_address\" TEXT DEFAULT '',\n \"last_accessed_at\" TIMESTAMP,\n \"data\" JSON DEFAULT '{}'\n);\nCREATE UNIQUE INDEX IF NOT EXISTS \"sessions_slug_context_idx\" ON \"sessions\" (\"slug\", \"context\");\n";
|
|
40
|
+
/** Mark a freshly-created, empty test schema ready for indexed OIDC reads. */
|
|
41
|
+
export declare function prepareOidcEmailKeyBackfills(db: DatabaseInterface): Promise<void>;
|
|
42
|
+
/** Close every server started by this harness (call from `afterAll`). */
|
|
43
|
+
export declare function closeAllOidcServers(): Promise<void>;
|
|
44
|
+
export declare function startOidcServer(options?: OidcTestServerOptions): Promise<OidcTestServer>;
|
|
45
|
+
//# sourceMappingURL=oidc-test-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc-test-server.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/oidc-test-server.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AASH,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,qCAAqC,CAAC;AAK7C,MAAM,WAAW,qBAAqB;IACpC,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,aAAa,EAAE,KAAK,CAAC;QAAE,aAAa,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAC1E,gBAAgB,EAAE,KAAK,CAAC;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACrD;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,w8IAwGlC,CAAC;AAEF,8EAA8E;AAC9E,wBAAsB,4BAA4B,CAChD,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAAC,IAAI,CAAC,CAUf;AAaD,yEAAyE;AACzE,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAEzD;AAiBD,wBAAsB,eAAe,CACnC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,cAAc,CAAC,CAgIzB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { DatabaseInterface } from '@happyvertical/sql';
|
|
2
|
+
/**
|
|
3
|
+
* Remove every row-level-security policy `applyPostgresPermissionPolicies()`
|
|
4
|
+
* installed in the current schema, and turn RLS back off on those tables.
|
|
5
|
+
*
|
|
6
|
+
* The policies are DDL: they commit on the shared per-package database and
|
|
7
|
+
* outlive the isolated transaction a suite rolls back. Left behind, they
|
|
8
|
+
* FORCE RLS onto every tenant-scoped table for each later suite in the
|
|
9
|
+
* package. Under a superuser connection that was invisible (superusers bypass
|
|
10
|
+
* RLS); under the CI lane's NOSUPERUSER/NOBYPASSRLS role it rejects ordinary
|
|
11
|
+
* writes in unrelated suites, e.g. `resource_grants` in
|
|
12
|
+
* `resource-grant-postgres.test.ts`.
|
|
13
|
+
*/
|
|
14
|
+
export declare function resetPostgresPermissionPolicies(db: DatabaseInterface): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=postgres-rls-reset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-rls-reset.d.ts","sourceRoot":"","sources":["../../../src/__tests__/helpers/postgres-rls-reset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAE5D;;;;;;;;;;;GAWG;AACH,wBAAsB,+BAA+B,CACnD,EAAE,EAAE,iBAAiB,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
package/dist/app-contract.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Versioned discovery and cross-transport contracts for SMRT application
|
|
3
|
+
* surfaces.
|
|
4
|
+
*
|
|
5
|
+
* The artifact is intentionally data-only: downstream apps may persist its
|
|
6
|
+
* canonical JSON and pin the SHA-256 digest without parsing CLI help text or
|
|
7
|
+
* depending on a particular transport implementation.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
11
|
+
import type { ResourceListResponseBody } from './sveltekit.js';
|
|
2
12
|
/** Immutable selector for this discovery artifact family. */
|
|
3
13
|
export declare const SMRT_DISCOVERY_CONFORMANCE_SCHEMA = "https://smrt.dev/schemas/discovery-conformance/v1";
|
|
4
14
|
/** Version of the discovery artifact payload. */
|