* [eslint] add rule to prevent export* in plugin index files * deduplicate export names for types/instances with the same name * attempt to auto-fix duplicate exports too * capture exported enums too * enforce no_export_all for core too * disable rule by default, allow opting-in for help fixing * update tests * reduce yarn.lock duplication * add rule but no fixes * disable all existing violations * update api docs with new line numbers * revert unnecessary changes to yarn.lock which only had drawbacks * remove unnecessary eslint-disable * rework codegen to split type exports and use babel to generate valid code * check for "export types" deeply * improve test by using fixtures * add comments to some helper functions * disable fix for namespace exports including types * label all eslint-disable comments with related team-specific issue * ensure that child exports of `export type` are always tracked as types Co-authored-by: spalger <spalger@users.noreply.github.com> Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
34 lines
853 B
JavaScript
34 lines
853 B
JavaScript
/*
|
|
* 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.
|
|
*/
|
|
|
|
/**
|
|
* Helper class to collect exports of different types, either "value" exports or "type" exports
|
|
*/
|
|
class ExportSet {
|
|
constructor() {
|
|
/** @type {Set<string>} */
|
|
this.values = new Set();
|
|
|
|
/** @type {Set<string>} */
|
|
this.types = new Set();
|
|
}
|
|
|
|
get size() {
|
|
return this.values.size + this.types.size;
|
|
}
|
|
|
|
/**
|
|
* @param {'value'|'type'} type
|
|
* @param {string} value
|
|
*/
|
|
add(type, value) {
|
|
this[type + 's'].add(value);
|
|
}
|
|
}
|
|
|
|
module.exports = { ExportSet };
|