{"version":3,"file":"index.cjs","sources":["../../../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorSet.js","../../../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/classExtractFieldDescriptor.js","../../../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/classPrivateFieldSet.js","../../../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/classApplyDescriptorGet.js","../../../../node_modules/.pnpm/@babel+runtime@7.20.1/node_modules/@babel/runtime/helpers/esm/classPrivateFieldGet.js","../src/verify.ts","../src/assertions/describe.ts","../src/assertions/basic.ts","../src/assertions/multi.ts","../src/define.ts","../src/assertions/types.ts","../index.ts"],"sourcesContent":["export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n  if (descriptor.set) {\n    descriptor.set.call(receiver, value);\n  } else {\n    if (!descriptor.writable) {\n      throw new TypeError(\"attempted to set read only private field\");\n    }\n    descriptor.value = value;\n  }\n}","export default function _classExtractFieldDescriptor(receiver, privateMap, action) {\n  if (!privateMap.has(receiver)) {\n    throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n  }\n  return privateMap.get(receiver);\n}","import classApplyDescriptorSet from \"./classApplyDescriptorSet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldSet(receiver, privateMap, value) {\n  var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n  classApplyDescriptorSet(receiver, descriptor, value);\n  return value;\n}","export default function _classApplyDescriptorGet(receiver, descriptor) {\n  if (descriptor.get) {\n    return descriptor.get.call(receiver);\n  }\n  return descriptor.value;\n}","import classApplyDescriptorGet from \"./classApplyDescriptorGet.js\";\nimport classExtractFieldDescriptor from \"./classExtractFieldDescriptor.js\";\nexport default function _classPrivateFieldGet(receiver, privateMap) {\n  var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n  return classApplyDescriptorGet(receiver, descriptor);\n}","export class VerificationError<T = unknown> extends Error {\n  constructor(message: string, readonly expectation: Expectation<T>) {\n    super(message);\n  }\n}\n\nexport type VerifyFn = <Input extends Value, Value, Output extends Input>(\n  value: Value,\n  check: (input: Input) => input is Output,\n  error?: Expectation<Value>\n) => asserts value is Output & Value;\n\nexport function verify<Input extends Value, Value, Output extends Input>(\n  value: Value,\n  check: (input: Input) => input is Output,\n  error?: Expectation<Value>\n): asserts value is Output & Value;\nexport function verify<Value, Narrow extends Value>(\n  value: Value,\n  check: (input: Value) => input is Narrow,\n  error?: Expectation<Value>\n): asserts value is Narrow {\n  if (!check(value)) {\n    const associated = ASSOCIATED.get(check);\n    const expectation = Expectation.merge(associated, error);\n\n    if (expectation === undefined) {\n      const name = check.name;\n      throw new VerificationError(\n        `Assumption was incorrect: ${name}`,\n        expected()\n      );\n    } else {\n      throw new VerificationError(expectation.message(value), expectation);\n    }\n  }\n}\n\nverify.noop = (() => {\n  /** noop */\n}) as unknown as Exclude<typeof verify, \"noop\">;\n\nfunction noop<Input, Output extends Input, Value extends Output>(\n  value: Value,\n  check: (input: Input) => input is Output,\n  error?: Expectation<Value>\n): void;\nfunction noop<Input, Value extends Input, Output extends Input>(\n  value: Value,\n  check: (input: Input) => input is Output,\n  error?: Expectation<Value>\n): asserts value is Output & Value;\nfunction noop(): void {\n  return;\n}\n\nverify.noop = noop;\n\nexport function verified<T, U extends T>(\n  value: T,\n  check: (input: T) => input is U,\n  error?: Expectation<T>\n): U {\n  verify(value, check, error);\n  return value;\n}\n\nverified.noop = <T, U extends T>(\n  value: T,\n  _check: (input: T) => input is U,\n  _error?: Expectation<T>\n): U => {\n  return value as U;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport class Expectation<In = any> {\n  static create<In>(description?: string): Expectation<In> {\n    return new Expectation(description, undefined, undefined, undefined);\n  }\n\n  static merge<In>(\n    associated: Expectation<In> | undefined,\n    specified: Expectation<In> | undefined\n  ): Expectation<In> | undefined {\n    if (!associated && !specified) {\n      return undefined;\n    }\n\n    if (!associated) {\n      return specified;\n    }\n\n    if (!specified) {\n      return associated;\n    }\n\n    return new Expectation(\n      specified.#description,\n      specified.#to ?? associated.#to,\n      specified.#actual ?? associated.#actual,\n      specified.#when ?? associated.#when\n    );\n  }\n\n  readonly #description: string | undefined;\n  readonly #to: To | undefined;\n  readonly #actual: ((input: In) => string | undefined) | undefined;\n  readonly #when: string | undefined;\n\n  private constructor(\n    description: string | undefined,\n    to: To | undefined,\n    got: ((input: In) => string | undefined) | undefined,\n    when: string | undefined\n  ) {\n    this.#description = description;\n    this.#to = to;\n    this.#actual = got;\n    this.#when = when;\n  }\n\n  as(description: string): Expectation<In> {\n    return new Expectation(description, this.#to, this.#actual, this.#when);\n  }\n\n  update<NewIn>(updater: Updater<In, NewIn>): Expectation<NewIn> {\n    const description = updater.description\n      ? updater.description(this.#description)\n      : this.#description;\n    const updatedTo = updater.to ? updater.to(this.#to) : this.#to;\n    const to: To | undefined =\n      typeof updatedTo === \"string\"\n        ? [toRelationship(this.#to) ?? \"to be\", updatedTo]\n        : updatedTo;\n    const actual = updater.actual\n      ? updater.actual(this.#actual)\n      : (this.#actual as ((input: NewIn) => string | undefined) | undefined);\n\n    return new Expectation(\n      description,\n      to,\n      actual,\n      updater.when ? updater.when(this.#when) : this.#when\n    );\n  }\n\n  toBe(kind: string): Expectation<In> {\n    return new Expectation(\n      this.#description,\n      [\"to be\", kind],\n      this.#actual,\n      this.#when\n    );\n  }\n\n  toHave(items: string): Expectation<In> {\n    return new Expectation(\n      this.#description,\n      [\"to have\", items],\n      this.#actual,\n      this.#when\n    );\n  }\n\n  butGot<NewIn extends In>(\n    kind: string | ((value: NewIn) => string)\n  ): Expectation<NewIn> {\n    return new Expectation(\n      this.#description,\n      this.#to,\n      typeof kind === \"string\" ? () => kind : kind,\n      this.#when\n    );\n  }\n\n  when(situation: string): Expectation<In> {\n    return new Expectation(\n      this.#description,\n      this.#to,\n      this.#actual,\n      situation\n    );\n  }\n\n  message(input: In): string {\n    let message = ``;\n\n    if (this.#when) {\n      message += `When ${this.#when}: `;\n    }\n\n    message += `Expected ${this.#description ?? \"value\"}`;\n\n    if (this.#to) {\n      message += ` ${toRelationship(this.#to)} ${toKind(this.#to)}`;\n    }\n\n    if (this.#actual) {\n      message += `, but it was ${String(this.#actual(input))}`;\n    }\n\n    return message;\n  }\n}\n\nexport type Relationship = \"to be\" | \"to have\" | \"to be one of\";\n\nconst REL_INDEX = 0;\nconst KIND_INDEX = 1;\n\nexport type To = [relationship: Relationship, kind: string];\n\nexport function toRelationship(to: To): Relationship;\nexport function toRelationship(to?: To): Relationship | undefined;\nexport function toRelationship(to?: To): Relationship | undefined {\n  return to?.[REL_INDEX];\n}\n\nexport function toKind(to: To): string;\nexport function toKind(to?: To): string | undefined;\nexport function toKind(to?: To): string | undefined {\n  return to?.[KIND_INDEX];\n}\n\nexport function expected(description?: string): Expectation {\n  return Expectation.create(description);\n}\n\nexpected.as = expected;\nexpected.toBe = (kind: string): Expectation => expected().toBe(kind);\nexpected.toHave = (items: string): Expectation => expected().toHave(items);\nexpected.when = (situation: string): Expectation => expected().when(situation);\nexpected.butGot = <In>(\n  kind: string | ((input: In) => string)\n): Expectation<In> => expected().butGot(kind);\n\n// eslint-disable-next-line\nconst ASSOCIATED: WeakMap<Function, Expectation<any>> = new WeakMap();\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexpected.associate = <Check extends (input: In) => any, In>(\n  check: Check,\n  expectation: Expectation<In>\n): Check extends infer C ? C : never => {\n  ASSOCIATED.set(check, expectation);\n  return check as Check extends infer C ? C : never;\n};\n\ninterface Updater<In, NewIn = In> {\n  description?: (description: string | undefined) => string | undefined;\n  to?: (to: To | undefined) => string | To | undefined;\n  actual?: (\n    actual: ((input: In) => string | undefined) | undefined\n  ) => ((input: NewIn) => string | undefined) | undefined;\n  when?: (when: string | undefined) => string | undefined;\n}\n\nexpected.updated = <In, NewIn = In>(\n  check: (input: In) => boolean,\n  updater: Updater<In, NewIn>\n): Expectation<NewIn> => {\n  const expectation = ASSOCIATED.get(check) ?? expected();\n\n  return expectation.update(updater);\n};\n","export function format(value: unknown): string {\n  /* eslint-disable */\n  switch (typeof value) {\n    case \"boolean\":\n    case \"number\":\n    case \"undefined\":\n    case \"symbol\":\n      return String(value);\n    case \"bigint\":\n      return `${value}n`;\n    case \"string\":\n      return JSON.stringify(value);\n    case \"function\": {\n      const fn = String(value);\n      // if it's an ES6 class; detect by using F.p.toString and looking for class\n      if (fn.startsWith(\"class\")) {\n        return `{class ${value.name}}`;\n      } else if (fn.match(/^function\\s*[*]/)) {\n        return `{function* ${value.name}}`;\n      } else if (fn.match(/^async\\s+function/)) {\n        return `{async function ${value.name}}`;\n      } else if (value.name) {\n        return `{${value.name}`;\n      } else {\n        return `{anonymous function}`;\n      }\n    }\n    case \"object\": {\n      if (value === null) {\n        return `null`;\n      }\n\n      const proto = Object.getPrototypeOf(value);\n\n      if (proto === null || proto === Object.prototype) {\n        const entries = Object.entries(value)\n          .map(([key, value]) => `${key}: ${format(value)}`)\n          .join(\", \");\n        return `{ ${entries} }`;\n      } else if (value.constructor.name) {\n        return `{${value.constructor.name} instance}`;\n      } else {\n        return `{anonymous instance}`;\n      }\n    }\n  }\n  /* eslint-enable */\n}\n","import { expected, toKind } from \"../verify.js\";\nimport { format } from \"./describe.js\";\nimport type { FixedArray, ReadonlyFixedArray } from \"./type-utils.js\";\n\nexport function isPresent<T>(\n  value: T | null | undefined\n): value is Exclude<T, null | undefined> {\n  return value !== null && value !== undefined;\n}\n\nexpected.associate(isPresent, expected.toBe(\"present\"));\n\nexport function exhaustive(_value: never, type?: string): never {\n  if (type) {\n    throw Error(`unexpected types left in ${type}`);\n  } else {\n    throw Error(`unexpected types left`);\n  }\n}\n\nexport type Primitive =\n  | string\n  | number\n  | boolean\n  | symbol\n  | bigint\n  | null\n  | undefined;\n\nexport function isEqual<T>(value: T): (other: unknown) => other is T {\n  function verify(input: unknown): input is T {\n    return Object.is(input, value);\n  }\n\n  return expected.associate(\n    verify,\n    expected.toBe(inspect(value)).butGot(format)\n  );\n}\n\nfunction inspect(value: unknown): string {\n  if (isObject(value) && Symbol.for(\"nodejs.util.inspect.custom\") in value) {\n    return JSON.stringify(\n      // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call\n      (value as any)[Symbol.for(\"nodejs.util.inspect.custom\")]()\n    );\n  } else {\n    return JSON.stringify(value);\n  }\n}\n\nexport function isNotEqual<T>(\n  value: T\n): <U>(other: U) => other is Exclude<U, T> {\n  function verify<U>(input: U): input is Exclude<U, T> {\n    return !Object.is(input, value);\n  }\n\n  return expected.associate(\n    verify,\n    expected.toBe(`not ${String(value)}`).butGot(format)\n  );\n}\n\nexport function isObject(value: unknown): value is object {\n  return typeof value === \"object\" && value !== null;\n}\n\nexpected.associate(\n  isObject,\n  expected\n    .toBe(\"an object\")\n    .butGot((value) => (value === null ? \"null\" : typeof value))\n);\n\nexport function isWeakKey(value: unknown): value is Record<string, unknown> {\n  return (\n    (typeof value === \"object\" || typeof value === \"function\") && value !== null\n  );\n}\n\nexpected.associate(\n  isWeakKey,\n  expected\n    .toBe(\"an object or function\")\n    .butGot((value) => (value === null ? \"null\" : typeof value))\n);\n\ninterface HasLength<L extends number> {\n  <T>(value: T[]): value is FixedArray<T, L>;\n  <T>(value: readonly T[]): value is ReadonlyFixedArray<T, L>;\n}\n\nexport function hasLength<L extends number>(length: L): HasLength<L> {\n  function has<T>(value: T[] | readonly T[]): value is FixedArray<T, L> {\n    return value.length === length;\n  }\n\n  return expected.associate(has, expected.toHave(`${length} items`));\n}\n\nimport { isPresentArray } from \"@starbeam/core-utils\";\n\nexport const hasItems = isPresentArray;\n\n// export function hasItems<T>(\n//   value: readonly T[]\n// ): value is [T, ...(readonly T[])] {\n//   return value.length > 0;\n// }\n\nexpected.associate(hasItems, expected.toHave(`at least one item`));\n\nexport function isNullable<In, Out extends In>(\n  verifier: (value: In) => value is Out\n): (value: In | null) => value is Out | null {\n  function verify(input: In | null): input is Out | null {\n    if (input === null) {\n      return true;\n    } else {\n      return verifier(input);\n    }\n  }\n\n  const expectation = expected.updated(verifier, {\n    to: (to) => {\n      if (to === undefined) {\n        return [\"to be\", \"nullable\"];\n      } else {\n        return `${toKind(to)} or null`;\n      }\n    },\n    actual: (actual) => {\n      return (input: In | null) => {\n        if (input === null) {\n          return \"null\";\n        } else if (actual) {\n          return actual(input);\n        } else {\n          return undefined;\n        }\n      };\n    },\n  });\n\n  expected.associate(verify, expectation);\n\n  return verify;\n}\n","import { expected, toKind } from \"../verify.js\";\n\nexport function isOneOf<In, Out extends In>(\n  ...verifiers: ((value: In) => value is Out)[]\n): (value: In) => value is Out {\n  function verify(input: In): input is Out {\n    for (const verifier of verifiers) {\n      if (verifier(input)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  const expectation = expected.updated(verify, {\n    to: (to) => {\n      if (to === undefined) {\n        return [\"to be one of\", \"any\"];\n      } else {\n        return `${toKind(to)} or any`;\n      }\n    },\n    actual: (actual) => {\n      return (input: In) => {\n        if (actual) {\n          return actual(input);\n        }\n      };\n    },\n  });\n\n  return expected.associate(verify, expectation);\n}\n","export function define<O extends object, K extends PropertyKey, V>(\n  object: O,\n  property: K,\n  value: V\n): O & { [P in K]: V } {\n  Object.defineProperty(object, property, {\n    writable: true,\n    enumerable: true,\n    configurable: true,\n    value,\n  });\n  return object as O & { [P in K]: V };\n}\n\n/**\n * Define a property that ECMAScript provides by default but allows us to override, such as `Function.prototype.name` and `Symbol.toStringTag`.\n */\ndefine.builtin = <O extends object, K extends PropertyKey, V>(\n  object: O,\n  property: K,\n  value: V\n): O & { [P in K]: V } => {\n  Object.defineProperty(object, property, {\n    writable: false,\n    enumerable: false,\n    configurable: true,\n    value,\n  });\n  return object as O & { [P in K]: V };\n};\n\nexport function readonly<O extends object, K extends PropertyKey, V>(\n  object: O,\n  property: K,\n  value: V\n): O & { [P in K]: V } {\n  Object.defineProperty(object, property, {\n    writable: false,\n    enumerable: true,\n    configurable: true,\n    value,\n  });\n  return object as O & { [P in K]: V };\n}\n","import { define } from \"../define.js\";\nimport { expected } from \"../verify.js\";\nimport { isEqual, isObject } from \"./basic.js\";\n\nconst TYPE_DESC = {\n  object: \"an object\",\n  null: \"null\",\n  undefined: \"undefined\",\n  function: \"a function\",\n  string: \"a string\",\n  number: \"a number\",\n  boolean: \"a boolean\",\n  symbol: \"a symbol\",\n  bigint: \"a bigint\",\n};\n\nconst IS_TYPEOF = {\n  object: isObject,\n  null: isEqual(null),\n  undefined: isTypeof(\"undefined\"),\n  function: isTypeof(\"function\"),\n  string: isTypeof(\"string\"),\n  number: isTypeof(\"number\"),\n  boolean: isTypeof(\"boolean\"),\n  symbol: isTypeof(\"symbol\"),\n  bigint: isTypeof(\"bigint\"),\n} as const;\n\nexport function hasType<K extends keyof TypeOfTypes>(\n  type: K\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n): (value: any) => value is TypeOfTypes[K] {\n  return IS_TYPEOF[type] as (value: unknown) => value is TypeOfTypes[K];\n}\n\ninterface TypeOfTypes {\n  string: string;\n  number: number;\n  bigint: bigint;\n  boolean: boolean;\n  symbol: symbol;\n  undefined: undefined;\n  null: null;\n  object: object;\n  // eslint-disable-next-line @typescript-eslint/no-explicit-any\n  function: (...args: any[]) => unknown;\n}\n\nexport type TypeOf = keyof TypeOfTypes;\n\n/**\n * Verify that a value has a specified typeof type. If `type` is `\"object\"`,\n * this function verifies that the value is an object **and** not null.\n */\nfunction isTypeof<K extends keyof TypeOfTypes>(\n  type: K\n): (value: unknown) => value is TypeOfTypes[K] {\n  if (type === \"object\") {\n    return isObject as (value: unknown) => value is TypeOfTypes[K];\n  }\n\n  const verify = define.builtin(\n    (value: unknown): value is TypeOfTypes[K] => {\n      return typeof value === type;\n    },\n    \"name\",\n    `is:${type}`\n  );\n\n  define.builtin(verify, Symbol.toStringTag, `Verifier`);\n\n  return expected.associate(\n    verify,\n    expected.toBe(TYPE_DESC[type]).butGot(typeName)\n  );\n}\n\nfunction typeName(value: unknown): TypeOf {\n  return value === null ? \"null\" : typeof value;\n}\n","export {\n  exhaustive,\n  hasItems,\n  hasLength,\n  isEqual,\n  isNotEqual,\n  isNullable,\n  isObject,\n  isPresent,\n  isWeakKey,\n} from \"./src/assertions/basic.js\";\nexport { isOneOf } from \"./src/assertions/multi.js\";\nexport { type TypeOf, hasType } from \"./src/assertions/types.js\";\nexport { type Expectation, expected, VerificationError } from \"./src/verify.js\";\n\nimport {\n  type VerifyFn,\n  verified as verifiedDev,\n  verify as verifyDev,\n} from \"./src/verify.js\";\n\nexport const verify: VerifyFn = import.meta.env.DEV\n  ? verifyDev\n  : verifyDev.noop;\nexport const verified: typeof verifiedDev[\"noop\"] = import.meta.env.DEV\n  ? verifiedDev\n  : verifiedDev.noop;\n"],"names":["_classApplyDescriptorSet","receiver","descriptor","value","set","call","writable","TypeError","_classExtractFieldDescriptor","privateMap","action","has","get","_classPrivateFieldSet","classExtractFieldDescriptor","classApplyDescriptorSet","_classApplyDescriptorGet","_classPrivateFieldGet","classApplyDescriptorGet","VerificationError","Error","constructor","message","expectation","verify","check","error","associated","ASSOCIATED","Expectation","merge","undefined","name","expected","noop","verified","_check","_error","create","description","specified","to","got","when","as","update","updater","updatedTo","toRelationship","actual","toBe","kind","toHave","items","butGot","situation","input","toKind","String","REL_INDEX","KIND_INDEX","WeakMap","associate","updated","format","JSON","stringify","fn","startsWith","match","proto","Object","getPrototypeOf","prototype","entries","map","key","join","isPresent","exhaustive","_value","type","isEqual","is","inspect","isObject","Symbol","for","isNotEqual","isWeakKey","hasLength","length","hasItems","isPresentArray","isNullable","verifier","isOneOf","verifiers","define","object","property","defineProperty","enumerable","configurable","builtin","TYPE_DESC","null","function","string","number","boolean","symbol","bigint","IS_TYPEOF","isTypeof","hasType","toStringTag","typeName","verifyDev","verifiedDev"],"mappings":"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"}