/** Merge types of two objects. */
export type Spread<TTarget, TSource> = TTarget extends void ? TSource
  : TSource extends void ? TTarget
  // Properties in L that don't exist in R.
  :
    & Omit<TTarget, keyof TSource>
    // Properties in R that don't exist in L.
    & Omit<TSource, keyof TTarget>
    // Required properties in R that exist in L.
    & SpreadRequiredProperties<
      TTarget,
      TSource,
      RequiredKeys<TSource> & keyof TTarget
    >
    // Required properties in L that exist in R.
    & SpreadRequiredProperties<
      TTarget,
      TSource,
      RequiredKeys<TTarget> & keyof TSource
    >
    // Optional properties in L and R.
    & SpreadOptionalProperties<
      TTarget,
      TSource,
      OptionalKeys<TTarget> & OptionalKeys<TSource>
    >;

type RequiredKeys<TRecord> = {
  // deno-lint-ignore ban-types
  [Key in keyof TRecord]-?: {} extends Pick<TRecord, Key> ? never : Key;
}[keyof TRecord];

type OptionalKeys<TRecord> = {
  // deno-lint-ignore ban-types
  [Key in keyof TRecord]-?: {} extends Pick<TRecord, Key> ? Key : never;
}[keyof TRecord];

type SpreadRequiredProperties<
  TTarget,
  TSource,
  TKeys extends keyof TTarget & keyof TSource,
> = {
  [Key in TKeys]:
    | Exclude<TTarget[Key], undefined>
    | Exclude<TSource[Key], undefined>;
};

type SpreadOptionalProperties<
  TTarget,
  TSource,
  TKeys extends keyof TTarget & keyof TSource,
> = {
  [Key in TKeys]?: TTarget[Key] | TSource[Key];
};

// denoCacheMetadata={"headers":{"x-amz-replication-status":"COMPLETED","cross-origin-opener-policy":"same-origin","x-cache":"Hit from cloudfront","cross-origin-resource-policy":"same-origin","cross-origin-embedder-policy":"same-origin","x-amz-cf-id":"gLDknX3nGjSXVguRcCp7t2yv6g1c7sIB0n0s-djuzRLocHqBqJjlog==","via":"1.1 720129ba4056e60029189758c6f0de0c.cloudfront.net (CloudFront),HTTP/2 ord.vultr.prod.deno-cluster.net","access-control-allow-origin":"*","etag":"\"2fb2e962967354b471aa1de6d739c36f\"","referrer-policy":"strict-origin-when-cross-origin","content-length":"1461","date":"Mon, 05 Jan 2026 19:36:23 GMT","strict-transport-security":"max-age=63072000; includeSubDomains; preload","server":"AmazonS3,deployd","vary":"Accept-Encoding, Origin","server-timing":"fetchSource;dur=29","content-type":"application/typescript; charset=utf-8","x-frame-options":"DENY","x-deno-trace-id":"f19e67bdd006c81b044ca133ea2d5c1c","x-amz-version-id":"OLA7FWPZYtqM7QF2IZOYMmrPHrf0UNbX","x-amz-server-side-encryption":"AES256","age":"958405","cache-status":"deno; hit","x-content-type-options":"nosniff","x-amz-cf-pop":"ORD56-P16","alt-svc":"h3=\":443\"; ma=86400","accept-ranges":"bytes","last-modified":"Sun, 30 Jul 2023 10:00:25 GMT","content-security-policy":"default-src 'none'; style-src 'unsafe-inline'; sandbox","cache-control":"public, max-age=31536000, immutable"},"url":"https://deno.land/x/cliffy@v1.0.0-rc.3/command/_spread.ts","time":1768600187}