| 1 | const errors = {
|
|---|
| 2 | 0: "Illegal state",
|
|---|
| 3 | 1: "Immer drafts cannot have computed properties",
|
|---|
| 4 | 2: "This object has been frozen and should not be mutated",
|
|---|
| 5 | 3(data: any) {
|
|---|
| 6 | return (
|
|---|
| 7 | "Cannot use a proxy that has been revoked. Did you pass an object from inside an immer function to an async process? " +
|
|---|
| 8 | data
|
|---|
| 9 | )
|
|---|
| 10 | },
|
|---|
| 11 | 4: "An immer producer returned a new value *and* modified its draft. Either return a new value *or* modify the draft.",
|
|---|
| 12 | 5: "Immer forbids circular references",
|
|---|
| 13 | 6: "The first or second argument to `produce` must be a function",
|
|---|
| 14 | 7: "The third argument to `produce` must be a function or undefined",
|
|---|
| 15 | 8: "First argument to `createDraft` must be a plain object, an array, or an immerable object",
|
|---|
| 16 | 9: "First argument to `finishDraft` must be a draft returned by `createDraft`",
|
|---|
| 17 | 10: "The given draft is already finalized",
|
|---|
| 18 | 11: "Object.defineProperty() cannot be used on an Immer draft",
|
|---|
| 19 | 12: "Object.setPrototypeOf() cannot be used on an Immer draft",
|
|---|
| 20 | 13: "Immer only supports deleting array indices",
|
|---|
| 21 | 14: "Immer only supports setting array indices and the 'length' property",
|
|---|
| 22 | 15(path: string) {
|
|---|
| 23 | return "Cannot apply patch, path doesn't resolve: " + path
|
|---|
| 24 | },
|
|---|
| 25 | 16: 'Sets cannot have "replace" patches.',
|
|---|
| 26 | 17(op: string) {
|
|---|
| 27 | return "Unsupported patch operation: " + op
|
|---|
| 28 | },
|
|---|
| 29 | 18(plugin: string) {
|
|---|
| 30 | return `The plugin for '${plugin}' has not been loaded into Immer. To enable the plugin, import and call \`enable${plugin}()\` when initializing your application.`
|
|---|
| 31 | },
|
|---|
| 32 | 20: "Cannot use proxies if Proxy, Proxy.revocable or Reflect are not available",
|
|---|
| 33 | 21(thing: string) {
|
|---|
| 34 | return `produce can only be called on things that are draftable: plain objects, arrays, Map, Set or classes that are marked with '[immerable]: true'. Got '${thing}'`
|
|---|
| 35 | },
|
|---|
| 36 | 22(thing: string) {
|
|---|
| 37 | return `'current' expects a draft, got: ${thing}`
|
|---|
| 38 | },
|
|---|
| 39 | 23(thing: string) {
|
|---|
| 40 | return `'original' expects a draft, got: ${thing}`
|
|---|
| 41 | },
|
|---|
| 42 | 24: "Patching reserved attributes like __proto__, prototype and constructor is not allowed"
|
|---|
| 43 | } as const
|
|---|
| 44 |
|
|---|
| 45 | export function die(error: keyof typeof errors, ...args: any[]): never {
|
|---|
| 46 | if (__DEV__) {
|
|---|
| 47 | const e = errors[error]
|
|---|
| 48 | const msg = !e
|
|---|
| 49 | ? "unknown error nr: " + error
|
|---|
| 50 | : typeof e === "function"
|
|---|
| 51 | ? e.apply(null, args as any)
|
|---|
| 52 | : e
|
|---|
| 53 | throw new Error(`[Immer] ${msg}`)
|
|---|
| 54 | }
|
|---|
| 55 | throw new Error(
|
|---|
| 56 | `[Immer] minified error nr: ${error}${
|
|---|
| 57 | args.length ? " " + args.map(s => `'${s}'`).join(",") : ""
|
|---|
| 58 | }. Find the full error at: https://bit.ly/3cXEKWf`
|
|---|
| 59 | )
|
|---|
| 60 | }
|
|---|