@ptdgrp/typedgql 1.0.0-beta.16 → 1.0.0-beta.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +55 -2
  2. package/README.zh-CN.md +57 -4
  3. package/dist/cli.cjs +47 -0
  4. package/dist/cli.d.cts +1 -0
  5. package/dist/cli.d.mts +1 -0
  6. package/dist/cli.mjs +49 -0
  7. package/dist/cli.mjs.map +1 -0
  8. package/dist/{schema-loader-BIP51DZO.cjs → config-loader-Bxj44SGD.cjs} +348 -41
  9. package/dist/{schema-loader-CsabdnfI.mjs → config-loader-DZ7d_CWR.mjs} +342 -47
  10. package/dist/config-loader-DZ7d_CWR.mjs.map +1 -0
  11. package/dist/cyrb53-B2tdX6NT.mjs +921 -0
  12. package/dist/cyrb53-B2tdX6NT.mjs.map +1 -0
  13. package/dist/cyrb53-BTzxwvXR.cjs +1010 -0
  14. package/dist/cyrb53-DWYFRdWZ.d.mts +333 -0
  15. package/dist/cyrb53-DWYFRdWZ.d.mts.map +1 -0
  16. package/dist/cyrb53-FbY3n_2r.d.cts +333 -0
  17. package/dist/cyrb53-FbY3n_2r.d.cts.map +1 -0
  18. package/dist/index.cjs +18 -935
  19. package/dist/index.d.cts +2 -333
  20. package/dist/index.d.mts +2 -333
  21. package/dist/index.mjs +3 -920
  22. package/dist/node.cjs +6 -4
  23. package/dist/node.d.cts +63 -2
  24. package/dist/node.d.cts.map +1 -1
  25. package/dist/node.d.mts +63 -2
  26. package/dist/node.d.mts.map +1 -1
  27. package/dist/node.mjs +2 -2
  28. package/dist/{options-CgrZ2der.d.cts → options-B6mcYDIz.d.cts} +10 -1
  29. package/dist/options-B6mcYDIz.d.cts.map +1 -0
  30. package/dist/{options-BWcHrC-1.d.mts → options-T07dJfbz.d.mts} +10 -1
  31. package/dist/options-T07dJfbz.d.mts.map +1 -0
  32. package/dist/runtime.cjs +18 -0
  33. package/dist/runtime.d.cts +2 -0
  34. package/dist/runtime.d.mts +2 -0
  35. package/dist/runtime.mjs +3 -0
  36. package/dist/vite.cjs +48 -29
  37. package/dist/vite.d.cts +13 -3
  38. package/dist/vite.d.cts.map +1 -1
  39. package/dist/vite.d.mts +13 -3
  40. package/dist/vite.d.mts.map +1 -1
  41. package/dist/vite.mjs +46 -27
  42. package/dist/vite.mjs.map +1 -1
  43. package/package.json +23 -4
  44. package/dist/index.d.cts.map +0 -1
  45. package/dist/index.d.mts.map +0 -1
  46. package/dist/index.mjs.map +0 -1
  47. package/dist/options-BWcHrC-1.d.mts.map +0 -1
  48. package/dist/options-CgrZ2der.d.cts.map +0 -1
  49. package/dist/schema-loader-CsabdnfI.mjs.map +0 -1
package/dist/vite.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { n as loadRemoteSchema, r as Generator, t as loadLocalSchema } from "./schema-loader-CsabdnfI.mjs";
1
+ import { a as Generator, i as loadRemoteSchema, n as mergeConfig, r as loadLocalSchema, t as loadConfig } from "./config-loader-DZ7d_CWR.mjs";
2
2
  import { readFile, realpath } from "node:fs/promises";
3
3
  import { createHash } from "node:crypto";
4
4
  import { resolve } from "node:path";
@@ -32,6 +32,7 @@ const hashFile = async (path) => {
32
32
  *
33
33
  * - **Local schema** — runs once on startup, then watches for file changes.
34
34
  * - **Remote schema** — runs on every `vite dev` / `vite build` invocation.
35
+ * - **Config file** — if no schema is provided, loads from .typedgqlrc.toml
35
36
  *
36
37
  * @example
37
38
  * ```ts
@@ -44,23 +45,38 @@ const hashFile = async (path) => {
44
45
  * typedgql({ schema: "./schema.graphql" }),
45
46
  * // or remote endpoint
46
47
  * typedgql({ schema: "http://localhost:4000/graphql" }),
48
+ * // or use .typedgqlrc.toml config file
49
+ * typedgql(),
47
50
  * ],
48
51
  * });
49
52
  * ```
50
53
  */
51
54
  function typedgql(options) {
52
- const { schema, schemaHeaders, ...generatorOptions } = options;
53
- const remote = isRemote(schema);
54
- const codegenOptions = {
55
- ...generatorOptions,
56
- schemaLoader: makeSchemaLoader(schema, schemaHeaders)
57
- };
55
+ let resolvedOptions;
56
+ let schema;
57
+ let remote;
58
+ let codegenOptions;
59
+ let initialized = false;
58
60
  let isRunning = false;
59
61
  let isDependencyRefreshRunning = false;
60
62
  let lastSchemaHash;
61
63
  let initSchemaHashPromise;
62
64
  let resolvedConfig;
63
65
  let logger;
66
+ async function initializeOptions() {
67
+ if (initialized) return;
68
+ resolvedOptions = mergeConfig(await loadConfig(), options ?? {});
69
+ if (resolvedOptions.outputDir && !resolvedOptions.targetDir) resolvedOptions.targetDir = resolvedOptions.outputDir;
70
+ if (!resolvedOptions.schema) throw new Error("typedgql: 'schema' option is required. Provide it in plugin options or in .typedgqlrc.toml config file.");
71
+ schema = resolvedOptions.schema;
72
+ remote = isRemote(schema);
73
+ const { schema: _, schemaHeaders, outputDir: __, ...generatorOptions } = resolvedOptions;
74
+ codegenOptions = {
75
+ ...generatorOptions,
76
+ schemaLoader: makeSchemaLoader(schema, schemaHeaders)
77
+ };
78
+ initialized = true;
79
+ }
64
80
  async function runCodegen(trigger) {
65
81
  if (isRunning) return;
66
82
  isRunning = true;
@@ -91,6 +107,7 @@ function typedgql(options) {
91
107
  logger = cfg.logger;
92
108
  },
93
109
  async buildStart() {
110
+ await initializeOptions();
94
111
  await runCodegen(resolvedConfig?.command === "build" ? "build" : "start");
95
112
  },
96
113
  configureServer(server) {
@@ -108,26 +125,28 @@ function typedgql(options) {
108
125
  isDependencyRefreshRunning = false;
109
126
  }
110
127
  });
111
- if (remote) return;
112
- const root = server.config.root;
113
- const schemaPath = normalizePath(resolve(root, schema));
114
- let realSchemaPath = schemaPath;
115
- realpath(schemaPath).then((actualPath) => {
116
- realSchemaPath = normalizePath(actualPath);
117
- }).catch(() => {});
118
- server.watcher.add(schemaPath);
119
- initSchemaHashPromise = hashFile(schemaPath).then((hash) => {
120
- lastSchemaHash = hash;
121
- });
122
- server.watcher.on("change", async (file) => {
123
- const changedPath = normalizePath(file);
124
- if (changedPath !== schemaPath && changedPath !== realSchemaPath) return;
125
- await initSchemaHashPromise;
126
- const nextHash = await hashFile(schemaPath);
127
- if (nextHash && nextHash === lastSchemaHash) return;
128
- await runCodegen("watch");
129
- if (nextHash) lastSchemaHash = nextHash;
130
- await server.restart(true);
128
+ initializeOptions().then(() => {
129
+ if (!schema || remote) return;
130
+ const root = server.config.root;
131
+ const schemaPath = normalizePath(resolve(root, schema));
132
+ let realSchemaPath = schemaPath;
133
+ realpath(schemaPath).then((actualPath) => {
134
+ realSchemaPath = normalizePath(actualPath);
135
+ }).catch(() => {});
136
+ server.watcher.add(schemaPath);
137
+ initSchemaHashPromise = hashFile(schemaPath).then((hash) => {
138
+ lastSchemaHash = hash;
139
+ });
140
+ server.watcher.on("change", async (file) => {
141
+ const changedPath = normalizePath(file);
142
+ if (changedPath !== schemaPath && changedPath !== realSchemaPath) return;
143
+ await initSchemaHashPromise;
144
+ const nextHash = await hashFile(schemaPath);
145
+ if (nextHash && nextHash === lastSchemaHash) return;
146
+ await runCodegen("watch");
147
+ if (nextHash) lastSchemaHash = nextHash;
148
+ await server.restart(true);
149
+ });
131
150
  });
132
151
  }
133
152
  };
package/dist/vite.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"vite.mjs","names":[],"sources":["../src/vite-plugin.ts"],"sourcesContent":["/**\n * Vite plugin for @ptdgrp/typedgql — runs codegen automatically.\n */\n\nimport { realpath } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { Plugin, ResolvedConfig, Logger, UserConfig } from \"vite\";\nimport { normalizePath } from \"vite\";\nimport { Generator } from \"./codegen/generator\";\nimport { loadLocalSchema, loadRemoteSchema } from \"./codegen/schema-loader\";\nimport type { CodegenOptions } from \"./codegen/options\";\n\nexport interface TypedGqlPluginOptions extends Omit<\n CodegenOptions,\n \"schemaLoader\"\n> {\n /**\n * GraphQL schema source.\n * - Local file path: `\"./schema.graphql\"`\n * - Remote endpoint: `\"http://localhost:4000/graphql\"`\n *\n * Local file → codegen runs on startup, then re-runs on every file change.\n * Remote URL → codegen runs on every `vite dev` / `vite build` invocation.\n */\n schema: string;\n /**\n * HTTP headers forwarded when fetching a remote schema.\n * Only used when `schema` is a URL.\n */\n schemaHeaders?: Record<string, string>;\n}\n\nconst isRemote = (schema: string): boolean => {\n return /^https?:\\/\\//.test(schema);\n};\n\nconst makeSchemaLoader = (\n schema: string,\n headers?: Record<string, string>,\n): (() => Promise<import(\"graphql\").GraphQLSchema>) => {\n return isRemote(schema)\n ? () => loadRemoteSchema(schema, headers)\n : () => loadLocalSchema(schema);\n};\n\nconst buildNegatedWatchPattern = (packageName: string): string => {\n return `!**/node_modules/${packageName}/**`;\n};\n\nconst DEV_DEP_HMR_PACKAGE_NAME = \"@ptdgrp/typedgql\";\nconst DEV_DEP_HMR_WATCH_DIRS = [\"dist\"] as const;\n\nconst hashFile = async (path: string): Promise<string | undefined> => {\n try {\n const content = await readFile(path);\n return createHash(\"sha256\").update(content).digest(\"hex\");\n } catch {\n return undefined;\n }\n};\n\n/**\n * Vite plugin that runs typedgql codegen automatically.\n *\n * - **Local schema** — runs once on startup, then watches for file changes.\n * - **Remote schema** — runs on every `vite dev` / `vite build` invocation.\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import { typedgql } from \"@ptdgrp/typedgql/vite\";\n *\n * export default defineConfig({\n * plugins: [\n * // local file\n * typedgql({ schema: \"./schema.graphql\" }),\n * // or remote endpoint\n * typedgql({ schema: \"http://localhost:4000/graphql\" }),\n * ],\n * });\n * ```\n */\nexport function typedgql(options: TypedGqlPluginOptions): Plugin {\n const { schema, schemaHeaders, ...generatorOptions } = options;\n const remote = isRemote(schema);\n\n const codegenOptions: CodegenOptions = {\n ...generatorOptions,\n schemaLoader: makeSchemaLoader(schema, schemaHeaders),\n };\n\n let isRunning = false;\n let isDependencyRefreshRunning = false;\n let lastSchemaHash: string | undefined;\n let initSchemaHashPromise: Promise<void> | undefined;\n let resolvedConfig: ResolvedConfig;\n let logger: Logger;\n\n async function runCodegen(trigger: string) {\n if (isRunning) return;\n isRunning = true;\n const label = `\\x1b[36m[typedgql:${trigger}]\\x1b[0m`;\n try {\n // logger.info(`${label} running codegen (schema: ${schema})`);\n const generator = new Generator(codegenOptions);\n await generator.generate();\n // logger.info(`${label} done`);\n } catch (err) {\n logger.error(`${label} failed: ${err}`);\n } finally {\n isRunning = false;\n }\n }\n\n return {\n name: \"vite-plugin-typedgql\",\n\n config(config): UserConfig | void {\n const exclude = new Set(config.optimizeDeps?.exclude ?? []);\n exclude.add(DEV_DEP_HMR_PACKAGE_NAME);\n\n const negatedPattern = buildNegatedWatchPattern(DEV_DEP_HMR_PACKAGE_NAME);\n const watchIgnored = config.server?.watch?.ignored;\n const mergedIgnored = Array.isArray(watchIgnored)\n ? [...watchIgnored, negatedPattern]\n : watchIgnored === undefined\n ? [negatedPattern]\n : watchIgnored;\n return {\n optimizeDeps: {\n exclude: Array.from(exclude),\n },\n server: {\n watch: {\n ignored: mergedIgnored,\n },\n },\n };\n },\n\n configResolved(cfg) {\n resolvedConfig = cfg;\n logger = cfg.logger;\n },\n\n /**\n * Runs on every `vite build` and on `vite dev` startup.\n * For remote schemas this is the only trigger.\n * For local schemas this handles the initial run; the watcher handles subsequent ones.\n */\n async buildStart() {\n const trigger = resolvedConfig?.command === \"build\" ? \"build\" : \"start\";\n await runCodegen(trigger);\n },\n\n /**\n * Dev-only: watch the local schema file and re-run on change.\n * Not registered for remote schemas — those re-run on the next dev/build start.\n */\n configureServer(server) {\n const packageRoot = normalizePath(\n resolve(server.config.root, \"node_modules\", DEV_DEP_HMR_PACKAGE_NAME),\n );\n const watchedDirs = DEV_DEP_HMR_WATCH_DIRS.map((dir) =>\n normalizePath(resolve(packageRoot, dir)),\n );\n for (const dir of watchedDirs) {\n server.watcher.add(dir);\n }\n server.watcher.on(\"change\", async (file) => {\n const changedPath = normalizePath(file);\n if (!watchedDirs.some((dir) => changedPath.startsWith(dir))) return;\n if (isDependencyRefreshRunning) return;\n isDependencyRefreshRunning = true;\n try {\n await server.restart(true);\n } finally {\n isDependencyRefreshRunning = false;\n }\n });\n\n if (remote) return;\n\n const root = server.config.root;\n const schemaPath = normalizePath(resolve(root, schema));\n let realSchemaPath = schemaPath;\n void realpath(schemaPath)\n .then((actualPath) => {\n realSchemaPath = normalizePath(actualPath);\n })\n .catch(() => {\n // Ignore when schema path is not resolvable yet.\n });\n\n server.watcher.add(schemaPath);\n initSchemaHashPromise = hashFile(schemaPath).then((hash) => {\n lastSchemaHash = hash;\n });\n server.watcher.on(\"change\", async (file) => {\n const changedPath = normalizePath(file);\n if (changedPath !== schemaPath && changedPath !== realSchemaPath)\n return;\n await initSchemaHashPromise;\n const nextHash = await hashFile(schemaPath);\n if (nextHash && nextHash === lastSchemaHash) return;\n await runCodegen(\"watch\");\n if (nextHash) {\n lastSchemaHash = nextHash;\n }\n await server.restart(true);\n });\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"vite.mjs","names":[],"sources":["../src/vite-plugin.ts"],"sourcesContent":["/**\n * Vite plugin for @ptdgrp/typedgql — runs codegen automatically.\n */\n\nimport { realpath } from \"node:fs/promises\";\nimport { createHash } from \"node:crypto\";\nimport { readFile } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { Plugin, ResolvedConfig, Logger, UserConfig } from \"vite\";\nimport { normalizePath } from \"vite\";\nimport { Generator } from \"./codegen/generator\";\nimport { loadLocalSchema, loadRemoteSchema } from \"./codegen/schema-loader\";\nimport type { CodegenOptions } from \"./codegen/options\";\nimport { loadConfig, mergeConfig } from \"./codegen/config-loader\";\n\nexport interface TypedGqlPluginOptions extends Omit<\n CodegenOptions,\n \"schemaLoader\"\n> {\n /**\n * GraphQL schema source.\n * - Local file path: `\"./schema.graphql\"`\n * - Remote endpoint: `\"http://localhost:4000/graphql\"`\n *\n * Local file → codegen runs on startup, then re-runs on every file change.\n * Remote URL → codegen runs on every `vite dev` / `vite build` invocation.\n *\n * If omitted, will attempt to load from .typedgqlrc.toml config file.\n */\n schema?: string;\n /**\n * HTTP headers forwarded when fetching a remote schema.\n * Only used when `schema` is a URL.\n */\n schemaHeaders?: Record<string, string>;\n /**\n * Output directory for generated files.\n * Alias for `targetDir` for better clarity.\n */\n outputDir?: string;\n}\n\nconst isRemote = (schema: string): boolean => {\n return /^https?:\\/\\//.test(schema);\n};\n\nconst makeSchemaLoader = (\n schema: string,\n headers?: Record<string, string>,\n): (() => Promise<import(\"graphql\").GraphQLSchema>) => {\n return isRemote(schema)\n ? () => loadRemoteSchema(schema, headers)\n : () => loadLocalSchema(schema);\n};\n\nconst buildNegatedWatchPattern = (packageName: string): string => {\n return `!**/node_modules/${packageName}/**`;\n};\n\nconst DEV_DEP_HMR_PACKAGE_NAME = \"@ptdgrp/typedgql\";\nconst DEV_DEP_HMR_WATCH_DIRS = [\"dist\"] as const;\n\nconst hashFile = async (path: string): Promise<string | undefined> => {\n try {\n const content = await readFile(path);\n return createHash(\"sha256\").update(content).digest(\"hex\");\n } catch {\n return undefined;\n }\n};\n\n/**\n * Vite plugin that runs typedgql codegen automatically.\n *\n * - **Local schema** — runs once on startup, then watches for file changes.\n * - **Remote schema** — runs on every `vite dev` / `vite build` invocation.\n * - **Config file** — if no schema is provided, loads from .typedgqlrc.toml\n *\n * @example\n * ```ts\n * // vite.config.ts\n * import { typedgql } from \"@ptdgrp/typedgql/vite\";\n *\n * export default defineConfig({\n * plugins: [\n * // local file\n * typedgql({ schema: \"./schema.graphql\" }),\n * // or remote endpoint\n * typedgql({ schema: \"http://localhost:4000/graphql\" }),\n * // or use .typedgqlrc.toml config file\n * typedgql(),\n * ],\n * });\n * ```\n */\nexport function typedgql(options?: TypedGqlPluginOptions): Plugin {\n let resolvedOptions: TypedGqlPluginOptions;\n let schema: string | undefined;\n let remote: boolean;\n let codegenOptions: CodegenOptions;\n let initialized = false;\n\n let isRunning = false;\n let isDependencyRefreshRunning = false;\n let lastSchemaHash: string | undefined;\n let initSchemaHashPromise: Promise<void> | undefined;\n let resolvedConfig: ResolvedConfig;\n let logger: Logger;\n\n async function initializeOptions() {\n if (initialized) return;\n \n // Load config file if it exists\n const fileConfig = await loadConfig();\n\n // Merge file config with programmatic options\n resolvedOptions = mergeConfig(fileConfig, options ?? {});\n\n // Normalize outputDir to targetDir\n if (resolvedOptions.outputDir && !resolvedOptions.targetDir) {\n resolvedOptions.targetDir = resolvedOptions.outputDir;\n }\n\n // Validate schema is provided\n if (!resolvedOptions.schema) {\n throw new Error(\n \"typedgql: 'schema' option is required. \" +\n \"Provide it in plugin options or in .typedgqlrc.toml config file.\",\n );\n }\n\n schema = resolvedOptions.schema;\n remote = isRemote(schema);\n\n const {\n schema: _,\n schemaHeaders,\n outputDir: __,\n ...generatorOptions\n } = resolvedOptions;\n\n codegenOptions = {\n ...generatorOptions,\n schemaLoader: makeSchemaLoader(schema, schemaHeaders),\n };\n \n initialized = true;\n }\n\n async function runCodegen(trigger: string) {\n if (isRunning) return;\n isRunning = true;\n const label = `\\x1b[36m[typedgql:${trigger}]\\x1b[0m`;\n try {\n // logger.info(`${label} running codegen (schema: ${schema})`);\n const generator = new Generator(codegenOptions);\n await generator.generate();\n // logger.info(`${label} done`);\n } catch (err) {\n logger.error(`${label} failed: ${err}`);\n } finally {\n isRunning = false;\n }\n }\n\n return {\n name: \"vite-plugin-typedgql\",\n\n config(config): UserConfig | void {\n const exclude = new Set(config.optimizeDeps?.exclude ?? []);\n exclude.add(DEV_DEP_HMR_PACKAGE_NAME);\n\n const negatedPattern = buildNegatedWatchPattern(DEV_DEP_HMR_PACKAGE_NAME);\n const watchIgnored = config.server?.watch?.ignored;\n const mergedIgnored = Array.isArray(watchIgnored)\n ? [...watchIgnored, negatedPattern]\n : watchIgnored === undefined\n ? [negatedPattern]\n : watchIgnored;\n return {\n optimizeDeps: {\n exclude: Array.from(exclude),\n },\n server: {\n watch: {\n ignored: mergedIgnored,\n },\n },\n };\n },\n\n configResolved(cfg) {\n resolvedConfig = cfg;\n logger = cfg.logger;\n },\n\n /**\n * Runs on every `vite build` and on `vite dev` startup.\n * For remote schemas this is the only trigger.\n * For local schemas this handles the initial run; the watcher handles subsequent ones.\n */\n async buildStart() {\n await initializeOptions();\n const trigger = resolvedConfig?.command === \"build\" ? \"build\" : \"start\";\n await runCodegen(trigger);\n },\n\n /**\n * Dev-only: watch the local schema file and re-run on change.\n * Not registered for remote schemas — those re-run on the next dev/build start.\n */\n configureServer(server) {\n const packageRoot = normalizePath(\n resolve(server.config.root, \"node_modules\", DEV_DEP_HMR_PACKAGE_NAME),\n );\n const watchedDirs = DEV_DEP_HMR_WATCH_DIRS.map((dir) =>\n normalizePath(resolve(packageRoot, dir)),\n );\n for (const dir of watchedDirs) {\n server.watcher.add(dir);\n }\n server.watcher.on(\"change\", async (file) => {\n const changedPath = normalizePath(file);\n if (!watchedDirs.some((dir) => changedPath.startsWith(dir))) return;\n if (isDependencyRefreshRunning) return;\n isDependencyRefreshRunning = true;\n try {\n await server.restart(true);\n } finally {\n isDependencyRefreshRunning = false;\n }\n });\n\n // Setup schema watcher after initialization\n void initializeOptions().then(() => {\n // Schema might not be initialized yet if using config file\n // Wait for buildStart to initialize it\n if (!schema || remote) return;\n\n const root = server.config.root;\n const schemaPath = normalizePath(resolve(root, schema));\n let realSchemaPath = schemaPath;\n void realpath(schemaPath)\n .then((actualPath) => {\n realSchemaPath = normalizePath(actualPath);\n })\n .catch(() => {\n // Ignore when schema path is not resolvable yet.\n });\n\n server.watcher.add(schemaPath);\n initSchemaHashPromise = hashFile(schemaPath).then((hash) => {\n lastSchemaHash = hash;\n });\n server.watcher.on(\"change\", async (file) => {\n const changedPath = normalizePath(file);\n if (changedPath !== schemaPath && changedPath !== realSchemaPath)\n return;\n await initSchemaHashPromise;\n const nextHash = await hashFile(schemaPath);\n if (nextHash && nextHash === lastSchemaHash) return;\n await runCodegen(\"watch\");\n if (nextHash) {\n lastSchemaHash = nextHash;\n }\n await server.restart(true);\n });\n });\n },\n };\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ptdgrp/typedgql",
3
- "version": "1.0.0-beta.16",
3
+ "version": "1.0.0-beta.20",
4
4
  "description": "Strongly typed GraphQL client code generator and runtime",
5
5
  "type": "module",
6
6
  "author": "tonitrnel",
@@ -18,6 +18,9 @@
18
18
  "main": "./dist/index.cjs",
19
19
  "module": "./dist/index.mjs",
20
20
  "types": "./index.ts",
21
+ "bin": {
22
+ "typedgql": "./dist/cli.mjs"
23
+ },
21
24
  "exports": {
22
25
  ".": {
23
26
  "import": {
@@ -48,6 +51,16 @@
48
51
  "types": "./dist/node.d.cts",
49
52
  "default": "./dist/node.cjs"
50
53
  }
54
+ },
55
+ "./runtime": {
56
+ "import": {
57
+ "types": "./dist/runtime.d.mts",
58
+ "default": "./dist/runtime.mjs"
59
+ },
60
+ "require": {
61
+ "types": "./dist/runtime.d.cts",
62
+ "default": "./dist/runtime.cjs"
63
+ }
51
64
  }
52
65
  },
53
66
  "files": [
@@ -65,11 +78,15 @@
65
78
  "peerDependencies": {
66
79
  "graphql": ">=15.0.0",
67
80
  "typescript": ">=5.0.0",
68
- "vite": ">=5.0.0"
81
+ "vite": ">=5.0.0",
82
+ "prettier": "^3"
69
83
  },
70
84
  "peerDependenciesMeta": {
71
85
  "vite": {
72
86
  "optional": true
87
+ },
88
+ "prettier": {
89
+ "optional": true
73
90
  }
74
91
  },
75
92
  "devDependencies": {
@@ -77,11 +94,13 @@
77
94
  "@vitest/coverage-v8": "^4.0.18",
78
95
  "fast-check": "^4.5.3",
79
96
  "graphql": "^16.0.0",
97
+ "tsd": "^0.33.0",
80
98
  "tsdown": "0.20.3",
81
99
  "typescript": "^5.8.0",
82
- "vitest": "^4.0.18"
100
+ "vitest": "^4.0.18",
101
+ "prettier": "^3.8.3"
83
102
  },
84
103
  "dependencies": {
85
- "tsd": "^0.33.0"
104
+ "smol-toml": "^1.6.1"
86
105
  }
87
106
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/runtime/schema.ts","../src/runtime/parameter.ts","../src/runtime/field-options.ts","../src/runtime/types.ts","../src/runtime/enum-metadata.ts","../src/runtime/selection.ts","../src/runtime/proxy.ts","../src/runtime/text-builder.ts","../src/runtime/cyrb53.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/runtime/schema.ts","../src/runtime/parameter.ts","../src/runtime/field-options.ts","../src/runtime/types.ts","../src/runtime/enum-metadata.ts","../src/runtime/selection.ts","../src/runtime/proxy.ts","../src/runtime/text-builder.ts","../src/runtime/cyrb53.ts"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../src/runtime/types.ts","../src/runtime/schema.ts","../src/runtime/parameter.ts","../src/runtime/text-builder.ts","../src/runtime/selection.ts","../src/runtime/field-options.ts","../src/runtime/enum-metadata.ts","../src/runtime/proxy.ts","../src/runtime/cyrb53.ts"],"sourcesContent":["import type { SchemaType } from \"./schema\";\nimport type { FieldOptionsValue } from \"./field-options\";\nimport type { ParameterRef } from \"./parameter\";\n\nexport const __phantom: unique symbol = Symbol(\"__phantom\");\nexport const __runtime: unique symbol = Symbol(\"__selection_runtime\");\n\n// ─── Core Selection Interface ──────────────────────────────────────────\n\nexport interface Selection<\n E extends string,\n T extends object,\n TVariables extends object,\n> {\n toString(): string;\n toFragmentString(): string;\n toJSON(): string;\n\n readonly [__phantom]: readonly [E, T, TVariables];\n}\n\nexport interface SelectionRuntime<E extends string = string> {\n readonly schemaType: SchemaType<E>;\n readonly operationName?: string;\n readonly fieldMap: ReadonlyMap<string, FieldSelection>;\n readonly directiveMap: ReadonlyMap<string, DirectiveArgs>;\n readonly variableTypeMap: ReadonlyMap<string, VariableTypeRegistration>;\n\n findField(fieldKey: string): FieldSelection | undefined;\n findFieldsByName(fieldName: string): readonly FieldSelection[];\n findFieldByName(fieldName: string): FieldSelection | undefined;\n}\n\nexport type ExecutableSelection<\n E extends string,\n T extends object,\n TVariables extends object,\n> = Selection<E, T, TVariables> & {\n readonly [__runtime]: SelectionRuntime<E>;\n};\n\nexport function runtimeOf<\n E extends string,\n T extends object,\n TVariables extends object,\n>(selection: Selection<E, T, TVariables>): SelectionRuntime<E> {\n return (selection as ExecutableSelection<E, T, TVariables>)[__runtime];\n}\n\n// ─── Utility Types ────────────────────────────────────────────────────\n\nexport type ShapeOf<F> =\n F extends Selection<string, infer M, object> ? M : never;\n\nexport type VariablesOf<T> =\n T extends Selection<string, object, infer TVariables> ? TVariables : never;\n\nexport type Expand<T> =\n T extends ReadonlyArray<infer U>\n ? ReadonlyArray<Expand<U>>\n : T extends Array<infer U>\n ? Array<Expand<U>>\n : T extends object\n ? { [K in keyof T]: Expand<T[K]> }\n : T;\n\nexport type ValueOrThunk<T> = T | (() => T);\n\nexport interface VariableTypeRegistration {\n readonly typeName: string;\n readonly source: string;\n}\n\nexport interface FieldSelection {\n readonly name: string;\n readonly argGraphQLTypes?: ReadonlyMap<string, string>;\n readonly args?: object;\n readonly fieldOptionsValue?: FieldOptionsValue;\n readonly plural: boolean;\n readonly childSelections?: ReadonlyArray<\n ExecutableSelection<string, object, object>\n >;\n}\n\n// ─── Directives & Fragments ──────────────────────────────────────────\n\nexport type DirectiveArgs =\n | { readonly [key: string]: ParameterRef<string> | StringValue | any }\n | undefined;\n\nexport class StringValue {\n constructor(\n readonly value: any,\n readonly quotationMarks: boolean = true,\n ) {}\n}\n\nexport const __fragment_spread = Symbol(\"__fragment_spread\");\n\nexport abstract class FragmentSpread<\n TFragmentName extends string,\n E extends string,\n T extends object,\n TVariables extends object,\n> {\n readonly [__fragment_spread] = true;\n\n protected constructor(\n readonly name: TFragmentName,\n readonly selection: ExecutableSelection<E, T, TVariables>,\n ) {}\n}\n\nexport class FragmentRef<\n TFragmentName extends string,\n E extends string,\n T extends object,\n TVariables extends object,\n> extends FragmentSpread<TFragmentName, E, T, TVariables> {\n constructor(\n name: TFragmentName,\n selection: ExecutableSelection<E, T, TVariables>,\n ) {\n super(name, selection);\n }\n}\n","// ─── Type Categories ──────────────────────────────────────────────────\n\n/**\n * Runtime-level classification for GraphQL composite types.\n *\n * - OBJECT:\n * Represents identity-bearing types (typically with an id-like field) that are\n * treated as independently addressable nodes in selection/proxy logic.\n * - EMBEDDED:\n * Represents value-like types without independent identity; they are selected\n * as nested structures and are not treated as standalone entity nodes.\n */\nexport type SchemaTypeCategory = \"OBJECT\" | \"EMBEDDED\";\n\n/**\n * Runtime-level classification for fields in a schema type.\n *\n * - ID:\n * Identity field of an OBJECT-like node (used for entity identity semantics).\n * - SCALAR:\n * Leaf/value field with no nested selection.\n * - REFERENCE:\n * Single-valued association to another composite type (requires child selection).\n * - LIST:\n * Multi-valued association to another composite type (requires child selection).\n */\nexport type SchemaFieldCategory = \"ID\" | \"SCALAR\" | \"REFERENCE\" | \"LIST\";\n\n// ─── Schema Type & Field (plain readonly interfaces) ─────────────────\n\n/**\n * Normalized runtime representation of one GraphQL composite type.\n */\nexport interface SchemaType<E extends string = string> {\n /** GraphQL type name. */\n readonly name: E;\n /** Coarse runtime category used by selection/proxy behavior. */\n readonly category: SchemaTypeCategory;\n /** Directly implemented interfaces / declared super types. */\n readonly interfaces: readonly SchemaType[];\n /** Fields declared on this type itself (excluding inherited fields). */\n readonly ownFields: ReadonlyMap<string, SchemaField>;\n /** Effective fields (own fields plus inherited/interface fields). */\n readonly fields: ReadonlyMap<string, SchemaField>;\n}\n\n/**\n * Normalized runtime representation of one field on a schema type.\n */\nexport interface SchemaField {\n /** Field name as exposed by GraphQL. */\n readonly name: string;\n /** Coarse runtime field category. */\n readonly category: SchemaFieldCategory;\n /** GraphQL argument type map keyed by argument name (SDL form, e.g. `ID!`). */\n readonly argGraphQLTypeMap: ReadonlyMap<string, string>;\n /** Target GraphQL type name when this field points to another composite type. */\n readonly targetTypeName?: string;\n /** Whether this field is multi-valued. */\n readonly isPlural: boolean;\n /** Whether this field is an association/reference field. */\n readonly isAssociation: boolean;\n /** Whether runtime treats this field as function-like (args or association). */\n readonly isFunction: boolean;\n /** Whether this field may be omitted in generated runtime builders. */\n readonly isUndefinable: boolean;\n}\n\nconst SCHEMA_TYPE_REGISTRY = new Map<string, SchemaType>();\nconst SCHEMA_TYPE_FACTORY_REGISTRY = new Map<string, () => SchemaType>();\nconst SCHEMA_TYPE_RESOLVING = new Set<string>();\n\nexport const resolveRegisteredSchemaType = (\n typeName: string,\n): SchemaType | undefined => {\n const registered = SCHEMA_TYPE_REGISTRY.get(typeName);\n if (registered) {\n return registered;\n }\n\n const factory = SCHEMA_TYPE_FACTORY_REGISTRY.get(typeName);\n if (!factory) {\n return undefined;\n }\n if (SCHEMA_TYPE_RESOLVING.has(typeName)) {\n throw new Error(\n `Circular schema factory resolution detected for \"${typeName}\"`,\n );\n }\n\n SCHEMA_TYPE_RESOLVING.add(typeName);\n try {\n const created = factory();\n registerSchemaType(created);\n } finally {\n SCHEMA_TYPE_RESOLVING.delete(typeName);\n }\n\n return SCHEMA_TYPE_REGISTRY.get(typeName);\n};\n\nexport const registerSchemaTypeFactory = (\n typeName: string,\n factory: () => SchemaType,\n) => {\n if (!SCHEMA_TYPE_FACTORY_REGISTRY.has(typeName)) {\n SCHEMA_TYPE_FACTORY_REGISTRY.set(typeName, factory);\n }\n};\n\n// ─── Field Descriptor (input to factory) ──────────────────────────────\n\ntype FieldDescriptor =\n | string\n | {\n readonly name: string;\n readonly category: SchemaFieldCategory;\n readonly undefinable?: boolean;\n readonly argGraphQLTypeMap?: { readonly [key: string]: string };\n readonly targetTypeName?: string;\n };\n\n// ─── Factory ────────────────────────────────────────────────────────\n\nexport const createSchemaType = <E extends string>(\n name: E,\n category: SchemaTypeCategory,\n superTypes: readonly SchemaType[],\n declaredFields: readonly FieldDescriptor[],\n): SchemaType<E> => {\n const declaredFieldMap = new Map<string, SchemaField>();\n\n for (const desc of declaredFields) {\n if (typeof desc === \"string\") {\n declaredFieldMap.set(desc, buildField(desc, \"SCALAR\", new Map()));\n } else {\n const argMap = new Map<string, string>();\n if (desc.argGraphQLTypeMap) {\n for (const k in desc.argGraphQLTypeMap) {\n argMap.set(k, desc.argGraphQLTypeMap[k]!);\n }\n }\n declaredFieldMap.set(\n desc.name,\n buildField(\n desc.name,\n desc.category,\n argMap,\n desc.targetTypeName,\n desc.undefinable,\n ),\n );\n }\n }\n\n // Lazily compute merged fields (own + inherited)\n let _fields: ReadonlyMap<string, SchemaField> | undefined;\n\n const result: SchemaType<E> = {\n name,\n category,\n interfaces: superTypes,\n ownFields: declaredFieldMap,\n get fields(): ReadonlyMap<string, SchemaField> {\n if (!_fields) {\n _fields =\n superTypes.length === 0 ? declaredFieldMap : collectFields(result);\n }\n return _fields;\n },\n };\n\n registerSchemaType(result);\n return result;\n};\n\n// ─── Internal helpers ─────────────────────────────────────────────────\n\nconst buildField = (\n name: string,\n category: SchemaFieldCategory,\n argGraphQLTypeMap: ReadonlyMap<string, string>,\n targetTypeName?: string,\n undefinable?: boolean,\n): SchemaField => {\n const isPlural = category === \"LIST\";\n const isAssociation = category === \"REFERENCE\" || isPlural;\n\n return {\n name,\n category,\n argGraphQLTypeMap,\n targetTypeName,\n isPlural,\n isAssociation,\n isFunction:\n argGraphQLTypeMap.size !== 0 ||\n isAssociation ||\n targetTypeName !== undefined,\n isUndefinable: undefinable ?? false,\n };\n};\n\nconst collectFields = (type: SchemaType): ReadonlyMap<string, SchemaField> => {\n const result = new Map<string, SchemaField>();\n _collect(type, result);\n return result;\n};\n\nconst _collect = (type: SchemaType, out: Map<string, SchemaField>) => {\n for (const [name, field] of type.ownFields) {\n out.set(name, field);\n }\n for (const superType of type.interfaces) {\n _collect(superType, out);\n }\n};\n\nconst registerSchemaType = (type: SchemaType) => {\n const existing = SCHEMA_TYPE_REGISTRY.get(type.name);\n if (!existing) {\n SCHEMA_TYPE_REGISTRY.set(type.name, type);\n return;\n }\n\n if (existing.ownFields.size < type.ownFields.size) {\n SCHEMA_TYPE_REGISTRY.set(type.name, type);\n }\n};\n","/**\n * Runtime marker for `ParameterRef`.\n *\n * We use a unique symbol instead of string keys to avoid accidental collision\n * with user objects passed as argument literals.\n */\nexport const __marker: unique symbol = Symbol(\"__parameter_ref_marker\");\n\nexport class ParameterRef<TName extends string> {\n readonly [__marker] = true;\n\n private constructor(\n /** GraphQL variable name without `$` prefix. */\n readonly name: TName,\n /**\n * Optional GraphQL type annotation (e.g. `Boolean!`, `[String!]`).\n *\n * - Field argument position: usually omitted, type can be inferred from\n * schema `argGraphQLTypeMap`.\n * - Directive/nested position: usually required to register variable type.\n */\n readonly explicitType?: string,\n ) {\n if (name.startsWith(\"$\")) {\n throw new Error(\"parameter name cannot start with '$'\");\n }\n }\n\n /**\n * Represents a GraphQL variable reference used in DSL argument objects.\n *\n * Example:\n * - `id: ParameterRef.of(\"postId\")` -> `id: $postId`\n *\n * Main use cases:\n * 1. Rename/bind a field argument to a different variable name.\n * 2. Explicitly annotate variable type when runtime cannot infer it from a\n * field argument position (for example directive args or nested literals).\n *\n * When `explicitType` is NOT needed:\n * - Field arg slot with schema type:\n * `q.user({ id: ParameterRef.of(\"userId\") }, (u) => u.id)`\n * `id` type is inferred from schema (`ID!`).\n *\n * When `explicitType` IS needed:\n * - Directive arg slot:\n * `node.$directive(\"include\", { if: ParameterRef.of(\"withEmail\", \"Boolean!\") })`\n * - Nested input slot without direct arg type context:\n * `q.search({ filter: { keyword: ParameterRef.of(\"kw\", \"String!\") } }, ...)`\n */\n static of<TName extends string>(\n name: TName,\n explicitType?: string,\n ): ParameterRef<TName> {\n return new ParameterRef<TName>(name, explicitType);\n }\n}\n\nexport type AcceptableVariables<T extends object> = {\n [K in keyof T]: T[K] | ParameterRef<string>;\n};\n\nexport type UnresolvedVariables<T, TVariables> = ReversedType<\n UnresolvedNames<UnresolvedRefs<T>>,\n TVariables\n>;\n\ntype UnresolvedRefs<TVariables> = Pick<\n TVariables,\n {\n [K in keyof TVariables]: TVariables[K] extends ParameterRef<string>\n ? K\n : never;\n }[keyof TVariables]\n>;\n\ntype UnresolvedNames<TUnresolvedVariableRefs> = {\n [K in keyof TUnresolvedVariableRefs]: ParameterRefName<\n TUnresolvedVariableRefs[K]\n >;\n};\n\ntype ReversedType<T extends Record<keyof T, keyof any>, TStandard> = {\n [P in T[keyof T]]: {\n [K in keyof T]: T[K] extends P\n ? K extends keyof TStandard\n ? TStandard[K]\n : never\n : never;\n }[keyof T];\n};\n\ntype ParameterRefName<T> =\n T extends ParameterRef<infer TRefName> ? TRefName : never;\n","export type ScopeType = \"block\" | \"arguments\" | \"array\";\n\nexport interface ScopeOptions {\n readonly type: ScopeType;\n readonly multiLines?: boolean;\n readonly separator?: string;\n readonly prefix?: string;\n readonly suffix?: string;\n}\n\nconst SCOPE_BRACKETS: Record<ScopeType, [open: string, close: string]> = {\n block: [\"{\", \"}\"],\n arguments: [\"(\", \")\"],\n array: [\"[\", \"]\"],\n};\n\nconst DEFAULT_SEPARATORS: Partial<Record<ScopeType, string>> = {\n arguments: \", \",\n array: \", \",\n};\n\ninterface ScopeState {\n readonly type: ScopeType;\n readonly multiLines: boolean;\n readonly separator: string | undefined;\n dirty: boolean;\n}\n\nexport class TextBuilder {\n private result = \"\";\n private atNewLine = false;\n private readonly scopes: ScopeState[] = [];\n\n constructor(private readonly indent: string = \"\\t\") {}\n\n text(value: string): this {\n const scope = this.scopes.at(-1);\n if (value && scope && !scope.dirty) {\n if (scope.multiLines) this.lineBreak();\n scope.dirty = true;\n }\n let remaining = value;\n while (remaining) {\n this.flushIndent();\n const newlineIdx = remaining.indexOf(\"\\n\");\n if (newlineIdx !== -1) {\n this.result += remaining.substring(0, newlineIdx);\n this.lineBreak();\n remaining = remaining.substring(newlineIdx + 1);\n } else {\n this.result += remaining;\n remaining = \"\";\n }\n }\n return this;\n }\n\n scope(options: ScopeOptions, action: () => void): this {\n const { type, multiLines = false, separator, prefix, suffix } = options;\n const [open, close] = SCOPE_BRACKETS[type];\n\n if (prefix) this.text(prefix);\n this.text(open);\n\n this.scopes.push({\n type,\n multiLines,\n separator: separator ?? DEFAULT_SEPARATORS[type],\n dirty: false,\n });\n\n try {\n action();\n } finally {\n this.scopes.pop();\n if (multiLines && !this.atNewLine) this.lineBreak();\n this.text(close);\n if (suffix) this.text(suffix);\n }\n\n return this;\n }\n\n separator(value?: string): this {\n const scope = this.scopes.at(-1);\n if (!scope) throw new Error(\"No existing scope\");\n if (scope.dirty) {\n const sep = value || scope.separator;\n if (sep) this.text(sep);\n if (scope.multiLines) this.lineBreak();\n }\n return this;\n }\n\n toString(): string {\n return this.result;\n }\n\n private flushIndent(): void {\n if (this.atNewLine) {\n this.result += this.indent.repeat(this.scopes.length);\n this.atNewLine = false;\n }\n }\n\n private lineBreak(): void {\n this.result += \"\\n\";\n this.atNewLine = true;\n }\n}\n","import type { EnumInputMetadata, EnumInputMetaType } from \"./enum-metadata\";\nimport type { SchemaType } from \"./schema\";\nimport type { FieldOptionsValue } from \"./field-options\";\nimport { __phantom, __runtime, runtimeOf } from \"./types\";\nimport type {\n Selection,\n ExecutableSelection,\n SelectionRuntime,\n FieldSelection,\n DirectiveArgs,\n VariableTypeRegistration,\n} from \"./types\";\nimport { StringValue } from \"./types\";\nimport { ParameterRef, __marker } from \"./parameter\";\nimport { TextBuilder } from \"./text-builder\";\n\n// ─── SelectionImpl ─────────────────────────────────────────────────────\n// Immutable linked-list node. Each field/directive operation returns a new\n// node pointing back to its predecessor via `prev`. The linked list is\n// walked lazily to build `fieldMap` / `directiveMap` / query text.\n\nexport class SelectionImpl<\n E extends string,\n T extends object,\n TVariables extends object,\n> implements Selection<E, T, TVariables> {\n declare readonly [__phantom]: readonly [E, T, TVariables];\n readonly [__runtime]: SelectionRuntime<E> = this;\n\n private _fieldMap?: ReadonlyMap<string, FieldSelection>;\n private _directiveMap?: ReadonlyMap<string, DirectiveArgs>;\n private _result?: SerializedResult;\n\n constructor(\n private readonly _ctx:\n | SelectionImpl<string, object, object>\n | readonly [SchemaType<E>, EnumInputMetadata, string[] | undefined],\n private readonly _negative: boolean,\n private readonly _field: string,\n private readonly _args?: { [key: string]: any },\n private readonly _child?: SelectionImpl<string, object, object>,\n private readonly _fieldOptionsValue?: FieldOptionsValue,\n private readonly _directive?: string,\n private readonly _directiveArgs?: DirectiveArgs,\n private readonly _operationName?: string,\n ) {}\n\n // ── Last field accessor (for $alias) ──\n\n get lastField(): string {\n return this._field;\n }\n\n // ── Schema metadata ──\n\n private get _schemaType(): SchemaType<E> {\n return Array.isArray(this._ctx)\n ? (this._ctx[0] as SchemaType<E>)\n : ((this._ctx as SelectionImpl<string, object, object>)\n ._schemaType as SchemaType<E>);\n }\n\n private get _enumInputMetadata(): EnumInputMetadata {\n return Array.isArray(this._ctx)\n ? (this._ctx[1] as EnumInputMetadata)\n : (this._ctx as SelectionImpl<string, object, object>)._enumInputMetadata;\n }\n\n private get _unionItemTypes(): string[] | undefined {\n return Array.isArray(this._ctx)\n ? this._ctx.length > 2 && this._ctx[2]?.length\n ? this._ctx[2]\n : undefined\n : (this._ctx as SelectionImpl<string, object, object>)._unionItemTypes;\n }\n\n private get _prev(): SelectionImpl<string, object, object> | undefined {\n return Array.isArray(this._ctx)\n ? undefined\n : (this._ctx as SelectionImpl<string, object, object>);\n }\n\n get schemaType(): SchemaType<E> {\n return this._schemaType;\n }\n\n get operationName(): string | undefined {\n if (this._operationName !== undefined) {\n return this._operationName;\n }\n return this._prev?.operationName;\n }\n\n // ── Builders (return new immutable nodes) ──\n\n addField<F extends SelectionImpl<string, object, object>>(\n field: string,\n args?: { [key: string]: any },\n child?: SelectionImpl<string, object, object>,\n optionsValue?: FieldOptionsValue,\n ): F {\n return new SelectionImpl(\n this,\n false,\n field,\n args,\n child,\n optionsValue,\n ) as unknown as F;\n }\n\n removeField<F extends SelectionImpl<string, object, object>>(\n field: string,\n ): F {\n if (field === \"__typename\") throw new Error(\"__typename cannot be removed\");\n return new SelectionImpl(this, true, field) as unknown as F;\n }\n\n addEmbeddable<F extends SelectionImpl<string, object, object>>(\n child: SelectionImpl<string, object, object>,\n fragmentName?: string,\n ): F {\n let fieldName: string;\n if (fragmentName !== undefined) {\n if (fragmentName.length === 0)\n throw new Error(\"fragmentName cannot be ''\");\n if (fragmentName.startsWith(\"on \"))\n throw new Error(\"fragmentName cannot start with 'on '\");\n fieldName = `... ${fragmentName}`;\n } else if (\n child._schemaType.name === this._schemaType.name ||\n child._unionItemTypes !== undefined\n ) {\n fieldName = \"...\";\n } else {\n fieldName = `... on ${child._schemaType.name}`;\n }\n return new SelectionImpl(\n this,\n false,\n fieldName,\n undefined,\n child,\n ) as unknown as F;\n }\n\n addDirective<F extends SelectionImpl<string, object, object>>(\n directive: string,\n directiveArgs?: DirectiveArgs,\n ): F {\n return new SelectionImpl(\n this,\n false,\n \"\",\n undefined,\n undefined,\n undefined,\n directive,\n directiveArgs,\n ) as unknown as F;\n }\n\n withOperationName<F extends SelectionImpl<string, object, object>>(\n operationName?: string,\n ): F {\n if (operationName === undefined) {\n return this as unknown as F;\n }\n if (operationName.trim().length === 0) {\n throw new Error(\"operationName cannot be empty\");\n }\n return new SelectionImpl(\n this,\n false,\n \"\",\n undefined,\n undefined,\n undefined,\n undefined,\n undefined,\n operationName,\n ) as unknown as F;\n }\n\n // ── Computed maps (lazy, cached) ──\n\n get fieldMap(): ReadonlyMap<string, FieldSelection> {\n return (this._fieldMap ??= this._buildFieldMap());\n }\n\n get directiveMap(): ReadonlyMap<string, DirectiveArgs> {\n return (this._directiveMap ??= this._buildDirectiveMap());\n }\n\n get variableTypeMap(): ReadonlyMap<string, VariableTypeRegistration> {\n return this._serialize().variableTypeMap;\n }\n\n // ── Lookup helpers ──\n\n findField(fieldKey: string): FieldSelection | undefined {\n const field = this.fieldMap.get(fieldKey);\n if (field) return field;\n for (const [, f] of this.fieldMap) {\n if (f.name.startsWith(\"...\") && f.childSelections) {\n for (const child of f.childSelections) {\n const deeper = runtimeOf(child).findField(fieldKey);\n if (deeper) return deeper;\n }\n }\n }\n return undefined;\n }\n\n findFieldsByName(fieldName: string): readonly FieldSelection[] {\n const out: FieldSelection[] = [];\n this._collectFieldsByName(fieldName, out);\n return out;\n }\n\n findFieldByName(fieldName: string): FieldSelection | undefined {\n const fields = this.findFieldsByName(fieldName);\n if (fields.length > 1) {\n throw new Error(\n `Too many fields named \"${fieldName}\" in selection of type \"${this._schemaType.name}\"`,\n );\n }\n return fields[0];\n }\n\n // ── Serialization ──\n\n toString(): string {\n return this._serialize().text;\n }\n\n toFragmentString(): string {\n return this._serialize().fragmentText;\n }\n\n toJSON(): string {\n return JSON.stringify(this._serialize());\n }\n\n // ═══════════════════════════════════════════════════════════════════\n // Private implementation\n // ═══════════════════════════════════════════════════════════════════\n\n private _buildFieldMap(): ReadonlyMap<string, FieldSelection> {\n // Collect all nodes in chain order\n const nodes: SelectionImpl<string, object, object>[] = [];\n for (\n let n: SelectionImpl<string, object, object> | undefined = this;\n n;\n n = n._prev\n ) {\n if (n._field !== \"\") nodes.push(n);\n }\n\n const map = new Map<string, FieldSelection>();\n // Process oldest → newest so later operations can override earlier ones\n // (for example alias rewrites and field removals).\n for (let i = nodes.length - 1; i >= 0; --i) {\n const n = nodes[i]!;\n const key = n._fieldOptionsValue?.alias ?? n._field;\n\n if (n._field.startsWith(\"...\")) {\n let children = map.get(key)?.childSelections as\n | SelectionImpl<string, object, object>[]\n | undefined;\n if (!children) {\n children = [];\n map.set(key, {\n name: n._field,\n plural: false,\n childSelections: children,\n });\n }\n children.push(n._child!);\n } else if (n._negative) {\n map.delete(key);\n } else {\n map.set(key, {\n name: n._field,\n argGraphQLTypes: n._schemaType.fields.get(n._field)\n ?.argGraphQLTypeMap,\n args: n._args,\n fieldOptionsValue: n._fieldOptionsValue,\n plural: n._schemaType.fields.get(n._field)?.isPlural ?? false,\n childSelections: n._child ? [n._child] : undefined,\n });\n }\n }\n return map;\n }\n\n private _buildDirectiveMap(): ReadonlyMap<string, DirectiveArgs> {\n const map = new Map<string, DirectiveArgs>();\n for (\n let n: SelectionImpl<string, object, object> | undefined = this;\n n;\n n = n._prev\n ) {\n if (n._directive !== undefined && !map.has(n._directive)) {\n map.set(n._directive, n._directiveArgs);\n }\n }\n return map;\n }\n\n private _collectFieldsByName(fieldName: string, out: FieldSelection[]) {\n for (const field of this.fieldMap.values()) {\n if (field.name === fieldName) {\n out.push(field);\n } else if (field.name.startsWith(\"...\") && field.childSelections) {\n for (const child of field.childSelections) {\n out.push(...runtimeOf(child).findFieldsByName(fieldName));\n }\n }\n }\n }\n\n // ── Query serialization ─────────────────────────────────────────\n\n private _serialize(): SerializedResult {\n return (this._result ??= serialize(this));\n }\n}\n\nexport const withOperationName = <S extends Selection<string, object, object>>(\n selection: S,\n operationName?: string,\n): S =>\n (\n selection as unknown as SelectionImpl<string, object, object>\n ).withOperationName(operationName) as unknown as S;\n\n// ═══════════════════════════════════════════════════════════════════════\n// Serialization (extracted from old ResultContext)\n// ═══════════════════════════════════════════════════════════════════════\n\ninterface SerializedResult {\n readonly text: string;\n readonly fragmentText: string;\n readonly variableTypeMap: ReadonlyMap<string, VariableTypeRegistration>;\n}\n\nconst serialize = (\n root: SelectionImpl<string, object, object>,\n): SerializedResult => {\n const writer = new TextBuilder();\n const fragmentWriter = new TextBuilder();\n let ctx = new SerializeContext(writer);\n\n ctx.acceptDirectives(root.directiveMap);\n writer.scope({ type: \"block\", multiLines: true, suffix: \"\\n\" }, () => {\n ctx.acceptSelection(root);\n });\n\n const renderedFragments = new Set<string>();\n while (true) {\n const fragmentMap = ctx.namedFragmentMap;\n if (fragmentMap.size === 0) break;\n ctx = new SerializeContext(fragmentWriter, ctx);\n for (const [name, fragment] of fragmentMap) {\n if (renderedFragments.add(name)) {\n const runtime = runtimeOf(fragment);\n fragmentWriter.text(`fragment ${name} on ${runtime.schemaType.name} `);\n ctx.acceptDirectives(runtime.directiveMap);\n fragmentWriter.scope(\n { type: \"block\", multiLines: true, suffix: \"\\n\" },\n () => {\n ctx.acceptSelection(fragment);\n },\n );\n }\n }\n }\n\n return {\n text: writer.toString(),\n fragmentText: fragmentWriter.toString(),\n variableTypeMap: ctx.variableTypeMap,\n };\n};\n\nclass SerializeContext {\n readonly namedFragmentMap = new Map<\n string,\n ExecutableSelection<string, object, object>\n >();\n private readonly fragmentNameCounter = new Map<string, number>();\n private readonly fragmentRuntimeNameMap = new WeakMap<\n ExecutableSelection<string, object, object>,\n Map<string, string>\n >();\n readonly variableTypeMap: Map<string, VariableTypeRegistration>;\n\n constructor(\n private readonly writer: TextBuilder,\n prev?: SerializeContext,\n ) {\n this.variableTypeMap = prev?.variableTypeMap ?? new Map();\n }\n\n acceptSelection(sel: Selection<string, object, object>) {\n const t = this.writer.text.bind(this.writer);\n const runtime = runtimeOf(sel);\n for (const field of runtime.fieldMap.values()) {\n const name = field.name;\n const children = field.childSelections;\n const isNamedSpread =\n name.startsWith(\"... \") && !name.startsWith(\"... on \");\n\n if (isNamedSpread && children?.length) {\n const baseName = name.substring(\"...\".length).trim();\n for (const c of children) {\n const runtimeName = this.resolveFragmentRuntimeName(baseName, c);\n t(`... ${runtimeName}\\n`);\n }\n continue;\n }\n\n if (name !== \"...\") {\n const alias = field.fieldOptionsValue?.alias;\n if (alias && alias !== name) t(`${alias}: `);\n t(name);\n if (field.argGraphQLTypes) {\n const meta = (sel as any)._enumInputMetadata as EnumInputMetadata;\n this.acceptArgs(\n field.args,\n field.argGraphQLTypes,\n meta,\n `field '${runtime.schemaType.name}.${name}'`,\n );\n }\n this.acceptDirectives(field.fieldOptionsValue?.directives);\n }\n if (children?.length) {\n if (name === \"...\") {\n // Inline spread: flatten children directly into current selection.\n for (const c of children) this.acceptSelection(c);\n } else {\n t(\" \");\n this.writer.scope({ type: \"block\", multiLines: true }, () => {\n for (const c of children) this.acceptSelection(c);\n });\n }\n }\n t(\"\\n\");\n }\n }\n\n private resolveFragmentRuntimeName(\n baseName: string,\n selection: ExecutableSelection<string, object, object>,\n ): string {\n const existingByName = this.namedFragmentMap.get(baseName);\n if (existingByName === selection) {\n return baseName;\n }\n\n let byBaseName = this.fragmentRuntimeNameMap.get(selection);\n if (!byBaseName) {\n byBaseName = new Map<string, string>();\n this.fragmentRuntimeNameMap.set(selection, byBaseName);\n }\n const existing = byBaseName.get(baseName);\n if (existing) {\n return existing;\n }\n\n let runtimeName = baseName;\n const occupied = this.namedFragmentMap.get(runtimeName);\n if (occupied && occupied !== selection) {\n const next = this.fragmentNameCounter.get(baseName) ?? 1;\n let idx = next;\n while (this.namedFragmentMap.has(`${baseName}_${idx}`)) {\n idx += 1;\n }\n this.fragmentNameCounter.set(baseName, idx + 1);\n runtimeName = `${baseName}_${idx}`;\n }\n\n this.namedFragmentMap.set(runtimeName, selection);\n byBaseName.set(baseName, runtimeName);\n return runtimeName;\n }\n\n acceptDirectives(directives?: ReadonlyMap<string, DirectiveArgs>) {\n if (!directives) return;\n for (const [directive, args] of directives) {\n this.writer.text(`\\n@${directive}`);\n this.acceptArgs(args, undefined, undefined, `directive '@${directive}'`);\n }\n }\n\n private acceptArgs(\n args?: object,\n argGraphQLTypeMap?: ReadonlyMap<string, string>,\n enumInputMetadata?: EnumInputMetadata,\n argContext = \"argument\",\n ) {\n if (!args) return;\n const t = this.writer.text.bind(this.writer);\n\n let hasField: boolean;\n if (argGraphQLTypeMap) {\n hasField = false;\n for (const argName in args) {\n if (argGraphQLTypeMap.get(argName) !== undefined) {\n hasField = true;\n break;\n } else console.warn(`Unexpected argument: ${argName}`);\n }\n } else {\n hasField = Object.keys(args).length !== 0;\n }\n\n if (hasField) {\n this.writer.scope(\n { type: \"arguments\", multiLines: isMultilineJSON(args) },\n () => {\n for (const argName in args) {\n this.writer.separator();\n const arg = (args as Record<string, unknown>)[argName];\n\n if (argGraphQLTypeMap) {\n const typeName = argGraphQLTypeMap.get(argName);\n if (typeName !== undefined) {\n if ((arg as Record<symbol, unknown>)?.[__marker]) {\n const ref = arg as ParameterRef<string>;\n this.registerVariableType(\n ref,\n typeName,\n false,\n `${argContext}.${argName}`,\n );\n t(`${argName}: $${ref.name}`);\n } else {\n t(`${argName}: `);\n this.acceptLiteral(\n arg,\n SerializeContext.enumMetaType(enumInputMetadata, typeName),\n typeName,\n );\n }\n } else {\n throw new Error(`Unknown argument '${argName}'`);\n }\n } else {\n if ((arg as Record<symbol, unknown>)?.[__marker]) {\n const ref = arg as ParameterRef<string>;\n if (!ref.explicitType) {\n throw new Error(\n `Cannot infer the type of directive argument '${ref.name}'; an explicit type annotation is required.`,\n );\n }\n this.registerVariableType(\n ref,\n ref.explicitType,\n false,\n `${argContext}.${argName}`,\n );\n t(`${argName}: $${ref.name}`);\n } else {\n t(`${argName}: `);\n this.acceptLiteral(arg, undefined, undefined);\n }\n }\n }\n },\n );\n }\n }\n\n private acceptLiteral(\n value: unknown,\n metaType: EnumInputMetaType | undefined,\n explicitType: string | undefined,\n ) {\n const t = this.writer.text.bind(this.writer);\n\n if (value == null) {\n t(\"null\");\n return;\n }\n if (typeof value === \"number\") {\n t(value.toString());\n return;\n }\n if (typeof value === \"string\") {\n t(metaType ? value : JSON.stringify(value));\n return;\n }\n if (typeof value === \"boolean\") {\n t(value ? \"true\" : \"false\");\n return;\n }\n if ((value as Record<symbol, unknown>)?.[__marker]) {\n const ref = value as ParameterRef<string>;\n if (!explicitType && !ref.explicitType) {\n throw new Error(\n `Cannot infer the nested type of argument '${ref.name}'; an explicit type annotation is required.`,\n );\n }\n this.registerVariableType(ref, explicitType, true, \"nested argument\");\n t(`$${ref.name}`);\n return;\n }\n if (value instanceof StringValue) {\n t(value.quotationMarks ? JSON.stringify(value.value) : value.value);\n return;\n }\n\n if (Array.isArray(value) || value instanceof Set) {\n const elementGraphQLTypeName =\n SerializeContext.elementTypeName(explicitType);\n this.writer.scope({ type: \"array\" }, () => {\n for (const e of value) {\n this.writer.separator(\", \");\n this.acceptLiteral(e, metaType, elementGraphQLTypeName);\n }\n });\n } else if (value instanceof Map) {\n this.writer.scope({ type: \"block\" }, () => {\n for (const [k, v] of value) {\n this.writer.separator(\", \");\n this.writer.text(k);\n t(\": \");\n this.acceptLiteral(\n v,\n metaType?.fields?.get(k),\n metaType?.fieldGraphQLTypeMap?.get(k),\n );\n }\n });\n } else if (typeof value === \"object\") {\n this.writer.scope({ type: \"block\" }, () => {\n for (const k in value) {\n this.writer.separator(\", \");\n this.writer.text(k);\n t(\": \");\n this.acceptLiteral(\n (value as Record<string, unknown>)[k],\n metaType?.fields?.get(k),\n metaType?.fieldGraphQLTypeMap?.get(k),\n );\n }\n });\n }\n }\n\n private registerVariableType(\n ref: ParameterRef<string>,\n expectedTypeName: string | undefined,\n allowImplicitFromRef = false,\n context = \"argument\",\n ) {\n const typeName =\n expectedTypeName ?? (allowImplicitFromRef ? ref.explicitType : undefined);\n if (!typeName) {\n throw new Error(\n `Cannot infer the type of directive argument '${ref.name}'; an explicit type annotation is required.`,\n );\n }\n if (ref.explicitType && ref.explicitType !== typeName) {\n throw new Error(\n `Variable '$${ref.name}' has conflicting GraphQL types at ${context}: inferred '${typeName}', but ParameterRef declares '${ref.explicitType}'`,\n );\n }\n const existing = this.variableTypeMap.get(ref.name);\n if (existing && existing.typeName !== typeName) {\n throw new Error(\n `Variable '$${ref.name}' has conflicting GraphQL types: first '${existing.typeName}' at ${existing.source}, then '${typeName}' at ${context}`,\n );\n }\n this.variableTypeMap.set(ref.name, { typeName, source: context });\n }\n\n private static enumMetaType(\n meta: EnumInputMetadata | undefined,\n typeName: string | undefined,\n ): EnumInputMetaType | undefined {\n if (!meta || !typeName) return undefined;\n return meta.get(typeName.split(/\\[|\\]|!/).join(\"\"));\n }\n\n private static elementTypeName(\n typeName: string | undefined,\n ): string | undefined {\n if (!typeName) return undefined;\n let normalized = typeName.trim();\n // Strip non-null marker before list extraction to get element type.\n if (normalized.endsWith(\"!\")) {\n normalized = normalized.slice(0, -1).trim();\n }\n if (normalized.startsWith(\"[\") && normalized.endsWith(\"]\")) {\n return normalized.slice(1, -1).trim();\n }\n return normalized;\n }\n}\n\nconst isMultilineJSON = (obj: unknown): boolean => {\n let size = 0;\n if (Array.isArray(obj)) {\n for (const v of obj) {\n if (typeof v === \"object\" && !v?.[__marker]) return true;\n if (++size > 2) return true;\n }\n } else if (typeof obj === \"object\" && obj !== null) {\n for (const k of Reflect.ownKeys(obj)) {\n const v = (obj as Record<string | symbol, unknown>)[k];\n if (typeof v === \"object\" && !(v as Record<symbol, unknown>)?.[__marker])\n return true;\n if (++size > 2) return true;\n }\n }\n return false;\n};\n","/**\n * 为 selection 中的字段提供参数(args)、别名(alias)和指令(directive)配置。\n * 通过链式调用构建,每次调用返回一个新的不可变节点。\n */\n\nimport { DirectiveArgs } from \"./types\";\nimport { UnresolvedVariables } from \"./parameter\";\n\nexport interface FieldOptionsValue {\n readonly alias?: string;\n readonly directives: ReadonlyMap<string, DirectiveArgs>;\n}\n\nexport class FieldOptions<\n TAlias extends string,\n TDirectives extends { readonly [key: string]: DirectiveArgs },\n TDirectiveVariables extends object,\n> {\n private _value?: FieldOptionsValue;\n\n constructor(\n private readonly _prev?: FieldOptions<string, any, any>,\n private readonly _alias?: string,\n private readonly _directive?: string,\n private readonly _directiveArgs?: object,\n ) {}\n\n alias<XAlias extends string>(\n alias: XAlias,\n ): FieldOptions<XAlias, TDirectives, TDirectiveVariables> {\n return new FieldOptions<XAlias, TDirectives, TDirectiveVariables>(\n this,\n alias,\n );\n }\n\n directive<XDirective extends string, XArgs extends DirectiveArgs = {}>(\n directive: XDirective,\n args?: XArgs,\n ): FieldOptions<\n TAlias,\n TDirectives & { readonly [key in XDirective]: XArgs },\n TDirectiveVariables & UnresolvedVariables<XArgs, Record<keyof XArgs, any>>\n > {\n if (directive.startsWith(\"@\")) {\n throw new Error(\n \"directive name should not start with '@', it will be prepended automatically\",\n );\n }\n return new FieldOptions<\n TAlias,\n TDirectives & { readonly [key in XDirective]: XArgs },\n TDirectiveVariables & UnresolvedVariables<XArgs, XArgs>\n >(this, undefined, directive, args);\n }\n\n get value(): FieldOptionsValue {\n return (this._value ??= this._buildValue());\n }\n\n private _buildValue(): FieldOptionsValue {\n let alias: string | undefined;\n const directives = new Map<string, DirectiveArgs>();\n\n for (\n let node: FieldOptions<string, any, any> | undefined = this;\n node;\n node = node._prev\n ) {\n if (node._alias !== undefined && alias === undefined) {\n alias = node._alias;\n }\n if (node._directive !== undefined && !directives.has(node._directive)) {\n const args = node._directiveArgs;\n directives.set(\n node._directive,\n args && Object.keys(args).length !== 0 ? args : undefined,\n );\n }\n }\n\n return { alias, directives };\n }\n}\n\nexport const createFieldOptions = <TAlias extends string>(): FieldOptions<\n TAlias,\n {},\n {}\n> => {\n return new FieldOptions<TAlias, {}, {}>();\n};\n","/**\n * 枚举/输入类型元数据\n *\n * 用于 GraphQL query 序列化时区分 enum 和 input object 类型:\n * - enum 值直接输出(不加引号):`status: ACTIVE`\n * - input object 递归展开字段:`input: { name: \"foo\" }`\n * - 普通字符串加引号输出:`name: \"foo\"`\n */\n\n/** 枚举/输入类型元数据表,按类型名索引 */\nexport type EnumInputMetadata = ReadonlyMap<string, EnumInputMetaType>;\n\n/** 单个枚举或输入类型的元信息 */\nexport interface EnumInputMetaType {\n /** 区分枚举还是输入类型 */\n readonly type: \"ENUM\" | \"INPUT\";\n /** GraphQL 类型名 */\n readonly name: string;\n /** INPUT 类型的字段映射(ENUM 没有字段,为 undefined) */\n readonly fields?: ReadonlyMap<string, EnumInputMetaType | undefined>;\n /** INPUT 字段的 GraphQL 类型名(保留 []/!) */\n readonly fieldGraphQLTypeMap?: ReadonlyMap<string, string>;\n}\n\n/** 构建器输入:输入类型的字段描述 */\nexport interface RawField {\n readonly name: string;\n readonly typeName: string;\n readonly graphqlTypeName?: string;\n readonly isLeaf?: boolean;\n}\n\n/**\n * 元数据构建器\n *\n * codegen 生成的代码会调用此构建器来注册 schema 中的 enum/input 类型:\n * ```ts\n * const builder = new EnumInputMetadataBuilder();\n * builder.add(\"Status\"); // enum\n * builder.add(\"CreateInput\", [{name: \"status\", typeName: \"Status\"}]); // input\n * export const ENUM_INPUT_METADATA = builder.build();\n * ```\n */\nexport class EnumInputMetadataBuilder {\n private typeMap = new Map<string, ReadonlyArray<RawField> | undefined>();\n private static readonly BUILTIN_SCALARS = new Set([\n \"ID\",\n \"String\",\n \"Int\",\n \"Float\",\n \"Boolean\",\n ]);\n\n /** 注册一个枚举/输入类型。无 fields 参数表示 ENUM,有则表示 INPUT */\n add(name: string, fields?: ReadonlyArray<RawField>): this {\n this.typeMap.set(name, fields);\n return this;\n }\n\n /** 构建不可变的元数据表 */\n build(): EnumInputMetadata {\n const result = new Map<string, EnumInputMetaType>();\n const resolve = (name: string): EnumInputMetaType => {\n const existing = result.get(name);\n if (existing) return existing;\n\n if (!this.typeMap.has(name)) {\n throw new Error(`Unknown enum/input type: '${name}'`);\n }\n\n const rawFields = this.typeMap.get(name);\n let fields: Map<string, EnumInputMetaType | undefined> | undefined;\n let fieldGraphQLTypeMap: Map<string, string> | undefined;\n if (rawFields) {\n fields = new Map();\n fieldGraphQLTypeMap = new Map();\n for (const {\n name: fieldName,\n typeName,\n graphqlTypeName,\n isLeaf,\n } of rawFields) {\n let resolved: EnumInputMetaType | undefined;\n const treatAsLeaf =\n isLeaf || EnumInputMetadataBuilder.BUILTIN_SCALARS.has(typeName);\n if (!treatAsLeaf) {\n if (!this.typeMap.has(typeName)) {\n throw new Error(`Unknown enum/input type: '${typeName}'`);\n }\n resolved = resolve(typeName);\n }\n fields.set(fieldName, resolved);\n if (graphqlTypeName) {\n fieldGraphQLTypeMap.set(fieldName, graphqlTypeName);\n }\n }\n }\n\n const metaType: EnumInputMetaType = {\n type: rawFields === undefined ? \"ENUM\" : \"INPUT\",\n name,\n fields,\n fieldGraphQLTypeMap,\n };\n result.set(name, metaType);\n return metaType;\n };\n\n for (const name of this.typeMap.keys()) {\n resolve(name);\n }\n return result;\n }\n}\n","import { SelectionImpl } from \"./selection\";\nimport { __fragment_spread } from \"./types\";\nimport { runtimeOf } from \"./types\";\nimport type {\n Selection,\n ExecutableSelection,\n DirectiveArgs,\n FragmentSpread,\n ValueOrThunk,\n} from \"./types\";\nimport {\n SchemaType,\n createSchemaType,\n resolveRegisteredSchemaType,\n} from \"./schema\";\nimport { createFieldOptions, FieldOptionsValue } from \"./field-options\";\nimport { ParameterRef } from \"./parameter\";\nimport { EnumInputMetadata, EnumInputMetadataBuilder } from \"./enum-metadata\";\n\nexport { createSchemaType };\n\n// ─── Public factory ───────────────────────────────────────────────────\n\nexport const createSelection = <\n E extends string,\n F extends Selection<E, object, object>,\n>(\n schemaType: SchemaType<E>,\n enumInputMetadata: EnumInputMetadata,\n unionEntityTypes: string[] | undefined,\n): F => {\n return new Proxy(\n new SelectionImpl(\n [schemaType, enumInputMetadata, unionEntityTypes],\n false,\n \"\",\n ),\n proxyHandler(schemaType),\n ) as unknown as F;\n};\n\n// ─── Property access proxy handler ────────────────────────────────────\n\nconst BUILT_DIRECTIVES = new Set([\n \"$omit\",\n \"$alias\",\n \"$directive\",\n \"$include\",\n \"$skip\",\n \"$on\",\n \"$use\",\n]);\n\nconst resolveValueOrThunk = <T>(value: ValueOrThunk<T>): T => {\n return typeof value === \"function\" ? (value as () => T)() : value;\n};\n\nconst createChildSelectionProxy = (\n schemaType: SchemaType,\n enumInputMetadata: EnumInputMetadata,\n) => {\n return new Proxy(\n new SelectionImpl([schemaType, enumInputMetadata, undefined], false, \"\"),\n proxyHandler(schemaType),\n );\n};\n\nconst resolveAutoPropagatedArgs = (\n declaredArgTypeMap: ReadonlyMap<string, string> | undefined,\n providedArgs: Record<string, unknown> | undefined,\n): { [key: string]: unknown } | undefined => {\n // Default variable propagation: if a field declares args, bind each arg to a\n // same-name variable by default (e.g. `id: $id`).\n if (!declaredArgTypeMap?.size) {\n return providedArgs;\n }\n\n const autoArgs: Record<string, unknown> = {};\n for (const argName of declaredArgTypeMap.keys()) {\n autoArgs[argName] = ParameterRef.of(argName);\n }\n if (!providedArgs) {\n return autoArgs;\n }\n return { ...autoArgs, ...providedArgs };\n};\n\nconst resolveAssociationTarget = (\n fieldName: string,\n fieldTargetTypeName: string | undefined,\n ownerTypeName: string,\n): SchemaType => {\n if (!fieldTargetTypeName) {\n throw new Error(`Field \"${fieldName}\" has no target type`);\n }\n const targetSchemaType = resolveRegisteredSchemaType(fieldTargetTypeName);\n if (!targetSchemaType) {\n throw new Error(\n `Cannot resolve schema type \"${fieldTargetTypeName}\" for field \"${fieldName}\" on \"${ownerTypeName}\"`,\n );\n }\n return targetSchemaType;\n};\n\nconst parseAssociationArgs = (argArray: unknown[]) => {\n let args: { [key: string]: unknown } | undefined;\n let childSelectionFactory: ((f: unknown) => unknown) | undefined;\n let childSelection: SelectionImpl<string, object, object> | undefined;\n\n for (const arg of argArray) {\n if (arg instanceof SelectionImpl) {\n childSelection = arg;\n } else if (typeof arg === \"function\") {\n childSelectionFactory = arg as typeof childSelectionFactory;\n } else {\n args = arg as typeof args;\n }\n }\n return { args, childSelectionFactory, childSelection };\n};\n\nconst parseMethodArgs = (argArray: unknown[]) => {\n let args: { [key: string]: unknown } | undefined;\n let child: SelectionImpl<string, object, object> | undefined;\n let optionsValue: FieldOptionsValue | undefined;\n\n for (const arg of argArray) {\n if (arg instanceof SelectionImpl) {\n child = arg;\n } else if (typeof arg === \"function\") {\n optionsValue = arg(createFieldOptions()).value;\n } else {\n args = arg as typeof args;\n }\n }\n return { args, child, optionsValue };\n};\n\nconst findLastFieldSelection = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n) => {\n const byKey = selection.fieldMap.get(lastField);\n if (byKey) return byKey;\n // `lastField` can refer to a field removed earlier in the chain.\n const byName = selection.findFieldsByName(lastField);\n return byName.length ? byName[0] : undefined;\n};\n\nconst rewriteLastFieldWithOptions = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n optionsValue: FieldOptionsValue,\n) => {\n const existing = findLastFieldSelection(selection, lastField);\n let current = selection.removeField(lastField);\n current = current.addField(\n lastField,\n existing?.args as { [key: string]: unknown } | undefined,\n existing?.childSelections?.[0] as\n | SelectionImpl<string, object, object>\n | undefined,\n optionsValue,\n );\n return current;\n};\n\nconst mergeLastFieldDirective = (\n selection: SelectionImpl<string, object, object>,\n lastField: string,\n directiveName: string,\n directiveArgs: DirectiveArgs,\n) => {\n const existing = findLastFieldSelection(selection, lastField);\n const directives = new Map<string, DirectiveArgs>(\n existing?.fieldOptionsValue?.directives ?? [],\n );\n directives.set(directiveName, directiveArgs);\n const optionsValue: FieldOptionsValue = {\n alias: existing?.fieldOptionsValue?.alias,\n directives,\n };\n return rewriteLastFieldWithOptions(selection, lastField, optionsValue);\n};\n\nconst proxyHandler = (\n schemaType: SchemaType,\n): ProxyHandler<SelectionImpl<string, object, object>> => {\n const handler: ProxyHandler<SelectionImpl<string, object, object>> = {\n get: (\n target: SelectionImpl<string, object, object>,\n p: string | symbol,\n _receiver: unknown,\n ): unknown => {\n if (p === \"schemaType\") return schemaType;\n\n if (typeof p === \"string\") {\n // Built-in $-prefixed methods\n if (BUILT_DIRECTIVES.has(p)) {\n return new Proxy(DUMMY, methodHandler(target, handler, p));\n }\n // Known field\n else if (schemaType.fields.has(p)) {\n const field = schemaType.fields.get(p)!;\n\n // Association fields use callback syntax (`field(args?, childBuilder)`),\n // so this branch cannot reuse `methodHandler`.\n if (field.isAssociation || field.targetTypeName !== undefined) {\n return (...argArray: unknown[]) => {\n const targetSchemaType = resolveAssociationTarget(\n p,\n field.targetTypeName,\n schemaType.name,\n );\n let { args, childSelectionFactory, childSelection } =\n parseAssociationArgs(argArray);\n\n if (childSelectionFactory) {\n childSelection = childSelectionFactory(\n createChildSelectionProxy(\n targetSchemaType,\n (target as any)._enumInputMetadata,\n ),\n ) as typeof childSelection;\n }\n if (!childSelection) {\n throw new Error(`Field \"${p}\" requires a child selection`);\n }\n\n // Entry #1 for default arg handling:\n // association fields called without explicit args.\n const resolvedArgs = resolveAutoPropagatedArgs(\n field.argGraphQLTypeMap,\n args,\n );\n\n return new Proxy(\n target.addField(p, resolvedArgs, childSelection),\n handler,\n );\n };\n }\n\n // Scalar with args → method\n if (field.isFunction) {\n return new Proxy(DUMMY, methodHandler(target, handler, p));\n }\n\n // Plain scalar → property access\n return new Proxy(target.addField(p), handler);\n }\n }\n return Reflect.get(target, p, target);\n },\n };\n return handler;\n};\n\n// ─── Method call proxy handler ────────────────────────────────────────\n\nconst methodHandler = (\n targetSelection: SelectionImpl<string, object, object>,\n handler: ProxyHandler<SelectionImpl<string, object, object>>,\n field: string,\n): ProxyHandler<Function> => {\n return {\n apply: (_1: Function, _2: unknown, argArray: unknown[]): unknown => {\n // $on(...) – inline fragment embedding\n if (field === \"$on\") {\n let childSelection: ExecutableSelection<string, object, object>;\n\n if (\n typeof argArray[0] === \"string\" &&\n typeof argArray[1] === \"function\"\n ) {\n const targetTypeName = argArray[0] as string;\n const builder = argArray[1] as (\n it: unknown,\n ) => ExecutableSelection<string, object, object>;\n const targetSchemaType = resolveRegisteredSchemaType(targetTypeName);\n if (!targetSchemaType) {\n throw new Error(\n `Cannot resolve schema type \"${targetTypeName}\" for $on`,\n );\n }\n childSelection = builder(\n createChildSelectionProxy(\n targetSchemaType,\n (targetSelection as any)._enumInputMetadata,\n ),\n );\n } else if (typeof argArray[0] === \"function\") {\n const builder = argArray[0] as (\n it: unknown,\n ) => ExecutableSelection<string, object, object>;\n const targetSchemaType = targetSelection.schemaType;\n childSelection = builder(\n createChildSelectionProxy(\n targetSchemaType,\n (targetSelection as any)._enumInputMetadata,\n ),\n );\n } else {\n throw new Error(\n \"$on requires a builder or (typeName, builder) arguments\",\n );\n }\n\n let parent: SelectionImpl<string, object, object> = targetSelection;\n if (\n targetSelection.schemaType.name !==\n runtimeOf(childSelection).schemaType.name\n ) {\n parent = targetSelection.addField(\"__typename\");\n }\n return new Proxy(\n parent.addEmbeddable(\n childSelection as SelectionImpl<string, object, object>,\n undefined,\n ),\n handler,\n );\n }\n\n // $use(fragment) – named fragment spread\n if (field === \"$use\") {\n const fragment = resolveValueOrThunk(\n argArray[0] as ValueOrThunk<\n FragmentSpread<string, string, object, object>\n >,\n );\n if (!fragment || !fragment[__fragment_spread]) {\n throw new Error(\"$use requires a fragment created by fragment$\");\n }\n const childSelection = fragment.selection as ExecutableSelection<\n string,\n object,\n object\n >;\n\n let parent: SelectionImpl<string, object, object> = targetSelection;\n if (\n targetSelection.schemaType.name !==\n runtimeOf(childSelection).schemaType.name\n ) {\n parent = targetSelection.addField(\"__typename\");\n }\n return new Proxy(\n parent.addEmbeddable(\n childSelection as SelectionImpl<string, object, object>,\n fragment.name,\n ),\n handler,\n );\n }\n\n // $omit(...fieldNames) – remove multiple fields\n if (field === \"$omit\") {\n let current: SelectionImpl<string, object, object> = targetSelection;\n for (const fieldName of argArray) {\n if (typeof fieldName === \"string\") {\n current = current.removeField(fieldName);\n }\n }\n return new Proxy(current, handler);\n }\n\n // $alias(alias) – rename the last selected field\n if (field === \"$alias\") {\n const alias = argArray[0] as string;\n const lastField = targetSelection.lastField;\n if (!lastField)\n throw new Error(\"$alias requires a preceding field selection\");\n const existing = findLastFieldSelection(targetSelection, lastField);\n const optionsValue: FieldOptionsValue = {\n alias,\n directives: new Map(existing?.fieldOptionsValue?.directives ?? []),\n };\n const current = rewriteLastFieldWithOptions(\n targetSelection,\n lastField,\n optionsValue,\n );\n return new Proxy(current, handler);\n }\n\n // $directive(directiveName, args?) – field-level if there is a last field, otherwise selection-level\n if (field === \"$directive\") {\n const lastField = targetSelection.lastField;\n if (!lastField) {\n return new Proxy(\n targetSelection.addDirective(\n argArray[0] as string,\n argArray[1] as DirectiveArgs,\n ),\n handler,\n );\n }\n const current = mergeLastFieldDirective(\n targetSelection,\n lastField,\n argArray[0] as string,\n argArray[1] as DirectiveArgs,\n );\n return new Proxy(current, handler);\n }\n\n // $include(condition) / $skip(condition)\n if (field === \"$include\" || field === \"$skip\") {\n const directiveName = field === \"$include\" ? \"include\" : \"skip\";\n const directiveArgs = { if: argArray[0] } as DirectiveArgs;\n const lastField = targetSelection.lastField;\n if (!lastField) {\n return new Proxy(\n targetSelection.addDirective(directiveName, directiveArgs),\n handler,\n );\n }\n const current = mergeLastFieldDirective(\n targetSelection,\n lastField,\n directiveName,\n directiveArgs,\n );\n return new Proxy(current, handler);\n }\n\n // Regular field method call\n let { args, child, optionsValue } = parseMethodArgs(argArray);\n\n // Auto-parameterize unset args\n\n // Entry #2 for default arg handling:\n // method-style fields called without explicit args.\n const declaredArgTypeMap =\n targetSelection.schemaType.fields.get(field)?.argGraphQLTypeMap;\n const resolvedArgs = resolveAutoPropagatedArgs(declaredArgTypeMap, args);\n\n return new Proxy(\n targetSelection.addField(field, resolvedArgs, child, optionsValue),\n handler,\n );\n },\n };\n};\n\n// ─── Sentinel ─────────────────────────────────────────────────────────\n\nconst DUMMY = () => {};\n\nexport const SELECTION_TARGET = new SelectionImpl(\n [\n createSchemaType(\"Any\", \"OBJECT\", [], []),\n new EnumInputMetadataBuilder().build(),\n undefined,\n ],\n false,\n \"\",\n);\n","export const cyrb53 = (str: string, seed: number = 0): string => {\n let h1 = 0xdeadbeef ^ seed;\n let h2 = 0x41c6ce57 ^ seed;\n for (let i = 0; i < str.length; i++) {\n const ch = str.charCodeAt(i);\n h1 = Math.imul(h1 ^ ch, 2654435761);\n h2 = Math.imul(h2 ^ ch, 1597334677);\n }\n h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n return (4294967296 * (2097151 & h2) + (h1 >>> 0)).toString(36);\n};\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"options-BWcHrC-1.d.mts","names":[],"sources":["../src/codegen/options.ts"],"mappings":";;;;;AAQA;;;;UAAiB,cAAA;EA6CU;;;;;;EAAA,SAtChB,YAAA,QAAoB,OAAA,CAAQ,aAAA;EAY5B;;;;;EAAA,SANA,SAAA;EA2CA;;;;;EAAA,SArCA,MAAA;EA2DyC;;;;;;EAAA,SApDzC,cAAA;;;;;;;WAOA,aAAA;;;;;;;;WAQA,eAAA;;;;WAIA,aAAA,GAAgB,aAAA;;;;;;;;;;;WAWhB,aAAA;IAAA,UACG,GAAA;EAAA;;;;;;;;WASH,sBAAA;;;;;;WAMA,UAAA;IAAA,UAAyB,GAAA;EAAA;;;;;;WAMzB,0BAAA;IAAA,UAAyC,GAAA;EAAA;;;;;;;;;WASzC,MAAA;AAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"options-CgrZ2der.d.cts","names":[],"sources":["../src/codegen/options.ts"],"mappings":";;;;;AAQA;;;;UAAiB,cAAA;EA6CU;;;;;;EAAA,SAtChB,YAAA,QAAoB,OAAA,CAAQ,aAAA;EAY5B;;;;;EAAA,SANA,SAAA;EA2CA;;;;;EAAA,SArCA,MAAA;EA2DyC;;;;;;EAAA,SApDzC,cAAA;;;;;;;WAOA,aAAA;;;;;;;;WAQA,eAAA;;;;WAIA,aAAA,GAAgB,aAAA;;;;;;;;;;;WAWhB,aAAA;IAAA,UACG,GAAA;EAAA;;;;;;;;WASH,sBAAA;;;;;;WAMA,UAAA;IAAA,UAAyB,GAAA;EAAA;;;;;;WAMzB,0BAAA;IAAA,UAAyC,GAAA;EAAA;;;;;;;;;WASzC,MAAA;AAAA"}