@teambit/config-store 0.0.201 → 0.0.202

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.
@@ -28,6 +28,10 @@ function _legacy() {
28
28
  }
29
29
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
30
30
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
31
+ // Owner-only perms for the global config file. It can hold the user's
32
+ // bit-cloud token and other secrets, so match the AWS/gcloud baseline
33
+ // of 0600 instead of relying on the umask default (often 0644).
34
+ const CONFIG_FILE_MODE = 0o600;
31
35
  function getGlobalConfigPath() {
32
36
  return path().join(_legacy().GLOBAL_CONFIG, _legacy().GLOBAL_CONFIG_FILE);
33
37
  }
@@ -38,11 +42,22 @@ class GlobalConfig extends Map {
38
42
  toJson() {
39
43
  return JSON.stringify(this.toPlainObject(), null, 2);
40
44
  }
41
- write() {
42
- return _fsExtra().default.outputFile(getGlobalConfigPath(), this.toJson());
45
+ async write() {
46
+ const configPath = getGlobalConfigPath();
47
+ await _fsExtra().default.outputFile(configPath, this.toJson(), {
48
+ mode: CONFIG_FILE_MODE
49
+ });
50
+ // Node's `mode` write option is only honored when the file is created,
51
+ // so chmod explicitly to tighten any pre-existing file written under
52
+ // the default umask.
53
+ await _fsExtra().default.chmod(configPath, CONFIG_FILE_MODE);
43
54
  }
44
55
  writeSync() {
45
- return _fsExtra().default.outputFileSync(getGlobalConfigPath(), this.toJson());
56
+ const configPath = getGlobalConfigPath();
57
+ _fsExtra().default.outputFileSync(configPath, this.toJson(), {
58
+ mode: CONFIG_FILE_MODE
59
+ });
60
+ _fsExtra().default.chmodSync(configPath, CONFIG_FILE_MODE);
46
61
  }
47
62
  static loadSync() {
48
63
  const configPath = getGlobalConfigPath();
@@ -1 +1 @@
1
- {"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","path","_interopRequireWildcard","_legacy","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getGlobalConfigPath","join","GLOBAL_CONFIG","GLOBAL_CONFIG_FILE","GlobalConfig","Map","toPlainObject","mapToObject","toJson","JSON","stringify","write","fs","outputFile","writeSync","outputFileSync","loadSync","configPath","existsSync","config","contents","readFileSync","entries","parse","toString","load","exists","pathExists","readFile","exports","map","object","forEach","val","key"],"sources":["global-config.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport * as path from 'path';\n\nimport { GLOBAL_CONFIG, GLOBAL_CONFIG_FILE } from '@teambit/legacy.constants';\n\nexport function getGlobalConfigPath() {\n return path.join(GLOBAL_CONFIG, GLOBAL_CONFIG_FILE);\n}\n\nexport class GlobalConfig extends Map<string, string> {\n toPlainObject() {\n return mapToObject(this);\n }\n\n toJson() {\n return JSON.stringify(this.toPlainObject(), null, 2);\n }\n\n write() {\n return fs.outputFile(getGlobalConfigPath(), this.toJson());\n }\n\n writeSync() {\n return fs.outputFileSync(getGlobalConfigPath(), this.toJson());\n }\n\n static loadSync(): GlobalConfig {\n const configPath = getGlobalConfigPath();\n if (!fs.existsSync(configPath)) {\n const config = new GlobalConfig([]);\n config.writeSync();\n return config;\n }\n const contents = fs.readFileSync(configPath);\n return new GlobalConfig(Object.entries(JSON.parse(contents.toString())));\n }\n\n static async load(): Promise<GlobalConfig> {\n const configPath = getGlobalConfigPath();\n const exists = await fs.pathExists(configPath);\n if (!exists) {\n const config = new GlobalConfig([]);\n await config.write();\n return config;\n }\n const contents = await fs.readFile(configPath);\n return new GlobalConfig(Object.entries(JSON.parse(contents.toString())));\n }\n}\n\n/**\n * Cast a `Map` to a plain object.\n * Keys are being casted by invoking `toString` on each key.\n * @name mapToObject\n * @param {Map} map to cast\n * @returns {*} plain object\n * @example\n * ```js\n * mapToObject(new Map([['key', 'val'], ['foo', 'bar']]));\n * // => { key: 'val', foo: 'bar' }\n * ```\n */\nfunction mapToObject(map: Map<any, any>): { [key: string]: any } {\n const object = {};\n map.forEach((val, key) => {\n object[key.toString()] = val;\n });\n return object;\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_fsExtra","data","_interopRequireDefault","require","path","_interopRequireWildcard","_legacy","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CONFIG_FILE_MODE","getGlobalConfigPath","join","GLOBAL_CONFIG","GLOBAL_CONFIG_FILE","GlobalConfig","Map","toPlainObject","mapToObject","toJson","JSON","stringify","write","configPath","fs","outputFile","mode","chmod","writeSync","outputFileSync","chmodSync","loadSync","existsSync","config","contents","readFileSync","entries","parse","toString","load","exists","pathExists","readFile","exports","map","object","forEach","val","key"],"sources":["global-config.ts"],"sourcesContent":["import fs from 'fs-extra';\nimport * as path from 'path';\n\nimport { GLOBAL_CONFIG, GLOBAL_CONFIG_FILE } from '@teambit/legacy.constants';\n\n// Owner-only perms for the global config file. It can hold the user's\n// bit-cloud token and other secrets, so match the AWS/gcloud baseline\n// of 0600 instead of relying on the umask default (often 0644).\nconst CONFIG_FILE_MODE = 0o600;\n\nexport function getGlobalConfigPath() {\n return path.join(GLOBAL_CONFIG, GLOBAL_CONFIG_FILE);\n}\n\nexport class GlobalConfig extends Map<string, string> {\n toPlainObject() {\n return mapToObject(this);\n }\n\n toJson() {\n return JSON.stringify(this.toPlainObject(), null, 2);\n }\n\n async write() {\n const configPath = getGlobalConfigPath();\n await fs.outputFile(configPath, this.toJson(), { mode: CONFIG_FILE_MODE });\n // Node's `mode` write option is only honored when the file is created,\n // so chmod explicitly to tighten any pre-existing file written under\n // the default umask.\n await fs.chmod(configPath, CONFIG_FILE_MODE);\n }\n\n writeSync() {\n const configPath = getGlobalConfigPath();\n fs.outputFileSync(configPath, this.toJson(), { mode: CONFIG_FILE_MODE });\n fs.chmodSync(configPath, CONFIG_FILE_MODE);\n }\n\n static loadSync(): GlobalConfig {\n const configPath = getGlobalConfigPath();\n if (!fs.existsSync(configPath)) {\n const config = new GlobalConfig([]);\n config.writeSync();\n return config;\n }\n const contents = fs.readFileSync(configPath);\n return new GlobalConfig(Object.entries(JSON.parse(contents.toString())));\n }\n\n static async load(): Promise<GlobalConfig> {\n const configPath = getGlobalConfigPath();\n const exists = await fs.pathExists(configPath);\n if (!exists) {\n const config = new GlobalConfig([]);\n await config.write();\n return config;\n }\n const contents = await fs.readFile(configPath);\n return new GlobalConfig(Object.entries(JSON.parse(contents.toString())));\n }\n}\n\n/**\n * Cast a `Map` to a plain object.\n * Keys are being casted by invoking `toString` on each key.\n * @name mapToObject\n * @param {Map} map to cast\n * @returns {*} plain object\n * @example\n * ```js\n * mapToObject(new Map([['key', 'val'], ['foo', 'bar']]));\n * // => { key: 'val', foo: 'bar' }\n * ```\n */\nfunction mapToObject(map: Map<any, any>): { [key: string]: any } {\n const object = {};\n map.forEach((val, key) => {\n object[key.toString()] = val;\n });\n return object;\n}\n"],"mappings":";;;;;;;AAAA,SAAAA,SAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,QAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AACA,SAAAG,KAAA;EAAA,MAAAH,IAAA,GAAAI,uBAAA,CAAAF,OAAA;EAAAC,IAAA,YAAAA,CAAA;IAAA,OAAAH,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAEA,SAAAK,QAAA;EAAA,MAAAL,IAAA,GAAAE,OAAA;EAAAG,OAAA,YAAAA,CAAA;IAAA,OAAAL,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA8E,SAAAI,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAN,uBAAAK,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAK,UAAA,GAAAL,CAAA,KAAAU,OAAA,EAAAV,CAAA;AAE9E;AACA;AACA;AACA,MAAMmB,gBAAgB,GAAG,KAAK;AAEvB,SAASC,mBAAmBA,CAAA,EAAG;EACpC,OAAOvB,IAAI,CAAD,CAAC,CAACwB,IAAI,CAACC,uBAAa,EAAEC,4BAAkB,CAAC;AACrD;AAEO,MAAMC,YAAY,SAASC,GAAG,CAAiB;EACpDC,aAAaA,CAAA,EAAG;IACd,OAAOC,WAAW,CAAC,IAAI,CAAC;EAC1B;EAEAC,MAAMA,CAAA,EAAG;IACP,OAAOC,IAAI,CAACC,SAAS,CAAC,IAAI,CAACJ,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;EACtD;EAEA,MAAMK,KAAKA,CAAA,EAAG;IACZ,MAAMC,UAAU,GAAGZ,mBAAmB,CAAC,CAAC;IACxC,MAAMa,kBAAE,CAACC,UAAU,CAACF,UAAU,EAAE,IAAI,CAACJ,MAAM,CAAC,CAAC,EAAE;MAAEO,IAAI,EAAEhB;IAAiB,CAAC,CAAC;IAC1E;IACA;IACA;IACA,MAAMc,kBAAE,CAACG,KAAK,CAACJ,UAAU,EAAEb,gBAAgB,CAAC;EAC9C;EAEAkB,SAASA,CAAA,EAAG;IACV,MAAML,UAAU,GAAGZ,mBAAmB,CAAC,CAAC;IACxCa,kBAAE,CAACK,cAAc,CAACN,UAAU,EAAE,IAAI,CAACJ,MAAM,CAAC,CAAC,EAAE;MAAEO,IAAI,EAAEhB;IAAiB,CAAC,CAAC;IACxEc,kBAAE,CAACM,SAAS,CAACP,UAAU,EAAEb,gBAAgB,CAAC;EAC5C;EAEA,OAAOqB,QAAQA,CAAA,EAAiB;IAC9B,MAAMR,UAAU,GAAGZ,mBAAmB,CAAC,CAAC;IACxC,IAAI,CAACa,kBAAE,CAACQ,UAAU,CAACT,UAAU,CAAC,EAAE;MAC9B,MAAMU,MAAM,GAAG,IAAIlB,YAAY,CAAC,EAAE,CAAC;MACnCkB,MAAM,CAACL,SAAS,CAAC,CAAC;MAClB,OAAOK,MAAM;IACf;IACA,MAAMC,QAAQ,GAAGV,kBAAE,CAACW,YAAY,CAACZ,UAAU,CAAC;IAC5C,OAAO,IAAIR,YAAY,CAACR,MAAM,CAAC6B,OAAO,CAAChB,IAAI,CAACiB,KAAK,CAACH,QAAQ,CAACI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1E;EAEA,aAAaC,IAAIA,CAAA,EAA0B;IACzC,MAAMhB,UAAU,GAAGZ,mBAAmB,CAAC,CAAC;IACxC,MAAM6B,MAAM,GAAG,MAAMhB,kBAAE,CAACiB,UAAU,CAAClB,UAAU,CAAC;IAC9C,IAAI,CAACiB,MAAM,EAAE;MACX,MAAMP,MAAM,GAAG,IAAIlB,YAAY,CAAC,EAAE,CAAC;MACnC,MAAMkB,MAAM,CAACX,KAAK,CAAC,CAAC;MACpB,OAAOW,MAAM;IACf;IACA,MAAMC,QAAQ,GAAG,MAAMV,kBAAE,CAACkB,QAAQ,CAACnB,UAAU,CAAC;IAC9C,OAAO,IAAIR,YAAY,CAACR,MAAM,CAAC6B,OAAO,CAAChB,IAAI,CAACiB,KAAK,CAACH,QAAQ,CAACI,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1E;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAXAK,OAAA,CAAA5B,YAAA,GAAAA,YAAA;AAYA,SAASG,WAAWA,CAAC0B,GAAkB,EAA0B;EAC/D,MAAMC,MAAM,GAAG,CAAC,CAAC;EACjBD,GAAG,CAACE,OAAO,CAAC,CAACC,GAAG,EAAEC,GAAG,KAAK;IACxBH,MAAM,CAACG,GAAG,CAACV,QAAQ,CAAC,CAAC,CAAC,GAAGS,GAAG;EAC9B,CAAC,CAAC;EACF,OAAOF,MAAM;AACf","ignoreList":[]}
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@teambit/config-store",
3
- "version": "0.0.201",
3
+ "version": "0.0.202",
4
4
  "homepage": "https://bit.cloud/teambit/harmony/config-store",
5
5
  "main": "dist/index.js",
6
6
  "componentId": {
7
7
  "scope": "teambit.harmony",
8
8
  "name": "config-store",
9
- "version": "0.0.201"
9
+ "version": "0.0.202"
10
10
  },
11
11
  "dependencies": {
12
12
  "chalk": "4.1.2",
@@ -14,9 +14,9 @@
14
14
  "@teambit/gitconfig": "2.0.10",
15
15
  "lodash": "4.17.21",
16
16
  "fs-extra": "10.0.0",
17
+ "@teambit/cli": "0.0.1321",
17
18
  "@teambit/legacy.constants": "0.0.26",
18
- "@teambit/harmony": "0.4.7",
19
- "@teambit/cli": "0.0.1321"
19
+ "@teambit/harmony": "0.4.7"
20
20
  },
21
21
  "devDependencies": {
22
22
  "@types/lodash": "4.14.165",