@servicetitan/install 33.0.1 → 33.1.0

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,5 +1,4 @@
1
1
  export interface Args {
2
- debug?: boolean;
3
2
  fix?: boolean;
4
3
  quiet?: boolean;
5
4
  token?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,IAAI;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,OAAO;IAChB,IAAI,EAAE,IAAI,CAAC;gBAEC,IAAI,EAAE,IAAI;IAItB,OAAO;IASP,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,eAAe;CAmB1B"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/cli/install.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,IAAI;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,OAAO;IAChB,IAAI,EAAE,IAAI,CAAC;gBAEC,IAAI,EAAE,IAAI;IAItB,OAAO;IASP,OAAO,CAAC,iBAAiB;IA0CzB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,eAAe;CAmB1B"}
@@ -32,7 +32,8 @@ function _interop_require_default(obj) {
32
32
  }
33
33
  const REPO_NAME = 'frontend-dev-config';
34
34
  const AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';
35
- const AUTH_TOKEN_REGEX = /^\/\/registry\.npmjs\.org\/:_authToken=\s*\${([^}]+)}/m;
35
+ const AUTH_TOKEN_REGEX = /^\/\/registry\.npmjs\.org\/:_authToken=\s*(?<authToken>.+)/m;
36
+ const ENVIRONMENT_VARIABLE_REGEX = /\${(?<environmentVariable>[^}]+)}/;
36
37
  class Install {
37
38
  execute() {
38
39
  if (!this.args.quiet) {
@@ -42,6 +43,7 @@ class Install {
42
43
  this.installPackages(env);
43
44
  }
44
45
  configureNpmToken() {
46
+ var _AUTH_TOKEN_REGEX_exec, _ENVIRONMENT_VARIABLE_REGEX_exec;
45
47
  if ((0, _utils.isCI)() || this.args.fix || this.args.token === false) {
46
48
  return;
47
49
  }
@@ -66,13 +68,22 @@ class Install {
66
68
  return;
67
69
  }
68
70
  const npmrc = _fs.default.readFileSync('.npmrc', 'utf-8');
69
- const match = AUTH_TOKEN_REGEX.exec(npmrc);
71
+ var _AUTH_TOKEN_REGEX_exec_groups;
72
+ const { authToken } = (_AUTH_TOKEN_REGEX_exec_groups = (_AUTH_TOKEN_REGEX_exec = AUTH_TOKEN_REGEX.exec(npmrc)) === null || _AUTH_TOKEN_REGEX_exec === void 0 ? void 0 : _AUTH_TOKEN_REGEX_exec.groups) !== null && _AUTH_TOKEN_REGEX_exec_groups !== void 0 ? _AUTH_TOKEN_REGEX_exec_groups : {};
70
73
  (0, _utils.debug)({
71
- match
74
+ authToken
72
75
  });
73
- if (match) {
76
+ if (!authToken) {
77
+ return;
78
+ }
79
+ var _ENVIRONMENT_VARIABLE_REGEX_exec_groups;
80
+ const { environmentVariable } = (_ENVIRONMENT_VARIABLE_REGEX_exec_groups = (_ENVIRONMENT_VARIABLE_REGEX_exec = ENVIRONMENT_VARIABLE_REGEX.exec(authToken)) === null || _ENVIRONMENT_VARIABLE_REGEX_exec === void 0 ? void 0 : _ENVIRONMENT_VARIABLE_REGEX_exec.groups) !== null && _ENVIRONMENT_VARIABLE_REGEX_exec_groups !== void 0 ? _ENVIRONMENT_VARIABLE_REGEX_exec_groups : {};
81
+ (0, _utils.debug)({
82
+ environmentVariable
83
+ });
84
+ if (environmentVariable) {
74
85
  return {
75
- [match[1]]: token
86
+ [environmentVariable]: token
76
87
  };
77
88
  }
78
89
  (0, _utils.runCommand)('npm', [
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/install.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport path from 'path';\nimport fs from 'fs';\nimport os from 'os';\nimport { debug, getVersion, gitCloneRepo, isCI, npmWhoAmI, readJson, runCommand } from '../utils';\n\nconst REPO_NAME = 'frontend-dev-config';\nconst AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';\nconst AUTH_TOKEN_REGEX = /^\\/\\/registry\\.npmjs\\.org\\/:_authToken=\\s*\\${([^}]+)}/m;\n\nexport interface Args {\n debug?: boolean;\n fix?: boolean;\n quiet?: boolean;\n token?: boolean;\n}\n\nexport class Install {\n args: Args;\n\n constructor(args: Args) {\n this.args = args;\n }\n\n execute() {\n if (!this.args.quiet) {\n console.log(`install cli v${getVersion()}`);\n }\n\n const env = this.configureNpmToken();\n this.installPackages(env);\n }\n\n private configureNpmToken() {\n if (isCI() || this.args.fix || this.args.token === false) {\n return;\n }\n\n if (!this.args.quiet) {\n console.log('Configuring NPM token ...');\n }\n\n if (this.args.token !== true) {\n if (npmWhoAmI() === 'st-team') {\n return;\n }\n }\n\n const token = this.fetchNpmToken();\n if (!token) {\n return;\n }\n\n runCommand('npm', ['config', 'set', `${AUTH_TOKEN_KEY}=${token}`]);\n\n if (!fs.existsSync('.npmrc')) {\n return;\n }\n\n const npmrc = fs.readFileSync('.npmrc', 'utf-8');\n const match = AUTH_TOKEN_REGEX.exec(npmrc);\n debug({ match });\n if (match) {\n return { [match[1]]: token };\n }\n\n runCommand('npm', ['config', 'delete', '--location=project', AUTH_TOKEN_KEY]);\n }\n\n private fetchNpmToken() {\n const tempDirPath = fs.mkdtempSync(path.join(os.tmpdir(), 'st-install-'));\n try {\n if (!gitCloneRepo({ destination: tempDirPath, name: REPO_NAME })) {\n throw new Error(`could not clone servicetitan/${REPO_NAME}`);\n }\n\n const npmJson = readJson(path.join(tempDirPath, '.npm.json'));\n debug('install:fetch-npm-token', { npmJson });\n\n if (!((npmJson && typeof npmJson === 'object') || Array.isArray(npmJson))) {\n throw new Error('.npm.json is not an object');\n }\n\n const { readOnlyToken: authToken } = npmJson;\n if (!authToken) {\n throw new Error('.npm.json does not contain auth token');\n }\n\n if (typeof authToken !== 'string') {\n throw new Error('.npm.json auth token is not a string');\n }\n\n return Buffer.from(authToken, 'base64').toString('utf-8');\n } catch (e) {\n console.warn(String(e));\n } finally {\n try {\n fs.rmSync(tempDirPath, { recursive: true, force: true });\n } catch {\n // ignore\n }\n }\n }\n\n private installPackages(env?: Record<string, string>) {\n if (this.args.token) {\n return;\n }\n\n const npmArguments = [\n isCI() ? 'ci' : 'i',\n '--audit=false',\n '--fund=false',\n '--legacy-peer-deps',\n ...(this.args.fix ? ['--package-lock-only', '--prefer-dedupe'] : []),\n ];\n\n if (!this.args.quiet) {\n console.log(`Running npm ${npmArguments.join(' ')}`);\n }\n\n runCommand('npm', npmArguments, { env, stdio: 'inherit' });\n }\n}\n"],"names":["Install","REPO_NAME","AUTH_TOKEN_KEY","AUTH_TOKEN_REGEX","execute","args","quiet","console","log","getVersion","env","configureNpmToken","installPackages","isCI","fix","token","npmWhoAmI","fetchNpmToken","runCommand","fs","existsSync","npmrc","readFileSync","match","exec","debug","tempDirPath","mkdtempSync","path","join","os","tmpdir","gitCloneRepo","destination","name","Error","npmJson","readJson","Array","isArray","readOnlyToken","authToken","Buffer","from","toString","e","warn","String","rmSync","recursive","force","npmArguments","stdio"],"mappings":"AAAA,6BAA6B;;;;+BAiBhBA;;;eAAAA;;;6DAhBI;2DACF;2DACA;uBACwE;;;;;;;;;;;;;;;;;;;AAEvF,MAAMC,YAAY;AAClB,MAAMC,iBAAiB;AACvB,MAAMC,mBAAmB;AASlB,MAAMH;IAOTI,UAAU;QACN,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK,EAAE;YAClBC,QAAQC,GAAG,CAAC,CAAC,aAAa,EAAEC,IAAAA,iBAAU,KAAI;QAC9C;QAEA,MAAMC,MAAM,IAAI,CAACC,iBAAiB;QAClC,IAAI,CAACC,eAAe,CAACF;IACzB;IAEQC,oBAAoB;QACxB,IAAIE,IAAAA,WAAI,OAAM,IAAI,CAACR,IAAI,CAACS,GAAG,IAAI,IAAI,CAACT,IAAI,CAACU,KAAK,KAAK,OAAO;YACtD;QACJ;QAEA,IAAI,CAAC,IAAI,CAACV,IAAI,CAACC,KAAK,EAAE;YAClBC,QAAQC,GAAG,CAAC;QAChB;QAEA,IAAI,IAAI,CAACH,IAAI,CAACU,KAAK,KAAK,MAAM;YAC1B,IAAIC,IAAAA,gBAAS,QAAO,WAAW;gBAC3B;YACJ;QACJ;QAEA,MAAMD,QAAQ,IAAI,CAACE,aAAa;QAChC,IAAI,CAACF,OAAO;YACR;QACJ;QAEAG,IAAAA,iBAAU,EAAC,OAAO;YAAC;YAAU;YAAO,GAAGhB,eAAe,CAAC,EAAEa,OAAO;SAAC;QAEjE,IAAI,CAACI,WAAE,CAACC,UAAU,CAAC,WAAW;YAC1B;QACJ;QAEA,MAAMC,QAAQF,WAAE,CAACG,YAAY,CAAC,UAAU;QACxC,MAAMC,QAAQpB,iBAAiBqB,IAAI,CAACH;QACpCI,IAAAA,YAAK,EAAC;YAAEF;QAAM;QACd,IAAIA,OAAO;YACP,OAAO;gBAAE,CAACA,KAAK,CAAC,EAAE,CAAC,EAAER;YAAM;QAC/B;QAEAG,IAAAA,iBAAU,EAAC,OAAO;YAAC;YAAU;YAAU;YAAsBhB;SAAe;IAChF;IAEQe,gBAAgB;QACpB,MAAMS,cAAcP,WAAE,CAACQ,WAAW,CAACC,aAAI,CAACC,IAAI,CAACC,WAAE,CAACC,MAAM,IAAI;QAC1D,IAAI;YACA,IAAI,CAACC,IAAAA,mBAAY,EAAC;gBAAEC,aAAaP;gBAAaQ,MAAMjC;YAAU,IAAI;gBAC9D,MAAM,IAAIkC,MAAM,CAAC,6BAA6B,EAAElC,WAAW;YAC/D;YAEA,MAAMmC,UAAUC,IAAAA,eAAQ,EAACT,aAAI,CAACC,IAAI,CAACH,aAAa;YAChDD,IAAAA,YAAK,EAAC,2BAA2B;gBAAEW;YAAQ;YAE3C,IAAI,CAAE,CAAA,AAACA,WAAW,OAAOA,YAAY,YAAaE,MAAMC,OAAO,CAACH,QAAO,GAAI;gBACvE,MAAM,IAAID,MAAM;YACpB;YAEA,MAAM,EAAEK,eAAeC,SAAS,EAAE,GAAGL;YACrC,IAAI,CAACK,WAAW;gBACZ,MAAM,IAAIN,MAAM;YACpB;YAEA,IAAI,OAAOM,cAAc,UAAU;gBAC/B,MAAM,IAAIN,MAAM;YACpB;YAEA,OAAOO,OAAOC,IAAI,CAACF,WAAW,UAAUG,QAAQ,CAAC;QACrD,EAAE,OAAOC,GAAG;YACRtC,QAAQuC,IAAI,CAACC,OAAOF;QACxB,SAAU;YACN,IAAI;gBACA1B,WAAE,CAAC6B,MAAM,CAACtB,aAAa;oBAAEuB,WAAW;oBAAMC,OAAO;gBAAK;YAC1D,EAAE,UAAM;YACJ,SAAS;YACb;QACJ;IACJ;IAEQtC,gBAAgBF,GAA4B,EAAE;QAClD,IAAI,IAAI,CAACL,IAAI,CAACU,KAAK,EAAE;YACjB;QACJ;QAEA,MAAMoC,eAAe;YACjBtC,IAAAA,WAAI,MAAK,OAAO;YAChB;YACA;YACA;eACI,IAAI,CAACR,IAAI,CAACS,GAAG,GAAG;gBAAC;gBAAuB;aAAkB,GAAG,EAAE;SACtE;QAED,IAAI,CAAC,IAAI,CAACT,IAAI,CAACC,KAAK,EAAE;YAClBC,QAAQC,GAAG,CAAC,CAAC,YAAY,EAAE2C,aAAatB,IAAI,CAAC,MAAM;QACvD;QAEAX,IAAAA,iBAAU,EAAC,OAAOiC,cAAc;YAAEzC;YAAK0C,OAAO;QAAU;IAC5D;IAtGA,YAAY/C,IAAU,CAAE;QAFxBA,uBAAAA,QAAAA,KAAAA;QAGI,IAAI,CAACA,IAAI,GAAGA;IAChB;AAqGJ"}
1
+ {"version":3,"sources":["../../src/cli/install.ts"],"sourcesContent":["/* eslint-disable no-console */\nimport path from 'path';\nimport fs from 'fs';\nimport os from 'os';\nimport { debug, getVersion, gitCloneRepo, isCI, npmWhoAmI, readJson, runCommand } from '../utils';\n\nconst REPO_NAME = 'frontend-dev-config';\nconst AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';\nconst AUTH_TOKEN_REGEX = /^\\/\\/registry\\.npmjs\\.org\\/:_authToken=\\s*(?<authToken>.+)/m;\nconst ENVIRONMENT_VARIABLE_REGEX = /\\${(?<environmentVariable>[^}]+)}/;\n\nexport interface Args {\n fix?: boolean;\n quiet?: boolean;\n token?: boolean;\n}\n\nexport class Install {\n args: Args;\n\n constructor(args: Args) {\n this.args = args;\n }\n\n execute() {\n if (!this.args.quiet) {\n console.log(`install cli v${getVersion()}`);\n }\n\n const env = this.configureNpmToken();\n this.installPackages(env);\n }\n\n private configureNpmToken() {\n if (isCI() || this.args.fix || this.args.token === false) {\n return;\n }\n\n if (!this.args.quiet) {\n console.log('Configuring NPM token ...');\n }\n\n if (this.args.token !== true) {\n if (npmWhoAmI() === 'st-team') {\n return;\n }\n }\n\n const token = this.fetchNpmToken();\n if (!token) {\n return;\n }\n\n runCommand('npm', ['config', 'set', `${AUTH_TOKEN_KEY}=${token}`]);\n\n if (!fs.existsSync('.npmrc')) {\n return;\n }\n\n const npmrc = fs.readFileSync('.npmrc', 'utf-8');\n const { authToken } = AUTH_TOKEN_REGEX.exec(npmrc)?.groups ?? {};\n debug({ authToken });\n if (!authToken) {\n return;\n }\n\n const { environmentVariable } = ENVIRONMENT_VARIABLE_REGEX.exec(authToken)?.groups ?? {};\n debug({ environmentVariable });\n if (environmentVariable) {\n return { [environmentVariable]: token };\n }\n\n runCommand('npm', ['config', 'delete', '--location=project', AUTH_TOKEN_KEY]);\n }\n\n private fetchNpmToken() {\n const tempDirPath = fs.mkdtempSync(path.join(os.tmpdir(), 'st-install-'));\n try {\n if (!gitCloneRepo({ destination: tempDirPath, name: REPO_NAME })) {\n throw new Error(`could not clone servicetitan/${REPO_NAME}`);\n }\n\n const npmJson = readJson(path.join(tempDirPath, '.npm.json'));\n debug('install:fetch-npm-token', { npmJson });\n\n if (!((npmJson && typeof npmJson === 'object') || Array.isArray(npmJson))) {\n throw new Error('.npm.json is not an object');\n }\n\n const { readOnlyToken: authToken } = npmJson;\n if (!authToken) {\n throw new Error('.npm.json does not contain auth token');\n }\n\n if (typeof authToken !== 'string') {\n throw new Error('.npm.json auth token is not a string');\n }\n\n return Buffer.from(authToken, 'base64').toString('utf-8');\n } catch (e) {\n console.warn(String(e));\n } finally {\n try {\n fs.rmSync(tempDirPath, { recursive: true, force: true });\n } catch {\n // ignore\n }\n }\n }\n\n private installPackages(env?: Record<string, string>) {\n if (this.args.token) {\n return;\n }\n\n const npmArguments = [\n isCI() ? 'ci' : 'i',\n '--audit=false',\n '--fund=false',\n '--legacy-peer-deps',\n ...(this.args.fix ? ['--package-lock-only', '--prefer-dedupe'] : []),\n ];\n\n if (!this.args.quiet) {\n console.log(`Running npm ${npmArguments.join(' ')}`);\n }\n\n runCommand('npm', npmArguments, { env, stdio: 'inherit' });\n }\n}\n"],"names":["Install","REPO_NAME","AUTH_TOKEN_KEY","AUTH_TOKEN_REGEX","ENVIRONMENT_VARIABLE_REGEX","execute","args","quiet","console","log","getVersion","env","configureNpmToken","installPackages","isCI","fix","token","npmWhoAmI","fetchNpmToken","runCommand","fs","existsSync","npmrc","readFileSync","authToken","exec","groups","debug","environmentVariable","tempDirPath","mkdtempSync","path","join","os","tmpdir","gitCloneRepo","destination","name","Error","npmJson","readJson","Array","isArray","readOnlyToken","Buffer","from","toString","e","warn","String","rmSync","recursive","force","npmArguments","stdio"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@servicetitan/install",
3
- "version": "33.0.1",
3
+ "version": "33.1.0",
4
4
  "description": "",
5
5
  "homepage": "https://docs.st.dev/docs/frontend/install",
6
6
  "repository": {
@@ -32,5 +32,5 @@
32
32
  "devDependencies": {
33
33
  "ts-node": "~10.9.2"
34
34
  },
35
- "gitHead": "6a140ed15688cc4915d3d0e52000c2f8c1f381ca"
35
+ "gitHead": "126948560bcb684f276373beb7ce45faac94205c"
36
36
  }
@@ -6,10 +6,10 @@ import { debug, getVersion, gitCloneRepo, isCI, npmWhoAmI, readJson, runCommand
6
6
 
7
7
  const REPO_NAME = 'frontend-dev-config';
8
8
  const AUTH_TOKEN_KEY = '//registry.npmjs.org/:_authToken';
9
- const AUTH_TOKEN_REGEX = /^\/\/registry\.npmjs\.org\/:_authToken=\s*\${([^}]+)}/m;
9
+ const AUTH_TOKEN_REGEX = /^\/\/registry\.npmjs\.org\/:_authToken=\s*(?<authToken>.+)/m;
10
+ const ENVIRONMENT_VARIABLE_REGEX = /\${(?<environmentVariable>[^}]+)}/;
10
11
 
11
12
  export interface Args {
12
- debug?: boolean;
13
13
  fix?: boolean;
14
14
  quiet?: boolean;
15
15
  token?: boolean;
@@ -58,10 +58,16 @@ export class Install {
58
58
  }
59
59
 
60
60
  const npmrc = fs.readFileSync('.npmrc', 'utf-8');
61
- const match = AUTH_TOKEN_REGEX.exec(npmrc);
62
- debug({ match });
63
- if (match) {
64
- return { [match[1]]: token };
61
+ const { authToken } = AUTH_TOKEN_REGEX.exec(npmrc)?.groups ?? {};
62
+ debug({ authToken });
63
+ if (!authToken) {
64
+ return;
65
+ }
66
+
67
+ const { environmentVariable } = ENVIRONMENT_VARIABLE_REGEX.exec(authToken)?.groups ?? {};
68
+ debug({ environmentVariable });
69
+ if (environmentVariable) {
70
+ return { [environmentVariable]: token };
65
71
  }
66
72
 
67
73
  runCommand('npm', ['config', 'delete', '--location=project', AUTH_TOKEN_KEY]);