@teambit/api-server 1.0.370 → 1.0.371
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/artifacts/__bit_junit.xml +1 -1
- package/artifacts/schema.json +1 -1
- package/dist/cli-raw.route.js +4 -3
- package/dist/cli-raw.route.js.map +1 -1
- package/dist/cli.route.js +10 -4
- package/dist/cli.route.js.map +1 -1
- package/dist/ide.route.js +10 -4
- package/dist/ide.route.js.map +1 -1
- package/package.json +20 -20
- /package/dist/{preview-1722827936283.js → preview-1722880610382.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<testsuites tests="0" failures="0" errors="0" skipped="0">
|
|
3
|
-
<testsuite name="teambit.harmony/api-server@1.0.
|
|
3
|
+
<testsuite name="teambit.harmony/api-server@1.0.371" tests="0" failures="0" errors="0" skipped="0"/>
|
|
4
4
|
</testsuites>
|
package/artifacts/schema.json
CHANGED
package/dist/cli-raw.route.js
CHANGED
|
@@ -55,13 +55,14 @@ class CLIRawRoute {
|
|
|
55
55
|
throw new Error(`bit-server is running on a different directory. bit-server: ${process.cwd()}, pwd: ${pwd}`);
|
|
56
56
|
}
|
|
57
57
|
const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log
|
|
58
|
-
const
|
|
58
|
+
const commandStr = command.join(' ');
|
|
59
|
+
const cmdStrLog = `${randomNumber} ${commandStr}`;
|
|
59
60
|
await this.apiForIDE.logStartCmdHistory(cmdStrLog);
|
|
60
61
|
_logger().default.isDaemon = true;
|
|
61
62
|
enableChalk();
|
|
62
63
|
const cliParser = new (_cli().CLIParser)(this.cli.commands, this.cli.groups, this.cli.onCommandStartSlot);
|
|
63
64
|
try {
|
|
64
|
-
const commandRunner = await cliParser.parse(command
|
|
65
|
+
const commandRunner = await cliParser.parse(command);
|
|
65
66
|
const result = await commandRunner.runCommand(true);
|
|
66
67
|
await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 0);
|
|
67
68
|
res.json(result);
|
|
@@ -72,7 +73,7 @@ class CLIRawRoute {
|
|
|
72
73
|
exitCode: err.exitCode
|
|
73
74
|
});
|
|
74
75
|
} else {
|
|
75
|
-
this.logger.error(`cli-raw server: got an error for ${
|
|
76
|
+
this.logger.error(`cli-raw server: got an error for ${commandStr}`, err);
|
|
76
77
|
await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 1);
|
|
77
78
|
res.status(500);
|
|
78
79
|
res.jsonp({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_chalk","_interopRequireDefault","_logger","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIRawRoute","constructor","logger","cli","apiForIDE","req","res","command","pwd","body","debug","process","cwd","startsWith","Error","randomNumber","Math","floor","random","cmdStrLog","logStartCmdHistory","legacyLogger","isDaemon","enableChalk","cliParser","CLIParser","commands","groups","onCommandStartSlot","commandRunner","parse","
|
|
1
|
+
{"version":3,"names":["_cli","data","require","_chalk","_interopRequireDefault","_logger","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIRawRoute","constructor","logger","cli","apiForIDE","req","res","command","pwd","body","debug","process","cwd","startsWith","Error","randomNumber","Math","floor","random","commandStr","join","cmdStrLog","logStartCmdHistory","legacyLogger","isDaemon","enableChalk","cliParser","CLIParser","commands","groups","onCommandStartSlot","commandRunner","parse","result","runCommand","logFinishCmdHistory","json","err","YargsExitWorkaround","helpMsg","exitCode","error","status","jsonp","message","clearStatusLine","chalk","enabled","exports","level"],"sources":["cli-raw.route.ts"],"sourcesContent":["import { CLIMain, CLIParser, YargsExitWorkaround } from '@teambit/cli';\nimport chalk from 'chalk';\nimport { Route, Request, Response } from '@teambit/express';\nimport { Logger } from '@teambit/logger';\nimport legacyLogger from '@teambit/legacy/dist/logger/logger';\nimport { APIForIDE } from './api-for-ide';\n\n/**\n * example usage:\n * post to http://localhost:3000/api/cli\n * with the following json as the body\n *\n{\n \"command\": [\"tag comp1 --build\"]\n}\n */\nexport class CLIRawRoute implements Route {\n constructor(private logger: Logger, private cli: CLIMain, private apiForIDE: APIForIDE) {}\n\n method = 'post';\n route = '/cli-raw';\n\n middlewares = [\n async (req: Request, res: Response) => {\n const { command, pwd } = req.body;\n this.logger.debug(`cli-raw server: got request for ${command}`);\n if (pwd && !process.cwd().startsWith(pwd)) {\n throw new Error(`bit-server is running on a different directory. bit-server: ${process.cwd()}, pwd: ${pwd}`);\n }\n\n const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log\n const commandStr = command.join(' ');\n const cmdStrLog = `${randomNumber} ${commandStr}`;\n await this.apiForIDE.logStartCmdHistory(cmdStrLog);\n legacyLogger.isDaemon = true;\n enableChalk();\n const cliParser = new CLIParser(this.cli.commands, this.cli.groups, this.cli.onCommandStartSlot);\n try {\n const commandRunner = await cliParser.parse(command);\n const result = await commandRunner.runCommand(true);\n await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 0);\n res.json(result);\n } catch (err: any) {\n if (err instanceof YargsExitWorkaround) {\n res.json({ data: err.helpMsg, exitCode: err.exitCode });\n } else {\n this.logger.error(`cli-raw server: got an error for ${commandStr}`, err);\n await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 1);\n res.status(500);\n res.jsonp({\n message: err.message,\n error: err,\n });\n }\n } finally {\n this.logger.clearStatusLine();\n // change chalk back to false, otherwise, the IDE will have colors. (this is a global setting)\n chalk.enabled = false;\n }\n },\n ];\n}\n\n/**\n * because this gets called from the express server, which gets spawn from a script, chalk defaults to false.\n * changing only the \"level\" is not enough, it must be enabled as well.\n * only when calling this route from the terminal, we want colors. on the IDE, we don't want colors.\n */\nfunction enableChalk() {\n chalk.enabled = true;\n chalk.level = 3;\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/cli.route.js
CHANGED
|
@@ -60,7 +60,10 @@ class CLIRoute {
|
|
|
60
60
|
const argsStr = args ? ` ${args.join(' ')}` : '';
|
|
61
61
|
const optsStr = optsToString ? ` ${optsToString}` : '';
|
|
62
62
|
const cmdStr = req.params.cmd + argsStr + optsStr;
|
|
63
|
-
|
|
63
|
+
// don't use "logger.console" here, we don't want these message to pollute cli-raw output
|
|
64
|
+
const msgStart = `[*] started a new ${outputMethod} command: ${cmdStr}`;
|
|
65
|
+
this.logger.info(msgStart);
|
|
66
|
+
console.log(msgStart); // eslint-disable-line no-console
|
|
64
67
|
const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log
|
|
65
68
|
cmdStrLog = `${randomNumber} ${cmdStr}`;
|
|
66
69
|
await this.apiForIDE.logStartCmdHistory(cmdStrLog);
|
|
@@ -74,7 +77,9 @@ class CLIRoute {
|
|
|
74
77
|
const result = await command[outputMethod](args || [], optionsAsCamelCase);
|
|
75
78
|
this.logger.clearStatusLine();
|
|
76
79
|
const duration = (0, _prettyTime().default)(process.hrtime(startTask));
|
|
77
|
-
|
|
80
|
+
const msgEnd = `✔ command "${req.params.cmd}" had been completed in ${duration}`;
|
|
81
|
+
this.logger.info(msgEnd);
|
|
82
|
+
console.log(msgEnd); // eslint-disable-line no-console
|
|
78
83
|
await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 0);
|
|
79
84
|
if (outputMethod === 'json') {
|
|
80
85
|
res.json(result);
|
|
@@ -87,8 +92,9 @@ class CLIRoute {
|
|
|
87
92
|
});
|
|
88
93
|
}
|
|
89
94
|
} catch (err) {
|
|
90
|
-
|
|
91
|
-
this.logger.
|
|
95
|
+
const msgErr = `command "${req.params.cmd}" had failed. ${err.message}`;
|
|
96
|
+
this.logger.error(msgErr, err);
|
|
97
|
+
console.error(msgErr); // eslint-disable-line no-console
|
|
92
98
|
if (cmdStrLog) await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 1);
|
|
93
99
|
res.status(500);
|
|
94
100
|
res.jsonp({
|
package/dist/cli.route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_prettyTime","data","_interopRequireDefault","require","_lodash","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIRoute","constructor","logger","cli","apiForIDE","req","res","debug","params","cmd","cmdStrLog","command","getCommandByNameOrAlias","Error","body","args","options","format","outputMethod","optsToString","keys","map","key","join","argsStr","optsStr","cmdStr","console","randomNumber","Math","floor","random","logStartCmdHistory","optionsAsCamelCase","reduce","acc","camelCaseKey","camelCase","startTask","process","hrtime","result","clearStatusLine","duration","prettyTime","
|
|
1
|
+
{"version":3,"names":["_prettyTime","data","_interopRequireDefault","require","_lodash","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","CLIRoute","constructor","logger","cli","apiForIDE","req","res","debug","params","cmd","cmdStrLog","command","getCommandByNameOrAlias","Error","body","args","options","format","outputMethod","optsToString","keys","map","key","join","argsStr","optsStr","cmdStr","msgStart","info","console","log","randomNumber","Math","floor","random","logStartCmdHistory","optionsAsCamelCase","reduce","acc","camelCaseKey","camelCase","startTask","process","hrtime","result","clearStatusLine","duration","prettyTime","msgEnd","logFinishCmdHistory","json","exitCode","code","err","msgErr","message","error","status","jsonp","exports"],"sources":["cli.route.ts"],"sourcesContent":["import { CLIMain } from '@teambit/cli';\nimport prettyTime from 'pretty-time';\nimport { Route, Request, Response } from '@teambit/express';\nimport { Logger } from '@teambit/logger';\nimport { camelCase } from 'lodash';\nimport { APIForIDE } from './api-for-ide';\n\n/**\n * example usage:\n * post to http://localhost:3000/api/cli/list\n * with the following json as the body\n *\n{\n \"args\": [\"teambit.workspace\"],\n \"options\": {\n \"ids\": true\n }\n}\n */\nexport class CLIRoute implements Route {\n constructor(private logger: Logger, private cli: CLIMain, private apiForIDE: APIForIDE) {}\n\n method = 'post';\n route = '/cli/:cmd';\n\n middlewares = [\n async (req: Request, res: Response) => {\n this.logger.debug(`cli server: got request for ${req.params.cmd}`);\n let cmdStrLog: string | undefined;\n try {\n const command = this.cli.getCommandByNameOrAlias(req.params.cmd);\n if (!command) throw new Error(`command \"${req.params.cmd}\" was not found`);\n const body = req.body;\n const { args, options, format } = body;\n if (format && format !== 'json' && format !== 'report') throw new Error(`format \"${format}\" is not supported`);\n const outputMethod: 'json' | 'report' = format || 'json';\n if (!command[outputMethod])\n throw new Error(`command \"${req.params.cmd}\" does not have a ${outputMethod} method`);\n const optsToString = Object.keys(options || {})\n .map((key) => `--${key}`)\n .join(' ');\n const argsStr = args ? ` ${args.join(' ')}` : '';\n const optsStr = optsToString ? ` ${optsToString}` : '';\n const cmdStr = req.params.cmd + argsStr + optsStr;\n // don't use \"logger.console\" here, we don't want these message to pollute cli-raw output\n const msgStart = `[*] started a new ${outputMethod} command: ${cmdStr}`;\n this.logger.info(msgStart);\n console.log(msgStart); // eslint-disable-line no-console\n const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log\n cmdStrLog = `${randomNumber} ${cmdStr}`;\n await this.apiForIDE.logStartCmdHistory(cmdStrLog);\n const optionsAsCamelCase = Object.keys(options || {}).reduce((acc, key) => {\n const camelCaseKey = camelCase(key);\n acc[camelCaseKey] = options[key];\n return acc;\n }, {});\n const startTask = process.hrtime();\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const result = await command[outputMethod]!(args || [], optionsAsCamelCase);\n this.logger.clearStatusLine();\n const duration = prettyTime(process.hrtime(startTask));\n const msgEnd = `✔ command \"${req.params.cmd}\" had been completed in ${duration}`;\n this.logger.info(msgEnd);\n console.log(msgEnd); // eslint-disable-line no-console\n await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 0);\n if (outputMethod === 'json') {\n res.json(result);\n } else {\n const data = typeof result === 'string' ? result : result.data;\n const exitCode = typeof result === 'string' ? 0 : result.code;\n res.json({ data, exitCode });\n }\n } catch (err: any) {\n const msgErr = `command \"${req.params.cmd}\" had failed. ${err.message}`;\n this.logger.error(msgErr, err);\n console.error(msgErr); // eslint-disable-line no-console\n if (cmdStrLog) await this.apiForIDE.logFinishCmdHistory(cmdStrLog, 1);\n res.status(500);\n res.jsonp({\n message: err.message,\n error: err,\n });\n }\n },\n ];\n}\n"],"mappings":"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","ignoreList":[]}
|
package/dist/ide.route.js
CHANGED
|
@@ -41,19 +41,25 @@ class IDERoute {
|
|
|
41
41
|
const {
|
|
42
42
|
args
|
|
43
43
|
} = body;
|
|
44
|
-
|
|
44
|
+
// don't use "logger.console" here, we don't want these message to pollute cli-raw output
|
|
45
|
+
const msgStart = `[*] started a new api-IDE call: ${req.params.method}, total: ${args?.length || 0} args`;
|
|
46
|
+
this.logger.info(msgStart);
|
|
47
|
+
console.log(); // eslint-disable-line no-console
|
|
45
48
|
const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log
|
|
46
49
|
ideCallLog = `${randomNumber} ${req.params.method}(${getArgsAsString(args)})`;
|
|
47
50
|
await this.apiForIDE.logStartCmdHistory(ideCallLog);
|
|
48
51
|
const startTask = process.hrtime();
|
|
49
52
|
const result = await this.apiForIDE[req.params.method](...args);
|
|
50
53
|
const duration = (0, _prettyTime().default)(process.hrtime(startTask));
|
|
51
|
-
|
|
54
|
+
const msgEnd = `✔ api-IDE call: ${req.params.method} had been completed in ${duration}`;
|
|
55
|
+
this.logger.info(msgEnd);
|
|
56
|
+
console.log(msgEnd); // eslint-disable-line no-console
|
|
52
57
|
await this.apiForIDE.logFinishCmdHistory(ideCallLog, 0);
|
|
53
58
|
res.json(result);
|
|
54
59
|
} catch (err) {
|
|
55
|
-
|
|
56
|
-
this.logger.
|
|
60
|
+
const msgErr = `api-IDE call: ${req.params.method} had failed`;
|
|
61
|
+
this.logger.error(msgErr, err);
|
|
62
|
+
console.error(`api-IDE call: ${req.params.method} had failed. ${err.message}`); // eslint-disable-line no-console
|
|
57
63
|
if (ideCallLog) await this.apiForIDE.logFinishCmdHistory(ideCallLog, 1);
|
|
58
64
|
res.status(500).jsonp(err.message);
|
|
59
65
|
}
|
package/dist/ide.route.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_prettyTime","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","IDERoute","constructor","logger","apiForIDE","req","res","debug","params","method","ideCallLog","Error","body","args","
|
|
1
|
+
{"version":3,"names":["_prettyTime","data","_interopRequireDefault","require","e","__esModule","default","_defineProperty","r","t","_toPropertyKey","Object","defineProperty","value","enumerable","configurable","writable","i","_toPrimitive","Symbol","toPrimitive","call","TypeError","String","Number","IDERoute","constructor","logger","apiForIDE","req","res","debug","params","method","ideCallLog","Error","body","args","msgStart","length","info","console","log","randomNumber","Math","floor","random","getArgsAsString","logStartCmdHistory","startTask","process","hrtime","result","duration","prettyTime","msgEnd","logFinishCmdHistory","json","err","msgErr","error","message","status","jsonp","exports","map","arg","toString","JSON","stringify","join"],"sources":["ide.route.ts"],"sourcesContent":["import prettyTime from 'pretty-time';\nimport { Route, Request, Response } from '@teambit/express';\nimport { Logger } from '@teambit/logger';\nimport { APIForIDE } from './api-for-ide';\n\n/**\n * example usage:\n * post to http://localhost:3000/api/ide/list-dirs\n * with the following json as the body\n *\n{\n \"args\": [\"some-args\"]\n}\n */\nexport class IDERoute implements Route {\n constructor(private logger: Logger, private apiForIDE: APIForIDE) {}\n\n method = 'post';\n route = '/ide/:method';\n\n middlewares = [\n async (req: Request, res: Response) => {\n this.logger.debug(`api-IDE: got request for ${req.params.method}`);\n let ideCallLog: string | undefined;\n try {\n if (!this.apiForIDE[req.params.method]) {\n throw new Error(`API \"${req.params.method}\" was not found`);\n }\n const body = req.body;\n const { args } = body;\n // don't use \"logger.console\" here, we don't want these message to pollute cli-raw output\n const msgStart = `[*] started a new api-IDE call: ${req.params.method}, total: ${args?.length || 0} args`;\n this.logger.info(msgStart);\n console.log(); // eslint-disable-line no-console\n const randomNumber = Math.floor(Math.random() * 10000); // helps to distinguish between commands in the log\n ideCallLog = `${randomNumber} ${req.params.method}(${getArgsAsString(args)})`;\n await this.apiForIDE.logStartCmdHistory(ideCallLog);\n const startTask = process.hrtime();\n const result = await this.apiForIDE[req.params.method](...args);\n const duration = prettyTime(process.hrtime(startTask));\n const msgEnd = `✔ api-IDE call: ${req.params.method} had been completed in ${duration}`;\n this.logger.info(msgEnd);\n console.log(msgEnd); // eslint-disable-line no-console\n await this.apiForIDE.logFinishCmdHistory(ideCallLog, 0);\n res.json(result);\n } catch (err: any) {\n const msgErr = `api-IDE call: ${req.params.method} had failed`;\n this.logger.error(msgErr, err);\n console.error(`api-IDE call: ${req.params.method} had failed. ${err.message}`); // eslint-disable-line no-console\n if (ideCallLog) await this.apiForIDE.logFinishCmdHistory(ideCallLog, 1);\n res.status(500).jsonp(err.message);\n }\n },\n ];\n}\n\nfunction getArgsAsString(args?: any[]) {\n if (!args) return '';\n return args\n .map((arg) => {\n if (typeof arg === 'string') return arg;\n if (typeof arg === 'number') return arg.toString();\n return JSON.stringify(arg);\n })\n .join(' ');\n}\n"],"mappings":";;;;;;AAAA,SAAAA,YAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,WAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAAqC,SAAAC,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAAA,SAAAG,gBAAAH,CAAA,EAAAI,CAAA,EAAAC,CAAA,YAAAD,CAAA,GAAAE,cAAA,CAAAF,CAAA,MAAAJ,CAAA,GAAAO,MAAA,CAAAC,cAAA,CAAAR,CAAA,EAAAI,CAAA,IAAAK,KAAA,EAAAJ,CAAA,EAAAK,UAAA,MAAAC,YAAA,MAAAC,QAAA,UAAAZ,CAAA,CAAAI,CAAA,IAAAC,CAAA,EAAAL,CAAA;AAAA,SAAAM,eAAAD,CAAA,QAAAQ,CAAA,GAAAC,YAAA,CAAAT,CAAA,uCAAAQ,CAAA,GAAAA,CAAA,GAAAA,CAAA;AAAA,SAAAC,aAAAT,CAAA,EAAAD,CAAA,2BAAAC,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAL,CAAA,GAAAK,CAAA,CAAAU,MAAA,CAAAC,WAAA,kBAAAhB,CAAA,QAAAa,CAAA,GAAAb,CAAA,CAAAiB,IAAA,CAAAZ,CAAA,EAAAD,CAAA,uCAAAS,CAAA,SAAAA,CAAA,YAAAK,SAAA,yEAAAd,CAAA,GAAAe,MAAA,GAAAC,MAAA,EAAAf,CAAA;AAKrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMgB,QAAQ,CAAkB;EACrCC,WAAWA,CAASC,MAAc,EAAUC,SAAoB,EAAE;IAAA,KAA9CD,MAAc,GAAdA,MAAc;IAAA,KAAUC,SAAoB,GAApBA,SAAoB;IAAArB,eAAA,iBAEvD,MAAM;IAAAA,eAAA,gBACP,cAAc;IAAAA,eAAA,sBAER,CACZ,OAAOsB,GAAY,EAAEC,GAAa,KAAK;MACrC,IAAI,CAACH,MAAM,CAACI,KAAK,CAAC,4BAA4BF,GAAG,CAACG,MAAM,CAACC,MAAM,EAAE,CAAC;MAClE,IAAIC,UAA8B;MAClC,IAAI;QACF,IAAI,CAAC,IAAI,CAACN,SAAS,CAACC,GAAG,CAACG,MAAM,CAACC,MAAM,CAAC,EAAE;UACtC,MAAM,IAAIE,KAAK,CAAC,QAAQN,GAAG,CAACG,MAAM,CAACC,MAAM,iBAAiB,CAAC;QAC7D;QACA,MAAMG,IAAI,GAAGP,GAAG,CAACO,IAAI;QACrB,MAAM;UAAEC;QAAK,CAAC,GAAGD,IAAI;QACrB;QACA,MAAME,QAAQ,GAAG,mCAAmCT,GAAG,CAACG,MAAM,CAACC,MAAM,YAAYI,IAAI,EAAEE,MAAM,IAAI,CAAC,OAAO;QACzG,IAAI,CAACZ,MAAM,CAACa,IAAI,CAACF,QAAQ,CAAC;QAC1BG,OAAO,CAACC,GAAG,CAAC,CAAC,CAAC,CAAC;QACf,MAAMC,YAAY,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QACxDZ,UAAU,GAAG,GAAGS,YAAY,IAAId,GAAG,CAACG,MAAM,CAACC,MAAM,IAAIc,eAAe,CAACV,IAAI,CAAC,GAAG;QAC7E,MAAM,IAAI,CAACT,SAAS,CAACoB,kBAAkB,CAACd,UAAU,CAAC;QACnD,MAAMe,SAAS,GAAGC,OAAO,CAACC,MAAM,CAAC,CAAC;QAClC,MAAMC,MAAM,GAAG,MAAM,IAAI,CAACxB,SAAS,CAACC,GAAG,CAACG,MAAM,CAACC,MAAM,CAAC,CAAC,GAAGI,IAAI,CAAC;QAC/D,MAAMgB,QAAQ,GAAG,IAAAC,qBAAU,EAACJ,OAAO,CAACC,MAAM,CAACF,SAAS,CAAC,CAAC;QACtD,MAAMM,MAAM,GAAG,mBAAmB1B,GAAG,CAACG,MAAM,CAACC,MAAM,0BAA0BoB,QAAQ,EAAE;QACvF,IAAI,CAAC1B,MAAM,CAACa,IAAI,CAACe,MAAM,CAAC;QACxBd,OAAO,CAACC,GAAG,CAACa,MAAM,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,CAAC3B,SAAS,CAAC4B,mBAAmB,CAACtB,UAAU,EAAE,CAAC,CAAC;QACvDJ,GAAG,CAAC2B,IAAI,CAACL,MAAM,CAAC;MAClB,CAAC,CAAC,OAAOM,GAAQ,EAAE;QACjB,MAAMC,MAAM,GAAG,iBAAiB9B,GAAG,CAACG,MAAM,CAACC,MAAM,aAAa;QAC9D,IAAI,CAACN,MAAM,CAACiC,KAAK,CAACD,MAAM,EAAED,GAAG,CAAC;QAC9BjB,OAAO,CAACmB,KAAK,CAAC,iBAAiB/B,GAAG,CAACG,MAAM,CAACC,MAAM,gBAAgByB,GAAG,CAACG,OAAO,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI3B,UAAU,EAAE,MAAM,IAAI,CAACN,SAAS,CAAC4B,mBAAmB,CAACtB,UAAU,EAAE,CAAC,CAAC;QACvEJ,GAAG,CAACgC,MAAM,CAAC,GAAG,CAAC,CAACC,KAAK,CAACL,GAAG,CAACG,OAAO,CAAC;MACpC;IACF,CAAC,CACF;EAtCkE;AAuCrE;AAACG,OAAA,CAAAvC,QAAA,GAAAA,QAAA;AAED,SAASsB,eAAeA,CAACV,IAAY,EAAE;EACrC,IAAI,CAACA,IAAI,EAAE,OAAO,EAAE;EACpB,OAAOA,IAAI,CACR4B,GAAG,CAAEC,GAAG,IAAK;IACZ,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAOA,GAAG;IACvC,IAAI,OAAOA,GAAG,KAAK,QAAQ,EAAE,OAAOA,GAAG,CAACC,QAAQ,CAAC,CAAC;IAClD,OAAOC,IAAI,CAACC,SAAS,CAACH,GAAG,CAAC;EAC5B,CAAC,CAAC,CACDI,IAAI,CAAC,GAAG,CAAC;AACd","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@teambit/api-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.371",
|
|
4
4
|
"homepage": "https://bit.cloud/teambit/harmony/api-server",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"componentId": {
|
|
7
7
|
"scope": "teambit.harmony",
|
|
8
8
|
"name": "api-server",
|
|
9
|
-
"version": "1.0.
|
|
9
|
+
"version": "1.0.371"
|
|
10
10
|
},
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"fs-extra": "10.0.0",
|
|
@@ -18,26 +18,26 @@
|
|
|
18
18
|
"pretty-time": "1.1.0",
|
|
19
19
|
"@teambit/lane-id": "0.0.311",
|
|
20
20
|
"@teambit/harmony": "0.4.6",
|
|
21
|
-
"@teambit/checkout": "1.0.
|
|
22
|
-
"@teambit/component-compare": "1.0.
|
|
23
|
-
"@teambit/component-log": "1.0.
|
|
24
|
-
"@teambit/config": "0.0.
|
|
25
|
-
"@teambit/export": "1.0.
|
|
26
|
-
"@teambit/generator": "1.0.
|
|
27
|
-
"@teambit/install": "1.0.
|
|
28
|
-
"@teambit/lanes": "1.0.
|
|
21
|
+
"@teambit/checkout": "1.0.371",
|
|
22
|
+
"@teambit/component-compare": "1.0.371",
|
|
23
|
+
"@teambit/component-log": "1.0.371",
|
|
24
|
+
"@teambit/config": "0.0.1122",
|
|
25
|
+
"@teambit/export": "1.0.371",
|
|
26
|
+
"@teambit/generator": "1.0.372",
|
|
27
|
+
"@teambit/install": "1.0.371",
|
|
28
|
+
"@teambit/lanes": "1.0.371",
|
|
29
29
|
"@teambit/legacy.utils": "0.0.4",
|
|
30
|
-
"@teambit/merging": "1.0.
|
|
31
|
-
"@teambit/remove": "1.0.
|
|
32
|
-
"@teambit/snapping": "1.0.
|
|
33
|
-
"@teambit/workspace": "1.0.
|
|
34
|
-
"@teambit/cli": "0.0.
|
|
35
|
-
"@teambit/component": "1.0.
|
|
36
|
-
"@teambit/express": "0.0.
|
|
30
|
+
"@teambit/merging": "1.0.371",
|
|
31
|
+
"@teambit/remove": "1.0.371",
|
|
32
|
+
"@teambit/snapping": "1.0.371",
|
|
33
|
+
"@teambit/workspace": "1.0.371",
|
|
34
|
+
"@teambit/cli": "0.0.948",
|
|
35
|
+
"@teambit/component": "1.0.371",
|
|
36
|
+
"@teambit/express": "0.0.1047",
|
|
37
37
|
"@teambit/harmony.modules.send-server-sent-events": "0.0.1",
|
|
38
|
-
"@teambit/importer": "1.0.
|
|
39
|
-
"@teambit/logger": "0.0.
|
|
40
|
-
"@teambit/watcher": "1.0.
|
|
38
|
+
"@teambit/importer": "1.0.371",
|
|
39
|
+
"@teambit/logger": "0.0.1041",
|
|
40
|
+
"@teambit/watcher": "1.0.371"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@types/fs-extra": "9.0.7",
|
|
File without changes
|