@teambit/issues 1.0.104 → 1.0.105
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.
package/dist/issues-cmd.js
CHANGED
@@ -13,8 +13,8 @@ function _chalk() {
|
|
13
13
|
}
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
15
15
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
16
|
-
function _toPropertyKey(
|
17
|
-
function _toPrimitive(
|
16
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
17
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
18
18
|
class ComponentIssuesCmd {
|
19
19
|
constructor(issues) {
|
20
20
|
this.issues = issues;
|
package/dist/issues-cmd.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","
|
1
|
+
{"version":3,"names":["_chalk","data","_interopRequireDefault","require","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","ComponentIssuesCmd","constructor","issues","report","results","json","map","result","chalk","bold","name","description","solution","isTagBlocker","join","listIssues","exports"],"sources":["issues-cmd.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { Command, CommandOptions } from '@teambit/cli';\nimport { IssuesMain } from './issues.main.runtime';\n\nexport class ComponentIssuesCmd implements Command {\n name = 'component-issues';\n description = 'list available component-issues';\n alias = '';\n group = 'development';\n options = [['j', 'json', 'output issues in json format']] as CommandOptions;\n loader = true;\n private = true;\n\n constructor(private issues: IssuesMain) {}\n\n async report() {\n const results = await this.json();\n return results\n .map(\n (result) => `${chalk.bold(result.name)}\n${result.description}\nPossible solution: ${result.solution}\nIs Tag/Snap blocker: ${result.isTagBlocker ? 'yes' : 'no'}\n`\n )\n .join('\\n');\n }\n\n async json() {\n return this.issues.listIssues();\n }\n}\n"],"mappings":";;;;;;AAAA,SAAAA,OAAA;EAAA,MAAAC,IAAA,GAAAC,sBAAA,CAAAC,OAAA;EAAAH,MAAA,YAAAA,CAAA;IAAA,OAAAC,IAAA;EAAA;EAAA,OAAAA,IAAA;AAAA;AAA0B,SAAAC,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,gBAAAH,GAAA,EAAAI,GAAA,EAAAC,KAAA,IAAAD,GAAA,GAAAE,cAAA,CAAAF,GAAA,OAAAA,GAAA,IAAAJ,GAAA,IAAAO,MAAA,CAAAC,cAAA,CAAAR,GAAA,EAAAI,GAAA,IAAAC,KAAA,EAAAA,KAAA,EAAAI,UAAA,QAAAC,YAAA,QAAAC,QAAA,oBAAAX,GAAA,CAAAI,GAAA,IAAAC,KAAA,WAAAL,GAAA;AAAA,SAAAM,eAAAM,CAAA,QAAAC,CAAA,GAAAC,YAAA,CAAAF,CAAA,uCAAAC,CAAA,GAAAA,CAAA,GAAAE,MAAA,CAAAF,CAAA;AAAA,SAAAC,aAAAF,CAAA,EAAAI,CAAA,2BAAAJ,CAAA,KAAAA,CAAA,SAAAA,CAAA,MAAAK,CAAA,GAAAL,CAAA,CAAAM,MAAA,CAAAC,WAAA,kBAAAF,CAAA,QAAAJ,CAAA,GAAAI,CAAA,CAAAG,IAAA,CAAAR,CAAA,EAAAI,CAAA,uCAAAH,CAAA,SAAAA,CAAA,YAAAQ,SAAA,yEAAAL,CAAA,GAAAD,MAAA,GAAAO,MAAA,EAAAV,CAAA;AAInB,MAAMW,kBAAkB,CAAoB;EASjDC,WAAWA,CAASC,MAAkB,EAAE;IAAA,KAApBA,MAAkB,GAAlBA,MAAkB;IAAAtB,eAAA,eAR/B,kBAAkB;IAAAA,eAAA,sBACX,iCAAiC;IAAAA,eAAA,gBACvC,EAAE;IAAAA,eAAA,gBACF,aAAa;IAAAA,eAAA,kBACX,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,8BAA8B,CAAC,CAAC;IAAAA,eAAA,iBAChD,IAAI;IAAAA,eAAA,kBACH,IAAI;EAE2B;EAEzC,MAAMuB,MAAMA,CAAA,EAAG;IACb,MAAMC,OAAO,GAAG,MAAM,IAAI,CAACC,IAAI,CAAC,CAAC;IACjC,OAAOD,OAAO,CACXE,GAAG,CACDC,MAAM,IAAM,GAAEC,gBAAK,CAACC,IAAI,CAACF,MAAM,CAACG,IAAI,CAAE;AAC/C,EAAEH,MAAM,CAACI,WAAY;AACrB,qBAAqBJ,MAAM,CAACK,QAAS;AACrC,uBAAuBL,MAAM,CAACM,YAAY,GAAG,KAAK,GAAG,IAAK;AAC1D,CACM,CAAC,CACAC,IAAI,CAAC,IAAI,CAAC;EACf;EAEA,MAAMT,IAAIA,CAAA,EAAG;IACX,OAAO,IAAI,CAACH,MAAM,CAACa,UAAU,CAAC,CAAC;EACjC;AACF;AAACC,OAAA,CAAAhB,kBAAA,GAAAA,kBAAA"}
|
@@ -55,8 +55,8 @@ function _nonExistIssueError() {
|
|
55
55
|
}
|
56
56
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
57
57
|
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
58
|
-
function _toPropertyKey(
|
59
|
-
function _toPrimitive(
|
58
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
59
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
60
60
|
class IssuesMain {
|
61
61
|
constructor(config, addComponentsIssuesSlot) {
|
62
62
|
this.config = config;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_cli","data","require","_componentIssues","_harmony","_pMapSeries","_interopRequireDefault","_issuesCmd","_issues","_nonExistIssueError","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","
|
1
|
+
{"version":3,"names":["_cli","data","require","_componentIssues","_harmony","_pMapSeries","_interopRequireDefault","_issuesCmd","_issues","_nonExistIssueError","obj","__esModule","default","_defineProperty","key","value","_toPropertyKey","Object","defineProperty","enumerable","configurable","writable","t","i","_toPrimitive","String","r","e","Symbol","toPrimitive","call","TypeError","Number","IssuesMain","constructor","config","addComponentsIssuesSlot","getIssuesToIgnoreGlobally","issuesToIgnore","ignoreIssues","validateIssueNames","getIssuesToIgnorePerComponent","component","_component$state$aspe","state","aspects","get","IssuesAspect","id","issues","allIssues","listIssues","map","issue","name","forEach","includes","NonExistIssueError","instances","keys","IssuesClasses","issueClass","issuesList","IssuesList","getAllIssues","issueInstance","description","solution","isTagBlocker","removeIgnoredIssuesFromComponents","components","extraIssuesToIgnore","issuesToIgnoreGlobally","issuesToIgnoreForThisComp","issueToIgnore","delete","registerAddComponentsIssues","addComponentsIssues","register","triggerAddComponentIssues","allFunctions","values","pMapSeries","func","provider","cli","issuesMain","ComponentIssuesCmd","exports","Slot","withType","CLIAspect","MainRuntime","addRuntime"],"sources":["issues.main.runtime.ts"],"sourcesContent":["import { CLIAspect, CLIMain, MainRuntime } from '@teambit/cli';\nimport { Component } from '@teambit/component';\nimport { IssuesClasses, IssuesList } from '@teambit/component-issues';\nimport { Slot, SlotRegistry } from '@teambit/harmony';\nimport pMapSeries from 'p-map-series';\nimport { ComponentIssuesCmd } from './issues-cmd';\nimport { IssuesAspect } from './issues.aspect';\nimport { NonExistIssueError } from './non-exist-issue-error';\n\nexport type IssuesConfig = {\n ignoreIssues: string[];\n};\n\nexport type AddComponentsIssues = (components: Component[], issuesToIgnore: string[]) => Promise<void>;\n\nexport type AddComponentsIssuesSlot = SlotRegistry<AddComponentsIssues>;\n\nexport class IssuesMain {\n constructor(private config: IssuesConfig, private addComponentsIssuesSlot: AddComponentsIssuesSlot) {}\n\n getIssuesToIgnoreGlobally(): string[] {\n const issuesToIgnore = this.config.ignoreIssues || [];\n this.validateIssueNames(issuesToIgnore);\n return issuesToIgnore;\n }\n\n getIssuesToIgnorePerComponent(component: Component): string[] {\n const issuesToIgnore = component.state.aspects.get(IssuesAspect.id)?.config.ignoreIssues;\n if (!issuesToIgnore) return [];\n this.validateIssueNames(issuesToIgnore);\n return issuesToIgnore;\n }\n\n private validateIssueNames(issues: string[]) {\n const allIssues = this.listIssues().map((issue) => issue.name);\n issues.forEach((issue) => {\n if (!allIssues.includes(issue)) {\n throw new NonExistIssueError(issue);\n }\n });\n }\n\n listIssues() {\n const instances = Object.keys(IssuesClasses).map((issueClass) => new IssuesClasses[issueClass]());\n const issuesList = new IssuesList(instances);\n const allIssues = issuesList.getAllIssues();\n return allIssues.map((issueInstance) => {\n return {\n name: issueInstance.constructor.name,\n description: issueInstance.description,\n solution: issueInstance.solution,\n isTagBlocker: issueInstance.isTagBlocker,\n };\n });\n }\n\n removeIgnoredIssuesFromComponents(components: Component[], extraIssuesToIgnore: string[] = []) {\n const issuesToIgnoreGlobally = this.getIssuesToIgnoreGlobally();\n components.forEach((component) => {\n const issuesToIgnoreForThisComp = this.getIssuesToIgnorePerComponent(component);\n const issuesToIgnore = [...issuesToIgnoreGlobally, ...issuesToIgnoreForThisComp, ...extraIssuesToIgnore];\n issuesToIgnore.forEach((issueToIgnore) => {\n component.state.issues.delete(IssuesClasses[issueToIgnore]);\n });\n });\n }\n\n /**\n * register to this slot in order to add a component-issue in bit-status and bit-snap/tag.\n * your function gets all components in one param and the issuesToIgnore as a second param, you don't need to check\n * for issuesToIgnore. if the issue you added is configured to be ignored, it'll be ignored later in the process.\n * this is useful for optimization, if you don't want to calculate the component issue when it's ignored.\n */\n registerAddComponentsIssues(addComponentsIssues: AddComponentsIssues) {\n this.addComponentsIssuesSlot.register(addComponentsIssues);\n }\n\n async triggerAddComponentIssues(components: Component[], issuesToIgnore: string[]) {\n const allFunctions = this.addComponentsIssuesSlot.values();\n await pMapSeries(allFunctions, (func) => func(components, issuesToIgnore));\n }\n\n static slots = [Slot.withType<AddComponentsIssues>()];\n static dependencies = [CLIAspect];\n static defaultConfig = {\n ignoreIssues: [],\n };\n static runtime = MainRuntime;\n static async provider([cli]: [CLIMain], config: IssuesConfig, [addComponentsIssuesSlot]: [AddComponentsIssuesSlot]) {\n const issuesMain = new IssuesMain(config, addComponentsIssuesSlot);\n cli.register(new ComponentIssuesCmd(issuesMain));\n return issuesMain;\n }\n}\n\nIssuesAspect.addRuntime(IssuesMain);\n"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
{
|
2
2
|
"name": "@teambit/issues",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.105",
|
4
4
|
"homepage": "https://bit.cloud/teambit/component/issues",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"componentId": {
|
7
7
|
"scope": "teambit.component",
|
8
8
|
"name": "issues",
|
9
|
-
"version": "1.0.
|
9
|
+
"version": "1.0.105"
|
10
10
|
},
|
11
11
|
"dependencies": {
|
12
12
|
"chalk": "2.4.2",
|
@@ -17,7 +17,7 @@
|
|
17
17
|
"@teambit/bit-error": "0.0.404",
|
18
18
|
"@teambit/cli": "0.0.838",
|
19
19
|
"@teambit/component-issues": "0.0.136",
|
20
|
-
"@teambit/component": "1.0.
|
20
|
+
"@teambit/component": "1.0.105"
|
21
21
|
},
|
22
22
|
"devDependencies": {
|
23
23
|
"@types/mocha": "9.1.0",
|
File without changes
|