@dotcom-tool-kit/package-json-hook 5.0.0-beta.0 → 5.0.0-beta.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"package-json-helper.d.ts","sourceRoot":"","sources":["../src/package-json-helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AASrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAA;AACnF,OAAO,EAAE,QAAQ,EAAc,MAAM,2BAA2B,CAAA;AAEhE,UAAU,mBAAmB;IAC3B,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAA;CAC9C;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,UAAU,gBAAgB;IACxB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAA;CACtC;AAgED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,IAAI,CAAC,OAAO,iBAAiB,EAAE,gBAAgB,CAAC;IACvF,OAAO,CAAC,YAAY,CAAC,CAAqB;IAE1C,YAAY,SAAiB;IAE7B,QAAQ,SAA8C;IAEtD,MAAM,CAAC,uBAAuB,CAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,CAChB,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GACpD,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CACjE,EAAE,GACF,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAexF,MAAM,CAAC,0BAA0B,CAC/B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,EACxE,kBAAkB,EAAE,CAChB,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GACpD,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CACjE,EAAE,GACF,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAsBlF,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAW9C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAsB/B,OAAO,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgChE,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAgB5D"}
1
+ {"version":3,"file":"package-json-helper.d.ts","sourceRoot":"","sources":["../src/package-json-helper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAC5B,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AASrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAA;AACnF,OAAO,EAAE,QAAQ,EAAc,MAAM,2BAA2B,CAAA;AAEhE,UAAU,mBAAmB;IAC3B,CAAC,KAAK,EAAE,MAAM,GAAG,mBAAmB,GAAG,MAAM,CAAA;CAC9C;AAED,UAAU,qBAAqB;IAC7B,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,WAAW,EAAE,WAAW,CAAA;CACzB;AAED,UAAU,gBAAgB;IACxB,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,CAAA;CACtC;AAuED,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,IAAI,CAAC,OAAO,iBAAiB,EAAE,gBAAgB,CAAC;IACvF,OAAO,CAAC,YAAY,CAAC,CAAqB;IAE1C,YAAY,SAAiB;IAE7B,QAAQ,SAA8C;IAEtD,MAAM,CAAC,uBAAuB,CAC5B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,CAChB,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GACpD,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CACjE,EAAE,GACF,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAexF,MAAM,CAAC,0BAA0B,CAC/B,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,EACxE,kBAAkB,EAAE,CAChB,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GACpD,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,CAAC,CACjE,EAAE,GACF,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAC,EAAE;IAsBlF,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAW9C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAmC/B,OAAO,CAAC,KAAK,GAAE,gBAAqB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgChE,aAAa,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;CAe5D"}
@@ -46,6 +46,12 @@ function mergeInstallationResults(plugin, mergeable, unmergeable) {
46
46
  }
47
47
  return results;
48
48
  }
49
+ // split the path on all unescaped full stops, then unescape all escaped full
50
+ // stops. this will mean we can pass fields to lodash functions taking a path
51
+ // even if the fields contain full stops.
52
+ function splitAndUnescapePath(path) {
53
+ return path.split(/(?<!\\)\./).map((component) => component.replace('\\.', '.'));
54
+ }
49
55
  class PackageJson extends base_1.Hook {
50
56
  constructor() {
51
57
  super(...arguments);
@@ -100,9 +106,21 @@ class PackageJson extends base_1.Hook {
100
106
  // field exists, and its string includes the name of the command. if any command from our options is
101
107
  // missing, the check should fail.
102
108
  for (const [field, object] of Object.entries(this.options)) {
103
- for (const [key, command] of Object.entries(object)) {
104
- const currentPackageJsonField = (0, get_1.default)(packageJson, [field, key]);
105
- if (!currentPackageJsonField || !currentPackageJsonField.includes(command)) {
109
+ for (const [key, entry] of Object.entries(object)) {
110
+ let commands;
111
+ if (Array.isArray(entry)) {
112
+ commands = entry;
113
+ }
114
+ else if (typeof entry === 'string') {
115
+ commands = [entry];
116
+ }
117
+ else {
118
+ commands = Array.isArray(entry.commands) ? entry.commands : [entry.commands];
119
+ }
120
+ const path = [...splitAndUnescapePath(field), key];
121
+ const currentPackageJsonField = (0, get_1.default)(packageJson, path);
122
+ if (!currentPackageJsonField ||
123
+ !commands.every((command) => currentPackageJsonField.includes(command))) {
106
124
  return false;
107
125
  }
108
126
  }
@@ -139,9 +157,7 @@ class PackageJson extends base_1.Hook {
139
157
  async commitInstall(state) {
140
158
  const packageJson = await this.getPackageJson();
141
159
  for (const [path, installation] of Object.entries(state)) {
142
- (0, set_1.default)(packageJson,
143
- // split the path on unescaped full stops
144
- path.split(/(?<!\\)\./).map((component) => component.replace('\\.', '.')), `dotcom-tool-kit ${installation.commands.join(' ')}${installation.trailingString ? ' ' + installation.trailingString : ''}`);
160
+ (0, set_1.default)(packageJson, splitAndUnescapePath(path), `dotcom-tool-kit ${installation.commands.join(' ')}${installation.trailingString ? ' ' + installation.trailingString : ''}`);
145
161
  }
146
162
  await fs_1.default.promises.writeFile(this.filepath, JSON.stringify(packageJson, null, 2) + '\n');
147
163
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dotcom-tool-kit/package-json-hook",
3
- "version": "5.0.0-beta.0",
3
+ "version": "5.0.0-beta.2",
4
4
  "description": "",
5
5
  "main": "lib",
6
6
  "scripts": {