@ethlete/cli 2.1.0-next.9 → 3.0.0-next.16

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 (107) hide show
  1. package/CHANGELOG.md +78 -0
  2. package/README.md +22 -7
  3. package/design/define-call.ts +8 -8
  4. package/design/web/frame.ts +11 -5
  5. package/design/web/host.css +4 -4
  6. package/design/web/host.ts +68 -68
  7. package/package.json +3 -3
  8. package/src/index.d.ts +1 -0
  9. package/src/index.js +18 -4
  10. package/src/index.js.map +1 -1
  11. package/src/lib/api/clear.js +13 -3
  12. package/src/lib/api/clear.js.map +1 -1
  13. package/src/lib/api/compose.js +5 -1
  14. package/src/lib/api/compose.js.map +1 -1
  15. package/src/lib/api/git.d.ts +11 -4
  16. package/src/lib/api/git.js +35 -8
  17. package/src/lib/api/git.js.map +1 -1
  18. package/src/lib/api/load-definitions.js +10 -1
  19. package/src/lib/api/load-definitions.js.map +1 -1
  20. package/src/lib/api/ports.js +12 -3
  21. package/src/lib/api/ports.js.map +1 -1
  22. package/src/lib/api/run.js +8 -3
  23. package/src/lib/api/run.js.map +1 -1
  24. package/src/lib/api/setup.js +1 -1
  25. package/src/lib/api/setup.js.map +1 -1
  26. package/src/lib/api/state.js +7 -5
  27. package/src/lib/api/state.js.map +1 -1
  28. package/src/lib/auth/composer-auth.js +3 -2
  29. package/src/lib/auth/composer-auth.js.map +1 -1
  30. package/src/lib/auth/gitlab-token.js +1 -1
  31. package/src/lib/auth/gitlab-token.js.map +1 -1
  32. package/src/lib/config/diagnose.js +15 -9
  33. package/src/lib/config/diagnose.js.map +1 -1
  34. package/src/lib/config/local-config.d.ts +1 -1
  35. package/src/lib/design/check.js +27 -16
  36. package/src/lib/design/check.js.map +1 -1
  37. package/src/lib/design/serve.js +5 -5
  38. package/src/lib/design/serve.js.map +1 -1
  39. package/src/lib/design/vite-paths.d.ts +7 -0
  40. package/src/lib/design/vite-paths.js +15 -0
  41. package/src/lib/design/vite-paths.js.map +1 -0
  42. package/src/lib/doctor/doctor-command.js +18 -4
  43. package/src/lib/doctor/doctor-command.js.map +1 -1
  44. package/src/lib/release.d.ts +38 -1
  45. package/src/lib/release.js +150 -43
  46. package/src/lib/release.js.map +1 -1
  47. package/src/lib/update/agent-rules-sync.d.ts +37 -0
  48. package/src/lib/update/agent-rules-sync.js +40 -0
  49. package/src/lib/update/agent-rules-sync.js.map +1 -0
  50. package/src/lib/update/agent-setup.d.ts +33 -0
  51. package/src/lib/update/agent-setup.js +124 -0
  52. package/src/lib/update/agent-setup.js.map +1 -0
  53. package/src/lib/update/ai.d.ts +37 -8
  54. package/src/lib/update/ai.js +193 -24
  55. package/src/lib/update/ai.js.map +1 -1
  56. package/src/lib/update/args.d.ts +2 -0
  57. package/src/lib/update/args.js +22 -2
  58. package/src/lib/update/args.js.map +1 -1
  59. package/src/lib/update/available-migrations.d.ts +10 -0
  60. package/src/lib/update/available-migrations.js +23 -0
  61. package/src/lib/update/available-migrations.js.map +1 -0
  62. package/src/lib/update/commits.d.ts +63 -0
  63. package/src/lib/update/commits.js +146 -0
  64. package/src/lib/update/commits.js.map +1 -0
  65. package/src/lib/update/gitignore.d.ts +8 -0
  66. package/src/lib/update/gitignore.js +22 -0
  67. package/src/lib/update/gitignore.js.map +1 -0
  68. package/src/lib/update/index.d.ts +6 -0
  69. package/src/lib/update/index.js +6 -0
  70. package/src/lib/update/index.js.map +1 -1
  71. package/src/lib/update/migration-manifest.d.ts +10 -0
  72. package/src/lib/update/migration-manifest.js +15 -3
  73. package/src/lib/update/migration-manifest.js.map +1 -1
  74. package/src/lib/update/migration-record.d.ts +24 -0
  75. package/src/lib/update/migration-record.js +48 -0
  76. package/src/lib/update/migration-record.js.map +1 -0
  77. package/src/lib/update/migrations-command.d.ts +14 -0
  78. package/src/lib/update/migrations-command.js +212 -0
  79. package/src/lib/update/migrations-command.js.map +1 -0
  80. package/src/lib/update/package-manager.d.ts +20 -1
  81. package/src/lib/update/package-manager.js +34 -15
  82. package/src/lib/update/package-manager.js.map +1 -1
  83. package/src/lib/update/packages.js +31 -9
  84. package/src/lib/update/packages.js.map +1 -1
  85. package/src/lib/update/pending.d.ts +16 -0
  86. package/src/lib/update/pending.js +21 -5
  87. package/src/lib/update/pending.js.map +1 -1
  88. package/src/lib/update/plan.d.ts +28 -2
  89. package/src/lib/update/plan.js +54 -3
  90. package/src/lib/update/plan.js.map +1 -1
  91. package/src/lib/update/registry.d.ts +32 -4
  92. package/src/lib/update/registry.js +145 -8
  93. package/src/lib/update/registry.js.map +1 -1
  94. package/src/lib/update/run-migrations.d.ts +2 -0
  95. package/src/lib/update/run-migrations.js +20 -15
  96. package/src/lib/update/run-migrations.js.map +1 -1
  97. package/src/lib/update/scan.d.ts +14 -0
  98. package/src/lib/update/scan.js +57 -0
  99. package/src/lib/update/scan.js.map +1 -0
  100. package/src/lib/update/semver.js +2 -1
  101. package/src/lib/update/semver.js.map +1 -1
  102. package/src/lib/update/tasks.d.ts +18 -1
  103. package/src/lib/update/tasks.js +114 -43
  104. package/src/lib/update/tasks.js.map +1 -1
  105. package/src/lib/update/update-command.d.ts +7 -0
  106. package/src/lib/update/update-command.js +286 -64
  107. package/src/lib/update/update-command.js.map +1 -1
@@ -1,5 +1,6 @@
1
1
  import { DeclaredPackage, DeclaredSite, RangeWrite } from './packages';
2
2
  import { Migration, PackageMigrations } from './migration-manifest';
3
+ import { MigrationRecord } from './migration-record';
3
4
  import { RegistryPackage } from './registry';
4
5
  export type UpdatedPackage = {
5
6
  name: string;
@@ -34,6 +35,18 @@ export declare const chooseTarget: (options: {
34
35
  registry: RegistryPackage;
35
36
  request?: TargetRequest;
36
37
  }) => TargetChoice;
38
+ export type NewerMajor = {
39
+ name: string;
40
+ tag: string;
41
+ version: string;
42
+ };
43
+ export declare const newerMajorOnTag: (options: {
44
+ name: string;
45
+ version: string;
46
+ distTags: Record<string, string>;
47
+ }) => NewerMajor | undefined;
48
+ export declare const MIGRATING_FROM_V4_URL = "https://ethlete-sdk-docs-next.web.app/migrating-from-v4";
49
+ export declare const newerMajorLine: (newer: NewerMajor) => string;
37
50
  export declare const isDowngrade: (update: PackageUpdate) => boolean;
38
51
  export type PendingMigration = {
39
52
  packageName: string;
@@ -41,11 +54,24 @@ export type PendingMigration = {
41
54
  /** Where the instructions of this migration live, when it names any. */
42
55
  manifestPath?: string;
43
56
  };
44
- /** The migrations of one package that an update from `from` to `to` crosses. */
57
+ /** The required migrations of one package that an update from `from` to `to` crosses. */
45
58
  export declare const pendingMigrations: (options: {
46
59
  packageMigrations: PackageMigrations;
47
60
  from: string;
48
61
  to: string;
49
62
  }) => PendingMigration[];
63
+ /**
64
+ * The recommended and optional migrations of one package that the installed version has reached and the
65
+ * record holds no run of.
66
+ */
67
+ export declare const availableMigrations: (options: {
68
+ packageMigrations: PackageMigrations;
69
+ installed: string;
70
+ record: MigrationRecord;
71
+ }) => PendingMigration[];
72
+ /** The sentence that points at the migrations `et update` did not run, or `undefined` when there are none. */
73
+ export declare const availableMigrationsLine: (available: readonly PendingMigration[]) => string | undefined;
50
74
  /** Oldest version first, and inside one version the package that others build on first. */
51
- export declare const orderMigrations: (pending: readonly PendingMigration[]) => PendingMigration[];
75
+ export declare const orderMigrations: <T extends PendingMigration>(pending: readonly T[]) => T[];
76
+ /** Recommended before optional, and inside one level in the order `et update` runs migrations. */
77
+ export declare const orderAvailableMigrations: <T extends PendingMigration>(available: readonly T[]) => T[];
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.orderMigrations = exports.pendingMigrations = exports.isDowngrade = exports.chooseTarget = void 0;
3
+ exports.orderAvailableMigrations = exports.orderMigrations = exports.availableMigrationsLine = exports.availableMigrations = exports.pendingMigrations = exports.isDowngrade = exports.newerMajorLine = exports.MIGRATING_FROM_V4_URL = exports.newerMajorOnTag = exports.chooseTarget = void 0;
4
4
  const packages_1 = require("./packages");
5
+ const migration_record_1 = require("./migration-record");
5
6
  const registry_1 = require("./registry");
6
7
  const semver_1 = require("./semver");
8
+ const tasks_1 = require("./tasks");
7
9
  /**
8
10
  * The order two migrations of the same version run in, following the dependency layering: a rewrite in
9
11
  * `core` lands before the `components` one that builds on it.
@@ -72,10 +74,22 @@ const chooseTarget = (options) => {
72
74
  };
73
75
  };
74
76
  exports.chooseTarget = chooseTarget;
77
+ const majorOf = (version) => { var _a; return Number.parseInt((_a = version.split('.')[0]) !== null && _a !== void 0 ? _a : '', 10) || 0; };
78
+ const newerMajorOnTag = (options) => {
79
+ const { name, version, distTags } = options;
80
+ const major = majorOf(version);
81
+ return Object.entries(distTags)
82
+ .filter(([, tagged]) => (0, semver_1.isValidVersion)(tagged) && majorOf(tagged) > major)
83
+ .reduce((newest, [tag, tagged]) => newest === undefined || (0, semver_1.compareVersions)(tagged, newest.version) > 0 ? { name, tag, version: tagged } : newest, undefined);
84
+ };
85
+ exports.newerMajorOnTag = newerMajorOnTag;
86
+ exports.MIGRATING_FROM_V4_URL = `${tasks_1.NEXT_DOCS_BASE_URL}/migrating-from-v4`;
87
+ const newerMajorLine = (newer) => `${newer.name}: a newer major is on "${newer.tag}": ${newer.version} - run et update --tag ${newer.tag}. ` +
88
+ `The order of the move is in ${exports.MIGRATING_FROM_V4_URL}`;
89
+ exports.newerMajorLine = newerMajorLine;
75
90
  const isDowngrade = (update) => update.from !== undefined && !(0, semver_1.isNewer)(update.to, update.from);
76
91
  exports.isDowngrade = isDowngrade;
77
- /** The migrations of one package that an update from `from` to `to` crosses. */
78
- const pendingMigrations = (options) => {
92
+ const migrationsInRange = (options) => {
79
93
  const { packageMigrations, from, to } = options;
80
94
  return packageMigrations.migrations
81
95
  .filter((migration) => (0, semver_1.isInUpdateRange)({ version: migration.version, after: from, upTo: to }))
@@ -85,7 +99,38 @@ const pendingMigrations = (options) => {
85
99
  manifestPath: packageMigrations.manifestPath,
86
100
  }));
87
101
  };
102
+ /** The required migrations of one package that an update from `from` to `to` crosses. */
103
+ const pendingMigrations = (options) => migrationsInRange(options).filter((entry) => entry.migration.level === 'required');
88
104
  exports.pendingMigrations = pendingMigrations;
105
+ /**
106
+ * The recommended and optional migrations of one package that the installed version has reached and the
107
+ * record holds no run of.
108
+ */
109
+ const availableMigrations = (options) => {
110
+ const { packageMigrations, installed, record } = options;
111
+ const { packageName, manifestPath } = packageMigrations;
112
+ return packageMigrations.migrations
113
+ .filter((migration) => migration.level !== 'required' &&
114
+ (0, semver_1.compareVersions)(migration.version, installed) <= 0 &&
115
+ record[(0, migration_record_1.migrationKey)({ packageName, name: migration.name })] === undefined)
116
+ .map((migration) => ({ packageName, migration, manifestPath }));
117
+ };
118
+ exports.availableMigrations = availableMigrations;
119
+ /** The sentence that points at the migrations `et update` did not run, or `undefined` when there are none. */
120
+ const availableMigrationsLine = (available) => {
121
+ const count = (level) => available.filter((entry) => entry.migration.level === level).length;
122
+ const parts = [
123
+ { count: count('recommended'), label: 'recommended' },
124
+ { count: count('optional'), label: 'optional' },
125
+ ]
126
+ .filter((part) => part.count > 0)
127
+ .map((part) => `${part.count} ${part.label}`);
128
+ if (parts.length === 0)
129
+ return undefined;
130
+ const total = available.length;
131
+ return `${parts.join(' and ')} migration${total === 1 ? ' is' : 's are'} available - run et migrations`;
132
+ };
133
+ exports.availableMigrationsLine = availableMigrationsLine;
89
134
  const packageRank = (name) => {
90
135
  const index = PACKAGE_ORDER.indexOf(name);
91
136
  return index === -1 ? PACKAGE_ORDER.length : index;
@@ -98,4 +143,10 @@ const orderMigrations = (pending) => [...pending].sort((left, right) => {
98
143
  return packageRank(left.packageName) - packageRank(right.packageName);
99
144
  });
100
145
  exports.orderMigrations = orderMigrations;
146
+ /** Recommended before optional, and inside one level in the order `et update` runs migrations. */
147
+ const orderAvailableMigrations = (available) => [
148
+ ...(0, exports.orderMigrations)(available.filter((entry) => entry.migration.level === 'recommended')),
149
+ ...(0, exports.orderMigrations)(available.filter((entry) => entry.migration.level !== 'recommended')),
150
+ ];
151
+ exports.orderAvailableMigrations = orderAvailableMigrations;
101
152
  //# sourceMappingURL=plan.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/plan.ts"],"names":[],"mappings":";;;AAAA,yCAAwG;AAExG,yCAA8D;AAC9D,qCAAqF;AAErF;;;GAGG;AACH,MAAM,aAAa,GAAG;IACpB,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;IACzB,cAAc;IACd,wBAAwB;IACxB,sBAAsB;IACtB,cAAc;CACf,CAAC;AA2BF,uGAAuG;AAChG,MAAM,YAAY,GAAG,CAAC,OAI5B,EAAgB,EAAE;;IACjB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC;IACrD,MAAM,OAAO,GAAG,MAAA,QAAQ,CAAC,gBAAgB,mCAAI,IAAA,gCAAqB,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEnF,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAClC,IAAI,CAAC,IAAA,uBAAc,EAAC,OAAO,CAAC,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,IAAI,OAAO,CAAC,OAAO,qBAAqB,EAAE,CAAC;QAEnG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACjD,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,0BAA0B,EAAE,CAAC;QACpF,CAAC;IACH,CAAC;IAED,MAAM,GAAG,GACP,OAAO,CAAC,OAAO,KAAK,SAAS;QAC3B,CAAC,CAAC,CAAC,MAAA,OAAO,CAAC,GAAG,mCAAI,IAAA,0BAAe,EAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrF,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,EAAE,GAAG,MAAA,OAAO,CAAC,OAAO,mCAAI,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IAEvF,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;QACrB,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,YAAY,GAAG,4BAA4B,EAAE,CAAC;IAClF,CAAC;IAED,IAAI,OAAO,KAAK,SAAS,IAAI,IAAA,wBAAe,EAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAE3F,kGAAkG;IAClG,kGAAkG;IAClG,6EAA6E;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,CAAC;IAE/E,IAAI,WAAW,IAAI,OAAO,KAAK,SAAS,IAAI,IAAA,wBAAe,EAAC,EAAE,EAAE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7E,OAAO;YACL,OAAO,EACL,GAAG,QAAQ,CAAC,IAAI,UAAU,GAAG,mBAAmB,EAAE,6BAA6B,OAAO,oBAAoB;gBAC1G,iCAAiC,EAAE,6BAA6B;SACnE,CAAC;IACJ,CAAC;IAED,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,UAAU,GAAmB,EAAE,CAAC;IAEtC,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,KAAK,GAAG,IAAA,mBAAQ,EAAC,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAE7D,IAAI,KAAK,KAAK,SAAS;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;YAC1C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IACvG,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,IAAI,EAAE,QAAQ,CAAC,gBAAgB;YAC/B,EAAE;YACF,GAAG;YACH,MAAM;YACN,UAAU;SACX;KACF,CAAC;AACJ,CAAC,CAAC;AA7DW,QAAA,YAAY,gBA6DvB;AAEK,MAAM,WAAW,GAAG,CAAC,MAAqB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAA,gBAAO,EAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AAAvG,QAAA,WAAW,eAA4F;AASpH,gFAAgF;AACzE,MAAM,iBAAiB,GAAG,CAAC,OAIjC,EAAsB,EAAE;IACvB,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IAEhD,OAAO,iBAAiB,CAAC,UAAU;SAChC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,IAAA,wBAAe,EAAC,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;SAC7F,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACnB,WAAW,EAAE,iBAAiB,CAAC,WAAW;QAC1C,SAAS;QACT,YAAY,EAAE,iBAAiB,CAAC,YAAY;KAC7C,CAAC,CAAC,CAAC;AACR,CAAC,CAAC;AAdW,QAAA,iBAAiB,qBAc5B;AAEF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;IACnC,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;AACrD,CAAC,CAAC;AAEF,2FAA2F;AACpF,MAAM,eAAe,GAAG,CAAC,OAAoC,EAAE,EAAE,CACtE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;IAChC,MAAM,SAAS,GAAG,IAAA,wBAAe,EAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAEnF,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAEtC,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;AACxE,CAAC,CAAC,CAAC;AAPQ,QAAA,eAAe,mBAOvB"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/plan.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { PackageManagerName } from './package-manager';
1
2
  export declare const DEFAULT_REGISTRY = "https://registry.npmjs.org";
2
3
  export type RegistryPackage = {
3
4
  distTags: Record<string, string>;
@@ -10,8 +11,31 @@ export type RegistryLookup = {
10
11
  ok: false;
11
12
  reason: string;
12
13
  };
13
- /** The registry npm would use, so a run inside a repo with its own registry reads the same one. */
14
- export declare const registryUrl: (env?: NodeJS.ProcessEnv) => string;
14
+ /**
15
+ * The registry the repo's package manager installs `@ethlete/*` from: the repo's `.npmrc`, `.yarnrc` or
16
+ * `.yarnrc.yml` first, since yarn 1 exports its default registry to scripts even when an `.npmrc` sets
17
+ * another one, then the environment, then the public registry.
18
+ */
19
+ export declare const registryUrl: (options?: {
20
+ root?: string;
21
+ manager?: PackageManagerName;
22
+ env?: NodeJS.ProcessEnv;
23
+ home?: string;
24
+ }) => string;
25
+ /**
26
+ * The `Authorization` header npm would send to `registry`, from the `//host/path/:_authToken` or
27
+ * `:_auth` entries of the repo's and the user's `.npmrc`, with `${VAR}` expanded. The longest matching
28
+ * path wins.
29
+ */
30
+ export declare const registryAuthorization: (options: RegistryAuthorizationOptions) => string | undefined;
31
+ /** The `.npmrc` the token for a registry was read from, or `undefined` when neither holds one. */
32
+ export declare const registryAuthorizationSource: (options: RegistryAuthorizationOptions) => string | undefined;
33
+ type RegistryAuthorizationOptions = {
34
+ registry: string;
35
+ root?: string;
36
+ env?: NodeJS.ProcessEnv;
37
+ home?: string;
38
+ };
15
39
  export declare const packageUrl: (options: {
16
40
  registry: string;
17
41
  packageName: string;
@@ -20,12 +44,16 @@ export declare const packageUrl: (options: {
20
44
  export declare const fetchRegistryPackage: (options: {
21
45
  packageName: string;
22
46
  registry?: string;
47
+ authorization?: string;
48
+ /** Where `authorization` was read from, named in the reason of a 401 or 403. */
49
+ authorizationSource?: string;
23
50
  }) => Promise<RegistryLookup>;
24
51
  /**
25
- * Which dist tag an update follows when the caller names none: the one the installed prerelease belongs
26
- * to, so a repo on `-next.46` stays on `next` instead of being pulled back to the stable line.
52
+ * The dist tag an update follows: for a prerelease, the tag holding the newest version of the same prerelease
53
+ * line, which is not always the tag named after it.
27
54
  */
28
55
  export declare const tagForInstalled: (options: {
29
56
  version?: string;
30
57
  distTags: Record<string, string>;
31
58
  }) => string;
59
+ export {};
@@ -1,23 +1,149 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tagForInstalled = exports.fetchRegistryPackage = exports.packageUrl = exports.registryUrl = exports.DEFAULT_REGISTRY = void 0;
3
+ exports.tagForInstalled = exports.fetchRegistryPackage = exports.packageUrl = exports.registryAuthorizationSource = exports.registryAuthorization = exports.registryUrl = exports.DEFAULT_REGISTRY = void 0;
4
4
  const tslib_1 = require("tslib");
5
+ const fs_1 = require("fs");
6
+ const os_1 = require("os");
7
+ const path_1 = require("path");
5
8
  const semver_1 = require("./semver");
6
9
  const TIMEOUT_MS = 15000;
7
10
  exports.DEFAULT_REGISTRY = 'https://registry.npmjs.org';
8
- /** The registry npm would use, so a run inside a repo with its own registry reads the same one. */
9
- const registryUrl = (env = process.env) => { var _a, _b; return ((_b = (_a = env['npm_config_@ethlete:registry']) !== null && _a !== void 0 ? _a : env['npm_config_registry']) !== null && _b !== void 0 ? _b : exports.DEFAULT_REGISTRY).replace(/\/+$/, ''); };
11
+ const SCOPE = '@ethlete';
12
+ const unquote = (value) => value.trim().replace(/^(["'])(.*)\1$/, '$2');
13
+ const readText = (path) => ((0, fs_1.existsSync)(path) ? (0, fs_1.readFileSync)(path, 'utf8') : undefined);
14
+ const configLines = (text) => text.split(/\r?\n/).filter((line) => line.trim() !== '' && !/^\s*[#;]/.test(line));
15
+ const expandEnv = (value, env) => value.replace(/\$\{([^}]+)\}/g, (_, name) => { var _a; return (_a = env[name]) !== null && _a !== void 0 ? _a : ''; });
16
+ const npmrcEntries = (text, env) => configLines(text).flatMap((line) => {
17
+ const separator = line.indexOf('=');
18
+ if (separator < 0)
19
+ return [];
20
+ return [{ key: line.slice(0, separator).trim(), value: expandEnv(unquote(line.slice(separator + 1)), env) }];
21
+ });
22
+ const readNpmrc = (text, env) => {
23
+ const config = {};
24
+ for (const { key, value } of npmrcEntries(text, env)) {
25
+ if (key === `${SCOPE}:registry`)
26
+ config.scoped = value;
27
+ if (key === 'registry')
28
+ config.registry = value;
29
+ }
30
+ return config;
31
+ };
32
+ const readYarnrc = (text) => {
33
+ const config = {};
34
+ for (const line of configLines(text)) {
35
+ const match = /^\s*("[^"]+"|\S+)\s+(.+)$/.exec(line);
36
+ if (!match)
37
+ continue;
38
+ const key = unquote(match[1]);
39
+ const value = unquote(match[2]);
40
+ if (key === `${SCOPE}:registry`)
41
+ config.scoped = value;
42
+ if (key === 'registry')
43
+ config.registry = value;
44
+ }
45
+ return config;
46
+ };
47
+ const readYarnrcYml = (text) => {
48
+ var _a, _b;
49
+ const config = {};
50
+ const path = [];
51
+ for (const line of configLines(text)) {
52
+ const match = /^(\s*)([^:\s]+)\s*:\s*(.*)$/.exec(line);
53
+ if (!match)
54
+ continue;
55
+ const indent = match[1].length;
56
+ const key = unquote(match[2]);
57
+ const value = unquote(match[3]);
58
+ while (((_b = (_a = path[path.length - 1]) === null || _a === void 0 ? void 0 : _a.indent) !== null && _b !== void 0 ? _b : -1) >= indent)
59
+ path.pop();
60
+ const keys = [...path.map((entry) => entry.key), key].join('.');
61
+ if (value === '')
62
+ path.push({ indent, key });
63
+ else if (keys === 'npmRegistryServer')
64
+ config.registry = value;
65
+ else if (keys === `npmScopes.${SCOPE.slice(1)}.npmRegistryServer`)
66
+ config.scoped = value;
67
+ }
68
+ return config;
69
+ };
70
+ const userNpmrcPath = (home) => (0, path_1.join)(home, '.npmrc');
71
+ /** The registry settings of a repo's config files, then the user's `.npmrc`, in the order its package manager reads them. */
72
+ const projectRegistryConfig = (options) => {
73
+ var _a, _b;
74
+ const { root, manager, env, home } = options;
75
+ const npmrc = readText((0, path_1.join)(root, '.npmrc'));
76
+ const userNpmrc = readText(userNpmrcPath(home));
77
+ const sources = [];
78
+ if (manager === 'yarn') {
79
+ const berry = readText((0, path_1.join)(root, '.yarnrc.yml'));
80
+ if (berry !== undefined)
81
+ return readYarnrcYml(berry);
82
+ const classic = readText((0, path_1.join)(root, '.yarnrc'));
83
+ sources.push(classic === undefined ? undefined : readYarnrc(classic));
84
+ }
85
+ sources.push(npmrc === undefined ? undefined : readNpmrc(npmrc, env));
86
+ sources.push(userNpmrc === undefined ? undefined : readNpmrc(userNpmrc, env));
87
+ return {
88
+ scoped: (_a = sources.find((source) => source === null || source === void 0 ? void 0 : source.scoped)) === null || _a === void 0 ? void 0 : _a.scoped,
89
+ registry: (_b = sources.find((source) => source === null || source === void 0 ? void 0 : source.registry)) === null || _b === void 0 ? void 0 : _b.registry,
90
+ };
91
+ };
92
+ /**
93
+ * The registry the repo's package manager installs `@ethlete/*` from: the repo's `.npmrc`, `.yarnrc` or
94
+ * `.yarnrc.yml` first, since yarn 1 exports its default registry to scripts even when an `.npmrc` sets
95
+ * another one, then the environment, then the public registry.
96
+ */
97
+ const registryUrl = (options = {}) => {
98
+ var _a, _b, _c, _d;
99
+ const { root = process.cwd(), manager = 'npm', env = process.env, home = (0, os_1.homedir)() } = options;
100
+ const project = projectRegistryConfig({ root, manager, env, home });
101
+ return ((_d = (_c = (_b = (_a = project.scoped) !== null && _a !== void 0 ? _a : env[`npm_config_${SCOPE}:registry`]) !== null && _b !== void 0 ? _b : project.registry) !== null && _c !== void 0 ? _c : env['npm_config_registry']) !== null && _d !== void 0 ? _d : exports.DEFAULT_REGISTRY).replace(/\/+$/, '');
102
+ };
10
103
  exports.registryUrl = registryUrl;
104
+ /**
105
+ * The `Authorization` header npm would send to `registry`, from the `//host/path/:_authToken` or
106
+ * `:_auth` entries of the repo's and the user's `.npmrc`, with `${VAR}` expanded. The longest matching
107
+ * path wins.
108
+ */
109
+ const registryAuthorization = (options) => { var _a; return (_a = findAuthorization(options)) === null || _a === void 0 ? void 0 : _a.header; };
110
+ exports.registryAuthorization = registryAuthorization;
111
+ /** The `.npmrc` the token for a registry was read from, or `undefined` when neither holds one. */
112
+ const registryAuthorizationSource = (options) => { var _a; return (_a = findAuthorization(options)) === null || _a === void 0 ? void 0 : _a.source; };
113
+ exports.registryAuthorizationSource = registryAuthorizationSource;
114
+ const findAuthorization = (options) => {
115
+ const { registry, root = process.cwd(), env = process.env, home = (0, os_1.homedir)() } = options;
116
+ const target = `${registry.replace(/^[a-z]+:/i, '').replace(/\/+$/, '')}/`;
117
+ const entries = [(0, path_1.join)(root, '.npmrc'), userNpmrcPath(home)].flatMap((source) => {
118
+ const text = readText(source);
119
+ return text === undefined ? [] : npmrcEntries(text, env).map((entry) => (Object.assign(Object.assign({}, entry), { source })));
120
+ });
121
+ let best;
122
+ for (const { key, value, source } of entries) {
123
+ const match = /^(\/\/.+?)\/?:(_authToken|_auth)$/.exec(key);
124
+ const prefix = (match === null || match === void 0 ? void 0 : match[1]) === undefined ? undefined : `${match[1]}/`;
125
+ if (!match || !prefix || !value || !target.startsWith(prefix))
126
+ continue;
127
+ if (best && best.length >= prefix.length)
128
+ continue;
129
+ best = {
130
+ length: prefix.length,
131
+ header: match[2] === '_authToken' ? `Bearer ${value}` : `Basic ${value}`,
132
+ source,
133
+ };
134
+ }
135
+ return best;
136
+ };
11
137
  const packageUrl = (options) => `${options.registry}/${options.packageName.replace('/', '%2f')}`;
12
138
  exports.packageUrl = packageUrl;
13
139
  /** Asks the registry which versions of a package exist and what each dist tag points at. */
14
140
  const fetchRegistryPackage = (options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
15
- const { packageName, registry = (0, exports.registryUrl)() } = options;
141
+ const { packageName, registry = (0, exports.registryUrl)(), authorization, authorizationSource } = options;
16
142
  let response;
17
143
  try {
18
144
  response = yield fetch((0, exports.packageUrl)({ registry, packageName }), {
19
145
  // The abbreviated document holds the dist tags and the version list without every manifest.
20
- headers: { Accept: 'application/vnd.npm.install-v1+json' },
146
+ headers: Object.assign({ Accept: 'application/vnd.npm.install-v1+json' }, (authorization ? { Authorization: authorization } : {})),
21
147
  signal: AbortSignal.timeout(TIMEOUT_MS),
22
148
  });
23
149
  }
@@ -26,6 +152,12 @@ const fetchRegistryPackage = (options) => tslib_1.__awaiter(void 0, void 0, void
26
152
  }
27
153
  if (response.status === 404)
28
154
  return { ok: false, reason: `${registry} has no ${packageName}.` };
155
+ if (response.status === 401 || response.status === 403) {
156
+ const hint = authorizationSource
157
+ ? `The token in ${authorizationSource} was refused; it may be expired or lack read access.`
158
+ : `No token for ${registry} was found in the repo's or your own .npmrc; add an _authToken entry for it.`;
159
+ return { ok: false, reason: `${registry} answered ${response.status} for ${packageName}. ${hint}` };
160
+ }
29
161
  if (!response.ok)
30
162
  return { ok: false, reason: `${registry} answered ${response.status} for ${packageName}.` };
31
163
  const body = yield response.json().catch(() => undefined);
@@ -42,13 +174,18 @@ const fetchRegistryPackage = (options) => tslib_1.__awaiter(void 0, void 0, void
42
174
  });
43
175
  exports.fetchRegistryPackage = fetchRegistryPackage;
44
176
  /**
45
- * Which dist tag an update follows when the caller names none: the one the installed prerelease belongs
46
- * to, so a repo on `-next.46` stays on `next` instead of being pulled back to the stable line.
177
+ * The dist tag an update follows: for a prerelease, the tag holding the newest version of the same prerelease
178
+ * line, which is not always the tag named after it.
47
179
  */
48
180
  const tagForInstalled = (options) => {
49
181
  const { version, distTags } = options;
50
182
  const tag = version ? (0, semver_1.prereleaseTag)(version) : undefined;
51
- return tag !== undefined && distTags[tag] !== undefined ? tag : 'latest';
183
+ if (tag === undefined || distTags[tag] === undefined)
184
+ return 'latest';
185
+ // changesets publishes a package with only prereleases to `latest`, and leaves the `next` tag behind.
186
+ return Object.entries(distTags)
187
+ .filter(([, tagged]) => (0, semver_1.prereleaseTag)(tagged) === tag)
188
+ .reduce((newest, [name, tagged]) => { var _a; return ((0, semver_1.compareVersions)(tagged, (_a = distTags[newest]) !== null && _a !== void 0 ? _a : tagged) > 0 ? name : newest); }, tag);
52
189
  };
53
190
  exports.tagForInstalled = tagForInstalled;
54
191
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/registry.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,7 @@ export declare const runAutoMigration: (options: {
24
24
  export declare const runInstall: (options: {
25
25
  root: string;
26
26
  manager: PackageManager;
27
+ env?: NodeJS.ProcessEnv;
27
28
  }) => {
28
29
  ok: boolean;
29
30
  reason: string;
@@ -41,4 +42,5 @@ export declare const runPendingMigrations: (options: {
41
42
  manager: PackageManager;
42
43
  pending: readonly PendingMigration[];
43
44
  dryRun: boolean;
45
+ afterEach?: (outcome: MigrationOutcome) => void;
44
46
  }) => MigrationOutcome[];
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runPendingMigrations = exports.manualGeneratorCommand = exports.runInstall = exports.runAutoMigration = exports.generatorArgs = exports.hasNx = void 0;
4
- const child_process_1 = require("child_process");
5
4
  const fs_1 = require("fs");
6
5
  const path_1 = require("path");
7
6
  const package_manager_1 = require("./package-manager");
@@ -29,7 +28,7 @@ const runAutoMigration = (options) => {
29
28
  });
30
29
  if (binary === undefined)
31
30
  return { pending, state: 'failed', reason: 'no command to run the generator with' };
32
- const result = (0, child_process_1.spawnSync)(binary, args, { cwd: root, stdio: 'inherit' });
31
+ const result = (0, package_manager_1.spawnPackageManager)({ binary, args, spawn: { cwd: root, stdio: 'inherit' } });
33
32
  if (result.error)
34
33
  return { pending, state: 'failed', reason: result.error.message };
35
34
  if (result.status !== 0)
@@ -38,11 +37,11 @@ const runAutoMigration = (options) => {
38
37
  };
39
38
  exports.runAutoMigration = runAutoMigration;
40
39
  const runInstall = (options) => {
41
- const { root, manager } = options;
40
+ const { root, manager, env } = options;
42
41
  const [binary, ...args] = manager.install;
43
42
  if (binary === undefined)
44
43
  return { ok: false, reason: 'no install command' };
45
- const result = (0, child_process_1.spawnSync)(binary, args, { cwd: root, stdio: 'inherit' });
44
+ const result = (0, package_manager_1.spawnPackageManager)({ binary, args, spawn: { cwd: root, stdio: 'inherit', env: (0, package_manager_1.installEnv)(env) } });
46
45
  if (result.error)
47
46
  return { ok: false, reason: result.error.message };
48
47
  if (result.status !== 0)
@@ -53,20 +52,26 @@ exports.runInstall = runInstall;
53
52
  /** The command a developer runs by hand when this repo has no Nx to run the generator with. */
54
53
  const manualGeneratorCommand = (options) => (0, package_manager_1.nxCommand)({ manager: options.manager, args: (0, exports.generatorArgs)({ migration: options.migration, dryRun: false }) }).join(' ');
55
54
  exports.manualGeneratorCommand = manualGeneratorCommand;
55
+ const runOne = (options) => {
56
+ const { root, manager, entry, dryRun, nxAvailable } = options;
57
+ if (entry.migration.kind !== 'auto')
58
+ return { pending: entry, state: 'task' };
59
+ if (!nxAvailable) {
60
+ return {
61
+ pending: entry,
62
+ state: 'unsupported',
63
+ reason: 'this repo has no Nx, so the generator has to be run by hand',
64
+ };
65
+ }
66
+ return (0, exports.runAutoMigration)({ root, manager, pending: entry, dryRun });
67
+ };
56
68
  const runPendingMigrations = (options) => {
57
- const { root, manager, pending, dryRun } = options;
69
+ const { root, manager, pending, dryRun, afterEach } = options;
58
70
  const nxAvailable = (0, exports.hasNx)(root);
59
71
  return pending.map((entry) => {
60
- if (entry.migration.kind !== 'auto')
61
- return { pending: entry, state: 'task' };
62
- if (!nxAvailable) {
63
- return {
64
- pending: entry,
65
- state: 'unsupported',
66
- reason: 'this repo has no Nx, so the generator has to be run by hand',
67
- };
68
- }
69
- return (0, exports.runAutoMigration)({ root, manager, pending: entry, dryRun });
72
+ const outcome = runOne({ root, manager, entry, dryRun, nxAvailable });
73
+ afterEach === null || afterEach === void 0 ? void 0 : afterEach(outcome);
74
+ return outcome;
70
75
  });
71
76
  };
72
77
  exports.runPendingMigrations = runPendingMigrations;
@@ -1 +1 @@
1
- {"version":3,"file":"run-migrations.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/run-migrations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run-migrations.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/run-migrations.ts"],"names":[],"mappings":";;;AAAA,2BAAgC;AAChC,+BAA4B;AAE5B,uDAA+F;AAY/F,0FAA0F;AACnF,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CACpC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,IAAI,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;AADvF,QAAA,KAAK,SACkF;AAEpG,2GAA2G;AACpG,MAAM,aAAa,GAAG,CAAC,OAAkD,EAAE,EAAE;;IAClF,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAEtC,OAAO;QACL,UAAU;QACV,MAAA,SAAS,CAAC,SAAS,mCAAI,EAAE;QACzB,qBAAqB;QACrB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAA,SAAS,CAAC,OAAO,mCAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7F,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACjC,CAAC;AACJ,CAAC,CAAC;AAVW,QAAA,aAAa,iBAUxB;AAEK,MAAM,gBAAgB,GAAG,CAAC,OAKhC,EAAoB,EAAE;IACrB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAA,2BAAS,EAAC;QAClC,OAAO;QACP,IAAI,EAAE,IAAA,qBAAa,EAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;KAC9D,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,sCAAsC,EAAE,CAAC;IAE9G,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAE7F,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAEpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,gBAAgB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAE/G,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;AAC5D,CAAC,CAAC;AArBW,QAAA,gBAAgB,oBAqB3B;AAEK,MAAM,UAAU,GAAG,CAAC,OAA2E,EAAE,EAAE;IACxG,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;IACvC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAE1C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IAE7E,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,IAAA,4BAAU,EAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAEnH,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAErE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;IAEnH,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;AACtB,CAAC,CAAC;AAbW,QAAA,UAAU,cAarB;AAEF,+FAA+F;AACxF,MAAM,sBAAsB,GAAG,CAAC,OAA0D,EAAE,EAAE,CACnG,IAAA,2BAAS,EAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,IAAA,qBAAa,EAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAChH,GAAG,CACJ,CAAC;AAHS,QAAA,sBAAsB,0BAG/B;AAEJ,MAAM,MAAM,GAAG,CAAC,OAMf,EAAoB,EAAE;IACrB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC;IAE9D,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAE9E,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,6DAA6D;SACtE,CAAC;IACJ,CAAC;IAED,OAAO,IAAA,wBAAgB,EAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;AACrE,CAAC,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAAC,OAMpC,EAAsB,EAAE;IACvB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAA,aAAK,EAAC,IAAI,CAAC,CAAC;IAEhC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAEtE,SAAS,aAAT,SAAS,uBAAT,SAAS,CAAG,OAAO,CAAC,CAAC;QAErB,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAjBW,QAAA,oBAAoB,wBAiB/B"}
@@ -0,0 +1,14 @@
1
+ import { Migration } from './migration-manifest';
2
+ import { PackageManager } from './package-manager';
3
+ export declare const SCAN_FILE_ENV = "ETHLETE_SCAN_FILE";
4
+ export type ScanResult = {
5
+ files: string[];
6
+ } | {
7
+ problem: string;
8
+ };
9
+ /** Runs the scan generator of a migration and returns the files it would touch, or why it could not tell. */
10
+ export declare const runScan: (options: {
11
+ root: string;
12
+ manager: PackageManager;
13
+ migration: Migration;
14
+ }) => ScanResult;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runScan = exports.SCAN_FILE_ENV = void 0;
4
+ const fs_1 = require("fs");
5
+ const os_1 = require("os");
6
+ const path_1 = require("path");
7
+ const package_manager_1 = require("./package-manager");
8
+ const run_migrations_1 = require("./run-migrations");
9
+ exports.SCAN_FILE_ENV = 'ETHLETE_SCAN_FILE';
10
+ const readScanFile = (path) => {
11
+ if (!(0, fs_1.existsSync)(path))
12
+ return { problem: 'the scan wrote no result' };
13
+ let parsed;
14
+ try {
15
+ parsed = JSON.parse((0, fs_1.readFileSync)(path, 'utf8'));
16
+ }
17
+ catch (_a) {
18
+ return { problem: 'the scan result is not valid JSON' };
19
+ }
20
+ if (!Array.isArray(parsed) || parsed.some((file) => typeof file !== 'string')) {
21
+ return { problem: 'the scan result is not a list of paths' };
22
+ }
23
+ return { files: [...new Set(parsed)] };
24
+ };
25
+ /** Runs the scan generator of a migration and returns the files it would touch, or why it could not tell. */
26
+ const runScan = (options) => {
27
+ const { root, manager, migration } = options;
28
+ if (!migration.scan)
29
+ return { problem: 'the migration has no scan' };
30
+ if (!(0, run_migrations_1.hasNx)(root))
31
+ return { problem: 'this repo has no Nx to run the scan with' };
32
+ const [binary, ...args] = (0, package_manager_1.nxCommand)({
33
+ manager,
34
+ args: (0, run_migrations_1.generatorArgs)({ migration: Object.assign(Object.assign({}, migration), { generator: migration.scan }), dryRun: true }),
35
+ });
36
+ if (binary === undefined)
37
+ return { problem: 'no command to run the scan with' };
38
+ const directory = (0, fs_1.mkdtempSync)((0, path_1.join)((0, os_1.tmpdir)(), 'ethlete-scan-'));
39
+ const resultPath = (0, path_1.join)(directory, 'files.json');
40
+ try {
41
+ const result = (0, package_manager_1.spawnPackageManager)({
42
+ binary,
43
+ args,
44
+ spawn: { cwd: root, stdio: 'ignore', env: Object.assign(Object.assign({}, process.env), { [exports.SCAN_FILE_ENV]: resultPath }) },
45
+ });
46
+ if (result.error)
47
+ return { problem: result.error.message };
48
+ if (result.status !== 0)
49
+ return { problem: `${binary} exited with ${result.status}` };
50
+ return readScanFile(resultPath);
51
+ }
52
+ finally {
53
+ (0, fs_1.rmSync)(directory, { recursive: true, force: true });
54
+ }
55
+ };
56
+ exports.runScan = runScan;
57
+ //# sourceMappingURL=scan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../../../../libs/cli/src/lib/update/scan.ts"],"names":[],"mappings":";;;AAAA,2BAAmE;AACnE,2BAA4B;AAC5B,+BAA4B;AAE5B,uDAAmF;AACnF,qDAAwD;AAE3C,QAAA,aAAa,GAAG,mBAAmB,CAAC;AAIjD,MAAM,YAAY,GAAG,CAAC,IAAY,EAAc,EAAE;IAChD,IAAI,CAAC,IAAA,eAAU,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAEtE,IAAI,MAAe,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,WAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QAC9E,OAAO,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,MAAkB,CAAC,CAAC,EAAE,CAAC;AACrD,CAAC,CAAC;AAEF,6GAA6G;AACtG,MAAM,OAAO,GAAG,CAAC,OAAwE,EAAc,EAAE;IAC9G,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAE7C,IAAI,CAAC,SAAS,CAAC,IAAI;QAAE,OAAO,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IAErE,IAAI,CAAC,IAAA,sBAAK,EAAC,IAAI,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC;IAEjF,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAA,2BAAS,EAAC;QAClC,OAAO;QACP,IAAI,EAAE,IAAA,8BAAa,EAAC,EAAE,SAAS,kCAAO,SAAS,KAAE,SAAS,EAAE,SAAS,CAAC,IAAI,GAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;KAC9F,CAAC,CAAC;IAEH,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,iCAAiC,EAAE,CAAC;IAEhF,MAAM,SAAS,GAAG,IAAA,gBAAW,EAAC,IAAA,WAAI,EAAC,IAAA,WAAM,GAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IAC/D,MAAM,UAAU,GAAG,IAAA,WAAI,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IAEjD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,qCAAmB,EAAC;YACjC,MAAM;YACN,IAAI;YACJ,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,kCAAO,OAAO,CAAC,GAAG,KAAE,CAAC,qBAAa,CAAC,EAAE,UAAU,GAAE,EAAE;SAC5F,CAAC,CAAC;QAEH,IAAI,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAE3D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,gBAAgB,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAEtF,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;YAAS,CAAC;QACT,IAAA,WAAM,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;AACH,CAAC,CAAC;AAhCW,QAAA,OAAO,WAgClB"}