@carddb/core 0.4.6 → 0.5.1

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/operators.ts","../src/filter-builder.ts","../src/query-builder.ts","../src/collection.ts"],"sourcesContent":["/**\n * @carddb/core - Core types and utilities for CardDB JavaScript clients\n */\n\n// Types\nexport type {\n // Configuration\n CardDBConfig,\n LogLevel,\n ResourceType,\n Logger,\n Cache,\n // Resources\n PublisherStatus,\n Publisher,\n PublisherRef,\n FileStatus,\n FileUploadInput,\n UploadPurpose,\n File,\n PresignedUpload,\n Game,\n GameRef,\n GameVisibility,\n GameCreateInput,\n GameUpdateInput,\n ScanJobStatus,\n CreateScanJobInput,\n CreateScanUploadSessionInput,\n ConfirmScanUploadInput,\n ScanJobPayload,\n ScanJob,\n ScanBestMatch,\n ScanCandidate,\n ScanJobError,\n ScanWebhookState,\n ScanJobMetrics,\n ScanStageMetrics,\n SubmitScanFeedbackInput,\n ScanFeedbackPayload,\n ScanMetricsInput,\n ScanMetrics,\n ScanFeedbackMetrics,\n ScanFeatureVersionMetrics,\n ResolveScanTemplateInput,\n ScanTemplatesInput,\n SaveScanTemplateInput,\n PreviewScanTemplateInput,\n ScanTemplateRegionInput,\n ScanTemplateResolution,\n ScanTemplateList,\n ScanTemplatePayload,\n ScanTemplatePreview,\n ScanTemplate,\n ScanTemplateRegion,\n ScanTemplateRegionPreview,\n ScanTemplateWarning,\n GameScanRegion,\n Dataset,\n DatasetRef,\n DatasetPurpose,\n DatasetVisibility,\n DatasetRecord,\n ImportFormat,\n ImportMode,\n OnConflict,\n ImportJobStatus,\n ImportLogLevel,\n BulkInsertMode,\n ImportOptions,\n CsvOptions,\n FieldMappingOverrideInput,\n ImportJobAssetInput,\n ImportJobAsset,\n ImportValidationError,\n BulkRecordError,\n ImportStats,\n BulkImportResult,\n BulkCreateResult,\n ImportJob,\n ImportJobConnection,\n ImportJobLog,\n ImportJobLogConnection,\n DatasetImportFromFileInput,\n DatasetImportFromPayloadInput,\n DatasetImportFromUrlInput,\n DatasetImportRunInput,\n DatasetImportPreviewInput,\n DatasetImportValidateInput,\n FieldMappingStatus,\n InferredChildField,\n FieldMapping,\n ImportWarningSeverity,\n ImportWarning,\n DatasetImportPreviewResult,\n GameImportPreviewInput,\n DatasetImportPreview,\n GameImportPreview,\n GameImportFromFileInput,\n GameImportFromPayloadInput,\n GameImportFromUrlInput,\n GameImportRunInput,\n GameImportDatasetStatus,\n GameImportJob,\n GameImportJobConnection,\n DatasetRecordsUpsertInput,\n DatasetRecordsUpsertPayload,\n DatasetRecordDeleteJobStatus,\n DatasetRecordDeleteTargetType,\n DatasetRecordDeleteResultStatus,\n DatasetRecordsDeleteInput,\n DatasetRecordDeleteJobResult,\n DatasetRecordDeleteJob,\n DatasetRecordDeleteJobConnection,\n ExportFormat,\n ExportJobStatus,\n DatasetExportInput,\n ExportJob,\n ExportJobConnection,\n TCGPlayerPricing,\n TCGPlayerPrice,\n Deck,\n DeckEntry,\n DeckVisibility,\n DeckOwnerType,\n DeckEnvironment,\n DeckAccessMode,\n DeckDiscoverability,\n DeckState,\n DeckReadState,\n DeckRepresentation,\n DeckTokenScope,\n DeckTokenSigningAlgorithm,\n DeckImportFormat,\n DeckExportFormat,\n DeckCollaboratorRole,\n DeckAppAccessRetention,\n DeckAPIApplicationAccessRole,\n DeckAPIApplicationAccessGrantSource,\n DeckValidationSeverity,\n ViewerDecksFilterInput,\n AppDecksFilterInput,\n PublicDecksFilterInput,\n DeckVersion,\n DeckVersionConnection,\n DeckCollaborator,\n DeckOwnershipTransferPayload,\n DeckCopyPayload,\n DeckAccessApplication,\n DeckAPIApplicationAccess,\n DeckPublishedVersionSelector,\n DeckTokenIssuer,\n DeckToken,\n DeckTokenExchangePayload,\n DeckEntryInput,\n DeckCreateInput,\n DeckUpsertByExternalRefInput,\n DeckUpsertByExternalRefPayload,\n DeckUpdateInput,\n DeckPublishInput,\n DeckEntryAddInput,\n DeckEntryUpdateInput,\n DeckEntryReorderItemInput,\n DeckEntryReorderInput,\n DeckEntriesReplaceInput,\n DeckEntryMutationPayload,\n DeckEntryReorderPayload,\n DeckEntriesReplacePayload,\n DeckPublishPayload,\n DeckValidateInput,\n DeckRemoveInvalidEntriesInput,\n DeckClaimInput,\n DeckTransferOwnershipInput,\n DeckCopyInput,\n DeckTokenIssuerCreateInput,\n DeckTokenIssuerSigningKeyInput,\n DeckTokenExchangeInput,\n DeckValidatedAgainst,\n DeckValidationAffectedEntry,\n DeckValidationIssue,\n DeckValidation,\n DeckDiff,\n DeckSectionDefinition,\n RulesetVersionStatus,\n Ruleset,\n RulesetVersion,\n RulesetConnection,\n RulesetVersionConnection,\n DeckValidationRules,\n RulesetValidationImpact,\n RulesetValidationImpactDeck,\n RulesetVersionDraftImportPreview,\n RulesetCreateInput,\n RulesetUpdateInput,\n RulesetVersionDraftCreateInput,\n RulesetVersionDraftImportFromDatasetRecordInput,\n RulesetVersionDraftUpdateInput,\n RulesetVersionPublishInput,\n DeckAPIApplicationAccessGrantInput,\n DeckImportInput,\n DeckImportEntry,\n DeckImportIssue,\n DeckImportUnmatchedEntry,\n DeckImportCandidate,\n DeckImportAmbiguousEntry,\n DeckImportFormatDefinition,\n DeckImportFormatDefinitionConnection,\n DeckImportFormatDetection,\n DeckImportFormatTestPayload,\n DeckImportFormatCreateInput,\n DeckImportFormatUpdateInput,\n DeckImportFormatTestInput,\n DeckImportPayload,\n DeckHydrateEntriesInput,\n DeckHydrateEntriesPayload,\n DeckExportPayload,\n HydrateDeckEntryInput,\n HydratedDeckEntry,\n ResolvedLink,\n FileInfo,\n // Schema\n DatasetSchema,\n FieldInfo,\n FieldType,\n ObjectField,\n LinkFieldInfo,\n // API Key\n APIKeyInfo,\n APIApplication,\n APIAccount,\n // Pagination\n PageInfo,\n Edge,\n Connection,\n // Filters\n FilterOperatorValue,\n FilterValue,\n FilterCondition,\n FilterInput,\n FilterBuilderInterface,\n // Rate Limit\n RateLimitInfo,\n} from './types.js'\n\n// Errors\nexport {\n CardDBError,\n AuthenticationError,\n RateLimitError,\n NotFoundError,\n ValidationError,\n RestrictedError,\n GraphQLError,\n ConnectionError,\n TimeoutError,\n ServerError,\n LinkResolutionError,\n} from './errors.js'\n\nexport type { GraphQLErrorInfo, LinkResolutionFailure } from './errors.js'\n\n// Filter Operators\nexport {\n eq,\n neq,\n gt,\n gte,\n lt,\n lte,\n within,\n notWithin,\n contains,\n like,\n ilike,\n isNull,\n isNotNull,\n} from './operators.js'\n\n// Filter Builder\nexport { FilterBuilder, resolveFilter } from './filter-builder.js'\n\n// Query Builder\nexport { QueryBuilder } from './query-builder.js'\n\nexport type {\n SearchPublishersParams,\n SearchGamesParams,\n SearchDatasetsParams,\n SearchRecordsParams,\n ListDecksParams,\n ListDeckVersionsParams,\n DeckSectionDefinitionsParams,\n ViewerDecksParams,\n AppDecksParams,\n PublicDecksParams,\n ListDeckImportFormatsParams,\n ListRulesetsParams,\n ListPublicRulesetsParams,\n RulesetLookupParams,\n ListRulesetVersionsParams,\n RulesetValidationRulesParams,\n RulesetValidationImpactParams,\n} from './query-builder.js'\n\n// Collection\nexport { Collection } from './collection.js'\n\nexport type { NextPageLoader } from './collection.js'\n","/**\n * Error classes for CardDB clients\n */\n\nexport interface GraphQLErrorInfo {\n message: string\n path?: string[]\n extensions?: Record<string, unknown>\n}\n\n/**\n * Base error class for all CardDB errors\n */\nexport class CardDBError extends Error {\n /** The full response body if available */\n readonly response?: unknown\n\n constructor(message: string, response?: unknown) {\n super(message)\n this.name = 'CardDBError'\n this.response = response\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CardDBError)\n }\n }\n}\n\n/**\n * Raised when authentication fails (invalid API key or token)\n */\nexport class AuthenticationError extends CardDBError {\n constructor(message = 'Invalid or missing API key', response?: unknown) {\n super(message, response)\n this.name = 'AuthenticationError'\n }\n}\n\n/**\n * Raised when rate limits are exceeded\n */\nexport class RateLimitError extends CardDBError {\n /** Seconds until rate limit resets */\n readonly retryAfter: number | null\n\n /** Maximum requests allowed */\n readonly limit: number | null\n\n /** Remaining requests in window */\n readonly remaining: number | null\n\n /** Time when the rate limit resets */\n readonly resetAt: Date | null\n\n constructor(\n message = 'Rate limit exceeded',\n options: {\n retryAfter?: number | null\n limit?: number | null\n remaining?: number | null\n resetAt?: Date | null\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'RateLimitError'\n this.retryAfter = options.retryAfter ?? null\n this.limit = options.limit ?? null\n this.remaining = options.remaining ?? null\n this.resetAt = options.resetAt ?? null\n }\n}\n\n/**\n * Raised when a requested resource is not found\n */\nexport class NotFoundError extends CardDBError {\n constructor(message = 'Resource not found', response?: unknown) {\n super(message, response)\n this.name = 'NotFoundError'\n }\n}\n\n/**\n * Raised when request validation fails\n */\nexport class ValidationError extends CardDBError {\n /** List of validation errors */\n readonly errors: GraphQLErrorInfo[]\n\n constructor(\n message = 'Validation error',\n options: {\n errors?: GraphQLErrorInfo[]\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'ValidationError'\n this.errors = options.errors ?? []\n }\n}\n\n/**\n * Raised when accessing a restricted publisher or game\n */\nexport class RestrictedError extends CardDBError {\n constructor(message: string, response?: unknown) {\n super(message, response)\n this.name = 'RestrictedError'\n }\n}\n\n/**\n * Raised for GraphQL-level errors\n */\nexport class GraphQLError extends CardDBError {\n /** List of GraphQL errors */\n readonly errors: GraphQLErrorInfo[]\n\n constructor(\n message = 'GraphQL error',\n options: {\n errors?: GraphQLErrorInfo[]\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'GraphQLError'\n this.errors = options.errors ?? []\n }\n}\n\n/**\n * Raised for network/connection issues\n */\nexport class ConnectionError extends CardDBError {\n constructor(message = 'Connection error', response?: unknown) {\n super(message, response)\n this.name = 'ConnectionError'\n }\n}\n\n/**\n * Raised when request times out\n */\nexport class TimeoutError extends ConnectionError {\n constructor(message = 'Request timed out', response?: unknown) {\n super(message, response)\n this.name = 'TimeoutError'\n }\n}\n\n/**\n * Raised when the server returns an unexpected response\n */\nexport class ServerError extends CardDBError {\n /** HTTP status code */\n readonly status: number | null\n\n constructor(\n message = 'Server error',\n options: {\n status?: number | null\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'ServerError'\n this.status = options.status ?? null\n }\n}\n\n/**\n * Information about a failed link resolution\n */\nexport interface LinkResolutionFailure {\n /** The link field key that failed */\n field: string\n /** The value that couldn't be resolved */\n value: string | null\n /** The reason for the failure */\n reason: 'not_found' | 'invalid' | 'permission_denied' | 'unknown'\n /** Optional error message from the server */\n message?: string\n}\n\n/**\n * Raised when link resolution fails for one or more links\n *\n * This is a warning-level error that contains the partial results along with\n * information about which links failed to resolve. The application can choose\n * to handle this gracefully or treat it as a fatal error.\n */\nexport class LinkResolutionError extends CardDBError {\n /** List of link resolution failures */\n readonly failures: LinkResolutionFailure[]\n\n /** Partial results that were successfully resolved */\n readonly partialResults?: unknown\n\n constructor(\n message = 'Some links could not be resolved',\n options: {\n failures?: LinkResolutionFailure[]\n partialResults?: unknown\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'LinkResolutionError'\n this.failures = options.failures ?? []\n this.partialResults = options.partialResults\n }\n\n /**\n * Get failures for a specific field\n */\n getFailuresForField(field: string): LinkResolutionFailure[] {\n return this.failures.filter((f) => f.field === field)\n }\n\n /**\n * Check if a specific field had resolution failures\n */\n hasFailuresForField(field: string): boolean {\n return this.failures.some((f) => f.field === field)\n }\n}\n","/**\n * Filter operator helper functions\n *\n * These functions create operator objects that can be used in filters.\n *\n * @example\n * // With filter builder\n * filter: (f) => f\n * .where('hp', gte(100))\n * .where('types', contains('Pokemon'))\n *\n * @example\n * // With object literal\n * filter: {\n * hp: gte(100),\n * types: contains('Pokemon')\n * }\n */\n\nimport type { FilterOperatorValue } from './types.js'\n\n/** Equality operator */\nexport function eq(value: unknown): FilterOperatorValue {\n return { eq: value }\n}\n\n/** Not equal operator */\nexport function neq(value: unknown): FilterOperatorValue {\n return { neq: value }\n}\n\n/** Greater than operator */\nexport function gt(value: number): FilterOperatorValue {\n return { gt: value }\n}\n\n/** Greater than or equal operator */\nexport function gte(value: number): FilterOperatorValue {\n return { gte: value }\n}\n\n/** Less than operator */\nexport function lt(value: number): FilterOperatorValue {\n return { lt: value }\n}\n\n/** Less than or equal operator */\nexport function lte(value: number): FilterOperatorValue {\n return { lte: value }\n}\n\n/** Value in array operator */\nexport function within(values: unknown[]): FilterOperatorValue {\n return { in: values }\n}\n\n/** Value not in array operator */\nexport function notWithin(values: unknown[]): FilterOperatorValue {\n return { nin: values }\n}\n\n/** Array contains value operator */\nexport function contains(value: unknown): FilterOperatorValue {\n return { contains: value }\n}\n\n/** Case-sensitive pattern match (SQL LIKE) */\nexport function like(pattern: string): FilterOperatorValue {\n return { like: pattern }\n}\n\n/** Case-insensitive pattern match (SQL ILIKE) */\nexport function ilike(pattern: string): FilterOperatorValue {\n return { ilike: pattern }\n}\n\n/** Is null operator */\nexport function isNull(): FilterOperatorValue {\n return { is_null: true }\n}\n\n/** Is not null operator */\nexport function isNotNull(): FilterOperatorValue {\n return { is_null: false }\n}\n","/**\n * Filter builder for constructing complex filter queries\n *\n * Supports both builder pattern and object literal styles:\n *\n * @example Builder pattern\n * filter: (f) => f\n * .where('hp', gte(100))\n * .where('types', contains('Pokemon'))\n * .any(or => or\n * .where('rarity', 'rare')\n * .where('rarity', 'mythic')\n * )\n *\n * @example Object literal\n * filter: {\n * hp: { gte: 100 },\n * types: { contains: 'Pokemon' },\n * $or: [\n * { rarity: 'rare' },\n * { rarity: 'mythic' }\n * ]\n * }\n */\n\nimport type { FilterCondition, FilterValue, FilterInput } from './types.js'\n\nexport class FilterBuilder {\n private conditions: FilterCondition[] = []\n private orGroups: FilterCondition[] = []\n\n /**\n * Add a condition to the filter\n *\n * @example Single field\n * .where('name', 'Pikachu')\n * .where('hp', gte(100))\n *\n * @example Multiple fields (object)\n * .where({ name: 'Pikachu', hp: gte(100) })\n */\n where(field: string, value: FilterValue): this\n where(conditions: Record<string, FilterValue>): this\n where(fieldOrConditions: string | Record<string, FilterValue>, value?: FilterValue): this {\n if (typeof fieldOrConditions === 'string') {\n this.conditions.push({ [fieldOrConditions]: value })\n } else {\n for (const [field, val] of Object.entries(fieldOrConditions)) {\n this.conditions.push({ [field]: val })\n }\n }\n return this\n }\n\n /**\n * Add an OR group (any of the conditions must match)\n *\n * @example\n * .where('type', 'creature')\n * .any(or => or\n * .where('color', 'red')\n * .where('color', 'blue')\n * )\n */\n any(callback: (builder: FilterBuilder) => void): this {\n const orBuilder = new FilterBuilder()\n callback(orBuilder)\n const orConditions = orBuilder.getConditions()\n if (orConditions.length > 0) {\n this.orGroups.push({ $or: orConditions })\n }\n return this\n }\n\n /**\n * Add a link filter condition (filter on linked records)\n *\n * @example\n * .whereLink('set_id', { code: 'DMU' })\n * .whereLink('set_id', { name: ilike('%dominaria%') })\n */\n whereLink(field: string, conditions: Record<string, FilterValue>): this {\n const linkFilter: Record<string, FilterValue> = {}\n for (const [key, val] of Object.entries(conditions)) {\n linkFilter[key] = val\n }\n this.conditions.push({ [`${field}._link`]: linkFilter })\n return this\n }\n\n /**\n * Add an array element filter (for ARRAY of HASH fields)\n * Matches if any element in the array matches all conditions\n *\n * @example\n * .whereAny('attacks', { damage: gte(50) })\n * .whereAny('attacks', { name: ilike('%thunder%') })\n */\n whereAny(field: string, conditions: Record<string, FilterValue>): this {\n const anyFilter: Record<string, FilterValue> = {}\n for (const [key, val] of Object.entries(conditions)) {\n anyFilter[key] = val\n }\n this.conditions.push({ [`${field}._any`]: anyFilter })\n return this\n }\n\n /**\n * Get the conditions array (used internally for OR groups)\n */\n getConditions(): FilterCondition[] {\n return this.conditions\n }\n\n /**\n * Build the final filter object\n */\n build(): FilterCondition {\n const allConditions = [...this.conditions, ...this.orGroups]\n\n if (allConditions.length === 0) {\n return {}\n }\n\n if (allConditions.length === 1) {\n return allConditions[0]!\n }\n\n return { $and: allConditions }\n }\n}\n\n/**\n * Resolve a filter input to a filter condition object\n *\n * Handles both builder functions and object literals\n */\nexport function resolveFilter(input: FilterInput | undefined): FilterCondition | undefined {\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'function') {\n const builder = new FilterBuilder()\n input(builder)\n const result = builder.build()\n return Object.keys(result).length > 0 ? result : undefined\n }\n\n return Object.keys(input).length > 0 ? input : undefined\n}\n","/**\n * GraphQL query builder for CardDB API\n */\n\nimport type {\n DeckAPIApplicationAccessGrantInput,\n DeckClaimInput,\n DeckCollaboratorRole,\n DeckCopyInput,\n DeckCreateInput,\n DeckEntriesReplaceInput,\n DeckEntryAddInput,\n DeckEntryReorderInput,\n DeckEntryUpdateInput,\n DeckExportFormat,\n DeckHydrateEntriesInput,\n DeckImportFormatCreateInput,\n DeckImportFormatTestInput,\n DeckImportFormatUpdateInput,\n DeckImportInput,\n DeckPublishedVersionSelector,\n DeckPublishInput,\n DeckReadState,\n DeckRemoveInvalidEntriesInput,\n DeckTokenExchangeInput,\n DeckTokenIssuerCreateInput,\n DeckTransferOwnershipInput,\n DeckUpsertByExternalRefInput,\n DeckUpdateInput,\n DeckValidateInput,\n ConfirmScanUploadInput,\n CreateScanJobInput,\n CreateScanUploadSessionInput,\n DatasetExportInput,\n DatasetImportFromFileInput,\n DatasetImportFromPayloadInput,\n DatasetImportFromUrlInput,\n DatasetImportPreviewInput,\n DatasetImportValidateInput,\n DatasetRecordsDeleteInput,\n DatasetRecordsUpsertInput,\n FilterCondition,\n FileUploadInput,\n GameCreateInput,\n GameImportFromFileInput,\n GameImportFromPayloadInput,\n GameImportFromUrlInput,\n GameImportPreviewInput,\n GameUpdateInput,\n ImportJobStatus,\n PreviewScanTemplateInput,\n ResolveScanTemplateInput,\n SaveScanTemplateInput,\n ScanMetricsInput,\n ScanTemplatesInput,\n SubmitScanFeedbackInput,\n AppDecksFilterInput,\n PublicDecksFilterInput,\n RulesetCreateInput,\n RulesetUpdateInput,\n RulesetVersionDraftCreateInput,\n RulesetVersionDraftImportFromDatasetRecordInput,\n RulesetVersionDraftUpdateInput,\n RulesetVersionPublishInput,\n RulesetVersionStatus,\n ViewerDecksFilterInput,\n DatasetRecordDeleteJobStatus,\n ExportJobStatus,\n} from './types.js'\nimport { ValidationError } from './errors.js'\n\nconst DECK_JSON_OBJECT_KEYS = new Set(['metadata', 'annotations'])\n\nfunction normalizeDeckJsonInput<T>(input: T): T {\n return normalizeDeckJsonValue(input, 'input') as T\n}\n\nfunction normalizeDeckJsonValue(value: unknown, path: string): unknown {\n if (!isRecord(value)) {\n return value\n }\n\n const normalized: Record<string, unknown> = {}\n for (const [key, child] of Object.entries(value)) {\n const childPath = `${path}.${key}`\n if (DECK_JSON_OBJECT_KEYS.has(key)) {\n normalized[key] = normalizeJsonObject(child, childPath)\n } else if (key === 'entries' && Array.isArray(child)) {\n normalized[key] = child.map((entry, index) =>\n normalizeDeckJsonValue(entry, `${childPath}[${index}]`)\n )\n } else {\n normalized[key] = child\n }\n }\n return normalized\n}\n\nfunction normalizeJsonObject(value: unknown, path: string): unknown {\n if (value == null || isRecord(value)) {\n return value\n }\n if (typeof value === 'string') {\n try {\n const parsed = JSON.parse(value) as unknown\n if (isRecord(parsed)) {\n return parsed\n }\n } catch {\n // Fall through to the consistent validation error below.\n }\n }\n\n throw new ValidationError(`${path} must be a JSON object`)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\n// ============================================================================\n// Field Definitions\n// ============================================================================\n\nconst FILE_FIELDS = `\n id\n createdAt\n updatedAt\n key\n filename\n contentType\n size\n status\n isPublic\n entityType\n entityId\n url\n`\n\nconst PRESIGNED_UPLOAD_FIELDS = `\n file {\n ${FILE_FIELDS}\n }\n uploadUrl\n expiresAt\n`\n\nconst PUBLISHER_FIELDS = `\n id\n name\n slug\n status\n description\n website\n createdAt\n updatedAt\n logoFile {\n id\n url\n }\n bannerFile {\n id\n url\n }\n`\n\nconst GAME_FIELDS = `\n id\n publisherId\n key\n name\n description\n metafyGameUuid\n metafyGameSlug\n website\n visibility\n isArchived\n createdAt\n updatedAt\n publisher {\n id\n name\n slug\n }\n logoFile {\n id\n url\n }\n coverFile {\n id\n url\n }\n`\n\nconst DATASET_FIELDS = `\n id\n publisherId\n gameId\n key\n name\n description\n purpose\n activeVersionId\n tcgplayerProductIdFieldKey\n visibility\n posX\n posY\n sortOrder\n archivedAt\n isArchived\n createdAt\n updatedAt\n publisher {\n id\n name\n slug\n }\n game {\n id\n key\n name\n }\n`\n\nconst SCHEMA_NESTED_FIELDS_DEPTH = 4\n\nfunction fieldInfoFields(depth: number): string {\n const nestedFields =\n depth > 0\n ? `\n nestedFields {\n ${fieldInfoFields(depth - 1)}\n }`\n : ''\n\n return `\n key\n label\n description\n type\n isRequired\n filterable\n searchable\n isIdentifier\n sortOrder\n itemType\n linkDatasetId\n linkDatasetKey\n linkDatasetName\n linkFieldKey\n linkAlias\n linkDirection\n displayFormat\n semanticType\n placeholder\n isHidden\n isComputed\n isSystemField\n defaultValue\n allowedValues\n minLength\n maxLength\n minValue\n maxValue\n pattern\n isUnique\n ${nestedFields}\n `\n}\n\nconst SCHEMA_FIELDS = `\n schema {\n fields {\n ${fieldInfoFields(SCHEMA_NESTED_FIELDS_DEPTH)}\n }\n filterableFields\n searchableFields\n linkFields {\n key\n label\n targetDatasetKey\n targetDatasetName\n targetDatasetId\n targetFieldKey\n linkAlias\n linkDirection\n isArray\n }\n }\n`\n\nconst OBJECT_FIELD_FIELDS = `\n id\n objectTypeId\n key\n label\n dataType\n isRequired\n isFilterable\n isSearchable\n isIdentifier\n sortOrder\n description\n placeholder\n displayFormat\n semanticType\n isHidden\n isComputed\n isSystemField\n defaultValue\n allowedValues\n minLength\n maxLength\n minValue\n maxValue\n pattern\n isUnique\n itemType\n linkDatasetId\n linkFieldKey\n linkAlias\n linkDirection\n parentFieldId\n createdAt\n updatedAt\n`\n\ninterface RecordFieldOptions {\n includePricing?: boolean\n}\n\nconst TCGPLAYER_PRICING_FIELDS = `\n pricing {\n productId\n prices {\n subTypeName\n lowPrice\n midPrice\n highPrice\n marketPrice\n directLowPrice\n }\n }\n`\n\nfunction recordFields(options: RecordFieldOptions = {}): string {\n return `\n id\n datasetId\n data\n ${options.includePricing ? TCGPLAYER_PRICING_FIELDS : ''}\n createdAt\n updatedAt\n dataset {\n id\n key\n name\n gameId\n publisherId\n }\n `\n}\n\nconst RECORD_FIELDS = recordFields()\n\nconst DECK_SECTION_DEFINITION_FIELDS = `\n key\n label\n description\n order\n default\n aliases\n minCards\n maxCards\n excludedFromDeckSize\n legalCardTypes\n metadata\n`\n\nconst DECK_ENTRY_FIELDS = `\n id\n datasetId\n recordId\n identifier\n quantity\n section\n sortOrder\n annotations\n display\n record {\n ${RECORD_FIELDS}\n }\n`\n\nconst DECK_VALIDATED_AGAINST_FIELDS = `\n rulesetId\n rulesetVersionId\n rulesetVersionLabel\n cardDatasetId\n cardDatasetVersionId\n validatedAt\n validationResultSummary\n`\n\nconst DECK_VALIDATION_ISSUE_FIELDS = `\n code\n severity\n message\n entryIds\n section\n datasetId\n identifier\n metadata\n`\n\nconst DECK_VALIDATION_FIELDS = `\n deckId\n valid\n blockers {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n warnings {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n affectedEntries {\n entryId\n datasetId\n recordId\n identifier\n section\n quantity\n }\n validatedAgainst {\n ${DECK_VALIDATED_AGAINST_FIELDS}\n }\n checkedAt\n`\n\nconst RULESET_VERSION_FIELDS = `\n id\n rulesetId\n versionLabel\n status\n rules\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n cardDatasetId\n cardDatasetVersionId\n sourceDatasetId\n sourceDatasetVersionId\n sourceDatasetRecordId\n sourceRecordIdentifier\n rulesFingerprint\n effectiveAt\n changelog\n createdByAccountId\n publishedByAccountId\n publishedAt\n supersededAt\n createdAt\n updatedAt\n`\n\nconst RULESET_FIELDS = `\n id\n gameId\n game {\n id\n key\n name\n }\n key\n name\n description\n tags\n sortOrder\n currentVersionId\n currentVersion {\n ${RULESET_VERSION_FIELDS}\n }\n archivedAt\n isArchived\n createdAt\n updatedAt\n`\n\nconst DECK_VALIDATION_RULES_FIELDS = `\n rulesetId\n rulesetVersionId\n rulesetKey\n rulesetVersionLabel\n rules\n sections {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n`\n\nconst RULESET_VALIDATION_IMPACT_DECK_FIELDS = `\n deckId\n title\n slug\n state\n hasUnpublishedChanges\n valid\n blockerCount\n warningCount\n affectedEntryCount\n issues {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n`\n\nconst RULESET_VALIDATION_IMPACT_FIELDS = `\n rulesetId\n rulesetVersionId\n checkedAt\n affectedDeckCount\n invalidDeckCount\n blockerCount\n warningCount\n results {\n ${RULESET_VALIDATION_IMPACT_DECK_FIELDS}\n }\n`\n\nconst RULESET_VERSION_DRAFT_IMPORT_PREVIEW_FIELDS = `\n sourceDatasetId\n sourceDatasetVersionId\n sourceDatasetRecordId\n sourceRecordIdentifier\n rules\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n rulesFingerprint\n summary\n sectionCount\n copyLimitCount\n`\n\nconst DECK_DIFF_FIELDS = `\n deckId\n fromVersionId\n toVersionId\n toDraftRevision\n hasChanges\n diff\n`\n\nconst DECK_VERSION_FIELDS = `\n id\n deckId\n versionNumber\n slug\n identifier\n title\n description\n formatKey\n visibility\n externalRef\n sourceUrl\n metadata\n publishNote\n computedDiff\n rulesetId\n rulesetVersionId\n cardDatasetId\n cardDatasetVersionId\n validatedAt\n validationSummary\n validatedAgainst {\n ${DECK_VALIDATED_AGAINST_FIELDS}\n }\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n publishedByAccountId\n publishedByApiApplicationId\n createdAt\n entries {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_COLLABORATOR_FIELDS = `\n id\n deckId\n accountId\n role\n createdByAccountId\n createdAt\n updatedAt\n`\n\nconst DECK_TOKEN_ISSUER_FIELDS = `\n id\n apiApplicationId\n label\n allowedScopes\n allowedRepresentations\n maxTokenLifetimeSeconds\n directSigningAlg\n directSigningKeyId\n directSigningPublicKey\n directSigningKeyRevokedAt\n revokedAt\n createdAt\n updatedAt\n`\n\nconst DECK_TOKEN_FIELDS = `\n id\n apiApplicationId\n issuerId\n deckId\n gameId\n externalSubject\n scopes\n representation\n expiresAt\n revokedAt\n lastUsedAt\n createdAt\n updatedAt\n`\n\nconst DECK_IMPORT_ENTRY_FIELDS = `\n lineNumber\n raw\n datasetKey\n datasetId\n recordId\n identifier\n quantity\n section\n sortOrder\n display\n record {\n ${RECORD_FIELDS}\n }\n`\n\nconst DECK_IMPORT_ISSUE_FIELDS = `\n lineNumber\n raw\n code\n message\n`\n\nconst DECK_IMPORT_UNMATCHED_FIELDS = `\n lineNumber\n raw\n datasetKey\n identifier\n quantity\n section\n code\n message\n`\n\nconst DECK_IMPORT_AMBIGUOUS_FIELDS = `\n lineNumber\n raw\n datasetKey\n identifier\n quantity\n section\n candidates {\n recordId\n identifier\n display\n }\n`\n\nconst DECK_IMPORT_FORMAT_DEFINITION_FIELDS = `\n id\n gameId\n key\n name\n description\n enabled\n priority\n datasetKey\n config\n archivedAt\n isArchived\n createdAt\n updatedAt\n`\n\nconst DECK_IMPORT_FORMAT_DETECTION_FIELDS = `\n formatId\n key\n name\n confidence\n reason\n`\n\nconst DECK_IMPORT_FORMAT_TEST_PAYLOAD_FIELDS = `\n detection {\n ${DECK_IMPORT_FORMAT_DETECTION_FIELDS}\n }\n entries {\n ${DECK_IMPORT_ENTRY_FIELDS}\n }\n parseErrors {\n ${DECK_IMPORT_ISSUE_FIELDS}\n }\n unmatched {\n ${DECK_IMPORT_UNMATCHED_FIELDS}\n }\n ambiguous {\n ${DECK_IMPORT_AMBIGUOUS_FIELDS}\n }\n`\n\nconst DECK_HYDRATE_ENTRIES_PAYLOAD_FIELDS = `\n entries {\n ${DECK_IMPORT_ENTRY_FIELDS}\n }\n unmatched {\n ${DECK_IMPORT_UNMATCHED_FIELDS}\n }\n ambiguous {\n ${DECK_IMPORT_AMBIGUOUS_FIELDS}\n }\n`\n\nconst DECK_EXPORT_PAYLOAD_FIELDS = `\n deckId\n format\n text\n entryCount\n`\n\nconst DECK_FIELDS = `\n id\n ownerType\n ownerAccountId\n ownerApiApplicationId\n environment\n createdByAccountId\n createdByApiApplicationId\n accountId\n apiApplicationId\n gameId\n slug\n identifier\n title\n description\n formatKey\n visibility\n accessMode\n discoverability\n state\n archivedAt\n deletedAt\n unpublishedAt\n externalRefApiApplicationId\n externalRef\n externalSubjectRef\n rulesetId\n sourceUrl\n metadata\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n latestPublishedVersion {\n ${DECK_VERSION_FIELDS}\n }\n publishedAt\n draftRevision\n draftUpdatedAt\n draftUpdatedByAccountId\n draftUpdatedByApiApplicationId\n hasUnpublishedChanges\n createdAt\n updatedAt\n game {\n ${GAME_FIELDS}\n }\n entries {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_OWNERSHIP_TRANSFER_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n retainedAppAccess\n`\n\nconst DECK_COPY_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n copiedFromDeckId\n retainedAppAccess\n`\n\nconst DECK_ACCESS_APPLICATION_FIELDS = `\n id\n name\n description\n revokedAt\n`\n\nconst DECK_API_APPLICATION_ACCESS_FIELDS = `\n id\n deckId\n deck {\n ${DECK_FIELDS}\n }\n apiApplicationId\n apiApplication {\n ${DECK_ACCESS_APPLICATION_FIELDS}\n }\n role\n grantSource\n externalRef\n createdByAccountId\n createdByApiApplicationId\n revokedAt\n createdAt\n updatedAt\n`\n\nconst DECK_PUBLISH_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n version {\n ${DECK_VERSION_FIELDS}\n }\n validation {\n ${DECK_VALIDATION_FIELDS}\n }\n blockers {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n warnings {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n`\n\nconst DECK_ENTRY_MUTATION_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n entry {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_ENTRY_REORDER_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n entries {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_ENTRIES_REPLACE_PAYLOAD_FIELDS = DECK_ENTRY_REORDER_PAYLOAD_FIELDS\n\nconst DECK_IMPORT_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n applied\n dryRun\n replace\n format\n importFormat {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n detection {\n ${DECK_IMPORT_FORMAT_DETECTION_FIELDS}\n }\n entries {\n ${DECK_IMPORT_ENTRY_FIELDS}\n }\n parseErrors {\n ${DECK_IMPORT_ISSUE_FIELDS}\n }\n unmatched {\n ${DECK_IMPORT_UNMATCHED_FIELDS}\n }\n ambiguous {\n ${DECK_IMPORT_AMBIGUOUS_FIELDS}\n }\n validation {\n ${DECK_VALIDATION_FIELDS}\n }\n`\n\nconst RESOLVED_LINKS_FIELDS = `\n resolvedLinks {\n field\n linkFieldKey\n values\n records {\n id\n datasetId\n data\n }\n }\n`\n\nconst BULK_RECORD_ERROR_FIELDS = `\n datasetKey\n index\n errors {\n field\n message\n details\n }\n`\n\nconst IMPORT_STATS_FIELDS = `\n total\n inserted\n updated\n skipped\n failed\n`\n\nconst BULK_IMPORT_RESULT_FIELDS = `\n inserted {\n ${RECORD_FIELDS}\n }\n updated {\n ${RECORD_FIELDS}\n }\n skipped\n errors {\n ${BULK_RECORD_ERROR_FIELDS}\n }\n createdFields {\n ${OBJECT_FIELD_FIELDS}\n }\n stats {\n ${IMPORT_STATS_FIELDS}\n }\n`\n\nconst IMPORT_JOB_ASSET_FIELDS = `\n fileId\n filename\n file {\n ${FILE_FIELDS}\n }\n`\n\nconst IMPORT_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n datasetId\n dataset {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n accountId\n status\n mode\n onConflict\n format\n fileId\n progress\n totalRecords\n processedRecords\n insertedCount\n updatedCount\n skippedCount\n failedCount\n createdFields {\n ${OBJECT_FIELD_FIELDS}\n }\n errors {\n ${BULK_RECORD_ERROR_FIELDS}\n }\n errorMessage\n assets {\n ${IMPORT_JOB_ASSET_FIELDS}\n }\n startedAt\n completedAt\n createdAt\n updatedAt\n lastCheckpointIndex\n isResumed\n imagesPending\n imagesCompleted\n imagesFailed\n`\n\nconst IMPORT_JOB_LOG_FIELDS = `\n id\n importJobId\n level\n message\n datasetKey\n recordIndex\n fieldKey\n details\n createdAt\n`\n\nconst DATASET_RECORDS_UPSERT_PAYLOAD_FIELDS = `\n job {\n ${IMPORT_JOB_FIELDS}\n }\n dryRunResult {\n ${BULK_IMPORT_RESULT_FIELDS}\n }\n`\n\nconst DELETE_JOB_RESULT_FIELDS = `\n target\n recordId\n identifier\n status\n message\n`\n\nconst DATASET_RECORD_DELETE_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n datasetId\n dataset {\n ${DATASET_FIELDS}\n }\n accountId\n status\n targetType\n dryRun\n targets\n progress\n totalTargets\n processedTargets\n matchedCount\n deletedCount\n missingCount\n blockedCount\n failedCount\n results {\n ${DELETE_JOB_RESULT_FIELDS}\n }\n errorMessage\n startedAt\n completedAt\n createdAt\n updatedAt\n`\n\nconst FIELD_MAPPING_FIELDS = `\n sourceField\n targetField\n targetFieldLabel\n inferredType\n inferredItemType\n inferredChildren {\n key\n label\n type\n required\n itemType\n children {\n key\n label\n type\n required\n itemType\n }\n }\n inferredLinkDataset\n inferredLinkFieldKey\n inferredLinkDirection\n targetFieldType\n sampleValues\n status\n`\n\nconst IMPORT_WARNING_FIELDS = `\n datasetKey\n field\n message\n severity\n`\n\nconst DATASET_IMPORT_PREVIEW_FIELDS = `\n datasetKey\n datasetName\n datasetId\n exists\n recordCount\n fieldMappings {\n ${FIELD_MAPPING_FIELDS}\n }\n warnings {\n ${IMPORT_WARNING_FIELDS}\n }\n canProceed\n sampleRecords\n availableDatasets {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n`\n\nconst GAME_IMPORT_PREVIEW_FIELDS = `\n datasets {\n datasetKey\n datasetName\n datasetId\n exists\n recordCount\n fieldMappings {\n ${FIELD_MAPPING_FIELDS}\n }\n warnings {\n ${IMPORT_WARNING_FIELDS}\n }\n sampleRecords\n }\n importOrder\n warnings {\n ${IMPORT_WARNING_FIELDS}\n }\n canProceed\n`\n\nconst GAME_IMPORT_DATASET_STATUS_FIELDS = `\n datasetKey\n datasetId\n datasetName\n status\n recordCount\n insertedCount\n updatedCount\n skippedCount\n failedCount\n errorMessage\n`\n\nconst GAME_IMPORT_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n gameId\n game {\n ${GAME_FIELDS}\n }\n accountId\n status\n mode\n onConflict\n fileId\n assets {\n ${IMPORT_JOB_ASSET_FIELDS}\n }\n totalDatasets\n completedDatasets\n progress\n importOrder\n datasetStatuses {\n ${GAME_IMPORT_DATASET_STATUS_FIELDS}\n }\n errorMessage\n startedAt\n completedAt\n createdAt\n updatedAt\n completedDatasetKeys\n currentDatasetKey\n lastCheckpointIndex\n isResumed\n imagesPending\n imagesCompleted\n imagesFailed\n phase\n linkBuildingDataset\n linkBuildingTotalDatasets\n linkBuildingCompletedDatasets\n linkBuildingProcessedRecords\n linkBuildingTotalRecords\n`\n\nconst EXPORT_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n datasetId\n dataset {\n ${DATASET_FIELDS}\n }\n accountId\n status\n format\n filter\n totalRecords\n processedRecords\n progress\n fileId\n downloadUrl\n downloadExpiresAt\n errorMessage\n startedAt\n completedAt\n createdAt\n updatedAt\n lastCheckpointIndex\n`\n\nconst SCAN_CANDIDATE_FIELDS = `\n recordId\n rank\n score\n confidence\n reasons\n`\n\nconst SCAN_WEBHOOK_FIELDS = `\n configured\n url\n latestDeliveryId\n status\n attemptCount\n nextAttemptAt\n lastAttemptAt\n deliveredAt\n lastStatusCode\n lastError\n`\n\nconst SCAN_JOB_METRICS_FIELDS = `\n featureVersion\n candidateCount\n confidenceScore\n confidenceLabel\n stages {\n name\n status\n durationMs\n completedAt\n details\n }\n timings\n`\n\nconst SCAN_JOB_FIELDS = `\n jobId\n status\n publisherSlug\n gameKey\n datasetKey\n fileId\n clientRequestId\n templateId\n templateVersionId\n bestMatch {\n recordId\n score\n confidence\n }\n candidates {\n ${SCAN_CANDIDATE_FIELDS}\n }\n extracted\n metrics {\n ${SCAN_JOB_METRICS_FIELDS}\n }\n webhook {\n ${SCAN_WEBHOOK_FIELDS}\n }\n error {\n code\n message\n }\n createdAt\n updatedAt\n startedAt\n completedAt\n`\n\nconst SCAN_METRICS_FIELDS = `\n publisherSlug\n gameKey\n datasetKey\n since\n until\n generatedAt\n totalJobs\n completedJobs\n failedJobs\n failureRate\n noMatchCount\n noMatchRate\n averageShortlistSize\n vectorQueryCount\n vectorFallbackCount\n averageVectorCandidates\n averageVectorQueryMs\n averageEmbeddingMs\n confidenceDistribution\n feedback {\n total\n correct\n corrected\n unknown\n accuracy\n }\n featureVersions {\n featureVersion\n jobCount\n completedJobs\n failedJobs\n noMatchCount\n averageConfidence\n averageShortlistSize\n vectorQueryCount\n vectorFallbackCount\n averageVectorCandidates\n averageVectorQueryMs\n averageEmbeddingMs\n feedbackCount\n correctFeedback\n correctedFeedback\n feedbackAccuracy\n }\n`\n\nconst SCAN_TEMPLATE_WARNING_FIELDS = `\n code\n region\n message\n`\n\nconst SCAN_TEMPLATE_REGION_FIELDS = `\n id\n key\n label\n sortOrder\n shapeType\n geometry\n semanticType\n extractionMode\n lookupMode\n isRequired\n weight\n config\n`\n\nconst SCAN_TEMPLATE_FIELDS = `\n id\n key\n name\n status\n version\n isDefault\n publisherSlug\n gameKey\n datasetKey\n exampleFileId\n coordinateSpace\n cardAspectRatio\n notes\n config\n regions {\n ${SCAN_TEMPLATE_REGION_FIELDS}\n }\n createdAt\n updatedAt\n`\n\nconst SCAN_TEMPLATE_PREVIEW_REGION_FIELDS = `\n key\n label\n semanticType\n extractionMode\n lookupMode\n rawText\n normalizedValue\n source\n status\n confidence\n`\n\nconst GAME_SCAN_REGION_FIELDS = `\n id\n key\n name\n description\n sortOrder\n isActive\n metadata\n createdAt\n updatedAt\n`\n\nfunction connectionFields(nodeFields: string): string {\n return `\n totalCount\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n ${nodeFields}\n }\n }\n `\n}\n\n// ============================================================================\n// Query Builder\n// ============================================================================\n\nexport interface SearchPublishersParams {\n search?: string\n first?: number\n after?: string\n}\n\nexport interface SearchGamesParams {\n publisherSlug?: string\n search?: string\n first?: number\n after?: string\n}\n\nexport interface SearchDatasetsParams {\n publisherSlug?: string\n gameKey?: string\n search?: string\n purpose?: 'DATA' | 'RULES'\n first?: number\n after?: string\n}\n\nexport interface SearchRecordsParams {\n publisherSlug: string\n gameKey: string\n datasetKey: string\n filter?: FilterCondition\n search?: string\n orderBy?: string\n resolveLinks?: string[]\n first?: number\n after?: string\n validateSchema?: boolean\n includePricing?: boolean\n}\n\nexport interface ListGamesParams {\n publisherId: string\n first?: number\n after?: string\n includeArchived?: boolean\n}\n\nexport interface GameLookupParams {\n id?: string\n publisherId?: string\n publisherSlug?: string\n gameKey?: string\n gameSlug?: string\n}\n\nexport interface ListDatasetsParams {\n publisherId: string\n gameId?: string\n first?: number\n after?: string\n includeArchived?: boolean\n purpose?: 'DATA' | 'RULES'\n}\n\nexport interface DatasetLookupParams {\n id?: string\n publisherId?: string\n gameId?: string\n datasetKey?: string\n}\n\nexport interface ListDatasetRecordsParams {\n datasetId: string\n filter?: FilterCondition\n orderBy?: { field: string; direction?: 'ASC' | 'DESC' }\n first?: number\n after?: string\n last?: number\n before?: string\n validateSchema?: boolean\n}\n\nexport interface DatasetRecordLookupParams {\n id?: string\n datasetId?: string\n identifier?: string\n publisherSlug?: string\n gameKey?: string\n datasetKey?: string\n recordId?: string\n resolveLinks?: string[]\n validateSchema?: boolean\n includePricing?: boolean\n}\n\nexport interface ListImportJobsParams {\n publisherId: string\n datasetId?: string\n status?: ImportJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListGameImportJobsParams {\n gameId: string\n status?: ImportJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListDatasetRecordDeleteJobsParams {\n publisherId: string\n datasetId?: string\n status?: DatasetRecordDeleteJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListExportJobsParams {\n publisherId: string\n gameId?: string\n datasetId?: string\n status?: ExportJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListDecksParams {\n first?: number\n after?: string\n includeArchived?: boolean\n}\n\nexport interface ListDeckVersionsParams {\n first?: number\n after?: string\n}\n\nexport interface DeckSectionDefinitionsParams {\n publisherSlug?: string\n gameKey?: string\n gameId?: string\n rulesetKey?: string\n rulesetVersionId?: string\n}\n\nexport interface ListRulesetsParams {\n gameId: string\n includeArchived?: boolean\n first?: number\n after?: string\n}\n\nexport interface ListPublicRulesetsParams {\n gameId: string\n first?: number\n after?: string\n}\n\nexport interface RulesetLookupParams {\n id?: string\n gameId?: string\n key?: string\n}\n\nexport interface ListRulesetVersionsParams {\n rulesetId: string\n status?: RulesetVersionStatus\n first?: number\n after?: string\n}\n\nexport interface RulesetValidationRulesParams {\n gameId: string\n rulesetKey: string\n rulesetVersionId?: string\n}\n\nexport interface RulesetValidationImpactParams {\n rulesetVersionId: string\n first?: number\n}\n\nexport interface ViewerDecksParams {\n filter?: ViewerDecksFilterInput\n first?: number\n after?: string\n}\n\nexport interface AppDecksParams {\n filter?: AppDecksFilterInput\n first?: number\n after?: string\n}\n\nexport interface PublicDecksParams {\n filter?: PublicDecksFilterInput\n first?: number\n after?: string\n}\n\nexport interface ListDeckImportFormatsParams {\n publisherId?: string\n gameId?: string\n includeArchived?: boolean\n first?: number\n after?: string\n}\n\nexport const QueryBuilder = {\n // Publishers\n searchPublishers(params: SearchPublishersParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query SearchPublishers${defStr} {\n searchPublishers${argStr} {\n ${connectionFields(PUBLISHER_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchPublisherById(): { query: string } {\n return {\n query: `\n query FetchPublisher($id: UUID!) {\n fetchPublisher(id: $id) {\n ${PUBLISHER_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchPublisherBySlug(): { query: string } {\n return {\n query: `\n query FetchPublisher($slug: String!) {\n fetchPublisher(slug: $slug) {\n ${PUBLISHER_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchPublishers(): { query: string } {\n return {\n query: `\n query FetchPublishers($slugs: [String!]!) {\n fetchPublishers(slugs: $slugs) {\n ${PUBLISHER_FIELDS}\n }\n }\n `,\n }\n },\n\n // Games\n searchGames(params: SearchGamesParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query SearchGames${defStr} {\n searchGames${argStr} {\n ${connectionFields(GAME_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchGameById(): { query: string } {\n return {\n query: `\n query FetchGame($id: UUID!) {\n fetchGame(id: $id) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchGameByKeys(): { query: string } {\n return {\n query: `\n query FetchGame($publisherSlug: String!, $gameKey: String!) {\n fetchGame(publisherSlug: $publisherSlug, gameKey: $gameKey) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchGames(): { query: string } {\n return {\n query: `\n query FetchGames($ids: [UUID!]!) {\n fetchGames(ids: $ids) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n listGames(params: ListGamesParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n\n return {\n query: `\n query Games(${defs.join(', ')}) {\n games(${args.join(', ')}) {\n ${connectionFields(GAME_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n game(params: GameLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.publisherId !== undefined) {\n defs.push('$publisherId: UUID')\n args.push('publisherId: $publisherId')\n variables['publisherId'] = params.publisherId\n }\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.gameSlug !== undefined) {\n defs.push('$gameSlug: String')\n args.push('gameSlug: $gameSlug')\n variables['gameSlug'] = params.gameSlug\n }\n\n return {\n query: `\n query Game(${defs.join(', ')}) {\n game(${args.join(', ')}) {\n ${GAME_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n createGame(): { query: string } {\n return {\n query: `\n mutation GameCreate($input: GameCreateInput!) {\n gameCreate(input: $input) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n updateGame(): { query: string } {\n return {\n query: `\n mutation GameUpdate($id: UUID!, $input: GameUpdateInput!) {\n gameUpdate(id: $id, input: $input) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n // Datasets\n searchDatasets(params: SearchDatasetsParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.purpose !== undefined) {\n defs.push('$purpose: DatasetPurpose')\n args.push('purpose: $purpose')\n variables['purpose'] = params.purpose\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query SearchDatasets${defStr} {\n searchDatasets${argStr} {\n ${connectionFields(DATASET_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchDatasetById(): { query: string } {\n return {\n query: `\n query FetchDataset($id: UUID!) {\n fetchDataset(id: $id) {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDatasetByKeys(): { query: string } {\n return {\n query: `\n query FetchDataset($publisherSlug: String!, $gameKey: String!, $datasetKey: String!) {\n fetchDataset(publisherSlug: $publisherSlug, gameKey: $gameKey, datasetKey: $datasetKey) {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDatasets(): { query: string } {\n return {\n query: `\n query FetchDatasets($ids: [UUID!]!) {\n fetchDatasets(ids: $ids) {\n ${DATASET_FIELDS}\n }\n }\n `,\n }\n },\n\n listDatasets(params: ListDatasetsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n if (params.purpose !== undefined) {\n defs.push('$purpose: DatasetPurpose')\n args.push('purpose: $purpose')\n variables['purpose'] = params.purpose\n }\n\n return {\n query: `\n query Datasets(${defs.join(', ')}) {\n datasets(${args.join(', ')}) {\n ${connectionFields(`${DATASET_FIELDS}\\n${SCHEMA_FIELDS}`)}\n }\n }\n `,\n variables,\n }\n },\n\n dataset(params: DatasetLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.publisherId !== undefined) {\n defs.push('$publisherId: UUID')\n args.push('publisherId: $publisherId')\n variables['publisherId'] = params.publisherId\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.datasetKey !== undefined) {\n defs.push('$datasetKey: String')\n args.push('datasetKey: $datasetKey')\n variables['datasetKey'] = params.datasetKey\n }\n\n return {\n query: `\n query Dataset(${defs.join(', ')}) {\n dataset(${args.join(', ')}) {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n // Records\n searchRecords(params: SearchRecordsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {\n publisherSlug: params.publisherSlug,\n gameKey: params.gameKey,\n datasetKey: params.datasetKey,\n }\n const args: string[] = [\n 'publisherSlug: $publisherSlug',\n 'gameKey: $gameKey',\n 'datasetKey: $datasetKey',\n ]\n const defs: string[] = ['$publisherSlug: String!', '$gameKey: String!', '$datasetKey: String!']\n\n if (params.filter !== undefined) {\n defs.push('$filter: JSON')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.orderBy !== undefined) {\n defs.push('$orderBy: String')\n args.push('orderBy: $orderBy')\n variables['orderBy'] = params.orderBy\n }\n if (params.resolveLinks !== undefined) {\n defs.push('$resolveLinks: [String!]')\n args.push('resolveLinks: $resolveLinks')\n variables['resolveLinks'] = params.resolveLinks\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.validateSchema !== undefined) {\n defs.push('$validateSchema: Boolean')\n args.push('validateSchema: $validateSchema')\n variables['validateSchema'] = params.validateSchema\n }\n\n const includeResolvedLinks = params.resolveLinks && params.resolveLinks.length > 0\n const selectedRecordFields = recordFields({ includePricing: params.includePricing })\n const nodeFields = includeResolvedLinks\n ? `${selectedRecordFields}\\n${RESOLVED_LINKS_FIELDS}`\n : selectedRecordFields\n\n return {\n query: `\n query SearchRecords(${defs.join(', ')}) {\n searchRecords(${args.join(', ')}) {\n ${connectionFields(nodeFields)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchRecordById(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecord($id: UUID!) {\n fetchRecord(id: $id) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n fetchRecordByIdentifier(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecordByIdentifier($publisherSlug: String!, $gameKey: String!, $datasetKey: String!, $identifier: String!) {\n fetchRecordByIdentifier(publisherSlug: $publisherSlug, gameKey: $gameKey, datasetKey: $datasetKey, identifier: $identifier) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n fetchRecordsByIdentifier(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecordsByIdentifier($publisherSlug: String!, $gameKey: String!, $datasetKey: String!, $identifiers: [String!]!) {\n fetchRecordsByIdentifier(publisherSlug: $publisherSlug, gameKey: $gameKey, datasetKey: $datasetKey, identifiers: $identifiers) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n fetchRecords(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecords($ids: [UUID!]!) {\n fetchRecords(ids: $ids) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n listDatasetRecords(params: ListDatasetRecordsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { datasetId: params.datasetId }\n const args: string[] = ['datasetId: $datasetId']\n const defs: string[] = ['$datasetId: UUID!']\n\n if (params.filter !== undefined) {\n defs.push('$filter: JSON')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.orderBy !== undefined) {\n defs.push('$orderBy: DatasetRecordOrderByInput')\n args.push('orderBy: $orderBy')\n variables['orderBy'] = params.orderBy\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.last !== undefined) {\n defs.push('$last: Int')\n args.push('last: $last')\n variables['last'] = params.last\n }\n if (params.before !== undefined) {\n defs.push('$before: String')\n args.push('before: $before')\n variables['before'] = params.before\n }\n if (params.validateSchema !== undefined) {\n defs.push('$validateSchema: Boolean')\n args.push('validateSchema: $validateSchema')\n variables['validateSchema'] = params.validateSchema\n }\n\n return {\n query: `\n query DatasetRecords(${defs.join(', ')}) {\n datasetRecords(${args.join(', ')}) {\n ${connectionFields(RECORD_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n datasetRecord(params: DatasetRecordLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.identifier !== undefined) {\n defs.push('$identifier: String')\n args.push('identifier: $identifier')\n variables['identifier'] = params.identifier\n }\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.datasetKey !== undefined) {\n defs.push('$datasetKey: String')\n args.push('datasetKey: $datasetKey')\n variables['datasetKey'] = params.datasetKey\n }\n if (params.recordId !== undefined) {\n defs.push('$recordId: UUID')\n args.push('recordId: $recordId')\n variables['recordId'] = params.recordId\n }\n if (params.resolveLinks !== undefined) {\n defs.push('$resolveLinks: [String!]')\n args.push('resolveLinks: $resolveLinks')\n variables['resolveLinks'] = params.resolveLinks\n }\n if (params.validateSchema !== undefined) {\n defs.push('$validateSchema: Boolean')\n args.push('validateSchema: $validateSchema')\n variables['validateSchema'] = params.validateSchema\n }\n\n const includeResolvedLinks = params.resolveLinks && params.resolveLinks.length > 0\n const selectedRecordFields = recordFields({ includePricing: params.includePricing })\n const fields = includeResolvedLinks\n ? `${selectedRecordFields}\\n${RESOLVED_LINKS_FIELDS}`\n : selectedRecordFields\n\n return {\n query: `\n query DatasetRecord(${defs.join(', ')}) {\n datasetRecord(${args.join(', ')}) {\n ${fields}\n }\n }\n `,\n variables,\n }\n },\n\n upsertDatasetRecords(): { query: string } {\n return {\n query: `\n mutation DatasetRecordsUpsert($input: DatasetRecordsUpsertInput!) {\n datasetRecordsUpsert(input: $input) {\n ${DATASET_RECORDS_UPSERT_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n deleteDatasetRecords(): { query: string } {\n return {\n query: `\n mutation DatasetRecordsDelete($input: DatasetRecordsDeleteInput!) {\n datasetRecordsDelete(input: $input) {\n ${DATASET_RECORD_DELETE_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetRecordDeleteJob(): { query: string } {\n return {\n query: `\n query DatasetRecordDeleteJob($id: UUID!) {\n datasetRecordDeleteJob(id: $id) {\n ${DATASET_RECORD_DELETE_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetRecordDeleteJobs(params: ListDatasetRecordDeleteJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.status !== undefined) {\n defs.push('$status: DatasetRecordDeleteJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query DatasetRecordDeleteJobs(${defs.join(', ')}) {\n datasetRecordDeleteJobs(${args.join(', ')}) {\n ${connectionFields(DATASET_RECORD_DELETE_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n datasetImportPreview(): { query: string } {\n return {\n query: `\n query DatasetImportPreview($input: DatasetImportPreviewInput!) {\n datasetImportPreview(input: $input) {\n ${DATASET_IMPORT_PREVIEW_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportValidate(): { query: string } {\n return {\n query: `\n query DatasetImportValidate($input: DatasetImportValidateInput!) {\n datasetImportValidate(input: $input) {\n ${BULK_IMPORT_RESULT_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportFromFile(): { query: string } {\n return {\n query: `\n mutation DatasetImportFromFile($input: DatasetImportFromFileInput!) {\n datasetImportFromFile(input: $input) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportFromPayload(): { query: string } {\n return {\n query: `\n mutation DatasetImportFromPayload($input: DatasetImportFromPayloadInput!) {\n datasetImportFromPayload(input: $input) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportFromUrl(): { query: string } {\n return {\n query: `\n mutation DatasetImportFromUrl($input: DatasetImportFromUrlInput!) {\n datasetImportFromUrl(input: $input) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n importJob(): { query: string } {\n return {\n query: `\n query ImportJob($id: UUID!) {\n importJob(id: $id) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n importJobs(params: ListImportJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.status !== undefined) {\n defs.push('$status: ImportJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query ImportJobs(${defs.join(', ')}) {\n importJobs(${args.join(', ')}) {\n ${connectionFields(IMPORT_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n importJobCancel(): { query: string } {\n return {\n query: `\n mutation ImportJobCancel($id: UUID!) {\n importJobCancel(id: $id) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n importJobLogs(params: {\n importJobId: string\n level?: string\n datasetKey?: string\n first?: number\n after?: string\n }): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { importJobId: params.importJobId }\n const args: string[] = ['id: $importJobId']\n const logArgs: string[] = []\n const defs: string[] = ['$importJobId: UUID!']\n\n if (params.level !== undefined) {\n defs.push('$level: ImportLogLevel')\n logArgs.push('level: $level')\n variables['level'] = params.level\n }\n if (params.datasetKey !== undefined) {\n defs.push('$datasetKey: String')\n logArgs.push('datasetKey: $datasetKey')\n variables['datasetKey'] = params.datasetKey\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n logArgs.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n logArgs.push('after: $after')\n variables['after'] = params.after\n }\n\n const logArgStr = logArgs.length > 0 ? `(${logArgs.join(', ')})` : ''\n\n return {\n query: `\n query ImportJobLogs(${defs.join(', ')}) {\n importJob(${args.join(', ')}) {\n logs${logArgStr} {\n ${connectionFields(IMPORT_JOB_LOG_FIELDS)}\n }\n }\n }\n `,\n variables,\n }\n },\n\n gameImportPreview(): { query: string } {\n return {\n query: `\n query GameImportPreview($input: GameImportPreviewInput!) {\n gameImportPreview(input: $input) {\n ${GAME_IMPORT_PREVIEW_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportFromFile(): { query: string } {\n return {\n query: `\n mutation GameImportFromFile($input: GameImportFromFileInput!) {\n gameImportFromFile(input: $input) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportFromPayload(): { query: string } {\n return {\n query: `\n mutation GameImportFromPayload($input: GameImportFromPayloadInput!) {\n gameImportFromPayload(input: $input) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportFromUrl(): { query: string } {\n return {\n query: `\n mutation GameImportFromUrl($input: GameImportFromUrlInput!) {\n gameImportFromUrl(input: $input) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportJob(): { query: string } {\n return {\n query: `\n query GameImportJob($id: UUID!) {\n gameImportJob(id: $id) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportJobs(params: ListGameImportJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { gameId: params.gameId }\n const args: string[] = ['gameId: $gameId']\n const defs: string[] = ['$gameId: UUID!']\n\n if (params.status !== undefined) {\n defs.push('$status: ImportJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query GameImportJobs(${defs.join(', ')}) {\n gameImportJobs(${args.join(', ')}) {\n ${connectionFields(GAME_IMPORT_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n gameImportJobCancel(): { query: string } {\n return {\n query: `\n mutation GameImportJobCancel($id: UUID!) {\n gameImportJobCancel(id: $id) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n file(): { query: string } {\n return {\n query: `\n query File($id: UUID!) {\n file(id: $id) {\n ${FILE_FIELDS}\n }\n }\n `,\n }\n },\n\n fileUploadRequest(): { query: string } {\n return {\n query: `\n mutation FileUploadRequest($input: FileUploadInput!) {\n fileUploadRequest(input: $input) {\n ${PRESIGNED_UPLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n fileUploadConfirm(): { query: string } {\n return {\n query: `\n mutation FileUploadConfirm($id: UUID!) {\n fileUploadConfirm(id: $id) {\n ${FILE_FIELDS}\n }\n }\n `,\n }\n },\n\n fileDelete(): { query: string } {\n return {\n query: `\n mutation FileDelete($id: UUID!) {\n fileDelete(id: $id)\n }\n `,\n }\n },\n\n createScanUploadSession(): { query: string } {\n return {\n query: `\n mutation CreateScanUploadSession($input: CreateScanUploadSessionInput!) {\n createScanUploadSession(input: $input) {\n ${PRESIGNED_UPLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n confirmScanUpload(): { query: string } {\n return {\n query: `\n mutation ConfirmScanUpload($input: ConfirmScanUploadInput!) {\n confirmScanUpload(input: $input) {\n ${FILE_FIELDS}\n }\n }\n `,\n }\n },\n\n createScanJob(): { query: string } {\n return {\n query: `\n mutation CreateScanJob($input: CreateScanJobInput!) {\n createScanJob(input: $input) {\n job {\n ${SCAN_JOB_FIELDS}\n }\n created\n }\n }\n `,\n }\n },\n\n scanJob(): { query: string } {\n return {\n query: `\n query ScanJob($id: UUID!) {\n scanJob(id: $id) {\n ${SCAN_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n submitScanFeedback(): { query: string } {\n return {\n query: `\n mutation SubmitScanFeedback($input: SubmitScanFeedbackInput!) {\n submitScanFeedback(input: $input) {\n feedbackId\n jobId\n status\n persisted\n correct\n predictedRecordId\n selectedRecordId\n featureVersion\n message\n }\n }\n `,\n }\n },\n\n scanMetrics(): { query: string } {\n return {\n query: `\n query ScanMetrics($input: ScanMetricsInput!) {\n scanMetrics(input: $input) {\n ${SCAN_METRICS_FIELDS}\n }\n }\n `,\n }\n },\n\n resolveScanTemplate(): { query: string } {\n return {\n query: `\n query ResolveScanTemplate($input: ResolveScanTemplateInput!) {\n resolveScanTemplate(input: $input) {\n template {\n ${SCAN_TEMPLATE_FIELDS}\n }\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n scanTemplates(): { query: string } {\n return {\n query: `\n query ScanTemplates($input: ScanTemplatesInput!) {\n scanTemplates(input: $input) {\n templates {\n ${SCAN_TEMPLATE_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n createScanTemplate(): { query: string } {\n return {\n query: `\n mutation CreateScanTemplate($input: SaveScanTemplateInput!) {\n createScanTemplate(input: $input) {\n template {\n ${SCAN_TEMPLATE_FIELDS}\n }\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n updateScanTemplate(): { query: string } {\n return {\n query: `\n mutation UpdateScanTemplate($id: UUID!, $input: SaveScanTemplateInput!) {\n updateScanTemplate(id: $id, input: $input) {\n template {\n ${SCAN_TEMPLATE_FIELDS}\n }\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n previewScanTemplate(): { query: string } {\n return {\n query: `\n mutation PreviewScanTemplate($input: PreviewScanTemplateInput!) {\n previewScanTemplate(input: $input) {\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n regions {\n ${SCAN_TEMPLATE_PREVIEW_REGION_FIELDS}\n }\n message\n }\n }\n `,\n }\n },\n\n gameScanRegions(): { query: string } {\n return {\n query: `\n query GameScanRegions($publisherSlug: String!, $gameKey: String!, $includeInactive: Boolean) {\n gameScanRegions(publisherSlug: $publisherSlug, gameKey: $gameKey, includeInactive: $includeInactive) {\n ${GAME_SCAN_REGION_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJob(): { query: string } {\n return {\n query: `\n query ExportJob($id: UUID!) {\n exportJob(id: $id) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJobs(params: ListExportJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.status !== undefined) {\n defs.push('$status: ExportJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query ExportJobs(${defs.join(', ')}) {\n exportJobs(${args.join(', ')}) {\n ${connectionFields(EXPORT_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n datasetExport(): { query: string } {\n return {\n query: `\n mutation DatasetExport($input: DatasetExportInput!) {\n datasetExport(input: $input) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJobCancel(): { query: string } {\n return {\n query: `\n mutation ExportJobCancel($id: UUID!) {\n exportJobCancel(id: $id) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJobRefreshUrl(): { query: string } {\n return {\n query: `\n mutation ExportJobRefreshUrl($id: UUID!) {\n exportJobRefreshUrl(id: $id) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n // Rulesets\n rulesets(params: ListRulesetsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { gameId: params.gameId }\n const args: string[] = ['gameId: $gameId']\n const defs: string[] = ['$gameId: UUID!']\n\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query Rulesets(${defs.join(', ')}) {\n rulesets(${args.join(', ')}) {\n ${connectionFields(RULESET_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n publicRulesets(params: ListPublicRulesetsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { gameId: params.gameId }\n const args: string[] = ['gameId: $gameId']\n const defs: string[] = ['$gameId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query PublicRulesets(${defs.join(', ')}) {\n publicRulesets(${args.join(', ')}) {\n ${connectionFields(RULESET_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n ruleset(params: RulesetLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.key !== undefined) {\n defs.push('$key: String')\n args.push('key: $key')\n variables['key'] = params.key\n }\n\n return {\n query: `\n query Ruleset(${defs.join(', ')}) {\n ruleset(${args.join(', ')}) {\n ${RULESET_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n rulesetVersions(params: ListRulesetVersionsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { rulesetId: params.rulesetId }\n const args: string[] = ['rulesetId: $rulesetId']\n const defs: string[] = ['$rulesetId: UUID!']\n\n if (params.status !== undefined) {\n defs.push('$status: RulesetVersionStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query RulesetVersions(${defs.join(', ')}) {\n rulesetVersions(${args.join(', ')}) {\n ${connectionFields(RULESET_VERSION_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n rulesetVersion(): { query: string } {\n return {\n query: `\n query RulesetVersion($id: UUID!) {\n rulesetVersion(id: $id) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n rulesetValidationRules(): { query: string } {\n return {\n query: `\n query RulesetValidationRules($gameId: UUID!, $rulesetKey: String!, $rulesetVersionId: UUID) {\n rulesetValidationRules(gameId: $gameId, rulesetKey: $rulesetKey, rulesetVersionId: $rulesetVersionId)\n }\n `,\n }\n },\n\n deckValidationRules(): { query: string } {\n return {\n query: `\n query DeckValidationRules($gameId: UUID!, $rulesetKey: String!, $rulesetVersionId: UUID) {\n deckValidationRules(gameId: $gameId, rulesetKey: $rulesetKey, rulesetVersionId: $rulesetVersionId) {\n ${DECK_VALIDATION_RULES_FIELDS}\n }\n }\n `,\n }\n },\n\n rulesetVersionDraftImportPreview(): { query: string } {\n return {\n query: `\n query RulesetVersionDraftImportPreview($rulesetId: UUID!, $input: RulesetVersionDraftImportFromDatasetRecordInput!) {\n rulesetVersionDraftImportPreview(rulesetId: $rulesetId, input: $input) {\n ${RULESET_VERSION_DRAFT_IMPORT_PREVIEW_FIELDS}\n }\n }\n `,\n }\n },\n\n rulesetValidationImpact(params: RulesetValidationImpactParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { rulesetVersionId: params.rulesetVersionId }\n const args: string[] = ['rulesetVersionId: $rulesetVersionId']\n const defs: string[] = ['$rulesetVersionId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n\n return {\n query: `\n query RulesetValidationImpact(${defs.join(', ')}) {\n rulesetValidationImpact(${args.join(', ')}) {\n ${RULESET_VALIDATION_IMPACT_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n createRuleset(): { query: string } {\n return {\n query: `\n mutation RulesetCreate($input: RulesetCreateInput!) {\n rulesetCreate(input: $input) {\n ${RULESET_FIELDS}\n }\n }\n `,\n }\n },\n\n updateRuleset(): { query: string } {\n return {\n query: `\n mutation RulesetUpdate($id: UUID!, $input: RulesetUpdateInput!) {\n rulesetUpdate(id: $id, input: $input) {\n ${RULESET_FIELDS}\n }\n }\n `,\n }\n },\n\n createRulesetVersionDraft(): { query: string } {\n return {\n query: `\n mutation RulesetVersionDraftCreate($rulesetId: UUID!, $input: RulesetVersionDraftCreateInput!) {\n rulesetVersionDraftCreate(rulesetId: $rulesetId, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n importRulesetVersionDraftFromDatasetRecord(): { query: string } {\n return {\n query: `\n mutation RulesetVersionDraftImportFromDatasetRecord($rulesetId: UUID!, $input: RulesetVersionDraftImportFromDatasetRecordInput!) {\n rulesetVersionDraftImportFromDatasetRecord(rulesetId: $rulesetId, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n updateRulesetVersionDraft(): { query: string } {\n return {\n query: `\n mutation RulesetVersionDraftUpdate($id: UUID!, $input: RulesetVersionDraftUpdateInput!) {\n rulesetVersionDraftUpdate(id: $id, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n publishRulesetVersion(): { query: string } {\n return {\n query: `\n mutation RulesetVersionPublish($id: UUID!, $input: RulesetVersionPublishInput) {\n rulesetVersionPublish(id: $id, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n activateRulesetVersion(): { query: string } {\n return {\n query: `\n mutation RulesetVersionActivate($id: UUID!) {\n rulesetVersionActivate(id: $id) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n // Decks\n listMyDecks(params: ListDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query MyDecks${defStr} {\n myDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n viewerDecks(params: ViewerDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.filter !== undefined) {\n defs.push('$filter: ViewerDecksFilterInput')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query ViewerDecks${defStr} {\n viewerDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n appDecks(params: AppDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.filter !== undefined) {\n defs.push('$filter: AppDecksFilterInput')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query AppDecks${defStr} {\n appDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n publicDecks(params: PublicDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.filter !== undefined) {\n defs.push('$filter: PublicDecksFilterInput')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query PublicDecks${defStr} {\n publicDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchDeckById(): { query: string } {\n return {\n query: `\n query FetchDeck($id: UUID!) {\n fetchDeck(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckById(): { query: string } {\n return {\n query: `\n query Deck($id: UUID!, $readState: DeckReadState!, $version: DeckPublishedVersionSelector) {\n deck(id: $id, readState: $readState, version: $version) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n myDeck(): { query: string } {\n return {\n query: `\n query MyDeck($id: UUID!) {\n myDeck(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDeckBySlug(): { query: string } {\n return {\n query: `\n query FetchDeckBySlug($publisherSlug: String!, $gameKey: String!, $slug: String!) {\n fetchDeckBySlug(publisherSlug: $publisherSlug, gameKey: $gameKey, slug: $slug) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckBySlug(): { query: string } {\n return {\n query: `\n query DeckBySlug($publisherSlug: String!, $gameKey: String!, $slug: String!) {\n deckBySlug(publisherSlug: $publisherSlug, gameKey: $gameKey, slug: $slug) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDeckByExternalRef(): { query: string } {\n return {\n query: `\n query FetchDeckByExternalRef($externalRef: String!) {\n fetchDeckByExternalRef(externalRef: $externalRef) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckByExternalRef(): { query: string } {\n return {\n query: `\n query DeckByExternalRef($externalRef: String!, $readState: DeckReadState!, $version: DeckPublishedVersionSelector) {\n deckByExternalRef(externalRef: $externalRef, readState: $readState, version: $version) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckVersion(): { query: string } {\n return {\n query: `\n query DeckVersion($id: UUID!) {\n deckVersion(id: $id) {\n ${DECK_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n deckVersions(params: ListDeckVersionsParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = ['deckId: $deckId']\n const defs: string[] = ['$deckId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query DeckVersions(${defs.join(', ')}) {\n deckVersions(${args.join(', ')}) {\n ${connectionFields(DECK_VERSION_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n deckDraftDiff(): { query: string } {\n return {\n query: `\n query DeckDraftDiff($id: UUID!) {\n deckDraftDiff(id: $id) {\n ${DECK_DIFF_FIELDS}\n }\n }\n `,\n }\n },\n\n deckVersionDiff(): { query: string } {\n return {\n query: `\n query DeckVersionDiff($fromVersionId: UUID!, $toVersionId: UUID!) {\n deckVersionDiff(fromVersionId: $fromVersionId, toVersionId: $toVersionId) {\n ${DECK_DIFF_FIELDS}\n }\n }\n `,\n }\n },\n\n deckHydrateEntries(): { query: string } {\n return {\n query: `\n query DeckHydrateEntries($input: DeckHydrateEntriesInput!) {\n deckHydrateEntries(input: $input) {\n ${DECK_HYDRATE_ENTRIES_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n deckExport(): { query: string } {\n return {\n query: `\n query DeckExport($id: UUID!, $format: DeckExportFormat!) {\n deckExport(id: $id, format: $format) {\n ${DECK_EXPORT_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n deckValidate(): { query: string } {\n return {\n query: `\n query DeckValidate($id: UUID!, $input: DeckValidateInput) {\n deckValidate(id: $id, input: $input) {\n ${DECK_VALIDATION_FIELDS}\n }\n }\n `,\n }\n },\n\n deckSectionDefinitions(params: DeckSectionDefinitionsParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.rulesetKey !== undefined) {\n defs.push('$rulesetKey: String')\n args.push('rulesetKey: $rulesetKey')\n variables['rulesetKey'] = params.rulesetKey\n }\n if (params.rulesetVersionId !== undefined) {\n defs.push('$rulesetVersionId: UUID')\n args.push('rulesetVersionId: $rulesetVersionId')\n variables['rulesetVersionId'] = params.rulesetVersionId\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query DeckSectionDefinitions${defStr} {\n deckSectionDefinitions${argStr} {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n deckCollaborators(): { query: string } {\n return {\n query: `\n query DeckCollaborators($deckId: UUID!) {\n deckCollaborators(deckId: $deckId) {\n ${DECK_COLLABORATOR_FIELDS}\n }\n }\n `,\n }\n },\n\n deckApiApplicationAccesses(): { query: string } {\n return {\n query: `\n query DeckApiApplicationAccesses($deckId: UUID!, $includeRevoked: Boolean) {\n deckApiApplicationAccesses(deckId: $deckId, includeRevoked: $includeRevoked) {\n ${DECK_API_APPLICATION_ACCESS_FIELDS}\n }\n }\n `,\n }\n },\n\n myDeckApiApplicationAccesses(): { query: string } {\n return {\n query: `\n query MyDeckApiApplicationAccesses($applicationId: UUID) {\n myDeckApiApplicationAccesses(applicationId: $applicationId) {\n ${DECK_API_APPLICATION_ACCESS_FIELDS}\n }\n }\n `,\n }\n },\n\n deckImportFormats(params: ListDeckImportFormatsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherId !== undefined) {\n defs.push('$publisherId: UUID')\n args.push('publisherId: $publisherId')\n variables['publisherId'] = params.publisherId\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query DeckImportFormats${defStr} {\n deckImportFormats${argStr} {\n ${connectionFields(DECK_IMPORT_FORMAT_DEFINITION_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n deckImportFormat(): { query: string } {\n return {\n query: `\n query DeckImportFormat($id: UUID, $gameId: UUID, $key: String) {\n deckImportFormat(id: $id, gameId: $gameId, key: $key) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n deckImportFormatTest(): { query: string } {\n return {\n query: `\n query DeckImportFormatTest($input: DeckImportFormatTestInput!) {\n deckImportFormatTest(input: $input) {\n ${DECK_IMPORT_FORMAT_TEST_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n createDeck(): { query: string } {\n return {\n query: `\n mutation DeckCreate($input: DeckCreateInput!) {\n deckCreate(input: $input) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n updateDeck(): { query: string } {\n return {\n query: `\n mutation DeckUpdate($id: UUID!, $input: DeckUpdateInput!) {\n deckUpdate(id: $id, input: $input) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deleteDeck(): { query: string } {\n return {\n query: `\n mutation DeckDelete($id: UUID!) {\n deckDelete(id: $id)\n }\n `,\n }\n },\n\n archiveDeck(): { query: string } {\n return {\n query: `\n mutation DeckArchive($id: UUID!) {\n deckArchive(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n restoreDeck(): { query: string } {\n return {\n query: `\n mutation DeckRestore($id: UUID!) {\n deckRestore(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n unpublishDeck(): { query: string } {\n return {\n query: `\n mutation DeckUnpublish($id: UUID!) {\n deckUnpublish(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n addDeckEntry(): { query: string } {\n return {\n query: `\n mutation DeckEntryAdd($input: DeckEntryAddInput!) {\n deckEntryAdd(input: $input) {\n ${DECK_ENTRY_MUTATION_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n updateDeckEntry(): { query: string } {\n return {\n query: `\n mutation DeckEntryUpdate($id: UUID!, $input: DeckEntryUpdateInput!) {\n deckEntryUpdate(id: $id, input: $input) {\n ${DECK_ENTRY_MUTATION_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n removeDeckEntry(): { query: string } {\n return {\n query: `\n mutation DeckEntryRemove($id: UUID!, $expectedDraftRevision: Int!) {\n deckEntryRemove(id: $id, expectedDraftRevision: $expectedDraftRevision) {\n ${DECK_ENTRY_MUTATION_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n reorderDeckEntries(): { query: string } {\n return {\n query: `\n mutation DeckEntryReorder($deckId: UUID!, $input: DeckEntryReorderInput!) {\n deckEntryReorder(deckId: $deckId, input: $input) {\n ${DECK_ENTRY_REORDER_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n replaceDeckEntries(): { query: string } {\n return {\n query: `\n mutation DeckEntriesReplace($deckId: UUID!, $input: DeckEntriesReplaceInput!) {\n deckEntriesReplace(deckId: $deckId, input: $input) {\n ${DECK_ENTRIES_REPLACE_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n importDeck(): { query: string } {\n return {\n query: `\n mutation DeckImport($input: DeckImportInput!) {\n deckImport(input: $input) {\n ${DECK_IMPORT_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n createDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatCreate($input: DeckImportFormatCreateInput!) {\n deckImportFormatCreate(input: $input) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n updateDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatUpdate($id: UUID!, $input: DeckImportFormatUpdateInput!) {\n deckImportFormatUpdate(id: $id, input: $input) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n archiveDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatArchive($id: UUID!) {\n deckImportFormatArchive(id: $id) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n unarchiveDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatUnarchive($id: UUID!) {\n deckImportFormatUnarchive(id: $id) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n upsertDeckByExternalRef(): { query: string } {\n return {\n query: `\n mutation DeckUpsertByExternalRef($input: DeckUpsertByExternalRefInput!) {\n deckUpsertByExternalRef(input: $input) {\n deck {\n ${DECK_FIELDS}\n }\n created\n idempotentReplay\n }\n }\n `,\n }\n },\n\n claimDeck(): { query: string } {\n return {\n query: `\n mutation DeckClaim($id: UUID!, $input: DeckClaimInput!) {\n deckClaim(id: $id, input: $input) {\n ${DECK_OWNERSHIP_TRANSFER_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n transferDeckOwnership(): { query: string } {\n return {\n query: `\n mutation DeckTransferOwnership($id: UUID!, $input: DeckTransferOwnershipInput!) {\n deckTransferOwnership(id: $id, input: $input) {\n ${DECK_OWNERSHIP_TRANSFER_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n copyDeck(): { query: string } {\n return {\n query: `\n mutation DeckCopy($id: UUID!, $input: DeckCopyInput!) {\n deckCopy(id: $id, input: $input) {\n ${DECK_COPY_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n publishDeck(): { query: string } {\n return {\n query: `\n mutation DeckPublish($id: UUID!, $input: DeckPublishInput!) {\n deckPublish(id: $id, input: $input) {\n ${DECK_PUBLISH_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n removeInvalidDeckEntries(): { query: string } {\n return {\n query: `\n mutation DeckRemoveInvalidEntries($id: UUID!, $input: DeckRemoveInvalidEntriesInput!) {\n deckRemoveInvalidEntries(id: $id, input: $input) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n upsertDeckCollaborator(): { query: string } {\n return {\n query: `\n mutation DeckCollaboratorUpsert($deckId: UUID!, $accountId: UUID!, $role: DeckCollaboratorRole!) {\n deckCollaboratorUpsert(deckId: $deckId, accountId: $accountId, role: $role) {\n ${DECK_COLLABORATOR_FIELDS}\n }\n }\n `,\n }\n },\n\n removeDeckCollaborator(): { query: string } {\n return {\n query: `\n mutation DeckCollaboratorRemove($deckId: UUID!, $accountId: UUID!) {\n deckCollaboratorRemove(deckId: $deckId, accountId: $accountId)\n }\n `,\n }\n },\n\n createDeckTokenIssuer(): { query: string } {\n return {\n query: `\n mutation DeckTokenIssuerCreate($input: DeckTokenIssuerCreateInput!) {\n deckTokenIssuerCreate(input: $input) {\n ${DECK_TOKEN_ISSUER_FIELDS}\n }\n }\n `,\n }\n },\n\n revokeDeckTokenIssuer(): { query: string } {\n return {\n query: `\n mutation DeckTokenIssuerRevoke($id: UUID!) {\n deckTokenIssuerRevoke(id: $id)\n }\n `,\n }\n },\n\n revokeDeckTokenIssuerSigningKey(): { query: string } {\n return {\n query: `\n mutation DeckTokenIssuerSigningKeyRevoke($id: UUID!) {\n deckTokenIssuerSigningKeyRevoke(id: $id) {\n ${DECK_TOKEN_ISSUER_FIELDS}\n }\n }\n `,\n }\n },\n\n exchangeDeckToken(): { query: string } {\n return {\n query: `\n mutation DeckTokenExchange($input: DeckTokenExchangeInput!) {\n deckTokenExchange(input: $input) {\n token\n deckToken {\n ${DECK_TOKEN_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n revokeDeckToken(): { query: string } {\n return {\n query: `\n mutation DeckTokenRevoke($id: UUID!) {\n deckTokenRevoke(id: $id)\n }\n `,\n }\n },\n\n grantDeckApiApplicationAccess(): { query: string } {\n return {\n query: `\n mutation DeckApiApplicationAccessGrant($input: DeckAPIApplicationAccessGrantInput!) {\n deckApiApplicationAccessGrant(input: $input) {\n ${DECK_API_APPLICATION_ACCESS_FIELDS}\n }\n }\n `,\n }\n },\n\n revokeDeckApiApplicationAccess(): { query: string } {\n return {\n query: `\n mutation DeckApiApplicationAccessRevoke($deckId: UUID!, $apiApplicationId: UUID!) {\n deckApiApplicationAccessRevoke(deckId: $deckId, apiApplicationId: $apiApplicationId)\n }\n `,\n }\n },\n\n rulesetValidationRulesVariables(\n gameId: string,\n rulesetKey: string,\n rulesetVersionId?: string\n ): Record<string, unknown> {\n return rulesetVersionId === undefined\n ? { gameId, rulesetKey }\n : { gameId, rulesetKey, rulesetVersionId }\n },\n\n rulesetVersionDraftImportPreviewVariables(\n rulesetId: string,\n input: RulesetVersionDraftImportFromDatasetRecordInput\n ): Record<string, unknown> {\n return { rulesetId, input }\n },\n\n rulesetCreateVariables(input: RulesetCreateInput): Record<string, unknown> {\n return { input }\n },\n\n rulesetUpdateVariables(id: string, input: RulesetUpdateInput): Record<string, unknown> {\n return { id, input }\n },\n\n rulesetVersionDraftCreateVariables(\n rulesetId: string,\n input: RulesetVersionDraftCreateInput\n ): Record<string, unknown> {\n return { rulesetId, input }\n },\n\n rulesetVersionDraftImportFromDatasetRecordVariables(\n rulesetId: string,\n input: RulesetVersionDraftImportFromDatasetRecordInput\n ): Record<string, unknown> {\n return { rulesetId, input }\n },\n\n rulesetVersionDraftUpdateVariables(\n id: string,\n input: RulesetVersionDraftUpdateInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n rulesetVersionPublishVariables(\n id: string,\n input?: RulesetVersionPublishInput\n ): Record<string, unknown> {\n return input === undefined ? { id } : { id, input }\n },\n\n deckCreateVariables(input: DeckCreateInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckUpdateVariables(id: string, input: DeckUpdateInput): Record<string, unknown> {\n return { id, input: normalizeDeckJsonInput(input) }\n },\n\n deckEntryAddVariables(input: DeckEntryAddInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckEntryUpdateVariables(id: string, input: DeckEntryUpdateInput): Record<string, unknown> {\n return { id, input: normalizeDeckJsonInput(input) }\n },\n\n deckEntryRemoveVariables(id: string, expectedDraftRevision: number): Record<string, unknown> {\n return { id, expectedDraftRevision }\n },\n\n deckEntryReorderVariables(deckId: string, input: DeckEntryReorderInput): Record<string, unknown> {\n return { deckId, input }\n },\n\n deckEntriesReplaceVariables(\n deckId: string,\n input: DeckEntriesReplaceInput\n ): Record<string, unknown> {\n return { deckId, input: normalizeDeckJsonInput(input) }\n },\n\n deckImportVariables(input: DeckImportInput): Record<string, unknown> {\n return { input }\n },\n\n deckImportFormatCreateVariables(input: DeckImportFormatCreateInput): Record<string, unknown> {\n return { input }\n },\n\n deckImportFormatUpdateVariables(\n id: string,\n input: DeckImportFormatUpdateInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n deckImportFormatTestVariables(input: DeckImportFormatTestInput): Record<string, unknown> {\n return { input }\n },\n\n deckUpsertByExternalRefVariables(input: DeckUpsertByExternalRefInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckReadVariables(\n id: string,\n readState: DeckReadState,\n version?: DeckPublishedVersionSelector\n ): Record<string, unknown> {\n return { id, readState, version }\n },\n\n deckExternalRefReadVariables(\n externalRef: string,\n readState: DeckReadState,\n version?: DeckPublishedVersionSelector\n ): Record<string, unknown> {\n return { externalRef, readState, version }\n },\n\n deckClaimVariables(id: string, input: DeckClaimInput): Record<string, unknown> {\n return { id, input }\n },\n\n deckTransferOwnershipVariables(\n id: string,\n input: DeckTransferOwnershipInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n deckCopyVariables(id: string, input: DeckCopyInput): Record<string, unknown> {\n return { id, input }\n },\n\n deckPublishVariables(id: string, input: DeckPublishInput): Record<string, unknown> {\n return { id, input }\n },\n\n deckValidateVariables(id: string, input?: DeckValidateInput): Record<string, unknown> {\n return input === undefined ? { id } : { id, input }\n },\n\n deckRemoveInvalidEntriesVariables(\n id: string,\n input: DeckRemoveInvalidEntriesInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n deckHydrateEntriesVariables(input: DeckHydrateEntriesInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckExportVariables(id: string, format: DeckExportFormat): Record<string, unknown> {\n return { id, format }\n },\n\n deckVersionDiffVariables(fromVersionId: string, toVersionId: string): Record<string, unknown> {\n return { fromVersionId, toVersionId }\n },\n\n deckCollaboratorVariables(\n deckId: string,\n accountId: string,\n role?: DeckCollaboratorRole\n ): Record<string, unknown> {\n return role === undefined ? { deckId, accountId } : { deckId, accountId, role }\n },\n\n deckTokenIssuerCreateVariables(input: DeckTokenIssuerCreateInput): Record<string, unknown> {\n return { input }\n },\n\n deckTokenExchangeVariables(input: DeckTokenExchangeInput): Record<string, unknown> {\n return { input }\n },\n\n deckApiApplicationAccessesVariables(\n deckId: string,\n includeRevoked?: boolean\n ): Record<string, unknown> {\n return includeRevoked === undefined ? { deckId } : { deckId, includeRevoked }\n },\n\n myDeckApiApplicationAccessesVariables(applicationId?: string): Record<string, unknown> {\n return applicationId === undefined ? {} : { applicationId }\n },\n\n deckApiApplicationAccessGrantVariables(\n input: DeckAPIApplicationAccessGrantInput\n ): Record<string, unknown> {\n return { input }\n },\n\n deckApiApplicationAccessRevokeVariables(\n deckId: string,\n apiApplicationId: string\n ): Record<string, unknown> {\n return { deckId, apiApplicationId }\n },\n\n gameCreateVariables(input: GameCreateInput): Record<string, unknown> {\n return { input }\n },\n\n gameUpdateVariables(id: string, input: GameUpdateInput): Record<string, unknown> {\n return { id, input }\n },\n\n datasetImportPreviewVariables(input: DatasetImportPreviewInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportValidateVariables(input: DatasetImportValidateInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportFromFileVariables(input: DatasetImportFromFileInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportFromPayloadVariables(input: DatasetImportFromPayloadInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportFromUrlVariables(input: DatasetImportFromUrlInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportPreviewVariables(input: GameImportPreviewInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportFromFileVariables(input: GameImportFromFileInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportFromPayloadVariables(input: GameImportFromPayloadInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportFromUrlVariables(input: GameImportFromUrlInput): Record<string, unknown> {\n return { input }\n },\n\n datasetRecordsUpsertVariables(input: DatasetRecordsUpsertInput): Record<string, unknown> {\n return { input }\n },\n\n datasetRecordsDeleteVariables(input: DatasetRecordsDeleteInput): Record<string, unknown> {\n return { input }\n },\n\n fileUploadRequestVariables(input: FileUploadInput): Record<string, unknown> {\n return { input }\n },\n\n createScanUploadSessionVariables(input: CreateScanUploadSessionInput): Record<string, unknown> {\n return { input }\n },\n\n confirmScanUploadVariables(input: ConfirmScanUploadInput): Record<string, unknown> {\n return { input }\n },\n\n createScanJobVariables(input: CreateScanJobInput): Record<string, unknown> {\n return { input }\n },\n\n submitScanFeedbackVariables(input: SubmitScanFeedbackInput): Record<string, unknown> {\n return { input }\n },\n\n scanMetricsVariables(input: ScanMetricsInput): Record<string, unknown> {\n return { input }\n },\n\n resolveScanTemplateVariables(input: ResolveScanTemplateInput): Record<string, unknown> {\n return { input }\n },\n\n scanTemplatesVariables(input: ScanTemplatesInput): Record<string, unknown> {\n return { input }\n },\n\n createScanTemplateVariables(input: SaveScanTemplateInput): Record<string, unknown> {\n return { input }\n },\n\n updateScanTemplateVariables(id: string, input: SaveScanTemplateInput): Record<string, unknown> {\n return { id, input }\n },\n\n previewScanTemplateVariables(input: PreviewScanTemplateInput): Record<string, unknown> {\n return { input }\n },\n\n gameScanRegionsVariables(\n publisherSlug: string,\n gameKey: string,\n includeInactive?: boolean\n ): Record<string, unknown> {\n return includeInactive === undefined\n ? { publisherSlug, gameKey }\n : { publisherSlug, gameKey, includeInactive }\n },\n\n datasetExportVariables(input: DatasetExportInput): Record<string, unknown> {\n return { input }\n },\n\n // API Key Info\n fetchMe(): { query: string } {\n return {\n query: `\n query FetchMe {\n fetchMe {\n application {\n id\n name\n description\n environment\n apiKeyPrefix\n allowedOrigins\n allowedIps\n createdAt\n updatedAt\n lastUsedAt\n }\n account {\n id\n displayName\n createdAt\n }\n }\n }\n `,\n }\n },\n}\n","/**\n * Collection class for paginated results with async iteration support\n */\n\nimport type { Connection, PageInfo, Edge } from './types.js'\n\nexport type NextPageLoader<T> = (cursor: string) => Promise<Collection<T>>\n\n/**\n * Represents a paginated collection of results from the API.\n * Implements AsyncIterable for easy iteration through all pages.\n */\nexport class Collection<T> implements AsyncIterable<T> {\n /** Total count of matching records across all pages */\n readonly totalCount: number\n\n /** Pagination info */\n readonly pageInfo: PageInfo\n\n /** Items in the current page */\n readonly items: T[]\n\n /** Function to load the next page */\n private nextPageLoader?: NextPageLoader<T>\n\n constructor(\n data: Connection<T>,\n options: {\n nextPageLoader?: NextPageLoader<T>\n itemTransformer?: (node: T) => T\n } = {}\n ) {\n this.totalCount = data.totalCount\n this.pageInfo = data.pageInfo\n this.items = data.edges.map((edge: Edge<T>) =>\n options.itemTransformer ? options.itemTransformer(edge.node) : edge.node\n )\n this.nextPageLoader = options.nextPageLoader\n }\n\n /** Check if there are more pages */\n get hasNextPage(): boolean {\n return this.pageInfo.hasNextPage\n }\n\n /** Check if there are previous pages */\n get hasPreviousPage(): boolean {\n return this.pageInfo.hasPreviousPage\n }\n\n /** Get the cursor for the next page */\n get endCursor(): string | null {\n return this.pageInfo.endCursor\n }\n\n /** Get the cursor for the previous page */\n get startCursor(): string | null {\n return this.pageInfo.startCursor\n }\n\n /** Number of items in the current page */\n get length(): number {\n return this.items.length\n }\n\n /** Check if the current page is empty */\n get isEmpty(): boolean {\n return this.items.length === 0\n }\n\n /** Get the first item */\n get first(): T | undefined {\n return this.items[0]\n }\n\n /** Get the last item */\n get last(): T | undefined {\n return this.items[this.items.length - 1]\n }\n\n /**\n * Fetch the next page of results\n *\n * @returns The next page collection, or null if no more pages\n * @throws Error if no next page loader is configured\n */\n async nextPage(): Promise<Collection<T> | null> {\n if (!this.hasNextPage) {\n return null\n }\n\n if (!this.nextPageLoader) {\n throw new Error('No next page loader configured')\n }\n\n if (!this.endCursor) {\n return null\n }\n\n return this.nextPageLoader(this.endCursor)\n }\n\n /**\n * Async iterator that automatically paginates through all results\n *\n * @example\n * for await (const record of collection) {\n * console.log(record.name)\n * }\n *\n * @example\n * const allRecords = []\n * for await (const record of collection) {\n * allRecords.push(record)\n * }\n */\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n let current: Collection<T> | null = this\n\n while (current) {\n for (const item of current.items) {\n yield item\n }\n\n if (!current.hasNextPage) {\n break\n }\n\n current = await current.nextPage()\n }\n }\n\n /**\n * Iterate through all results, calling a callback for each item\n * Similar to Array.forEach but async and auto-paginating\n *\n * @example\n * await collection.forEach(async (record) => {\n * await processRecord(record)\n * })\n */\n async forEach(callback: (item: T, index: number) => void | Promise<void>): Promise<void> {\n let index = 0\n for await (const item of this) {\n await callback(item, index++)\n }\n }\n\n /**\n * Map over all results, returning a new array\n * Auto-paginates through all pages\n *\n * @example\n * const names = await collection.map(record => record.name)\n */\n async map<U>(callback: (item: T, index: number) => U | Promise<U>): Promise<U[]> {\n const results: U[] = []\n let index = 0\n for await (const item of this) {\n results.push(await callback(item, index++))\n }\n return results\n }\n\n /**\n * Filter results, returning items that match the predicate\n * Auto-paginates through all pages\n *\n * @example\n * const rareCards = await collection.filter(card => card.rarity === 'rare')\n */\n async filter(predicate: (item: T, index: number) => boolean | Promise<boolean>): Promise<T[]> {\n const results: T[] = []\n let index = 0\n for await (const item of this) {\n if (await predicate(item, index++)) {\n results.push(item)\n }\n }\n return results\n }\n\n /**\n * Find the first item matching a predicate\n * Stops iterating once found\n *\n * @example\n * const pikachu = await collection.find(card => card.name === 'Pikachu')\n */\n async find(\n predicate: (item: T, index: number) => boolean | Promise<boolean>\n ): Promise<T | undefined> {\n let index = 0\n for await (const item of this) {\n if (await predicate(item, index++)) {\n return item\n }\n }\n return undefined\n }\n\n /**\n * Take the first n items\n * Stops fetching pages once n items are collected\n *\n * @example\n * const first100 = await collection.take(100)\n */\n async take(n: number): Promise<T[]> {\n const results: T[] = []\n for await (const item of this) {\n if (results.length >= n) {\n break\n }\n results.push(item)\n }\n return results\n }\n\n /**\n * Collect all items into an array\n * Auto-paginates through all pages\n *\n * @example\n * const allRecords = await collection.toArray()\n */\n async toArray(): Promise<T[]> {\n const results: T[] = []\n for await (const item of this) {\n results.push(item)\n }\n return results\n }\n\n /**\n * Iterate in batches (similar to Rails find_in_batches)\n *\n * @example\n * for await (const batch of collection.batches()) {\n * await processBatch(batch)\n * }\n */\n async *batches(): AsyncGenerator<T[]> {\n let current: Collection<T> | null = this\n\n while (current) {\n if (current.items.length > 0) {\n yield current.items\n }\n\n if (!current.hasNextPage) {\n break\n }\n\n current = await current.nextPage()\n }\n }\n\n /**\n * Iterate one item at a time with batched fetching (similar to Rails find_each)\n *\n * @example\n * for await (const item of collection.each()) {\n * await processItem(item)\n * }\n */\n each(): AsyncIterable<T> {\n return this\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/index.ts","../src/errors.ts","../src/operators.ts","../src/filter-builder.ts","../src/query-builder.ts","../src/collection.ts"],"sourcesContent":["/**\n * @carddb/core - Core types and utilities for CardDB JavaScript clients\n */\n\n// Types\nexport type {\n // Configuration\n CardDBConfig,\n LogLevel,\n ResourceType,\n Logger,\n Cache,\n // Resources\n PublisherStatus,\n Publisher,\n PublisherRef,\n FileStatus,\n FileUploadInput,\n UploadPurpose,\n File,\n PresignedUpload,\n Game,\n GameRef,\n GameVisibility,\n GameCreateInput,\n GameUpdateInput,\n ScanJobStatus,\n CreateScanJobInput,\n CreateScanUploadSessionInput,\n ConfirmScanUploadInput,\n ScanJobPayload,\n ScanJob,\n ScanBestMatch,\n ScanCandidate,\n ScanJobError,\n ScanWebhookState,\n ScanJobMetrics,\n ScanStageMetrics,\n SubmitScanFeedbackInput,\n ScanFeedbackPayload,\n ScanMetricsInput,\n ScanMetrics,\n ScanFeedbackMetrics,\n ScanFeatureVersionMetrics,\n ResolveScanTemplateInput,\n ScanTemplatesInput,\n SaveScanTemplateInput,\n PreviewScanTemplateInput,\n ScanTemplateRegionInput,\n ScanTemplateResolution,\n ScanTemplateList,\n ScanTemplatePayload,\n ScanTemplatePreview,\n ScanTemplate,\n ScanTemplateRegion,\n ScanTemplateRegionPreview,\n ScanTemplateWarning,\n GameScanRegion,\n Dataset,\n DatasetRef,\n DatasetPurpose,\n DatasetVisibility,\n DatasetRecord,\n ImportFormat,\n ImportMode,\n OnConflict,\n ImportJobStatus,\n ImportLogLevel,\n BulkInsertMode,\n ImportOptions,\n CsvOptions,\n FieldMappingOverrideInput,\n ImportJobAssetInput,\n ImportJobAsset,\n ImportValidationError,\n BulkRecordError,\n ImportStats,\n BulkImportResult,\n BulkCreateResult,\n ImportJob,\n ImportJobConnection,\n ImportJobLog,\n ImportJobLogConnection,\n DatasetImportFromFileInput,\n DatasetImportFromPayloadInput,\n DatasetImportFromUrlInput,\n DatasetImportRunInput,\n DatasetImportPreviewInput,\n DatasetImportValidateInput,\n FieldMappingStatus,\n InferredChildField,\n FieldMapping,\n ImportWarningSeverity,\n ImportWarning,\n DatasetImportPreviewResult,\n GameImportPreviewInput,\n DatasetImportPreview,\n GameImportPreview,\n GameImportFromFileInput,\n GameImportFromPayloadInput,\n GameImportFromUrlInput,\n GameImportRunInput,\n GameImportDatasetStatus,\n GameImportJob,\n GameImportJobConnection,\n DatasetRecordsUpsertInput,\n DatasetRecordsUpsertPayload,\n DatasetRecordDeleteJobStatus,\n DatasetRecordDeleteTargetType,\n DatasetRecordDeleteResultStatus,\n DatasetRecordsDeleteInput,\n DatasetRecordDeleteJobResult,\n DatasetRecordDeleteJob,\n DatasetRecordDeleteJobConnection,\n ExportFormat,\n ExportJobStatus,\n DatasetExportInput,\n ExportJob,\n ExportJobConnection,\n TCGPlayerPricing,\n TCGPlayerPrice,\n Deck,\n DeckEntry,\n DeckVisibility,\n DeckOwnerType,\n DeckEnvironment,\n DeckAccessMode,\n DeckDiscoverability,\n DeckState,\n DeckReadState,\n DeckRepresentation,\n DeckTokenScope,\n DeckTokenSigningAlgorithm,\n DeckImportFormat,\n DeckExportFormat,\n DeckCollaboratorRole,\n DeckAppAccessRetention,\n DeckAPIApplicationAccessRole,\n DeckAPIApplicationAccessGrantSource,\n DeckValidationSeverity,\n ViewerDecksFilterInput,\n AppDecksFilterInput,\n PublicDecksFilterInput,\n DeckVersion,\n DeckVersionConnection,\n DeckCollaborator,\n DeckOwnershipTransferPayload,\n DeckCopyPayload,\n DeckAccessApplication,\n DeckAPIApplicationAccess,\n DeckPublishedVersionSelector,\n DeckTokenIssuer,\n DeckToken,\n DeckTokenExchangePayload,\n DeckEntryInput,\n DeckCreateInput,\n DeckUpsertByExternalRefInput,\n DeckUpsertByExternalRefPayload,\n DeckUpdateInput,\n DeckPublishInput,\n DeckEntryAddInput,\n DeckEntryUpdateInput,\n DeckEntryReorderItemInput,\n DeckEntryReorderInput,\n DeckEntriesReplaceInput,\n DeckEntryMutationPayload,\n DeckEntryReorderPayload,\n DeckEntriesReplacePayload,\n DeckPublishPayload,\n DeckValidateInput,\n DeckRemoveInvalidEntriesInput,\n DeckClaimInput,\n DeckTransferOwnershipInput,\n DeckCopyInput,\n DeckTokenIssuerCreateInput,\n DeckTokenIssuerSigningKeyInput,\n DeckTokenExchangeInput,\n DeckValidatedAgainst,\n DeckValidationAffectedEntry,\n DeckValidationIssue,\n DeckValidation,\n DeckDiff,\n DeckSectionDefinition,\n RulesetVersionStatus,\n Ruleset,\n RulesetVersion,\n RulesetConnection,\n RulesetVersionConnection,\n DeckValidationRules,\n RulesetValidationImpact,\n RulesetValidationImpactDeck,\n RulesetVersionDraftImportPreview,\n RulesetCreateInput,\n RulesetUpdateInput,\n RulesetVersionDraftCreateInput,\n RulesetVersionDraftImportFromDatasetRecordInput,\n RulesetVersionDraftUpdateInput,\n RulesetVersionPublishInput,\n DeckAPIApplicationAccessGrantInput,\n DeckImportInput,\n DeckImportCandidateSelectionInput,\n DeckImportEntry,\n DeckImportIssue,\n DeckImportUnmatchedEntry,\n DeckImportCandidate,\n DeckImportAmbiguousEntry,\n DeckImportFormatDefinition,\n DeckImportFormatDefinitionConnection,\n DeckImportFormatDetection,\n DeckImportFormatTestPayload,\n DeckImportFormatCreateInput,\n DeckImportFormatUpdateInput,\n DeckImportFormatTestInput,\n DeckImportPayload,\n DeckHydrateEntriesInput,\n DeckHydrateEntriesPayload,\n DeckExportPayload,\n HydrateDeckEntryInput,\n HydratedDeckEntry,\n ResolvedLink,\n FileInfo,\n DatasetFilterValue,\n DatasetFilterValueEdge,\n DatasetFilterValueConnection,\n // Schema\n DatasetSchema,\n FieldInfo,\n FieldType,\n ObjectField,\n LinkFieldInfo,\n // API Key\n APIKeyInfo,\n APIApplication,\n APIAccount,\n // Pagination\n PageInfo,\n Edge,\n Connection,\n // Filters\n FilterOperatorValue,\n FilterValue,\n FilterCondition,\n FilterInput,\n FilterBuilderInterface,\n // Rate Limit\n RateLimitInfo,\n} from './types.js'\n\n// Errors\nexport {\n CardDBError,\n AuthenticationError,\n RateLimitError,\n NotFoundError,\n ValidationError,\n RestrictedError,\n GraphQLError,\n ConnectionError,\n TimeoutError,\n ServerError,\n LinkResolutionError,\n} from './errors.js'\n\nexport type { GraphQLErrorInfo, LinkResolutionFailure } from './errors.js'\n\n// Filter Operators\nexport {\n eq,\n neq,\n gt,\n gte,\n lt,\n lte,\n within,\n notWithin,\n contains,\n like,\n ilike,\n isNull,\n isNotNull,\n} from './operators.js'\n\n// Filter Builder\nexport { FilterBuilder, resolveFilter } from './filter-builder.js'\n\n// Query Builder\nexport { QueryBuilder } from './query-builder.js'\n\nexport type {\n SearchPublishersParams,\n SearchGamesParams,\n SearchDatasetsParams,\n SearchRecordsParams,\n ListDecksParams,\n ListDeckVersionsParams,\n DeckSectionDefinitionsParams,\n ViewerDecksParams,\n AppDecksParams,\n PublicDecksParams,\n ListDeckImportFormatsParams,\n ListRulesetsParams,\n ListPublicRulesetsParams,\n RulesetLookupParams,\n ListRulesetVersionsParams,\n RulesetValidationRulesParams,\n RulesetValidationImpactParams,\n} from './query-builder.js'\n\n// Collection\nexport { Collection } from './collection.js'\n\nexport type { NextPageLoader } from './collection.js'\n","/**\n * Error classes for CardDB clients\n */\n\nexport interface GraphQLErrorInfo {\n message: string\n path?: string[]\n extensions?: Record<string, unknown>\n}\n\n/**\n * Base error class for all CardDB errors\n */\nexport class CardDBError extends Error {\n /** The full response body if available */\n readonly response?: unknown\n\n constructor(message: string, response?: unknown) {\n super(message)\n this.name = 'CardDBError'\n this.response = response\n // Maintains proper stack trace for where error was thrown (V8 only)\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, CardDBError)\n }\n }\n}\n\n/**\n * Raised when authentication fails (invalid API key or token)\n */\nexport class AuthenticationError extends CardDBError {\n constructor(message = 'Invalid or missing API key', response?: unknown) {\n super(message, response)\n this.name = 'AuthenticationError'\n }\n}\n\n/**\n * Raised when rate limits are exceeded\n */\nexport class RateLimitError extends CardDBError {\n /** Seconds until rate limit resets */\n readonly retryAfter: number | null\n\n /** Maximum requests allowed */\n readonly limit: number | null\n\n /** Remaining requests in window */\n readonly remaining: number | null\n\n /** Time when the rate limit resets */\n readonly resetAt: Date | null\n\n constructor(\n message = 'Rate limit exceeded',\n options: {\n retryAfter?: number | null\n limit?: number | null\n remaining?: number | null\n resetAt?: Date | null\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'RateLimitError'\n this.retryAfter = options.retryAfter ?? null\n this.limit = options.limit ?? null\n this.remaining = options.remaining ?? null\n this.resetAt = options.resetAt ?? null\n }\n}\n\n/**\n * Raised when a requested resource is not found\n */\nexport class NotFoundError extends CardDBError {\n constructor(message = 'Resource not found', response?: unknown) {\n super(message, response)\n this.name = 'NotFoundError'\n }\n}\n\n/**\n * Raised when request validation fails\n */\nexport class ValidationError extends CardDBError {\n /** List of validation errors */\n readonly errors: GraphQLErrorInfo[]\n\n constructor(\n message = 'Validation error',\n options: {\n errors?: GraphQLErrorInfo[]\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'ValidationError'\n this.errors = options.errors ?? []\n }\n}\n\n/**\n * Raised when accessing a restricted publisher or game\n */\nexport class RestrictedError extends CardDBError {\n constructor(message: string, response?: unknown) {\n super(message, response)\n this.name = 'RestrictedError'\n }\n}\n\n/**\n * Raised for GraphQL-level errors\n */\nexport class GraphQLError extends CardDBError {\n /** List of GraphQL errors */\n readonly errors: GraphQLErrorInfo[]\n\n constructor(\n message = 'GraphQL error',\n options: {\n errors?: GraphQLErrorInfo[]\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'GraphQLError'\n this.errors = options.errors ?? []\n }\n}\n\n/**\n * Raised for network/connection issues\n */\nexport class ConnectionError extends CardDBError {\n constructor(message = 'Connection error', response?: unknown) {\n super(message, response)\n this.name = 'ConnectionError'\n }\n}\n\n/**\n * Raised when request times out\n */\nexport class TimeoutError extends ConnectionError {\n constructor(message = 'Request timed out', response?: unknown) {\n super(message, response)\n this.name = 'TimeoutError'\n }\n}\n\n/**\n * Raised when the server returns an unexpected response\n */\nexport class ServerError extends CardDBError {\n /** HTTP status code */\n readonly status: number | null\n\n constructor(\n message = 'Server error',\n options: {\n status?: number | null\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'ServerError'\n this.status = options.status ?? null\n }\n}\n\n/**\n * Information about a failed link resolution\n */\nexport interface LinkResolutionFailure {\n /** The link field key that failed */\n field: string\n /** The value that couldn't be resolved */\n value: string | null\n /** The reason for the failure */\n reason: 'not_found' | 'invalid' | 'permission_denied' | 'unknown'\n /** Optional error message from the server */\n message?: string\n}\n\n/**\n * Raised when link resolution fails for one or more links\n *\n * This is a warning-level error that contains the partial results along with\n * information about which links failed to resolve. The application can choose\n * to handle this gracefully or treat it as a fatal error.\n */\nexport class LinkResolutionError extends CardDBError {\n /** List of link resolution failures */\n readonly failures: LinkResolutionFailure[]\n\n /** Partial results that were successfully resolved */\n readonly partialResults?: unknown\n\n constructor(\n message = 'Some links could not be resolved',\n options: {\n failures?: LinkResolutionFailure[]\n partialResults?: unknown\n response?: unknown\n } = {}\n ) {\n super(message, options.response)\n this.name = 'LinkResolutionError'\n this.failures = options.failures ?? []\n this.partialResults = options.partialResults\n }\n\n /**\n * Get failures for a specific field\n */\n getFailuresForField(field: string): LinkResolutionFailure[] {\n return this.failures.filter((f) => f.field === field)\n }\n\n /**\n * Check if a specific field had resolution failures\n */\n hasFailuresForField(field: string): boolean {\n return this.failures.some((f) => f.field === field)\n }\n}\n","/**\n * Filter operator helper functions\n *\n * These functions create operator objects that can be used in filters.\n *\n * @example\n * // With filter builder\n * filter: (f) => f\n * .where('hp', gte(100))\n * .where('types', contains('Pokemon'))\n *\n * @example\n * // With object literal\n * filter: {\n * hp: gte(100),\n * types: contains('Pokemon')\n * }\n */\n\nimport type { FilterOperatorValue } from './types.js'\n\n/** Equality operator */\nexport function eq(value: unknown): FilterOperatorValue {\n return { eq: value }\n}\n\n/** Not equal operator */\nexport function neq(value: unknown): FilterOperatorValue {\n return { neq: value }\n}\n\n/** Greater than operator */\nexport function gt(value: number): FilterOperatorValue {\n return { gt: value }\n}\n\n/** Greater than or equal operator */\nexport function gte(value: number): FilterOperatorValue {\n return { gte: value }\n}\n\n/** Less than operator */\nexport function lt(value: number): FilterOperatorValue {\n return { lt: value }\n}\n\n/** Less than or equal operator */\nexport function lte(value: number): FilterOperatorValue {\n return { lte: value }\n}\n\n/** Value in array operator */\nexport function within(values: unknown[]): FilterOperatorValue {\n return { in: values }\n}\n\n/** Value not in array operator */\nexport function notWithin(values: unknown[]): FilterOperatorValue {\n return { nin: values }\n}\n\n/** Array contains value operator */\nexport function contains(value: unknown): FilterOperatorValue {\n return { contains: value }\n}\n\n/** Case-sensitive pattern match (SQL LIKE) */\nexport function like(pattern: string): FilterOperatorValue {\n return { like: pattern }\n}\n\n/** Case-insensitive pattern match (SQL ILIKE) */\nexport function ilike(pattern: string): FilterOperatorValue {\n return { ilike: pattern }\n}\n\n/** Is null operator */\nexport function isNull(): FilterOperatorValue {\n return { is_null: true }\n}\n\n/** Is not null operator */\nexport function isNotNull(): FilterOperatorValue {\n return { is_null: false }\n}\n","/**\n * Filter builder for constructing complex filter queries\n *\n * Supports both builder pattern and object literal styles:\n *\n * @example Builder pattern\n * filter: (f) => f\n * .where('hp', gte(100))\n * .where('types', contains('Pokemon'))\n * .any(or => or\n * .where('rarity', 'rare')\n * .where('rarity', 'mythic')\n * )\n *\n * @example Object literal\n * filter: {\n * hp: { gte: 100 },\n * types: { contains: 'Pokemon' },\n * $or: [\n * { rarity: 'rare' },\n * { rarity: 'mythic' }\n * ]\n * }\n */\n\nimport type { FilterCondition, FilterValue, FilterInput } from './types.js'\n\nexport class FilterBuilder {\n private conditions: FilterCondition[] = []\n private orGroups: FilterCondition[] = []\n\n /**\n * Add a condition to the filter\n *\n * @example Single field\n * .where('name', 'Pikachu')\n * .where('hp', gte(100))\n *\n * @example Multiple fields (object)\n * .where({ name: 'Pikachu', hp: gte(100) })\n */\n where(field: string, value: FilterValue): this\n where(conditions: Record<string, FilterValue>): this\n where(fieldOrConditions: string | Record<string, FilterValue>, value?: FilterValue): this {\n if (typeof fieldOrConditions === 'string') {\n this.conditions.push({ [fieldOrConditions]: value })\n } else {\n for (const [field, val] of Object.entries(fieldOrConditions)) {\n this.conditions.push({ [field]: val })\n }\n }\n return this\n }\n\n /**\n * Add an OR group (any of the conditions must match)\n *\n * @example\n * .where('type', 'creature')\n * .any(or => or\n * .where('color', 'red')\n * .where('color', 'blue')\n * )\n */\n any(callback: (builder: FilterBuilder) => void): this {\n const orBuilder = new FilterBuilder()\n callback(orBuilder)\n const orConditions = orBuilder.getConditions()\n if (orConditions.length > 0) {\n this.orGroups.push({ $or: orConditions })\n }\n return this\n }\n\n /**\n * Add a link filter condition (filter on linked records)\n *\n * @example\n * .whereLink('set_id', { code: 'DMU' })\n * .whereLink('set_id', { name: ilike('%dominaria%') })\n */\n whereLink(field: string, conditions: Record<string, FilterValue>): this {\n const linkFilter: Record<string, FilterValue> = {}\n for (const [key, val] of Object.entries(conditions)) {\n linkFilter[key] = val\n }\n this.conditions.push({ [`${field}._link`]: linkFilter })\n return this\n }\n\n /**\n * Add an array element filter (for ARRAY of HASH fields)\n * Matches if any element in the array matches all conditions\n *\n * @example\n * .whereAny('attacks', { damage: gte(50) })\n * .whereAny('attacks', { name: ilike('%thunder%') })\n */\n whereAny(field: string, conditions: Record<string, FilterValue>): this {\n const anyFilter: Record<string, FilterValue> = {}\n for (const [key, val] of Object.entries(conditions)) {\n anyFilter[key] = val\n }\n this.conditions.push({ [`${field}._any`]: anyFilter })\n return this\n }\n\n /**\n * Get the conditions array (used internally for OR groups)\n */\n getConditions(): FilterCondition[] {\n return this.conditions\n }\n\n /**\n * Build the final filter object\n */\n build(): FilterCondition {\n const allConditions = [...this.conditions, ...this.orGroups]\n\n if (allConditions.length === 0) {\n return {}\n }\n\n if (allConditions.length === 1) {\n return allConditions[0]!\n }\n\n return { $and: allConditions }\n }\n}\n\n/**\n * Resolve a filter input to a filter condition object\n *\n * Handles both builder functions and object literals\n */\nexport function resolveFilter(input: FilterInput | undefined): FilterCondition | undefined {\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'function') {\n const builder = new FilterBuilder()\n input(builder)\n const result = builder.build()\n return Object.keys(result).length > 0 ? result : undefined\n }\n\n return Object.keys(input).length > 0 ? input : undefined\n}\n","/**\n * GraphQL query builder for CardDB API\n */\n\nimport type {\n DeckAPIApplicationAccessGrantInput,\n DeckClaimInput,\n DeckCollaboratorRole,\n DeckCopyInput,\n DeckCreateInput,\n DeckEntriesReplaceInput,\n DeckEntryAddInput,\n DeckEntryReorderInput,\n DeckEntryUpdateInput,\n DeckExportFormat,\n DeckHydrateEntriesInput,\n DeckImportFormatCreateInput,\n DeckImportFormatTestInput,\n DeckImportFormatUpdateInput,\n DeckImportInput,\n DeckPublishedVersionSelector,\n DeckPublishInput,\n DeckReadState,\n DeckRemoveInvalidEntriesInput,\n DeckTokenExchangeInput,\n DeckTokenIssuerCreateInput,\n DeckTransferOwnershipInput,\n DeckUpsertByExternalRefInput,\n DeckUpdateInput,\n DeckValidateInput,\n ConfirmScanUploadInput,\n CreateScanJobInput,\n CreateScanUploadSessionInput,\n DatasetExportInput,\n DatasetImportFromFileInput,\n DatasetImportFromPayloadInput,\n DatasetImportFromUrlInput,\n DatasetImportPreviewInput,\n DatasetImportValidateInput,\n DatasetRecordsDeleteInput,\n DatasetRecordsUpsertInput,\n FilterCondition,\n FileUploadInput,\n GameCreateInput,\n GameImportFromFileInput,\n GameImportFromPayloadInput,\n GameImportFromUrlInput,\n GameImportPreviewInput,\n GameUpdateInput,\n ImportJobStatus,\n PreviewScanTemplateInput,\n ResolveScanTemplateInput,\n SaveScanTemplateInput,\n ScanMetricsInput,\n ScanTemplatesInput,\n SubmitScanFeedbackInput,\n AppDecksFilterInput,\n PublicDecksFilterInput,\n RulesetCreateInput,\n RulesetUpdateInput,\n RulesetVersionDraftCreateInput,\n RulesetVersionDraftImportFromDatasetRecordInput,\n RulesetVersionDraftUpdateInput,\n RulesetVersionPublishInput,\n RulesetVersionStatus,\n ViewerDecksFilterInput,\n DatasetRecordDeleteJobStatus,\n ExportJobStatus,\n} from './types.js'\nimport { ValidationError } from './errors.js'\n\nconst DECK_JSON_OBJECT_KEYS = new Set(['metadata', 'annotations'])\n\nfunction normalizeDeckJsonInput<T>(input: T): T {\n return normalizeDeckJsonValue(input, 'input') as T\n}\n\nfunction normalizeDeckJsonValue(value: unknown, path: string): unknown {\n if (!isRecord(value)) {\n return value\n }\n\n const normalized: Record<string, unknown> = {}\n for (const [key, child] of Object.entries(value)) {\n const childPath = `${path}.${key}`\n if (DECK_JSON_OBJECT_KEYS.has(key)) {\n normalized[key] = normalizeJsonObject(child, childPath)\n } else if (key === 'entries' && Array.isArray(child)) {\n normalized[key] = child.map((entry, index) =>\n normalizeDeckJsonValue(entry, `${childPath}[${index}]`)\n )\n } else {\n normalized[key] = child\n }\n }\n return normalized\n}\n\nfunction normalizeJsonObject(value: unknown, path: string): unknown {\n if (value == null || isRecord(value)) {\n return value\n }\n if (typeof value === 'string') {\n try {\n const parsed = JSON.parse(value) as unknown\n if (isRecord(parsed)) {\n return parsed\n }\n } catch {\n // Fall through to the consistent validation error below.\n }\n }\n\n throw new ValidationError(`${path} must be a JSON object`)\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\n// ============================================================================\n// Field Definitions\n// ============================================================================\n\nconst FILE_FIELDS = `\n id\n createdAt\n updatedAt\n key\n filename\n contentType\n size\n status\n isPublic\n entityType\n entityId\n url\n`\n\nconst PRESIGNED_UPLOAD_FIELDS = `\n file {\n ${FILE_FIELDS}\n }\n uploadUrl\n expiresAt\n`\n\nconst PUBLISHER_FIELDS = `\n id\n name\n slug\n status\n description\n website\n createdAt\n updatedAt\n logoFile {\n id\n url\n }\n bannerFile {\n id\n url\n }\n`\n\nconst GAME_FIELDS = `\n id\n publisherId\n key\n name\n description\n metafyGameUuid\n metafyGameSlug\n website\n visibility\n isArchived\n createdAt\n updatedAt\n publisher {\n id\n name\n slug\n }\n logoFile {\n id\n url\n }\n coverFile {\n id\n url\n }\n`\n\nconst DATASET_FIELDS = `\n id\n publisherId\n gameId\n key\n name\n description\n purpose\n activeVersionId\n tcgplayerProductIdFieldKey\n visibility\n posX\n posY\n sortOrder\n archivedAt\n isArchived\n createdAt\n updatedAt\n publisher {\n id\n name\n slug\n }\n game {\n id\n key\n name\n }\n`\n\nconst SCHEMA_NESTED_FIELDS_DEPTH = 4\n\nfunction fieldInfoFields(depth: number): string {\n const nestedFields =\n depth > 0\n ? `\n nestedFields {\n ${fieldInfoFields(depth - 1)}\n }`\n : ''\n\n return `\n key\n label\n description\n type\n isRequired\n filterable\n searchable\n isIdentifier\n sortOrder\n itemType\n linkDatasetId\n linkDatasetKey\n linkDatasetName\n linkFieldKey\n linkAlias\n linkDirection\n displayFormat\n semanticType\n placeholder\n isHidden\n isComputed\n isSystemField\n defaultValue\n allowedValues\n minLength\n maxLength\n minValue\n maxValue\n pattern\n isUnique\n ${nestedFields}\n `\n}\n\nconst SCHEMA_FIELDS = `\n schema {\n fields {\n ${fieldInfoFields(SCHEMA_NESTED_FIELDS_DEPTH)}\n }\n filterableFields\n searchableFields\n linkFields {\n key\n label\n targetDatasetKey\n targetDatasetName\n targetDatasetId\n targetFieldKey\n linkAlias\n linkDirection\n isArray\n }\n }\n`\n\nconst DATASET_FILTER_VALUE_CONNECTION_FIELDS = `\n field\n edges {\n cursor\n node {\n value\n count\n }\n }\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n`\n\nconst OBJECT_FIELD_FIELDS = `\n id\n objectTypeId\n key\n label\n dataType\n isRequired\n isFilterable\n isSearchable\n isIdentifier\n sortOrder\n description\n placeholder\n displayFormat\n semanticType\n isHidden\n isComputed\n isSystemField\n defaultValue\n allowedValues\n minLength\n maxLength\n minValue\n maxValue\n pattern\n isUnique\n itemType\n linkDatasetId\n linkFieldKey\n linkAlias\n linkDirection\n parentFieldId\n createdAt\n updatedAt\n`\n\ninterface RecordFieldOptions {\n includePricing?: boolean\n}\n\nconst TCGPLAYER_PRICING_FIELDS = `\n pricing {\n productId\n prices {\n subTypeName\n lowPrice\n midPrice\n highPrice\n marketPrice\n directLowPrice\n }\n }\n`\n\nfunction recordFields(options: RecordFieldOptions = {}): string {\n return `\n id\n datasetId\n data\n ${options.includePricing ? TCGPLAYER_PRICING_FIELDS : ''}\n createdAt\n updatedAt\n dataset {\n id\n key\n name\n gameId\n publisherId\n }\n `\n}\n\nconst RECORD_FIELDS = recordFields()\n\nconst DECK_SECTION_DEFINITION_FIELDS = `\n key\n label\n description\n order\n default\n aliases\n minCards\n maxCards\n excludedFromDeckSize\n legalCardTypes\n metadata\n`\n\nconst DECK_ENTRY_FIELDS = `\n id\n datasetId\n recordId\n identifier\n quantity\n section\n sortOrder\n annotations\n display\n record {\n ${RECORD_FIELDS}\n }\n`\n\nconst DECK_VALIDATED_AGAINST_FIELDS = `\n rulesetId\n rulesetVersionId\n rulesetVersionLabel\n cardDatasetId\n cardDatasetVersionId\n validatedAt\n validationResultSummary\n`\n\nconst DECK_VALIDATION_ISSUE_FIELDS = `\n code\n severity\n message\n entryIds\n section\n datasetId\n identifier\n metadata\n`\n\nconst DECK_VALIDATION_FIELDS = `\n deckId\n valid\n blockers {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n warnings {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n affectedEntries {\n entryId\n datasetId\n recordId\n identifier\n section\n quantity\n }\n validatedAgainst {\n ${DECK_VALIDATED_AGAINST_FIELDS}\n }\n checkedAt\n`\n\nconst RULESET_VERSION_FIELDS = `\n id\n rulesetId\n versionLabel\n status\n rules\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n cardDatasetId\n cardDatasetVersionId\n sourceDatasetId\n sourceDatasetVersionId\n sourceDatasetRecordId\n sourceRecordIdentifier\n rulesFingerprint\n effectiveAt\n changelog\n createdByAccountId\n publishedByAccountId\n publishedAt\n supersededAt\n createdAt\n updatedAt\n`\n\nconst RULESET_FIELDS = `\n id\n gameId\n game {\n id\n key\n name\n }\n key\n name\n description\n tags\n sortOrder\n currentVersionId\n currentVersion {\n ${RULESET_VERSION_FIELDS}\n }\n archivedAt\n isArchived\n createdAt\n updatedAt\n`\n\nconst DECK_VALIDATION_RULES_FIELDS = `\n rulesetId\n rulesetVersionId\n rulesetKey\n rulesetVersionLabel\n rules\n sections {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n`\n\nconst RULESET_VALIDATION_IMPACT_DECK_FIELDS = `\n deckId\n title\n slug\n state\n hasUnpublishedChanges\n valid\n blockerCount\n warningCount\n affectedEntryCount\n issues {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n`\n\nconst RULESET_VALIDATION_IMPACT_FIELDS = `\n rulesetId\n rulesetVersionId\n checkedAt\n affectedDeckCount\n invalidDeckCount\n blockerCount\n warningCount\n results {\n ${RULESET_VALIDATION_IMPACT_DECK_FIELDS}\n }\n`\n\nconst RULESET_VERSION_DRAFT_IMPORT_PREVIEW_FIELDS = `\n sourceDatasetId\n sourceDatasetVersionId\n sourceDatasetRecordId\n sourceRecordIdentifier\n rules\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n rulesFingerprint\n summary\n sectionCount\n copyLimitCount\n`\n\nconst DECK_DIFF_FIELDS = `\n deckId\n fromVersionId\n toVersionId\n toDraftRevision\n hasChanges\n diff\n`\n\nconst DECK_VERSION_FIELDS = `\n id\n deckId\n versionNumber\n slug\n identifier\n title\n description\n formatKey\n visibility\n externalRef\n sourceUrl\n metadata\n publishNote\n computedDiff\n rulesetId\n rulesetVersionId\n cardDatasetId\n cardDatasetVersionId\n validatedAt\n validationSummary\n validatedAgainst {\n ${DECK_VALIDATED_AGAINST_FIELDS}\n }\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n publishedByAccountId\n publishedByApiApplicationId\n createdAt\n entries {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_COLLABORATOR_FIELDS = `\n id\n deckId\n accountId\n role\n createdByAccountId\n createdAt\n updatedAt\n`\n\nconst DECK_TOKEN_ISSUER_FIELDS = `\n id\n apiApplicationId\n label\n allowedScopes\n allowedRepresentations\n maxTokenLifetimeSeconds\n directSigningAlg\n directSigningKeyId\n directSigningPublicKey\n directSigningKeyRevokedAt\n revokedAt\n createdAt\n updatedAt\n`\n\nconst DECK_TOKEN_FIELDS = `\n id\n apiApplicationId\n issuerId\n deckId\n gameId\n externalSubject\n scopes\n representation\n expiresAt\n revokedAt\n lastUsedAt\n createdAt\n updatedAt\n`\n\nconst DECK_IMPORT_ENTRY_FIELDS = `\n lineNumber\n raw\n datasetKey\n datasetId\n recordId\n identifier\n quantity\n section\n sortOrder\n display\n record {\n ${RECORD_FIELDS}\n }\n`\n\nconst DECK_IMPORT_ISSUE_FIELDS = `\n lineNumber\n raw\n code\n message\n`\n\nconst DECK_IMPORT_UNMATCHED_FIELDS = `\n lineNumber\n raw\n datasetKey\n identifier\n quantity\n section\n code\n message\n`\n\nconst DECK_IMPORT_AMBIGUOUS_FIELDS = `\n lineNumber\n raw\n datasetKey\n identifier\n quantity\n section\n candidates {\n recordId\n identifier\n display\n }\n`\n\nconst DECK_IMPORT_FORMAT_DEFINITION_FIELDS = `\n id\n gameId\n key\n name\n description\n enabled\n priority\n datasetKey\n config\n archivedAt\n isArchived\n createdAt\n updatedAt\n`\n\nconst DECK_IMPORT_FORMAT_DETECTION_FIELDS = `\n formatId\n key\n name\n confidence\n reason\n`\n\nconst DECK_IMPORT_FORMAT_TEST_PAYLOAD_FIELDS = `\n detection {\n ${DECK_IMPORT_FORMAT_DETECTION_FIELDS}\n }\n entries {\n ${DECK_IMPORT_ENTRY_FIELDS}\n }\n parseErrors {\n ${DECK_IMPORT_ISSUE_FIELDS}\n }\n unmatched {\n ${DECK_IMPORT_UNMATCHED_FIELDS}\n }\n ambiguous {\n ${DECK_IMPORT_AMBIGUOUS_FIELDS}\n }\n`\n\nconst DECK_HYDRATE_ENTRIES_PAYLOAD_FIELDS = `\n entries {\n ${DECK_IMPORT_ENTRY_FIELDS}\n }\n unmatched {\n ${DECK_IMPORT_UNMATCHED_FIELDS}\n }\n ambiguous {\n ${DECK_IMPORT_AMBIGUOUS_FIELDS}\n }\n`\n\nconst DECK_EXPORT_PAYLOAD_FIELDS = `\n deckId\n format\n text\n entryCount\n`\n\nconst DECK_FIELDS = `\n id\n ownerType\n ownerAccountId\n ownerApiApplicationId\n environment\n createdByAccountId\n createdByApiApplicationId\n accountId\n apiApplicationId\n gameId\n slug\n identifier\n title\n description\n formatKey\n visibility\n accessMode\n discoverability\n state\n archivedAt\n deletedAt\n unpublishedAt\n externalRefApiApplicationId\n externalRef\n externalSubjectRef\n rulesetId\n sourceUrl\n metadata\n sectionDefinitions {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n latestPublishedVersion {\n ${DECK_VERSION_FIELDS}\n }\n publishedAt\n draftRevision\n draftUpdatedAt\n draftUpdatedByAccountId\n draftUpdatedByApiApplicationId\n hasUnpublishedChanges\n createdAt\n updatedAt\n game {\n ${GAME_FIELDS}\n }\n entries {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_OWNERSHIP_TRANSFER_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n retainedAppAccess\n`\n\nconst DECK_COPY_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n copiedFromDeckId\n retainedAppAccess\n`\n\nconst DECK_ACCESS_APPLICATION_FIELDS = `\n id\n name\n description\n revokedAt\n`\n\nconst DECK_API_APPLICATION_ACCESS_FIELDS = `\n id\n deckId\n deck {\n ${DECK_FIELDS}\n }\n apiApplicationId\n apiApplication {\n ${DECK_ACCESS_APPLICATION_FIELDS}\n }\n role\n grantSource\n externalRef\n createdByAccountId\n createdByApiApplicationId\n revokedAt\n createdAt\n updatedAt\n`\n\nconst DECK_PUBLISH_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n version {\n ${DECK_VERSION_FIELDS}\n }\n validation {\n ${DECK_VALIDATION_FIELDS}\n }\n blockers {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n warnings {\n ${DECK_VALIDATION_ISSUE_FIELDS}\n }\n`\n\nconst DECK_ENTRY_MUTATION_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n entry {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_ENTRY_REORDER_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n entries {\n ${DECK_ENTRY_FIELDS}\n }\n`\n\nconst DECK_ENTRIES_REPLACE_PAYLOAD_FIELDS = DECK_ENTRY_REORDER_PAYLOAD_FIELDS\n\nconst DECK_IMPORT_PAYLOAD_FIELDS = `\n deck {\n ${DECK_FIELDS}\n }\n applied\n dryRun\n replace\n format\n importFormat {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n detection {\n ${DECK_IMPORT_FORMAT_DETECTION_FIELDS}\n }\n entries {\n ${DECK_IMPORT_ENTRY_FIELDS}\n }\n parseErrors {\n ${DECK_IMPORT_ISSUE_FIELDS}\n }\n unmatched {\n ${DECK_IMPORT_UNMATCHED_FIELDS}\n }\n ambiguous {\n ${DECK_IMPORT_AMBIGUOUS_FIELDS}\n }\n validation {\n ${DECK_VALIDATION_FIELDS}\n }\n`\n\nconst RESOLVED_LINKS_FIELDS = `\n resolvedLinks {\n field\n linkFieldKey\n values\n records {\n id\n datasetId\n data\n }\n }\n`\n\nconst BULK_RECORD_ERROR_FIELDS = `\n datasetKey\n index\n errors {\n field\n message\n details\n }\n`\n\nconst IMPORT_STATS_FIELDS = `\n total\n inserted\n updated\n skipped\n failed\n`\n\nconst BULK_IMPORT_RESULT_FIELDS = `\n inserted {\n ${RECORD_FIELDS}\n }\n updated {\n ${RECORD_FIELDS}\n }\n skipped\n errors {\n ${BULK_RECORD_ERROR_FIELDS}\n }\n createdFields {\n ${OBJECT_FIELD_FIELDS}\n }\n stats {\n ${IMPORT_STATS_FIELDS}\n }\n`\n\nconst IMPORT_JOB_ASSET_FIELDS = `\n fileId\n filename\n file {\n ${FILE_FIELDS}\n }\n`\n\nconst IMPORT_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n datasetId\n dataset {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n accountId\n status\n mode\n onConflict\n format\n fileId\n progress\n totalRecords\n processedRecords\n insertedCount\n updatedCount\n skippedCount\n failedCount\n createdFields {\n ${OBJECT_FIELD_FIELDS}\n }\n errors {\n ${BULK_RECORD_ERROR_FIELDS}\n }\n errorMessage\n assets {\n ${IMPORT_JOB_ASSET_FIELDS}\n }\n startedAt\n completedAt\n createdAt\n updatedAt\n lastCheckpointIndex\n isResumed\n imagesPending\n imagesCompleted\n imagesFailed\n`\n\nconst IMPORT_JOB_LOG_FIELDS = `\n id\n importJobId\n level\n message\n datasetKey\n recordIndex\n fieldKey\n details\n createdAt\n`\n\nconst DATASET_RECORDS_UPSERT_PAYLOAD_FIELDS = `\n job {\n ${IMPORT_JOB_FIELDS}\n }\n dryRunResult {\n ${BULK_IMPORT_RESULT_FIELDS}\n }\n`\n\nconst DELETE_JOB_RESULT_FIELDS = `\n target\n recordId\n identifier\n status\n message\n`\n\nconst DATASET_RECORD_DELETE_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n datasetId\n dataset {\n ${DATASET_FIELDS}\n }\n accountId\n status\n targetType\n dryRun\n targets\n progress\n totalTargets\n processedTargets\n matchedCount\n deletedCount\n missingCount\n blockedCount\n failedCount\n results {\n ${DELETE_JOB_RESULT_FIELDS}\n }\n errorMessage\n startedAt\n completedAt\n createdAt\n updatedAt\n`\n\nconst FIELD_MAPPING_FIELDS = `\n sourceField\n targetField\n targetFieldLabel\n inferredType\n inferredItemType\n inferredChildren {\n key\n label\n type\n required\n itemType\n children {\n key\n label\n type\n required\n itemType\n }\n }\n inferredLinkDataset\n inferredLinkFieldKey\n inferredLinkDirection\n targetFieldType\n sampleValues\n status\n`\n\nconst IMPORT_WARNING_FIELDS = `\n datasetKey\n field\n message\n severity\n`\n\nconst DATASET_IMPORT_PREVIEW_FIELDS = `\n datasetKey\n datasetName\n datasetId\n exists\n recordCount\n fieldMappings {\n ${FIELD_MAPPING_FIELDS}\n }\n warnings {\n ${IMPORT_WARNING_FIELDS}\n }\n canProceed\n sampleRecords\n availableDatasets {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n`\n\nconst GAME_IMPORT_PREVIEW_FIELDS = `\n datasets {\n datasetKey\n datasetName\n datasetId\n exists\n recordCount\n fieldMappings {\n ${FIELD_MAPPING_FIELDS}\n }\n warnings {\n ${IMPORT_WARNING_FIELDS}\n }\n sampleRecords\n }\n importOrder\n warnings {\n ${IMPORT_WARNING_FIELDS}\n }\n canProceed\n`\n\nconst GAME_IMPORT_DATASET_STATUS_FIELDS = `\n datasetKey\n datasetId\n datasetName\n status\n recordCount\n insertedCount\n updatedCount\n skippedCount\n failedCount\n errorMessage\n`\n\nconst GAME_IMPORT_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n gameId\n game {\n ${GAME_FIELDS}\n }\n accountId\n status\n mode\n onConflict\n fileId\n assets {\n ${IMPORT_JOB_ASSET_FIELDS}\n }\n totalDatasets\n completedDatasets\n progress\n importOrder\n datasetStatuses {\n ${GAME_IMPORT_DATASET_STATUS_FIELDS}\n }\n errorMessage\n startedAt\n completedAt\n createdAt\n updatedAt\n completedDatasetKeys\n currentDatasetKey\n lastCheckpointIndex\n isResumed\n imagesPending\n imagesCompleted\n imagesFailed\n phase\n linkBuildingDataset\n linkBuildingTotalDatasets\n linkBuildingCompletedDatasets\n linkBuildingProcessedRecords\n linkBuildingTotalRecords\n`\n\nconst EXPORT_JOB_FIELDS = `\n id\n publisherId\n publisher {\n ${PUBLISHER_FIELDS}\n }\n datasetId\n dataset {\n ${DATASET_FIELDS}\n }\n accountId\n status\n format\n filter\n totalRecords\n processedRecords\n progress\n fileId\n downloadUrl\n downloadExpiresAt\n errorMessage\n startedAt\n completedAt\n createdAt\n updatedAt\n lastCheckpointIndex\n`\n\nconst SCAN_CANDIDATE_FIELDS = `\n recordId\n rank\n score\n confidence\n reasons\n`\n\nconst SCAN_WEBHOOK_FIELDS = `\n configured\n url\n latestDeliveryId\n status\n attemptCount\n nextAttemptAt\n lastAttemptAt\n deliveredAt\n lastStatusCode\n lastError\n`\n\nconst SCAN_JOB_METRICS_FIELDS = `\n featureVersion\n candidateCount\n confidenceScore\n confidenceLabel\n stages {\n name\n status\n durationMs\n completedAt\n details\n }\n timings\n`\n\nconst SCAN_JOB_FIELDS = `\n jobId\n status\n publisherSlug\n gameKey\n datasetKey\n fileId\n clientRequestId\n templateId\n templateVersionId\n bestMatch {\n recordId\n score\n confidence\n }\n candidates {\n ${SCAN_CANDIDATE_FIELDS}\n }\n extracted\n metrics {\n ${SCAN_JOB_METRICS_FIELDS}\n }\n webhook {\n ${SCAN_WEBHOOK_FIELDS}\n }\n error {\n code\n message\n }\n createdAt\n updatedAt\n startedAt\n completedAt\n`\n\nconst SCAN_METRICS_FIELDS = `\n publisherSlug\n gameKey\n datasetKey\n since\n until\n generatedAt\n totalJobs\n completedJobs\n failedJobs\n failureRate\n noMatchCount\n noMatchRate\n averageShortlistSize\n vectorQueryCount\n vectorFallbackCount\n averageVectorCandidates\n averageVectorQueryMs\n averageEmbeddingMs\n confidenceDistribution\n feedback {\n total\n correct\n corrected\n unknown\n accuracy\n }\n featureVersions {\n featureVersion\n jobCount\n completedJobs\n failedJobs\n noMatchCount\n averageConfidence\n averageShortlistSize\n vectorQueryCount\n vectorFallbackCount\n averageVectorCandidates\n averageVectorQueryMs\n averageEmbeddingMs\n feedbackCount\n correctFeedback\n correctedFeedback\n feedbackAccuracy\n }\n`\n\nconst SCAN_TEMPLATE_WARNING_FIELDS = `\n code\n region\n message\n`\n\nconst SCAN_TEMPLATE_REGION_FIELDS = `\n id\n key\n label\n sortOrder\n shapeType\n geometry\n semanticType\n extractionMode\n lookupMode\n isRequired\n weight\n config\n`\n\nconst SCAN_TEMPLATE_FIELDS = `\n id\n key\n name\n status\n version\n isDefault\n publisherSlug\n gameKey\n datasetKey\n exampleFileId\n coordinateSpace\n cardAspectRatio\n notes\n config\n regions {\n ${SCAN_TEMPLATE_REGION_FIELDS}\n }\n createdAt\n updatedAt\n`\n\nconst SCAN_TEMPLATE_PREVIEW_REGION_FIELDS = `\n key\n label\n semanticType\n extractionMode\n lookupMode\n rawText\n normalizedValue\n source\n status\n confidence\n`\n\nconst GAME_SCAN_REGION_FIELDS = `\n id\n key\n name\n description\n sortOrder\n isActive\n metadata\n createdAt\n updatedAt\n`\n\nfunction connectionFields(nodeFields: string): string {\n return `\n totalCount\n pageInfo {\n hasNextPage\n hasPreviousPage\n startCursor\n endCursor\n }\n edges {\n cursor\n node {\n ${nodeFields}\n }\n }\n `\n}\n\n// ============================================================================\n// Query Builder\n// ============================================================================\n\nexport interface SearchPublishersParams {\n search?: string\n first?: number\n after?: string\n}\n\nexport interface SearchGamesParams {\n publisherSlug?: string\n search?: string\n first?: number\n after?: string\n}\n\nexport interface SearchDatasetsParams {\n publisherSlug?: string\n gameKey?: string\n search?: string\n purpose?: 'DATA' | 'RULES'\n first?: number\n after?: string\n}\n\nexport interface SearchRecordsParams {\n publisherSlug: string\n gameKey: string\n datasetKey: string\n filter?: FilterCondition\n search?: string\n orderBy?: string\n resolveLinks?: string[]\n first?: number\n after?: string\n validateSchema?: boolean\n includePricing?: boolean\n}\n\nexport interface ListGamesParams {\n publisherId: string\n first?: number\n after?: string\n includeArchived?: boolean\n}\n\nexport interface GameLookupParams {\n id?: string\n publisherId?: string\n publisherSlug?: string\n gameKey?: string\n gameSlug?: string\n}\n\nexport interface ListDatasetsParams {\n publisherId: string\n gameId?: string\n first?: number\n after?: string\n includeArchived?: boolean\n purpose?: 'DATA' | 'RULES'\n}\n\nexport interface DatasetLookupParams {\n id?: string\n publisherId?: string\n gameId?: string\n datasetKey?: string\n}\n\nexport interface DatasetFilterValuesParams {\n id?: string\n publisherSlug?: string\n gameKey?: string\n datasetKey?: string\n fields: string[]\n search?: string\n includeCounts?: boolean\n first?: number\n after?: string\n}\n\nexport interface ListDatasetRecordsParams {\n datasetId: string\n filter?: FilterCondition\n orderBy?: { field: string; direction?: 'ASC' | 'DESC' }\n first?: number\n after?: string\n last?: number\n before?: string\n validateSchema?: boolean\n}\n\nexport interface DatasetRecordLookupParams {\n id?: string\n datasetId?: string\n identifier?: string\n publisherSlug?: string\n gameKey?: string\n datasetKey?: string\n recordId?: string\n resolveLinks?: string[]\n validateSchema?: boolean\n includePricing?: boolean\n}\n\nexport interface ListImportJobsParams {\n publisherId: string\n datasetId?: string\n status?: ImportJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListGameImportJobsParams {\n gameId: string\n status?: ImportJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListDatasetRecordDeleteJobsParams {\n publisherId: string\n datasetId?: string\n status?: DatasetRecordDeleteJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListExportJobsParams {\n publisherId: string\n gameId?: string\n datasetId?: string\n status?: ExportJobStatus\n first?: number\n after?: string\n}\n\nexport interface ListDecksParams {\n first?: number\n after?: string\n includeArchived?: boolean\n}\n\nexport interface ListDeckVersionsParams {\n first?: number\n after?: string\n}\n\nexport interface DeckSectionDefinitionsParams {\n publisherSlug?: string\n gameKey?: string\n gameId?: string\n rulesetKey?: string\n rulesetVersionId?: string\n}\n\nexport interface ListRulesetsParams {\n gameId: string\n includeArchived?: boolean\n first?: number\n after?: string\n}\n\nexport interface ListPublicRulesetsParams {\n gameId: string\n first?: number\n after?: string\n}\n\nexport interface RulesetLookupParams {\n id?: string\n gameId?: string\n key?: string\n}\n\nexport interface ListRulesetVersionsParams {\n rulesetId: string\n status?: RulesetVersionStatus\n first?: number\n after?: string\n}\n\nexport interface RulesetValidationRulesParams {\n gameId: string\n rulesetKey: string\n rulesetVersionId?: string\n}\n\nexport interface RulesetValidationImpactParams {\n rulesetVersionId: string\n first?: number\n}\n\nexport interface ViewerDecksParams {\n filter?: ViewerDecksFilterInput\n first?: number\n after?: string\n}\n\nexport interface AppDecksParams {\n filter?: AppDecksFilterInput\n first?: number\n after?: string\n}\n\nexport interface PublicDecksParams {\n filter?: PublicDecksFilterInput\n first?: number\n after?: string\n}\n\nexport interface ListDeckImportFormatsParams {\n publisherId?: string\n gameId?: string\n includeArchived?: boolean\n first?: number\n after?: string\n}\n\nexport const QueryBuilder = {\n // Publishers\n searchPublishers(params: SearchPublishersParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query SearchPublishers${defStr} {\n searchPublishers${argStr} {\n ${connectionFields(PUBLISHER_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchPublisherById(): { query: string } {\n return {\n query: `\n query FetchPublisher($id: UUID!) {\n fetchPublisher(id: $id) {\n ${PUBLISHER_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchPublisherBySlug(): { query: string } {\n return {\n query: `\n query FetchPublisher($slug: String!) {\n fetchPublisher(slug: $slug) {\n ${PUBLISHER_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchPublishers(): { query: string } {\n return {\n query: `\n query FetchPublishers($slugs: [String!]!) {\n fetchPublishers(slugs: $slugs) {\n ${PUBLISHER_FIELDS}\n }\n }\n `,\n }\n },\n\n // Games\n searchGames(params: SearchGamesParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query SearchGames${defStr} {\n searchGames${argStr} {\n ${connectionFields(GAME_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchGameById(): { query: string } {\n return {\n query: `\n query FetchGame($id: UUID!) {\n fetchGame(id: $id) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchGameByKeys(): { query: string } {\n return {\n query: `\n query FetchGame($publisherSlug: String!, $gameKey: String!) {\n fetchGame(publisherSlug: $publisherSlug, gameKey: $gameKey) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchGames(): { query: string } {\n return {\n query: `\n query FetchGames($ids: [UUID!]!) {\n fetchGames(ids: $ids) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n listGames(params: ListGamesParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n\n return {\n query: `\n query Games(${defs.join(', ')}) {\n games(${args.join(', ')}) {\n ${connectionFields(GAME_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n game(params: GameLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.publisherId !== undefined) {\n defs.push('$publisherId: UUID')\n args.push('publisherId: $publisherId')\n variables['publisherId'] = params.publisherId\n }\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.gameSlug !== undefined) {\n defs.push('$gameSlug: String')\n args.push('gameSlug: $gameSlug')\n variables['gameSlug'] = params.gameSlug\n }\n\n return {\n query: `\n query Game(${defs.join(', ')}) {\n game(${args.join(', ')}) {\n ${GAME_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n createGame(): { query: string } {\n return {\n query: `\n mutation GameCreate($input: GameCreateInput!) {\n gameCreate(input: $input) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n updateGame(): { query: string } {\n return {\n query: `\n mutation GameUpdate($id: UUID!, $input: GameUpdateInput!) {\n gameUpdate(id: $id, input: $input) {\n ${GAME_FIELDS}\n }\n }\n `,\n }\n },\n\n // Datasets\n searchDatasets(params: SearchDatasetsParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.purpose !== undefined) {\n defs.push('$purpose: DatasetPurpose')\n args.push('purpose: $purpose')\n variables['purpose'] = params.purpose\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query SearchDatasets${defStr} {\n searchDatasets${argStr} {\n ${connectionFields(DATASET_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchDatasetById(): { query: string } {\n return {\n query: `\n query FetchDataset($id: UUID!) {\n fetchDataset(id: $id) {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDatasetByKeys(): { query: string } {\n return {\n query: `\n query FetchDataset($publisherSlug: String!, $gameKey: String!, $datasetKey: String!) {\n fetchDataset(publisherSlug: $publisherSlug, gameKey: $gameKey, datasetKey: $datasetKey) {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDatasets(): { query: string } {\n return {\n query: `\n query FetchDatasets($ids: [UUID!]!) {\n fetchDatasets(ids: $ids) {\n ${DATASET_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDatasetFilterValues(params: DatasetFilterValuesParams): {\n query: string\n variables: Record<string, unknown>\n } {\n if (params.fields.length === 0) {\n throw new ValidationError('fields must contain at least one field key')\n }\n\n const byId = params.id !== undefined\n const byKeys =\n params.publisherSlug !== undefined &&\n params.gameKey !== undefined &&\n params.datasetKey !== undefined\n if (!byId && !byKeys) {\n throw new ValidationError('provide either id or publisherSlug, gameKey, and datasetKey')\n }\n\n const definitions = ['$fields: [String!]!']\n const filterValueArgs = ['fields: $fields']\n const variables: Record<string, unknown> = { fields: params.fields }\n\n if (params.search !== undefined) {\n definitions.push('$search: String')\n filterValueArgs.push('search: $search')\n variables['search'] = params.search\n }\n if (params.includeCounts !== undefined) {\n definitions.push('$includeCounts: Boolean')\n filterValueArgs.push('includeCounts: $includeCounts')\n variables['includeCounts'] = params.includeCounts\n }\n if (params.first !== undefined) {\n definitions.push('$first: Int')\n filterValueArgs.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n definitions.push('$after: String')\n filterValueArgs.push('after: $after')\n variables['after'] = params.after\n }\n\n const datasetArgs: string[] = []\n if (byId) {\n definitions.push('$id: UUID!')\n datasetArgs.push('id: $id')\n variables['id'] = params.id\n } else {\n definitions.push('$publisherSlug: String!', '$gameKey: String!', '$datasetKey: String!')\n datasetArgs.push(\n 'publisherSlug: $publisherSlug',\n 'gameKey: $gameKey',\n 'datasetKey: $datasetKey'\n )\n variables['publisherSlug'] = params.publisherSlug\n variables['gameKey'] = params.gameKey\n variables['datasetKey'] = params.datasetKey\n }\n\n return {\n query: `\n query FetchDatasetFilterValues(${definitions.join(', ')}) {\n fetchDataset(${datasetArgs.join(', ')}) {\n filterValues(${filterValueArgs.join(', ')}) {\n ${DATASET_FILTER_VALUE_CONNECTION_FIELDS}\n }\n }\n }\n `,\n variables,\n }\n },\n\n listDatasets(params: ListDatasetsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n if (params.purpose !== undefined) {\n defs.push('$purpose: DatasetPurpose')\n args.push('purpose: $purpose')\n variables['purpose'] = params.purpose\n }\n\n return {\n query: `\n query Datasets(${defs.join(', ')}) {\n datasets(${args.join(', ')}) {\n ${connectionFields(`${DATASET_FIELDS}\\n${SCHEMA_FIELDS}`)}\n }\n }\n `,\n variables,\n }\n },\n\n dataset(params: DatasetLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.publisherId !== undefined) {\n defs.push('$publisherId: UUID')\n args.push('publisherId: $publisherId')\n variables['publisherId'] = params.publisherId\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.datasetKey !== undefined) {\n defs.push('$datasetKey: String')\n args.push('datasetKey: $datasetKey')\n variables['datasetKey'] = params.datasetKey\n }\n\n return {\n query: `\n query Dataset(${defs.join(', ')}) {\n dataset(${args.join(', ')}) {\n ${DATASET_FIELDS}\n ${SCHEMA_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n // Records\n searchRecords(params: SearchRecordsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {\n publisherSlug: params.publisherSlug,\n gameKey: params.gameKey,\n datasetKey: params.datasetKey,\n }\n const args: string[] = [\n 'publisherSlug: $publisherSlug',\n 'gameKey: $gameKey',\n 'datasetKey: $datasetKey',\n ]\n const defs: string[] = ['$publisherSlug: String!', '$gameKey: String!', '$datasetKey: String!']\n\n if (params.filter !== undefined) {\n defs.push('$filter: JSON')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.search !== undefined) {\n defs.push('$search: String')\n args.push('search: $search')\n variables['search'] = params.search\n }\n if (params.orderBy !== undefined) {\n defs.push('$orderBy: String')\n args.push('orderBy: $orderBy')\n variables['orderBy'] = params.orderBy\n }\n if (params.resolveLinks !== undefined) {\n defs.push('$resolveLinks: [String!]')\n args.push('resolveLinks: $resolveLinks')\n variables['resolveLinks'] = params.resolveLinks\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.validateSchema !== undefined) {\n defs.push('$validateSchema: Boolean')\n args.push('validateSchema: $validateSchema')\n variables['validateSchema'] = params.validateSchema\n }\n\n const includeResolvedLinks = params.resolveLinks && params.resolveLinks.length > 0\n const selectedRecordFields = recordFields({ includePricing: params.includePricing })\n const nodeFields = includeResolvedLinks\n ? `${selectedRecordFields}\\n${RESOLVED_LINKS_FIELDS}`\n : selectedRecordFields\n\n return {\n query: `\n query SearchRecords(${defs.join(', ')}) {\n searchRecords(${args.join(', ')}) {\n ${connectionFields(nodeFields)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchRecordById(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecord($id: UUID!) {\n fetchRecord(id: $id) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n fetchRecordByIdentifier(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecordByIdentifier($publisherSlug: String!, $gameKey: String!, $datasetKey: String!, $identifier: String!) {\n fetchRecordByIdentifier(publisherSlug: $publisherSlug, gameKey: $gameKey, datasetKey: $datasetKey, identifier: $identifier) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n fetchRecordsByIdentifier(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecordsByIdentifier($publisherSlug: String!, $gameKey: String!, $datasetKey: String!, $identifiers: [String!]!) {\n fetchRecordsByIdentifier(publisherSlug: $publisherSlug, gameKey: $gameKey, datasetKey: $datasetKey, identifiers: $identifiers) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n fetchRecords(params: RecordFieldOptions = {}): { query: string } {\n return {\n query: `\n query FetchRecords($ids: [UUID!]!) {\n fetchRecords(ids: $ids) {\n ${recordFields(params)}\n }\n }\n `,\n }\n },\n\n listDatasetRecords(params: ListDatasetRecordsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { datasetId: params.datasetId }\n const args: string[] = ['datasetId: $datasetId']\n const defs: string[] = ['$datasetId: UUID!']\n\n if (params.filter !== undefined) {\n defs.push('$filter: JSON')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.orderBy !== undefined) {\n defs.push('$orderBy: DatasetRecordOrderByInput')\n args.push('orderBy: $orderBy')\n variables['orderBy'] = params.orderBy\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.last !== undefined) {\n defs.push('$last: Int')\n args.push('last: $last')\n variables['last'] = params.last\n }\n if (params.before !== undefined) {\n defs.push('$before: String')\n args.push('before: $before')\n variables['before'] = params.before\n }\n if (params.validateSchema !== undefined) {\n defs.push('$validateSchema: Boolean')\n args.push('validateSchema: $validateSchema')\n variables['validateSchema'] = params.validateSchema\n }\n\n return {\n query: `\n query DatasetRecords(${defs.join(', ')}) {\n datasetRecords(${args.join(', ')}) {\n ${connectionFields(RECORD_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n datasetRecord(params: DatasetRecordLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.identifier !== undefined) {\n defs.push('$identifier: String')\n args.push('identifier: $identifier')\n variables['identifier'] = params.identifier\n }\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.datasetKey !== undefined) {\n defs.push('$datasetKey: String')\n args.push('datasetKey: $datasetKey')\n variables['datasetKey'] = params.datasetKey\n }\n if (params.recordId !== undefined) {\n defs.push('$recordId: UUID')\n args.push('recordId: $recordId')\n variables['recordId'] = params.recordId\n }\n if (params.resolveLinks !== undefined) {\n defs.push('$resolveLinks: [String!]')\n args.push('resolveLinks: $resolveLinks')\n variables['resolveLinks'] = params.resolveLinks\n }\n if (params.validateSchema !== undefined) {\n defs.push('$validateSchema: Boolean')\n args.push('validateSchema: $validateSchema')\n variables['validateSchema'] = params.validateSchema\n }\n\n const includeResolvedLinks = params.resolveLinks && params.resolveLinks.length > 0\n const selectedRecordFields = recordFields({ includePricing: params.includePricing })\n const fields = includeResolvedLinks\n ? `${selectedRecordFields}\\n${RESOLVED_LINKS_FIELDS}`\n : selectedRecordFields\n\n return {\n query: `\n query DatasetRecord(${defs.join(', ')}) {\n datasetRecord(${args.join(', ')}) {\n ${fields}\n }\n }\n `,\n variables,\n }\n },\n\n upsertDatasetRecords(): { query: string } {\n return {\n query: `\n mutation DatasetRecordsUpsert($input: DatasetRecordsUpsertInput!) {\n datasetRecordsUpsert(input: $input) {\n ${DATASET_RECORDS_UPSERT_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n deleteDatasetRecords(): { query: string } {\n return {\n query: `\n mutation DatasetRecordsDelete($input: DatasetRecordsDeleteInput!) {\n datasetRecordsDelete(input: $input) {\n ${DATASET_RECORD_DELETE_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetRecordDeleteJob(): { query: string } {\n return {\n query: `\n query DatasetRecordDeleteJob($id: UUID!) {\n datasetRecordDeleteJob(id: $id) {\n ${DATASET_RECORD_DELETE_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetRecordDeleteJobs(params: ListDatasetRecordDeleteJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.status !== undefined) {\n defs.push('$status: DatasetRecordDeleteJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query DatasetRecordDeleteJobs(${defs.join(', ')}) {\n datasetRecordDeleteJobs(${args.join(', ')}) {\n ${connectionFields(DATASET_RECORD_DELETE_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n datasetImportPreview(): { query: string } {\n return {\n query: `\n query DatasetImportPreview($input: DatasetImportPreviewInput!) {\n datasetImportPreview(input: $input) {\n ${DATASET_IMPORT_PREVIEW_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportValidate(): { query: string } {\n return {\n query: `\n query DatasetImportValidate($input: DatasetImportValidateInput!) {\n datasetImportValidate(input: $input) {\n ${BULK_IMPORT_RESULT_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportFromFile(): { query: string } {\n return {\n query: `\n mutation DatasetImportFromFile($input: DatasetImportFromFileInput!) {\n datasetImportFromFile(input: $input) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportFromPayload(): { query: string } {\n return {\n query: `\n mutation DatasetImportFromPayload($input: DatasetImportFromPayloadInput!) {\n datasetImportFromPayload(input: $input) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n datasetImportFromUrl(): { query: string } {\n return {\n query: `\n mutation DatasetImportFromUrl($input: DatasetImportFromUrlInput!) {\n datasetImportFromUrl(input: $input) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n importJob(): { query: string } {\n return {\n query: `\n query ImportJob($id: UUID!) {\n importJob(id: $id) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n importJobs(params: ListImportJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.status !== undefined) {\n defs.push('$status: ImportJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query ImportJobs(${defs.join(', ')}) {\n importJobs(${args.join(', ')}) {\n ${connectionFields(IMPORT_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n importJobCancel(): { query: string } {\n return {\n query: `\n mutation ImportJobCancel($id: UUID!) {\n importJobCancel(id: $id) {\n ${IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n importJobLogs(params: {\n importJobId: string\n level?: string\n datasetKey?: string\n first?: number\n after?: string\n }): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { importJobId: params.importJobId }\n const args: string[] = ['id: $importJobId']\n const logArgs: string[] = []\n const defs: string[] = ['$importJobId: UUID!']\n\n if (params.level !== undefined) {\n defs.push('$level: ImportLogLevel')\n logArgs.push('level: $level')\n variables['level'] = params.level\n }\n if (params.datasetKey !== undefined) {\n defs.push('$datasetKey: String')\n logArgs.push('datasetKey: $datasetKey')\n variables['datasetKey'] = params.datasetKey\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n logArgs.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n logArgs.push('after: $after')\n variables['after'] = params.after\n }\n\n const logArgStr = logArgs.length > 0 ? `(${logArgs.join(', ')})` : ''\n\n return {\n query: `\n query ImportJobLogs(${defs.join(', ')}) {\n importJob(${args.join(', ')}) {\n logs${logArgStr} {\n ${connectionFields(IMPORT_JOB_LOG_FIELDS)}\n }\n }\n }\n `,\n variables,\n }\n },\n\n gameImportPreview(): { query: string } {\n return {\n query: `\n query GameImportPreview($input: GameImportPreviewInput!) {\n gameImportPreview(input: $input) {\n ${GAME_IMPORT_PREVIEW_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportFromFile(): { query: string } {\n return {\n query: `\n mutation GameImportFromFile($input: GameImportFromFileInput!) {\n gameImportFromFile(input: $input) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportFromPayload(): { query: string } {\n return {\n query: `\n mutation GameImportFromPayload($input: GameImportFromPayloadInput!) {\n gameImportFromPayload(input: $input) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportFromUrl(): { query: string } {\n return {\n query: `\n mutation GameImportFromUrl($input: GameImportFromUrlInput!) {\n gameImportFromUrl(input: $input) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportJob(): { query: string } {\n return {\n query: `\n query GameImportJob($id: UUID!) {\n gameImportJob(id: $id) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n gameImportJobs(params: ListGameImportJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { gameId: params.gameId }\n const args: string[] = ['gameId: $gameId']\n const defs: string[] = ['$gameId: UUID!']\n\n if (params.status !== undefined) {\n defs.push('$status: ImportJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query GameImportJobs(${defs.join(', ')}) {\n gameImportJobs(${args.join(', ')}) {\n ${connectionFields(GAME_IMPORT_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n gameImportJobCancel(): { query: string } {\n return {\n query: `\n mutation GameImportJobCancel($id: UUID!) {\n gameImportJobCancel(id: $id) {\n ${GAME_IMPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n file(): { query: string } {\n return {\n query: `\n query File($id: UUID!) {\n file(id: $id) {\n ${FILE_FIELDS}\n }\n }\n `,\n }\n },\n\n fileUploadRequest(): { query: string } {\n return {\n query: `\n mutation FileUploadRequest($input: FileUploadInput!) {\n fileUploadRequest(input: $input) {\n ${PRESIGNED_UPLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n fileUploadConfirm(): { query: string } {\n return {\n query: `\n mutation FileUploadConfirm($id: UUID!) {\n fileUploadConfirm(id: $id) {\n ${FILE_FIELDS}\n }\n }\n `,\n }\n },\n\n fileDelete(): { query: string } {\n return {\n query: `\n mutation FileDelete($id: UUID!) {\n fileDelete(id: $id)\n }\n `,\n }\n },\n\n createScanUploadSession(): { query: string } {\n return {\n query: `\n mutation CreateScanUploadSession($input: CreateScanUploadSessionInput!) {\n createScanUploadSession(input: $input) {\n ${PRESIGNED_UPLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n confirmScanUpload(): { query: string } {\n return {\n query: `\n mutation ConfirmScanUpload($input: ConfirmScanUploadInput!) {\n confirmScanUpload(input: $input) {\n ${FILE_FIELDS}\n }\n }\n `,\n }\n },\n\n createScanJob(): { query: string } {\n return {\n query: `\n mutation CreateScanJob($input: CreateScanJobInput!) {\n createScanJob(input: $input) {\n job {\n ${SCAN_JOB_FIELDS}\n }\n created\n }\n }\n `,\n }\n },\n\n scanJob(): { query: string } {\n return {\n query: `\n query ScanJob($id: UUID!) {\n scanJob(id: $id) {\n ${SCAN_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n submitScanFeedback(): { query: string } {\n return {\n query: `\n mutation SubmitScanFeedback($input: SubmitScanFeedbackInput!) {\n submitScanFeedback(input: $input) {\n feedbackId\n jobId\n status\n persisted\n correct\n predictedRecordId\n selectedRecordId\n featureVersion\n message\n }\n }\n `,\n }\n },\n\n scanMetrics(): { query: string } {\n return {\n query: `\n query ScanMetrics($input: ScanMetricsInput!) {\n scanMetrics(input: $input) {\n ${SCAN_METRICS_FIELDS}\n }\n }\n `,\n }\n },\n\n resolveScanTemplate(): { query: string } {\n return {\n query: `\n query ResolveScanTemplate($input: ResolveScanTemplateInput!) {\n resolveScanTemplate(input: $input) {\n template {\n ${SCAN_TEMPLATE_FIELDS}\n }\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n scanTemplates(): { query: string } {\n return {\n query: `\n query ScanTemplates($input: ScanTemplatesInput!) {\n scanTemplates(input: $input) {\n templates {\n ${SCAN_TEMPLATE_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n createScanTemplate(): { query: string } {\n return {\n query: `\n mutation CreateScanTemplate($input: SaveScanTemplateInput!) {\n createScanTemplate(input: $input) {\n template {\n ${SCAN_TEMPLATE_FIELDS}\n }\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n updateScanTemplate(): { query: string } {\n return {\n query: `\n mutation UpdateScanTemplate($id: UUID!, $input: SaveScanTemplateInput!) {\n updateScanTemplate(id: $id, input: $input) {\n template {\n ${SCAN_TEMPLATE_FIELDS}\n }\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n previewScanTemplate(): { query: string } {\n return {\n query: `\n mutation PreviewScanTemplate($input: PreviewScanTemplateInput!) {\n previewScanTemplate(input: $input) {\n warnings {\n ${SCAN_TEMPLATE_WARNING_FIELDS}\n }\n regions {\n ${SCAN_TEMPLATE_PREVIEW_REGION_FIELDS}\n }\n message\n }\n }\n `,\n }\n },\n\n gameScanRegions(): { query: string } {\n return {\n query: `\n query GameScanRegions($publisherSlug: String!, $gameKey: String!, $includeInactive: Boolean) {\n gameScanRegions(publisherSlug: $publisherSlug, gameKey: $gameKey, includeInactive: $includeInactive) {\n ${GAME_SCAN_REGION_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJob(): { query: string } {\n return {\n query: `\n query ExportJob($id: UUID!) {\n exportJob(id: $id) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJobs(params: ListExportJobsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { publisherId: params.publisherId }\n const args: string[] = ['publisherId: $publisherId']\n const defs: string[] = ['$publisherId: UUID!']\n\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.datasetId !== undefined) {\n defs.push('$datasetId: UUID')\n args.push('datasetId: $datasetId')\n variables['datasetId'] = params.datasetId\n }\n if (params.status !== undefined) {\n defs.push('$status: ExportJobStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query ExportJobs(${defs.join(', ')}) {\n exportJobs(${args.join(', ')}) {\n ${connectionFields(EXPORT_JOB_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n datasetExport(): { query: string } {\n return {\n query: `\n mutation DatasetExport($input: DatasetExportInput!) {\n datasetExport(input: $input) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJobCancel(): { query: string } {\n return {\n query: `\n mutation ExportJobCancel($id: UUID!) {\n exportJobCancel(id: $id) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n exportJobRefreshUrl(): { query: string } {\n return {\n query: `\n mutation ExportJobRefreshUrl($id: UUID!) {\n exportJobRefreshUrl(id: $id) {\n ${EXPORT_JOB_FIELDS}\n }\n }\n `,\n }\n },\n\n // Rulesets\n rulesets(params: ListRulesetsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { gameId: params.gameId }\n const args: string[] = ['gameId: $gameId']\n const defs: string[] = ['$gameId: UUID!']\n\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query Rulesets(${defs.join(', ')}) {\n rulesets(${args.join(', ')}) {\n ${connectionFields(RULESET_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n publicRulesets(params: ListPublicRulesetsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { gameId: params.gameId }\n const args: string[] = ['gameId: $gameId']\n const defs: string[] = ['$gameId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query PublicRulesets(${defs.join(', ')}) {\n publicRulesets(${args.join(', ')}) {\n ${connectionFields(RULESET_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n ruleset(params: RulesetLookupParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.id !== undefined) {\n defs.push('$id: UUID')\n args.push('id: $id')\n variables['id'] = params.id\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.key !== undefined) {\n defs.push('$key: String')\n args.push('key: $key')\n variables['key'] = params.key\n }\n\n return {\n query: `\n query Ruleset(${defs.join(', ')}) {\n ruleset(${args.join(', ')}) {\n ${RULESET_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n rulesetVersions(params: ListRulesetVersionsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { rulesetId: params.rulesetId }\n const args: string[] = ['rulesetId: $rulesetId']\n const defs: string[] = ['$rulesetId: UUID!']\n\n if (params.status !== undefined) {\n defs.push('$status: RulesetVersionStatus')\n args.push('status: $status')\n variables['status'] = params.status\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query RulesetVersions(${defs.join(', ')}) {\n rulesetVersions(${args.join(', ')}) {\n ${connectionFields(RULESET_VERSION_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n rulesetVersion(): { query: string } {\n return {\n query: `\n query RulesetVersion($id: UUID!) {\n rulesetVersion(id: $id) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n rulesetValidationRules(): { query: string } {\n return {\n query: `\n query RulesetValidationRules($gameId: UUID!, $rulesetKey: String!, $rulesetVersionId: UUID) {\n rulesetValidationRules(gameId: $gameId, rulesetKey: $rulesetKey, rulesetVersionId: $rulesetVersionId)\n }\n `,\n }\n },\n\n deckValidationRules(): { query: string } {\n return {\n query: `\n query DeckValidationRules($gameId: UUID!, $rulesetKey: String!, $rulesetVersionId: UUID) {\n deckValidationRules(gameId: $gameId, rulesetKey: $rulesetKey, rulesetVersionId: $rulesetVersionId) {\n ${DECK_VALIDATION_RULES_FIELDS}\n }\n }\n `,\n }\n },\n\n rulesetVersionDraftImportPreview(): { query: string } {\n return {\n query: `\n query RulesetVersionDraftImportPreview($rulesetId: UUID!, $input: RulesetVersionDraftImportFromDatasetRecordInput!) {\n rulesetVersionDraftImportPreview(rulesetId: $rulesetId, input: $input) {\n ${RULESET_VERSION_DRAFT_IMPORT_PREVIEW_FIELDS}\n }\n }\n `,\n }\n },\n\n rulesetValidationImpact(params: RulesetValidationImpactParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = { rulesetVersionId: params.rulesetVersionId }\n const args: string[] = ['rulesetVersionId: $rulesetVersionId']\n const defs: string[] = ['$rulesetVersionId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n\n return {\n query: `\n query RulesetValidationImpact(${defs.join(', ')}) {\n rulesetValidationImpact(${args.join(', ')}) {\n ${RULESET_VALIDATION_IMPACT_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n createRuleset(): { query: string } {\n return {\n query: `\n mutation RulesetCreate($input: RulesetCreateInput!) {\n rulesetCreate(input: $input) {\n ${RULESET_FIELDS}\n }\n }\n `,\n }\n },\n\n updateRuleset(): { query: string } {\n return {\n query: `\n mutation RulesetUpdate($id: UUID!, $input: RulesetUpdateInput!) {\n rulesetUpdate(id: $id, input: $input) {\n ${RULESET_FIELDS}\n }\n }\n `,\n }\n },\n\n createRulesetVersionDraft(): { query: string } {\n return {\n query: `\n mutation RulesetVersionDraftCreate($rulesetId: UUID!, $input: RulesetVersionDraftCreateInput!) {\n rulesetVersionDraftCreate(rulesetId: $rulesetId, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n importRulesetVersionDraftFromDatasetRecord(): { query: string } {\n return {\n query: `\n mutation RulesetVersionDraftImportFromDatasetRecord($rulesetId: UUID!, $input: RulesetVersionDraftImportFromDatasetRecordInput!) {\n rulesetVersionDraftImportFromDatasetRecord(rulesetId: $rulesetId, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n updateRulesetVersionDraft(): { query: string } {\n return {\n query: `\n mutation RulesetVersionDraftUpdate($id: UUID!, $input: RulesetVersionDraftUpdateInput!) {\n rulesetVersionDraftUpdate(id: $id, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n publishRulesetVersion(): { query: string } {\n return {\n query: `\n mutation RulesetVersionPublish($id: UUID!, $input: RulesetVersionPublishInput) {\n rulesetVersionPublish(id: $id, input: $input) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n activateRulesetVersion(): { query: string } {\n return {\n query: `\n mutation RulesetVersionActivate($id: UUID!) {\n rulesetVersionActivate(id: $id) {\n ${RULESET_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n // Decks\n listMyDecks(params: ListDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query MyDecks${defStr} {\n myDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n viewerDecks(params: ViewerDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.filter !== undefined) {\n defs.push('$filter: ViewerDecksFilterInput')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query ViewerDecks${defStr} {\n viewerDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n appDecks(params: AppDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.filter !== undefined) {\n defs.push('$filter: AppDecksFilterInput')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query AppDecks${defStr} {\n appDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n publicDecks(params: PublicDecksParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.filter !== undefined) {\n defs.push('$filter: PublicDecksFilterInput')\n args.push('filter: $filter')\n variables['filter'] = params.filter\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query PublicDecks${defStr} {\n publicDecks${argStr} {\n ${connectionFields(DECK_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n fetchDeckById(): { query: string } {\n return {\n query: `\n query FetchDeck($id: UUID!) {\n fetchDeck(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckById(): { query: string } {\n return {\n query: `\n query Deck($id: UUID!, $readState: DeckReadState!, $version: DeckPublishedVersionSelector) {\n deck(id: $id, readState: $readState, version: $version) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n myDeck(): { query: string } {\n return {\n query: `\n query MyDeck($id: UUID!) {\n myDeck(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDeckBySlug(): { query: string } {\n return {\n query: `\n query FetchDeckBySlug($publisherSlug: String!, $gameKey: String!, $slug: String!) {\n fetchDeckBySlug(publisherSlug: $publisherSlug, gameKey: $gameKey, slug: $slug) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckBySlug(): { query: string } {\n return {\n query: `\n query DeckBySlug($publisherSlug: String!, $gameKey: String!, $slug: String!) {\n deckBySlug(publisherSlug: $publisherSlug, gameKey: $gameKey, slug: $slug) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n fetchDeckByExternalRef(): { query: string } {\n return {\n query: `\n query FetchDeckByExternalRef($externalRef: String!) {\n fetchDeckByExternalRef(externalRef: $externalRef) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckByExternalRef(): { query: string } {\n return {\n query: `\n query DeckByExternalRef($externalRef: String!, $readState: DeckReadState!, $version: DeckPublishedVersionSelector) {\n deckByExternalRef(externalRef: $externalRef, readState: $readState, version: $version) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deckVersion(): { query: string } {\n return {\n query: `\n query DeckVersion($id: UUID!) {\n deckVersion(id: $id) {\n ${DECK_VERSION_FIELDS}\n }\n }\n `,\n }\n },\n\n deckVersions(params: ListDeckVersionsParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = ['deckId: $deckId']\n const defs: string[] = ['$deckId: UUID!']\n\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n return {\n query: `\n query DeckVersions(${defs.join(', ')}) {\n deckVersions(${args.join(', ')}) {\n ${connectionFields(DECK_VERSION_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n deckDraftDiff(): { query: string } {\n return {\n query: `\n query DeckDraftDiff($id: UUID!) {\n deckDraftDiff(id: $id) {\n ${DECK_DIFF_FIELDS}\n }\n }\n `,\n }\n },\n\n deckVersionDiff(): { query: string } {\n return {\n query: `\n query DeckVersionDiff($fromVersionId: UUID!, $toVersionId: UUID!) {\n deckVersionDiff(fromVersionId: $fromVersionId, toVersionId: $toVersionId) {\n ${DECK_DIFF_FIELDS}\n }\n }\n `,\n }\n },\n\n deckHydrateEntries(): { query: string } {\n return {\n query: `\n query DeckHydrateEntries($input: DeckHydrateEntriesInput!) {\n deckHydrateEntries(input: $input) {\n ${DECK_HYDRATE_ENTRIES_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n deckExport(): { query: string } {\n return {\n query: `\n query DeckExport($id: UUID!, $format: DeckExportFormat!) {\n deckExport(id: $id, format: $format) {\n ${DECK_EXPORT_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n deckValidate(): { query: string } {\n return {\n query: `\n query DeckValidate($id: UUID!, $input: DeckValidateInput) {\n deckValidate(id: $id, input: $input) {\n ${DECK_VALIDATION_FIELDS}\n }\n }\n `,\n }\n },\n\n deckSectionDefinitions(params: DeckSectionDefinitionsParams = {}): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherSlug !== undefined) {\n defs.push('$publisherSlug: String')\n args.push('publisherSlug: $publisherSlug')\n variables['publisherSlug'] = params.publisherSlug\n }\n if (params.gameKey !== undefined) {\n defs.push('$gameKey: String')\n args.push('gameKey: $gameKey')\n variables['gameKey'] = params.gameKey\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n if (params.rulesetKey !== undefined) {\n defs.push('$rulesetKey: String')\n args.push('rulesetKey: $rulesetKey')\n variables['rulesetKey'] = params.rulesetKey\n }\n if (params.rulesetVersionId !== undefined) {\n defs.push('$rulesetVersionId: UUID')\n args.push('rulesetVersionId: $rulesetVersionId')\n variables['rulesetVersionId'] = params.rulesetVersionId\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query DeckSectionDefinitions${defStr} {\n deckSectionDefinitions${argStr} {\n ${DECK_SECTION_DEFINITION_FIELDS}\n }\n }\n `,\n variables,\n }\n },\n\n deckCollaborators(): { query: string } {\n return {\n query: `\n query DeckCollaborators($deckId: UUID!) {\n deckCollaborators(deckId: $deckId) {\n ${DECK_COLLABORATOR_FIELDS}\n }\n }\n `,\n }\n },\n\n deckApiApplicationAccesses(): { query: string } {\n return {\n query: `\n query DeckApiApplicationAccesses($deckId: UUID!, $includeRevoked: Boolean) {\n deckApiApplicationAccesses(deckId: $deckId, includeRevoked: $includeRevoked) {\n ${DECK_API_APPLICATION_ACCESS_FIELDS}\n }\n }\n `,\n }\n },\n\n myDeckApiApplicationAccesses(): { query: string } {\n return {\n query: `\n query MyDeckApiApplicationAccesses($applicationId: UUID) {\n myDeckApiApplicationAccesses(applicationId: $applicationId) {\n ${DECK_API_APPLICATION_ACCESS_FIELDS}\n }\n }\n `,\n }\n },\n\n deckImportFormats(params: ListDeckImportFormatsParams): {\n query: string\n variables: Record<string, unknown>\n } {\n const variables: Record<string, unknown> = {}\n const args: string[] = []\n const defs: string[] = []\n\n if (params.publisherId !== undefined) {\n defs.push('$publisherId: UUID')\n args.push('publisherId: $publisherId')\n variables['publisherId'] = params.publisherId\n }\n if (params.gameId !== undefined) {\n defs.push('$gameId: UUID')\n args.push('gameId: $gameId')\n variables['gameId'] = params.gameId\n }\n\n if (params.includeArchived !== undefined) {\n defs.push('$includeArchived: Boolean')\n args.push('includeArchived: $includeArchived')\n variables['includeArchived'] = params.includeArchived\n }\n if (params.first !== undefined) {\n defs.push('$first: Int')\n args.push('first: $first')\n variables['first'] = params.first\n }\n if (params.after !== undefined) {\n defs.push('$after: String')\n args.push('after: $after')\n variables['after'] = params.after\n }\n\n const defStr = defs.length > 0 ? `(${defs.join(', ')})` : ''\n const argStr = args.length > 0 ? `(${args.join(', ')})` : ''\n\n return {\n query: `\n query DeckImportFormats${defStr} {\n deckImportFormats${argStr} {\n ${connectionFields(DECK_IMPORT_FORMAT_DEFINITION_FIELDS)}\n }\n }\n `,\n variables,\n }\n },\n\n deckImportFormat(): { query: string } {\n return {\n query: `\n query DeckImportFormat($id: UUID, $gameId: UUID, $key: String) {\n deckImportFormat(id: $id, gameId: $gameId, key: $key) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n deckImportFormatTest(): { query: string } {\n return {\n query: `\n query DeckImportFormatTest($input: DeckImportFormatTestInput!) {\n deckImportFormatTest(input: $input) {\n ${DECK_IMPORT_FORMAT_TEST_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n createDeck(): { query: string } {\n return {\n query: `\n mutation DeckCreate($input: DeckCreateInput!) {\n deckCreate(input: $input) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n updateDeck(): { query: string } {\n return {\n query: `\n mutation DeckUpdate($id: UUID!, $input: DeckUpdateInput!) {\n deckUpdate(id: $id, input: $input) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n deleteDeck(): { query: string } {\n return {\n query: `\n mutation DeckDelete($id: UUID!) {\n deckDelete(id: $id)\n }\n `,\n }\n },\n\n archiveDeck(): { query: string } {\n return {\n query: `\n mutation DeckArchive($id: UUID!) {\n deckArchive(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n restoreDeck(): { query: string } {\n return {\n query: `\n mutation DeckRestore($id: UUID!) {\n deckRestore(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n unpublishDeck(): { query: string } {\n return {\n query: `\n mutation DeckUnpublish($id: UUID!) {\n deckUnpublish(id: $id) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n addDeckEntry(): { query: string } {\n return {\n query: `\n mutation DeckEntryAdd($input: DeckEntryAddInput!) {\n deckEntryAdd(input: $input) {\n ${DECK_ENTRY_MUTATION_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n updateDeckEntry(): { query: string } {\n return {\n query: `\n mutation DeckEntryUpdate($id: UUID!, $input: DeckEntryUpdateInput!) {\n deckEntryUpdate(id: $id, input: $input) {\n ${DECK_ENTRY_MUTATION_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n removeDeckEntry(): { query: string } {\n return {\n query: `\n mutation DeckEntryRemove($id: UUID!, $expectedDraftRevision: Int!) {\n deckEntryRemove(id: $id, expectedDraftRevision: $expectedDraftRevision) {\n ${DECK_ENTRY_MUTATION_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n reorderDeckEntries(): { query: string } {\n return {\n query: `\n mutation DeckEntryReorder($deckId: UUID!, $input: DeckEntryReorderInput!) {\n deckEntryReorder(deckId: $deckId, input: $input) {\n ${DECK_ENTRY_REORDER_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n replaceDeckEntries(): { query: string } {\n return {\n query: `\n mutation DeckEntriesReplace($deckId: UUID!, $input: DeckEntriesReplaceInput!) {\n deckEntriesReplace(deckId: $deckId, input: $input) {\n ${DECK_ENTRIES_REPLACE_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n importDeck(): { query: string } {\n return {\n query: `\n mutation DeckImport($input: DeckImportInput!) {\n deckImport(input: $input) {\n ${DECK_IMPORT_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n createDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatCreate($input: DeckImportFormatCreateInput!) {\n deckImportFormatCreate(input: $input) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n updateDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatUpdate($id: UUID!, $input: DeckImportFormatUpdateInput!) {\n deckImportFormatUpdate(id: $id, input: $input) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n archiveDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatArchive($id: UUID!) {\n deckImportFormatArchive(id: $id) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n unarchiveDeckImportFormat(): { query: string } {\n return {\n query: `\n mutation DeckImportFormatUnarchive($id: UUID!) {\n deckImportFormatUnarchive(id: $id) {\n ${DECK_IMPORT_FORMAT_DEFINITION_FIELDS}\n }\n }\n `,\n }\n },\n\n upsertDeckByExternalRef(): { query: string } {\n return {\n query: `\n mutation DeckUpsertByExternalRef($input: DeckUpsertByExternalRefInput!) {\n deckUpsertByExternalRef(input: $input) {\n deck {\n ${DECK_FIELDS}\n }\n created\n idempotentReplay\n }\n }\n `,\n }\n },\n\n claimDeck(): { query: string } {\n return {\n query: `\n mutation DeckClaim($id: UUID!, $input: DeckClaimInput!) {\n deckClaim(id: $id, input: $input) {\n ${DECK_OWNERSHIP_TRANSFER_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n transferDeckOwnership(): { query: string } {\n return {\n query: `\n mutation DeckTransferOwnership($id: UUID!, $input: DeckTransferOwnershipInput!) {\n deckTransferOwnership(id: $id, input: $input) {\n ${DECK_OWNERSHIP_TRANSFER_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n copyDeck(): { query: string } {\n return {\n query: `\n mutation DeckCopy($id: UUID!, $input: DeckCopyInput!) {\n deckCopy(id: $id, input: $input) {\n ${DECK_COPY_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n publishDeck(): { query: string } {\n return {\n query: `\n mutation DeckPublish($id: UUID!, $input: DeckPublishInput!) {\n deckPublish(id: $id, input: $input) {\n ${DECK_PUBLISH_PAYLOAD_FIELDS}\n }\n }\n `,\n }\n },\n\n removeInvalidDeckEntries(): { query: string } {\n return {\n query: `\n mutation DeckRemoveInvalidEntries($id: UUID!, $input: DeckRemoveInvalidEntriesInput!) {\n deckRemoveInvalidEntries(id: $id, input: $input) {\n ${DECK_FIELDS}\n }\n }\n `,\n }\n },\n\n upsertDeckCollaborator(): { query: string } {\n return {\n query: `\n mutation DeckCollaboratorUpsert($deckId: UUID!, $accountId: UUID!, $role: DeckCollaboratorRole!) {\n deckCollaboratorUpsert(deckId: $deckId, accountId: $accountId, role: $role) {\n ${DECK_COLLABORATOR_FIELDS}\n }\n }\n `,\n }\n },\n\n removeDeckCollaborator(): { query: string } {\n return {\n query: `\n mutation DeckCollaboratorRemove($deckId: UUID!, $accountId: UUID!) {\n deckCollaboratorRemove(deckId: $deckId, accountId: $accountId)\n }\n `,\n }\n },\n\n createDeckTokenIssuer(): { query: string } {\n return {\n query: `\n mutation DeckTokenIssuerCreate($input: DeckTokenIssuerCreateInput!) {\n deckTokenIssuerCreate(input: $input) {\n ${DECK_TOKEN_ISSUER_FIELDS}\n }\n }\n `,\n }\n },\n\n revokeDeckTokenIssuer(): { query: string } {\n return {\n query: `\n mutation DeckTokenIssuerRevoke($id: UUID!) {\n deckTokenIssuerRevoke(id: $id)\n }\n `,\n }\n },\n\n revokeDeckTokenIssuerSigningKey(): { query: string } {\n return {\n query: `\n mutation DeckTokenIssuerSigningKeyRevoke($id: UUID!) {\n deckTokenIssuerSigningKeyRevoke(id: $id) {\n ${DECK_TOKEN_ISSUER_FIELDS}\n }\n }\n `,\n }\n },\n\n exchangeDeckToken(): { query: string } {\n return {\n query: `\n mutation DeckTokenExchange($input: DeckTokenExchangeInput!) {\n deckTokenExchange(input: $input) {\n token\n deckToken {\n ${DECK_TOKEN_FIELDS}\n }\n }\n }\n `,\n }\n },\n\n revokeDeckToken(): { query: string } {\n return {\n query: `\n mutation DeckTokenRevoke($id: UUID!) {\n deckTokenRevoke(id: $id)\n }\n `,\n }\n },\n\n grantDeckApiApplicationAccess(): { query: string } {\n return {\n query: `\n mutation DeckApiApplicationAccessGrant($input: DeckAPIApplicationAccessGrantInput!) {\n deckApiApplicationAccessGrant(input: $input) {\n ${DECK_API_APPLICATION_ACCESS_FIELDS}\n }\n }\n `,\n }\n },\n\n revokeDeckApiApplicationAccess(): { query: string } {\n return {\n query: `\n mutation DeckApiApplicationAccessRevoke($deckId: UUID!, $apiApplicationId: UUID!) {\n deckApiApplicationAccessRevoke(deckId: $deckId, apiApplicationId: $apiApplicationId)\n }\n `,\n }\n },\n\n rulesetValidationRulesVariables(\n gameId: string,\n rulesetKey: string,\n rulesetVersionId?: string\n ): Record<string, unknown> {\n return rulesetVersionId === undefined\n ? { gameId, rulesetKey }\n : { gameId, rulesetKey, rulesetVersionId }\n },\n\n rulesetVersionDraftImportPreviewVariables(\n rulesetId: string,\n input: RulesetVersionDraftImportFromDatasetRecordInput\n ): Record<string, unknown> {\n return { rulesetId, input }\n },\n\n rulesetCreateVariables(input: RulesetCreateInput): Record<string, unknown> {\n return { input }\n },\n\n rulesetUpdateVariables(id: string, input: RulesetUpdateInput): Record<string, unknown> {\n return { id, input }\n },\n\n rulesetVersionDraftCreateVariables(\n rulesetId: string,\n input: RulesetVersionDraftCreateInput\n ): Record<string, unknown> {\n return { rulesetId, input }\n },\n\n rulesetVersionDraftImportFromDatasetRecordVariables(\n rulesetId: string,\n input: RulesetVersionDraftImportFromDatasetRecordInput\n ): Record<string, unknown> {\n return { rulesetId, input }\n },\n\n rulesetVersionDraftUpdateVariables(\n id: string,\n input: RulesetVersionDraftUpdateInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n rulesetVersionPublishVariables(\n id: string,\n input?: RulesetVersionPublishInput\n ): Record<string, unknown> {\n return input === undefined ? { id } : { id, input }\n },\n\n deckCreateVariables(input: DeckCreateInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckUpdateVariables(id: string, input: DeckUpdateInput): Record<string, unknown> {\n return { id, input: normalizeDeckJsonInput(input) }\n },\n\n deckEntryAddVariables(input: DeckEntryAddInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckEntryUpdateVariables(id: string, input: DeckEntryUpdateInput): Record<string, unknown> {\n return { id, input: normalizeDeckJsonInput(input) }\n },\n\n deckEntryRemoveVariables(id: string, expectedDraftRevision: number): Record<string, unknown> {\n return { id, expectedDraftRevision }\n },\n\n deckEntryReorderVariables(deckId: string, input: DeckEntryReorderInput): Record<string, unknown> {\n return { deckId, input }\n },\n\n deckEntriesReplaceVariables(\n deckId: string,\n input: DeckEntriesReplaceInput\n ): Record<string, unknown> {\n return { deckId, input: normalizeDeckJsonInput(input) }\n },\n\n deckImportVariables(input: DeckImportInput): Record<string, unknown> {\n return { input }\n },\n\n deckImportFormatCreateVariables(input: DeckImportFormatCreateInput): Record<string, unknown> {\n return { input }\n },\n\n deckImportFormatUpdateVariables(\n id: string,\n input: DeckImportFormatUpdateInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n deckImportFormatTestVariables(input: DeckImportFormatTestInput): Record<string, unknown> {\n return { input }\n },\n\n deckUpsertByExternalRefVariables(input: DeckUpsertByExternalRefInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckReadVariables(\n id: string,\n readState: DeckReadState,\n version?: DeckPublishedVersionSelector\n ): Record<string, unknown> {\n return { id, readState, version }\n },\n\n deckExternalRefReadVariables(\n externalRef: string,\n readState: DeckReadState,\n version?: DeckPublishedVersionSelector\n ): Record<string, unknown> {\n return { externalRef, readState, version }\n },\n\n deckClaimVariables(id: string, input: DeckClaimInput): Record<string, unknown> {\n return { id, input }\n },\n\n deckTransferOwnershipVariables(\n id: string,\n input: DeckTransferOwnershipInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n deckCopyVariables(id: string, input: DeckCopyInput): Record<string, unknown> {\n return { id, input }\n },\n\n deckPublishVariables(id: string, input: DeckPublishInput): Record<string, unknown> {\n return { id, input }\n },\n\n deckValidateVariables(id: string, input?: DeckValidateInput): Record<string, unknown> {\n return input === undefined ? { id } : { id, input }\n },\n\n deckRemoveInvalidEntriesVariables(\n id: string,\n input: DeckRemoveInvalidEntriesInput\n ): Record<string, unknown> {\n return { id, input }\n },\n\n deckHydrateEntriesVariables(input: DeckHydrateEntriesInput): Record<string, unknown> {\n return { input: normalizeDeckJsonInput(input) }\n },\n\n deckExportVariables(id: string, format: DeckExportFormat): Record<string, unknown> {\n return { id, format }\n },\n\n deckVersionDiffVariables(fromVersionId: string, toVersionId: string): Record<string, unknown> {\n return { fromVersionId, toVersionId }\n },\n\n deckCollaboratorVariables(\n deckId: string,\n accountId: string,\n role?: DeckCollaboratorRole\n ): Record<string, unknown> {\n return role === undefined ? { deckId, accountId } : { deckId, accountId, role }\n },\n\n deckTokenIssuerCreateVariables(input: DeckTokenIssuerCreateInput): Record<string, unknown> {\n return { input }\n },\n\n deckTokenExchangeVariables(input: DeckTokenExchangeInput): Record<string, unknown> {\n return { input }\n },\n\n deckApiApplicationAccessesVariables(\n deckId: string,\n includeRevoked?: boolean\n ): Record<string, unknown> {\n return includeRevoked === undefined ? { deckId } : { deckId, includeRevoked }\n },\n\n myDeckApiApplicationAccessesVariables(applicationId?: string): Record<string, unknown> {\n return applicationId === undefined ? {} : { applicationId }\n },\n\n deckApiApplicationAccessGrantVariables(\n input: DeckAPIApplicationAccessGrantInput\n ): Record<string, unknown> {\n return { input }\n },\n\n deckApiApplicationAccessRevokeVariables(\n deckId: string,\n apiApplicationId: string\n ): Record<string, unknown> {\n return { deckId, apiApplicationId }\n },\n\n gameCreateVariables(input: GameCreateInput): Record<string, unknown> {\n return { input }\n },\n\n gameUpdateVariables(id: string, input: GameUpdateInput): Record<string, unknown> {\n return { id, input }\n },\n\n datasetImportPreviewVariables(input: DatasetImportPreviewInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportValidateVariables(input: DatasetImportValidateInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportFromFileVariables(input: DatasetImportFromFileInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportFromPayloadVariables(input: DatasetImportFromPayloadInput): Record<string, unknown> {\n return { input }\n },\n\n datasetImportFromUrlVariables(input: DatasetImportFromUrlInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportPreviewVariables(input: GameImportPreviewInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportFromFileVariables(input: GameImportFromFileInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportFromPayloadVariables(input: GameImportFromPayloadInput): Record<string, unknown> {\n return { input }\n },\n\n gameImportFromUrlVariables(input: GameImportFromUrlInput): Record<string, unknown> {\n return { input }\n },\n\n datasetRecordsUpsertVariables(input: DatasetRecordsUpsertInput): Record<string, unknown> {\n return { input }\n },\n\n datasetRecordsDeleteVariables(input: DatasetRecordsDeleteInput): Record<string, unknown> {\n return { input }\n },\n\n fileUploadRequestVariables(input: FileUploadInput): Record<string, unknown> {\n return { input }\n },\n\n createScanUploadSessionVariables(input: CreateScanUploadSessionInput): Record<string, unknown> {\n return { input }\n },\n\n confirmScanUploadVariables(input: ConfirmScanUploadInput): Record<string, unknown> {\n return { input }\n },\n\n createScanJobVariables(input: CreateScanJobInput): Record<string, unknown> {\n return { input }\n },\n\n submitScanFeedbackVariables(input: SubmitScanFeedbackInput): Record<string, unknown> {\n return { input }\n },\n\n scanMetricsVariables(input: ScanMetricsInput): Record<string, unknown> {\n return { input }\n },\n\n resolveScanTemplateVariables(input: ResolveScanTemplateInput): Record<string, unknown> {\n return { input }\n },\n\n scanTemplatesVariables(input: ScanTemplatesInput): Record<string, unknown> {\n return { input }\n },\n\n createScanTemplateVariables(input: SaveScanTemplateInput): Record<string, unknown> {\n return { input }\n },\n\n updateScanTemplateVariables(id: string, input: SaveScanTemplateInput): Record<string, unknown> {\n return { id, input }\n },\n\n previewScanTemplateVariables(input: PreviewScanTemplateInput): Record<string, unknown> {\n return { input }\n },\n\n gameScanRegionsVariables(\n publisherSlug: string,\n gameKey: string,\n includeInactive?: boolean\n ): Record<string, unknown> {\n return includeInactive === undefined\n ? { publisherSlug, gameKey }\n : { publisherSlug, gameKey, includeInactive }\n },\n\n datasetExportVariables(input: DatasetExportInput): Record<string, unknown> {\n return { input }\n },\n\n // API Key Info\n fetchMe(): { query: string } {\n return {\n query: `\n query FetchMe {\n fetchMe {\n application {\n id\n name\n description\n environment\n apiKeyPrefix\n allowedOrigins\n allowedIps\n createdAt\n updatedAt\n lastUsedAt\n }\n account {\n id\n displayName\n createdAt\n }\n }\n }\n `,\n }\n },\n}\n","/**\n * Collection class for paginated results with async iteration support\n */\n\nimport type { Connection, PageInfo, Edge } from './types.js'\n\nexport type NextPageLoader<T> = (cursor: string) => Promise<Collection<T>>\n\n/**\n * Represents a paginated collection of results from the API.\n * Implements AsyncIterable for easy iteration through all pages.\n */\nexport class Collection<T> implements AsyncIterable<T> {\n /** Total count of matching records across all pages */\n readonly totalCount: number\n\n /** Pagination info */\n readonly pageInfo: PageInfo\n\n /** Items in the current page */\n readonly items: T[]\n\n /** Function to load the next page */\n private nextPageLoader?: NextPageLoader<T>\n\n constructor(\n data: Connection<T>,\n options: {\n nextPageLoader?: NextPageLoader<T>\n itemTransformer?: (node: T) => T\n } = {}\n ) {\n this.totalCount = data.totalCount\n this.pageInfo = data.pageInfo\n this.items = data.edges.map((edge: Edge<T>) =>\n options.itemTransformer ? options.itemTransformer(edge.node) : edge.node\n )\n this.nextPageLoader = options.nextPageLoader\n }\n\n /** Check if there are more pages */\n get hasNextPage(): boolean {\n return this.pageInfo.hasNextPage\n }\n\n /** Check if there are previous pages */\n get hasPreviousPage(): boolean {\n return this.pageInfo.hasPreviousPage\n }\n\n /** Get the cursor for the next page */\n get endCursor(): string | null {\n return this.pageInfo.endCursor\n }\n\n /** Get the cursor for the previous page */\n get startCursor(): string | null {\n return this.pageInfo.startCursor\n }\n\n /** Number of items in the current page */\n get length(): number {\n return this.items.length\n }\n\n /** Check if the current page is empty */\n get isEmpty(): boolean {\n return this.items.length === 0\n }\n\n /** Get the first item */\n get first(): T | undefined {\n return this.items[0]\n }\n\n /** Get the last item */\n get last(): T | undefined {\n return this.items[this.items.length - 1]\n }\n\n /**\n * Fetch the next page of results\n *\n * @returns The next page collection, or null if no more pages\n * @throws Error if no next page loader is configured\n */\n async nextPage(): Promise<Collection<T> | null> {\n if (!this.hasNextPage) {\n return null\n }\n\n if (!this.nextPageLoader) {\n throw new Error('No next page loader configured')\n }\n\n if (!this.endCursor) {\n return null\n }\n\n return this.nextPageLoader(this.endCursor)\n }\n\n /**\n * Async iterator that automatically paginates through all results\n *\n * @example\n * for await (const record of collection) {\n * console.log(record.name)\n * }\n *\n * @example\n * const allRecords = []\n * for await (const record of collection) {\n * allRecords.push(record)\n * }\n */\n async *[Symbol.asyncIterator](): AsyncIterator<T> {\n let current: Collection<T> | null = this\n\n while (current) {\n for (const item of current.items) {\n yield item\n }\n\n if (!current.hasNextPage) {\n break\n }\n\n current = await current.nextPage()\n }\n }\n\n /**\n * Iterate through all results, calling a callback for each item\n * Similar to Array.forEach but async and auto-paginating\n *\n * @example\n * await collection.forEach(async (record) => {\n * await processRecord(record)\n * })\n */\n async forEach(callback: (item: T, index: number) => void | Promise<void>): Promise<void> {\n let index = 0\n for await (const item of this) {\n await callback(item, index++)\n }\n }\n\n /**\n * Map over all results, returning a new array\n * Auto-paginates through all pages\n *\n * @example\n * const names = await collection.map(record => record.name)\n */\n async map<U>(callback: (item: T, index: number) => U | Promise<U>): Promise<U[]> {\n const results: U[] = []\n let index = 0\n for await (const item of this) {\n results.push(await callback(item, index++))\n }\n return results\n }\n\n /**\n * Filter results, returning items that match the predicate\n * Auto-paginates through all pages\n *\n * @example\n * const rareCards = await collection.filter(card => card.rarity === 'rare')\n */\n async filter(predicate: (item: T, index: number) => boolean | Promise<boolean>): Promise<T[]> {\n const results: T[] = []\n let index = 0\n for await (const item of this) {\n if (await predicate(item, index++)) {\n results.push(item)\n }\n }\n return results\n }\n\n /**\n * Find the first item matching a predicate\n * Stops iterating once found\n *\n * @example\n * const pikachu = await collection.find(card => card.name === 'Pikachu')\n */\n async find(\n predicate: (item: T, index: number) => boolean | Promise<boolean>\n ): Promise<T | undefined> {\n let index = 0\n for await (const item of this) {\n if (await predicate(item, index++)) {\n return item\n }\n }\n return undefined\n }\n\n /**\n * Take the first n items\n * Stops fetching pages once n items are collected\n *\n * @example\n * const first100 = await collection.take(100)\n */\n async take(n: number): Promise<T[]> {\n const results: T[] = []\n for await (const item of this) {\n if (results.length >= n) {\n break\n }\n results.push(item)\n }\n return results\n }\n\n /**\n * Collect all items into an array\n * Auto-paginates through all pages\n *\n * @example\n * const allRecords = await collection.toArray()\n */\n async toArray(): Promise<T[]> {\n const results: T[] = []\n for await (const item of this) {\n results.push(item)\n }\n return results\n }\n\n /**\n * Iterate in batches (similar to Rails find_in_batches)\n *\n * @example\n * for await (const batch of collection.batches()) {\n * await processBatch(batch)\n * }\n */\n async *batches(): AsyncGenerator<T[]> {\n let current: Collection<T> | null = this\n\n while (current) {\n if (current.items.length > 0) {\n yield current.items\n }\n\n if (!current.hasNextPage) {\n break\n }\n\n current = await current.nextPage()\n }\n }\n\n /**\n * Iterate one item at a time with batched fetching (similar to Rails find_each)\n *\n * @example\n * for await (const item of collection.each()) {\n * await processItem(item)\n * }\n */\n each(): AsyncIterable<T> {\n return this\n }\n}\n"],"mappings":"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","names":[]}