@expo/package-manager 0.0.57 → 0.0.59

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 (50) hide show
  1. package/README.md +3 -3
  2. package/build/PackageManager.d.ts +41 -9
  3. package/build/PackageManager.js +0 -31
  4. package/build/PackageManager.js.map +1 -1
  5. package/build/index.d.ts +6 -5
  6. package/build/index.js +8 -12
  7. package/build/index.js.map +1 -1
  8. package/build/{CocoaPodsPackageManager.d.ts → ios/CocoaPodsPackageManager.d.ts} +10 -7
  9. package/build/{CocoaPodsPackageManager.js → ios/CocoaPodsPackageManager.js} +27 -15
  10. package/build/ios/CocoaPodsPackageManager.js.map +1 -0
  11. package/build/node/BasePackageManager.d.ts +32 -0
  12. package/build/node/BasePackageManager.js +61 -0
  13. package/build/node/BasePackageManager.js.map +1 -0
  14. package/build/node/NpmPackageManager.d.ts +24 -0
  15. package/build/node/NpmPackageManager.js +115 -0
  16. package/build/node/NpmPackageManager.js.map +1 -0
  17. package/build/node/PnpmPackageManager.d.ts +14 -0
  18. package/build/node/PnpmPackageManager.js +64 -0
  19. package/build/node/PnpmPackageManager.js.map +1 -0
  20. package/build/node/YarnPackageManager.d.ts +16 -0
  21. package/build/node/YarnPackageManager.js +63 -0
  22. package/build/node/YarnPackageManager.js.map +1 -0
  23. package/build/utils/env.d.ts +6 -0
  24. package/build/utils/env.js +12 -0
  25. package/build/utils/env.js.map +1 -0
  26. package/build/utils/nodeManagers.d.ts +25 -0
  27. package/build/utils/nodeManagers.js +90 -0
  28. package/build/utils/nodeManagers.js.map +1 -0
  29. package/build/utils/nodeWorkspaces.d.ts +6 -31
  30. package/build/utils/nodeWorkspaces.js +29 -84
  31. package/build/utils/nodeWorkspaces.js.map +1 -1
  32. package/build/utils/spawn.d.ts +21 -0
  33. package/build/utils/spawn.js +57 -0
  34. package/build/utils/spawn.js.map +1 -0
  35. package/build/utils/yarn.d.ts +4 -0
  36. package/build/utils/{isYarnOfflineAsync.js → yarn.js} +19 -20
  37. package/build/utils/yarn.js.map +1 -0
  38. package/package.json +9 -6
  39. package/build/CocoaPodsPackageManager.js.map +0 -1
  40. package/build/NodePackageManagers.d.ts +0 -63
  41. package/build/NodePackageManagers.js +0 -297
  42. package/build/NodePackageManagers.js.map +0 -1
  43. package/build/PnpmPackageManager.d.ts +0 -30
  44. package/build/PnpmPackageManager.js +0 -121
  45. package/build/PnpmPackageManager.js.map +0 -1
  46. package/build/utils/isYarnOfflineAsync.d.ts +0 -5
  47. package/build/utils/isYarnOfflineAsync.js.map +0 -1
  48. package/build/utils/shouldUseYarn.d.ts +0 -1
  49. package/build/utils/shouldUseYarn.js +0 -21
  50. package/build/utils/shouldUseYarn.js.map +0 -1
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.PnpmPackageManager = void 0;
7
+ const env_1 = __importDefault(require("../utils/env"));
8
+ const nodeWorkspaces_1 = require("../utils/nodeWorkspaces");
9
+ const BasePackageManager_1 = require("./BasePackageManager");
10
+ class PnpmPackageManager extends BasePackageManager_1.BasePackageManager {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.name = 'pnpm';
14
+ this.bin = 'pnpm';
15
+ this.lockFile = nodeWorkspaces_1.PNPM_LOCK_FILE;
16
+ }
17
+ workspaceRoot() {
18
+ const root = (0, nodeWorkspaces_1.findPnpmWorkspaceRoot)(this.ensureCwdDefined('workspaceRoot'));
19
+ if (root) {
20
+ return new PnpmPackageManager({
21
+ ...this.options,
22
+ silent: this.silent,
23
+ log: this.log,
24
+ cwd: root,
25
+ });
26
+ }
27
+ return null;
28
+ }
29
+ installAsync(namesOrFlags = []) {
30
+ if (env_1.default.CI && !namesOrFlags.join(' ').includes('frozen-lockfile')) {
31
+ namesOrFlags.unshift('--no-frozen-lockfile');
32
+ }
33
+ return this.runAsync(['install', ...namesOrFlags]);
34
+ }
35
+ addAsync(namesOrFlags = []) {
36
+ if (!namesOrFlags.length) {
37
+ return this.installAsync();
38
+ }
39
+ return this.runAsync(['add', ...namesOrFlags]);
40
+ }
41
+ addDevAsync(namesOrFlags = []) {
42
+ if (!namesOrFlags.length) {
43
+ return this.installAsync();
44
+ }
45
+ return this.runAsync(['add', '--save-dev', ...namesOrFlags]);
46
+ }
47
+ addGlobalAsync(namesOrFlags = []) {
48
+ if (!namesOrFlags.length) {
49
+ return this.installAsync();
50
+ }
51
+ return this.runAsync(['add', '--global', ...namesOrFlags]);
52
+ }
53
+ removeAsync(namesOrFlags) {
54
+ return this.runAsync(['remove', ...namesOrFlags]);
55
+ }
56
+ removeDevAsync(namesOrFlags) {
57
+ return this.runAsync(['remove', '--save-dev', ...namesOrFlags]);
58
+ }
59
+ removeGlobalAsync(namesOrFlags) {
60
+ return this.runAsync(['remove', '--global', ...namesOrFlags]);
61
+ }
62
+ }
63
+ exports.PnpmPackageManager = PnpmPackageManager;
64
+ //# sourceMappingURL=PnpmPackageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PnpmPackageManager.js","sourceRoot":"","sources":["../../src/node/PnpmPackageManager.ts"],"names":[],"mappings":";;;;;;AAAA,uDAA+B;AAC/B,4DAAgF;AAChF,6DAA0D;AAE1D,MAAa,kBAAmB,SAAQ,uCAAkB;IAA1D;;QACW,SAAI,GAAG,MAAM,CAAC;QACd,QAAG,GAAG,MAAM,CAAC;QACb,aAAQ,GAAG,+BAAc,CAAC;IA2DrC,CAAC;IAzDC,aAAa;QACX,MAAM,IAAI,GAAG,IAAA,sCAAqB,EAAC,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;QAC3E,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,kBAAkB,CAAC;gBAC5B,GAAG,IAAI,CAAC,OAAO;gBACf,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,eAAyB,EAAE;QACtC,IAAI,aAAG,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;YACjE,YAAY,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;SAC9C;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,QAAQ,CAAC,eAAyB,EAAE;QAClC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC5B;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,eAAyB,EAAE;QACrC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC5B;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED,cAAc,CAAC,eAAyB,EAAE;QACxC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;YACxB,OAAO,IAAI,CAAC,YAAY,EAAE,CAAC;SAC5B;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,CAAC,YAAsB;QAChC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,cAAc,CAAC,YAAsB;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,iBAAiB,CAAC,YAAsB;QACtC,OAAO,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC;IAChE,CAAC;CACF;AA9DD,gDA8DC"}
@@ -0,0 +1,16 @@
1
+ import { BasePackageManager } from './BasePackageManager';
2
+ export declare class YarnPackageManager extends BasePackageManager {
3
+ readonly name = "yarn";
4
+ readonly bin = "yarnpkg";
5
+ readonly lockFile = "yarn.lock";
6
+ /** Check if Yarn is running in offline mode, and add the `--offline` flag */
7
+ private withOfflineFlagAsync;
8
+ workspaceRoot(): YarnPackageManager | null;
9
+ installAsync(flags?: string[]): import("../utils/spawn").PendingSpawnPromise<import("@expo/spawn-async").SpawnResult>;
10
+ addAsync(namesOrFlags?: string[]): import("../utils/spawn").PendingSpawnPromise<import("@expo/spawn-async").SpawnResult>;
11
+ addDevAsync(namesOrFlags?: string[]): import("../utils/spawn").PendingSpawnPromise<import("@expo/spawn-async").SpawnResult>;
12
+ addGlobalAsync(namesOrFlags?: string[]): import("../utils/spawn").PendingSpawnPromise<import("@expo/spawn-async").SpawnResult>;
13
+ removeAsync(namesOrFlags: string[]): import("@expo/spawn-async").SpawnPromise<import("@expo/spawn-async").SpawnResult>;
14
+ removeDevAsync(namesOrFlags: string[]): import("@expo/spawn-async").SpawnPromise<import("@expo/spawn-async").SpawnResult>;
15
+ removeGlobalAsync(namesOrFlags: string[]): import("@expo/spawn-async").SpawnPromise<import("@expo/spawn-async").SpawnResult>;
16
+ }
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YarnPackageManager = void 0;
4
+ const nodeWorkspaces_1 = require("../utils/nodeWorkspaces");
5
+ const spawn_1 = require("../utils/spawn");
6
+ const yarn_1 = require("../utils/yarn");
7
+ const BasePackageManager_1 = require("./BasePackageManager");
8
+ class YarnPackageManager extends BasePackageManager_1.BasePackageManager {
9
+ constructor() {
10
+ super(...arguments);
11
+ this.name = 'yarn';
12
+ this.bin = 'yarnpkg';
13
+ this.lockFile = nodeWorkspaces_1.YARN_LOCK_FILE;
14
+ }
15
+ /** Check if Yarn is running in offline mode, and add the `--offline` flag */
16
+ async withOfflineFlagAsync(namesOrFlags) {
17
+ return (await (0, yarn_1.isYarnOfflineAsync)()) ? [...namesOrFlags, '--offline'] : namesOrFlags;
18
+ }
19
+ workspaceRoot() {
20
+ const root = (0, nodeWorkspaces_1.findYarnOrNpmWorkspaceRoot)(this.ensureCwdDefined('workspaceRoot'));
21
+ if (root) {
22
+ return new YarnPackageManager({
23
+ ...this.options,
24
+ silent: this.silent,
25
+ log: this.log,
26
+ cwd: root,
27
+ });
28
+ }
29
+ return null;
30
+ }
31
+ installAsync(flags = []) {
32
+ return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['install']), (args) => this.runAsync([...args, ...flags]));
33
+ }
34
+ addAsync(namesOrFlags = []) {
35
+ if (!namesOrFlags.length) {
36
+ return this.installAsync();
37
+ }
38
+ return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['add', ...namesOrFlags]), (args) => this.runAsync(args));
39
+ }
40
+ addDevAsync(namesOrFlags = []) {
41
+ if (!namesOrFlags.length) {
42
+ return this.installAsync();
43
+ }
44
+ return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['add', '--dev', ...namesOrFlags]), (args) => this.runAsync(args));
45
+ }
46
+ addGlobalAsync(namesOrFlags = []) {
47
+ if (!namesOrFlags.length) {
48
+ return this.installAsync();
49
+ }
50
+ return (0, spawn_1.createPendingSpawnAsync)(() => this.withOfflineFlagAsync(['global', 'add', ...namesOrFlags]), (args) => this.runAsync(args));
51
+ }
52
+ removeAsync(namesOrFlags) {
53
+ return this.runAsync(['remove', ...namesOrFlags]);
54
+ }
55
+ removeDevAsync(namesOrFlags) {
56
+ return this.runAsync(['remove', ...namesOrFlags]);
57
+ }
58
+ removeGlobalAsync(namesOrFlags) {
59
+ return this.runAsync(['global', 'remove', ...namesOrFlags]);
60
+ }
61
+ }
62
+ exports.YarnPackageManager = YarnPackageManager;
63
+ //# sourceMappingURL=YarnPackageManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"YarnPackageManager.js","sourceRoot":"","sources":["../../src/node/YarnPackageManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ declare class Env {
2
+ /** Determine if the package manager is running in a CI environment. */
3
+ get CI(): boolean;
4
+ }
5
+ declare const _default: Env;
6
+ export default _default;
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class Env {
4
+ /** Determine if the package manager is running in a CI environment. */
5
+ get CI() {
6
+ // See: https://github.com/ctavan/node-getenv/blob/5b02feebde5d8edd56fff7d81c4b43403a20aff8/index.js#L63-L74
7
+ const { CI } = process.env;
8
+ return CI?.toLowerCase() === 'true' || CI === '1';
9
+ }
10
+ }
11
+ exports.default = new Env();
12
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":";;AAAA,MAAM,GAAG;IACP,uEAAuE;IACvE,IAAI,EAAE;QACJ,4GAA4G;QAC5G,MAAM,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC;QAC3B,OAAO,EAAE,EAAE,WAAW,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,GAAG,CAAC;IACpD,CAAC;CACF;AAED,kBAAe,IAAI,GAAG,EAAE,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { PackageManagerOptions } from '../PackageManager';
2
+ import { NpmPackageManager } from '../node/NpmPackageManager';
3
+ import { PnpmPackageManager } from '../node/PnpmPackageManager';
4
+ import { YarnPackageManager } from '../node/YarnPackageManager';
5
+ export type NodePackageManager = NpmPackageManager | PnpmPackageManager | YarnPackageManager;
6
+ export type NodePackageManagerForProject = PackageManagerOptions & Partial<Record<NodePackageManager['name'], boolean>>;
7
+ /** The order of the package managers to use when resolving automatically */
8
+ export declare const RESOLUTION_ORDER: NodePackageManager['name'][];
9
+ /**
10
+ * Resolve the workspace root for a project, if its part of a monorepo.
11
+ * Optionally, provide a specific packager to only resolve that one specifically.
12
+ */
13
+ export declare function findWorkspaceRoot(projectRoot: string, preferredManager?: NodePackageManager['name']): string | null;
14
+ /**
15
+ * Resolve the used node package manager for a project by checking the lockfile.
16
+ * This also tries to resolve the workspace root, if its part of a monorepo.
17
+ * Optionally, provide a preferred packager to only resolve that one specifically.
18
+ */
19
+ export declare function resolvePackageManager(projectRoot: string, preferredManager?: NodePackageManager['name']): NodePackageManager['name'] | null;
20
+ /**
21
+ * This creates a Node package manager from the provided options.
22
+ * If these options are not provided, it will infer the package manager from lockfiles.
23
+ * When no package manager is found, it falls back to npm.
24
+ */
25
+ export declare function createForProject(projectRoot: string, options?: NodePackageManagerForProject): NodePackageManager;
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createForProject = exports.resolvePackageManager = exports.findWorkspaceRoot = exports.RESOLUTION_ORDER = void 0;
7
+ const fs_1 = __importDefault(require("fs"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const NpmPackageManager_1 = require("../node/NpmPackageManager");
10
+ const PnpmPackageManager_1 = require("../node/PnpmPackageManager");
11
+ const YarnPackageManager_1 = require("../node/YarnPackageManager");
12
+ const nodeWorkspaces_1 = require("./nodeWorkspaces");
13
+ /** The order of the package managers to use when resolving automatically */
14
+ exports.RESOLUTION_ORDER = ['yarn', 'npm', 'pnpm'];
15
+ /**
16
+ * Resolve the workspace root for a project, if its part of a monorepo.
17
+ * Optionally, provide a specific packager to only resolve that one specifically.
18
+ */
19
+ function findWorkspaceRoot(projectRoot, preferredManager) {
20
+ const strategies = {
21
+ npm: nodeWorkspaces_1.findYarnOrNpmWorkspaceRoot,
22
+ yarn: nodeWorkspaces_1.findYarnOrNpmWorkspaceRoot,
23
+ pnpm: nodeWorkspaces_1.findPnpmWorkspaceRoot,
24
+ };
25
+ if (preferredManager) {
26
+ return strategies[preferredManager](projectRoot);
27
+ }
28
+ for (const strategy of exports.RESOLUTION_ORDER) {
29
+ const root = strategies[strategy](projectRoot);
30
+ if (root) {
31
+ return root;
32
+ }
33
+ }
34
+ return null;
35
+ }
36
+ exports.findWorkspaceRoot = findWorkspaceRoot;
37
+ /**
38
+ * Resolve the used node package manager for a project by checking the lockfile.
39
+ * This also tries to resolve the workspace root, if its part of a monorepo.
40
+ * Optionally, provide a preferred packager to only resolve that one specifically.
41
+ */
42
+ function resolvePackageManager(projectRoot, preferredManager) {
43
+ const root = findWorkspaceRoot(projectRoot, preferredManager) ?? projectRoot;
44
+ const lockFiles = {
45
+ npm: nodeWorkspaces_1.NPM_LOCK_FILE,
46
+ pnpm: nodeWorkspaces_1.PNPM_LOCK_FILE,
47
+ yarn: nodeWorkspaces_1.YARN_LOCK_FILE,
48
+ };
49
+ if (preferredManager) {
50
+ if (fs_1.default.existsSync(path_1.default.join(root, lockFiles[preferredManager]))) {
51
+ return preferredManager;
52
+ }
53
+ return null;
54
+ }
55
+ for (const managerName of exports.RESOLUTION_ORDER) {
56
+ if (fs_1.default.existsSync(path_1.default.join(root, lockFiles[managerName]))) {
57
+ return managerName;
58
+ }
59
+ }
60
+ return null;
61
+ }
62
+ exports.resolvePackageManager = resolvePackageManager;
63
+ /**
64
+ * This creates a Node package manager from the provided options.
65
+ * If these options are not provided, it will infer the package manager from lockfiles.
66
+ * When no package manager is found, it falls back to npm.
67
+ */
68
+ function createForProject(projectRoot, options = {}) {
69
+ if (options.npm) {
70
+ return new NpmPackageManager_1.NpmPackageManager({ cwd: projectRoot, ...options });
71
+ }
72
+ else if (options.yarn) {
73
+ return new YarnPackageManager_1.YarnPackageManager({ cwd: projectRoot, ...options });
74
+ }
75
+ else if (options.pnpm) {
76
+ return new PnpmPackageManager_1.PnpmPackageManager({ cwd: projectRoot, ...options });
77
+ }
78
+ switch (resolvePackageManager(projectRoot)) {
79
+ case 'npm':
80
+ return new NpmPackageManager_1.NpmPackageManager({ cwd: projectRoot, ...options });
81
+ case 'pnpm':
82
+ return new PnpmPackageManager_1.PnpmPackageManager({ cwd: projectRoot, ...options });
83
+ case 'yarn':
84
+ return new YarnPackageManager_1.YarnPackageManager({ cwd: projectRoot, ...options });
85
+ default:
86
+ return new NpmPackageManager_1.NpmPackageManager({ cwd: projectRoot, ...options });
87
+ }
88
+ }
89
+ exports.createForProject = createForProject;
90
+ //# sourceMappingURL=nodeManagers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeManagers.js","sourceRoot":"","sources":["../../src/utils/nodeManagers.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,12 @@
1
- import type { NodePackageManager } from '../NodePackageManagers';
2
1
  export declare const NPM_LOCK_FILE = "package-lock.json";
3
2
  export declare const YARN_LOCK_FILE = "yarn.lock";
4
3
  export declare const PNPM_LOCK_FILE = "pnpm-lock.yaml";
5
4
  export declare const PNPM_WORKSPACE_FILE = "pnpm-workspace.yaml";
6
- export declare const managerResolutionOrder: NodePackageManager[];
7
- /** Wraps `findYarnOrNpmWorkspaceRoot` and guards against having an empty `package.json` file in an upper directory. */
8
- export declare function findYarnOrNpmWorkspaceRootSafe(projectRoot: string): string | null;
5
+ /** Wraps `find-yarn-workspace-root` and guards against having an empty `package.json` file in an upper directory. */
6
+ export declare function findYarnOrNpmWorkspaceRoot(projectRoot: string): string | null;
9
7
  /**
10
- * Resolve the workspace root for a project, if its part of a monorepo.
11
- * Optionally, provide a specific packager to only resolve that one specifically.
12
- *
13
- * By default, this tries to resolve the workspaces in order of:
14
- * - npm
15
- * - yarn
16
- * - pnpm
8
+ * Find the `pnpm-workspace.yaml` file that represents the root of the monorepo.
9
+ * This is a synchronous function based on the original async library.
10
+ * @see https://github.com/pnpm/pnpm/blob/main/packages/find-workspace-dir/src/index.ts
17
11
  */
18
- export declare function findWorkspaceRoot(projectRoot: string, packageManager?: NodePackageManager): string | null;
19
- /**
20
- * Resolve the used node package manager for a project by checking the lockfile.
21
- * This also tries to resolve the workspace root, if its part of a monorepo.
22
- * Optionally, provide a specific packager to only resolve that one specifically.
23
- *
24
- * By default, this tries to resolve the workspaces in order of:
25
- * - npm
26
- * - yarn
27
- * - pnpm
28
- */
29
- export declare function resolvePackageManager(projectRoot: string, packageManager?: NodePackageManager): NodePackageManager | null;
30
- /**
31
- * Returns true if the project is using yarn, false if the project is using another package manager.
32
- */
33
- export declare function isUsingYarn(projectRoot: string): boolean;
34
- /**
35
- * Returns true if the project is using npm, false if the project is using another package manager.
36
- */
37
- export declare function isUsingNpm(projectRoot: string): boolean;
12
+ export declare function findPnpmWorkspaceRoot(projectRoot: string): string | null;
@@ -3,31 +3,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isUsingNpm = exports.isUsingYarn = exports.resolvePackageManager = exports.findWorkspaceRoot = exports.findYarnOrNpmWorkspaceRootSafe = exports.managerResolutionOrder = exports.PNPM_WORKSPACE_FILE = exports.PNPM_LOCK_FILE = exports.YARN_LOCK_FILE = exports.NPM_LOCK_FILE = void 0;
6
+ exports.findPnpmWorkspaceRoot = exports.findYarnOrNpmWorkspaceRoot = exports.PNPM_WORKSPACE_FILE = exports.PNPM_LOCK_FILE = exports.YARN_LOCK_FILE = exports.NPM_LOCK_FILE = void 0;
7
7
  const find_up_1 = require("find-up");
8
8
  const find_yarn_workspace_root_1 = __importDefault(require("find-yarn-workspace-root"));
9
- const fs_1 = require("fs");
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const js_yaml_1 = __importDefault(require("js-yaml"));
11
+ const micromatch_1 = __importDefault(require("micromatch"));
10
12
  const path_1 = __importDefault(require("path"));
11
13
  exports.NPM_LOCK_FILE = 'package-lock.json';
12
14
  exports.YARN_LOCK_FILE = 'yarn.lock';
13
15
  exports.PNPM_LOCK_FILE = 'pnpm-lock.yaml';
14
16
  exports.PNPM_WORKSPACE_FILE = 'pnpm-workspace.yaml';
15
- exports.managerResolutionOrder = ['yarn', 'npm', 'pnpm'];
16
- /**
17
- * Find the `pnpm-workspace.yaml` file that represents the root of the monorepo.
18
- * This is a synchronous function based on the original async library.
19
- * @see https://github.com/pnpm/pnpm/blob/main/packages/find-workspace-dir/src/index.ts
20
- */
21
- function findPnpmWorkspaceRoot(projectRoot) {
22
- const workspaceEnvName = 'NPM_CONFIG_WORKSPACE_DIR';
23
- const workspaceEnvValue = process.env[workspaceEnvName] ?? process.env[workspaceEnvName.toLowerCase()];
24
- const manifestLocation = workspaceEnvValue
25
- ? path_1.default.join(workspaceEnvValue, exports.PNPM_WORKSPACE_FILE)
26
- : (0, find_up_1.sync)(exports.PNPM_WORKSPACE_FILE, { cwd: projectRoot });
27
- return manifestLocation ? path_1.default.dirname(manifestLocation) : null;
28
- }
29
- /** Wraps `findYarnOrNpmWorkspaceRoot` and guards against having an empty `package.json` file in an upper directory. */
30
- function findYarnOrNpmWorkspaceRootSafe(projectRoot) {
17
+ /** Wraps `find-yarn-workspace-root` and guards against having an empty `package.json` file in an upper directory. */
18
+ function findYarnOrNpmWorkspaceRoot(projectRoot) {
31
19
  try {
32
20
  return (0, find_yarn_workspace_root_1.default)(projectRoot);
33
21
  }
@@ -38,79 +26,36 @@ function findYarnOrNpmWorkspaceRootSafe(projectRoot) {
38
26
  throw error;
39
27
  }
40
28
  }
41
- exports.findYarnOrNpmWorkspaceRootSafe = findYarnOrNpmWorkspaceRootSafe;
29
+ exports.findYarnOrNpmWorkspaceRoot = findYarnOrNpmWorkspaceRoot;
42
30
  /**
43
- * Resolve the workspace root for a project, if its part of a monorepo.
44
- * Optionally, provide a specific packager to only resolve that one specifically.
45
- *
46
- * By default, this tries to resolve the workspaces in order of:
47
- * - npm
48
- * - yarn
49
- * - pnpm
31
+ * Find the `pnpm-workspace.yaml` file that represents the root of the monorepo.
32
+ * This is a synchronous function based on the original async library.
33
+ * @see https://github.com/pnpm/pnpm/blob/main/packages/find-workspace-dir/src/index.ts
50
34
  */
51
- function findWorkspaceRoot(projectRoot, packageManager) {
52
- const strategies = {
53
- npm: findYarnOrNpmWorkspaceRootSafe,
54
- yarn: findYarnOrNpmWorkspaceRootSafe,
55
- pnpm: findPnpmWorkspaceRoot,
56
- };
57
- if (packageManager) {
58
- return strategies[packageManager](projectRoot);
35
+ function findPnpmWorkspaceRoot(projectRoot) {
36
+ const workspaceEnvName = 'NPM_CONFIG_WORKSPACE_DIR';
37
+ const workspaceEnvValue = process.env[workspaceEnvName] ?? process.env[workspaceEnvName.toLowerCase()];
38
+ const workspaceFile = workspaceEnvValue
39
+ ? path_1.default.join(workspaceEnvValue, exports.PNPM_WORKSPACE_FILE)
40
+ : (0, find_up_1.sync)(exports.PNPM_WORKSPACE_FILE, { cwd: projectRoot });
41
+ if (!workspaceFile || !fs_1.default.existsSync(workspaceFile)) {
42
+ return null;
59
43
  }
60
- for (const strategy of exports.managerResolutionOrder.map((name) => strategies[name])) {
61
- const root = strategy(projectRoot);
62
- if (root) {
63
- return root;
44
+ try {
45
+ // See: https://pnpm.io/pnpm-workspace_yaml
46
+ const { packages: workspaces } = js_yaml_1.default.load(fs_1.default.readFileSync(workspaceFile, 'utf8'));
47
+ // See: https://github.com/square/find-yarn-workspace-root/blob/11f6e31d3fa15a5bb7b7419f0091390e4c16204c/index.js#L26-L33
48
+ const workspaceRoot = path_1.default.dirname(workspaceFile);
49
+ const relativePath = path_1.default.relative(workspaceRoot, projectRoot);
50
+ if (relativePath === '' || (0, micromatch_1.default)([relativePath], workspaces).length > 0) {
51
+ return workspaceRoot;
64
52
  }
65
53
  }
66
- return null;
67
- }
68
- exports.findWorkspaceRoot = findWorkspaceRoot;
69
- /**
70
- * Resolve the used node package manager for a project by checking the lockfile.
71
- * This also tries to resolve the workspace root, if its part of a monorepo.
72
- * Optionally, provide a specific packager to only resolve that one specifically.
73
- *
74
- * By default, this tries to resolve the workspaces in order of:
75
- * - npm
76
- * - yarn
77
- * - pnpm
78
- */
79
- function resolvePackageManager(projectRoot, packageManager) {
80
- const workspaceRoot = findWorkspaceRoot(projectRoot, packageManager) || projectRoot;
81
- const lockfileNames = {
82
- npm: exports.NPM_LOCK_FILE,
83
- yarn: exports.YARN_LOCK_FILE,
84
- pnpm: exports.PNPM_LOCK_FILE,
85
- };
86
- if (packageManager) {
87
- const lockfilePath = path_1.default.join(workspaceRoot, lockfileNames[packageManager]);
88
- if ((0, fs_1.existsSync)(lockfilePath)) {
89
- return packageManager;
90
- }
54
+ catch {
55
+ // TODO: implement debug logger?
91
56
  return null;
92
57
  }
93
- for (const manager of exports.managerResolutionOrder) {
94
- const lockfilePath = path_1.default.join(workspaceRoot, lockfileNames[manager]);
95
- if ((0, fs_1.existsSync)(lockfilePath)) {
96
- return manager;
97
- }
98
- }
99
58
  return null;
100
59
  }
101
- exports.resolvePackageManager = resolvePackageManager;
102
- /**
103
- * Returns true if the project is using yarn, false if the project is using another package manager.
104
- */
105
- function isUsingYarn(projectRoot) {
106
- return !!resolvePackageManager(projectRoot, 'yarn');
107
- }
108
- exports.isUsingYarn = isUsingYarn;
109
- /**
110
- * Returns true if the project is using npm, false if the project is using another package manager.
111
- */
112
- function isUsingNpm(projectRoot) {
113
- return !!resolvePackageManager(projectRoot, 'npm');
114
- }
115
- exports.isUsingNpm = isUsingNpm;
60
+ exports.findPnpmWorkspaceRoot = findPnpmWorkspaceRoot;
116
61
  //# sourceMappingURL=nodeWorkspaces.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nodeWorkspaces.js","sourceRoot":"","sources":["../../src/utils/nodeWorkspaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodeWorkspaces.js","sourceRoot":"","sources":["../../src/utils/nodeWorkspaces.ts"],"names":[],"mappings":";;;;;;AAAA,qCAA6C;AAC7C,wFAAwE;AACxE,4CAAoB;AACpB,sDAA2B;AAC3B,4DAAoC;AACpC,gDAAwB;AAEX,QAAA,aAAa,GAAG,mBAAmB,CAAC;AACpC,QAAA,cAAc,GAAG,WAAW,CAAC;AAC7B,QAAA,cAAc,GAAG,gBAAgB,CAAC;AAClC,QAAA,mBAAmB,GAAG,qBAAqB,CAAC;AAEzD,qHAAqH;AACrH,SAAgB,0BAA0B,CAAC,WAAmB;IAC5D,IAAI;QACF,OAAO,IAAA,kCAAgC,EAAC,WAAW,CAAC,CAAC;KACtD;IAAC,OAAO,KAAU,EAAE;QACnB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;QACD,MAAM,KAAK,CAAC;KACb;AACH,CAAC;AATD,gEASC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB,CAAC,WAAmB;IACvD,MAAM,gBAAgB,GAAG,0BAA0B,CAAC;IACpD,MAAM,iBAAiB,GACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC,CAAC;IAE/E,MAAM,aAAa,GAAG,iBAAiB;QACrC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,2BAAmB,CAAC;QACnD,CAAC,CAAC,IAAA,cAAU,EAAC,2BAAmB,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC;IAE1D,IAAI,CAAC,aAAa,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;QACnD,OAAO,IAAI,CAAC;KACb;IAED,IAAI;QACF,2CAA2C;QAC3C,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,iBAAI,CAAC,IAAI,CAAC,YAAE,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC;QACnF,yHAAyH;QACzH,MAAM,aAAa,GAAG,cAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;QAE/D,IAAI,YAAY,KAAK,EAAE,IAAI,IAAA,oBAAU,EAAC,CAAC,YAAY,CAAC,EAAE,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5E,OAAO,aAAa,CAAC;SACtB;KACF;IAAC,MAAM;QACN,gCAAgC;QAChC,OAAO,IAAI,CAAC;KACb;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AA7BD,sDA6BC"}
@@ -0,0 +1,21 @@
1
+ import { SpawnOptions, SpawnPromise } from '@expo/spawn-async';
2
+ /**
3
+ * The pending spawn promise is similar to the spawn promise from `@expo/spawn-async`.
4
+ * Instead of the `child` process being available immediately, the `child` is behind another promise.
5
+ * We need this to perform async tasks before running the actual spawn promise.
6
+ * Use it like: `await manager.installAsync().child`
7
+ */
8
+ export interface PendingSpawnPromise<T> extends Promise<T> {
9
+ /**
10
+ * The child process from the delayed spawn.
11
+ * This is `null` whenever the promise before the spawn promise is rejected.
12
+ */
13
+ child: Promise<SpawnPromise<T>['child'] | null>;
14
+ }
15
+ export declare function createPendingSpawnAsync<V, T>(actionAsync: () => Promise<V>, spawnAsync: (result: V) => SpawnPromise<T>): PendingSpawnPromise<T>;
16
+ /**
17
+ * Spawn a command with sudo privileges.
18
+ * On windows, this uses the `sudo-prompt` package.
19
+ * on other systems, this uses the `sudo` binary.
20
+ */
21
+ export declare function spawnSudoAsync(command: string[], spawnOptions: SpawnOptions): Promise<void>;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.spawnSudoAsync = exports.createPendingSpawnAsync = void 0;
7
+ const spawn_async_1 = __importDefault(require("@expo/spawn-async"));
8
+ const sudo_prompt_1 = __importDefault(require("sudo-prompt"));
9
+ function createPendingSpawnAsync(actionAsync, spawnAsync) {
10
+ // Manually rsolve the child promise whenever the prepending async action is resolved.
11
+ // Avoid `childReject` to prevent "unhandled promise rejection" for one of the two promises.
12
+ let childResolve;
13
+ const child = new Promise((resolve, reject) => {
14
+ childResolve = resolve;
15
+ });
16
+ const pendingPromise = new Promise((spawnResolve, spawnReject) => {
17
+ actionAsync()
18
+ .then((result) => {
19
+ const spawnPromise = spawnAsync(result);
20
+ childResolve(spawnPromise.child);
21
+ spawnPromise.then(spawnResolve).catch(spawnReject);
22
+ })
23
+ .catch((error) => {
24
+ childResolve(null);
25
+ spawnReject(error);
26
+ });
27
+ });
28
+ pendingPromise.child = child;
29
+ return pendingPromise;
30
+ }
31
+ exports.createPendingSpawnAsync = createPendingSpawnAsync;
32
+ /**
33
+ * Spawn a command with sudo privileges.
34
+ * On windows, this uses the `sudo-prompt` package.
35
+ * on other systems, this uses the `sudo` binary.
36
+ */
37
+ async function spawnSudoAsync(command, spawnOptions) {
38
+ // sudo prompt only seems to work on win32 machines.
39
+ if (process.platform === 'win32') {
40
+ return new Promise((resolve, reject) => {
41
+ sudo_prompt_1.default.exec(command.join(' '), { name: 'pod install' }, (error) => {
42
+ if (error) {
43
+ reject(error);
44
+ }
45
+ resolve();
46
+ });
47
+ });
48
+ }
49
+ else {
50
+ // Attempt to use sudo to run the command on Mac and Linux.
51
+ // TODO(Bacon): Make a v of sudo-prompt that's win32 only for better bundle size.
52
+ console.log('Your password might be needed to install CocoaPods CLI: https://guides.cocoapods.org/using/getting-started.html#installation');
53
+ await (0, spawn_async_1.default)('sudo', command, spawnOptions);
54
+ }
55
+ }
56
+ exports.spawnSudoAsync = spawnSudoAsync;
57
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/utils/spawn.ts"],"names":[],"mappings":";;;;;;AAAA,oEAA2E;AAC3E,8DAA+B;AAgB/B,SAAgB,uBAAuB,CACrC,WAA6B,EAC7B,UAA0C;IAE1C,sFAAsF;IACtF,4FAA4F;IAC5F,IAAI,YAA8D,CAAC;IACnE,MAAM,KAAK,GAA6C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACtF,YAAY,GAAG,OAAO,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,OAAO,CAAI,CAAC,YAAY,EAAE,WAAW,EAAE,EAAE;QAClE,WAAW,EAAE;aACV,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACxC,YAAY,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACrD,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,YAAY,CAAC,IAAI,CAAC,CAAC;YACnB,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEF,cAAyC,CAAC,KAAK,GAAG,KAAK,CAAC;IACzD,OAAO,cAAwC,CAAC;AAClD,CAAC;AA1BD,0DA0BC;AAED;;;;GAIG;AACI,KAAK,UAAU,cAAc,CAAC,OAAiB,EAAE,YAA0B;IAChF,oDAAoD;IACpD,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,qBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC,KAAK,EAAE,EAAE;gBAC9D,IAAI,KAAK,EAAE;oBACT,MAAM,CAAC,KAAK,CAAC,CAAC;iBACf;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;KACJ;SAAM;QACL,2DAA2D;QAC3D,iFAAiF;QACjF,OAAO,CAAC,GAAG,CACT,8HAA8H,CAC/H,CAAC;QACF,MAAM,IAAA,qBAAU,EAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;KACjD;AACH,CAAC;AAnBD,wCAmBC"}
@@ -0,0 +1,4 @@
1
+ /** Determine if you should use yarn offline or not */
2
+ export declare function isYarnOfflineAsync(): Promise<boolean>;
3
+ /** Exposed for testing */
4
+ export declare function getNpmProxy(): string | null;