UNPKG

@salesforce/core

Version:

Core libraries to interact with SFDX projects, orgs, and APIs.

36 lines 1.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.FeaturesSchema = void 0; /* * Copyright (c) 2023, salesforce.com, inc. * All rights reserved. * Licensed under the BSD 3-Clause license. * For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause */ const zod_1 = require("zod"); const simpleFeaturesList_1 = require("./simpleFeaturesList"); const patternFeaturesList_1 = require("./patternFeaturesList"); // Set for O(1) case-insensitive lookup of simple features const simpleFeaturesLowerSet = new Set(simpleFeaturesList_1.simpleFeaturesList.map((f) => f.toLowerCase())); // Helper to create a case-insensitive feature pattern with title // Note: JSON Schema pattern won't include the 'i' flag, but Zod validates case-insensitively const featurePattern = (name) => zod_1.z .string() .regex(new RegExp(`^${name}:[0-9]+$`, 'i')) .meta({ title: `${name}:<value>` }); // Case-insensitive simple feature validation // Uses refine for runtime case-insensitivity, meta.enum for JSON Schema output const simpleFeatureSchema = zod_1.z .string() .refine((s) => simpleFeaturesLowerSet.has(s.toLowerCase())) .meta({ enum: simpleFeaturesList_1.simpleFeaturesList }); // Combined features schema // Features are case-insensitive per Salesforce docs: // https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_scratch_orgs_def_file_config_values.htm exports.FeaturesSchema = zod_1.z.array(zod_1.z.union([ // Feature patterns - parametrized features with numeric values zod_1.z.union(patternFeaturesList_1.patternFeaturesList.map(featurePattern)), // Feature enum - boolean/named features simpleFeatureSchema, ])); //# sourceMappingURL=features.js.map