@teambit/isolator 0.0.881 → 0.0.882

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.
@@ -1,112 +1,78 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.array.iterator.js");
6
-
7
5
  require("core-js/modules/es.promise.js");
8
-
9
6
  require("core-js/modules/es.regexp.exec.js");
10
-
11
7
  Object.defineProperty(exports, "__esModule", {
12
8
  value: true
13
9
  });
14
10
  exports.default = void 0;
15
-
16
11
  function _defineProperty2() {
17
12
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
-
19
13
  _defineProperty2 = function () {
20
14
  return data;
21
15
  };
22
-
23
16
  return data;
24
17
  }
25
-
26
18
  function _capsule() {
27
19
  const data = require("@teambit/capsule");
28
-
29
20
  _capsule = function () {
30
21
  return data;
31
22
  };
32
-
33
23
  return data;
34
24
  }
35
-
36
25
  function _filenamify() {
37
26
  const data = _interopRequireDefault(require("filenamify"));
38
-
39
27
  _filenamify = function () {
40
28
  return data;
41
29
  };
42
-
43
30
  return data;
44
31
  }
45
-
46
32
  function _fs() {
47
33
  const data = require("fs");
48
-
49
34
  _fs = function () {
50
35
  return data;
51
36
  };
52
-
53
37
  return data;
54
38
  }
55
-
56
39
  function _glob() {
57
40
  const data = _interopRequireDefault(require("glob"));
58
-
59
41
  _glob = function () {
60
42
  return data;
61
43
  };
62
-
63
44
  return data;
64
45
  }
65
-
66
46
  function _path() {
67
47
  const data = _interopRequireDefault(require("path"));
68
-
69
48
  _path = function () {
70
49
  return data;
71
50
  };
72
-
73
51
  return data;
74
52
  }
75
-
76
53
  function _uuid() {
77
54
  const data = require("uuid");
78
-
79
55
  _uuid = function () {
80
56
  return data;
81
57
  };
82
-
83
58
  return data;
84
59
  }
85
-
86
60
  function _container() {
87
61
  const data = _interopRequireDefault(require("./container"));
88
-
89
62
  _container = function () {
90
63
  return data;
91
64
  };
92
-
93
65
  return data;
94
66
  }
95
-
96
67
  function _containerExec() {
97
68
  const data = _interopRequireDefault(require("./container-exec"));
98
-
99
69
  _containerExec = function () {
100
70
  return data;
101
71
  };
102
-
103
72
  return data;
104
73
  }
105
-
106
74
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
107
-
108
75
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2().default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
109
-
110
76
  class Capsule extends _capsule().Capsule {
111
77
  constructor(
112
78
  /**
@@ -134,47 +100,39 @@ class Capsule extends _capsule().Capsule {
134
100
  (0, _defineProperty2().default)(this, "_wrkDir", void 0);
135
101
  this._wrkDir = container.wrkDir;
136
102
  }
103
+
137
104
  /**
138
105
  * @deprecated please use `this.path`
139
106
  */
140
-
141
-
142
107
  get wrkDir() {
143
108
  return this.path;
144
109
  }
145
-
146
110
  get path() {
147
111
  return (0, _fs().realpathSync)(this._wrkDir);
148
112
  }
149
-
150
113
  start() {
151
114
  return this.container.start();
152
115
  }
153
-
154
116
  async execNode(executable, args, exec) {
155
117
  return this.typedExec({
156
118
  command: ['node', executable, ...(args.args || [])],
157
119
  cwd: ''
158
120
  }, exec);
159
121
  }
160
-
161
122
  async typedExec(opts, exec = new (_containerExec().default)()) {
162
123
  return this.container.exec(opts, exec);
163
124
  }
164
-
165
125
  outputFile(file, data, options) {
166
126
  return this.container.outputFile(file, data, options);
167
127
  }
168
-
169
128
  removePath(dir) {
170
129
  return this.container.removePath(dir);
171
130
  }
172
-
173
131
  symlink(src, dest) {
174
132
  return this.container.symlink(src, dest);
175
- } // TODO: refactor this crap and simplify capsule API
176
-
133
+ }
177
134
 
135
+ // TODO: refactor this crap and simplify capsule API
178
136
  async execute(cmd, options) {
179
137
  // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!
180
138
  const execResults = await this.exec({
@@ -189,8 +147,8 @@ class Capsule extends _capsule().Capsule {
189
147
  });
190
148
  execResults.stdout.on('error', error => {
191
149
  return reject(error);
192
- }); // @ts-ignore
193
-
150
+ });
151
+ // @ts-ignore
194
152
  execResults.on('close', () => {
195
153
  return resolve({
196
154
  stdout,
@@ -205,6 +163,7 @@ class Capsule extends _capsule().Capsule {
205
163
  });
206
164
  });
207
165
  }
166
+
208
167
  /**
209
168
  * @todo: fix.
210
169
  * it skips the capsule fs because for some reason `capsule.fs.promises.readdir` doesn't work
@@ -212,41 +171,31 @@ class Capsule extends _capsule().Capsule {
212
171
  *
213
172
  * returns the paths inside the capsule
214
173
  */
215
-
216
-
217
174
  getAllFilesPaths(dir = '.', options = {}) {
218
175
  const files = _glob().default.sync('**', _objectSpread({
219
176
  cwd: _path().default.join(this.path, dir),
220
177
  nodir: true
221
178
  }, options));
222
-
223
179
  return files.map(file => _path().default.join(dir, file));
224
180
  }
225
-
226
181
  static getCapsuleDirName(component, config = {}) {
227
182
  return config.name || (0, _filenamify().default)(component.id.toString(), {
228
183
  replacement: '_'
229
184
  });
230
185
  }
231
-
232
186
  static getCapsuleRootDir(component, baseDir, config = {}) {
233
187
  return _path().default.join(baseDir, Capsule.getCapsuleDirName(component, config));
234
188
  }
235
-
236
189
  static async createFromComponent(component, baseDir, config = {}) {
237
190
  // TODO: make this a static method and combine with ComponentCapsule
238
191
  const capsuleDirName = Capsule.getCapsuleDirName(component, config);
239
-
240
192
  const wrkDir = _path().default.join(baseDir, config.alwaysNew ? `${capsuleDirName}_${(0, _uuid().v4)()}` : capsuleDirName);
241
-
242
193
  const container = new (_container().default)(wrkDir);
243
194
  const capsule = new Capsule(container, container.fs, new (_capsule().Console)(), new (_capsule().State)(), component);
244
195
  await capsule.start();
245
196
  return capsule;
246
197
  }
247
-
248
198
  }
249
-
250
199
  exports.default = Capsule;
251
200
 
252
201
  //# sourceMappingURL=capsule.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Capsule","CapsuleTemplate","constructor","container","fs","console","Console","state","component","_wrkDir","wrkDir","path","realpathSync","start","execNode","executable","args","exec","typedExec","command","cwd","opts","ContainerExec","outputFile","file","data","options","removePath","dir","symlink","src","dest","execute","cmd","execResults","split","stdout","stderr","Promise","resolve","reject","on","error","getAllFilesPaths","files","glob","sync","join","nodir","map","getCapsuleDirName","config","name","filenamify","id","toString","replacement","getCapsuleRootDir","baseDir","createFromComponent","capsuleDirName","alwaysNew","v4","FsContainer","capsule","State"],"sources":["capsule.ts"],"sourcesContent":["import { NodeFS } from '@teambit/any-fs';\nimport { Capsule as CapsuleTemplate, Console, Exec, State } from '@teambit/capsule';\nimport { Component } from '@teambit/component';\nimport filenamify from 'filenamify';\nimport { realpathSync } from 'fs';\nimport glob from 'glob';\nimport path from 'path';\nimport { v4 } from 'uuid';\n\nimport FsContainer, { BitExecOption } from './container';\nimport ContainerExec from './container-exec';\n\nexport default class Capsule extends CapsuleTemplate<Exec, NodeFS> {\n private _wrkDir: string;\n constructor(\n /**\n * container implementation the capsule is being executed within.\n */\n protected container: FsContainer,\n /**\n * the capsule's file system.\n */\n readonly fs: NodeFS,\n /**\n * console for controlling process streams as stdout, stdin and stderr.\n */\n readonly console: Console = new Console(),\n /**\n * capsule's state.\n */\n readonly state: State,\n readonly component: Component\n ) {\n super(container, fs, console, state);\n this._wrkDir = container.wrkDir;\n }\n\n /**\n * @deprecated please use `this.path`\n */\n get wrkDir(): string {\n return this.path;\n }\n\n get path(): string {\n return realpathSync(this._wrkDir);\n }\n\n start(): Promise<any> {\n return this.container.start();\n }\n\n async execNode(executable: string, args: any, exec: ContainerExec) {\n return this.typedExec(\n {\n command: ['node', executable, ...(args.args || [])],\n cwd: '',\n },\n exec\n );\n }\n\n async typedExec(opts: BitExecOption, exec = new ContainerExec()) {\n return this.container.exec(opts, exec);\n }\n\n outputFile(file: string, data: any, options?: any): Promise<any> {\n return this.container.outputFile(file, data, options);\n }\n\n removePath(dir: string): Promise<any> {\n return this.container.removePath(dir);\n }\n\n symlink(src: string, dest: string): Promise<any> {\n return this.container.symlink(src, dest);\n }\n\n // TODO: refactor this crap and simplify capsule API\n async execute(cmd: string, options?: Record<string, any> | null | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const execResults = await this.exec({ command: cmd.split(' '), options });\n let stdout = '';\n let stderr = '';\n return new Promise((resolve, reject) => {\n execResults.stdout.on('data', (data: string) => {\n stdout += data;\n });\n execResults.stdout.on('error', (error: string) => {\n return reject(error);\n });\n // @ts-ignore\n execResults.on('close', () => {\n return resolve({ stdout, stderr });\n });\n execResults.stderr.on('error', (error: string) => {\n return reject(error);\n });\n execResults.stderr.on('data', (data: string) => {\n stderr += data;\n });\n });\n }\n\n /**\n * @todo: fix.\n * it skips the capsule fs because for some reason `capsule.fs.promises.readdir` doesn't work\n * the same as `capsule.fs.readdir` and it doesn't have the capsule dir as pwd.\n *\n * returns the paths inside the capsule\n */\n getAllFilesPaths(dir = '.', options: { ignore?: string[] } = {}) {\n const files = glob.sync('**', { cwd: path.join(this.path, dir), nodir: true, ...options });\n return files.map((file) => path.join(dir, file));\n }\n\n static getCapsuleDirName(component: Component, config: { alwaysNew?: boolean; name?: string } = {}) {\n return config.name || filenamify(component.id.toString(), { replacement: '_' });\n }\n\n static getCapsuleRootDir(component: Component, baseDir: string, config: { alwaysNew?: boolean; name?: string } = {}) {\n return path.join(baseDir, Capsule.getCapsuleDirName(component, config));\n }\n\n static async createFromComponent(\n component: Component,\n baseDir: string,\n config: { alwaysNew?: boolean } = {}\n ): Promise<Capsule> {\n // TODO: make this a static method and combine with ComponentCapsule\n const capsuleDirName = Capsule.getCapsuleDirName(component, config);\n const wrkDir = path.join(baseDir, config.alwaysNew ? `${capsuleDirName}_${v4()}` : capsuleDirName);\n const container = new FsContainer(wrkDir);\n const capsule = new Capsule(container, container.fs, new Console(), new State(), component);\n await capsule.start();\n return capsule;\n }\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["Capsule","CapsuleTemplate","constructor","container","fs","console","Console","state","component","_wrkDir","wrkDir","path","realpathSync","start","execNode","executable","args","exec","typedExec","command","cwd","opts","ContainerExec","outputFile","file","data","options","removePath","dir","symlink","src","dest","execute","cmd","execResults","split","stdout","stderr","Promise","resolve","reject","on","error","getAllFilesPaths","files","glob","sync","join","nodir","map","getCapsuleDirName","config","name","filenamify","id","toString","replacement","getCapsuleRootDir","baseDir","createFromComponent","capsuleDirName","alwaysNew","v4","FsContainer","capsule","State"],"sources":["capsule.ts"],"sourcesContent":["import { NodeFS } from '@teambit/any-fs';\nimport { Capsule as CapsuleTemplate, Console, Exec, State } from '@teambit/capsule';\nimport { Component } from '@teambit/component';\nimport filenamify from 'filenamify';\nimport { realpathSync } from 'fs';\nimport glob from 'glob';\nimport path from 'path';\nimport { v4 } from 'uuid';\n\nimport FsContainer, { BitExecOption } from './container';\nimport ContainerExec from './container-exec';\n\nexport default class Capsule extends CapsuleTemplate<Exec, NodeFS> {\n private _wrkDir: string;\n constructor(\n /**\n * container implementation the capsule is being executed within.\n */\n protected container: FsContainer,\n /**\n * the capsule's file system.\n */\n readonly fs: NodeFS,\n /**\n * console for controlling process streams as stdout, stdin and stderr.\n */\n readonly console: Console = new Console(),\n /**\n * capsule's state.\n */\n readonly state: State,\n readonly component: Component\n ) {\n super(container, fs, console, state);\n this._wrkDir = container.wrkDir;\n }\n\n /**\n * @deprecated please use `this.path`\n */\n get wrkDir(): string {\n return this.path;\n }\n\n get path(): string {\n return realpathSync(this._wrkDir);\n }\n\n start(): Promise<any> {\n return this.container.start();\n }\n\n async execNode(executable: string, args: any, exec: ContainerExec) {\n return this.typedExec(\n {\n command: ['node', executable, ...(args.args || [])],\n cwd: '',\n },\n exec\n );\n }\n\n async typedExec(opts: BitExecOption, exec = new ContainerExec()) {\n return this.container.exec(opts, exec);\n }\n\n outputFile(file: string, data: any, options?: any): Promise<any> {\n return this.container.outputFile(file, data, options);\n }\n\n removePath(dir: string): Promise<any> {\n return this.container.removePath(dir);\n }\n\n symlink(src: string, dest: string): Promise<any> {\n return this.container.symlink(src, dest);\n }\n\n // TODO: refactor this crap and simplify capsule API\n async execute(cmd: string, options?: Record<string, any> | null | undefined) {\n // @ts-ignore AUTO-ADDED-AFTER-MIGRATION-PLEASE-FIX!\n const execResults = await this.exec({ command: cmd.split(' '), options });\n let stdout = '';\n let stderr = '';\n return new Promise((resolve, reject) => {\n execResults.stdout.on('data', (data: string) => {\n stdout += data;\n });\n execResults.stdout.on('error', (error: string) => {\n return reject(error);\n });\n // @ts-ignore\n execResults.on('close', () => {\n return resolve({ stdout, stderr });\n });\n execResults.stderr.on('error', (error: string) => {\n return reject(error);\n });\n execResults.stderr.on('data', (data: string) => {\n stderr += data;\n });\n });\n }\n\n /**\n * @todo: fix.\n * it skips the capsule fs because for some reason `capsule.fs.promises.readdir` doesn't work\n * the same as `capsule.fs.readdir` and it doesn't have the capsule dir as pwd.\n *\n * returns the paths inside the capsule\n */\n getAllFilesPaths(dir = '.', options: { ignore?: string[] } = {}) {\n const files = glob.sync('**', { cwd: path.join(this.path, dir), nodir: true, ...options });\n return files.map((file) => path.join(dir, file));\n }\n\n static getCapsuleDirName(component: Component, config: { alwaysNew?: boolean; name?: string } = {}) {\n return config.name || filenamify(component.id.toString(), { replacement: '_' });\n }\n\n static getCapsuleRootDir(component: Component, baseDir: string, config: { alwaysNew?: boolean; name?: string } = {}) {\n return path.join(baseDir, Capsule.getCapsuleDirName(component, config));\n }\n\n static async createFromComponent(\n component: Component,\n baseDir: string,\n config: { alwaysNew?: boolean } = {}\n ): Promise<Capsule> {\n // TODO: make this a static method and combine with ComponentCapsule\n const capsuleDirName = Capsule.getCapsuleDirName(component, config);\n const wrkDir = path.join(baseDir, config.alwaysNew ? `${capsuleDirName}_${v4()}` : capsuleDirName);\n const container = new FsContainer(wrkDir);\n const capsule = new Capsule(container, container.fs, new Console(), new State(), component);\n await capsule.start();\n return capsule;\n }\n}\n"],"mappings":"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"}
@@ -1,44 +1,32 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.promise.js");
6
-
7
5
  Object.defineProperty(exports, "__esModule", {
8
6
  value: true
9
7
  });
10
8
  exports.default = void 0;
11
-
12
9
  function _defineProperty2() {
13
10
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
14
-
15
11
  _defineProperty2 = function () {
16
12
  return data;
17
13
  };
18
-
19
14
  return data;
20
15
  }
21
-
22
16
  function _capsule() {
23
17
  const data = require("@teambit/capsule");
24
-
25
18
  _capsule = function () {
26
19
  return data;
27
20
  };
28
-
29
21
  return data;
30
22
  }
31
-
32
23
  function _events() {
33
24
  const data = require("events");
34
-
35
25
  _events = function () {
36
26
  return data;
37
27
  };
38
-
39
28
  return data;
40
29
  }
41
-
42
30
  class ContainerExec extends _events().EventEmitter {
43
31
  constructor(_code = 0) {
44
32
  super();
@@ -47,29 +35,23 @@ class ContainerExec extends _events().EventEmitter {
47
35
  (0, _defineProperty2().default)(this, "stderr", new (_capsule().DuplexBufferStream)());
48
36
  (0, _defineProperty2().default)(this, "stdin", new (_capsule().DuplexBufferStream)());
49
37
  }
50
-
51
38
  setStatus(status) {
52
39
  this._code = status;
53
40
  this.emit('close');
54
41
  }
55
-
56
42
  get code() {
57
43
  return this._code;
58
44
  }
59
-
60
45
  inspect() {
61
46
  return Promise.resolve({
62
47
  running: true,
63
48
  pid: 1
64
49
  });
65
50
  }
66
-
67
51
  abort() {
68
52
  throw new Error('Method not implemented.');
69
53
  }
70
-
71
54
  }
72
-
73
55
  exports.default = ContainerExec;
74
56
 
75
57
  //# sourceMappingURL=container-exec.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["ContainerExec","EventEmitter","constructor","_code","DuplexBufferStream","setStatus","status","emit","code","inspect","Promise","resolve","running","pid","abort","Error"],"sources":["container-exec.ts"],"sourcesContent":["import { DuplexBufferStream, Exec, ExecStatus } from '@teambit/capsule';\nimport { EventEmitter } from 'events';\n\nexport default class ContainerExec extends EventEmitter implements Exec {\n constructor(private _code: number = 0) {\n super();\n }\n\n stdout: DuplexBufferStream = new DuplexBufferStream();\n stderr: DuplexBufferStream = new DuplexBufferStream();\n stdin: DuplexBufferStream = new DuplexBufferStream();\n\n setStatus(status: number): void {\n this._code = status;\n this.emit('close');\n }\n\n get code(): number {\n return this._code;\n }\n\n inspect(): Promise<ExecStatus> {\n return Promise.resolve({\n running: true,\n pid: 1,\n });\n }\n abort(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AACA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;AAEe,MAAMA,aAAN,SAA4BC,sBAA5B,CAAyD;EACtEC,WAAW,CAASC,KAAa,GAAG,CAAzB,EAA4B;IACrC;IADqC,KAAnBA,KAAmB,GAAnBA,KAAmB;IAAA,gDAIV,KAAIC,6BAAJ,GAJU;IAAA,gDAKV,KAAIA,6BAAJ,GALU;IAAA,+CAMX,KAAIA,6BAAJ,GANW;EAEtC;;EAMDC,SAAS,CAACC,MAAD,EAAuB;IAC9B,KAAKH,KAAL,GAAaG,MAAb;IACA,KAAKC,IAAL,CAAU,OAAV;EACD;;EAEO,IAAJC,IAAI,GAAW;IACjB,OAAO,KAAKL,KAAZ;EACD;;EAEDM,OAAO,GAAwB;IAC7B,OAAOC,OAAO,CAACC,OAAR,CAAgB;MACrBC,OAAO,EAAE,IADY;MAErBC,GAAG,EAAE;IAFgB,CAAhB,CAAP;EAID;;EACDC,KAAK,GAAkB;IACrB,MAAM,IAAIC,KAAJ,CAAU,yBAAV,CAAN;EACD;;AA1BqE"}
1
+ {"version":3,"names":["ContainerExec","EventEmitter","constructor","_code","DuplexBufferStream","setStatus","status","emit","code","inspect","Promise","resolve","running","pid","abort","Error"],"sources":["container-exec.ts"],"sourcesContent":["import { DuplexBufferStream, Exec, ExecStatus } from '@teambit/capsule';\nimport { EventEmitter } from 'events';\n\nexport default class ContainerExec extends EventEmitter implements Exec {\n constructor(private _code: number = 0) {\n super();\n }\n\n stdout: DuplexBufferStream = new DuplexBufferStream();\n stderr: DuplexBufferStream = new DuplexBufferStream();\n stdin: DuplexBufferStream = new DuplexBufferStream();\n\n setStatus(status: number): void {\n this._code = status;\n this.emit('close');\n }\n\n get code(): number {\n return this._code;\n }\n\n inspect(): Promise<ExecStatus> {\n return Promise.resolve({\n running: true,\n pid: 1,\n });\n }\n abort(): Promise<void> {\n throw new Error('Method not implemented.');\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;AAAA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AACA;EAAA;EAAA;IAAA;EAAA;EAAA;AAAA;AAEe,MAAMA,aAAa,SAASC,sBAAY,CAAiB;EACtEC,WAAW,CAASC,KAAa,GAAG,CAAC,EAAE;IACrC,KAAK,EAAE;IAAC,KADUA,KAAa,GAAbA,KAAa;IAAA,gDAIJ,KAAIC,6BAAkB,GAAE;IAAA,gDACxB,KAAIA,6BAAkB,GAAE;IAAA,+CACzB,KAAIA,6BAAkB,GAAE;EAJpD;EAMAC,SAAS,CAACC,MAAc,EAAQ;IAC9B,IAAI,CAACH,KAAK,GAAGG,MAAM;IACnB,IAAI,CAACC,IAAI,CAAC,OAAO,CAAC;EACpB;EAEA,IAAIC,IAAI,GAAW;IACjB,OAAO,IAAI,CAACL,KAAK;EACnB;EAEAM,OAAO,GAAwB;IAC7B,OAAOC,OAAO,CAACC,OAAO,CAAC;MACrBC,OAAO,EAAE,IAAI;MACbC,GAAG,EAAE;IACP,CAAC,CAAC;EACJ;EACAC,KAAK,GAAkB;IACrB,MAAM,IAAIC,KAAK,CAAC,yBAAyB,CAAC;EAC5C;AACF;AAAC"}
@@ -1,135 +1,102 @@
1
1
  "use strict";
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
-
5
4
  require("core-js/modules/es.promise.js");
6
-
7
5
  require("core-js/modules/es.regexp.exec.js");
8
-
9
6
  Object.defineProperty(exports, "__esModule", {
10
7
  value: true
11
8
  });
12
9
  exports.default = void 0;
13
-
14
10
  function _defineProperty2() {
15
11
  const data = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
16
-
17
12
  _defineProperty2 = function () {
18
13
  return data;
19
14
  };
20
-
21
15
  return data;
22
16
  }
23
-
24
17
  function _anyFs() {
25
18
  const data = require("@teambit/any-fs");
26
-
27
19
  _anyFs = function () {
28
20
  return data;
29
21
  };
30
-
31
22
  return data;
32
23
  }
33
-
34
24
  function _execa() {
35
25
  const data = _interopRequireDefault(require("execa"));
36
-
37
26
  _execa = function () {
38
27
  return data;
39
28
  };
40
-
41
29
  return data;
42
30
  }
43
-
44
31
  function _fsExtra() {
45
32
  const data = _interopRequireDefault(require("fs-extra"));
46
-
47
33
  _fsExtra = function () {
48
34
  return data;
49
35
  };
50
-
51
36
  return data;
52
37
  }
53
-
54
38
  function path() {
55
39
  const data = _interopRequireWildcard(require("path"));
56
-
57
40
  path = function () {
58
41
  return data;
59
42
  };
60
-
61
43
  return data;
62
44
  }
63
-
64
45
  function _containerExec() {
65
46
  const data = _interopRequireDefault(require("./container-exec"));
66
-
67
47
  _containerExec = function () {
68
48
  return data;
69
49
  };
70
-
71
50
  return data;
72
51
  }
73
-
74
52
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
75
-
76
53
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
77
-
78
54
  const debug = require('debug')('fs-container');
79
-
80
55
  class FsContainer {
81
56
  constructor(wrkDir) {
82
57
  this.wrkDir = wrkDir;
83
58
  (0, _defineProperty2().default)(this, "id", 'FS Container');
84
59
  (0, _defineProperty2().default)(this, "fs", new (_anyFs().NodeFS)(this.wrkDir));
85
- } // TODO: do we need this?
86
-
60
+ }
87
61
 
62
+ // TODO: do we need this?
88
63
  getPath() {
89
64
  return this.wrkDir;
90
65
  }
91
-
92
66
  composePath(pathToCompose) {
93
67
  return path().join(this.getPath(), pathToCompose);
94
68
  }
95
-
96
69
  outputFile(file, data, options) {
97
70
  const filePath = this.composePath(file);
98
71
  debug(`writing file on ${filePath}`);
99
72
  return _fsExtra().default.outputFile(filePath, data, options);
100
73
  }
101
-
102
74
  removePath(dir) {
103
75
  const pathToRemove = this.composePath(dir);
104
76
  return _fsExtra().default.remove(pathToRemove);
105
77
  }
106
-
107
78
  async symlink(src, dest) {
108
79
  const srcPath = this.composePath(src);
109
80
  const destPath = this.composePath(dest);
110
81
  await _fsExtra().default.ensureDir(path().dirname(destPath));
111
82
  return _fsExtra().default.ensureSymlink(srcPath, destPath);
112
83
  }
113
-
114
84
  async exec(execOptions, exec = new (_containerExec().default)()) {
115
85
  var _subprocessP$stderr, _subprocessP$stdout;
116
-
117
86
  const cwd = execOptions.cwd ? this.composePath(execOptions.cwd) : this.getPath();
118
87
  debug(`executing the following command: ${execOptions.command.join(' ')}, on cwd: ${cwd}`);
119
-
120
88
  const subprocessP = _execa().default.command(execOptions.command.join(' '), {
121
89
  shell: true,
122
90
  cwd,
123
91
  stdio: ['ipc']
124
- }); // @TODO: FIX! This probably causes errors ad the promise is not handled properly!
125
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
126
-
92
+ });
127
93
 
94
+ // @TODO: FIX! This probably causes errors ad the promise is not handled properly!
95
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
128
96
  subprocessP.on('message', function (msg) {
129
97
  exec.emit('message', msg);
130
98
  });
131
99
  /* eslint-disable @typescript-eslint/no-non-null-assertion */
132
-
133
100
  (_subprocessP$stderr = subprocessP.stderr) === null || _subprocessP$stderr === void 0 ? void 0 : _subprocessP$stderr.pipe(exec.stderr);
134
101
  (_subprocessP$stdout = subprocessP.stdout) === null || _subprocessP$stdout === void 0 ? void 0 : _subprocessP$stdout.pipe(exec.stdout);
135
102
  ['close', 'exit'].forEach(function (eventName) {
@@ -141,7 +108,6 @@ class FsContainer {
141
108
  });
142
109
  return exec;
143
110
  }
144
-
145
111
  async execP(execOptions) {
146
112
  let hasError = false;
147
113
  const exec = await this.exec(execOptions);
@@ -155,7 +121,6 @@ class FsContainer {
155
121
  });
156
122
  });
157
123
  }
158
-
159
124
  async terminal() {
160
125
  const cwd = this.getPath();
161
126
  return _execa().default.command(process.env.SHELL || '/bin/zsh', {
@@ -163,40 +128,34 @@ class FsContainer {
163
128
  stdio: 'inherit'
164
129
  });
165
130
  }
166
-
167
131
  start() {
168
132
  return _fsExtra().default.ensureDir(this.wrkDir);
169
- } // @ts-ignore
170
-
171
-
172
- async inspect() {// todo: probably not needed for this container
173
133
  }
174
-
175
- async pause() {// do nothing
134
+ // @ts-ignore
135
+ async inspect() {
136
+ // todo: probably not needed for this container
176
137
  }
177
-
178
- async resume() {// do nothing
179
- } // eslint-disable-next-line
180
-
181
-
138
+ async pause() {
139
+ // do nothing
140
+ }
141
+ async resume() {
142
+ // do nothing
143
+ }
144
+ // eslint-disable-next-line
182
145
  stop(ttl) {
183
146
  return _fsExtra().default.remove(this.wrkDir);
184
147
  }
185
-
186
148
  async destroy() {
187
149
  await this.stop();
188
150
  }
189
-
190
151
  log() {
191
152
  throw new Error('Method not implemented.');
192
153
  }
193
-
194
154
  on(event, fn) {
195
- return fn(event); // throw new Error('Method not implemented.');
155
+ return fn(event);
156
+ // throw new Error('Method not implemented.');
196
157
  }
197
-
198
158
  }
199
-
200
159
  exports.default = FsContainer;
201
160
 
202
161
  //# sourceMappingURL=container.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["debug","require","FsContainer","constructor","wrkDir","NodeFS","getPath","composePath","pathToCompose","path","join","outputFile","file","data","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"],"sources":["container.ts"],"sourcesContent":["import { AnyFS, NodeFS } from '@teambit/any-fs';\nimport { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';\nimport execa from 'execa';\nimport fs from 'fs-extra';\nimport * as path from 'path';\nimport { 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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"}
1
+ {"version":3,"names":["debug","require","FsContainer","constructor","wrkDir","NodeFS","getPath","composePath","pathToCompose","path","join","outputFile","file","data","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"],"sources":["container.ts"],"sourcesContent":["import { AnyFS, NodeFS } from '@teambit/any-fs';\nimport { Container, ContainerFactoryOptions, ContainerStatus, Exec, ExecOptions } from '@teambit/capsule';\nimport execa from 'execa';\nimport fs from 'fs-extra';\nimport * as path from 'path';\nimport { 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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"}