All files / realm/blong-access index.ts

100% Statements 72/72
100% Branches 5/5
100% Functions 4/4
100% Lines 72/72

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 731x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x  
import {server} from '@feasibleone/blong';
 
export default server(() => ({
    url: import.meta.url,
    children: [
        /** Built-in blong-server realm: RPC, auth, portal, auth orchestrators */
        async function srv() {
            return import('@feasibleone/blong-server/server.ts');
        },
        async function login() {
            return import('@feasibleone/blong-login/server.ts');
        },
        /** Core utility realm: shared resource/type/triple/path schema objects */
        async function core() {
            return import('@feasibleone/blong-core/server.ts');
        },
        /** RBAC access control realm */
        async function access() {
            return import('./server.ts');
        },
    ],
    config: {
        default: {
            srv: {},
            gateway: {
                authorize: 'access.authorization.list',
                // Record every access decision (allow/deny) + access-table DML
                // in the append-only audit.  Best-effort and non-blocking.
                audit: {handler: 'access.audit.record'},
            },
        },
        dev: {
            srv: {
                db: {
                    // logLevel: 'debug',
                },
            },
            core: {},
            login: {},
            access: {},
        },
        integration: {
            // Short access-token TTL + long inactivity so the session-reload /
            // login-popup Playwright tests can observe expiry without breaking
            // other flows (refresh keeps sessions active: inactivity > access TTL).
            // The login realm wraps its config in a `login` key, so the override
            // nests one level deeper.
            login: {
                login: {
                    expire: {
                        code: 60,
                        access: 30,
                        cookie: 3600,
                        refresh: 3600,
                        nonce: 900,
                        inactivity: 38,
                        deleteAfter: 3600,
                    },
                },
            },
            watch: {
                test: [
                    'test.login.flow',
                    'test.authorization.flow',
                    'test.access.model.flow',
                    'test.session.flow',
                    'test.profile.flow',
                ],
            },
        },
    },
}));