All files / core/blong-kukum/primitives adapter.ts

100% Statements 38/38
100% Branches 2/2
100% Functions 2/2
100% Lines 38/38

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 391x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 9x 9x 1x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 1x 1x 1x  
import {checkSubject, type PrimitiveDescriptor} from '../engine.ts';
 
/** `adapter` — the integration point with an external system. */
 
const adapter: PrimitiveDescriptor = {
    id: 'adapter',
    title: 'Adapter',
    skill: 'blong-adapter',
    summary: 'Integration point with an external system (HTTP, TCP, SQL, webhook, …).',
    kinds: ['http', 'tcp', 'knex', 'webhook', 'mongodb', 'k8s', 's3', 'mock', 'base'],
    defaultKind: 'http',
    roots: ['adapter'],
    check(ctx) {
        return checkSubject(ctx.subject);
    },
    files(ctx) {
        const name = ctx.object;
        const kind = ctx.kind;
        return [
            {
                path: `adapter/${name}.ts`,
                content: `import {adapter} from '@feasibleone/blong';
 
export default adapter(blong => ({
    extends: 'adapter.${kind}',
    validation: blong.type.Object({config: blong.type.Any()}),
    activation: {
        default: {namespace: '${ctx.subject}', imports: [/\\.${name}$/]},
        ${ctx.platform}: {},
    },
}));
`,
            },
        ];
    },
};
 
export default adapter;