UNPKG

@featurevisor/core

Version:

Core package of Featurevisor for Node.js usage

98 lines 4.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getTestsZodSchema = getTestsZodSchema; const zod_1 = require("zod"); function getTestsZodSchema(projectConfig, availableFeatureKeys, availableSegmentKeys) { const matrixZodSchema = zod_1.z.record(zod_1.z.array(zod_1.z.union([ // allowed values in arrays zod_1.z.string(), zod_1.z.number(), zod_1.z.boolean(), zod_1.z.null(), ]))); const segmentTestZodSchema = zod_1.z .object({ segment: zod_1.z.string().refine((value) => availableSegmentKeys.includes(value), (value) => ({ message: `Unknown segment "${value}"`, })), assertions: zod_1.z.array(zod_1.z .object({ matrix: matrixZodSchema.optional(), description: zod_1.z.string().optional(), context: zod_1.z.record(zod_1.z.unknown()), expectedToMatch: zod_1.z.boolean(), }) .strict()), }) .strict(); const featureTestZodSchema = zod_1.z .object({ feature: zod_1.z.string().refine((value) => availableFeatureKeys.includes(value), (value) => ({ message: `Unknown feature "${value}"`, })), assertions: zod_1.z.array(zod_1.z .object({ matrix: matrixZodSchema.optional(), description: zod_1.z.string().optional(), at: zod_1.z.union([ zod_1.z.number().min(0).max(100), // because of supporting matrix zod_1.z.string(), ]), environment: Array.isArray(projectConfig.environments) ? zod_1.z.string().refine((value) => { if (value.indexOf("${{") === 0) { // allow unknown strings for matrix return true; } // otherwise only known environments should be passed if (Array.isArray(projectConfig.environments) && projectConfig.environments.includes(value)) { return true; } return false; }, (value) => ({ message: `Unknown environment "${value}"`, })) : zod_1.z.never().optional(), // parent sticky: zod_1.z.record(zod_1.z.record(zod_1.z.any())).optional(), context: zod_1.z.record(zod_1.z.unknown()).optional(), defaultVariationValue: zod_1.z.string().optional(), defaultVariableValues: zod_1.z.record(zod_1.z.unknown()).optional(), expectedToBeEnabled: zod_1.z.boolean().optional(), expectedVariation: zod_1.z.string().nullable().optional(), expectedVariables: zod_1.z.record(zod_1.z.unknown()).optional(), expectedEvaluations: zod_1.z .object({ flag: zod_1.z.record(zod_1.z.any()).optional(), variation: zod_1.z.record(zod_1.z.any()).optional(), variables: zod_1.z.record(zod_1.z.record(zod_1.z.any())).optional(), }) .optional(), children: zod_1.z .array(zod_1.z.object({ // copied from parent sticky: zod_1.z.record(zod_1.z.record(zod_1.z.any())).optional(), context: zod_1.z.record(zod_1.z.unknown()).optional(), defaultVariationValue: zod_1.z.string().optional(), defaultVariableValues: zod_1.z.record(zod_1.z.unknown()).optional(), expectedToBeEnabled: zod_1.z.boolean().optional(), expectedVariation: zod_1.z.string().nullable().optional(), expectedVariables: zod_1.z.record(zod_1.z.unknown()).optional(), expectedEvaluations: zod_1.z .object({ flag: zod_1.z.record(zod_1.z.any()).optional(), variation: zod_1.z.record(zod_1.z.any()).optional(), variables: zod_1.z.record(zod_1.z.record(zod_1.z.any())).optional(), }) .optional(), })) .optional(), }) .strict()), }) .strict(); return zod_1.z.union([segmentTestZodSchema, featureTestZodSchema]); } //# sourceMappingURL=testSchema.js.map