@teambit/lister 1.0.106 → 1.0.108
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/list.cmd.d.ts +2 -2
- package/dist/lister.main.runtime.d.ts +3 -3
- package/dist/lister.main.runtime.js +1 -2
- package/dist/lister.main.runtime.js.map +1 -1
- package/index.ts +5 -0
- package/list-template.ts +77 -0
- package/list.cmd.ts +82 -0
- package/lister.aspect.ts +5 -0
- package/lister.main.runtime.ts +76 -0
- package/package.json +12 -21
- package/tsconfig.json +16 -21
- package/types/asset.d.ts +15 -3
- /package/dist/{preview-1703505948637.js → preview-1703647408454.js} +0 -0
package/dist/list.cmd.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Command, CommandOptions } from '@teambit/cli';
|
|
2
2
|
import { ListerMain } from './lister.main.runtime';
|
|
3
|
-
|
|
3
|
+
type ListFlags = {
|
|
4
4
|
ids?: boolean;
|
|
5
5
|
scope?: boolean;
|
|
6
6
|
json?: boolean;
|
|
@@ -21,7 +21,7 @@ export declare class ListCmd implements Command {
|
|
|
21
21
|
remoteOp: boolean;
|
|
22
22
|
constructor(lister: ListerMain);
|
|
23
23
|
report([scopeName]: string[], listFlags: ListFlags): Promise<string>;
|
|
24
|
-
json([scopeName]: string[], listFlags: ListFlags): Promise<Record<string, any>>;
|
|
24
|
+
json([scopeName]: string[], listFlags: ListFlags): Promise<string[] | Record<string, any>>;
|
|
25
25
|
private getListResults;
|
|
26
26
|
}
|
|
27
27
|
export {};
|
|
@@ -2,7 +2,7 @@ import { CLIMain } from '@teambit/cli';
|
|
|
2
2
|
import { Logger, LoggerMain } from '@teambit/logger';
|
|
3
3
|
import { Workspace } from '@teambit/workspace';
|
|
4
4
|
import { ComponentID } from '@teambit/component-id';
|
|
5
|
-
export
|
|
5
|
+
export type ListScopeResult = {
|
|
6
6
|
id: ComponentID;
|
|
7
7
|
currentlyUsedVersion?: string | null | undefined;
|
|
8
8
|
remoteVersion?: string;
|
|
@@ -12,11 +12,11 @@ export declare type ListScopeResult = {
|
|
|
12
12
|
export declare class ListerMain {
|
|
13
13
|
private logger;
|
|
14
14
|
private workspace?;
|
|
15
|
-
constructor(logger: Logger, workspace?: Workspace
|
|
15
|
+
constructor(logger: Logger, workspace?: Workspace);
|
|
16
16
|
remoteList(scopeName: string, namespacesUsingWildcards?: string): Promise<ListScopeResult[]>;
|
|
17
17
|
localList(showAll?: boolean, showRemoteVersion?: boolean, namespacesUsingWildcards?: string): Promise<ListScopeResult[]>;
|
|
18
18
|
private convertListScopeResultsFromLegacy;
|
|
19
|
-
static slots:
|
|
19
|
+
static slots: any[];
|
|
20
20
|
static dependencies: import("@teambit/harmony").Aspect[];
|
|
21
21
|
static runtime: import("@teambit/harmony").RuntimeDefinition;
|
|
22
22
|
static provider([cli, loggerMain, workspace]: [CLIMain, LoggerMain, Workspace]): Promise<ListerMain>;
|
|
@@ -77,8 +77,7 @@ class ListerMain {
|
|
|
77
77
|
this.workspace = workspace;
|
|
78
78
|
}
|
|
79
79
|
async remoteList(scopeName, namespacesUsingWildcards) {
|
|
80
|
-
|
|
81
|
-
const remote = await (0, _getRemoteByName().default)(scopeName, (_this$workspace = this.workspace) === null || _this$workspace === void 0 ? void 0 : _this$workspace.consumer);
|
|
80
|
+
const remote = await (0, _getRemoteByName().default)(scopeName, this.workspace?.consumer);
|
|
82
81
|
this.logger.setStatusLine(_loaderMessages().BEFORE_REMOTE_LIST);
|
|
83
82
|
const legacyListScopeResult = await remote.list(namespacesUsingWildcards);
|
|
84
83
|
return this.convertListScopeResultsFromLegacy(legacyListScopeResult);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_logger","_workspace","_interopRequireDefault","_loaderMessages","_exceptions","_getRemoteByName","_componentsList","_list","_lister","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","ListerMain","constructor","logger","workspace","remoteList","scopeName","namespacesUsingWildcards","
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_logger","_workspace","_interopRequireDefault","_loaderMessages","_exceptions","_getRemoteByName","_componentsList","_list","_lister","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","ListerMain","constructor","logger","workspace","remoteList","scopeName","namespacesUsingWildcards","remote","getRemoteByName","consumer","setStatusLine","BEFORE_REMOTE_LIST","legacyListScopeResult","list","convertListScopeResultsFromLegacy","localList","showAll","showRemoteVersion","ConsumerNotFound","BEFORE_LOCAL_LIST","componentsList","ComponentsList","listAll","results","Promise","all","map","legacyResult","componentId","id","currentlyUsedVersion","remoteVersion","deprecated","laneReadmeOf","sort","a","b","toString","localeCompare","provider","cli","loggerMain","createLogger","ListerAspect","lister","register","ListCmd","exports","CLIAspect","LoggerAspect","WorkspaceAspect","MainRuntime","addRuntime"],"sources":["lister.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';\nimport WorkspaceAspect, { Workspace } from '@teambit/workspace';\nimport { BEFORE_LOCAL_LIST, BEFORE_REMOTE_LIST } from '@teambit/legacy/dist/cli/loader/loader-messages';\nimport { ComponentID } from '@teambit/component-id';\nimport { ConsumerNotFound } from '@teambit/legacy/dist/consumer/exceptions';\nimport { Remote } from '@teambit/legacy/dist/remotes';\nimport getRemoteByName from '@teambit/legacy/dist/remotes/get-remote-by-name';\nimport ComponentsList, {\n ListScopeResult as ListScopeResultLegacy,\n} from '@teambit/legacy/dist/consumer/component/components-list';\nimport { ListCmd } from './list.cmd';\nimport { ListerAspect } from './lister.aspect';\n\nexport type ListScopeResult = {\n id: ComponentID;\n currentlyUsedVersion?: string | null | undefined;\n remoteVersion?: string;\n deprecated?: boolean;\n laneReadmeOf?: string[];\n};\n\nexport class ListerMain {\n constructor(private logger: Logger, private workspace?: Workspace) {}\n\n async remoteList(scopeName: string, namespacesUsingWildcards?: string): Promise<ListScopeResult[]> {\n const remote: Remote = await getRemoteByName(scopeName, this.workspace?.consumer);\n this.logger.setStatusLine(BEFORE_REMOTE_LIST);\n const legacyListScopeResult = await remote.list(namespacesUsingWildcards);\n return this.convertListScopeResultsFromLegacy(legacyListScopeResult);\n }\n\n async localList(\n showAll = false,\n showRemoteVersion = false,\n namespacesUsingWildcards?: string\n ): Promise<ListScopeResult[]> {\n if (!this.workspace) {\n throw new ConsumerNotFound();\n }\n this.logger.setStatusLine(BEFORE_LOCAL_LIST);\n const componentsList = new ComponentsList(this.workspace.consumer);\n const legacyListScopeResult = await componentsList.listAll(showRemoteVersion, showAll, namespacesUsingWildcards);\n return this.convertListScopeResultsFromLegacy(legacyListScopeResult);\n }\n\n private async convertListScopeResultsFromLegacy(\n legacyListScopeResult: ListScopeResultLegacy[]\n ): Promise<ListScopeResult[]> {\n const results = await Promise.all(\n legacyListScopeResult.map(async (legacyResult) => {\n const componentId = legacyResult.id;\n return {\n id: componentId,\n currentlyUsedVersion: legacyResult.currentlyUsedVersion,\n remoteVersion: legacyResult.remoteVersion,\n deprecated: legacyResult.deprecated,\n laneReadmeOf: legacyResult.laneReadmeOf,\n };\n })\n );\n return results.sort((a, b) => a.id.toString().localeCompare(b.id.toString()));\n }\n\n static slots = [];\n static dependencies = [CLIAspect, LoggerAspect, WorkspaceAspect];\n static runtime = MainRuntime;\n static async provider([cli, loggerMain, workspace]: [CLIMain, LoggerMain, Workspace]) {\n const logger = loggerMain.createLogger(ListerAspect.id);\n const lister = new ListerMain(logger, workspace);\n cli.register(new ListCmd(lister));\n return lister;\n }\n}\n\nListerAspect.addRuntime(ListerMain);\n"],"mappings":"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"}
|
package/index.ts
ADDED
package/list-template.ts
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import c from 'chalk';
|
|
2
|
+
import semver from 'semver';
|
|
3
|
+
import Table from 'cli-table';
|
|
4
|
+
import { ListScopeResult } from './lister.main.runtime';
|
|
5
|
+
|
|
6
|
+
type Row = { id: string; localVersion: string; currentVersion: string; remoteVersion?: string };
|
|
7
|
+
|
|
8
|
+
export function listTemplate(listScopeResults: ListScopeResult[], json: boolean, showRemoteVersion: boolean) {
|
|
9
|
+
function tabulateComponent(listScopeResult: ListScopeResult): Row {
|
|
10
|
+
const id = listScopeResult.id.toStringWithoutVersion();
|
|
11
|
+
let version = listScopeResult.id.hasVersion() ? (listScopeResult.id.version as string) : '<new>';
|
|
12
|
+
if (!json && showRemoteVersion) {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
14
|
+
const color = listScopeResult.remoteVersion && semver.gt(listScopeResult.remoteVersion, version!) ? 'red' : null;
|
|
15
|
+
// @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
|
|
16
|
+
version = color ? c[color](version) : version;
|
|
17
|
+
}
|
|
18
|
+
const getFormattedId = () => {
|
|
19
|
+
const { deprecated, laneReadmeOf } = listScopeResult;
|
|
20
|
+
let formattedId = c.white(`${id}`);
|
|
21
|
+
if (deprecated) {
|
|
22
|
+
formattedId = c.white(`${formattedId} [Deprecated]`);
|
|
23
|
+
}
|
|
24
|
+
if (laneReadmeOf && laneReadmeOf.length > 0) {
|
|
25
|
+
formattedId = `${formattedId}\n`;
|
|
26
|
+
laneReadmeOf.forEach((laneName) => {
|
|
27
|
+
formattedId = `${formattedId}${c.yellow(`[Lane Readme]: ${laneName}\n`)}`;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return formattedId;
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
const data: Row = {
|
|
34
|
+
id: getFormattedId(),
|
|
35
|
+
localVersion: version,
|
|
36
|
+
currentVersion: listScopeResult.currentlyUsedVersion || 'N/A',
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
if (showRemoteVersion) {
|
|
40
|
+
let remoteVersion = listScopeResult.remoteVersion || 'N/A';
|
|
41
|
+
const color =
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
43
|
+
listScopeResult.remoteVersion && semver.gt(listScopeResult.id.version!, listScopeResult.remoteVersion)
|
|
44
|
+
? 'red'
|
|
45
|
+
: null;
|
|
46
|
+
remoteVersion = color ? c[color](remoteVersion) : remoteVersion;
|
|
47
|
+
data.remoteVersion = remoteVersion;
|
|
48
|
+
}
|
|
49
|
+
return data;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
function toJsonComponent(listScopeResult: ListScopeResult): Record<string, any> {
|
|
53
|
+
const id = listScopeResult.id.toStringWithoutVersion();
|
|
54
|
+
const localVersion = listScopeResult.id.hasVersion() ? (listScopeResult.id.version as string) : '<new>';
|
|
55
|
+
const data = {
|
|
56
|
+
id,
|
|
57
|
+
localVersion,
|
|
58
|
+
deprecated: listScopeResult.deprecated,
|
|
59
|
+
currentVersion: listScopeResult.currentlyUsedVersion || 'N/A',
|
|
60
|
+
remoteVersion: listScopeResult.remoteVersion || 'N/A',
|
|
61
|
+
};
|
|
62
|
+
return data;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
if (json) {
|
|
66
|
+
return listScopeResults.map(toJsonComponent);
|
|
67
|
+
}
|
|
68
|
+
const rows = listScopeResults.map(tabulateComponent);
|
|
69
|
+
const head = ['component ID', 'latest in scope', 'used in workspace'];
|
|
70
|
+
if (showRemoteVersion) {
|
|
71
|
+
head.push('latest in remote scope');
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
const table = new Table({ head, style: { head: ['cyan'] } });
|
|
75
|
+
rows.map((row) => table.push(Object.values(row)));
|
|
76
|
+
return table.toString();
|
|
77
|
+
}
|
package/list.cmd.ts
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { Command, CommandOptions } from '@teambit/cli';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import R from 'ramda';
|
|
4
|
+
import hasWildcard from '@teambit/legacy/dist/utils/string/has-wildcard';
|
|
5
|
+
import { listTemplate } from './list-template';
|
|
6
|
+
import { ListerMain, ListScopeResult } from './lister.main.runtime';
|
|
7
|
+
|
|
8
|
+
type ListFlags = {
|
|
9
|
+
ids?: boolean;
|
|
10
|
+
scope?: boolean;
|
|
11
|
+
json?: boolean;
|
|
12
|
+
outdated?: boolean;
|
|
13
|
+
namespace?: string;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
export class ListCmd implements Command {
|
|
17
|
+
name = 'list [remote-scope]';
|
|
18
|
+
description = 'list components on a workspace or a remote scope (with flag).';
|
|
19
|
+
group = 'discover';
|
|
20
|
+
helpUrl = 'reference/reference/cli-reference#list';
|
|
21
|
+
alias = 'ls';
|
|
22
|
+
options = [
|
|
23
|
+
['i', 'ids', 'show only component ids, unformatted'],
|
|
24
|
+
['s', 'scope', 'show only components stored in the local scope, including indirect dependencies'],
|
|
25
|
+
['o', 'outdated', 'highlight outdated components, in comparison with their latest remote version (if one exists)'],
|
|
26
|
+
['j', 'json', 'show the output in JSON format'],
|
|
27
|
+
['n', 'namespace <string>', "show only components in the specified namespace/s e.g. '-n ui' or '*/ui'"],
|
|
28
|
+
] as CommandOptions;
|
|
29
|
+
loader = true;
|
|
30
|
+
migration = true;
|
|
31
|
+
skipWorkspace = true;
|
|
32
|
+
remoteOp = true;
|
|
33
|
+
|
|
34
|
+
constructor(private lister: ListerMain) {}
|
|
35
|
+
|
|
36
|
+
async report([scopeName]: string[], listFlags: ListFlags) {
|
|
37
|
+
const listScopeResults = await this.getListResults(scopeName, listFlags);
|
|
38
|
+
|
|
39
|
+
const { ids, outdated = false } = listFlags;
|
|
40
|
+
|
|
41
|
+
function decideHeaderSentence() {
|
|
42
|
+
if (!scopeName) return `found ${listScopeResults.length} components\n`;
|
|
43
|
+
return chalk.white(`found ${listScopeResults.length} components in ${chalk.bold(scopeName)}\n`);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (R.isEmpty(listScopeResults)) {
|
|
47
|
+
return chalk.white(decideHeaderSentence());
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
if (ids) return JSON.stringify(listScopeResults.map((result) => result.id.toString()));
|
|
51
|
+
// TODO - use a cheaper list for ids flag (do not fetch versions at all) @!IMPORTANT
|
|
52
|
+
return decideHeaderSentence() + listTemplate(listScopeResults, false, outdated);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async json([scopeName]: string[], listFlags: ListFlags) {
|
|
56
|
+
const listScopeResults = await this.getListResults(scopeName, listFlags);
|
|
57
|
+
|
|
58
|
+
if (R.isEmpty(listScopeResults)) {
|
|
59
|
+
return [];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
const { ids, outdated = false } = listFlags;
|
|
63
|
+
if (ids) return listScopeResults.map((result) => result.id.toString());
|
|
64
|
+
return listTemplate(listScopeResults, true, outdated) as Record<string, any>;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
private async getListResults(
|
|
68
|
+
scopeName?: string,
|
|
69
|
+
{ namespace, scope, outdated }: ListFlags = {}
|
|
70
|
+
): Promise<ListScopeResult[]> {
|
|
71
|
+
const getNamespaceWithWildcard = () => {
|
|
72
|
+
if (!namespace) return undefined;
|
|
73
|
+
if (hasWildcard(namespace)) return namespace;
|
|
74
|
+
return `${namespace}/*`;
|
|
75
|
+
};
|
|
76
|
+
const namespaceWithWildcard = getNamespaceWithWildcard();
|
|
77
|
+
|
|
78
|
+
return scopeName
|
|
79
|
+
? this.lister.remoteList(scopeName, namespaceWithWildcard)
|
|
80
|
+
: this.lister.localList(scope, outdated, namespaceWithWildcard);
|
|
81
|
+
}
|
|
82
|
+
}
|
package/lister.aspect.ts
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';
|
|
2
|
+
import { Logger, LoggerAspect, LoggerMain } from '@teambit/logger';
|
|
3
|
+
import WorkspaceAspect, { Workspace } from '@teambit/workspace';
|
|
4
|
+
import { BEFORE_LOCAL_LIST, BEFORE_REMOTE_LIST } from '@teambit/legacy/dist/cli/loader/loader-messages';
|
|
5
|
+
import { ComponentID } from '@teambit/component-id';
|
|
6
|
+
import { ConsumerNotFound } from '@teambit/legacy/dist/consumer/exceptions';
|
|
7
|
+
import { Remote } from '@teambit/legacy/dist/remotes';
|
|
8
|
+
import getRemoteByName from '@teambit/legacy/dist/remotes/get-remote-by-name';
|
|
9
|
+
import ComponentsList, {
|
|
10
|
+
ListScopeResult as ListScopeResultLegacy,
|
|
11
|
+
} from '@teambit/legacy/dist/consumer/component/components-list';
|
|
12
|
+
import { ListCmd } from './list.cmd';
|
|
13
|
+
import { ListerAspect } from './lister.aspect';
|
|
14
|
+
|
|
15
|
+
export type ListScopeResult = {
|
|
16
|
+
id: ComponentID;
|
|
17
|
+
currentlyUsedVersion?: string | null | undefined;
|
|
18
|
+
remoteVersion?: string;
|
|
19
|
+
deprecated?: boolean;
|
|
20
|
+
laneReadmeOf?: string[];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
export class ListerMain {
|
|
24
|
+
constructor(private logger: Logger, private workspace?: Workspace) {}
|
|
25
|
+
|
|
26
|
+
async remoteList(scopeName: string, namespacesUsingWildcards?: string): Promise<ListScopeResult[]> {
|
|
27
|
+
const remote: Remote = await getRemoteByName(scopeName, this.workspace?.consumer);
|
|
28
|
+
this.logger.setStatusLine(BEFORE_REMOTE_LIST);
|
|
29
|
+
const legacyListScopeResult = await remote.list(namespacesUsingWildcards);
|
|
30
|
+
return this.convertListScopeResultsFromLegacy(legacyListScopeResult);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async localList(
|
|
34
|
+
showAll = false,
|
|
35
|
+
showRemoteVersion = false,
|
|
36
|
+
namespacesUsingWildcards?: string
|
|
37
|
+
): Promise<ListScopeResult[]> {
|
|
38
|
+
if (!this.workspace) {
|
|
39
|
+
throw new ConsumerNotFound();
|
|
40
|
+
}
|
|
41
|
+
this.logger.setStatusLine(BEFORE_LOCAL_LIST);
|
|
42
|
+
const componentsList = new ComponentsList(this.workspace.consumer);
|
|
43
|
+
const legacyListScopeResult = await componentsList.listAll(showRemoteVersion, showAll, namespacesUsingWildcards);
|
|
44
|
+
return this.convertListScopeResultsFromLegacy(legacyListScopeResult);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
private async convertListScopeResultsFromLegacy(
|
|
48
|
+
legacyListScopeResult: ListScopeResultLegacy[]
|
|
49
|
+
): Promise<ListScopeResult[]> {
|
|
50
|
+
const results = await Promise.all(
|
|
51
|
+
legacyListScopeResult.map(async (legacyResult) => {
|
|
52
|
+
const componentId = legacyResult.id;
|
|
53
|
+
return {
|
|
54
|
+
id: componentId,
|
|
55
|
+
currentlyUsedVersion: legacyResult.currentlyUsedVersion,
|
|
56
|
+
remoteVersion: legacyResult.remoteVersion,
|
|
57
|
+
deprecated: legacyResult.deprecated,
|
|
58
|
+
laneReadmeOf: legacyResult.laneReadmeOf,
|
|
59
|
+
};
|
|
60
|
+
})
|
|
61
|
+
);
|
|
62
|
+
return results.sort((a, b) => a.id.toString().localeCompare(b.id.toString()));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
static slots = [];
|
|
66
|
+
static dependencies = [CLIAspect, LoggerAspect, WorkspaceAspect];
|
|
67
|
+
static runtime = MainRuntime;
|
|
68
|
+
static async provider([cli, loggerMain, workspace]: [CLIMain, LoggerMain, Workspace]) {
|
|
69
|
+
const logger = loggerMain.createLogger(ListerAspect.id);
|
|
70
|
+
const lister = new ListerMain(logger, workspace);
|
|
71
|
+
cli.register(new ListCmd(lister));
|
|
72
|
+
return lister;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
ListerAspect.addRuntime(ListerMain);
|
package/package.json
CHANGED
|
@@ -1,40 +1,34 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/lister",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.108",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/component/lister",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.component",
|
|
8
8
|
"name": "lister",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.108"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"chalk": "2.4.2",
|
|
13
13
|
"cli-table": "0.3.6",
|
|
14
14
|
"semver": "7.5.2",
|
|
15
15
|
"ramda": "0.27.1",
|
|
16
|
-
"core-js": "^3.0.0",
|
|
17
|
-
"@babel/runtime": "7.20.0",
|
|
18
16
|
"@teambit/harmony": "0.4.6",
|
|
19
17
|
"@teambit/component-id": "1.2.0",
|
|
20
|
-
"@teambit/cli": "0.0.
|
|
21
|
-
"@teambit/logger": "0.0.
|
|
22
|
-
"@teambit/workspace": "1.0.
|
|
18
|
+
"@teambit/cli": "0.0.840",
|
|
19
|
+
"@teambit/logger": "0.0.933",
|
|
20
|
+
"@teambit/workspace": "1.0.108"
|
|
23
21
|
},
|
|
24
22
|
"devDependencies": {
|
|
25
23
|
"@types/cli-table": "^0.3.0",
|
|
26
24
|
"@types/semver": "7.3.4",
|
|
27
25
|
"@types/mocha": "9.1.0",
|
|
28
|
-
"@types/
|
|
29
|
-
"@types/
|
|
30
|
-
"@
|
|
31
|
-
"@types/jest": "^26.0.0",
|
|
32
|
-
"@types/testing-library__jest-dom": "5.9.5"
|
|
26
|
+
"@types/jest": "^29.2.2",
|
|
27
|
+
"@types/testing-library__jest-dom": "^5.9.5",
|
|
28
|
+
"@teambit/harmony.envs.core-aspect-env": "0.0.13"
|
|
33
29
|
},
|
|
34
30
|
"peerDependencies": {
|
|
35
|
-
"@teambit/legacy": "1.0.624"
|
|
36
|
-
"react": "^16.8.0 || ^17.0.0",
|
|
37
|
-
"react-dom": "^16.8.0 || ^17.0.0"
|
|
31
|
+
"@teambit/legacy": "1.0.624"
|
|
38
32
|
},
|
|
39
33
|
"license": "Apache-2.0",
|
|
40
34
|
"optionalDependencies": {},
|
|
@@ -48,7 +42,7 @@
|
|
|
48
42
|
},
|
|
49
43
|
"private": false,
|
|
50
44
|
"engines": {
|
|
51
|
-
"node": ">=
|
|
45
|
+
"node": ">=16.0.0"
|
|
52
46
|
},
|
|
53
47
|
"repository": {
|
|
54
48
|
"type": "git",
|
|
@@ -57,12 +51,9 @@
|
|
|
57
51
|
"keywords": [
|
|
58
52
|
"bit",
|
|
59
53
|
"bit-aspect",
|
|
54
|
+
"bit-core-aspect",
|
|
60
55
|
"components",
|
|
61
56
|
"collaboration",
|
|
62
|
-
"web"
|
|
63
|
-
"react",
|
|
64
|
-
"react-components",
|
|
65
|
-
"angular",
|
|
66
|
-
"angular-components"
|
|
57
|
+
"web"
|
|
67
58
|
]
|
|
68
59
|
}
|
package/tsconfig.json
CHANGED
|
@@ -1,38 +1,33 @@
|
|
|
1
1
|
{
|
|
2
2
|
"compilerOptions": {
|
|
3
3
|
"lib": [
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
"
|
|
7
|
-
"DOM.Iterable",
|
|
8
|
-
"ScriptHost"
|
|
4
|
+
"esnext",
|
|
5
|
+
"dom",
|
|
6
|
+
"dom.Iterable"
|
|
9
7
|
],
|
|
10
|
-
"target": "
|
|
11
|
-
"module": "
|
|
12
|
-
"jsx": "react",
|
|
13
|
-
"allowJs": true,
|
|
14
|
-
"composite": true,
|
|
8
|
+
"target": "es2020",
|
|
9
|
+
"module": "es2020",
|
|
10
|
+
"jsx": "react-jsx",
|
|
15
11
|
"declaration": true,
|
|
16
12
|
"sourceMap": true,
|
|
17
|
-
"skipLibCheck": true,
|
|
18
13
|
"experimentalDecorators": true,
|
|
19
|
-
"
|
|
14
|
+
"skipLibCheck": true,
|
|
20
15
|
"moduleResolution": "node",
|
|
21
16
|
"esModuleInterop": true,
|
|
22
|
-
"rootDir": ".",
|
|
23
17
|
"resolveJsonModule": true,
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"strictPropertyInitialization": false,
|
|
28
|
-
"strict": true,
|
|
29
|
-
"noImplicitAny": false,
|
|
30
|
-
"preserveConstEnums": true
|
|
18
|
+
"allowJs": true,
|
|
19
|
+
"outDir": "dist",
|
|
20
|
+
"emitDeclarationOnly": true
|
|
31
21
|
},
|
|
32
22
|
"exclude": [
|
|
23
|
+
"artifacts",
|
|
24
|
+
"public",
|
|
33
25
|
"dist",
|
|
26
|
+
"node_modules",
|
|
27
|
+
"package.json",
|
|
34
28
|
"esm.mjs",
|
|
35
|
-
"
|
|
29
|
+
"**/*.cjs",
|
|
30
|
+
"./dist"
|
|
36
31
|
],
|
|
37
32
|
"include": [
|
|
38
33
|
"**/*",
|
package/types/asset.d.ts
CHANGED
|
@@ -5,12 +5,12 @@ declare module '*.png' {
|
|
|
5
5
|
declare module '*.svg' {
|
|
6
6
|
import type { FunctionComponent, SVGProps } from 'react';
|
|
7
7
|
|
|
8
|
-
export const ReactComponent: FunctionComponent<
|
|
8
|
+
export const ReactComponent: FunctionComponent<
|
|
9
|
+
SVGProps<SVGSVGElement> & { title?: string }
|
|
10
|
+
>;
|
|
9
11
|
const src: string;
|
|
10
12
|
export default src;
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
// @TODO Gilad
|
|
14
14
|
declare module '*.jpg' {
|
|
15
15
|
const value: any;
|
|
16
16
|
export = value;
|
|
@@ -27,3 +27,15 @@ declare module '*.bmp' {
|
|
|
27
27
|
const value: any;
|
|
28
28
|
export = value;
|
|
29
29
|
}
|
|
30
|
+
declare module '*.otf' {
|
|
31
|
+
const value: any;
|
|
32
|
+
export = value;
|
|
33
|
+
}
|
|
34
|
+
declare module '*.woff' {
|
|
35
|
+
const value: any;
|
|
36
|
+
export = value;
|
|
37
|
+
}
|
|
38
|
+
declare module '*.woff2' {
|
|
39
|
+
const value: any;
|
|
40
|
+
export = value;
|
|
41
|
+
}
|
|
File without changes
|