@teambit/isolator 0.0.0-0198c1f11205aecf89f79e022583930ed8478dea

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.
Files changed (46) hide show
  1. package/capsule/capsule.ts +140 -0
  2. package/capsule/container-exec.ts +32 -0
  3. package/capsule/container.ts +129 -0
  4. package/capsule/index.ts +3 -0
  5. package/dist/capsule/capsule.d.ts +77 -0
  6. package/dist/capsule/capsule.js +194 -0
  7. package/dist/capsule/capsule.js.map +1 -0
  8. package/dist/capsule/container-exec.d.ts +14 -0
  9. package/dist/capsule/container-exec.js +51 -0
  10. package/dist/capsule/container-exec.js.map +1 -0
  11. package/dist/capsule/container.d.ts +35 -0
  12. package/dist/capsule/container.js +153 -0
  13. package/dist/capsule/container.js.map +1 -0
  14. package/dist/capsule/index.d.ts +3 -0
  15. package/dist/capsule/index.js +47 -0
  16. package/dist/capsule/index.js.map +1 -0
  17. package/dist/capsule-list.d.ts +22 -0
  18. package/dist/capsule-list.js +100 -0
  19. package/dist/capsule-list.js.map +1 -0
  20. package/dist/esm.mjs +13 -0
  21. package/dist/index.d.ts +6 -0
  22. package/dist/index.js +85 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/isolator.aspect.d.ts +2 -0
  25. package/dist/isolator.aspect.js +20 -0
  26. package/dist/isolator.aspect.js.map +1 -0
  27. package/dist/isolator.composition.d.ts +1 -0
  28. package/dist/isolator.composition.js +29 -0
  29. package/dist/isolator.composition.js.map +1 -0
  30. package/dist/isolator.docs.md +41 -0
  31. package/dist/isolator.main.runtime.d.ts +285 -0
  32. package/dist/isolator.main.runtime.js +1225 -0
  33. package/dist/isolator.main.runtime.js.map +1 -0
  34. package/dist/network.d.ts +131 -0
  35. package/dist/network.js +191 -0
  36. package/dist/network.js.map +1 -0
  37. package/dist/preview-1753834933455.js +7 -0
  38. package/dist/symlink-dependencies-to-capsules.d.ts +6 -0
  39. package/dist/symlink-dependencies-to-capsules.js +61 -0
  40. package/dist/symlink-dependencies-to-capsules.js.map +1 -0
  41. package/esm.mjs +13 -0
  42. package/isolator.composition.tsx +7 -0
  43. package/isolator.docs.md +41 -0
  44. package/package.json +94 -0
  45. package/types/asset.d.ts +41 -0
  46. package/types/style.d.ts +42 -0
@@ -0,0 +1,35 @@
1
+ import type { AnyFS } from '@teambit/any-fs';
2
+ import { NodeFS } from '@teambit/any-fs';
3
+ import type { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';
4
+ import execa from 'execa';
5
+ import type { Stream } from 'stream';
6
+ import ContainerExec from './container-exec';
7
+ export interface BitExecOption extends ExecOptions {
8
+ cwd: string;
9
+ stdio?: 'pipe' | 'ipc' | 'ignore' | 'inherit' | Stream | number | undefined;
10
+ }
11
+ export interface BitContainerConfig extends ContainerFactoryOptions {
12
+ other?: string;
13
+ }
14
+ export default class FsContainer implements Container<Exec, AnyFS> {
15
+ readonly wrkDir: string;
16
+ id: string;
17
+ fs: NodeFS;
18
+ constructor(wrkDir: string);
19
+ getPath(): string;
20
+ private composePath;
21
+ outputFile(file: any, data: any, options: any): Promise<void>;
22
+ removePath(dir: string): Promise<any>;
23
+ symlink(src: string, dest: string): Promise<any>;
24
+ exec(execOptions: BitExecOption, exec?: ContainerExec): Promise<ContainerExec>;
25
+ execP(execOptions: BitExecOption): Promise<string>;
26
+ terminal(): Promise<execa.ExecaReturnValue<string>>;
27
+ start(): Promise<void>;
28
+ inspect(): Promise<ContainerStatus>;
29
+ pause(): Promise<void>;
30
+ resume(): Promise<void>;
31
+ stop(ttl?: number | undefined): Promise<void>;
32
+ destroy(): Promise<void>;
33
+ log(): Promise<Exec>;
34
+ on(event: string, fn: (data: any) => void): void;
35
+ }
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ function _anyFs() {
8
+ const data = require("@teambit/any-fs");
9
+ _anyFs = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _execa() {
15
+ const data = _interopRequireDefault(require("execa"));
16
+ _execa = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ function _fsExtra() {
22
+ const data = _interopRequireDefault(require("fs-extra"));
23
+ _fsExtra = function () {
24
+ return data;
25
+ };
26
+ return data;
27
+ }
28
+ function path() {
29
+ const data = _interopRequireWildcard(require("path"));
30
+ path = function () {
31
+ return data;
32
+ };
33
+ return data;
34
+ }
35
+ function _containerExec() {
36
+ const data = _interopRequireDefault(require("./container-exec"));
37
+ _containerExec = function () {
38
+ return data;
39
+ };
40
+ return data;
41
+ }
42
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
43
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
44
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
45
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
46
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
47
+ const debug = require('debug')('fs-container');
48
+ class FsContainer {
49
+ constructor(wrkDir) {
50
+ this.wrkDir = wrkDir;
51
+ _defineProperty(this, "id", 'FS Container');
52
+ _defineProperty(this, "fs", new (_anyFs().NodeFS)(this.wrkDir));
53
+ }
54
+
55
+ // TODO: do we need this?
56
+ getPath() {
57
+ return this.wrkDir;
58
+ }
59
+ composePath(pathToCompose) {
60
+ return path().join(this.getPath(), pathToCompose);
61
+ }
62
+ outputFile(file, data, options) {
63
+ const filePath = this.composePath(file);
64
+ debug(`writing file on ${filePath}`);
65
+ return _fsExtra().default.outputFile(filePath, data, options);
66
+ }
67
+ removePath(dir) {
68
+ const pathToRemove = this.composePath(dir);
69
+ return _fsExtra().default.remove(pathToRemove);
70
+ }
71
+ async symlink(src, dest) {
72
+ const srcPath = this.composePath(src);
73
+ const destPath = this.composePath(dest);
74
+ await _fsExtra().default.ensureDir(path().dirname(destPath));
75
+ return _fsExtra().default.ensureSymlink(srcPath, destPath);
76
+ }
77
+ async exec(execOptions, exec = new (_containerExec().default)()) {
78
+ const cwd = execOptions.cwd ? this.composePath(execOptions.cwd) : this.getPath();
79
+ debug(`executing the following command: ${execOptions.command.join(' ')}, on cwd: ${cwd}`);
80
+ const subprocessP = _execa().default.command(execOptions.command.join(' '), {
81
+ shell: true,
82
+ cwd,
83
+ stdio: ['ipc']
84
+ });
85
+
86
+ // @TODO: FIX! This probably causes errors ad the promise is not handled properly!
87
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
88
+ subprocessP.on('message', function (msg) {
89
+ exec.emit('message', msg);
90
+ });
91
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
92
+ subprocessP.stderr?.pipe(exec.stderr);
93
+ subprocessP.stdout?.pipe(exec.stdout);
94
+ ['close', 'exit'].forEach(function (eventName) {
95
+ // @TODO: FIX! This probably causes errors ad the promise is not handled properly!
96
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
97
+ subprocessP.on(eventName, function (statusCode) {
98
+ exec.setStatus(statusCode);
99
+ });
100
+ });
101
+ return exec;
102
+ }
103
+ async execP(execOptions) {
104
+ let hasError = false;
105
+ const exec = await this.exec(execOptions);
106
+ return new Promise((resolve, reject) => {
107
+ exec.stdout.on('error', () => {
108
+ hasError = true;
109
+ });
110
+ exec.on('close', () => {
111
+ if (hasError) reject(exec.stderr.getContents(exec.stderr.size).toString());
112
+ resolve(exec.stdout.getContents(exec.stdout.size).toString());
113
+ });
114
+ });
115
+ }
116
+ async terminal() {
117
+ const cwd = this.getPath();
118
+ return _execa().default.command(process.env.SHELL || '/bin/zsh', {
119
+ cwd,
120
+ stdio: 'inherit'
121
+ });
122
+ }
123
+ start() {
124
+ return _fsExtra().default.ensureDir(this.wrkDir);
125
+ }
126
+ // @ts-ignore
127
+ async inspect() {
128
+ // todo: probably not needed for this container
129
+ }
130
+ async pause() {
131
+ // do nothing
132
+ }
133
+ async resume() {
134
+ // do nothing
135
+ }
136
+ // eslint-disable-next-line
137
+ stop(ttl) {
138
+ return _fsExtra().default.remove(this.wrkDir);
139
+ }
140
+ async destroy() {
141
+ await this.stop();
142
+ }
143
+ log() {
144
+ throw new Error('Method not implemented.');
145
+ }
146
+ on(event, fn) {
147
+ return fn(event);
148
+ // throw new Error('Method not implemented.');
149
+ }
150
+ }
151
+ exports.default = FsContainer;
152
+
153
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_anyFs","data","require","_execa","_interopRequireDefault","_fsExtra","path","_interopRequireWildcard","_containerExec","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","debug","FsContainer","constructor","wrkDir","NodeFS","getPath","composePath","pathToCompose","join","outputFile","file","options","filePath","fs","removePath","dir","pathToRemove","remove","symlink","src","dest","srcPath","destPath","ensureDir","dirname","ensureSymlink","exec","execOptions","ContainerExec","cwd","command","subprocessP","execa","shell","stdio","on","msg","emit","stderr","pipe","stdout","forEach","eventName","statusCode","setStatus","execP","hasError","Promise","resolve","reject","getContents","size","toString","terminal","process","env","SHELL","start","inspect","pause","resume","stop","ttl","destroy","log","Error","event","fn","exports"],"sources":["container.ts"],"sourcesContent":["import type { AnyFS } from '@teambit/any-fs';\nimport { NodeFS } from '@teambit/any-fs';\nimport type { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';\nimport execa from 'execa';\nimport fs from 'fs-extra';\nimport * as path from 'path';\nimport type { Stream } from 'stream';\n\nimport ContainerExec from './container-exec';\n\nconst debug = require('debug')('fs-container');\n\nexport interface BitExecOption extends ExecOptions {\n cwd: string;\n stdio?: 'pipe' | 'ipc' | 'ignore' | 'inherit' | Stream | number | undefined;\n}\nexport interface BitContainerConfig extends ContainerFactoryOptions {\n other?: string;\n}\n\nexport default class FsContainer implements Container<Exec, AnyFS> {\n id = 'FS Container';\n\n fs: NodeFS = new NodeFS(this.wrkDir);\n\n constructor(readonly wrkDir: string) {}\n\n // TODO: do we need this?\n public getPath() {\n return this.wrkDir;\n }\n\n private composePath(pathToCompose) {\n return path.join(this.getPath(), pathToCompose);\n }\n\n outputFile(file, data, options) {\n const filePath = this.composePath(file);\n debug(`writing file on ${filePath}`);\n return fs.outputFile(filePath, data, options);\n }\n\n removePath(dir: string): Promise<any> {\n const pathToRemove = this.composePath(dir);\n return fs.remove(pathToRemove);\n }\n\n async symlink(src: string, dest: string): Promise<any> {\n const srcPath = this.composePath(src);\n const destPath = this.composePath(dest);\n await fs.ensureDir(path.dirname(destPath));\n return fs.ensureSymlink(srcPath, destPath);\n }\n\n async exec(execOptions: BitExecOption, exec = new ContainerExec()): Promise<ContainerExec> {\n const cwd = execOptions.cwd ? this.composePath(execOptions.cwd) : this.getPath();\n debug(`executing the following command: ${execOptions.command.join(' ')}, on cwd: ${cwd}`);\n const subprocessP = execa.command(execOptions.command.join(' '), {\n shell: true,\n cwd,\n stdio: ['ipc'],\n });\n\n // @TODO: FIX! This probably causes errors ad the promise is not handled properly!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n subprocessP.on('message', function (msg: any) {\n exec.emit('message', msg);\n });\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n subprocessP.stderr?.pipe(exec.stderr);\n subprocessP.stdout?.pipe(exec.stdout);\n ['close', 'exit'].forEach(function (eventName: string) {\n // @TODO: FIX! This probably causes errors ad the promise is not handled properly!\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n subprocessP.on(eventName, function (statusCode) {\n exec.setStatus(statusCode);\n });\n });\n\n return exec;\n }\n\n async execP(execOptions: BitExecOption): Promise<string> {\n let hasError = false;\n const exec = await this.exec(execOptions);\n return new Promise((resolve, reject) => {\n exec.stdout.on('error', () => {\n hasError = true;\n });\n exec.on('close', () => {\n if (hasError) reject(exec.stderr.getContents!(exec.stderr.size).toString());\n resolve(exec.stdout.getContents!(exec.stdout.size).toString());\n });\n });\n }\n\n async terminal() {\n const cwd = this.getPath();\n return execa.command(process.env.SHELL || '/bin/zsh', { cwd, stdio: 'inherit' });\n }\n\n start(): Promise<void> {\n return fs.ensureDir(this.wrkDir);\n }\n // @ts-ignore\n async inspect(): Promise<ContainerStatus> {\n // todo: probably not needed for this container\n }\n async pause(): Promise<void> {\n // do nothing\n }\n async resume(): Promise<void> {\n // do nothing\n }\n // eslint-disable-next-line\n stop(ttl?: number | undefined): Promise<void> {\n return fs.remove(this.wrkDir);\n }\n async destroy(): Promise<void> {\n await this.stop();\n }\n log(): Promise<Exec> {\n throw new Error('Method not implemented.');\n }\n on(event: string, fn: (data: any) => void): void {\n return fn(event);\n // throw new Error('Method not implemented.');\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,3 @@
1
+ export { default as Capsule } from './capsule';
2
+ export { default as FsContainer } from './container';
3
+ export { default as ContainerExec } from './container-exec';
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "Capsule", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _capsule().default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "ContainerExec", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _containerExec().default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "FsContainer", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _container().default;
22
+ }
23
+ });
24
+ function _capsule() {
25
+ const data = _interopRequireDefault(require("./capsule"));
26
+ _capsule = function () {
27
+ return data;
28
+ };
29
+ return data;
30
+ }
31
+ function _container() {
32
+ const data = _interopRequireDefault(require("./container"));
33
+ _container = function () {
34
+ return data;
35
+ };
36
+ return data;
37
+ }
38
+ function _containerExec() {
39
+ const data = _interopRequireDefault(require("./container-exec"));
40
+ _containerExec = function () {
41
+ return data;
42
+ };
43
+ return data;
44
+ }
45
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
46
+
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_capsule","data","_interopRequireDefault","require","_container","_containerExec","e","__esModule","default"],"sources":["index.ts"],"sourcesContent":["export { default as Capsule } from './capsule';\nexport { default as FsContainer } from './container';\nexport { default as ContainerExec } from './container-exec';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,WAAA;EAAA,MAAAH,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAC,UAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAI,eAAA;EAAA,MAAAJ,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAE,cAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA4D,SAAAC,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ import type { Component } from '@teambit/component';
2
+ import type { DependencyResolverMain } from '@teambit/dependency-resolver';
3
+ import { Graph } from '@teambit/graph.cleargraph';
4
+ import type { ComponentID } from '@teambit/component-id';
5
+ import type { Capsule } from './capsule';
6
+ export default class CapsuleList extends Array<Capsule> {
7
+ getCapsule(id: ComponentID): Capsule | undefined;
8
+ getCapsuleByLegacyId(id: ComponentID): Capsule | undefined;
9
+ getCapsuleIgnoreVersion(id: ComponentID): Capsule | undefined;
10
+ getAllCapsuleDirs(): string[];
11
+ getIdByPathInCapsule(pathInCapsule: string): ComponentID | null;
12
+ getAllComponents(): Component[];
13
+ getAllComponentIDs(): ComponentID[];
14
+ getGraphIds(): Graph<Component, string>;
15
+ toposort(depResolver: DependencyResolverMain): Promise<CapsuleList>;
16
+ static fromArray(capsules: Capsule[]): CapsuleList;
17
+ /**
18
+ * determines whether or not a capsule can theoretically use the dists saved in the last snap, rather than re-compile them.
19
+ * practically, this optimization is used for components that have typescript as their compiler.
20
+ */
21
+ static capsuleUsePreviouslySavedDists(component: Component): Promise<boolean>;
22
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+ function _graph() {
8
+ const data = require("@teambit/graph.cleargraph");
9
+ _graph = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _path() {
15
+ const data = require("path");
16
+ _path = function () {
17
+ return data;
18
+ };
19
+ return data;
20
+ }
21
+ class CapsuleList extends Array {
22
+ getCapsule(id) {
23
+ return this.find(capsule => capsule.component.id.isEqual(id));
24
+ }
25
+ getCapsuleByLegacyId(id) {
26
+ return this.find(capsule => capsule.component.id.isEqual(id));
27
+ }
28
+ getCapsuleIgnoreVersion(id) {
29
+ return this.find(capsule => capsule.component.id.isEqual(id, {
30
+ ignoreVersion: true
31
+ }));
32
+ }
33
+ getAllCapsuleDirs() {
34
+ return this.map(capsule => capsule.path);
35
+ }
36
+ getIdByPathInCapsule(pathInCapsule) {
37
+ const normalizedPathInCapsule = (0, _path().normalize)(pathInCapsule);
38
+ const found = this.find(capsule => normalizedPathInCapsule === (0, _path().normalize)(capsule.path));
39
+ return found ? found.component.id : null;
40
+ }
41
+ getAllComponents() {
42
+ return this.map(c => c.component);
43
+ }
44
+ getAllComponentIDs() {
45
+ return this.map(c => c.component.id);
46
+ }
47
+ getGraphIds() {
48
+ const components = this.getAllComponents();
49
+ const graph = new (_graph().Graph)();
50
+ components.forEach(comp => graph.setNode(new (_graph().Node)(comp.id.toString(), comp)));
51
+ const compIdsStr = components.map(c => c.id.toString());
52
+ components.forEach(comp => {
53
+ const deps = comp.getDependencies();
54
+ deps.forEach(dep => {
55
+ if (compIdsStr.includes(dep.id)) {
56
+ graph.setEdge(new (_graph().Edge)(comp.id.toString(), dep.id, dep.type));
57
+ }
58
+ });
59
+ });
60
+ return graph;
61
+ }
62
+ // Sort the capsules by their dependencies. The capsules with no dependencies will be first. Returns a new array.
63
+ async toposort(depResolver) {
64
+ const components = this.getAllComponents();
65
+ const graph = new (_graph().Graph)();
66
+
67
+ // Build a graph with all the components from the current capsule list
68
+ components.forEach(comp => graph.setNode(new (_graph().Node)(depResolver.getPackageName(comp), comp)));
69
+
70
+ // Add edges between the components according to their interdependencies
71
+ for (const node of graph.nodes) {
72
+ // eslint-disable-next-line no-await-in-loop
73
+ const deps = await depResolver.getDependencies(node.attr);
74
+ deps.forEach(dep => {
75
+ const depPkgName = dep.getPackageName?.();
76
+ if (depPkgName && graph.hasNode(depPkgName)) {
77
+ graph.setEdge(new (_graph().Edge)(node.id, depPkgName, dep.lifecycle));
78
+ }
79
+ });
80
+ }
81
+ const sortedSeeders = graph.toposort(true);
82
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
83
+ const sortedCapsules = sortedSeeders.map(node => this.getCapsule(node.attr.id));
84
+ return CapsuleList.fromArray(sortedCapsules);
85
+ }
86
+ static fromArray(capsules) {
87
+ return new CapsuleList(...capsules);
88
+ }
89
+ /**
90
+ * determines whether or not a capsule can theoretically use the dists saved in the last snap, rather than re-compile them.
91
+ * practically, this optimization is used for components that have typescript as their compiler.
92
+ */
93
+ static async capsuleUsePreviouslySavedDists(component) {
94
+ const isModified = await component.isModified();
95
+ return component.buildStatus === 'succeed' && !isModified;
96
+ }
97
+ }
98
+ exports.default = CapsuleList;
99
+
100
+ //# sourceMappingURL=capsule-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_graph","data","require","_path","CapsuleList","Array","getCapsule","id","find","capsule","component","isEqual","getCapsuleByLegacyId","getCapsuleIgnoreVersion","ignoreVersion","getAllCapsuleDirs","map","path","getIdByPathInCapsule","pathInCapsule","normalizedPathInCapsule","normalize","found","getAllComponents","c","getAllComponentIDs","getGraphIds","components","graph","Graph","forEach","comp","setNode","Node","toString","compIdsStr","deps","getDependencies","dep","includes","setEdge","Edge","type","toposort","depResolver","getPackageName","node","nodes","attr","depPkgName","hasNode","lifecycle","sortedSeeders","sortedCapsules","fromArray","capsules","capsuleUsePreviouslySavedDists","isModified","buildStatus","exports","default"],"sources":["capsule-list.ts"],"sourcesContent":["import type { Component } from '@teambit/component';\nimport type { Dependency, DependencyResolverMain } from '@teambit/dependency-resolver';\nimport { Edge, Graph, Node } from '@teambit/graph.cleargraph';\nimport type { ComponentID } from '@teambit/component-id';\nimport { normalize } from 'path';\nimport type { Capsule } from './capsule';\n\nexport default class CapsuleList extends Array<Capsule> {\n getCapsule(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id));\n }\n getCapsuleByLegacyId(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id));\n }\n getCapsuleIgnoreVersion(id: ComponentID): Capsule | undefined {\n return this.find((capsule) => capsule.component.id.isEqual(id, { ignoreVersion: true }));\n }\n getAllCapsuleDirs(): string[] {\n return this.map((capsule) => capsule.path);\n }\n getIdByPathInCapsule(pathInCapsule: string): ComponentID | null {\n const normalizedPathInCapsule = normalize(pathInCapsule);\n const found = this.find((capsule) => normalizedPathInCapsule === normalize(capsule.path));\n return found ? found.component.id : null;\n }\n getAllComponents(): Component[] {\n return this.map((c) => c.component);\n }\n getAllComponentIDs(): ComponentID[] {\n return this.map((c) => c.component.id);\n }\n getGraphIds(): Graph<Component, string> {\n const components = this.getAllComponents();\n const graph = new Graph<Component, string>();\n\n components.forEach((comp: Component) => graph.setNode(new Node(comp.id.toString(), comp)));\n const compIdsStr = components.map((c) => c.id.toString());\n\n components.forEach((comp) => {\n const deps = comp.getDependencies();\n deps.forEach((dep) => {\n if (compIdsStr.includes(dep.id)) {\n graph.setEdge(new Edge(comp.id.toString(), dep.id, dep.type));\n }\n });\n });\n\n return graph;\n }\n // Sort the capsules by their dependencies. The capsules with no dependencies will be first. Returns a new array.\n async toposort(depResolver: DependencyResolverMain): Promise<CapsuleList> {\n const components = this.getAllComponents();\n const graph = new Graph<Component, string>();\n\n // Build a graph with all the components from the current capsule list\n components.forEach((comp: Component) => graph.setNode(new Node(depResolver.getPackageName(comp), comp)));\n\n // Add edges between the components according to their interdependencies\n for (const node of graph.nodes) {\n // eslint-disable-next-line no-await-in-loop\n const deps = await depResolver.getDependencies(node.attr);\n deps.forEach((dep: Dependency) => {\n const depPkgName = dep.getPackageName?.();\n if (depPkgName && graph.hasNode(depPkgName)) {\n graph.setEdge(new Edge(node.id, depPkgName, dep.lifecycle));\n }\n });\n }\n\n const sortedSeeders = graph.toposort(true);\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const sortedCapsules: Capsule[] = sortedSeeders.map((node: Node<Component>) => this.getCapsule(node.attr.id)!);\n return CapsuleList.fromArray(sortedCapsules);\n }\n static fromArray(capsules: Capsule[]) {\n return new CapsuleList(...capsules);\n }\n /**\n * determines whether or not a capsule can theoretically use the dists saved in the last snap, rather than re-compile them.\n * practically, this optimization is used for components that have typescript as their compiler.\n */\n static async capsuleUsePreviouslySavedDists(component: Component): Promise<boolean> {\n const isModified = await component.isModified();\n return component.buildStatus === 'succeed' && !isModified;\n }\n}\n"],"mappings":"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","ignoreList":[]}
package/dist/esm.mjs ADDED
@@ -0,0 +1,13 @@
1
+ // eslint-disable-next-line import/no-unresolved
2
+ import cjsModule from './index.js';
3
+
4
+ export const CAPSULE_READY_FILE = cjsModule.CAPSULE_READY_FILE;
5
+ export const Network = cjsModule.Network;
6
+ export const FsContainer = cjsModule.FsContainer;
7
+ export const Capsule = cjsModule.Capsule;
8
+ export const ContainerExec = cjsModule.ContainerExec;
9
+ export const IsolatorAspect = cjsModule.IsolatorAspect;
10
+ export const CapsuleList = cjsModule.CapsuleList;
11
+
12
+ export default cjsModule;
13
+
@@ -0,0 +1,6 @@
1
+ export { CAPSULE_READY_FILE } from './isolator.main.runtime';
2
+ export { Network } from './network';
3
+ export { FsContainer, Capsule, ContainerExec } from './capsule';
4
+ export type { IsolatorMain, IsolateComponentsOptions } from './isolator.main.runtime';
5
+ export { IsolatorAspect } from './isolator.aspect';
6
+ export { default as CapsuleList } from './capsule-list';
package/dist/index.js ADDED
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "CAPSULE_READY_FILE", {
7
+ enumerable: true,
8
+ get: function () {
9
+ return _isolatorMain().CAPSULE_READY_FILE;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Capsule", {
13
+ enumerable: true,
14
+ get: function () {
15
+ return _capsule().Capsule;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "CapsuleList", {
19
+ enumerable: true,
20
+ get: function () {
21
+ return _capsuleList().default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "ContainerExec", {
25
+ enumerable: true,
26
+ get: function () {
27
+ return _capsule().ContainerExec;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "FsContainer", {
31
+ enumerable: true,
32
+ get: function () {
33
+ return _capsule().FsContainer;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "IsolatorAspect", {
37
+ enumerable: true,
38
+ get: function () {
39
+ return _isolator().IsolatorAspect;
40
+ }
41
+ });
42
+ Object.defineProperty(exports, "Network", {
43
+ enumerable: true,
44
+ get: function () {
45
+ return _network().Network;
46
+ }
47
+ });
48
+ function _isolatorMain() {
49
+ const data = require("./isolator.main.runtime");
50
+ _isolatorMain = function () {
51
+ return data;
52
+ };
53
+ return data;
54
+ }
55
+ function _network() {
56
+ const data = require("./network");
57
+ _network = function () {
58
+ return data;
59
+ };
60
+ return data;
61
+ }
62
+ function _capsule() {
63
+ const data = require("./capsule");
64
+ _capsule = function () {
65
+ return data;
66
+ };
67
+ return data;
68
+ }
69
+ function _isolator() {
70
+ const data = require("./isolator.aspect");
71
+ _isolator = function () {
72
+ return data;
73
+ };
74
+ return data;
75
+ }
76
+ function _capsuleList() {
77
+ const data = _interopRequireDefault(require("./capsule-list"));
78
+ _capsuleList = function () {
79
+ return data;
80
+ };
81
+ return data;
82
+ }
83
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
84
+
85
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_isolatorMain","data","require","_network","_capsule","_isolator","_capsuleList","_interopRequireDefault","e","__esModule","default"],"sources":["index.ts"],"sourcesContent":["export { CAPSULE_READY_FILE } from './isolator.main.runtime';\nexport { Network } from './network';\nexport { FsContainer, Capsule, ContainerExec } from './capsule';\nexport type { IsolatorMain, IsolateComponentsOptions } from './isolator.main.runtime';\nexport { IsolatorAspect } from './isolator.aspect';\nexport { default as CapsuleList } from './capsule-list';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAAA,cAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,aAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAE,SAAA;EAAA,MAAAF,IAAA,GAAAC,OAAA;EAAAC,QAAA,YAAAA,CAAA;IAAA,OAAAF,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,SAAA;EAAA,MAAAH,IAAA,GAAAC,OAAA;EAAAE,QAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAI,UAAA;EAAA,MAAAJ,IAAA,GAAAC,OAAA;EAAAG,SAAA,YAAAA,CAAA;IAAA,OAAAJ,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAK,aAAA;EAAA,MAAAL,IAAA,GAAAM,sBAAA,CAAAL,OAAA;EAAAI,YAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAwD,SAAAM,uBAAAC,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import { Aspect } from '@teambit/harmony';
2
+ export declare const IsolatorAspect: Aspect;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.IsolatorAspect = void 0;
7
+ function _harmony() {
8
+ const data = require("@teambit/harmony");
9
+ _harmony = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ const IsolatorAspect = exports.IsolatorAspect = _harmony().Aspect.create({
15
+ id: 'teambit.component/isolator',
16
+ dependencies: [],
17
+ defaultConfig: {}
18
+ });
19
+
20
+ //# sourceMappingURL=isolator.aspect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_harmony","data","require","IsolatorAspect","exports","Aspect","create","id","dependencies","defaultConfig"],"sources":["isolator.aspect.ts"],"sourcesContent":["import { Aspect } from '@teambit/harmony';\n\nexport const IsolatorAspect = Aspect.create({\n id: 'teambit.component/isolator',\n dependencies: [],\n defaultConfig: {},\n});\n"],"mappings":";;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,OAAA;EAAAF,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEO,MAAME,cAAc,GAAAC,OAAA,CAAAD,cAAA,GAAGE,iBAAM,CAACC,MAAM,CAAC;EAC1CC,EAAE,EAAE,4BAA4B;EAChCC,YAAY,EAAE,EAAE;EAChBC,aAAa,EAAE,CAAC;AAClB,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1 @@
1
+ export declare const Logo: () => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Logo = void 0;
7
+ function _react() {
8
+ const data = _interopRequireDefault(require("react"));
9
+ _react = function () {
10
+ return data;
11
+ };
12
+ return data;
13
+ }
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
15
+ const Logo = () => /*#__PURE__*/_react().default.createElement("div", {
16
+ style: {
17
+ height: '100%',
18
+ display: 'flex',
19
+ justifyContent: 'center'
20
+ }
21
+ }, /*#__PURE__*/_react().default.createElement("img", {
22
+ style: {
23
+ width: 70
24
+ },
25
+ src: "https://static.bit.dev/extensions-icons/isolator.svg"
26
+ }));
27
+ exports.Logo = Logo;
28
+
29
+ //# sourceMappingURL=isolator.composition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","data","_interopRequireDefault","require","e","__esModule","default","Logo","createElement","style","height","display","justifyContent","width","src","exports"],"sources":["isolator.composition.tsx"],"sourcesContent":["import React from 'react';\n\nexport const Logo = () => (\n <div style={{ height: '100%', display: 'flex', justifyContent: 'center' }}>\n <img style={{ width: 70 }} src=\"https://static.bit.dev/extensions-icons/isolator.svg\" />\n </div>\n);\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0B,SAAAC,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnB,MAAMG,IAAI,GAAGA,CAAA,kBAClBP,MAAA,GAAAM,OAAA,CAAAE,aAAA;EAAKC,KAAK,EAAE;IAAEC,MAAM,EAAE,MAAM;IAAEC,OAAO,EAAE,MAAM;IAAEC,cAAc,EAAE;EAAS;AAAE,gBACxEZ,MAAA,GAAAM,OAAA,CAAAE,aAAA;EAAKC,KAAK,EAAE;IAAEI,KAAK,EAAE;EAAG,CAAE;EAACC,GAAG,EAAC;AAAsD,CAAE,CACpF,CACN;AAACC,OAAA,CAAAR,IAAA,GAAAA,IAAA","ignoreList":[]}
@@ -0,0 +1,41 @@
1
+ ---
2
+ description: Isolate components for build, debugging, development and testing.
3
+ labels: ['isolation', 'component', 'core aspect']
4
+ ---
5
+
6
+ ## Isolate a component
7
+
8
+ ```bash
9
+ bit create-capsule ui/button
10
+ ```
11
+
12
+ ## Entities
13
+
14
+ ### Capsule
15
+
16
+ Bit implements a filesystem capsule, which is an isolated folder containing the component files.
17
+ Capsules include the component files and links to other capsules that include the component's dependencies.
18
+
19
+ ### Network
20
+
21
+ A network is a group of capsules, related to one another by their dependencies.
22
+ A network includes a graph of all seed components given to it, as well as a list of the capsules.
23
+
24
+ Example:
25
+
26
+ ```javascript
27
+ const Network = {
28
+ graph: Graph,
29
+ capsules: CapsuleList,
30
+ };
31
+ ```
32
+
33
+ ## API
34
+
35
+ The exact particularities of this API are beyond the scope of this readme. Instead, this document opts to
36
+ provide a general description of the methods of this API and their purpose.
37
+
38
+ ### Isolator.isolateComponents
39
+
40
+ This method receives a list of components, create capsule for the components and write the components data into the capsule.
41
+ It returns a list of capsules.