- Replace incorrect Object.keys-on-array guard with direct filter
conversion, matching the pattern used in getEntityFacetsByPredicate
- Add backend router test covering combined filter query param + body
query predicate being forwarded independently to entitiesBatch
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
Adds support for the `query` field in `getEntitiesByRefs` and
`getEntityFacets` on InMemoryCatalogClient, matching the backend
behavior.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
Adds support for predicate-based filtering (`$all`, `$any`, `$not`,
`$exists`, `$in`, `$contains`, `$hasPrefix`) to the catalog
`/entities/by-refs` endpoint via a `query` field in the request body.
The existing `filter` query parameter behavior is preserved for backward
compatibility. The `query` predicate is only used when explicitly
provided, and when both `filter` and `query` are given, they are merged
with `$all`.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
Add cleye-based --help handling to all commands using the loader pattern.
Update the CLI report parser to support cleye's USAGE: and FLAGS: sections.
Revert accidental backstage.role addition to eslint-plugin.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Extend `BackstageCommand.execute` to accept either a direct function or a
`{ loader }` object for lazy loading command implementations. Convert
several build and migrate commands to use the new pattern. Switch from
`program.parse` to `program.parseAsync` to properly await async actions.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
The formFieldsApiRef and ScaffolderFormFieldsApi type are now defined and
exported from @backstage/plugin-scaffolder-react/alpha, and re-exported
from @backstage/plugin-scaffolder/alpha for backwards compatibility.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Preserve backward compatibility by keeping filter-only requests on the
existing GET endpoint. Only route to POST when query is present, matching
the pattern used by queryEntities.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
Add unit tests for parseEntityFacetsQuery covering valid inputs (simple
queries, complex predicate queries, no query) and error cases (missing
facets, empty facets, invalid query types). Add route-level tests for
both GET and POST /entity-facets in createRouter.test.ts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Fredrik Adelöw <freben@gmail.com>
Move the transform tests from packages/cli/src/tests/transforms/ into
packages/cli/src/modules/build/tests/transforms/ so that the build
module is self-contained and can eventually become its own package.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
When the selected tab uses an aliased group ID, resolve it through
the alias map so the MUI Tabs selection indicator matches the
rendered group key.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Add documentation for the new group aliases and contentOrder options
to the catalog customization guide.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Keep ungrouped tabs in their natural order and only apply content
ordering within actual groups. Rename the contentOrder prop back to
defaultContentOrder to clarify its scope.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>