+var CACHE_VAR = {
+ rebuild: false,
+ deferred: [],
+ bundleModules: [],
+ ideServer: null,
+ psModuleMap: null,
+ warnings: [],
+ errors: [],
+ compilationStarted: false,
+ compilationFinished: false,
+ installed: false,
+ srcOption: [],
+ spagoOutputPath: null
+};
+
+// include src files provided by psc-package or Spago
+function requestDependencySources(packagerCommand, srcPath, loaderOptions) {
+ const packagerArgs = ['sources'];
+
+ const loaderSrc = loaderOptions.src || [
+ srcPath
+ ];
+
+ debug('%s %o', packagerCommand, packagerArgs);
+
+ const cmd = spawn(packagerCommand, packagerArgs);
+
+ if (cmd.error) {
+ throw new Error(cmd.error);
+ }
+ else if (cmd.status !== 0) {
+ const error = cmd.stdout.toString();
+
+ throw new Error(error);
+ }
+ else {
+ const result = cmd.stdout.toString().split(eol).filter(v => v != '').concat(loaderSrc);
+
+ debug('%s result: %o', packagerCommand, result);
+
+ CACHE_VAR.srcOption = result;
+
+ return result;
+ }
+}
+
+// 'spago output path' will return the output folder in a monorepo
+function getSpagoSources() {
+ const cachedVal = CACHE_VAR.spagoOutputPath;
+ if (cachedVal) {
+ return cachedVal
+ }
+ const command = "spago"
+ const args = ["path", "output"]
+
+ const cmd = spawn(command, args);
+
+ if (cmd.error) {
+ throw new Error(cmd.error);
+ }
+ else if (cmd.status !== 0) {
+ const error = cmd.stdout.toString();
+
+ throw new Error(error);
+ }
+ else {
+ const result = cmd.stdout.toString().split(eol)[0]
+
+ debug('"spago path output" result: %o', result);
+
+ CACHE_VAR.spagoOutputPath = result;
+
+ return result;
+ }
+}
+