mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
## Summary Partially resolves https://github.com/elastic/kibana/issues/150392 This PR creates reporting related packages geared towards `Generate CSV` functionality - @kbn/generate-csv - @kbn/generate-csv-types - @kbn/reporting-common - updated Readme.md for the @kbn/reporting plugin ### Checklist - [x] Any text added follows [EUI's writing guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses sentence case text and includes [i18n support](https://github.com/elastic/kibana/blob/main/packages/kbn-i18n/README.md) - [x] [Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html) was added for features that require explanation or tutorials - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Tim Sullivan <tsullivan@users.noreply.github.com> Co-authored-by: Timothy Sullivan <tsullivan@elastic.co>
41 lines
1,003 B
TypeScript
41 lines
1,003 B
TypeScript
/*
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
* 2.0 and the Server Side Public License, v 1; you may not use this file except
|
|
* in compliance with, at your election, the Elastic License 2.0 or the Server
|
|
* Side Public License, v 1.
|
|
*/
|
|
|
|
import { isFunction } from 'lodash';
|
|
|
|
export class CancellationToken {
|
|
private _isCancelled: boolean;
|
|
private _callbacks: Function[];
|
|
|
|
constructor() {
|
|
this._isCancelled = false;
|
|
this._callbacks = [];
|
|
}
|
|
|
|
public on = (callback: Function) => {
|
|
if (!isFunction(callback)) {
|
|
throw new Error('Expected callback to be a function');
|
|
}
|
|
|
|
if (this._isCancelled) {
|
|
callback();
|
|
return;
|
|
}
|
|
|
|
this._callbacks.push(callback);
|
|
};
|
|
|
|
public cancel = () => {
|
|
this._isCancelled = true;
|
|
this._callbacks.forEach((callback) => callback());
|
|
};
|
|
|
|
public isCancelled() {
|
|
return this._isCancelled;
|
|
}
|
|
}
|