Skip to content

Commit

Permalink
Merge pull request #1812 from bugsnag/release/v7.17.4
Browse files Browse the repository at this point in the history
Release v7.17.4
  • Loading branch information
gingerbenw committed Sep 8, 2022
2 parents a451a03 + 83a0c6b commit 4d15419
Show file tree
Hide file tree
Showing 46 changed files with 903 additions and 578 deletions.
582 changes: 255 additions & 327 deletions .buildkite/browser-pipeline.yml

Large diffs are not rendered by default.

6 changes: 0 additions & 6 deletions .buildkite/node-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ steps:
docker-compose#v3.9.0:
run: node-maze-runner
use-aliases: true
verbose: true
env:
NODE_VERSION: "4"

Expand All @@ -35,7 +34,6 @@ steps:
docker-compose#v3.9.0:
run: node-maze-runner
use-aliases: true
verbose: true
env:
NODE_VERSION: "6"

Expand All @@ -46,7 +44,6 @@ steps:
docker-compose#v3.9.0:
run: node-maze-runner
use-aliases: true
verbose: true
env:
NODE_VERSION: "8"

Expand All @@ -57,7 +54,6 @@ steps:
docker-compose#v3.9.0:
run: node-maze-runner
use-aliases: true
verbose: true
env:
NODE_VERSION: "10"

Expand All @@ -68,7 +64,6 @@ steps:
docker-compose#v3.9.0:
run: node-maze-runner
use-aliases: true
verbose: true
env:
NODE_VERSION: "12"

Expand All @@ -79,6 +74,5 @@ steps:
docker-compose#v3.9.0:
run: node-maze-runner
use-aliases: true
verbose: true
env:
NODE_VERSION: "14"
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# Changelog

## v7.17.4 (2022-09-08)

### Changed

- (react-native) Update bugsnag-cocoa from v6.20.0 to [v6.22.2](https://github.com/bugsnag/bugsnag-cocoa/blob/master/CHANGELOG.md#6222-2022-08-17)
- (react-native) Update bugsnag-android from v5.24.0 to [v5.26.0](https://github.com/bugsnag/bugsnag-android/blob/master/CHANGELOG.md#5260-2022-08-18)
- Refactor feature flags to maintain insertion order [#1802](https://github.com/bugsnag/bugsnag-js/pull/1802)

## v7.17.3 (2022-07-18)

### Changed
Expand Down
38 changes: 38 additions & 0 deletions docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,49 @@ services:
BUILDKITE_RETRY_COUNT:
BUILDKITE_STEP_KEY:
MAZE_BUGSNAG_API_KEY:
MAZE_TMS_URI:
MAZE_TMS_TOKEN:
DEBUG:
BROWSER_STACK_USERNAME:
BROWSER_STACK_ACCESS_KEY:
HOST: "${HOST:-maze-runner}"
API_HOST: "${API_HOST:-maze-runner}"
env_file:
- ${DOCKER_ENV_FILE:-test/browser/features/fixtures/null_env}
networks:
default:
aliases:
- maze-runner

browser-maze-runner-v6:
build:
context: .
dockerfile: dockerfiles/Dockerfile.browser-v6
target: browser-maze-runner
args:
- BUILDKITE_BUILD_NUMBER
environment:
BUILDKITE:
BUILDKITE_BRANCH:
BUILDKITE_BUILD_CREATOR:
BUILDKITE_BUILD_NUMBER:
BUILDKITE_BUILD_URL:
BUILDKITE_LABEL:
BUILDKITE_MESSAGE:
BUILDKITE_PIPELINE_NAME:
BUILDKITE_REPO:
BUILDKITE_RETRY_COUNT:
BUILDKITE_STEP_KEY:
MAZE_BUGSNAG_API_KEY:
MAZE_TMS_URI:
MAZE_TMS_TOKEN:
DEBUG:
BROWSER_STACK_USERNAME:
BROWSER_STACK_ACCESS_KEY:
HOST: "${HOST:-maze-runner}"
API_HOST: "${API_HOST:-maze-runner}"
env_file:
- ${DOCKER_ENV_FILE:-test/browser/features/fixtures/null_env}
networks:
default:
aliases:
Expand Down
2 changes: 1 addition & 1 deletion dockerfiles/Dockerfile.browser
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ RUN find . -name package.json -type f -mindepth 2 -maxdepth 3 ! -path "./node_mo
RUN rm -fr **/*/node_modules/

# The maze-runner browser tests
FROM 855461928731.dkr.ecr.us-west-1.amazonaws.com/maze-runner-releases:latest-v6-cli as browser-maze-runner
FROM 855461928731.dkr.ecr.us-west-1.amazonaws.com/maze-runner-releases:latest-v7-cli as browser-maze-runner

COPY --from=browser-feature-builder /app/test/browser /app/test/browser/
WORKDIR /app/test/browser
51 changes: 51 additions & 0 deletions dockerfiles/Dockerfile.browser-v6
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# CI test image for unit/lint/type tests
FROM node:14-alpine as browser-feature-builder

RUN apk add --update bash python3 make gcc g++ musl-dev xvfb-run

WORKDIR /app

COPY package*.json ./
RUN npm install

COPY babel.config.js lerna.json .eslintignore .eslintrc.js jest.config.js tsconfig.json ./
ADD min_packages.tar .
COPY bin ./bin
RUN npx lerna bootstrap
COPY packages ./packages
RUN npm run build

RUN npm pack --verbose packages/js/
RUN npm pack --verbose packages/browser/
RUN npm pack --verbose packages/node/
RUN npm pack --verbose packages/plugin-angular/
RUN npm pack --verbose packages/plugin-react/
RUN npm pack --verbose packages/plugin-vue/

COPY test/browser/features test/browser/features

WORKDIR /app/test/browser/features/fixtures
RUN npm install --no-package-lock --no-save ../../../../bugsnag-browser-*.tgz
RUN npm install --no-package-lock --no-save ../../../../bugsnag-plugin-react-*.tgz
RUN npm install --no-package-lock --no-save ../../../../bugsnag-plugin-vue-*.tgz
WORKDIR plugin_angular/ng
RUN npm install --no-package-lock --no-save \
../../../../../../bugsnag-plugin-angular-*.tgz \
../../../../../../bugsnag-node-*.tgz \
../../../../../../bugsnag-browser-*.tgz \
../../../../../../bugsnag-js-*.tgz

# install the dependencies and build each fixture
WORKDIR /app/test/browser/features/fixtures
RUN find . -name package.json -type f -mindepth 2 -maxdepth 3 ! -path "./node_modules/*" | \
xargs -I % bash -c 'cd `dirname %` && npm install --no-package-lock && npm run build'

# once the fixtures are built we no longer need node_modules and
# it makes the COPY later on much faster if we don't have them
RUN rm -fr **/*/node_modules/

# The maze-runner browser tests
FROM 855461928731.dkr.ecr.us-west-1.amazonaws.com/maze-runner-releases:latest-v6-cli as browser-maze-runner

COPY --from=browser-feature-builder /app/test/browser /app/test/browser/
WORKDIR /app/test/browser
19 changes: 19 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"@types/node": "^13.7.1",
"@types/node-fetch": "^2.5.7",
"@types/react": "^16.9.23",
"@types/react-dom": "^16.9.16",
"@types/react-test-renderer": "^16.9.2",
"@types/rimraf": "^3.0.0",
"@types/uuid": "^8.3.0",
Expand Down
6 changes: 3 additions & 3 deletions packages/core/client.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { Client, OnErrorCallback, Config, Breadcrumb, Session, OnSessionCallback, OnBreadcrumbCallback, Plugin, Device, App, User } from './types'
import { Client, OnErrorCallback, Config, Breadcrumb, Session, OnSessionCallback, OnBreadcrumbCallback, Plugin, Device, App, User, FeatureFlag } from './types'
import EventWithInternals from './event'

interface LoggerConfig {
Expand Down Expand Up @@ -43,14 +43,14 @@ export default class ClientWithInternals<T extends Config = Config> extends Clie
_config: T
_depth: number
_logger: LoggerConfig
_breadcrumbs: Breadcrumb[];
_breadcrumbs: Breadcrumb[]
_delivery: Delivery
_setDelivery: (handler: (client: Client) => Delivery) => void

_user: User

_metadata: { [key: string]: any }
_features: { [key: string]: string | null }
_features: FeatureFlag | null[]

startSession(): ClientWithInternals
resumeSession(): ClientWithInternals
Expand Down
18 changes: 10 additions & 8 deletions packages/core/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ const reduce = require('./lib/es-utils/reduce')
const keys = require('./lib/es-utils/keys')
const assign = require('./lib/es-utils/assign')
const runCallbacks = require('./lib/callback-runner')
const featureFlagDelegate = require('./lib/feature-flag-delegate')
const metadataDelegate = require('./lib/metadata-delegate')
const runSyncCallbacks = require('./lib/sync-callback-runner')
const BREADCRUMB_TYPES = require('./lib/breadcrumb-types')
const { add, clear, merge } = require('./lib/feature-flag-delegate')

const noop = () => {}

Expand All @@ -36,7 +36,8 @@ class Client {
this._breadcrumbs = []
this._session = null
this._metadata = {}
this._features = {}
this._featuresIndex = {}
this._features = []
this._context = undefined
this._user = {}

Expand Down Expand Up @@ -90,19 +91,20 @@ class Client {
}

addFeatureFlag (name, variant = null) {
featureFlagDelegate.add(this._features, name, variant)
add(this._features, this._featuresIndex, name, variant)
}

addFeatureFlags (featureFlags) {
featureFlagDelegate.merge(this._features, featureFlags)
merge(this._features, featureFlags, this._featuresIndex)
}

clearFeatureFlag (name) {
delete this._features[name]
clear(this._features, this._featuresIndex, name)
}

clearFeatureFlags () {
this._features = {}
this._features = []
this._featuresIndex = {}
}

getContext () {
Expand Down Expand Up @@ -151,7 +153,7 @@ class Client {

// update and elevate some options
this._metadata = assign({}, config.metadata)
featureFlagDelegate.merge(this._features, config.featureFlags)
merge(this._features, config.featureFlags, this._featuresIndex)
this._user = assign({}, config.user)
this._context = config.context
if (config.logger) this._logger = config.logger
Expand Down Expand Up @@ -295,9 +297,9 @@ class Client {
})
event.context = event.context || this._context
event._metadata = assign({}, event._metadata, this._metadata)
event._features = assign({}, event._features, this._features)
event._user = assign({}, event._user, this._user)
event.breadcrumbs = this._breadcrumbs.slice()
merge(event._features, this._features, event._featuresIndex)

// exit early if events should not be sent on the current releaseStage
if (this._config.enabledReleaseStages !== null && !includes(this._config.enabledReleaseStages, this._config.releaseStage)) {
Expand Down
5 changes: 3 additions & 2 deletions packages/core/event.d.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { App, Device, Event, Request, Breadcrumb, User, Session } from './types'
import { App, Device, Event, Request, Breadcrumb, User, Session, FeatureFlag } from './types'
import { Error } from './types/event'

interface HandledState {
Expand All @@ -21,7 +21,8 @@ interface FeatureFlagPayload {
export default class EventWithInternals extends Event {
constructor (errorClass: string, errorMessage: string, stacktrace: any[], handledState?: HandledState, originalError?: Error)
_metadata: { [key: string]: any }
_features: { [key: string]: string | null }
_features: FeatureFlag | null[]
_featuresIndex: { [key: string]: number }
_user: User
_handledState: HandledState
_session?: Session
Expand Down
12 changes: 7 additions & 5 deletions packages/core/event.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,8 @@ class Event {
this.threads = []

this._metadata = {}
this._features = {}
this._features = []
this._featuresIndex = {}
this._user = {}
this._session = undefined

Expand Down Expand Up @@ -56,19 +57,20 @@ class Event {
}

addFeatureFlag (name, variant = null) {
featureFlagDelegate.add(this._features, name, variant)
featureFlagDelegate.add(this._features, this._featuresIndex, name, variant)
}

addFeatureFlags (featureFlags) {
featureFlagDelegate.merge(this._features, featureFlags)
featureFlagDelegate.merge(this._features, featureFlags, this._featuresIndex)
}

clearFeatureFlag (name) {
delete this._features[name]
featureFlagDelegate.clear(this._features, this._featuresIndex, name)
}

clearFeatureFlags () {
this._features = {}
this._features = []
this._featuresIndex = {}
}

getUser () {
Expand Down
3 changes: 2 additions & 1 deletion packages/core/lib/clone-client.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ module.exports = (client) => {
// so ensure they are are (shallow) cloned
clone._breadcrumbs = client._breadcrumbs.slice()
clone._metadata = assign({}, client._metadata)
clone._features = assign({}, client._features)
clone._features = [...client._features]
clone._featuresIndex = assign({}, client._featuresIndex)
clone._user = assign({}, client._user)
clone._context = client._context

Expand Down
Loading

0 comments on commit 4d15419

Please sign in to comment.