fyn 1.1.14 → 1.1.18

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 (3) hide show
  1. package/README.md +4 -4
  2. package/dist/fyn.js +289 -104
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -14,7 +14,7 @@ Additionally, it has more unique features to improve productivity and efficiency
14
14
  - efficient disk space usage with [central storage](#central-storage)
15
15
  - smaller `node_modules` with [guaranteed single copy of a package](#smaller-node_modules)
16
16
  - flexible dependencies lock by using a [lock time stamp](#locking-dependencies-by-time)
17
- - built-in support for a mono-repo workspace
17
+ - built-in support for a monorepo workspace
18
18
  - and [more](#features)
19
19
 
20
20
  ![fyn demo][fyn-demo-gif]
@@ -101,7 +101,7 @@ Want to find out more? Please read on below:
101
101
  - Compatible with [npm] by internally using the same modules as [npm].
102
102
  - Maintains as much of [npm]'s behaviors as possible.
103
103
  - Able to use [npm]'s `npm-shrinkwrap.json` or `package-lock.json`.
104
- - built-in support for maintaining a mono-repo workspace.
104
+ - built-in support for maintaining a monorepo workspace.
105
105
 
106
106
  ## Overview
107
107
 
@@ -121,11 +121,11 @@ So why would you want to use this?
121
121
 
122
122
  It also has a special `fynlocal` mode that's a better [npm link] for handling local packages.
123
123
 
124
- It's workspace aware and fits perfectly with the mono-repo concept.
124
+ It's workspace aware and fits perfectly with the monorepo concept.
125
125
 
126
126
  ## Enhanced `npm link`
127
127
 
128
- `fyn` has a `fynlocal` mode that's designed specifically to be a much better [npm link]. It effectively makes your disk a npm registry by treating packages on your local disk like they've been published. You can install and use them directly, and quickly test changes iteratively. It fits perfectly with the mono-repo workspace concept. It would be very useful if you've ever done any of these:
128
+ `fyn` has a `fynlocal` mode that's designed specifically to be a much better [npm link]. It effectively makes your disk a npm registry by treating packages on your local disk like they've been published. You can install and use them directly, and quickly test changes iteratively. It fits perfectly with the monorepo workspace concept. It would be very useful if you've ever done any of these:
129
129
 
130
130
  - Debug your application by inspecting code inside `node_modules`.
131
131
  - Live edit your package that's installed to `node_modules`, and then have to copy the changes out to commit.
package/dist/fyn.js CHANGED
@@ -973,7 +973,9 @@ class FynCli {
973
973
  } // run npm scripts from fynpo, with lifecycle scripts added
974
974
 
975
975
 
976
- const fynpoNpmScripts = addNpmLifecycle(_.without(this.fyn._runNpm, ...npmInstallScripts), pkgScripts);
976
+ const _runNpm = this.fyn._runNpm.map(s => Array.isArray(s) ? s.find(s1 => pkgScripts[s1] !== undefined) : s);
977
+
978
+ const fynpoNpmScripts = addNpmLifecycle(_.without(_runNpm, ...npmInstallScripts), pkgScripts);
977
979
 
978
980
  if (fynpoNpmScripts.length > 0) {
979
981
  await runNpmScript({
@@ -3187,6 +3189,11 @@ class Fyn {
3187
3189
 
3188
3190
  if (this._fynpo.config) {
3189
3191
  if (this._fynpo.graph.getPackageAtDir(this._cwd)) {
3192
+ // the command.bootstrap.npmRunScripts can be
3193
+ // - a string
3194
+ // - an array of strings
3195
+ // - an array of strings and/or array of strings - each sub array indicates a list of
3196
+ // script names and fyn will run only the first one that exist
3190
3197
  fynpoNpmRun = _.get(this, "_fynpo.config.command.bootstrap.npmRunScripts", undefined);
3191
3198
 
3192
3199
  if (_.isArray(fynpoNpmRun) && !_.isEmpty(fynpoNpmRun)) {
@@ -3789,14 +3796,23 @@ class Fyn {
3789
3796
  }
3790
3797
  }
3791
3798
 
3792
- async moveToBackup(dir, reason) {
3793
- // TODO: create backup dir and move
3794
- logger.warn("Removing", dir, "due to", reason);
3795
- return await Fs.$.rimraf(dir);
3799
+ async moveToFv(dir, pkg, pkgJson) {
3800
+ const toDir = this.getInstalledPkgDir(pkgJson.name, pkgJson.version, {});
3801
+
3802
+ try {
3803
+ await Fs.access(toDir); // a copy already exist in FV dir, so remove it
3804
+
3805
+ logger.warn(`Removing ${dir} because its version ${pkgJson.version} is different from ${pkg.version}`);
3806
+ await Fs.$.rimraf(dir);
3807
+ } catch (err) {
3808
+ logger.debug(`Moving ${dir} to ${toDir} to replace with version ${pkg.version}`);
3809
+ await Fs.$.mkdirp(Path.dirname(toDir));
3810
+ await Fs.rename(dir, toDir);
3811
+ }
3796
3812
  }
3797
3813
 
3798
- async unlinkLocalPackage(pkg, dir) {
3799
- logger.warn("Removing symlink", dir);
3814
+ async unlinkLocalPackage(dir, reason) {
3815
+ logger.warn(`Removing ${dir} because it's ${reason}`);
3800
3816
  return await Fs.$.rimraf(dir);
3801
3817
  } //
3802
3818
  // A pkg that's to be extracted must:
@@ -3822,21 +3838,21 @@ class Fyn {
3822
3838
  }
3823
3839
 
3824
3840
  if (ostat.isSymbolicLink()) {
3825
- await this.unlinkLocalPackage(pkg, fullOutDir);
3841
+ await this.unlinkLocalPackage(fullOutDir, "a symlink");
3826
3842
  } else if (!ostat.isDirectory()) {
3827
- await this.moveToBackup(fullOutDir, "not a directory");
3843
+ await this.unlinkLocalPackage(fullOutDir, "not a directory");
3828
3844
  } else {
3829
3845
  try {
3830
3846
  const pkgJson = await this.loadJsonForPkg(pkg, fullOutDir);
3831
3847
 
3832
3848
  if (!pkgJson._invalid) {
3833
3849
  return pkgJson;
3834
- } // no valid package.json found
3835
-
3850
+ }
3836
3851
 
3837
- const id = pkgJson._id ? ` (id ${pkgJson._id})` : "";
3838
- await this.moveToBackup(fullOutDir, `invalid existing package${id}`);
3839
- } catch (err) {}
3852
+ await this.moveToFv(fullOutDir, pkg, pkgJson);
3853
+ } catch (err) {
3854
+ logger.warn(`ensureProperPkgdir:`, err);
3855
+ }
3840
3856
  }
3841
3857
 
3842
3858
  return null;
@@ -3940,7 +3956,7 @@ const logger = __webpack_require__("./lib/logger.js");
3940
3956
 
3941
3957
  const logFormat = __webpack_require__("./lib/util/log-format.js");
3942
3958
 
3943
- const VisualExec = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.13/visual-exec/lib/visual-exec.js");
3959
+ const VisualExec = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.14/visual-exec/lib/visual-exec.js");
3944
3960
 
3945
3961
  const fyntil = __webpack_require__("./lib/util/fyntil.js");
3946
3962
 
@@ -4133,7 +4149,7 @@ class LifecycleScripts {
4133
4149
  silent,
4134
4150
  cwd: this._pkgDir,
4135
4151
  env,
4136
- maxBuffer: ONE_MB
4152
+ maxBuffer: 20 * ONE_MB
4137
4153
  }, this._pkg.scripts[name]); // exec not silent so it's dumping to stdout
4138
4154
  // and it's not a good idea to try to show visual progress of the execution
4139
4155
 
@@ -4179,7 +4195,7 @@ const logger = __webpack_require__("./lib/logger.js");
4179
4195
 
4180
4196
  const PromiseQueue = __webpack_require__("./lib/util/promise-queue.js");
4181
4197
 
4182
- const VisualExec = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.13/visual-exec/lib/visual-exec.js");
4198
+ const VisualExec = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.14/visual-exec/lib/visual-exec.js");
4183
4199
 
4184
4200
  const xaa = __webpack_require__("./node_modules/.f/_/xaa/1.7.0/xaa/dist/xaa.js");
4185
4201
 
@@ -4187,6 +4203,10 @@ const Fs = __webpack_require__("./lib/util/file-ops.js");
4187
4203
 
4188
4204
  const _ = __webpack_require__("./node_modules/.f/_/lodash/4.17.21/lodash/lodash.min.js");
4189
4205
 
4206
+ const {
4207
+ runNpmScript
4208
+ } = __webpack_require__("./lib/util/run-npm-script.js");
4209
+
4190
4210
  class LocalPkgBuilder {
4191
4211
  constructor(options) {
4192
4212
  this._options = options;
@@ -4237,22 +4257,22 @@ class LocalPkgBuilder {
4237
4257
 
4238
4258
 
4239
4259
  const flatLocals = [].concat(...localsByDepth);
4240
- const allNames = flatLocals.map(x => x.name); //
4241
- // convert items into array of names and then use _.uniq to only keep
4242
- // the first occurrence of duplicate names, and reverse them so the
4260
+ const allPaths = flatLocals.map(x => x.fullPath); //
4261
+ // convert items into array of paths and then use _.uniq to only keep
4262
+ // the first occurrence of duplicate paths, and reverse them so the
4243
4263
  // ones that has no dependence on the ones before them are build first.
4244
4264
  //
4245
4265
 
4246
- const uniqNames = _.uniq(allNames).reverse();
4266
+ const uniqPaths = _.uniq(allPaths).reverse();
4247
4267
 
4248
- const byName = flatLocals.reduce((a, x) => {
4249
- a[x.name] = x;
4268
+ const byPathLookup = flatLocals.reduce((a, x) => {
4269
+ a[x.fullPath] = x;
4250
4270
  return a;
4251
4271
  }, {});
4252
- logger.debug("local pkgs for build all names", allNames, "uniq names", uniqNames);
4272
+ logger.debug("local pkgs for build all paths", allPaths, "uniq paths", uniqPaths);
4253
4273
 
4254
- for (const name of uniqNames) {
4255
- await this.addItem(byName[name]);
4274
+ for (const path of uniqPaths) {
4275
+ await this.addItem(byPathLookup[path]);
4256
4276
  }
4257
4277
 
4258
4278
  logger.debug("resolving build local _started promise");
@@ -4301,18 +4321,21 @@ class LocalPkgBuilder {
4301
4321
 
4302
4322
  if (x && x.promise) {
4303
4323
  logger.debug("waiting for build local item", fullPath, x);
4304
- await x.promise;
4324
+ const localBuildResult = await x.promise;
4305
4325
  logger.debug("build local item awaited", fullPath);
4326
+ return localBuildResult;
4306
4327
  } else {
4307
4328
  logger.debug("status is false => no build local job for pkg at", fullPath, x);
4308
4329
  }
4330
+
4331
+ return {};
4309
4332
  }
4310
4333
 
4311
4334
  waitForDone() {
4312
4335
  return this._defer && this._defer.promise;
4313
4336
  }
4314
4337
 
4315
- processItem(item) {
4338
+ async processItem(item) {
4316
4339
  const dispPath = Path.relative(this._options.fyn._cwd, item.fullPath);
4317
4340
  const command = [process.argv[0], this._fynJs, this._fyn._options.registry && `--reg=${this._fyn._options.registry}`, "-q=d --pg=simple --no-build-local", !this._fyn._options.sourceMaps && "--no-source-maps"].filter(x => x).join(" ");
4318
4341
  const displayTitle = `building local pkg at ${dispPath}`;
@@ -4324,7 +4347,66 @@ class LocalPkgBuilder {
4324
4347
  visualLogger: logger
4325
4348
  });
4326
4349
  ve.logFinalOutput = _.noop;
4327
- return ve.execute();
4350
+ await ve.execute();
4351
+ const pkgJsonFile = Path.join(item.fullPath, "package.json");
4352
+ let pkgJson;
4353
+ const prePkgJson = pkgJson = JSON.parse(await Fs.readFile(pkgJsonFile));
4354
+
4355
+ if (_.get(prePkgJson, "scripts.prepublish") !== undefined) {
4356
+ if (_.get(prePkgJson, "scripts.prepare") !== undefined) {
4357
+ logger.warn(`
4358
+ Local package has 'prepare' and 'prepublish', skipping 'prepublish'. dir at ${dispPath}
4359
+ `);
4360
+ } else {
4361
+ logger.warn(`
4362
+ Build local dep package - running npm script 'prepublish' at ${dispPath}
4363
+
4364
+ ==NOTE== While fyn will run 'prepublish' as part of installing this local package as a dependency,
4365
+ ==NOTE== Please note that npm deprecated this script and recommend other npm lifecycle script
4366
+ ==NOTE== such as 'prepare'. See docs here https://docs.npmjs.com/cli/v7/using-npm/scripts#prepare-and-prepublish
4367
+ ==NOTE== If you want to use 'prepublishOnly', please note that fyn won't execute it as part of
4368
+ ==NOTE== installing local packages.
4369
+ `);
4370
+ await runNpmScript({
4371
+ scripts: ["prepublish"],
4372
+ appDir: item.fullPath,
4373
+ dir: item.fullPath,
4374
+ fyn: this._fyn,
4375
+ depInfo: item,
4376
+ pkgJson: prePkgJson
4377
+ });
4378
+ pkgJson = JSON.parse(await Fs.readFile(pkgJsonFile));
4379
+ }
4380
+ }
4381
+
4382
+ if (_.get(prePkgJson, "scripts.prepack") !== undefined) {
4383
+ logger.debug(`Build local dep package - running npm script 'prepack' at ${dispPath}`);
4384
+ await runNpmScript({
4385
+ scripts: ["prepack"],
4386
+ appDir: item.fullPath,
4387
+ dir: item.fullPath,
4388
+ fyn: this._fyn,
4389
+ depInfo: item,
4390
+ pkgJson: prePkgJson
4391
+ });
4392
+ pkgJson = JSON.parse(await Fs.readFile(pkgJsonFile));
4393
+ }
4394
+
4395
+ if (_.get(pkgJson, "scripts.postpack") !== undefined) {
4396
+ logger.debug(`Build local dep package - running npm script 'postpack' at ${dispPath}`);
4397
+ await runNpmScript({
4398
+ scripts: ["postpack"],
4399
+ appDir: item.fullPath,
4400
+ dir: item.fullPath,
4401
+ fyn: this._fyn,
4402
+ depInfo: item,
4403
+ pkgJson
4404
+ });
4405
+ }
4406
+
4407
+ return {
4408
+ pkgJson
4409
+ };
4328
4410
  }
4329
4411
 
4330
4412
  }
@@ -5690,7 +5772,7 @@ const {
5690
5772
  const {
5691
5773
  getDepSection,
5692
5774
  makeDepStep
5693
- } = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/index.js");
5775
+ } = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/index.js");
5694
5776
 
5695
5777
  const xaa = __webpack_require__("./lib/util/xaa.js");
5696
5778
 
@@ -6042,6 +6124,32 @@ class PkgDepResolver {
6042
6124
  this._promiseQ.addItem(PromiseQueue.pauseItem, true);
6043
6125
  }
6044
6126
  }
6127
+
6128
+ getAutoSemver(semver) {
6129
+ const autoSemver = _.get(this._fyn._fynpo, "config.localDepAutoSemver");
6130
+
6131
+ if (autoSemver) {
6132
+ const parsedSv = Semver.coerce(semver);
6133
+
6134
+ if (parsedSv && parsedSv.raw) {
6135
+ switch (autoSemver) {
6136
+ case "patch":
6137
+ semver = `~${parsedSv.raw}`;
6138
+ break;
6139
+
6140
+ case "minor":
6141
+ semver = `^${parsedSv.raw}`;
6142
+ break;
6143
+
6144
+ case "major":
6145
+ semver = "*";
6146
+ break;
6147
+ }
6148
+ }
6149
+ }
6150
+
6151
+ return semver;
6152
+ }
6045
6153
  /**
6046
6154
  * create the dep relation items for a package
6047
6155
  *
@@ -6130,31 +6238,36 @@ class PkgDepResolver {
6130
6238
 
6131
6239
  const fynDeps = _.get(pkg, ["fyn", depSec], {});
6132
6240
 
6133
- let fromDir = pkg[PACKAGE_RAW_INFO] && pkg[PACKAGE_RAW_INFO].dir; // if in fynpo mode, gather deps that are actually local packages in the mono-repo
6241
+ let fromDir = pkg[PACKAGE_RAW_INFO] && pkg[PACKAGE_RAW_INFO].dir; // if in fynpo mode, gather deps that are actually local packages in the monorepo
6134
6242
 
6135
6243
  if (this._fyn.isFynpo) {
6136
6244
  const locals = [];
6137
6245
  const fynpo = this._fyn._fynpo;
6138
6246
 
6139
6247
  if (!fromDir) {
6140
- // this case means an downstream pkg has a dep on a mono-repo package
6141
- // TODO: should make sure mono-repo local copy's version satisfies
6142
- // downstream pkg's semver
6248
+ // this case means a downstream pkg has a dep on a monorepo package
6143
6249
  fromDir = this._fyn.cwd;
6144
6250
  }
6145
6251
 
6146
6252
  for (const name in deps) {
6147
- if (this._fyn.checkNoFynLocal(name)) {
6253
+ if (this._fyn.checkNoFynLocal(name) || !fynpo.graph.getPackageByName(name)) {
6148
6254
  continue;
6149
- } // is pkg 'name@semver' a fynpo package?
6255
+ } //
6256
+ // Check if there is a fynpo package that match 'name@semver'?
6257
+ //
6150
6258
 
6151
6259
 
6152
- const fynpoPkg = fynpo.graph.resolvePackage(name, deps[name]);
6260
+ const semver = this.getAutoSemver(deps[name]);
6261
+ const fynpoPkg = fynpo.graph.resolvePackage(name, semver, false);
6153
6262
 
6154
6263
  if (fynpoPkg) {
6155
6264
  locals.push(fynpoPkg);
6156
6265
  const fullPkgDir = Path.join(fynpo.dir, fynpoPkg.path);
6157
6266
  fynDeps[name] = relativePath(fromDir, fullPkgDir, true);
6267
+ } else {
6268
+ const dispName = logFormat.pkgId(name);
6269
+ const versions = fynpo.graph.packages.byName[name].map(x => x.version).join(", ");
6270
+ logger.info(`No version of package in fynpo match semver: ${semver} name: ${dispName} versions: ${versions}`);
6158
6271
  }
6159
6272
  }
6160
6273
 
@@ -6179,7 +6292,7 @@ class PkgDepResolver {
6179
6292
  }
6180
6293
 
6181
6294
  const names = locals.map(x => x.name).join(", ");
6182
- logger.info(`These packages in ${pkg.name}'s ${depSec} using local copies from your mono-repo: ${names}`);
6295
+ logger.info(`These packages in ${pkg.name}'s ${depSec} using local copies from your monorepo: ${names}`);
6183
6296
  }
6184
6297
  }
6185
6298
 
@@ -6745,7 +6858,7 @@ ${item.depPath.join(" > ")}`);
6745
6858
  return false;
6746
6859
  }
6747
6860
 
6748
- const force = this._lockOnly && isOpt; // check if an already resolved local package satisfies item
6861
+ const force = this._lockOnly && !isOpt; // check if an already resolved local package satisfies item
6749
6862
  // before trying to resolve with lock data
6750
6863
 
6751
6864
  if (!this._fyn.preferLock) {
@@ -7966,13 +8079,17 @@ class PkgInstaller {
7966
8079
 
7967
8080
  if (scope) await xaa.try(() => Fs.rmdir(Path.join(outDir, scope))); // get rid of potentially empty FV_DIR dir
7968
8081
 
7969
- await xaa.try(() => Fs.rmdir(this._fyn.getFvDir()));
8082
+ await xaa.try(() => Fs.rmdir(this._fyn.getFvDir("_")));
7970
8083
  }
7971
8084
  /**
7972
8085
  * Process detail layout for node_modules.
7973
8086
  *
7974
- * Make links under node_modules for packages that exist app's package.json and
7975
- * flattened packages under node_modules/${FV_DIR}/node_modules
8087
+ * Real copies of packages are store under FV_DIR.
8088
+ *
8089
+ * 1. For top level packages that exist in app's package.json, make symlinks under node_modules.
8090
+ * 2. For packages that could be promoted to the top level:
8091
+ * - If flattenTop enabled, make symlinks under node_modules
8092
+ * - flattenTop disabled, make symlinks under FV_Dir/node_modules
7976
8093
  *
7977
8094
  * @returns {*} none
7978
8095
  */
@@ -8602,7 +8719,7 @@ const {
8602
8719
 
8603
8720
  const PkgPreper = __webpack_require__("./node_modules/.f/_/pkg-preper/0.1.0/pkg-preper/lib/pkg-preper.js");
8604
8721
 
8605
- const VisualExec = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.13/visual-exec/lib/visual-exec.js");
8722
+ const VisualExec = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.14/visual-exec/lib/visual-exec.js");
8606
8723
 
8607
8724
  const {
8608
8725
  readPkgJson,
@@ -8621,11 +8738,11 @@ const {
8621
8738
 
8622
8739
  const {
8623
8740
  prePackObj
8624
- } = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/index.js");
8741
+ } = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/index.js");
8625
8742
 
8626
8743
  const {
8627
8744
  PackageRef
8628
- } = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/index.js");
8745
+ } = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/index.js");
8629
8746
 
8630
8747
  const WATCH_TIME = 5000; // consider meta cache stale after this much time (30 minutes)
8631
8748
 
@@ -8812,7 +8929,7 @@ class PkgSrcManager {
8812
8929
  const publishUtilConfig = this.getPublishUtil(json, fullPath);
8813
8930
 
8814
8931
  if (publishUtilConfig) {
8815
- logger.info(`processing local package.json at ${fullPath} with https://www.npmjs.com/package/publish-util prePackObj`);
8932
+ logger.debug(`processing local package.json at ${fullPath} with https://www.npmjs.com/package/publish-util prePackObj`);
8816
8933
  prePackObj(json, _objectSpread(_objectSpread({}, publishUtilConfig), {}, {
8817
8934
  silent: true
8818
8935
  }));
@@ -9641,7 +9758,7 @@ const {
9641
9758
  const {
9642
9759
  FynpoConfigManager,
9643
9760
  FynpoDepGraph
9644
- } = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/index.js");
9761
+ } = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/index.js");
9645
9762
  /* eslint-disable no-magic-numbers, max-statements, no-empty, complexity, no-eval */
9646
9763
 
9647
9764
 
@@ -10422,6 +10539,8 @@ const logFormat = __webpack_require__("./lib/util/log-format.js");
10422
10539
 
10423
10540
  const logger = __webpack_require__("./lib/logger.js");
10424
10541
 
10542
+ const _ = __webpack_require__("./node_modules/.f/_/lodash/4.17.21/lodash/lodash.min.js");
10543
+
10425
10544
  const {
10426
10545
  INSTALL_PACKAGE
10427
10546
  } = __webpack_require__("./lib/log-items.js");
@@ -10471,23 +10590,28 @@ const runNpmScript = ({
10471
10590
  appDir,
10472
10591
  fyn,
10473
10592
  scripts,
10593
+ dir,
10594
+ pkgJson,
10474
10595
  depInfo,
10475
10596
  ignoreFailure,
10476
10597
  withLifecycle = false
10477
10598
  }) => {
10478
10599
  const pkgId = logFormat.pkgId(depInfo);
10600
+ const options = Object.assign({
10601
+ appDir,
10602
+ _fyn: fyn,
10603
+ dir,
10604
+ json: pkgJson
10605
+ }, depInfo);
10479
10606
 
10480
- if (withLifecycle) {
10481
- scripts = addNpmLifecycle(scripts, fyn._pkg.scripts || {});
10607
+ if (withLifecycle && options.json) {
10608
+ scripts = addNpmLifecycle(scripts, _.get(options.json, "scripts", {}));
10482
10609
  }
10483
10610
 
10484
10611
  return Promise.each(scripts, script => {
10485
10612
  running.push(pkgId);
10486
10613
  updateRunning(script);
10487
- const ls = new LifecycleScripts(Object.assign({
10488
- appDir,
10489
- _fyn: fyn
10490
- }, depInfo));
10614
+ const ls = new LifecycleScripts(options);
10491
10615
  return ls.execute(script, true).then(() => undefined).catch(e => {
10492
10616
  if (!ignoreFailure) throw e;
10493
10617
  logger.warn(chalk.yellow(`ignoring failure of npm script ${script} of ${pkgId}`, chalk.red(e.message)));
@@ -10891,7 +11015,7 @@ module.exports = __webpack_require__("./node_modules/.f/_/xaa/1.7.0/xaa/dist/xaa
10891
11015
 
10892
11016
  /***/ }),
10893
11017
 
10894
- /***/ "./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/fynpo-config.js":
11018
+ /***/ "./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/fynpo-config.js":
10895
11019
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
10896
11020
 
10897
11021
  "use strict";
@@ -11041,7 +11165,7 @@ exports.FynpoConfigManager = FynpoConfigManager;
11041
11165
 
11042
11166
  /***/ }),
11043
11167
 
11044
- /***/ "./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/fynpo-dep-graph.js":
11168
+ /***/ "./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/fynpo-dep-graph.js":
11045
11169
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
11046
11170
 
11047
11171
  "use strict";
@@ -11070,9 +11194,9 @@ const minimatch_1 = (0, tslib_1.__importDefault)(__webpack_require__("./node_mod
11070
11194
  const lodash_1 = (0, tslib_1.__importDefault)(__webpack_require__("./node_modules/.f/_/lodash/4.17.21/lodash/lodash.min.js"));
11071
11195
  const semver_1 = (0, tslib_1.__importDefault)(__webpack_require__("./node_modules/.f/_/semver/7.3.5/semver/index.js"));
11072
11196
 
11073
- const minimatch_group_1 = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/minimatch-group.js");
11197
+ const minimatch_group_1 = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/minimatch-group.js");
11074
11198
 
11075
- const util_1 = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/util.js");
11199
+ const util_1 = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/util.js");
11076
11200
 
11077
11201
  const is_path_inside_1 = (0, tslib_1.__importDefault)(__webpack_require__("./node_modules/.f/_/is-path-inside/3.0.3/is-path-inside/index.js"));
11078
11202
  const DepSectionMap = {
@@ -11209,8 +11333,18 @@ exports.pkgId = pkgId;
11209
11333
  * @returns package info
11210
11334
  */
11211
11335
 
11212
- function resolvePackage(semver, packages) {
11213
- return packages.length > 1 && packages.find(pkg => semver_1.default.satisfies(pkg.version, semver)) || packages[0];
11336
+ function resolvePackage(semver, packages, fallbackToFirst = true) {
11337
+ const found = packages.find(pkg => semver_1.default.satisfies(pkg.version, semver));
11338
+
11339
+ if (found) {
11340
+ return found;
11341
+ }
11342
+
11343
+ if (fallbackToFirst) {
11344
+ return packages[0];
11345
+ }
11346
+
11347
+ return undefined;
11214
11348
  }
11215
11349
  /**
11216
11350
  * Make a package ID from basic info by joining name and version into a single string.
@@ -11514,13 +11648,14 @@ class FynpoDepGraph {
11514
11648
  *
11515
11649
  * @param name - package name
11516
11650
  * @param semver - semver
11651
+ * @param fallbackToFirst - should use the first entry if semver didn't match any version
11517
11652
  * @returns fynpo package info
11518
11653
  */
11519
11654
 
11520
11655
 
11521
- resolvePackage(name, semver) {
11656
+ resolvePackage(name, semver, fallbackToFirst = true) {
11522
11657
  if (this.packages.byName[name]) {
11523
- return resolvePackage(semver, this.packages.byName[name]);
11658
+ return resolvePackage(semver, this.packages.byName[name], fallbackToFirst);
11524
11659
  }
11525
11660
 
11526
11661
  return undefined;
@@ -11781,7 +11916,7 @@ exports.FynpoDepGraph = FynpoDepGraph;
11781
11916
 
11782
11917
  /***/ }),
11783
11918
 
11784
- /***/ "./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/index.js":
11919
+ /***/ "./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/index.js":
11785
11920
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
11786
11921
 
11787
11922
  "use strict";
@@ -11802,11 +11937,11 @@ const filter_scan_dir_1 = (0, tslib_1.__importDefault)(__webpack_require__("./no
11802
11937
  const minimatch_1 = (0, tslib_1.__importDefault)(__webpack_require__("./node_modules/.f/_/minimatch/3.0.4/minimatch/minimatch.js"));
11803
11938
  const lodash_1 = (0, tslib_1.__importDefault)(__webpack_require__("./node_modules/.f/_/lodash/4.17.21/lodash/lodash.min.js"));
11804
11939
 
11805
- const minimatch_group_1 = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/minimatch-group.js");
11940
+ const minimatch_group_1 = __webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/minimatch-group.js");
11806
11941
 
11807
- (0, tslib_1.__exportStar)(__webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/fynpo-dep-graph.js"), exports);
11808
- (0, tslib_1.__exportStar)(__webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/fynpo-config.js"), exports);
11809
- (0, tslib_1.__exportStar)(__webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/util.js"), exports);
11942
+ (0, tslib_1.__exportStar)(__webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/fynpo-dep-graph.js"), exports);
11943
+ (0, tslib_1.__exportStar)(__webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/fynpo-config.js"), exports);
11944
+ (0, tslib_1.__exportStar)(__webpack_require__("./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/util.js"), exports);
11810
11945
  /**
11811
11946
  * Take an array of packages and figure out their dependencies on each other
11812
11947
  *
@@ -12061,7 +12196,7 @@ exports.makePkgDeps = makePkgDeps;
12061
12196
 
12062
12197
  /***/ }),
12063
12198
 
12064
- /***/ "./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/minimatch-group.js":
12199
+ /***/ "./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/minimatch-group.js":
12065
12200
  /***/ ((__unused_webpack_module, exports) => {
12066
12201
 
12067
12202
  "use strict";
@@ -12107,7 +12242,7 @@ exports.groupMM = groupMM;
12107
12242
 
12108
12243
  /***/ }),
12109
12244
 
12110
- /***/ "./node_modules/.f/_/@fynpo/base/1.1.5-fynlocal_h/@fynpo/base/dist/util.js":
12245
+ /***/ "./node_modules/.f/_/@fynpo/base/1.1.7-fynlocal_h/@fynpo/base/dist/util.js":
12111
12246
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
12112
12247
 
12113
12248
  "use strict";
@@ -60621,23 +60756,23 @@ function set(data, k, v) {
60621
60756
 
60622
60757
  /***/ }),
60623
60758
 
60624
- /***/ "./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/index.js":
60759
+ /***/ "./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/index.js":
60625
60760
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
60626
60761
 
60627
60762
  const {
60628
60763
  prePackObj,
60629
60764
  prePack
60630
- } = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/prepack.js");
60765
+ } = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/prepack.js");
60631
60766
 
60632
60767
  const {
60633
60768
  postPack
60634
- } = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/postpack.js");
60769
+ } = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/postpack.js");
60635
60770
 
60636
60771
  const {
60637
60772
  npmPublish
60638
- } = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/npm-publish.js");
60773
+ } = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/npm-publish.js");
60639
60774
 
60640
- const utils = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/utils.js");
60775
+ const utils = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/utils.js");
60641
60776
 
60642
60777
  exports.npmPublish = npmPublish;
60643
60778
  exports.prePackObj = prePackObj;
@@ -60647,7 +60782,7 @@ exports.utils = utils;
60647
60782
 
60648
60783
  /***/ }),
60649
60784
 
60650
- /***/ "./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/npm-publish.js":
60785
+ /***/ "./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/npm-publish.js":
60651
60786
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
60652
60787
 
60653
60788
  "use strict";
@@ -60657,7 +60792,7 @@ const execa = __webpack_require__("./node_modules/.f/_/execa/5.1.1/execa/index.j
60657
60792
 
60658
60793
  const {
60659
60794
  getInfo
60660
- } = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/utils.js");
60795
+ } = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/utils.js");
60661
60796
 
60662
60797
  const assert = __webpack_require__("assert");
60663
60798
 
@@ -60665,19 +60800,32 @@ const Fs = __webpack_require__("fs").promises;
60665
60800
 
60666
60801
  const Path = __webpack_require__("path");
60667
60802
 
60668
- function getArg(opt, msg, valids = []) {
60669
- const tagIx = process.argv.indexOf(opt);
60803
+ function getArg({
60804
+ opt,
60805
+ msg,
60806
+ argv,
60807
+ value = true,
60808
+ valids = []
60809
+ }) {
60810
+ const tagIx = argv.indexOf(opt);
60811
+
60812
+ if (tagIx >= 0) {
60813
+ if (value) {
60814
+ const val = argv[tagIx + 1];
60670
60815
 
60671
- if (tagIx > 0) {
60672
- const val = process.argv[tagIx + 1];
60816
+ if (valids.length > 0) {
60817
+ assert(valids.includes(val), `${opt} has a value ${val} but it must be one of: ${valids.join(", ")}`);
60818
+ } else {
60819
+ assert(val, `${opt} must specify a ${msg}`);
60820
+ }
60673
60821
 
60674
- if (valids.length > 0) {
60675
- assert(valids.includes(val), `${opt} must specify a valid ${msg}: ${valids.join(",")}`);
60822
+ argv.splice(tagIx, 2);
60823
+ return [opt, val];
60676
60824
  } else {
60677
- assert(val, `${opt} must specify a ${msg}`);
60825
+ argv.splice(tagIx, 1);
60678
60826
  }
60679
60827
 
60680
- return [opt, val];
60828
+ return [opt];
60681
60829
  }
60682
60830
 
60683
60831
  return [];
@@ -60691,18 +60839,36 @@ async function removeFile(name) {
60691
60839
  } catch (_unused) {}
60692
60840
  }
60693
60841
 
60694
- process.on("SIGINT", () => {});
60842
+ exports.npmPublish = async function npmPublish({
60843
+ exit = true,
60844
+ silent = false
60845
+ } = {}) {
60846
+ const noop = () => {};
60695
60847
 
60696
- exports.npmPublish = async function npmPublish() {
60848
+ process.on("SIGINT", noop);
60849
+ const argv = [].concat(process.argv.slice(2));
60697
60850
  const {
60698
60851
  pkgDir,
60699
60852
  pkgFile,
60700
60853
  pkg,
60701
60854
  pkgData
60702
60855
  } = await getInfo();
60703
- const dryRun = process.argv.indexOf("--dry-run") > 0;
60704
- const tag = getArg("--tag", "tag");
60705
- const access = getArg("--access", "access", ["public", "restricted"]);
60856
+ const dryRun = getArg({
60857
+ opt: "--dry-run",
60858
+ value: false,
60859
+ argv
60860
+ }).length > 0;
60861
+ const tag = getArg({
60862
+ opt: "--tag",
60863
+ msg: "tag",
60864
+ argv
60865
+ });
60866
+ const access = getArg({
60867
+ opt: "--access",
60868
+ msg: "access",
60869
+ argv,
60870
+ valids: ["public", "restricted"]
60871
+ });
60706
60872
  let changedPkg = false;
60707
60873
  let exitCode = 0;
60708
60874
  const tgzName = pkg.name.replace(/@/g, "").replace(/\//g, "-");
@@ -60713,7 +60879,10 @@ exports.npmPublish = async function npmPublish() {
60713
60879
  const restore = async () => {
60714
60880
  try {
60715
60881
  if (changedPkg) {
60716
- console.log("Restoring", pkgFile);
60882
+ if (!silent) {
60883
+ console.log("Restoring", pkgFile);
60884
+ }
60885
+
60717
60886
  await Fs.writeFile(pkgFile, pkgData);
60718
60887
  }
60719
60888
  } catch (_unused2) {}
@@ -60721,6 +60890,8 @@ exports.npmPublish = async function npmPublish() {
60721
60890
  try {
60722
60891
  process.chdir(saveDir);
60723
60892
  } catch (_unused3) {}
60893
+
60894
+ process.removeListener("SIGINT", noop);
60724
60895
  };
60725
60896
 
60726
60897
  try {
@@ -60760,11 +60931,15 @@ exports.npmPublish = async function npmPublish() {
60760
60931
  }
60761
60932
 
60762
60933
  if (!dryRun) {
60763
- const publishArgs = [`publish`].concat(tag, access, fullTgzFile);
60764
- console.log("publishing args:", publishArgs.join(" "));
60934
+ const publishArgs = [`publish`].concat(tag, access, fullTgzFile, argv);
60935
+
60936
+ if (!silent) {
60937
+ console.log("publishing args:", publishArgs.join(" "));
60938
+ }
60939
+
60765
60940
  await execa(`npm`, publishArgs, execaOpts);
60766
60941
  } else {
60767
- console.log(tgzFile);
60942
+ console.log("dry-run", tgzFile, "args:", [].concat(tag, access, argv));
60768
60943
  }
60769
60944
  } catch (err) {
60770
60945
  if (err.message.includes("SIGINT")) {
@@ -60777,13 +60952,18 @@ exports.npmPublish = async function npmPublish() {
60777
60952
  } finally {
60778
60953
  await restore();
60779
60954
  await removeFile(fullTgzFile);
60780
- process.exit(exitCode);
60955
+
60956
+ if (exit) {
60957
+ process.exit(exitCode);
60958
+ }
60781
60959
  }
60960
+
60961
+ return exitCode;
60782
60962
  };
60783
60963
 
60784
60964
  /***/ }),
60785
60965
 
60786
- /***/ "./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/postpack.js":
60966
+ /***/ "./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/postpack.js":
60787
60967
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
60788
60968
 
60789
60969
  "use strict";
@@ -60795,7 +60975,7 @@ const Fs = __webpack_require__("fs").promises;
60795
60975
 
60796
60976
  const {
60797
60977
  getInfo
60798
- } = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/utils.js");
60978
+ } = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/utils.js");
60799
60979
 
60800
60980
  exports.postPack = async function postPack() {
60801
60981
  const {
@@ -60817,7 +60997,7 @@ exports.postPack = async function postPack() {
60817
60997
 
60818
60998
  /***/ }),
60819
60999
 
60820
- /***/ "./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/prepack.js":
61000
+ /***/ "./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/prepack.js":
60821
61001
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
60822
61002
 
60823
61003
  "use strict";
@@ -60833,7 +61013,7 @@ const {
60833
61013
  removeFromObj,
60834
61014
  keepStandardFields,
60835
61015
  renameFromObj
60836
- } = __webpack_require__("./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/utils.js");
61016
+ } = __webpack_require__("./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/utils.js");
60837
61017
 
60838
61018
  const _ = __webpack_require__("./node_modules/.f/_/lodash/4.17.21/lodash/lodash.min.js");
60839
61019
 
@@ -60867,8 +61047,8 @@ function prePackObj(pkg, config = {}) {
60867
61047
  _.set(pkg, "scripts.postpack", "publish-util-postpack");
60868
61048
  }
60869
61049
 
60870
- if (pkg.scripts.prepublishOnly === "publish-util-prepublishonly" || pkg.scripts.prepublishOnly === "publish-util-prepack") {
60871
- delete pkg.scripts.prepublishOnly;
61050
+ if (pkg.scripts.prepack === "publish-util-prepack") {
61051
+ delete pkg.scripts.prepack;
60872
61052
  }
60873
61053
 
60874
61054
  if (keepObj) {
@@ -60905,7 +61085,7 @@ exports.prePack = async function prePack() {
60905
61085
 
60906
61086
  /***/ }),
60907
61087
 
60908
- /***/ "./node_modules/.f/_/publish-util/1.3.2/publish-util/lib/utils.js":
61088
+ /***/ "./node_modules/.f/_/publish-util/2.0.0/publish-util/lib/utils.js":
60909
61089
  /***/ ((__unused_webpack_module, exports, __webpack_require__) => {
60910
61090
 
60911
61091
  "use strict";
@@ -90701,7 +90881,7 @@ var done = function (warnings, errors) {
90701
90881
 
90702
90882
  /***/ }),
90703
90883
 
90704
- /***/ "./node_modules/.f/_/visual-exec/0.1.13/visual-exec/lib/get-default-logger.js":
90884
+ /***/ "./node_modules/.f/_/visual-exec/0.1.14/visual-exec/lib/get-default-logger.js":
90705
90885
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
90706
90886
 
90707
90887
  "use strict";
@@ -90732,7 +90912,7 @@ module.exports = getLogger;
90732
90912
 
90733
90913
  /***/ }),
90734
90914
 
90735
- /***/ "./node_modules/.f/_/visual-exec/0.1.13/visual-exec/lib/visual-exec.js":
90915
+ /***/ "./node_modules/.f/_/visual-exec/0.1.14/visual-exec/lib/visual-exec.js":
90736
90916
  /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
90737
90917
 
90738
90918
  "use strict";
@@ -90743,7 +90923,7 @@ const xsh = __webpack_require__("./node_modules/.f/_/xsh/0.4.5/xsh/lib/index.js"
90743
90923
 
90744
90924
  const chalk = __webpack_require__("./node_modules/.f/_/chalk/4.1.2/chalk/source/index.js");
90745
90925
 
90746
- const getDefaultLogger = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.13/visual-exec/lib/get-default-logger.js");
90926
+ const getDefaultLogger = __webpack_require__("./node_modules/.f/_/visual-exec/0.1.14/visual-exec/lib/get-default-logger.js");
90747
90927
 
90748
90928
  const VisualLogger = __webpack_require__("./node_modules/.f/_/visual-logger/1.1.3/visual-logger/lib/visual-logger.js");
90749
90929
 
@@ -90780,6 +90960,7 @@ class VisualExec {
90780
90960
  this._maxBuffer = maxBuffer;
90781
90961
  this._forceStderr = forceStderr;
90782
90962
  this._checkStdoutError = checkStdoutError === true ? /error|warn|fatal|unhandled|reject|exception|failure|fail|failed/i : checkStdoutError;
90963
+ this._startTime = Date.now();
90783
90964
  }
90784
90965
 
90785
90966
  _makeTitle(command) {
@@ -90897,7 +91078,10 @@ class VisualExec {
90897
91078
 
90898
91079
  output = err.output;
90899
91080
  } else {
90900
- this._logger.info(`Done ${this._logLabel} ${chalk.green("exit code 0")}`);
91081
+ const time = ((Date.now() - this._startTime) / 1000).toFixed(2);
91082
+ const dispTime = `${chalk.magenta(time)}secs`;
91083
+
91084
+ this._logger.info(`Done ${this._logLabel} ${dispTime} ${chalk.green("exit code 0")}`);
90901
91085
  }
90902
91086
 
90903
91087
  this.logFinalOutput(err, output);
@@ -90934,6 +91118,7 @@ class VisualExec {
90934
91118
  }
90935
91119
 
90936
91120
  execute(command) {
91121
+ this._startTime = Date.now();
90937
91122
  const child = xsh.exec({
90938
91123
  silent: true,
90939
91124
  cwd: this._cwd,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fyn",
3
- "version": "1.1.14",
3
+ "version": "1.1.18",
4
4
  "description": "A node package manager, fast, workspace, and better productivity and efficiency",
5
5
  "main": "./bin/fyn.js",
6
6
  "homepage": "https://www.electrode.io/fynpo/",
@@ -13,7 +13,7 @@
13
13
  "coverage": "xrun xarc/check",
14
14
  "ci:check": "xrun xarc/check",
15
15
  "coveralls": "cat coverage/lcov.info | coveralls",
16
- "prepublishOnly": "xrun xarc/check compile-yarn bundle && publish-util-prepublishonly",
16
+ "prepublishOnly": "xrun build",
17
17
  "postpack": "publish-util-postpack"
18
18
  },
19
19
  "bin": {