{"version":3,"file":"create-query-keys.cjs","names":[],"sources":["../../src/query/create-query-keys.ts"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype KeyBuilder = (...args: any[]) => readonly unknown[];\n\n/**\n * Build a typed query-key factory for a domain. Each entry can be a static\n * tuple or a function returning a tuple. The returned object is `as const`\n * so TanStack Query infers literal keys.\n *\n * @example\n * const userKeys = createQueryKeys(\"user\", {\n *     me: () => [\"me\"] as const,\n *     byId: (id: string) => [id] as const,\n *     list: (filters: { page: number }) => [\"list\", filters] as const,\n * });\n * // userKeys.byId(\"42\") === [\"user\", \"42\"]\n */\nexport function createQueryKeys<\n    TKey extends string,\n    TEntries extends Record<string, KeyBuilder | readonly unknown[]>,\n>(scope: TKey, entries: TEntries) {\n    const output = { all: [scope] as const } as { all: readonly [TKey] } & {\n        [K in keyof TEntries]: TEntries[K] extends KeyBuilder\n            ? (...args: Parameters<TEntries[K]>) => readonly [TKey, ...ReturnType<TEntries[K]>]\n            : TEntries[K] extends readonly unknown[]\n              ? readonly [TKey, ...TEntries[K]]\n              : never;\n    };\n\n    for (const [name, entry] of Object.entries(entries) as [\n        keyof TEntries,\n        KeyBuilder | readonly unknown[],\n    ][]) {\n        if (typeof entry === \"function\") {\n            (output as Record<string, unknown>)[name as string] = (...args: unknown[]) =>\n                [scope, ...entry(...args)] as const;\n        } else {\n            (output as Record<string, unknown>)[name as string] = [scope, ...entry] as const;\n        }\n    }\n\n    return output;\n}\n"],"mappings":"AAgBA,SAAgB,EAGd,EAAa,EAAmB,CAC9B,IAAM,EAAS,CAAE,IAAK,CAAC,CAAK,CAAW,EAQvC,IAAK,GAAM,CAAC,EAAM,KAAU,OAAO,QAAQ,CAAO,EAI9C,AAII,EAAoC,GAJpC,OAAO,GAAU,YACsC,GAAG,IACtD,CAAC,EAAO,GAAG,EAAM,GAAG,CAAI,CAAC,EAEyB,CAAC,EAAO,GAAG,CAAK,EAI9E,OAAO,CACX"}