MCPcopy
hub / github.com/colinhacks/zod / create

Method create

packages/zod/src/v3/types.ts:3182–3224  ·  view source on GitHub ↗

* The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. * However, it only allows a union of objects, all of which need to share a discriminator property. This property must * have a different value for each object in the

(
    discriminator: Discriminator,
    options: Types,
    params?: RawCreateParams
  )

Source from the content-addressed store, hash-verified

3180 * @param params
3181 */
3182 static create<
3183 Discriminator extends string,
3184 Types extends readonly [
3185 ZodDiscriminatedUnionOption<Discriminator>,
3186 ...ZodDiscriminatedUnionOption<Discriminator>[],
3187 ],
3188 >(
3189 discriminator: Discriminator,
3190 options: Types,
3191 params?: RawCreateParams
3192 ): ZodDiscriminatedUnion<Discriminator, Types> {
3193 // Get all the valid discriminator values
3194 const optionsMap: Map<Primitive, Types[number]> = new Map();
3195
3196 // try {
3197 for (const type of options) {
3198 const discriminatorValues = getDiscriminator(type.shape[discriminator]);
3199 if (!discriminatorValues.length) {
3200 throw new Error(
3201 `A discriminator value for key \`${discriminator}\` could not be extracted from all schema options`
3202 );
3203 }
3204 for (const value of discriminatorValues) {
3205 if (optionsMap.has(value)) {
3206 throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);
3207 }
3208
3209 optionsMap.set(value, type);
3210 }
3211 }
3212
3213 return new ZodDiscriminatedUnion<
3214 Discriminator,
3215 // DiscriminatorValue,
3216 Types
3217 >({
3218 typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,
3219 discriminator,
3220 options,
3221 optionsMap,
3222 ...processCreateParams(params),
3223 });
3224 }
3225}
3226
3227///////////////////////////////////////////////

Callers

nothing calls this directly

Calls 3

getDiscriminatorFunction · 0.85
processCreateParamsFunction · 0.85
hasMethod · 0.80

Tested by

no test coverage detected