@carddb/client 0.4.5 → 0.5.0

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.
package/dist/index.cjs CHANGED
@@ -902,6 +902,36 @@ var DatasetsResource = class extends BaseResource {
902
902
  return result["fetchDatasets"] ?? [];
903
903
  });
904
904
  }
905
+ async filterValues(idOrPublisherSlug, fieldsOrGameKey, datasetKeyOrFields, fieldsOrOptions, maybeOptions) {
906
+ let queryParams;
907
+ let options;
908
+ if (Array.isArray(fieldsOrGameKey)) {
909
+ queryParams = { id: idOrPublisherSlug, fields: fieldsOrGameKey };
910
+ options = datasetKeyOrFields ?? {};
911
+ } else {
912
+ queryParams = {
913
+ publisherSlug: idOrPublisherSlug,
914
+ gameKey: fieldsOrGameKey,
915
+ datasetKey: datasetKeyOrFields,
916
+ fields: fieldsOrOptions
917
+ };
918
+ options = maybeOptions ?? {};
919
+ this.validateAccess(queryParams.publisherSlug, queryParams.gameKey);
920
+ }
921
+ const { query, variables } = core.QueryBuilder.fetchDatasetFilterValues({
922
+ ...queryParams,
923
+ search: options.search,
924
+ includeCounts: options.includeCounts,
925
+ first: options.first,
926
+ after: options.after
927
+ });
928
+ const key = this.cacheKey("datasets", "filterValues", variables);
929
+ return this.withCache(key, "datasets", options, async () => {
930
+ const result = await this.connection.execute(query, variables);
931
+ const dataset = result["fetchDataset"];
932
+ return dataset?.filterValues ?? [];
933
+ });
934
+ }
905
935
  };
906
936
  var DecksResource = class extends BaseResource {
907
937
  constructor(connection, config) {
@@ -2004,6 +2034,238 @@ var RulesResource = class extends BaseResource {
2004
2034
  });
2005
2035
  }
2006
2036
  };
2037
+ var RulesetsResource = class extends BaseResource {
2038
+ constructor(connection, config) {
2039
+ super(connection, config);
2040
+ }
2041
+ /**
2042
+ * List first-class rulesets for a game.
2043
+ */
2044
+ async list(gameId, options = {}) {
2045
+ const { query, variables } = core.QueryBuilder.rulesets({
2046
+ gameId,
2047
+ includeArchived: options.includeArchived,
2048
+ first: options.first,
2049
+ after: options.after
2050
+ });
2051
+ const key = this.cacheKey("rulesets", "list", variables);
2052
+ const data = await this.withCache(key, "rulesets", options, async () => {
2053
+ const result = await this.connection.execute(query, variables);
2054
+ return result["rulesets"];
2055
+ });
2056
+ return new core.Collection(data, {
2057
+ nextPageLoader: async (cursor) => this.list(gameId, { ...options, after: cursor })
2058
+ });
2059
+ }
2060
+ /**
2061
+ * List active public rulesets for a public game.
2062
+ */
2063
+ async listPublic(gameId, options = {}) {
2064
+ const { query, variables } = core.QueryBuilder.publicRulesets({
2065
+ gameId,
2066
+ first: options.first,
2067
+ after: options.after
2068
+ });
2069
+ const key = this.cacheKey("rulesets", "listPublic", variables);
2070
+ const data = await this.withCache(key, "rulesets", options, async () => {
2071
+ const result = await this.connection.execute(query, variables);
2072
+ return result["publicRulesets"];
2073
+ });
2074
+ return new core.Collection(data, {
2075
+ nextPageLoader: async (cursor) => this.listPublic(gameId, { ...options, after: cursor })
2076
+ });
2077
+ }
2078
+ /**
2079
+ * Get one ruleset by UUID.
2080
+ */
2081
+ async get(id, options = {}) {
2082
+ const variables = { id };
2083
+ const key = this.cacheKey("rulesets", "get", variables);
2084
+ return this.withCache(key, "rulesets", options, async () => {
2085
+ const { query, variables: variables2 } = core.QueryBuilder.ruleset({ id });
2086
+ const result = await this.connection.execute(query, variables2);
2087
+ return result["ruleset"] ?? null;
2088
+ });
2089
+ }
2090
+ /**
2091
+ * Get one ruleset by game ID and stable key.
2092
+ */
2093
+ async getByKey(options) {
2094
+ const variables = { gameId: options.gameId, key: options.key };
2095
+ const cacheKey2 = this.cacheKey("rulesets", "getByKey", variables);
2096
+ return this.withCache(cacheKey2, "rulesets", options, async () => {
2097
+ const { query, variables: variables2 } = core.QueryBuilder.ruleset({
2098
+ gameId: options.gameId,
2099
+ key: options.key
2100
+ });
2101
+ const result = await this.connection.execute(query, variables2);
2102
+ return result["ruleset"] ?? null;
2103
+ });
2104
+ }
2105
+ /**
2106
+ * List immutable versions for a ruleset.
2107
+ */
2108
+ async versions(rulesetId, options = {}) {
2109
+ const { query, variables } = core.QueryBuilder.rulesetVersions({
2110
+ rulesetId,
2111
+ status: options.status,
2112
+ first: options.first,
2113
+ after: options.after
2114
+ });
2115
+ const key = this.cacheKey("rulesets", "versions", variables);
2116
+ const data = await this.withCache(key, "rulesets", options, async () => {
2117
+ const result = await this.connection.execute(query, variables);
2118
+ return result["rulesetVersions"];
2119
+ });
2120
+ return new core.Collection(data, {
2121
+ nextPageLoader: async (cursor) => this.versions(rulesetId, { ...options, after: cursor })
2122
+ });
2123
+ }
2124
+ /**
2125
+ * Get one immutable ruleset version by UUID.
2126
+ */
2127
+ async getVersion(id, options = {}) {
2128
+ const key = this.cacheKey("rulesets", "getVersion", { id });
2129
+ return this.withCache(key, "rulesets", options, async () => {
2130
+ const { query } = core.QueryBuilder.rulesetVersion();
2131
+ const result = await this.connection.execute(query, { id });
2132
+ return result["rulesetVersion"] ?? null;
2133
+ });
2134
+ }
2135
+ /**
2136
+ * Get the canonical active rules JSON for a ruleset.
2137
+ */
2138
+ async validationRules(gameId, rulesetKey, options = {}) {
2139
+ const variables = core.QueryBuilder.rulesetValidationRulesVariables(
2140
+ gameId,
2141
+ rulesetKey,
2142
+ options.rulesetVersionId
2143
+ );
2144
+ const key = this.cacheKey("rulesets", "validationRules", variables);
2145
+ return this.withCache(key, "rulesets", options, async () => {
2146
+ const { query } = core.QueryBuilder.rulesetValidationRules();
2147
+ const result = await this.connection.execute(query, variables);
2148
+ return result["rulesetValidationRules"] ?? null;
2149
+ });
2150
+ }
2151
+ /**
2152
+ * Get typed validation rules, including parsed deck sections.
2153
+ */
2154
+ async deckValidationRules(gameId, rulesetKey, options = {}) {
2155
+ const variables = core.QueryBuilder.rulesetValidationRulesVariables(
2156
+ gameId,
2157
+ rulesetKey,
2158
+ options.rulesetVersionId
2159
+ );
2160
+ const key = this.cacheKey("rulesets", "deckValidationRules", variables);
2161
+ return this.withCache(key, "rulesets", options, async () => {
2162
+ const { query } = core.QueryBuilder.deckValidationRules();
2163
+ const result = await this.connection.execute(query, variables);
2164
+ return result["deckValidationRules"] ?? null;
2165
+ });
2166
+ }
2167
+ /**
2168
+ * Preview compiling a legacy formats dataset record into a draft ruleset version.
2169
+ */
2170
+ async previewImport(rulesetId, input) {
2171
+ const { query } = core.QueryBuilder.rulesetVersionDraftImportPreview();
2172
+ const variables = core.QueryBuilder.rulesetVersionDraftImportPreviewVariables(rulesetId, input);
2173
+ const result = await this.connection.execute(query, variables);
2174
+ return result["rulesetVersionDraftImportPreview"];
2175
+ }
2176
+ /**
2177
+ * Preview validation impact for decks that use a ruleset version's parent ruleset.
2178
+ */
2179
+ async validationImpact(rulesetVersionId, options = {}) {
2180
+ const { query, variables } = core.QueryBuilder.rulesetValidationImpact({
2181
+ rulesetVersionId,
2182
+ first: options.first
2183
+ });
2184
+ const key = this.cacheKey("rulesets", "validationImpact", variables);
2185
+ return this.withCache(key, "rulesets", options, async () => {
2186
+ const result = await this.connection.execute(query, variables);
2187
+ return result["rulesetValidationImpact"];
2188
+ });
2189
+ }
2190
+ /**
2191
+ * Create a first-class ruleset. Requires a server-side secret credential.
2192
+ */
2193
+ async create(input) {
2194
+ this.config.requireSecretCredential("rulesets.create");
2195
+ const { query } = core.QueryBuilder.createRuleset();
2196
+ const result = await this.connection.execute(query, core.QueryBuilder.rulesetCreateVariables(input));
2197
+ return result["rulesetCreate"];
2198
+ }
2199
+ /**
2200
+ * Update editable ruleset metadata. Requires a server-side secret credential.
2201
+ */
2202
+ async update(id, input) {
2203
+ this.config.requireSecretCredential("rulesets.update");
2204
+ const { query } = core.QueryBuilder.updateRuleset();
2205
+ const result = await this.connection.execute(
2206
+ query,
2207
+ core.QueryBuilder.rulesetUpdateVariables(id, input)
2208
+ );
2209
+ return result["rulesetUpdate"];
2210
+ }
2211
+ /**
2212
+ * Create a draft ruleset version from an explicit canonical rules payload.
2213
+ */
2214
+ async createDraft(rulesetId, input) {
2215
+ this.config.requireSecretCredential("rulesets.createDraft");
2216
+ const { query } = core.QueryBuilder.createRulesetVersionDraft();
2217
+ const result = await this.connection.execute(
2218
+ query,
2219
+ core.QueryBuilder.rulesetVersionDraftCreateVariables(rulesetId, input)
2220
+ );
2221
+ return result["rulesetVersionDraftCreate"];
2222
+ }
2223
+ /**
2224
+ * Create a draft by compiling a legacy formats dataset record.
2225
+ */
2226
+ async importDraftFromDatasetRecord(rulesetId, input) {
2227
+ this.config.requireSecretCredential("rulesets.importDraftFromDatasetRecord");
2228
+ const { query } = core.QueryBuilder.importRulesetVersionDraftFromDatasetRecord();
2229
+ const result = await this.connection.execute(
2230
+ query,
2231
+ core.QueryBuilder.rulesetVersionDraftImportFromDatasetRecordVariables(rulesetId, input)
2232
+ );
2233
+ return result["rulesetVersionDraftImportFromDatasetRecord"];
2234
+ }
2235
+ /**
2236
+ * Update a draft ruleset version.
2237
+ */
2238
+ async updateDraft(id, input) {
2239
+ this.config.requireSecretCredential("rulesets.updateDraft");
2240
+ const { query } = core.QueryBuilder.updateRulesetVersionDraft();
2241
+ const result = await this.connection.execute(
2242
+ query,
2243
+ core.QueryBuilder.rulesetVersionDraftUpdateVariables(id, input)
2244
+ );
2245
+ return result["rulesetVersionDraftUpdate"];
2246
+ }
2247
+ /**
2248
+ * Publish a draft and make it the current active ruleset version.
2249
+ */
2250
+ async publishVersion(id, input) {
2251
+ this.config.requireSecretCredential("rulesets.publishVersion");
2252
+ const { query } = core.QueryBuilder.publishRulesetVersion();
2253
+ const result = await this.connection.execute(
2254
+ query,
2255
+ core.QueryBuilder.rulesetVersionPublishVariables(id, input)
2256
+ );
2257
+ return result["rulesetVersionPublish"];
2258
+ }
2259
+ /**
2260
+ * Activate an already-published version for rollback.
2261
+ */
2262
+ async activateVersion(id) {
2263
+ this.config.requireSecretCredential("rulesets.activateVersion");
2264
+ const { query } = core.QueryBuilder.activateRulesetVersion();
2265
+ const result = await this.connection.execute(query, { id });
2266
+ return result["rulesetVersionActivate"];
2267
+ }
2268
+ };
2007
2269
  var ImportFormatsResource = class extends BaseResource {
2008
2270
  constructor(connection, config) {
2009
2271
  super(connection, config);
@@ -2842,6 +3104,8 @@ var CardDBClient = class _CardDBClient {
2842
3104
  decks;
2843
3105
  /** Rules resource for game rules and deck formats */
2844
3106
  rules;
3107
+ /** First-class rulesets resource for deck validation rules */
3108
+ rulesets;
2845
3109
  /** Publisher-managed import format resource */
2846
3110
  importFormats;
2847
3111
  /** Publisher import job resource */
@@ -2868,6 +3132,7 @@ var CardDBClient = class _CardDBClient {
2868
3132
  this.records = new RecordsResource(this.connection, this.config);
2869
3133
  this.decks = new DecksResource(this.connection, this.config);
2870
3134
  this.rules = new RulesResource(this.connection, this.config);
3135
+ this.rulesets = new RulesetsResource(this.connection, this.config);
2871
3136
  this.importFormats = new ImportFormatsResource(this.connection, this.config);
2872
3137
  this.imports = new ImportsResource(this.connection, this.config);
2873
3138
  this.exports = new ExportsResource(this.connection, this.config);
@@ -2969,6 +3234,7 @@ exports.ImportsResource = ImportsResource;
2969
3234
  exports.PublishersResource = PublishersResource;
2970
3235
  exports.RecordsResource = RecordsResource;
2971
3236
  exports.RulesResource = RulesResource;
3237
+ exports.RulesetsResource = RulesetsResource;
2972
3238
  exports.ScanTemplatesResource = ScanTemplatesResource;
2973
3239
  exports.ScansResource = ScansResource;
2974
3240
  exports.cacheKey = cacheKey;