Updates the open source project to reflect the recent updates
around continuing to make it easier to build in paralell and have
company-specific updates without impacting the upstream as much.
- Improved new repository lockdown experience
- Supports swapping description and website URL for repos temporarily until approval
- Supports an initial README commit directing people to the setup experience, if there are no commits yet
- Directly created repos become private immediately but retain access for the initial creator of the repo with read permission
- Removes new repository branch rename feature (GitHub natively supports org-level and enterprise-level custom defaults now)
- Removes 'uuid' dependency to favor newer Node LTS 14+ crypto.randomUUID
- App and job configuration object replaces "treatGitHubAppAsBackground" with "enableAllGitHubApps"
- Table encryption bug fix when pulling from key vault
- Chore: updates NPM dependencies
Removing explicit casts from req.app.settings.providers and using
a function.
Switching from Mocha (which was mostly unused) to Jest.
Moving around type definitions and interfaces in a big way to try
and cleanup some legacy.
This is a set of changes that is still stabalizing. Code churn around modernization
could impact company-specific implementations.
interim refactoring as part of a GitHub Enterprise prototype. please avoid using or extending or open an issue in the repo if you are to discuss what should stay vs get yanked.
- introduces a temporary OperationsCore class and a nearly-empty typed interface for operations
- these types will reduce or be removed once the prototype is validated
- "capabilities" allow for partial implementation of operations methods in the prototype
- custom mail provider
- additional view properties or recipients for new repos
- additional non-client API routes
- custom view names in certain places
- ability to process firehose events optionally in a separate codepath
- removes Microsoft-specific mail provider from the project
- fixes a startup race condition
- more interfaces and types exported down the tree to reduce import statements
- additional insights and reduced error logging for valid not found scenarios
- graph manager removes old callback code and interfaces have minor **breaking renames** as a result
- moves some email-sending functions into independent files to reduce core class line count
- ignored catches replaced with telemetry more consistently (partial)
- graph provider adds optional caching (note: this is not yet stable)
- webhook firehose will only attempt deleting messages once
- latest Octokit versions
- uses reusable functions throughout GitHub API calls for max age seconds, background refresh, page size variables
- fixes a bug around app header selection for cross-organization calls
- attempts to use GitHub App authentication instead of central operations token in more places
- supports alternate GitHub REST API locations for app authentication and the API itself
- new GitHub APIs integrated into business classes: get repository issues
- removes request module family, adopting axios
This significant pull request patches the open source project with a number
of updates from inside Microsoft as part of connecting an automated publishing
process to keep the public version up-to-date and buildable.
We are also removing Microsoft-specific endpoints and APIs when easy enough to
do, and adding a "company-specific" extension model to try as we go about this.
- Removes legacy "Witness Redis" code that was a Microsoft-internal thing
- Refactors Mail Address Provider for function signatures with a Promise, no callbacks
- Refactors Microsoft Mail Address Provider to use the Graph Provider for mail lookup instead of the legacy Redis system
- Minor chores on updating some imports, default export module functions
- Web server listen routine happens sooner during startup to better land Kubernetes readiness and liveness probes
to `main`, or another name, including rewriting protected branch
restriction rules, creating the branch, updating any open pull requests
targeting the old branch name, and removing the old branch, with
complete logging.
Based on work done by GitHub and others, adapted to our environment,
and improved error logging.
Adds support for GraphQL queries to the GitHub interface system.
This feature requires that an org has had an installation of the "Updates"
app which has access to read/write branches, pull requests, file contents,
as well as administer a repo.
These changes allow new repos to take on the `main` default branch name
in this interim period before the defaults change on GitHub.
For any given GitHub org that is managed, *if* the org has had the Updates GitHub app
installed and configured as an installation, the rename operations can operate on
repo contents and succeed. Otherwise, the branch default will not rename.
Also, API-created repos (by the docs.msft team today) are not adjusted by configuration.
It may be worth adding a dynamic setting for orgs to opt-in, but for now, this is a validation
pass, as only Updates-installed orgs like the Microsoft org will take on the capability.
During the month of May and June, we forked this application internally
as part of a specific set of temporary changes. To converge once again
with the open source version and make it easier to collaborate with others,
this brings the latest changes up.
There is a need to refactor and feature flag the service account piece into
the newer experience as new debt.
Refactoring of the Postgres and EMP (entity metadata provider) interface
to make it more performant, moving beyond the original key-value store
approach for entities and allowing for "native" columns that can have
solid indexes on the columns.
The goal of this integration is to be able to create indexes on the
date fields for open source contributions. Previously, storing this
data inside of Postgres JSON columns made casting difficult or slow
to compute when querying for these values.
Also begins to ship queries away from a central cross-EMP query enum
into compartmenatlized entities.
Chore: cleaning up app startup routines
- Modernizing with promises instead of callbacks
- Cleans up TypeScript interfaces for the app
- Moving to v2 of `painless-config-resolver`, reducing package count
- Reduces redundant startup code
- Introduces job object and job success return values, simplifies insights reporting when enabled
- Consistent timeout scheme for jobs
- chore: the root app is now a module
- updated election implementation for FOSS Fund
- fixes a null ref in the corporate contact provider after a timeout
- terminates the `reports` job quickly for now (the job remains broken)
- adds a new configuration setting for an election manager e-mail contact
- app insights should filter out HTTP 404 API responses which are technically a success
- updated vote displays
- updated script for 2nd mail campaign
Features
- Team pages now encourage native GitHub.com use for management
- Adding vote capabilities for FOSS Fund (a specialized feature only)
Bug fixes
- Fix for GitHub REST API request endpoints using `requestAsPost`
Chores
- Removing async library
- Cleaner throttle use through a newer `throat` library version and removing confusing typings
- Removes dead code
- Entity metadata providers are moving to a decoupled query and type system vs declarative shared enum sets
- Firehose code is now using await/async and staggers logical threads evenly
- Newer versions of all core dependencies
- More routes imported as modules instead of through `require`