UNPKG

dockest

Version:

Dockest is an integration testing tool aimed at alleviating the process of evaluating unit tests whilst running multi-container Docker applications.

46 lines 1.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getParsedComposeFile = void 0; const js_yaml_1 = require("js-yaml"); const zod_1 = require("zod"); const errors_1 = require("../../errors"); const format_zod_error_1 = require("../../utils/format-zod-error"); const StringNumber = zod_1.z.union([zod_1.z.number(), zod_1.z.string()]).transform((port) => { if (typeof port === 'string') { return parseInt(port, 10); } return port; }); const Port = zod_1.z .object({ published: StringNumber, target: StringNumber, }) .passthrough(); const Environment = zod_1.z.record(zod_1.z.union([zod_1.z.string(), zod_1.z.number()])); const Service = zod_1.z .object({ environment: Environment.optional(), image: zod_1.z.string().optional(), ports: zod_1.z.array(Port), }) .passthrough(); const ComposeFile = zod_1.z .object({ version: zod_1.z.string().optional(), services: zod_1.z.record(Service), }) .passthrough(); function getParsedComposeFile(mergedComposeFiles) { const loadedMergedComposeFiles = (0, js_yaml_1.safeLoad)(mergedComposeFiles); const parsedMergedComposeFiles = ComposeFile.safeParse(loadedMergedComposeFiles); if (!parsedMergedComposeFiles.success) { throw new errors_1.DockestError(`Invalid Composefile ${(0, format_zod_error_1.formatZodError)(parsedMergedComposeFiles.error, 'ComposeFile')}`); } return { dockerComposeFile: parsedMergedComposeFiles.data, }; } exports.getParsedComposeFile = getParsedComposeFile; //# sourceMappingURL=get-parsed-compose-file.js.map