@m1212e/rumble 0.16.28 → 0.16.34

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/out/index.mjs CHANGED
@@ -181,7 +181,7 @@ function mapNullFieldsToUndefined(obj) {
181
181
  }
182
182
  //#endregion
183
183
  //#region package.json
184
- var version = "0.16.28";
184
+ var version = "0.16.34";
185
185
  //#endregion
186
186
  //#region lib/helpers/mergeFilters.ts
187
187
  function mergeFilters(filterA, filterB) {
@@ -875,29 +875,29 @@ const sofaOpenAPIWebhookDocs = {
875
875
  };
876
876
  //#endregion
877
877
  //#region lib/helpers/sqlTypes/mapDrizzleTypeToGraphQlType.ts
878
- function buildPothosResponseTypeFromGraphQLType({ builder, sqlType, fieldName, nullable }) {
878
+ function buildPothosResponseTypeFromGraphQLType({ builder, sqlType, fieldName, nullable, isArray }) {
879
879
  const gqlType = mapSQLTypeToGraphQLType({
880
880
  sqlType,
881
881
  fieldName
882
882
  });
883
883
  switch (gqlType) {
884
- case "Int": return builder.exposeInt(fieldName, { nullable });
885
- case "String": return builder.exposeString(fieldName, { nullable });
886
- case "Boolean": return builder.exposeBoolean(fieldName, { nullable });
884
+ case "Int": return isArray ? builder.exposeIntList(fieldName, { nullable }) : builder.exposeInt(fieldName, { nullable });
885
+ case "String": return isArray ? builder.exposeStringList(fieldName, { nullable }) : builder.exposeString(fieldName, { nullable });
886
+ case "Boolean": return isArray ? builder.exposeBooleanList(fieldName, { nullable }) : builder.exposeBoolean(fieldName, { nullable });
887
887
  case "Date": return builder.field({
888
- type: "Date",
888
+ type: isArray ? ["Date"] : "Date",
889
889
  resolve: (element) => element[fieldName],
890
890
  nullable
891
891
  });
892
892
  case "DateTime": return builder.field({
893
- type: "DateTime",
893
+ type: isArray ? ["DateTime"] : "DateTime",
894
894
  resolve: (element) => element[fieldName],
895
895
  nullable
896
896
  });
897
- case "Float": return builder.exposeFloat(fieldName, { nullable });
898
- case "ID": return builder.exposeID(fieldName, { nullable });
897
+ case "Float": return isArray ? builder.exposeFloatList(fieldName, { nullable }) : builder.exposeFloat(fieldName, { nullable });
898
+ case "ID": return isArray ? builder.exposeIDList(fieldName, { nullable }) : builder.exposeID(fieldName, { nullable });
899
899
  case "JSON": return builder.field({
900
- type: "JSON",
900
+ type: isArray ? ["JSON"] : "JSON",
901
901
  resolve: (element) => element[fieldName],
902
902
  nullable
903
903
  });
@@ -1034,10 +1034,15 @@ const createObjectImplementer = ({ db, search, schemaBuilder, makePubSubInstance
1034
1034
  userAdjustments[key] = creatorFunction.bind(t)(...params);
1035
1035
  return acc;
1036
1036
  }
1037
+ let isArray = false;
1038
+ if (column.dimensions > 0) {
1039
+ if (column.dimensions !== 1) throw new RumbleError("Only one-dimensional arrays are supported for default object implementation");
1040
+ isArray = true;
1041
+ }
1037
1042
  if (isEnumSchema(column)) {
1038
1043
  const enumImpl = enumImplementer({ enumColumn: column });
1039
1044
  acc[key] = t.field({
1040
- type: enumImpl,
1045
+ type: isArray ? [enumImpl] : enumImpl,
1041
1046
  resolve: (element) => element[key],
1042
1047
  nullable: !column.notNull
1043
1048
  });
@@ -1045,7 +1050,8 @@ const createObjectImplementer = ({ db, search, schemaBuilder, makePubSubInstance
1045
1050
  builder: t,
1046
1051
  sqlType: column.getSQLType(),
1047
1052
  fieldName: key,
1048
- nullable: !column.notNull
1053
+ nullable: !column.notNull,
1054
+ isArray
1049
1055
  });
1050
1056
  return acc;
1051
1057
  }, {});
@@ -1418,7 +1424,22 @@ var RuntimeFiltersPlugin = class extends BasePlugin {
1418
1424
  entities
1419
1425
  });
1420
1426
  }));
1421
- const [resolved, prefetchedFilters] = await Promise.all([resolver(parent, args, context, info), prefetchedFiltersPromises]);
1427
+ let resolved, prefetchedFilters;
1428
+ if (this.tracer && this.tracerEnabled) {
1429
+ const o = await this.tracer.startActiveSpan(`apply_filters`, async (span) => {
1430
+ try {
1431
+ return await Promise.all([resolver(parent, args, context, info), prefetchedFiltersPromises]);
1432
+ } finally {
1433
+ span.end();
1434
+ }
1435
+ });
1436
+ resolved = o[0];
1437
+ prefetchedFilters = o[1];
1438
+ } else {
1439
+ const o = await Promise.all([resolver(parent, args, context, info), prefetchedFiltersPromises]);
1440
+ resolved = o[0];
1441
+ prefetchedFilters = o[1];
1442
+ }
1422
1443
  const allowed = Array.from((await Promise.all(prefetchedFilters.map((f) => f({
1423
1444
  context,
1424
1445
  entities: Array.isArray(resolved) ? resolved : [resolved]
@@ -1430,7 +1451,7 @@ var RuntimeFiltersPlugin = class extends BasePlugin {
1430
1451
  if (Array.isArray(resolved)) return allowed;
1431
1452
  return allowed[0] ?? null;
1432
1453
  };
1433
- if (this.tracer && this.tracerEnabled) return this.tracer.startActiveSpan(`apply_filters_${fieldConfig.name}`, async (span) => {
1454
+ if (this.tracer && this.tracerEnabled) return this.tracer.startActiveSpan(`filter_${fieldConfig.name}`, async (span) => {
1434
1455
  try {
1435
1456
  return await runFilters(span);
1436
1457
  } finally {