@teambit/workspace 0.0.592 → 0.0.596
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/bit-map.d.ts +25 -0
- package/dist/bit-map.js +80 -0
- package/dist/bit-map.js.map +1 -0
- package/dist/install.cmd.d.ts +1 -0
- package/dist/install.cmd.js +4 -3
- package/dist/install.cmd.js.map +1 -1
- package/dist/workspace.d.ts +7 -7
- package/dist/workspace.js +86 -82
- package/dist/workspace.js.map +1 -1
- package/install.cmd.tsx +4 -1
- package/package-tar/teambit-workspace-0.0.596.tgz +0 -0
- package/package.json +52 -52
- package/package-tar/teambit-workspace-0.0.592.tgz +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ComponentID } from '@teambit/component-id';
|
|
2
|
+
import LegacyBitMap from '@teambit/legacy/dist/consumer/bit-map';
|
|
3
|
+
import { Consumer } from '@teambit/legacy/dist/consumer';
|
|
4
|
+
import { GetBitMapComponentOptions } from '@teambit/legacy/dist/consumer/bit-map/bit-map';
|
|
5
|
+
import ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';
|
|
6
|
+
/**
|
|
7
|
+
* consider extracting to a new component.
|
|
8
|
+
* (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)
|
|
9
|
+
*/
|
|
10
|
+
export declare class BitMap {
|
|
11
|
+
private legacyBitMap;
|
|
12
|
+
private consumer;
|
|
13
|
+
constructor(legacyBitMap: LegacyBitMap, consumer: Consumer);
|
|
14
|
+
/**
|
|
15
|
+
* adds component config to the .bitmap file.
|
|
16
|
+
* later, upon `bit tag`, the data is saved in the scope.
|
|
17
|
+
* returns a boolean indicating whether a chance has been made.
|
|
18
|
+
*/
|
|
19
|
+
addComponentConfig(aspectId: string, id: ComponentID, config?: Record<string, any>): Promise<boolean>;
|
|
20
|
+
/**
|
|
21
|
+
* write .bitmap object to the filesystem
|
|
22
|
+
*/
|
|
23
|
+
write(): Promise<void>;
|
|
24
|
+
getBitmapEntry(id: ComponentID, { ignoreVersion, ignoreScopeAndVersion }?: GetBitMapComponentOptions): ComponentMap;
|
|
25
|
+
}
|
package/dist/bit-map.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
require("core-js/modules/es.promise.js");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.BitMap = void 0;
|
|
9
|
+
|
|
10
|
+
function _lodash() {
|
|
11
|
+
const data = require("lodash");
|
|
12
|
+
|
|
13
|
+
_lodash = function () {
|
|
14
|
+
return data;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
return data;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* consider extracting to a new component.
|
|
22
|
+
* (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)
|
|
23
|
+
*/
|
|
24
|
+
class BitMap {
|
|
25
|
+
constructor(legacyBitMap, consumer) {
|
|
26
|
+
this.legacyBitMap = legacyBitMap;
|
|
27
|
+
this.consumer = consumer;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* adds component config to the .bitmap file.
|
|
31
|
+
* later, upon `bit tag`, the data is saved in the scope.
|
|
32
|
+
* returns a boolean indicating whether a chance has been made.
|
|
33
|
+
*/
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
async addComponentConfig(aspectId, id, config) {
|
|
37
|
+
if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);
|
|
38
|
+
const bitMapEntry = this.getBitmapEntry(id, {
|
|
39
|
+
ignoreScopeAndVersion: true
|
|
40
|
+
});
|
|
41
|
+
const currentConfig = (bitMapEntry.config || (bitMapEntry.config = {}))[aspectId];
|
|
42
|
+
|
|
43
|
+
if ((0, _lodash().isEqual)(currentConfig, config)) {
|
|
44
|
+
return false; // no changes
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
if (!config) {
|
|
48
|
+
delete bitMapEntry.config[aspectId];
|
|
49
|
+
} else {
|
|
50
|
+
bitMapEntry.config[aspectId] = config;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
this.legacyBitMap.markAsChanged();
|
|
54
|
+
await this.write();
|
|
55
|
+
return true; // changes have been made
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* write .bitmap object to the filesystem
|
|
59
|
+
*/
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
async write() {
|
|
63
|
+
await this.consumer.writeBitMap();
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
getBitmapEntry(id, {
|
|
67
|
+
ignoreVersion,
|
|
68
|
+
ignoreScopeAndVersion
|
|
69
|
+
} = {}) {
|
|
70
|
+
return this.legacyBitMap.getComponent(id._legacy, {
|
|
71
|
+
ignoreVersion,
|
|
72
|
+
ignoreScopeAndVersion
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
exports.BitMap = BitMap;
|
|
79
|
+
|
|
80
|
+
//# sourceMappingURL=bit-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["bit-map.ts"],"names":["BitMap","constructor","legacyBitMap","consumer","addComponentConfig","aspectId","id","config","Error","bitMapEntry","getBitmapEntry","ignoreScopeAndVersion","currentConfig","markAsChanged","write","writeBitMap","ignoreVersion","getComponent","_legacy"],"mappings":";;;;;;;;;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAMA;AACA;AACA;AACA;AACO,MAAMA,MAAN,CAAa;AAClBC,EAAAA,WAAW,CAASC,YAAT,EAA6CC,QAA7C,EAAiE;AAAA,SAAxDD,YAAwD,GAAxDA,YAAwD;AAAA,SAApBC,QAAoB,GAApBA,QAAoB;AAAE;AAE9E;AACF;AACA;AACA;AACA;;;AAC0B,QAAlBC,kBAAkB,CAACC,QAAD,EAAmBC,EAAnB,EAAoCC,MAApC,EAAoF;AAC1G,QAAI,CAACF,QAAD,IAAa,OAAOA,QAAP,KAAoB,QAArC,EAA+C,MAAM,IAAIG,KAAJ,CAAW,qCAAoCH,QAAS,EAAxD,CAAN;AAC/C,UAAMI,WAAW,GAAG,KAAKC,cAAL,CAAoBJ,EAApB,EAAwB;AAAEK,MAAAA,qBAAqB,EAAE;AAAzB,KAAxB,CAApB;AACA,UAAMC,aAAa,GAAG,CAACH,WAAW,CAACF,MAAb,KAACE,WAAW,CAACF,MAAb,GAAwB,EAAxB,GAA4BF,QAA5B,CAAtB;;AACA,QAAI,uBAAQO,aAAR,EAAuBL,MAAvB,CAAJ,EAAoC;AAClC,aAAO,KAAP,CADkC,CACpB;AACf;;AACD,QAAI,CAACA,MAAL,EAAa;AACX,aAAOE,WAAW,CAACF,MAAZ,CAAmBF,QAAnB,CAAP;AACD,KAFD,MAEO;AACLI,MAAAA,WAAW,CAACF,MAAZ,CAAmBF,QAAnB,IAA+BE,MAA/B;AACD;;AACD,SAAKL,YAAL,CAAkBW,aAAlB;AACA,UAAM,KAAKC,KAAL,EAAN;AACA,WAAO,IAAP,CAd0G,CAc7F;AACd;AAED;AACF;AACA;;;AACa,QAALA,KAAK,GAAG;AACZ,UAAM,KAAKX,QAAL,CAAcY,WAAd,EAAN;AACD;;AAEDL,EAAAA,cAAc,CACZJ,EADY,EAEZ;AAAEU,IAAAA,aAAF;AAAiBL,IAAAA;AAAjB,MAAsE,EAF1D,EAGE;AACd,WAAO,KAAKT,YAAL,CAAkBe,YAAlB,CAA+BX,EAAE,CAACY,OAAlC,EAA2C;AAAEF,MAAAA,aAAF;AAAiBL,MAAAA;AAAjB,KAA3C,CAAP;AACD;;AArCiB","sourcesContent":["import { isEqual } from 'lodash';\nimport { ComponentID } from '@teambit/component-id';\nimport LegacyBitMap from '@teambit/legacy/dist/consumer/bit-map';\nimport { Consumer } from '@teambit/legacy/dist/consumer';\nimport { GetBitMapComponentOptions } from '@teambit/legacy/dist/consumer/bit-map/bit-map';\nimport ComponentMap from '@teambit/legacy/dist/consumer/bit-map/component-map';\n/**\n * consider extracting to a new component.\n * (pro: making Workspace aspect smaller. con: it's an implementation details of the workspace)\n */\nexport class BitMap {\n constructor(private legacyBitMap: LegacyBitMap, private consumer: Consumer) {}\n\n /**\n * adds component config to the .bitmap file.\n * later, upon `bit tag`, the data is saved in the scope.\n * returns a boolean indicating whether a chance has been made.\n */\n async addComponentConfig(aspectId: string, id: ComponentID, config?: Record<string, any>): Promise<boolean> {\n if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);\n const bitMapEntry = this.getBitmapEntry(id, { ignoreScopeAndVersion: true });\n const currentConfig = (bitMapEntry.config ||= {})[aspectId];\n if (isEqual(currentConfig, config)) {\n return false; // no changes\n }\n if (!config) {\n delete bitMapEntry.config[aspectId];\n } else {\n bitMapEntry.config[aspectId] = config;\n }\n this.legacyBitMap.markAsChanged();\n await this.write();\n return true; // changes have been made\n }\n\n /**\n * write .bitmap object to the filesystem\n */\n async write() {\n await this.consumer.writeBitMap();\n }\n\n getBitmapEntry(\n id: ComponentID,\n { ignoreVersion, ignoreScopeAndVersion }: GetBitMapComponentOptions = {}\n ): ComponentMap {\n return this.legacyBitMap.getComponent(id._legacy, { ignoreVersion, ignoreScopeAndVersion });\n }\n}\n"]}
|
package/dist/install.cmd.d.ts
CHANGED
package/dist/install.cmd.js
CHANGED
|
@@ -48,7 +48,7 @@ class InstallCmd {
|
|
|
48
48
|
(0, _defineProperty2().default)(this, "alias", 'in');
|
|
49
49
|
(0, _defineProperty2().default)(this, "group", 'development');
|
|
50
50
|
(0, _defineProperty2().default)(this, "shortDescription", '');
|
|
51
|
-
(0, _defineProperty2().default)(this, "options", [['v', 'variants <variants>', 'add packages to specific variants'], ['t', 'type [lifecycleType]', '"runtime" (default) or "peer" (dev is not a valid option)'], ['u', 'update-existing [updateExisting]', 'update existing dependencies version and types'], ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'], ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'], ['', 'skip-import [skipImport]', 'do not import bit objects post installation']]);
|
|
51
|
+
(0, _defineProperty2().default)(this, "options", [['v', 'variants <variants>', 'add packages to specific variants'], ['t', 'type [lifecycleType]', '"runtime" (default) or "peer" (dev is not a valid option)'], ['u', 'update-existing [updateExisting]', 'update existing dependencies version and types'], ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'], ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'], ['', 'skip-import [skipImport]', 'do not import bit objects post installation'], ['', 'add-missing-peers [addMissingPeers]', 'install all missing peer dependencies']]);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
async report([packages = []], options) {
|
|
@@ -56,11 +56,12 @@ class InstallCmd {
|
|
|
56
56
|
this.logger.console(`Resolving component dependencies for workspace: '${_chalk().default.cyan(this.workspace.name)}'`);
|
|
57
57
|
const installOpts = {
|
|
58
58
|
variants: options.variants,
|
|
59
|
-
lifecycleType: options.type,
|
|
59
|
+
lifecycleType: options.addMissingPeers ? 'peer' : options.type,
|
|
60
60
|
dedupe: !options.skipDedupe,
|
|
61
61
|
import: !options.skipImport,
|
|
62
62
|
updateExisting: options.updateExisting,
|
|
63
|
-
savePrefix: options.savePrefix
|
|
63
|
+
savePrefix: options.savePrefix,
|
|
64
|
+
addMissingPeers: options.addMissingPeers
|
|
64
65
|
};
|
|
65
66
|
const components = await this.workspace.install(packages, installOpts);
|
|
66
67
|
const endTime = Date.now();
|
package/dist/install.cmd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["install.cmd.tsx"],"names":["InstallCmd","constructor","workspace","logger","report","packages","options","startTime","Date","now","console","chalk","cyan","name","installOpts","variants","lifecycleType","type","dedupe","skipDedupe","import","skipImport","updateExisting","savePrefix","components","install","endTime","executionTime","calculateTime","toArray","length","toString","diff"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;
|
|
1
|
+
{"version":3,"sources":["install.cmd.tsx"],"names":["InstallCmd","constructor","workspace","logger","report","packages","options","startTime","Date","now","console","chalk","cyan","name","installOpts","variants","lifecycleType","addMissingPeers","type","dedupe","skipDedupe","import","skipImport","updateExisting","savePrefix","components","install","endTime","executionTime","calculateTime","toArray","length","toString","diff"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAGA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;;AAce,MAAMA,UAAN,CAAoC;AAgBjDC,EAAAA,WAAW;AACT;AACJ;AACA;AACYC,EAAAA,SAJC;AAMT;AACJ;AACA;AACYC,EAAAA,MATC,EAUT;AAAA,SANQD,SAMR,GANQA,SAMR;AAAA,SADQC,MACR,GADQA,MACR;AAAA,kDAzBK,uBAyBL;AAAA,yDAxBY,4CAwBZ;AAAA,mDAvBM,IAuBN;AAAA,mDAtBM,aAsBN;AAAA,8DArBiB,EAqBjB;AAAA,qDApBQ,CACR,CAAC,GAAD,EAAM,qBAAN,EAA6B,mCAA7B,CADQ,EAER,CAAC,GAAD,EAAM,sBAAN,EAA8B,2DAA9B,CAFQ,EAGR,CAAC,GAAD,EAAM,kCAAN,EAA0C,gDAA1C,CAHQ,EAIR,CAAC,EAAD,EAAK,0BAAL,EAAiC,iEAAjC,CAJQ,EAKR,CAAC,EAAD,EAAK,0BAAL,EAAiC,4CAAjC,CALQ,EAMR,CAAC,EAAD,EAAK,0BAAL,EAAiC,6CAAjC,CANQ,EAOR,CAAC,EAAD,EAAK,qCAAL,EAA4C,uCAA5C,CAPQ,CAoBR;AAAE;;AAEQ,QAANC,MAAM,CAAC,CAACC,QAAQ,GAAG,EAAZ,CAAD,EAA8BC,OAA9B,EAA0D;AACpE,UAAMC,SAAS,GAAGC,IAAI,CAACC,GAAL,EAAlB;AACA,SAAKN,MAAL,CAAYO,OAAZ,CAAqB,oDAAmDC,iBAAMC,IAAN,CAAW,KAAKV,SAAL,CAAeW,IAA1B,CAAgC,GAAxG;AACA,UAAMC,WAAoC,GAAG;AAC3CC,MAAAA,QAAQ,EAAET,OAAO,CAACS,QADyB;AAE3CC,MAAAA,aAAa,EAAEV,OAAO,CAACW,eAAR,GAA0B,MAA1B,GAAmCX,OAAO,CAACY,IAFf;AAG3CC,MAAAA,MAAM,EAAE,CAACb,OAAO,CAACc,UAH0B;AAI3CC,MAAAA,MAAM,EAAE,CAACf,OAAO,CAACgB,UAJ0B;AAK3CC,MAAAA,cAAc,EAAEjB,OAAO,CAACiB,cALmB;AAM3CC,MAAAA,UAAU,EAAElB,OAAO,CAACkB,UANuB;AAO3CP,MAAAA,eAAe,EAAEX,OAAO,CAACW;AAPkB,KAA7C;AASA,UAAMQ,UAAU,GAAG,MAAM,KAAKvB,SAAL,CAAewB,OAAf,CAAuBrB,QAAvB,EAAiCS,WAAjC,CAAzB;AACA,UAAMa,OAAO,GAAGnB,IAAI,CAACC,GAAL,EAAhB;AACA,UAAMmB,aAAa,GAAGC,aAAa,CAACtB,SAAD,EAAYoB,OAAZ,CAAnC;AACA,WAAQ,0CAAyChB,iBAAMC,IAAN,CAC/Ca,UAAU,CAACK,OAAX,GAAqBC,MAArB,CAA4BC,QAA5B,EAD+C,CAE/C,oBAAmBrB,iBAAMC,IAAN,CAAWgB,aAAa,CAACI,QAAd,EAAX,CAAqC,UAF1D;AAGD;;AA9CgD;;;;AAiDnD,SAASH,aAAT,CAAuBtB,SAAvB,EAA0CoB,OAA1C,EAA2D;AACzD,QAAMM,IAAI,GAAGN,OAAO,GAAGpB,SAAvB;AACA,SAAO0B,IAAI,GAAG,IAAd;AACD","sourcesContent":["import { Command, CommandOptions } from '@teambit/cli';\nimport { WorkspaceDependencyLifecycleType } from '@teambit/dependency-resolver';\nimport { Logger } from '@teambit/logger';\nimport chalk from 'chalk';\n\nimport { Workspace, WorkspaceInstallOptions } from './workspace';\n\ntype InstallCmdOptions = {\n variants: string;\n type: WorkspaceDependencyLifecycleType;\n skipDedupe: boolean;\n skipImport: boolean;\n updateExisting: boolean;\n savePrefix: string;\n addMissingPeers: boolean;\n};\n\nexport default class InstallCmd implements Command {\n name = 'install [packages...]';\n description = 'install development workspace dependencies';\n alias = 'in';\n group = 'development';\n shortDescription = '';\n options = [\n ['v', 'variants <variants>', 'add packages to specific variants'],\n ['t', 'type [lifecycleType]', '\"runtime\" (default) or \"peer\" (dev is not a valid option)'],\n ['u', 'update-existing [updateExisting]', 'update existing dependencies version and types'],\n ['', 'save-prefix [savePrefix]', 'set the prefix to use when adding dependency to workspace.jsonc'],\n ['', 'skip-dedupe [skipDedupe]', 'do not dedupe dependencies on installation'],\n ['', 'skip-import [skipImport]', 'do not import bit objects post installation'],\n ['', 'add-missing-peers [addMissingPeers]', 'install all missing peer dependencies'],\n ] as CommandOptions;\n\n constructor(\n /**\n * workspace extension.\n */\n private workspace: Workspace,\n\n /**\n * logger extension.\n */\n private logger: Logger\n ) {}\n\n async report([packages = []]: [string[]], options: InstallCmdOptions) {\n const startTime = Date.now();\n this.logger.console(`Resolving component dependencies for workspace: '${chalk.cyan(this.workspace.name)}'`);\n const installOpts: WorkspaceInstallOptions = {\n variants: options.variants,\n lifecycleType: options.addMissingPeers ? 'peer' : options.type,\n dedupe: !options.skipDedupe,\n import: !options.skipImport,\n updateExisting: options.updateExisting,\n savePrefix: options.savePrefix,\n addMissingPeers: options.addMissingPeers,\n };\n const components = await this.workspace.install(packages, installOpts);\n const endTime = Date.now();\n const executionTime = calculateTime(startTime, endTime);\n return `Successfully resolved dependencies for ${chalk.cyan(\n components.toArray().length.toString()\n )} component(s) in ${chalk.cyan(executionTime.toString())} seconds`;\n }\n}\n\nfunction calculateTime(startTime: number, endTime: number) {\n const diff = endTime - startTime;\n return diff / 1000;\n}\n"]}
|
package/dist/workspace.d.ts
CHANGED
|
@@ -33,6 +33,7 @@ import { ComponentStatus } from './workspace-component/component-status';
|
|
|
33
33
|
import { OnComponentAddSlot, OnComponentChangeSlot, OnComponentLoadSlot, OnComponentRemoveSlot, OnPreWatch, OnPreWatchSlot } from './workspace.provider';
|
|
34
34
|
import { WorkspaceComponentLoader } from './workspace-component/workspace-component-loader';
|
|
35
35
|
import { ShouldIgnoreFunc } from './build-graph-from-fs';
|
|
36
|
+
import { BitMap } from './bit-map';
|
|
36
37
|
export declare type EjectConfResult = {
|
|
37
38
|
configPath: string;
|
|
38
39
|
};
|
|
@@ -44,6 +45,7 @@ export interface EjectConfOptions {
|
|
|
44
45
|
override?: boolean;
|
|
45
46
|
}
|
|
46
47
|
export declare type WorkspaceInstallOptions = {
|
|
48
|
+
addMissingPeers?: boolean;
|
|
47
49
|
variants?: string;
|
|
48
50
|
lifecycleType?: WorkspaceDependencyLifecycleType;
|
|
49
51
|
dedupe: boolean;
|
|
@@ -60,6 +62,9 @@ export declare type TrackData = {
|
|
|
60
62
|
componentName?: string;
|
|
61
63
|
mainFile?: string;
|
|
62
64
|
defaultScope?: string;
|
|
65
|
+
config?: {
|
|
66
|
+
[aspectName: string]: any;
|
|
67
|
+
};
|
|
63
68
|
};
|
|
64
69
|
export declare type TrackResult = {
|
|
65
70
|
componentName: string;
|
|
@@ -117,6 +122,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
117
122
|
owner?: string;
|
|
118
123
|
componentsScopeDirsMap: ComponentScopeDirMap;
|
|
119
124
|
componentLoader: WorkspaceComponentLoader;
|
|
125
|
+
bitMap: BitMap;
|
|
120
126
|
constructor(
|
|
121
127
|
/**
|
|
122
128
|
* private pubsub.
|
|
@@ -311,7 +317,6 @@ export declare class Workspace implements ComponentFactory {
|
|
|
311
317
|
*/
|
|
312
318
|
private addOwnerToScopeName;
|
|
313
319
|
write(rootPath: string, component: Component): Promise<void>;
|
|
314
|
-
writeBitMap(): Promise<void>;
|
|
315
320
|
/**
|
|
316
321
|
* Get the component root dir in the file system (relative to workspace or full)
|
|
317
322
|
* @param componentId
|
|
@@ -395,6 +400,7 @@ export declare class Workspace implements ComponentFactory {
|
|
|
395
400
|
* @memberof Workspace
|
|
396
401
|
*/
|
|
397
402
|
install(packages?: string[], options?: WorkspaceInstallOptions): Promise<ComponentMap<string>>;
|
|
403
|
+
private _addPackages;
|
|
398
404
|
private _getComponentsWithDependencyPolicies;
|
|
399
405
|
/**
|
|
400
406
|
* Updates out-of-date dependencies in the workspace.
|
|
@@ -451,12 +457,6 @@ export declare class Workspace implements ComponentFactory {
|
|
|
451
457
|
* @memberof Workspace
|
|
452
458
|
*/
|
|
453
459
|
resolveExtensionsList(extensions: ExtensionDataList): Promise<void[]>;
|
|
454
|
-
/**
|
|
455
|
-
* adds component config to the .bitmap file.
|
|
456
|
-
* later, upon `bit tag`, the data is saved in the scope.
|
|
457
|
-
* returns a boolean indicating whether a chance has been made.
|
|
458
|
-
*/
|
|
459
|
-
addComponentConfigToBitmap(aspectId: string, id: ComponentID, config?: Record<string, any>): Promise<boolean>;
|
|
460
460
|
/**
|
|
461
461
|
* This will mutate the original extensions list and make sure all extensions has the ids with the scope / default scope
|
|
462
462
|
*
|
package/dist/workspace.js
CHANGED
|
@@ -109,6 +109,16 @@ function _importer() {
|
|
|
109
109
|
return data;
|
|
110
110
|
}
|
|
111
111
|
|
|
112
|
+
function _bitError() {
|
|
113
|
+
const data = require("@teambit/bit-error");
|
|
114
|
+
|
|
115
|
+
_bitError = function () {
|
|
116
|
+
return data;
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
return data;
|
|
120
|
+
}
|
|
121
|
+
|
|
112
122
|
function _dependencyResolver() {
|
|
113
123
|
const data = require("@teambit/dependency-resolver");
|
|
114
124
|
|
|
@@ -289,16 +299,6 @@ function _componentIdToPackageName() {
|
|
|
289
299
|
return data;
|
|
290
300
|
}
|
|
291
301
|
|
|
292
|
-
function _bitError() {
|
|
293
|
-
const data = require("@teambit/bit-error");
|
|
294
|
-
|
|
295
|
-
_bitError = function () {
|
|
296
|
-
return data;
|
|
297
|
-
};
|
|
298
|
-
|
|
299
|
-
return data;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
302
|
function _fsExtra() {
|
|
303
303
|
const data = _interopRequireDefault(require("fs-extra"));
|
|
304
304
|
|
|
@@ -419,6 +419,17 @@ function _buildGraphFromFs() {
|
|
|
419
419
|
return data;
|
|
420
420
|
}
|
|
421
421
|
|
|
422
|
+
function _bitMap() {
|
|
423
|
+
const data = require("./bit-map");
|
|
424
|
+
|
|
425
|
+
_bitMap = function () {
|
|
426
|
+
return data;
|
|
427
|
+
};
|
|
428
|
+
|
|
429
|
+
return data;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/* eslint-disable max-lines */
|
|
422
433
|
const ComponentAdded = 'componentAdded';
|
|
423
434
|
exports.ComponentAdded = ComponentAdded;
|
|
424
435
|
const ComponentChanged = 'componentChanged';
|
|
@@ -489,11 +500,13 @@ class Workspace {
|
|
|
489
500
|
(0, _defineProperty2().default)(this, "owner", void 0);
|
|
490
501
|
(0, _defineProperty2().default)(this, "componentsScopeDirsMap", void 0);
|
|
491
502
|
(0, _defineProperty2().default)(this, "componentLoader", void 0);
|
|
503
|
+
(0, _defineProperty2().default)(this, "bitMap", void 0);
|
|
492
504
|
(0, _defineProperty2().default)(this, "watcher", new (_watcher().Watcher)(this, this.pubsub));
|
|
493
505
|
// TODO: refactor - prefer to avoid code inside the constructor.
|
|
494
506
|
this.owner = (_this$config = this.config) === null || _this$config === void 0 ? void 0 : _this$config.defaultOwner;
|
|
495
507
|
this.componentLoader = new (_workspaceComponentLoader().WorkspaceComponentLoader)(this, logger, dependencyResolver, envs);
|
|
496
|
-
this.validateConfig();
|
|
508
|
+
this.validateConfig();
|
|
509
|
+
this.bitMap = new (_bitMap().BitMap)(this.consumer.bitMap, this.consumer); // memoize this method to improve performance.
|
|
497
510
|
|
|
498
511
|
this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFile = (0, _memoizee().default)(this.componentDefaultScopeFromComponentDirAndNameWithoutConfigFile.bind(this), {
|
|
499
512
|
primitive: true,
|
|
@@ -810,7 +823,7 @@ class Workspace {
|
|
|
810
823
|
// new file. write these changes to the .bitmap file so then other processes have access to
|
|
811
824
|
// this new file. If the .bitmap wasn't change, it won't do anything.
|
|
812
825
|
|
|
813
|
-
await this.
|
|
826
|
+
await this.bitMap.write();
|
|
814
827
|
const onChangeEntries = this.onComponentChangeSlot.toArray(); // e.g. [ [ 'teambit.bit/compiler', [Function: bound onComponentChange] ] ]
|
|
815
828
|
|
|
816
829
|
const results = [];
|
|
@@ -1035,7 +1048,7 @@ class Workspace {
|
|
|
1035
1048
|
const addResults = await addComponent.add(); // @todo: the legacy commands have `consumer.onDestroy()` on command completion, it writes the
|
|
1036
1049
|
// .bitmap file. workspace needs a similar mechanism. once done, remove the next line.
|
|
1037
1050
|
|
|
1038
|
-
await this.
|
|
1051
|
+
await this.bitMap.write();
|
|
1039
1052
|
return addResults;
|
|
1040
1053
|
}
|
|
1041
1054
|
/**
|
|
@@ -1054,7 +1067,8 @@ class Workspace {
|
|
|
1054
1067
|
id: trackData.componentName,
|
|
1055
1068
|
main: trackData.mainFile,
|
|
1056
1069
|
override: false,
|
|
1057
|
-
defaultScope
|
|
1070
|
+
defaultScope,
|
|
1071
|
+
config: trackData.config
|
|
1058
1072
|
});
|
|
1059
1073
|
const result = await addComponent.add();
|
|
1060
1074
|
const addedComponent = result.addedComponents[0];
|
|
@@ -1098,10 +1112,6 @@ class Workspace {
|
|
|
1098
1112
|
await _fsExtra().default.outputFile(pathToWrite, file.contents);
|
|
1099
1113
|
}));
|
|
1100
1114
|
}
|
|
1101
|
-
|
|
1102
|
-
async writeBitMap() {
|
|
1103
|
-
await this.consumer.writeBitMap();
|
|
1104
|
-
}
|
|
1105
1115
|
/**
|
|
1106
1116
|
* Get the component root dir in the file system (relative to workspace or full)
|
|
1107
1117
|
* @param componentId
|
|
@@ -1665,40 +1675,25 @@ class Workspace {
|
|
|
1665
1675
|
|
|
1666
1676
|
async install(packages, options) {
|
|
1667
1677
|
if (packages && packages.length) {
|
|
1668
|
-
|
|
1669
|
-
|
|
1670
|
-
}
|
|
1671
|
-
|
|
1672
|
-
this.logger.debug(`installing the following packages: ${packages.join()}`);
|
|
1673
|
-
const resolver = await this.dependencyResolver.getVersionResolver();
|
|
1674
|
-
const resolvedPackagesP = packages.map(packageName => resolver.resolveRemoteVersion(packageName, {
|
|
1675
|
-
rootDir: this.path
|
|
1676
|
-
}));
|
|
1677
|
-
const resolvedPackages = await Promise.all(resolvedPackagesP);
|
|
1678
|
-
const newWorkspacePolicyEntries = [];
|
|
1679
|
-
resolvedPackages.forEach(resolvedPackage => {
|
|
1680
|
-
if (resolvedPackage.version) {
|
|
1681
|
-
const versionWithPrefix = this.dependencyResolver.getVersionWithSavePrefix(resolvedPackage.version, options === null || options === void 0 ? void 0 : options.savePrefix);
|
|
1682
|
-
newWorkspacePolicyEntries.push({
|
|
1683
|
-
dependencyId: resolvedPackage.packageName,
|
|
1684
|
-
value: {
|
|
1685
|
-
version: versionWithPrefix
|
|
1686
|
-
},
|
|
1687
|
-
lifecycleType: (options === null || options === void 0 ? void 0 : options.lifecycleType) || 'runtime'
|
|
1688
|
-
});
|
|
1689
|
-
}
|
|
1690
|
-
});
|
|
1691
|
-
|
|
1692
|
-
if (!(options !== null && options !== void 0 && options.variants)) {
|
|
1693
|
-
var _options$updateExisti;
|
|
1694
|
-
|
|
1695
|
-
this.dependencyResolver.addToRootPolicy(newWorkspacePolicyEntries, {
|
|
1696
|
-
updateExisting: (_options$updateExisti = options === null || options === void 0 ? void 0 : options.updateExisting) !== null && _options$updateExisti !== void 0 ? _options$updateExisti : false
|
|
1697
|
-
});
|
|
1698
|
-
} else {// TODO: implement
|
|
1699
|
-
}
|
|
1678
|
+
await this._addPackages(packages, options);
|
|
1679
|
+
}
|
|
1700
1680
|
|
|
1701
|
-
|
|
1681
|
+
if (options !== null && options !== void 0 && options.addMissingPeers) {
|
|
1682
|
+
var _options$copyPeerToRu, _options$copyPeerToRu2;
|
|
1683
|
+
|
|
1684
|
+
const compDirMap = await this.getComponentsDirectory([]);
|
|
1685
|
+
const mergedRootPolicy = this.dependencyResolver.getWorkspacePolicy();
|
|
1686
|
+
const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();
|
|
1687
|
+
const pmInstallOptions = {
|
|
1688
|
+
dedupe: options === null || options === void 0 ? void 0 : options.dedupe,
|
|
1689
|
+
copyPeerToRuntimeOnRoot: (_options$copyPeerToRu = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnRoot) !== null && _options$copyPeerToRu !== void 0 ? _options$copyPeerToRu : true,
|
|
1690
|
+
copyPeerToRuntimeOnComponents: (_options$copyPeerToRu2 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnComponents) !== null && _options$copyPeerToRu2 !== void 0 ? _options$copyPeerToRu2 : false,
|
|
1691
|
+
dependencyFilterFn: depsFilterFn,
|
|
1692
|
+
overrides: this.dependencyResolver.config.overrides
|
|
1693
|
+
};
|
|
1694
|
+
const missingPeers = await this.dependencyResolver.getMissingPeerDependencies(this.path, mergedRootPolicy, compDirMap, pmInstallOptions);
|
|
1695
|
+
const missingPeerPackages = Object.entries(missingPeers).map(([peerName, range]) => `${peerName}@${range}`);
|
|
1696
|
+
await this._addPackages(missingPeerPackages, options);
|
|
1702
1697
|
}
|
|
1703
1698
|
|
|
1704
1699
|
if (options !== null && options !== void 0 && options.import) {
|
|
@@ -1710,6 +1705,43 @@ class Workspace {
|
|
|
1710
1705
|
return this._installModules(options);
|
|
1711
1706
|
}
|
|
1712
1707
|
|
|
1708
|
+
async _addPackages(packages, options) {
|
|
1709
|
+
if (!(options !== null && options !== void 0 && options.variants) && (options === null || options === void 0 ? void 0 : options.lifecycleType) === 'dev') {
|
|
1710
|
+
throw new (_exceptions3().DependencyTypeNotSupportedInPolicy)(options === null || options === void 0 ? void 0 : options.lifecycleType);
|
|
1711
|
+
}
|
|
1712
|
+
|
|
1713
|
+
this.logger.debug(`installing the following packages: ${packages.join()}`);
|
|
1714
|
+
const resolver = await this.dependencyResolver.getVersionResolver();
|
|
1715
|
+
const resolvedPackagesP = packages.map(packageName => resolver.resolveRemoteVersion(packageName, {
|
|
1716
|
+
rootDir: this.path
|
|
1717
|
+
}));
|
|
1718
|
+
const resolvedPackages = await Promise.all(resolvedPackagesP);
|
|
1719
|
+
const newWorkspacePolicyEntries = [];
|
|
1720
|
+
resolvedPackages.forEach(resolvedPackage => {
|
|
1721
|
+
if (resolvedPackage.version) {
|
|
1722
|
+
const versionWithPrefix = this.dependencyResolver.getVersionWithSavePrefix(resolvedPackage.version, options === null || options === void 0 ? void 0 : options.savePrefix);
|
|
1723
|
+
newWorkspacePolicyEntries.push({
|
|
1724
|
+
dependencyId: resolvedPackage.packageName,
|
|
1725
|
+
value: {
|
|
1726
|
+
version: versionWithPrefix
|
|
1727
|
+
},
|
|
1728
|
+
lifecycleType: (options === null || options === void 0 ? void 0 : options.lifecycleType) || 'runtime'
|
|
1729
|
+
});
|
|
1730
|
+
}
|
|
1731
|
+
});
|
|
1732
|
+
|
|
1733
|
+
if (!(options !== null && options !== void 0 && options.variants)) {
|
|
1734
|
+
var _options$updateExisti;
|
|
1735
|
+
|
|
1736
|
+
this.dependencyResolver.addToRootPolicy(newWorkspacePolicyEntries, {
|
|
1737
|
+
updateExisting: (_options$updateExisti = options === null || options === void 0 ? void 0 : options.updateExisting) !== null && _options$updateExisti !== void 0 ? _options$updateExisti : false
|
|
1738
|
+
});
|
|
1739
|
+
} else {// TODO: implement
|
|
1740
|
+
}
|
|
1741
|
+
|
|
1742
|
+
await this.dependencyResolver.persistConfig(this.path);
|
|
1743
|
+
}
|
|
1744
|
+
|
|
1713
1745
|
async _getComponentsWithDependencyPolicies() {
|
|
1714
1746
|
const allComponentIds = await this.listIds();
|
|
1715
1747
|
const componentConfigFiles = {};
|
|
@@ -1812,7 +1844,7 @@ class Workspace {
|
|
|
1812
1844
|
}
|
|
1813
1845
|
|
|
1814
1846
|
async _installModules(options) {
|
|
1815
|
-
var _options$
|
|
1847
|
+
var _options$copyPeerToRu3, _options$copyPeerToRu4;
|
|
1816
1848
|
|
|
1817
1849
|
this.logger.console(`installing dependencies in workspace using ${_chalk().default.cyan(this.dependencyResolver.getPackageManagerName())}`);
|
|
1818
1850
|
this.logger.debug(`installing dependencies in workspace with options`, options);
|
|
@@ -1824,8 +1856,8 @@ class Workspace {
|
|
|
1824
1856
|
const depsFilterFn = await this.generateFilterFnForDepsFromLocalRemote();
|
|
1825
1857
|
const pmInstallOptions = {
|
|
1826
1858
|
dedupe: options === null || options === void 0 ? void 0 : options.dedupe,
|
|
1827
|
-
copyPeerToRuntimeOnRoot: (_options$
|
|
1828
|
-
copyPeerToRuntimeOnComponents: (_options$
|
|
1859
|
+
copyPeerToRuntimeOnRoot: (_options$copyPeerToRu3 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnRoot) !== null && _options$copyPeerToRu3 !== void 0 ? _options$copyPeerToRu3 : true,
|
|
1860
|
+
copyPeerToRuntimeOnComponents: (_options$copyPeerToRu4 = options === null || options === void 0 ? void 0 : options.copyPeerToRuntimeOnComponents) !== null && _options$copyPeerToRu4 !== void 0 ? _options$copyPeerToRu4 : false,
|
|
1829
1861
|
dependencyFilterFn: depsFilterFn,
|
|
1830
1862
|
overrides: this.dependencyResolver.config.overrides
|
|
1831
1863
|
};
|
|
@@ -2117,34 +2149,6 @@ your workspace.jsonc has this component-id set. you might want to remove/change
|
|
|
2117
2149
|
});
|
|
2118
2150
|
return Promise.all(resolveMergedExtensionsP);
|
|
2119
2151
|
}
|
|
2120
|
-
/**
|
|
2121
|
-
* adds component config to the .bitmap file.
|
|
2122
|
-
* later, upon `bit tag`, the data is saved in the scope.
|
|
2123
|
-
* returns a boolean indicating whether a chance has been made.
|
|
2124
|
-
*/
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
async addComponentConfigToBitmap(aspectId, id, config) {
|
|
2128
|
-
if (!aspectId || typeof aspectId !== 'string') throw new Error(`expect aspectId to be string, got ${aspectId}`);
|
|
2129
|
-
const bitMapEntry = this.consumer.bitMap.getComponent(id._legacy, {
|
|
2130
|
-
ignoreScopeAndVersion: true
|
|
2131
|
-
});
|
|
2132
|
-
const currentConfig = (bitMapEntry.config || (bitMapEntry.config = {}))[aspectId];
|
|
2133
|
-
|
|
2134
|
-
if ((0, _lodash().isEqual)(currentConfig, config)) {
|
|
2135
|
-
return false; // no changes
|
|
2136
|
-
}
|
|
2137
|
-
|
|
2138
|
-
if (!config) {
|
|
2139
|
-
delete bitMapEntry.config[aspectId];
|
|
2140
|
-
} else {
|
|
2141
|
-
bitMapEntry.config[aspectId] = config;
|
|
2142
|
-
}
|
|
2143
|
-
|
|
2144
|
-
this.consumer.bitMap.markAsChanged();
|
|
2145
|
-
await this.writeBitMap();
|
|
2146
|
-
return true; // changes have been made
|
|
2147
|
-
}
|
|
2148
2152
|
/**
|
|
2149
2153
|
* This will mutate the original extensions list and make sure all extensions has the ids with the scope / default scope
|
|
2150
2154
|
*
|