Updates the Select component to accept a set of sections with options as opposed to just a flat list of options.
---------
Signed-off-by: James Brooks <jamesbrooks@spotify.com>
@protobufjs/inquire@1.1.1 dropped the eval-based workaround that hid its
dynamic require() from bundlers, which makes webpack/rspack emit a
"Critical dependency: the request of a dependency is an expression"
warning that fails the build under CI=true. protobufjs@7.5.6 also
bumped its dependency on @protobufjs/inquire from ^1.1.0 to ^1.1.1, so
pinning just the inquire range isn't enough — pin protobufjs to 7.5.5
for all known workspace ranges as well.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Net-new package does not need alpha exports per awanlin's review.
Revert alpha.ts to export {}, remove default alias from module/index.ts,
and restore empty report-alpha.api.md.
Signed-off-by: pillaris <pillaris@adobe.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
* feat: Add status check functions for scaffolder steps
- Introduced `always()` and `failure()` functions to control step execution after failures.
- Updated documentation to explain usage of new status check functions.
- Enhanced NunjucksWorkflowRunner to process these functions in step conditions.
- Added tests to verify behavior of steps using `always()` and `failure()`.
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
* feat: Enhance status check functions in scaffolder steps
- Updated documentation to clarify usage of status check functions with template expressions.
- Modified tests to reflect changes in syntax for status checks.
- Refactored NunjucksWorkflowRunner to ensure proper handling of status check functions in step conditions.
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
* docs: Clarify usage of status check functions in writing templates
- Removed redundant explanation about truthy conditions after step failure.
- Streamlined the description for better clarity on status check functions.
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
---------
Signed-off-by: ferin79 <ferinpatel79@gmail.com>
Re-export catalogModuleMicrosoftGraphIncrementalEntityProvider as @alpha
default from src/alpha.ts, matching the pattern of catalog-backend-module-msgraph.
Add default export alias in module/index.ts and regenerate report-alpha.api.md.
Signed-off-by: pillaris <pillaris@adobe.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The manually-written empty report-alpha.api.md didn't match what API
Extractor generates for an empty alpha entry point. Use the correct
generated output to pass the CI api-reports check.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- Update copyright year from 2024 to 2026 across all new source files
- Clear alpha entry point (no alpha exports needed for a net-new package)
and regenerate report-alpha.api.md accordingly
- Delete CHANGELOG.md (auto-generated by the release process)
- Change changeset bump from patch to minor so the first release is 0.1.0,
and remove the redundant "New package:" title line
- Reset package version to 0.0.0 (release process sets the real version)
- Add incremental ingestion section to docs/integrations/azure/org.md
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
The root prettier and eslint runs shouldn't reach into the standalone
workspaces, since each one manages its own formatting and linting. Also
correct the ui workspace lint script to diff against origin/master to
match the repo's default branch.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
Drop the unused playwright/e2e tooling and the plugins/* workspace glob,
align the remaining dev dependencies with the root, and bump node-gyp to
match.
Signed-off-by: Patrik Oldsberg <poldsberg@gmail.com>
Made-with: Cursor
A throwing custom groupTransformer on a child group member would fail
the entire groups-phase burst. Apply the same try/catch + debug/warn
logging pattern already used for user member transformation.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- Guard getUserPhotoGated with user.id presence to prevent requesting
users/undefined/photo when Graph omits the id field
- Log a warning when groupIncludeSubGroups is configured, matching the
existing warning for unsupported userGroupMember* options
- Skip spec.children population when groupFilter/groupSearch is active,
since child groups may not pass the filter and would create dangling
references in the catalog
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
Update all references to "up to 999 items" to accurately reflect that
users are fetched in pages of 999 while groups use a smaller page of
100. Also document groupIncludeSubGroups as unsupported in the JSDoc
@remarks, README, and comparison table.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
These modules are not needed by all Backstage users, so registering them
unconditionally in the example backend adds unnecessary routes, services,
and runtime dependencies. The backend.add(...) lines are documented in
the plugin README instead.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
Without $select, Microsoft Graph returns only id and @odata.type for
group members, which causes defaultUserTransformer/defaultGroupTransformer
to return undefined and silently drop membership refs. Requesting the
minimum fields needed by both transformers ensures member objects always
have enough data to produce stable entity refs.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
@backstage/plugin-catalog-backend-module-msgraph is only used
transitively via msgraph-incremental; no direct import exists in
packages/backend/src/index.ts.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- Wrap userTransformer call for group members in try/catch so a sparse
object that causes the transformer to throw logs a warning and skips
that member rather than failing the entire groups page
- Split PAGE_SIZE into USER_PAGE_SIZE (999) and GROUP_PAGE_SIZE (100)
so each burst stays within its time budget despite per-group member
fetching in the groups phase
- Always send $count=true in advanced mode even when no query object is
provided (use empty object spread instead of short-circuit on query)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- getUserPhotoGated now throws for non-404 errors (401/403/5xx) so
callers can distinguish a missing photo from a real API failure
- Log a debug message when photo loading fails instead of swallowing
the error silently
- Merge transformer-pre-populated spec.members/spec.children with
fetched Graph membership rather than overwriting them
- deriveRestLength now also excludes manual-trigger schedule objects
(not just cron expressions) from being cast as HumanDuration
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: pillaris <pillaris@adobe.com>
- Always render headerTop wrapper for consistent spacing
- Reduce default content padding-top from space-6 to space-3
- Add PluginHeaderAndHeader story and update Spotify theme
Signed-off-by: Charles de Dreuille <charles.dedreuille@gmail.com>