diff --git a/.changeset/rare-owls-try.md b/.changeset/rare-owls-try.md new file mode 100644 index 0000000000..910eccd777 --- /dev/null +++ b/.changeset/rare-owls-try.md @@ -0,0 +1,7 @@ +--- +"@medusajs/modules-sdk": patch +"@medusajs/orchestration": patch +"@medusajs/types": patch +--- + +fix(modules-sdk): Select all should send undefined instead of an empty array diff --git a/packages/modules-sdk/src/__tests__/remote-quer.spec.ts b/packages/modules-sdk/src/__tests__/remote-quer.spec.ts index ad7c1ca083..03735bc1b1 100644 --- a/packages/modules-sdk/src/__tests__/remote-quer.spec.ts +++ b/packages/modules-sdk/src/__tests__/remote-quer.spec.ts @@ -28,4 +28,20 @@ describe("Remote query", () => { }, }) }) + + it("should properly handle fields and relations transformation for top level entity", () => { + const expand = { + fields: ["*"], + } + + const result = RemoteQuery.getAllFieldsAndRelations(expand) + + expect(result).toEqual({ + select: undefined, + relations: [], + args: { + "": undefined, + }, + }) + }) }) diff --git a/packages/modules-sdk/src/remote-query.ts b/packages/modules-sdk/src/remote-query.ts index 9fd5cce274..5be5c40375 100644 --- a/packages/modules-sdk/src/remote-query.ts +++ b/packages/modules-sdk/src/remote-query.ts @@ -10,12 +10,11 @@ import { LoadedModule, ModuleJoinerConfig, RemoteExpandProperty, + RemoteJoinerOptions, RemoteJoinerQuery, RemoteNestedExpands, } from "@medusajs/types" import { isString, toPascalCase } from "@medusajs/utils" - -import { RemoteJoinerOptions } from "@medusajs/types" import { MedusaModule } from "./medusa-module" export class RemoteQuery { @@ -85,7 +84,7 @@ export class RemoteQuery { prefix = "", args: JoinerArgument = {} as JoinerArgument ): { - select: string[] + select?: string[] relations: string[] args: JoinerArgument } { @@ -96,7 +95,7 @@ export class RemoteQuery { for (const field of expand.fields ?? []) { if (field === "*") { - expand.fields = [] + expand.fields = undefined break } fields.add(prefix ? `${prefix}.${field}` : field) @@ -116,11 +115,12 @@ export class RemoteQuery { args ) - result.select.forEach(fields.add, fields) + result.select?.forEach(fields.add, fields) relations = relations.concat(result.relations) } - return { select: [...fields], relations, args } + const allFields = Array.from(fields) + return { select: allFields.length ? allFields : undefined, relations, args } } private hasPagination(options: { [attr: string]: unknown }): boolean { diff --git a/packages/orchestration/src/joiner/remote-joiner.ts b/packages/orchestration/src/joiner/remote-joiner.ts index 39f6ca2f95..97321a37bd 100644 --- a/packages/orchestration/src/joiner/remote-joiner.ts +++ b/packages/orchestration/src/joiner/remote-joiner.ts @@ -36,7 +36,7 @@ export class RemoteJoiner { private static filterFields( data: any, - fields: string[], + fields?: string[], expands?: RemoteNestedExpands ): Record | undefined { if (!fields || !data) { diff --git a/packages/types/src/joiner/index.ts b/packages/types/src/joiner/index.ts index 7d15fced9d..3ccf2af368 100644 --- a/packages/types/src/joiner/index.ts +++ b/packages/types/src/joiner/index.ts @@ -90,7 +90,7 @@ export interface RemoteJoinerOptions { export interface RemoteNestedExpands { [key: string]: { - fields: string[] + fields?: string[] args?: JoinerArgument[] expands?: RemoteNestedExpands } @@ -101,7 +101,7 @@ export interface RemoteExpandProperty { parent: string parentConfig?: JoinerServiceConfig serviceConfig: JoinerServiceConfig - fields: string[] + fields?: string[] args?: JoinerArgument[] expands?: RemoteNestedExpands }