@astram/guard 0.13.0 → 0.15.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/auth/auth.module.d.ts.map +1 -1
- package/dist/auth/auth.module.js +57 -30
- package/dist/auth/connections.d.ts +2 -2
- package/dist/auth/connections.d.ts.map +1 -1
- package/dist/auth/connections.js +4 -13
- package/dist/authentication/mariadb-api-key-store.d.ts +10 -1
- package/dist/authentication/mariadb-api-key-store.d.ts.map +1 -1
- package/dist/authentication/mariadb-api-key-store.js +20 -10
- package/dist/authentication/mariadb-credential-resolver.d.ts +8 -1
- package/dist/authentication/mariadb-credential-resolver.d.ts.map +1 -1
- package/dist/authentication/mariadb-credential-resolver.js +15 -5
- package/dist/authentication/mariadb-credential-writer.d.ts +6 -1
- package/dist/authentication/mariadb-credential-writer.d.ts.map +1 -1
- package/dist/authentication/mariadb-credential-writer.js +9 -3
- package/dist/authentication/mariadb-email-address-changer.d.ts +10 -1
- package/dist/authentication/mariadb-email-address-changer.d.ts.map +1 -1
- package/dist/authentication/mariadb-email-address-changer.js +22 -9
- package/dist/authentication/mariadb-email-change-token-store.d.ts +8 -1
- package/dist/authentication/mariadb-email-change-token-store.d.ts.map +1 -1
- package/dist/authentication/mariadb-email-change-token-store.js +18 -9
- package/dist/authentication/mariadb-mfa-device-store.d.ts +6 -1
- package/dist/authentication/mariadb-mfa-device-store.d.ts.map +1 -1
- package/dist/authentication/mariadb-mfa-device-store.js +22 -13
- package/dist/authentication/mariadb-profile-resolver.d.ts +6 -1
- package/dist/authentication/mariadb-profile-resolver.d.ts.map +1 -1
- package/dist/authentication/mariadb-profile-resolver.js +12 -6
- package/dist/authentication/mariadb-profile-writer.d.ts +6 -1
- package/dist/authentication/mariadb-profile-writer.d.ts.map +1 -1
- package/dist/authentication/mariadb-profile-writer.js +11 -4
- package/dist/authentication/mariadb-recovery-code-store.d.ts +6 -1
- package/dist/authentication/mariadb-recovery-code-store.d.ts.map +1 -1
- package/dist/authentication/mariadb-recovery-code-store.js +11 -5
- package/dist/authentication/mariadb-reset-token-store.d.ts +6 -1
- package/dist/authentication/mariadb-reset-token-store.d.ts.map +1 -1
- package/dist/authentication/mariadb-reset-token-store.js +11 -5
- package/dist/authentication/mariadb-session-sweeper.d.ts +6 -1
- package/dist/authentication/mariadb-session-sweeper.d.ts.map +1 -1
- package/dist/authentication/mariadb-session-sweeper.js +11 -5
- package/dist/authz/cross-tenant-grant-writer.d.ts.map +1 -1
- package/dist/authz/cross-tenant-grant-writer.js +4 -3
- package/dist/authz/list-scope-sql.d.ts +10 -2
- package/dist/authz/list-scope-sql.d.ts.map +1 -1
- package/dist/authz/list-scope-sql.js +4 -4
- package/dist/authz/mariadb-cross-tenant-grant-adapter.d.ts.map +1 -1
- package/dist/authz/mariadb-cross-tenant-grant-adapter.js +4 -3
- package/dist/authz/mariadb-list-scope-adapter.d.ts.map +1 -1
- package/dist/authz/mariadb-list-scope-adapter.js +4 -3
- package/dist/authz/mariadb-policy-store.d.ts.map +1 -1
- package/dist/authz/mariadb-policy-store.js +4 -3
- package/dist/authz/mariadb-record-rule-adapter.d.ts.map +1 -1
- package/dist/authz/mariadb-record-rule-adapter.js +4 -3
- package/dist/authz/mariadb-record-share-adapter.d.ts.map +1 -1
- package/dist/authz/mariadb-record-share-adapter.js +4 -3
- package/dist/authz/record-share-cascade.d.ts.map +1 -1
- package/dist/authz/record-share-cascade.js +4 -3
- package/dist/authz/record-share-writer.d.ts.map +1 -1
- package/dist/authz/record-share-writer.js +4 -3
- package/dist/authz/wire-record-authorization.d.ts +8 -0
- package/dist/authz/wire-record-authorization.d.ts.map +1 -1
- package/dist/authz/wire-record-authorization.js +14 -6
- package/dist/boot/boot-sequence.d.ts +4 -0
- package/dist/boot/boot-sequence.d.ts.map +1 -1
- package/dist/boot/boot-sequence.js +13 -1
- package/dist/boot/migration-ledger-check.d.ts +94 -0
- package/dist/boot/migration-ledger-check.d.ts.map +1 -0
- package/dist/boot/migration-ledger-check.js +280 -0
- package/dist/config/app-config.d.ts +72 -3
- package/dist/config/app-config.d.ts.map +1 -1
- package/dist/config/app-config.js +129 -7
- package/dist/config/config.module.d.ts +7 -0
- package/dist/config/config.module.d.ts.map +1 -1
- package/dist/config/config.module.js +13 -2
- package/dist/config/framework-schema-names.d.ts +29 -0
- package/dist/config/framework-schema-names.d.ts.map +1 -0
- package/dist/config/framework-schema-names.js +41 -0
- package/dist/config/loopback-host.d.ts +9 -0
- package/dist/config/loopback-host.d.ts.map +1 -0
- package/dist/config/loopback-host.js +19 -0
- package/dist/encryption/local-kek-crypto.d.ts +6 -0
- package/dist/encryption/local-kek-crypto.d.ts.map +1 -1
- package/dist/encryption/local-kek-crypto.js +8 -0
- package/dist/identity/identity-actions.d.ts +18 -7
- package/dist/identity/identity-actions.d.ts.map +1 -1
- package/dist/identity/identity-actions.js +16 -17
- package/dist/identity/module-registry.bridge.d.ts.map +1 -1
- package/dist/identity/module-registry.bridge.js +5 -3
- package/dist/identity/permission-facts.adapter.d.ts +7 -1
- package/dist/identity/permission-facts.adapter.d.ts.map +1 -1
- package/dist/identity/permission-facts.adapter.js +15 -6
- package/dist/index.d.ts +14 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -22
- package/dist/module/shield-tokens.d.ts +11 -0
- package/dist/module/shield-tokens.d.ts.map +1 -1
- package/dist/module/shield-tokens.js +12 -1
- package/dist/module/shield.module.d.ts +10 -0
- package/dist/module/shield.module.d.ts.map +1 -1
- package/dist/module/shield.module.js +78 -12
- package/dist/secrets/boot-secrets.d.ts +33 -0
- package/dist/secrets/boot-secrets.d.ts.map +1 -0
- package/dist/secrets/boot-secrets.js +180 -0
- package/dist/session/mariadb-session-record-store.d.ts +8 -1
- package/dist/session/mariadb-session-record-store.d.ts.map +1 -1
- package/dist/session/mariadb-session-record-store.js +23 -13
- package/dist/session/session-restriction-store.d.ts +8 -1
- package/dist/session/session-restriction-store.d.ts.map +1 -1
- package/dist/session/session-restriction-store.js +15 -5
- package/dist/storage/file-intake.interceptor.d.ts +54 -0
- package/dist/storage/file-intake.interceptor.d.ts.map +1 -0
- package/dist/storage/file-intake.interceptor.js +223 -0
- package/dist/storage/node-sha256-digest.d.ts +6 -0
- package/dist/storage/node-sha256-digest.d.ts.map +1 -0
- package/dist/storage/node-sha256-digest.js +15 -0
- package/dist/storage/object-store-boot-check.d.ts +16 -0
- package/dist/storage/object-store-boot-check.d.ts.map +1 -0
- package/dist/storage/object-store-boot-check.js +52 -0
- package/dist/storage/optional-peer.d.ts +10 -0
- package/dist/storage/optional-peer.d.ts.map +1 -0
- package/dist/storage/optional-peer.js +26 -0
- package/dist/storage/s3-object-store.d.ts +35 -0
- package/dist/storage/s3-object-store.d.ts.map +1 -0
- package/dist/storage/s3-object-store.js +238 -0
- package/dist/storage/storage.providers.d.ts +10 -0
- package/dist/storage/storage.providers.d.ts.map +1 -0
- package/dist/storage/storage.providers.js +104 -0
- package/migrations/1710000000006-CreateAuthzSchema.cjs +15 -4
- package/migrations/1710000000007-ExtendPermissionAndRolePermission.cjs +11 -3
- package/migrations/1710000000008-CreateAccessBundleTables.cjs +14 -4
- package/migrations/1710000000009-CreateRecordPermissionRule.cjs +15 -4
- package/migrations/1710000000014-CreateRecordShare.cjs +15 -4
- package/migrations/1710000000015-CreateScopeClosure.cjs +14 -4
- package/migrations/1710000000016-AlterCompanyParentFkRestrict.cjs +20 -9
- package/migrations/1710000000017-CreateServiceAccountKey.cjs +14 -4
- package/package.json +11 -3
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export { guardMigrationsDir } from './migrations-dir.js';
|
|
18
18
|
export { buildIdentityModuleRegistry } from './identity/module-registry.bridge.js';
|
|
19
|
-
export { MODULE_KEY, IDENTITY_ACTIONS, actionsFor } from './identity/identity-actions.js';
|
|
19
|
+
export { MODULE_KEY, IDENTITY_ACTIONS, CROSS_TENANT_GRANT_ACTIONS, RECORD_SHARE_ACTIONS, SERVICE_ACCOUNT_ACTIONS, actionsFor, actionsOf, } from './identity/identity-actions.js';
|
|
20
20
|
export { ShieldModule, SHIELD_DECISION_AUTHORITY, SHIELD_RECORD_AUTHORIZATION, type ShieldModuleOptions, type ShieldModuleAsyncOptions, type RecordAuthorizationInputs, } from './module/shield.module.js';
|
|
21
21
|
export { Public, Classified, CLASSIFICATION_METADATA, DEFAULT_CLASSIFIED_ACTION, normalizeClassification, } from './enforcement/classification.decorator.js';
|
|
22
22
|
export type { Classification } from './enforcement/classification.decorator.js';
|
|
@@ -35,6 +35,14 @@ export { stubDecisionAuthority, type Effect, type CoreDecisionAuthority, type Co
|
|
|
35
35
|
export { Argon2idPasswordHasher, argon2idHasherProvider, SHIELD_PASSWORD_HASHER, type Argon2idParams, } from './authentication/argon2id-password-hasher.js';
|
|
36
36
|
export { LocalKekCrypto } from './encryption/local-kek-crypto.js';
|
|
37
37
|
export { EncryptedFileSecretsProvider } from './secrets/encrypted-file-secrets.js';
|
|
38
|
+
export { resolveBootSecrets, createSecretsProviderFromEnv, assertNoUnresolvedSecretRefs, wasResolvedFromSecretRef, type ResolveBootSecretsOptions, } from './secrets/boot-secrets.js';
|
|
39
|
+
export { S3ObjectStore, type S3ObjectStoreConfig, type S3ObjectStoreOptions, } from './storage/s3-object-store.js';
|
|
40
|
+
export { NodeSha256Digest } from './storage/node-sha256-digest.js';
|
|
41
|
+
export { ObjectStoreBootCheck } from './storage/object-store-boot-check.js';
|
|
42
|
+
export { FileIntake, FILE_INTAKE_REQUEST_KEY, FILE_INTAKE_DEFAULT_MAX_BYTES, type FileIntakeOptions, type FileIntakeResult, } from './storage/file-intake.interceptor.js';
|
|
43
|
+
export type { ShieldStorageOption } from './storage/storage.providers.js';
|
|
44
|
+
export { SHIELD_OBJECT_STORE, SHIELD_FILE_INGEST } from './module/shield-tokens.js';
|
|
45
|
+
export { loadObjectStorageConfig, DEFAULT_OBJECT_STORAGE_MAX_BYTES, type ObjectStorageConfig, type LoadObjectStorageConfigOptions, } from './config/app-config.js';
|
|
38
46
|
export { MariaDbSessionRecordStore, SHIELD_SESSION_RECORD_STORE, RedisHotSessionStore, SHIELD_HOT_SESSION_STORE, RedisRecentRotationStore, type RedisRecentRotationStoreOptions, CryptoTokenGenerator, Sha256RefreshTokenHasher, SystemClock, cryptoTokenGeneratorProvider, refreshHasherProvider, systemClockProvider, SHIELD_TOKEN_GENERATOR, SHIELD_REFRESH_HASHER, SHIELD_CLOCK, HotRevokingSessionRecordStore, type SessionHotRevoker, type LineageSessionLookup, SHIELD_SESSION_LIFETIMES, ROTATE_GRACE_MS, accessBindingTtlMs, } from './session/index.js';
|
|
39
47
|
export { MariaDbRecordPermissionRuleAdapter, SHIELD_RECORD_RULE_PORT, type RuleQueryable, } from './authz/mariadb-record-rule-adapter.js';
|
|
40
48
|
export { MariaDbPolicyStore, SHIELD_POLICY_STORE, type RuleQueryable as PolicyStoreQueryable, } from './authz/mariadb-policy-store.js';
|
|
@@ -53,9 +61,12 @@ export { SHIELD_PERMISSION_VERSION_CACHE } from './auth/tokens.js';
|
|
|
53
61
|
export { SHIELD_SESSION_RESTRICTIONS } from './auth/tokens.js';
|
|
54
62
|
export { MariaDbSessionRestrictionStore, type SessionRestrictionStore, type SessionRebuildFacts, } from './session/session-restriction-store.js';
|
|
55
63
|
export { buildListScopeFn, type ListScopeFn } from './authz/wire-record-authorization.js';
|
|
56
|
-
export { BootSequence, assertPoolBudget } from './boot/boot-sequence.js';
|
|
64
|
+
export { BootSequence, assertPoolBudget, frameworkDatabasesLogLine } from './boot/boot-sequence.js';
|
|
65
|
+
export { FrameworkMigrationLedgerCheck, MigrationLedgerRegistry, SHIELD_MIGRATION_LEDGER_REGISTRY, assertFrameworkMigrationsApplied, frameworkMigrationIds, resolveMigrationLedger, resolveMigrationLedgerCheck, type MigrationLedgerCheckLocation, type FrameworkMigrationsCheckOptions, type FrameworkMigrationsCheckResult, type LedgerCheckLogger, type LedgerQuery, type MigrationLedgerLocation, } from './boot/migration-ledger-check.js';
|
|
57
66
|
export { APP_CONFIG } from './config/config.module.js';
|
|
58
|
-
export {
|
|
67
|
+
export { FRAMEWORK_SCHEMAS } from './config/config.module.js';
|
|
68
|
+
export type { FrameworkSchemaNames } from './config/framework-schema-names.js';
|
|
69
|
+
export { frameworkSchemasOf, loadAppConfig, loadPoolBudget, evaluatePoolBudget, DEFAULT_POOL_BUDGET, SCHEMA_SVC_POOL_HARD_CAP, type AppConfig, type PoolBudgetConfig, type PoolBudgetEvaluation, type RuntimeAccountPools, loadDbConfig, loadRedisConfig, loadSessionLifetimes, loadRefreshHmacKey, assertRefreshHmacKey, DEFAULT_DB_CONFIG, DEFAULT_REDIS_URL, type DbConfig, type RedisConfig, type SessionLifetimeOverrides, loadLoginIpLimit, loadRefreshReplayWindowMs, DEFAULT_LOGIN_IP_LIMIT, isDevOrTestNodeEnv, type LoginIpLimitConfig, loadDbTlsConfig, type DbTlsConfig, } from './config/app-config.js';
|
|
59
70
|
export { mariadbSslOption } from './auth/connections.js';
|
|
60
71
|
export { SHIELD_REDIS, SHIELD_CREDENTIAL_RESOLVER, SHIELD_PROFILE_RESOLVER, SHIELD_AUTHENTICATOR, SHIELD_SESSION_AUTHORITY, SHIELD_CREDENTIAL_WRITER, SHIELD_RESET_TOKEN_STORE, SHIELD_EMAIL_CHANGE_TOKEN_STORE, SHIELD_EMAIL_SENDER, SHIELD_RECOVERY_CODE_STORE, SHIELD_PROFILE_WRITER, SHIELD_SESSION_SWEEPER, SHIELD_AUDIT_SINK, SHIELD_MFA_DEVICE_STORE, SHIELD_TOTP_VERIFIER_OVERRIDE, } from './auth/tokens.js';
|
|
61
72
|
export { MariaDbCredentialResolver } from './authentication/mariadb-credential-resolver.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AASzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,sCAAsC,CAAC;AACnF,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,10 +16,10 @@
|
|
|
16
16
|
* `@nestjs/core`, `reflect-metadata`, `rxjs` so the host owns one copy of each.
|
|
17
17
|
*/
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.ScopeUnknownParentError = exports.ScopeDepthError = exports.ScopeCycleError = exports.buildClosureRows = exports.ConfirmEmailController = void 0;
|
|
19
|
+
exports.FileIntake = exports.ObjectStoreBootCheck = exports.NodeSha256Digest = exports.S3ObjectStore = exports.wasResolvedFromSecretRef = exports.assertNoUnresolvedSecretRefs = exports.createSecretsProviderFromEnv = exports.resolveBootSecrets = exports.EncryptedFileSecretsProvider = exports.LocalKekCrypto = exports.SHIELD_PASSWORD_HASHER = exports.argon2idHasherProvider = exports.Argon2idPasswordHasher = exports.stubDecisionAuthority = exports.GlobalEnforcementGuard = exports.NO_SESSION_FACTS = exports.SHIELD_SESSION_FACTS_ALS = exports.MariaDbApiKeyStore = exports.isApiKey = exports.extractBearerToken = exports.principalFromClaims = exports.resolveRequestAuth = exports.resolveRequestPrincipal = exports.SessionTokenBinder = exports.SHIELD_SERVICE_AUTHENTICATOR = exports.SHIELD_SESSION_TOKEN_BINDER = exports.CatalogGatabilityError = exports.CatalogReconciler = exports.OperationInventoryScanner = exports.uuidArrayField = exports.optionalUuidField = exports.uuidField = exports.UuidPipe = exports.normalizeClassification = exports.DEFAULT_CLASSIFIED_ACTION = exports.CLASSIFICATION_METADATA = exports.Classified = exports.Public = exports.SHIELD_RECORD_AUTHORIZATION = exports.SHIELD_DECISION_AUTHORITY = exports.ShieldModule = exports.actionsOf = exports.actionsFor = exports.SERVICE_ACCOUNT_ACTIONS = exports.RECORD_SHARE_ACTIONS = exports.CROSS_TENANT_GRANT_ACTIONS = exports.IDENTITY_ACTIONS = exports.MODULE_KEY = exports.buildIdentityModuleRegistry = exports.guardMigrationsDir = void 0;
|
|
20
|
+
exports.withRedisPermissionVersion = exports.buildRecordAuthorization = exports.SHIELD_OPERATION_AUTHORITY_PORT = exports.ManifestOperationAuthorityAdapter = exports.GrantStoreUnavailableError = exports.InvalidGrantError = exports.GrantNotPermittedError = exports.SHIELD_CROSS_TENANT_GRANT_WRITER = exports.CrossTenantGrantWriter = exports.SHIELD_CROSS_TENANT_GRANT_PORT = exports.MariaDbCrossTenantGrantAdapter = exports.makeShareDeleteCascade = exports.ShareStoreUnavailableError = exports.ShareNotPermittedError = exports.SHIELD_RECORD_SHARE_WRITER = exports.RecordShareWriter = exports.SHIELD_RECORD_SHARE_PORT = exports.MariaDbRecordShareAdapter = exports.UnknownScopeFieldError = exports.translateListScope = exports.SHIELD_LIST_SCOPE_PORT = exports.MariaDbListScopeAdapter = exports.SHIELD_POLICY_STORE = exports.MariaDbPolicyStore = exports.SHIELD_RECORD_RULE_PORT = exports.MariaDbRecordPermissionRuleAdapter = exports.accessBindingTtlMs = exports.ROTATE_GRACE_MS = exports.SHIELD_SESSION_LIFETIMES = exports.HotRevokingSessionRecordStore = exports.SHIELD_CLOCK = exports.SHIELD_REFRESH_HASHER = exports.SHIELD_TOKEN_GENERATOR = exports.systemClockProvider = exports.refreshHasherProvider = exports.cryptoTokenGeneratorProvider = exports.SystemClock = exports.Sha256RefreshTokenHasher = exports.CryptoTokenGenerator = exports.RedisRecentRotationStore = exports.SHIELD_HOT_SESSION_STORE = exports.RedisHotSessionStore = exports.SHIELD_SESSION_RECORD_STORE = exports.MariaDbSessionRecordStore = exports.DEFAULT_OBJECT_STORAGE_MAX_BYTES = exports.loadObjectStorageConfig = exports.SHIELD_FILE_INGEST = exports.SHIELD_OBJECT_STORE = exports.FILE_INTAKE_DEFAULT_MAX_BYTES = exports.FILE_INTAKE_REQUEST_KEY = void 0;
|
|
21
|
+
exports.SHIELD_SESSION_SWEEPER = exports.SHIELD_PROFILE_WRITER = exports.SHIELD_RECOVERY_CODE_STORE = exports.SHIELD_EMAIL_SENDER = exports.SHIELD_EMAIL_CHANGE_TOKEN_STORE = exports.SHIELD_RESET_TOKEN_STORE = exports.SHIELD_CREDENTIAL_WRITER = exports.SHIELD_SESSION_AUTHORITY = exports.SHIELD_AUTHENTICATOR = exports.SHIELD_PROFILE_RESOLVER = exports.SHIELD_CREDENTIAL_RESOLVER = exports.SHIELD_REDIS = exports.mariadbSslOption = exports.loadDbTlsConfig = exports.isDevOrTestNodeEnv = exports.DEFAULT_LOGIN_IP_LIMIT = exports.loadRefreshReplayWindowMs = exports.loadLoginIpLimit = exports.DEFAULT_REDIS_URL = exports.DEFAULT_DB_CONFIG = exports.assertRefreshHmacKey = exports.loadRefreshHmacKey = exports.loadSessionLifetimes = exports.loadRedisConfig = exports.loadDbConfig = exports.SCHEMA_SVC_POOL_HARD_CAP = exports.DEFAULT_POOL_BUDGET = exports.evaluatePoolBudget = exports.loadPoolBudget = exports.loadAppConfig = exports.frameworkSchemasOf = exports.FRAMEWORK_SCHEMAS = exports.APP_CONFIG = exports.resolveMigrationLedgerCheck = exports.resolveMigrationLedger = exports.frameworkMigrationIds = exports.assertFrameworkMigrationsApplied = exports.SHIELD_MIGRATION_LEDGER_REGISTRY = exports.MigrationLedgerRegistry = exports.FrameworkMigrationLedgerCheck = exports.frameworkDatabasesLogLine = exports.assertPoolBudget = exports.BootSequence = exports.buildListScopeFn = exports.MariaDbSessionRestrictionStore = exports.SHIELD_SESSION_RESTRICTIONS = exports.SHIELD_PERMISSION_VERSION_CACHE = exports.DEFAULT_PERMISSION_VERSION_TTL_MS = exports.PERMISSION_VERSION_KEY_PREFIX = exports.RedisPermissionVersionCache = void 0;
|
|
22
|
+
exports.ScopeUnknownParentError = exports.ScopeDepthError = exports.ScopeCycleError = exports.buildClosureRows = exports.ConfirmEmailController = exports.AccountController = exports.generateRecoveryCodes = exports.buildOtpauthUri = exports.generateTotpSecret = exports.SHIELD_LOGIN_TOTP_VERIFIER = exports.SHIELD_MFA_STEP_UP = exports.SHIELD_MFA_LIMITER = exports.challengeMatches = exports.credentialFingerprint = exports.CredentialMfaStepUp = exports.RedisPendingMfaStore = exports.PendingMfaStore = exports.AuthController = exports.SHIELD_SCOPE_SUBTREE_RESOLVER = exports.SHIELD_SESSION_FACTS_PROJECTOR = exports.ProfileNameTakenError = exports.MariaDbEmailAddressChanger = exports.maskEmail = exports.isEmailShaped = exports.canonicalEmail = exports.hmacSha1 = exports.resolveTotpVerifier = exports.makeDefaultTotpVerifier = exports.AuthModule = exports.MariaDbCredentialResolver = exports.SHIELD_TOTP_VERIFIER_OVERRIDE = exports.SHIELD_MFA_DEVICE_STORE = exports.SHIELD_AUDIT_SINK = void 0;
|
|
23
23
|
// Framework authz migrations (shield_authz DDL — permission / role_permission /
|
|
24
24
|
// authz_permission_version). Absolute path a consumer's `@astram/migrate` setup merges in.
|
|
25
25
|
var migrations_dir_js_1 = require("./migrations-dir.js");
|
|
@@ -36,7 +36,11 @@ Object.defineProperty(exports, "buildIdentityModuleRegistry", { enumerable: true
|
|
|
36
36
|
var identity_actions_js_1 = require("./identity/identity-actions.js");
|
|
37
37
|
Object.defineProperty(exports, "MODULE_KEY", { enumerable: true, get: function () { return identity_actions_js_1.MODULE_KEY; } });
|
|
38
38
|
Object.defineProperty(exports, "IDENTITY_ACTIONS", { enumerable: true, get: function () { return identity_actions_js_1.IDENTITY_ACTIONS; } });
|
|
39
|
+
Object.defineProperty(exports, "CROSS_TENANT_GRANT_ACTIONS", { enumerable: true, get: function () { return identity_actions_js_1.CROSS_TENANT_GRANT_ACTIONS; } });
|
|
40
|
+
Object.defineProperty(exports, "RECORD_SHARE_ACTIONS", { enumerable: true, get: function () { return identity_actions_js_1.RECORD_SHARE_ACTIONS; } });
|
|
41
|
+
Object.defineProperty(exports, "SERVICE_ACCOUNT_ACTIONS", { enumerable: true, get: function () { return identity_actions_js_1.SERVICE_ACCOUNT_ACTIONS; } });
|
|
39
42
|
Object.defineProperty(exports, "actionsFor", { enumerable: true, get: function () { return identity_actions_js_1.actionsFor; } });
|
|
43
|
+
Object.defineProperty(exports, "actionsOf", { enumerable: true, get: function () { return identity_actions_js_1.actionsOf; } });
|
|
40
44
|
// The single registration seam.
|
|
41
45
|
var shield_module_js_1 = require("./module/shield.module.js");
|
|
42
46
|
Object.defineProperty(exports, "ShieldModule", { enumerable: true, get: function () { return shield_module_js_1.ShieldModule; } });
|
|
@@ -129,6 +133,32 @@ Object.defineProperty(exports, "LocalKekCrypto", { enumerable: true, get: functi
|
|
|
129
133
|
// real values are resolved at boot. Vault / AWS SM / GCP SM implement the same port.
|
|
130
134
|
var encrypted_file_secrets_js_1 = require("./secrets/encrypted-file-secrets.js");
|
|
131
135
|
Object.defineProperty(exports, "EncryptedFileSecretsProvider", { enumerable: true, get: function () { return encrypted_file_secrets_js_1.EncryptedFileSecretsProvider; } });
|
|
136
|
+
// Boot `secret-ref:` resolution (FILE_STORAGE SPEC §5 L-N): `resolveBootSecrets()` first in
|
|
137
|
+
// main.ts; the provider is built from `SECRETS_*`; the backstop aborts boot on a leftover reference.
|
|
138
|
+
var boot_secrets_js_1 = require("./secrets/boot-secrets.js");
|
|
139
|
+
Object.defineProperty(exports, "resolveBootSecrets", { enumerable: true, get: function () { return boot_secrets_js_1.resolveBootSecrets; } });
|
|
140
|
+
Object.defineProperty(exports, "createSecretsProviderFromEnv", { enumerable: true, get: function () { return boot_secrets_js_1.createSecretsProviderFromEnv; } });
|
|
141
|
+
Object.defineProperty(exports, "assertNoUnresolvedSecretRefs", { enumerable: true, get: function () { return boot_secrets_js_1.assertNoUnresolvedSecretRefs; } });
|
|
142
|
+
Object.defineProperty(exports, "wasResolvedFromSecretRef", { enumerable: true, get: function () { return boot_secrets_js_1.wasResolvedFromSecretRef; } });
|
|
143
|
+
// Object storage (FILE_STORAGE SPEC §5 E-H, §6): the SSE-S3 adapter, the node sha256 digest, the
|
|
144
|
+
// env loader, the boot check, the multipart intake interceptor and the two DI tokens
|
|
145
|
+
// (`ShieldModule.forRoot({ storage })` binds them).
|
|
146
|
+
var s3_object_store_js_1 = require("./storage/s3-object-store.js");
|
|
147
|
+
Object.defineProperty(exports, "S3ObjectStore", { enumerable: true, get: function () { return s3_object_store_js_1.S3ObjectStore; } });
|
|
148
|
+
var node_sha256_digest_js_1 = require("./storage/node-sha256-digest.js");
|
|
149
|
+
Object.defineProperty(exports, "NodeSha256Digest", { enumerable: true, get: function () { return node_sha256_digest_js_1.NodeSha256Digest; } });
|
|
150
|
+
var object_store_boot_check_js_1 = require("./storage/object-store-boot-check.js");
|
|
151
|
+
Object.defineProperty(exports, "ObjectStoreBootCheck", { enumerable: true, get: function () { return object_store_boot_check_js_1.ObjectStoreBootCheck; } });
|
|
152
|
+
var file_intake_interceptor_js_1 = require("./storage/file-intake.interceptor.js");
|
|
153
|
+
Object.defineProperty(exports, "FileIntake", { enumerable: true, get: function () { return file_intake_interceptor_js_1.FileIntake; } });
|
|
154
|
+
Object.defineProperty(exports, "FILE_INTAKE_REQUEST_KEY", { enumerable: true, get: function () { return file_intake_interceptor_js_1.FILE_INTAKE_REQUEST_KEY; } });
|
|
155
|
+
Object.defineProperty(exports, "FILE_INTAKE_DEFAULT_MAX_BYTES", { enumerable: true, get: function () { return file_intake_interceptor_js_1.FILE_INTAKE_DEFAULT_MAX_BYTES; } });
|
|
156
|
+
var shield_tokens_js_1 = require("./module/shield-tokens.js");
|
|
157
|
+
Object.defineProperty(exports, "SHIELD_OBJECT_STORE", { enumerable: true, get: function () { return shield_tokens_js_1.SHIELD_OBJECT_STORE; } });
|
|
158
|
+
Object.defineProperty(exports, "SHIELD_FILE_INGEST", { enumerable: true, get: function () { return shield_tokens_js_1.SHIELD_FILE_INGEST; } });
|
|
159
|
+
var app_config_js_1 = require("./config/app-config.js");
|
|
160
|
+
Object.defineProperty(exports, "loadObjectStorageConfig", { enumerable: true, get: function () { return app_config_js_1.loadObjectStorageConfig; } });
|
|
161
|
+
Object.defineProperty(exports, "DEFAULT_OBJECT_STORAGE_MAX_BYTES", { enumerable: true, get: function () { return app_config_js_1.DEFAULT_OBJECT_STORAGE_MAX_BYTES; } });
|
|
132
162
|
// The Session storage/crypto adapters (ADR-0003 / ADR-0013): the concrete durable
|
|
133
163
|
// (MariaDB) + hot (Redis) stores, the node:crypto token generator, the keyed HMAC
|
|
134
164
|
// refresh hasher, and the system clock — all implementing `@astram/core`'s Session
|
|
@@ -287,6 +317,17 @@ Object.defineProperty(exports, "buildListScopeFn", { enumerable: true, get: func
|
|
|
287
317
|
var boot_sequence_js_1 = require("./boot/boot-sequence.js");
|
|
288
318
|
Object.defineProperty(exports, "BootSequence", { enumerable: true, get: function () { return boot_sequence_js_1.BootSequence; } });
|
|
289
319
|
Object.defineProperty(exports, "assertPoolBudget", { enumerable: true, get: function () { return boot_sequence_js_1.assertPoolBudget; } });
|
|
320
|
+
Object.defineProperty(exports, "frameworkDatabasesLogLine", { enumerable: true, get: function () { return boot_sequence_js_1.frameworkDatabasesLogLine; } });
|
|
321
|
+
// configurable-framework-db spec 5.D: the boot-time migration ledger check. Guard runs it for its
|
|
322
|
+
// own migrations; `@astram/identity` runs the same helper for its own (ADR-0003).
|
|
323
|
+
var migration_ledger_check_js_1 = require("./boot/migration-ledger-check.js");
|
|
324
|
+
Object.defineProperty(exports, "FrameworkMigrationLedgerCheck", { enumerable: true, get: function () { return migration_ledger_check_js_1.FrameworkMigrationLedgerCheck; } });
|
|
325
|
+
Object.defineProperty(exports, "MigrationLedgerRegistry", { enumerable: true, get: function () { return migration_ledger_check_js_1.MigrationLedgerRegistry; } });
|
|
326
|
+
Object.defineProperty(exports, "SHIELD_MIGRATION_LEDGER_REGISTRY", { enumerable: true, get: function () { return migration_ledger_check_js_1.SHIELD_MIGRATION_LEDGER_REGISTRY; } });
|
|
327
|
+
Object.defineProperty(exports, "assertFrameworkMigrationsApplied", { enumerable: true, get: function () { return migration_ledger_check_js_1.assertFrameworkMigrationsApplied; } });
|
|
328
|
+
Object.defineProperty(exports, "frameworkMigrationIds", { enumerable: true, get: function () { return migration_ledger_check_js_1.frameworkMigrationIds; } });
|
|
329
|
+
Object.defineProperty(exports, "resolveMigrationLedger", { enumerable: true, get: function () { return migration_ledger_check_js_1.resolveMigrationLedger; } });
|
|
330
|
+
Object.defineProperty(exports, "resolveMigrationLedgerCheck", { enumerable: true, get: function () { return migration_ledger_check_js_1.resolveMigrationLedgerCheck; } });
|
|
290
331
|
// Application config surface (port / environment / ADR-0018 pool budget). The
|
|
291
332
|
// consumer skeleton reads `loadAppConfig()` for its HTTP port; the boot assertion
|
|
292
333
|
// validates the pool budget. The `APP_CONFIG` DI token is exported; `ConfigModule`
|
|
@@ -294,29 +335,34 @@ Object.defineProperty(exports, "assertPoolBudget", { enumerable: true, get: func
|
|
|
294
335
|
// the one seam can honor caller-supplied config.
|
|
295
336
|
var config_module_js_1 = require("./config/config.module.js");
|
|
296
337
|
Object.defineProperty(exports, "APP_CONFIG", { enumerable: true, get: function () { return config_module_js_1.APP_CONFIG; } });
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
Object.defineProperty(exports, "
|
|
301
|
-
|
|
302
|
-
Object.defineProperty(exports, "
|
|
338
|
+
// configurable-framework-db (ADR-0037): the resolved framework database names, provided
|
|
339
|
+
// app-wide by `ShieldModule`; identity and app modules inject it instead of `shield_*` literals.
|
|
340
|
+
var config_module_js_2 = require("./config/config.module.js");
|
|
341
|
+
Object.defineProperty(exports, "FRAMEWORK_SCHEMAS", { enumerable: true, get: function () { return config_module_js_2.FRAMEWORK_SCHEMAS; } });
|
|
342
|
+
var app_config_js_2 = require("./config/app-config.js");
|
|
343
|
+
Object.defineProperty(exports, "frameworkSchemasOf", { enumerable: true, get: function () { return app_config_js_2.frameworkSchemasOf; } });
|
|
344
|
+
Object.defineProperty(exports, "loadAppConfig", { enumerable: true, get: function () { return app_config_js_2.loadAppConfig; } });
|
|
345
|
+
Object.defineProperty(exports, "loadPoolBudget", { enumerable: true, get: function () { return app_config_js_2.loadPoolBudget; } });
|
|
346
|
+
Object.defineProperty(exports, "evaluatePoolBudget", { enumerable: true, get: function () { return app_config_js_2.evaluatePoolBudget; } });
|
|
347
|
+
Object.defineProperty(exports, "DEFAULT_POOL_BUDGET", { enumerable: true, get: function () { return app_config_js_2.DEFAULT_POOL_BUDGET; } });
|
|
348
|
+
Object.defineProperty(exports, "SCHEMA_SVC_POOL_HARD_CAP", { enumerable: true, get: function () { return app_config_js_2.SCHEMA_SVC_POOL_HARD_CAP; } });
|
|
303
349
|
// Phase 0b Auth-surface config (additive): the DB/Redis/lifetime loaders + the
|
|
304
350
|
// required-secret resolver/gate + the new config shapes.
|
|
305
|
-
Object.defineProperty(exports, "loadDbConfig", { enumerable: true, get: function () { return
|
|
306
|
-
Object.defineProperty(exports, "loadRedisConfig", { enumerable: true, get: function () { return
|
|
307
|
-
Object.defineProperty(exports, "loadSessionLifetimes", { enumerable: true, get: function () { return
|
|
308
|
-
Object.defineProperty(exports, "loadRefreshHmacKey", { enumerable: true, get: function () { return
|
|
309
|
-
Object.defineProperty(exports, "assertRefreshHmacKey", { enumerable: true, get: function () { return
|
|
310
|
-
Object.defineProperty(exports, "DEFAULT_DB_CONFIG", { enumerable: true, get: function () { return
|
|
311
|
-
Object.defineProperty(exports, "DEFAULT_REDIS_URL", { enumerable: true, get: function () { return
|
|
351
|
+
Object.defineProperty(exports, "loadDbConfig", { enumerable: true, get: function () { return app_config_js_2.loadDbConfig; } });
|
|
352
|
+
Object.defineProperty(exports, "loadRedisConfig", { enumerable: true, get: function () { return app_config_js_2.loadRedisConfig; } });
|
|
353
|
+
Object.defineProperty(exports, "loadSessionLifetimes", { enumerable: true, get: function () { return app_config_js_2.loadSessionLifetimes; } });
|
|
354
|
+
Object.defineProperty(exports, "loadRefreshHmacKey", { enumerable: true, get: function () { return app_config_js_2.loadRefreshHmacKey; } });
|
|
355
|
+
Object.defineProperty(exports, "assertRefreshHmacKey", { enumerable: true, get: function () { return app_config_js_2.assertRefreshHmacKey; } });
|
|
356
|
+
Object.defineProperty(exports, "DEFAULT_DB_CONFIG", { enumerable: true, get: function () { return app_config_js_2.DEFAULT_DB_CONFIG; } });
|
|
357
|
+
Object.defineProperty(exports, "DEFAULT_REDIS_URL", { enumerable: true, get: function () { return app_config_js_2.DEFAULT_REDIS_URL; } });
|
|
312
358
|
// Security hardening #5/#6 (additive): the per-IP login failure limit (D3) and the
|
|
313
359
|
// raw-NODE_ENV dev/test predicate that gates the dev email logger.
|
|
314
|
-
Object.defineProperty(exports, "loadLoginIpLimit", { enumerable: true, get: function () { return
|
|
315
|
-
Object.defineProperty(exports, "loadRefreshReplayWindowMs", { enumerable: true, get: function () { return
|
|
316
|
-
Object.defineProperty(exports, "DEFAULT_LOGIN_IP_LIMIT", { enumerable: true, get: function () { return
|
|
317
|
-
Object.defineProperty(exports, "isDevOrTestNodeEnv", { enumerable: true, get: function () { return
|
|
360
|
+
Object.defineProperty(exports, "loadLoginIpLimit", { enumerable: true, get: function () { return app_config_js_2.loadLoginIpLimit; } });
|
|
361
|
+
Object.defineProperty(exports, "loadRefreshReplayWindowMs", { enumerable: true, get: function () { return app_config_js_2.loadRefreshReplayWindowMs; } });
|
|
362
|
+
Object.defineProperty(exports, "DEFAULT_LOGIN_IP_LIMIT", { enumerable: true, get: function () { return app_config_js_2.DEFAULT_LOGIN_IP_LIMIT; } });
|
|
363
|
+
Object.defineProperty(exports, "isDevOrTestNodeEnv", { enumerable: true, get: function () { return app_config_js_2.isDevOrTestNodeEnv; } });
|
|
318
364
|
// Phase 16 (additive): TLS to MariaDB (APP_DB_TLS / APP_DB_TLS_CA).
|
|
319
|
-
Object.defineProperty(exports, "loadDbTlsConfig", { enumerable: true, get: function () { return
|
|
365
|
+
Object.defineProperty(exports, "loadDbTlsConfig", { enumerable: true, get: function () { return app_config_js_2.loadDbTlsConfig; } });
|
|
320
366
|
// Phase 16: the driver `ssl` option every framework pool uses (identity's pools build on it).
|
|
321
367
|
var connections_js_1 = require("./auth/connections.js");
|
|
322
368
|
Object.defineProperty(exports, "mariadbSslOption", { enumerable: true, get: function () { return connections_js_1.mariadbSslOption; } });
|
|
@@ -29,4 +29,15 @@ export { SHIELD_DECISION_AUTHORITY } from '@astram/core';
|
|
|
29
29
|
* `ShieldModule.forRoot({ decisionAuthority })`. Two of them fail the boot.
|
|
30
30
|
*/
|
|
31
31
|
export declare const SHIELD_RECORD_AUTHORIZATION: unique symbol;
|
|
32
|
+
/**
|
|
33
|
+
* The app's `ObjectStore` (`@astram/core`; FILE_STORAGE SPEC §6), provided app-wide by
|
|
34
|
+
* `ShieldModule.forRoot({ storage })`: the given instance, an `S3ObjectStore` built from
|
|
35
|
+
* `OBJECT_STORAGE_*` (`'env'`), or `null` when storage is not configured (callers answer 501).
|
|
36
|
+
*/
|
|
37
|
+
export declare const SHIELD_OBJECT_STORE: unique symbol;
|
|
38
|
+
/**
|
|
39
|
+
* The pure file ingest check (`@astram/core` `createFileIngest` over `NodeSha256Digest`) that
|
|
40
|
+
* `FileIntake` runs after multipart parsing. Always provided by `ShieldModule`.
|
|
41
|
+
*/
|
|
42
|
+
export declare const SHIELD_FILE_INGEST: unique symbol;
|
|
32
43
|
//# sourceMappingURL=shield-tokens.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shield-tokens.d.ts","sourceRoot":"","sources":["../../src/module/shield-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,eAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"shield-tokens.d.ts","sourceRoot":"","sources":["../../src/module/shield-tokens.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;GAUG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,eAAgC,CAAC;AAEjE;;;GAGG;AACH,eAAO,MAAM,kBAAkB,eAA+B,CAAC"}
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* with no cycle. `shield.module.ts` re-exports these for the public barrel.
|
|
8
8
|
*/
|
|
9
9
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
-
exports.SHIELD_RECORD_AUTHORIZATION = exports.SHIELD_DECISION_AUTHORITY = void 0;
|
|
10
|
+
exports.SHIELD_FILE_INGEST = exports.SHIELD_OBJECT_STORE = exports.SHIELD_RECORD_AUTHORIZATION = exports.SHIELD_DECISION_AUTHORITY = void 0;
|
|
11
11
|
/**
|
|
12
12
|
* The Core decision authority (`@astram/core`'s `DecisionAuthority`) — the single
|
|
13
13
|
* ADR-0001 decision entry both the global enforcement guard and the engine's
|
|
@@ -33,3 +33,14 @@ Object.defineProperty(exports, "SHIELD_DECISION_AUTHORITY", { enumerable: true,
|
|
|
33
33
|
* `ShieldModule.forRoot({ decisionAuthority })`. Two of them fail the boot.
|
|
34
34
|
*/
|
|
35
35
|
exports.SHIELD_RECORD_AUTHORIZATION = Symbol('SHIELD_RECORD_AUTHORIZATION');
|
|
36
|
+
/**
|
|
37
|
+
* The app's `ObjectStore` (`@astram/core`; FILE_STORAGE SPEC §6), provided app-wide by
|
|
38
|
+
* `ShieldModule.forRoot({ storage })`: the given instance, an `S3ObjectStore` built from
|
|
39
|
+
* `OBJECT_STORAGE_*` (`'env'`), or `null` when storage is not configured (callers answer 501).
|
|
40
|
+
*/
|
|
41
|
+
exports.SHIELD_OBJECT_STORE = Symbol('SHIELD_OBJECT_STORE');
|
|
42
|
+
/**
|
|
43
|
+
* The pure file ingest check (`@astram/core` `createFileIngest` over `NodeSha256Digest`) that
|
|
44
|
+
* `FileIntake` runs after multipart parsing. Always provided by `ShieldModule`.
|
|
45
|
+
*/
|
|
46
|
+
exports.SHIELD_FILE_INGEST = Symbol('SHIELD_FILE_INGEST');
|
|
@@ -17,6 +17,7 @@ import type { CoreDecisionAuthority } from '../enforcement/core-seam.js';
|
|
|
17
17
|
import { type AppConfig } from '../config/app-config.js';
|
|
18
18
|
import { SHIELD_DECISION_AUTHORITY, SHIELD_RECORD_AUTHORIZATION } from './shield-tokens.js';
|
|
19
19
|
export { SHIELD_DECISION_AUTHORITY, SHIELD_RECORD_AUTHORIZATION };
|
|
20
|
+
import { type ShieldStorageOption } from '../storage/storage.providers.js';
|
|
20
21
|
export type { RecordAuthorizationInputs } from '../authz/wire-record-authorization.js';
|
|
21
22
|
/**
|
|
22
23
|
* Options for {@link ShieldModule.forRoot}. Intentionally minimal (ADR-0023 §7 —
|
|
@@ -196,6 +197,13 @@ export interface ShieldModuleOptions {
|
|
|
196
197
|
* loopback (`localhost`, `127.0.0.1`, `::1`, `0.0.0.0`), unless `emailSender: 'disabled'`.
|
|
197
198
|
*/
|
|
198
199
|
readonly emailChangeLinkBaseUrl?: string;
|
|
200
|
+
/**
|
|
201
|
+
* OPTIONAL object storage (FILE_STORAGE SPEC §6): an `ObjectStore` instance, or `'env'` to build
|
|
202
|
+
* an `S3ObjectStore` from `OBJECT_STORAGE_*` (`loadObjectStorageConfig`; storage stays off when
|
|
203
|
+
* `OBJECT_STORAGE_BUCKET` is unset). Bound under `SHIELD_OBJECT_STORE` (`null` when absent) and
|
|
204
|
+
* pinged at boot (fail closed). `SHIELD_FILE_INGEST` (used by `FileIntake`) is always bound.
|
|
205
|
+
*/
|
|
206
|
+
readonly storage?: ShieldStorageOption;
|
|
199
207
|
}
|
|
200
208
|
/** Async variant of {@link ShieldModuleOptions} (DI-computed config). */
|
|
201
209
|
export interface ShieldModuleAsyncOptions {
|
|
@@ -303,6 +311,8 @@ export interface ShieldModuleAsyncOptions {
|
|
|
303
311
|
readonly membershipChecker?: MembershipChecker;
|
|
304
312
|
/** See {@link ShieldModuleOptions.emailChangeLinkBaseUrl}. STATIC here (registration-time). */
|
|
305
313
|
readonly emailChangeLinkBaseUrl?: string;
|
|
314
|
+
/** See {@link ShieldModuleOptions.storage}. STATIC here (registration-time, like `auth`). */
|
|
315
|
+
readonly storage?: ShieldStorageOption;
|
|
306
316
|
}
|
|
307
317
|
/**
|
|
308
318
|
* `ShieldModule` — the SINGLE registration seam (ADR-0023 §4).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shield.module.d.ts","sourceRoot":"","sources":["../../src/module/shield.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,aAAa,EAAiB,MAAM,gBAAgB,CAAC;AAOnF,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"shield.module.d.ts","sourceRoot":"","sources":["../../src/module/shield.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,8 +46,28 @@ const node_url_1 = require("node:url");
|
|
|
46
46
|
const core_seam_js_1 = require("../enforcement/core-seam.js");
|
|
47
47
|
const enforcement_module_js_1 = require("../enforcement/enforcement.module.js");
|
|
48
48
|
const boot_module_js_1 = require("../boot/boot.module.js");
|
|
49
|
+
const migration_ledger_check_js_1 = require("../boot/migration-ledger-check.js");
|
|
49
50
|
const config_module_js_1 = require("../config/config.module.js");
|
|
50
51
|
const app_config_js_1 = require("../config/app-config.js");
|
|
52
|
+
/**
|
|
53
|
+
* `FRAMEWORK_SCHEMAS` from `APP_CONFIG` (configurable-framework-db, ADR-0037): resolved once
|
|
54
|
+
* at boot, the same frozen names every framework store and module receives.
|
|
55
|
+
*/
|
|
56
|
+
const frameworkSchemasProvider = {
|
|
57
|
+
provide: config_module_js_1.FRAMEWORK_SCHEMAS,
|
|
58
|
+
useFactory: (config) => (0, app_config_js_1.frameworkSchemasOf)(config),
|
|
59
|
+
inject: [config_module_js_1.APP_CONFIG],
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* configurable-framework-db spec 5.D: one {@link MigrationLedgerRegistry} per application, so
|
|
63
|
+
* guard's (`AuthModule`) and identity's ledger checks share ONE read per ledger location. Holds
|
|
64
|
+
* no connection; an enforcement-only app registers no check and so reads nothing.
|
|
65
|
+
*/
|
|
66
|
+
const migrationLedgerRegistryProvider = {
|
|
67
|
+
provide: migration_ledger_check_js_1.SHIELD_MIGRATION_LEDGER_REGISTRY,
|
|
68
|
+
useFactory: () => new migration_ledger_check_js_1.MigrationLedgerRegistry(),
|
|
69
|
+
};
|
|
70
|
+
const boot_secrets_js_1 = require("../secrets/boot-secrets.js");
|
|
51
71
|
// Static import is SAFE: auth.module.ts top-level-imports @astram/core as TYPES
|
|
52
72
|
// only (it loads core's ESM factory VALUES lazily inside its async provider
|
|
53
73
|
// factories — see auth.module.ts loadCore()). So pulling AuthModule here does NOT
|
|
@@ -64,6 +84,8 @@ const tokens_js_1 = require("../auth/tokens.js");
|
|
|
64
84
|
const shield_tokens_js_1 = require("./shield-tokens.js");
|
|
65
85
|
Object.defineProperty(exports, "SHIELD_DECISION_AUTHORITY", { enumerable: true, get: function () { return shield_tokens_js_1.SHIELD_DECISION_AUTHORITY; } });
|
|
66
86
|
Object.defineProperty(exports, "SHIELD_RECORD_AUTHORIZATION", { enumerable: true, get: function () { return shield_tokens_js_1.SHIELD_RECORD_AUTHORIZATION; } });
|
|
87
|
+
// FILE_STORAGE SPEC §6: the `storage` option (S3 adapter loaded lazily inside the provider).
|
|
88
|
+
const storage_providers_js_1 = require("../storage/storage.providers.js");
|
|
67
89
|
/**
|
|
68
90
|
* A `Function`-wrapped dynamic `import()` that survives the CommonJS **build** — the same
|
|
69
91
|
* shim as auth.module.ts's `evalImport`. Under `module: commonjs`, `tsc` would rewrite a
|
|
@@ -135,7 +157,10 @@ async function resolveDecisionAuthority(options, extras = {}) {
|
|
|
135
157
|
'supply the record-authorization inputs (pool + app ports + registry) so the framework ' +
|
|
136
158
|
'builds the decision authority, OR a pre-built `decisionAuthority`, but not both.');
|
|
137
159
|
}
|
|
138
|
-
const
|
|
160
|
+
const supplied = provided ?? options.recordAuthorization;
|
|
161
|
+
const recordAuthorization = supplied && supplied.schemas === undefined && extras.schemas !== undefined
|
|
162
|
+
? { ...supplied, schemas: extras.schemas }
|
|
163
|
+
: supplied;
|
|
139
164
|
if (recordAuthorization) {
|
|
140
165
|
const api = await loadBuildRecordAuthorization();
|
|
141
166
|
const versionCache = extras.versionCache ?? undefined;
|
|
@@ -165,6 +190,15 @@ const OPTIONAL_RECORD_AUTHORIZATION = {
|
|
|
165
190
|
token: shield_tokens_js_1.SHIELD_RECORD_AUTHORIZATION,
|
|
166
191
|
optional: true,
|
|
167
192
|
};
|
|
193
|
+
/**
|
|
194
|
+
* Config read straight from `process.env`: refuse to boot while a `secret-ref:` is still unresolved
|
|
195
|
+
* there. A caller-supplied `config` (e.g. from `loadAppConfigAsync`) is already resolved and is not
|
|
196
|
+
* re-checked against the raw env.
|
|
197
|
+
*/
|
|
198
|
+
function loadEnvAppConfig() {
|
|
199
|
+
(0, boot_secrets_js_1.assertNoUnresolvedSecretRefs)(process.env);
|
|
200
|
+
return (0, app_config_js_1.loadAppConfig)();
|
|
201
|
+
}
|
|
168
202
|
/**
|
|
169
203
|
* `ShieldModule` — the SINGLE registration seam (ADR-0023 §4).
|
|
170
204
|
*
|
|
@@ -192,7 +226,7 @@ const OPTIONAL_RECORD_AUTHORIZATION = {
|
|
|
192
226
|
let ShieldModule = ShieldModule_1 = class ShieldModule {
|
|
193
227
|
/** Register Shield with static options (the common path). */
|
|
194
228
|
static forRoot(options = {}) {
|
|
195
|
-
const config = options.config ?? (
|
|
229
|
+
const config = options.config ?? loadEnvAppConfig();
|
|
196
230
|
// ADR-0035: with auth on and no explicit projector, sessions cache the facts the framework-built
|
|
197
231
|
// authority decides on (attached when the authority is built; inactive until then).
|
|
198
232
|
const defaultProjector = defaultProjectorFor(options.auth, options.sessionFactsProjector);
|
|
@@ -262,23 +296,34 @@ let ShieldModule = ShieldModule_1 = class ShieldModule {
|
|
|
262
296
|
// stub paths resolve synchronously but flow through the same one seam. Both
|
|
263
297
|
// supplied → throws (mutual exclusion).
|
|
264
298
|
provide: shield_tokens_js_1.SHIELD_DECISION_AUTHORITY,
|
|
265
|
-
useFactory: (versionCache, providedRecordAuthorization) => resolveDecisionAuthority({
|
|
299
|
+
useFactory: (schemas, versionCache, providedRecordAuthorization) => resolveDecisionAuthority({
|
|
266
300
|
...(options.recordAuthorization
|
|
267
301
|
? { recordAuthorization: options.recordAuthorization }
|
|
268
302
|
: {}),
|
|
269
303
|
...(options.decisionAuthority
|
|
270
304
|
? { decisionAuthority: options.decisionAuthority }
|
|
271
305
|
: {}),
|
|
272
|
-
}, { versionCache, defaultProjector, providedRecordAuthorization }),
|
|
306
|
+
}, { versionCache, defaultProjector, providedRecordAuthorization, schemas }),
|
|
307
|
+
// R2: the resolved framework names (provided below from APP_CONFIG).
|
|
273
308
|
// ADR-0035: the Redis version cache AuthModule provides under `auth: true`.
|
|
274
309
|
// Phase 9 #7: the record authorization a feature module provides (IdentityFeatureModule).
|
|
275
|
-
inject: [OPTIONAL_VERSION_CACHE, OPTIONAL_RECORD_AUTHORIZATION],
|
|
310
|
+
inject: [config_module_js_1.FRAMEWORK_SCHEMAS, OPTIONAL_VERSION_CACHE, OPTIONAL_RECORD_AUTHORIZATION],
|
|
276
311
|
},
|
|
312
|
+
frameworkSchemasProvider,
|
|
313
|
+
migrationLedgerRegistryProvider,
|
|
314
|
+
...(0, storage_providers_js_1.storageProviders)(options.storage),
|
|
277
315
|
],
|
|
278
316
|
// Re-export the composed AuthModule app-wide ONLY when auth is opted in — its
|
|
279
317
|
// own `exports` (SHIELD_AUTHENTICATOR / SHIELD_SESSION_AUTHORITY) then become
|
|
280
318
|
// visible to a consumer's controllers/services via the @Global seam.
|
|
281
|
-
exports: [
|
|
319
|
+
exports: [
|
|
320
|
+
config_module_js_1.APP_CONFIG,
|
|
321
|
+
config_module_js_1.FRAMEWORK_SCHEMAS,
|
|
322
|
+
shield_tokens_js_1.SHIELD_DECISION_AUTHORITY,
|
|
323
|
+
migration_ledger_check_js_1.SHIELD_MIGRATION_LEDGER_REGISTRY,
|
|
324
|
+
...storage_providers_js_1.STORAGE_EXPORTS,
|
|
325
|
+
...(authModule ? [authModule] : []),
|
|
326
|
+
],
|
|
282
327
|
};
|
|
283
328
|
}
|
|
284
329
|
/**
|
|
@@ -300,7 +345,9 @@ let ShieldModule = ShieldModule_1 = class ShieldModule {
|
|
|
300
345
|
};
|
|
301
346
|
const configProvider = {
|
|
302
347
|
provide: config_module_js_1.APP_CONFIG,
|
|
303
|
-
useFactory: (opts) =>
|
|
348
|
+
useFactory: (opts) => {
|
|
349
|
+
return opts.config ?? loadEnvAppConfig();
|
|
350
|
+
},
|
|
304
351
|
inject: [optionsToken],
|
|
305
352
|
};
|
|
306
353
|
// ADR-0035: the deferred default projector (auth on, no explicit projector), attached when the
|
|
@@ -314,11 +361,16 @@ let ShieldModule = ShieldModule_1 = class ShieldModule {
|
|
|
314
361
|
// in its useFactory from the injected registrations) has the framework build the
|
|
315
362
|
// real wired authority; `decisionAuthority` is the legacy passthrough; both →
|
|
316
363
|
// throws; neither → stub. Async because the record path lazy-loads the builder.
|
|
317
|
-
useFactory: (opts, versionCache, providedRecordAuthorization) => resolveDecisionAuthority({
|
|
364
|
+
useFactory: (opts, schemas, versionCache, providedRecordAuthorization) => resolveDecisionAuthority({
|
|
318
365
|
...(opts.recordAuthorization ? { recordAuthorization: opts.recordAuthorization } : {}),
|
|
319
366
|
...(opts.decisionAuthority ? { decisionAuthority: opts.decisionAuthority } : {}),
|
|
320
|
-
}, { versionCache, defaultProjector, providedRecordAuthorization }),
|
|
321
|
-
inject: [
|
|
367
|
+
}, { versionCache, defaultProjector, providedRecordAuthorization, schemas }),
|
|
368
|
+
inject: [
|
|
369
|
+
optionsToken,
|
|
370
|
+
config_module_js_1.FRAMEWORK_SCHEMAS,
|
|
371
|
+
OPTIONAL_VERSION_CACHE,
|
|
372
|
+
OPTIONAL_RECORD_AUTHORIZATION,
|
|
373
|
+
],
|
|
322
374
|
};
|
|
323
375
|
// Same one-instance opt-in AuthModule as forRoot (imported + re-exported).
|
|
324
376
|
// `credentialResolver` is STATIC on the async options (like `auth`) — a
|
|
@@ -375,8 +427,22 @@ let ShieldModule = ShieldModule_1 = class ShieldModule {
|
|
|
375
427
|
...(authModule ? [authModule] : []),
|
|
376
428
|
...(options.imports ?? []),
|
|
377
429
|
],
|
|
378
|
-
providers: [
|
|
379
|
-
|
|
430
|
+
providers: [
|
|
431
|
+
asyncOptionsProvider,
|
|
432
|
+
configProvider,
|
|
433
|
+
authorityProvider,
|
|
434
|
+
frameworkSchemasProvider,
|
|
435
|
+
migrationLedgerRegistryProvider,
|
|
436
|
+
...(0, storage_providers_js_1.storageProviders)(options.storage),
|
|
437
|
+
],
|
|
438
|
+
exports: [
|
|
439
|
+
config_module_js_1.APP_CONFIG,
|
|
440
|
+
config_module_js_1.FRAMEWORK_SCHEMAS,
|
|
441
|
+
shield_tokens_js_1.SHIELD_DECISION_AUTHORITY,
|
|
442
|
+
migration_ledger_check_js_1.SHIELD_MIGRATION_LEDGER_REGISTRY,
|
|
443
|
+
...storage_providers_js_1.STORAGE_EXPORTS,
|
|
444
|
+
...(authModule ? [authModule] : []),
|
|
445
|
+
],
|
|
380
446
|
};
|
|
381
447
|
}
|
|
382
448
|
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type SecretsProvider } from '@astram/core';
|
|
2
|
+
type EnvBag = Readonly<Record<string, string | undefined>>;
|
|
3
|
+
export interface ResolveBootSecretsOptions {
|
|
4
|
+
/** Use this provider instead of building one from the `SECRETS_*` variables. */
|
|
5
|
+
provider?: SecretsProvider;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolve every `secret-ref:` value in `process.env` in place. No references and no provider
|
|
9
|
+
* configured: no-op. Idempotent (a second call finds no references).
|
|
10
|
+
*/
|
|
11
|
+
export declare function resolveBootSecrets(options?: ResolveBootSecretsOptions): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* `true` when `key`'s CURRENT value in `env` (default `process.env`) is the value
|
|
14
|
+
* {@link resolveBootSecrets} resolved from a `secret-ref:` at boot (FILE_STORAGE SPEC §5 F:
|
|
15
|
+
* credentials outside development/test must be references, never literals). A value changed
|
|
16
|
+
* after resolution (e.g. a literal written over it) is `false`. No value is kept, only a keyed
|
|
17
|
+
* fingerprint.
|
|
18
|
+
*/
|
|
19
|
+
export declare function wasResolvedFromSecretRef(key: string, env?: EnvBag): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Build the {@link SecretsProvider} named by `SECRETS_PROVIDER`. Returns `undefined` for `none`
|
|
22
|
+
* or unset. Throws (naming the variable only) on an unknown value, `vault`, an unset, missing or
|
|
23
|
+
* unreadable file, a corrupt store, a KEK that is not 32 bytes, or a DEK that does not unwrap
|
|
24
|
+
* under the KEK.
|
|
25
|
+
*/
|
|
26
|
+
export declare function createSecretsProviderFromEnv(env: EnvBag): SecretsProvider | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Synchronous backstop: throws if any env value still starts with `secret-ref:` (the app did not
|
|
29
|
+
* call {@link resolveBootSecrets} before building modules). Lists env key names only.
|
|
30
|
+
*/
|
|
31
|
+
export declare function assertNoUnresolvedSecretRefs(env: EnvBag): void;
|
|
32
|
+
export {};
|
|
33
|
+
//# sourceMappingURL=boot-secrets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"boot-secrets.d.ts","sourceRoot":"","sources":["../../src/secrets/boot-secrets.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAkC,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAQpF,KAAK,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,yBAAyB;IACxC,gFAAgF;IAChF,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAOD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB/F;AAcD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAE,MAAoB,GAAG,OAAO,CAKxF;AAED;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAqCrF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAO9D"}
|