@forge/lint 3.0.5 → 3.1.0-next.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @forge/lint
2
2
 
3
+ ## 3.1.0-next.1
4
+
5
+ ### Minor Changes
6
+
7
+ - ce4a65f: Hide Granular scopes
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [34d085a]
12
+ - Updated dependencies [c87cdea]
13
+ - Updated dependencies [ce4a65f]
14
+ - @forge/manifest@3.7.0-next.1
15
+ - @forge/cli-shared@2.4.2-next.1
16
+
17
+ ## 3.0.6-next.0
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [9e700ef8]
22
+ - @forge/manifest@3.6.1-next.0
23
+ - @forge/cli-shared@2.4.2-next.0
24
+
3
25
  ## 3.0.5
4
26
 
5
27
  ### Patch Changes
@@ -1,15 +1,11 @@
1
1
  import { LintClass, LintResultRule } from '../../../linter-interface';
2
2
  import { BaseLintIssueVerifier, LintIssueVerifier } from '../../verifier-interface';
3
3
  import { ContentPropertyApiCall } from '../api-call-interface';
4
- declare type ContentPropertyPermissions = {
5
- current: string[];
6
- deprecated: string[];
7
- };
8
- export declare const CONTENT_PROPERTY_PERMISSIONS_MAP: Record<string, Record<string, ContentPropertyPermissions>>;
4
+ import { RequiredScopes } from '@forge/manifest';
5
+ export declare const CONTENT_PROPERTY_PERMISSIONS_MAP: Record<string, Record<string, RequiredScopes>>;
9
6
  export declare class ContentPropertyVerifier extends BaseLintIssueVerifier implements LintIssueVerifier<ContentPropertyApiCall[]> {
10
7
  protected getLintClass(): LintClass;
11
8
  process(apiCalls: ContentPropertyApiCall[]): Promise<LintResultRule[]>;
12
9
  private getMissingScopes;
13
10
  }
14
- export {};
15
11
  //# sourceMappingURL=content-property-verifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-property-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/content-property-verifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,aAAK,0BAA0B,GAAG;IAChC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,gCAAgC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAyDvG,CAAC;AAEF,qBAAa,uBACX,SAAQ,qBACR,YAAW,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;IACtD,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuBnF,OAAO,CAAC,gBAAgB;CAyBzB"}
1
+ {"version":3,"file":"content-property-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/content-property-verifier.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAEtE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACpF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAoB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEnE,eAAO,MAAM,gCAAgC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAyD3F,CAAC;AAEF,qBAAa,uBACX,SAAQ,qBACR,YAAW,iBAAiB,CAAC,sBAAsB,EAAE,CAAC;IACtD,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAuBnF,OAAO,CAAC,gBAAgB;CAKzB"}
@@ -5,61 +5,62 @@ const cli_shared_1 = require("@forge/cli-shared");
5
5
  const linter_interface_1 = require("../../../linter-interface");
6
6
  const text_1 = require("../../../text");
7
7
  const verifier_interface_1 = require("../../verifier-interface");
8
+ const manifest_1 = require("@forge/manifest");
8
9
  exports.CONTENT_PROPERTY_PERMISSIONS_MAP = {
9
10
  onJiraIssue: {
10
11
  get: {
11
- current: ['read:issue.property:jira'],
12
- deprecated: ['read:jira-work']
12
+ beta: ['read:issue.property:jira'],
13
+ current: ['read:jira-work']
13
14
  },
14
15
  set: {
15
- current: ['write:issue.property:jira'],
16
- deprecated: ['write:jira-work']
16
+ beta: ['write:issue.property:jira'],
17
+ current: ['write:jira-work']
17
18
  },
18
19
  delete: {
19
- current: ['delete:issue.property:jira'],
20
- deprecated: ['write:jira-work']
20
+ beta: ['delete:issue.property:jira'],
21
+ current: ['write:jira-work']
21
22
  }
22
23
  },
23
24
  onJiraProject: {
24
25
  get: {
25
- current: ['read:project.property:jira'],
26
- deprecated: ['read:jira-work']
26
+ beta: ['read:project.property:jira'],
27
+ current: ['read:jira-work']
27
28
  },
28
29
  set: {
29
- current: ['write:project.property:jira'],
30
- deprecated: ['manage:jira-project']
30
+ beta: ['write:project.property:jira'],
31
+ current: ['manage:jira-project']
31
32
  },
32
33
  delete: {
33
- current: ['delete:project.property:jira'],
34
- deprecated: ['manage:jira-project']
34
+ beta: ['delete:project.property:jira'],
35
+ current: ['manage:jira-project']
35
36
  }
36
37
  },
37
38
  onConfluencePage: {
38
39
  get: {
39
- current: ['read:content-details:confluence'],
40
- deprecated: ['read:confluence-props']
40
+ beta: ['read:content-details:confluence'],
41
+ current: ['read:confluence-props']
41
42
  },
42
43
  set: {
43
- current: ['read:content.property:confluence', 'write:content.property:confluence'],
44
- deprecated: ['read:confluence-props', 'write:confluence-props']
44
+ beta: ['read:content.property:confluence', 'write:content.property:confluence'],
45
+ current: ['read:confluence-props', 'write:confluence-props']
45
46
  },
46
47
  delete: {
47
- current: ['write:content.property:confluence'],
48
- deprecated: ['write:confluence-props']
48
+ beta: ['write:content.property:confluence'],
49
+ current: ['write:confluence-props']
49
50
  }
50
51
  },
51
52
  onConfluenceSpace: {
52
53
  get: {
53
- current: ['read:content-details:confluence'],
54
- deprecated: ['read:confluence-props']
54
+ beta: ['read:content-details:confluence'],
55
+ current: ['read:confluence-props']
55
56
  },
56
57
  set: {
57
- current: ['read:space.property:confluence', 'write:space.property:confluence'],
58
- deprecated: ['read:confluence-props', 'write:confluence-props']
58
+ beta: ['read:space.property:confluence', 'write:space.property:confluence'],
59
+ current: ['read:confluence-props', 'write:confluence-props']
59
60
  },
60
61
  delete: {
61
- current: ['write:space.property:confluence'],
62
- deprecated: ['write:confluence-props']
62
+ beta: ['write:space.property:confluence'],
63
+ current: ['write:confluence-props']
63
64
  }
64
65
  }
65
66
  };
@@ -86,24 +87,7 @@ class ContentPropertyVerifier extends verifier_interface_1.BaseLintIssueVerifier
86
87
  getMissingScopes({ context, method }) {
87
88
  var _a, _b;
88
89
  const existingScopes = (_b = (_a = this.manifest) === null || _a === void 0 ? void 0 : _a.permissions) === null || _b === void 0 ? void 0 : _b.scopes;
89
- const requiredScopesCurrent = exports.CONTENT_PROPERTY_PERMISSIONS_MAP[context][method]['current'];
90
- const requiredScopesDeprecated = exports.CONTENT_PROPERTY_PERMISSIONS_MAP[context][method]['deprecated'];
91
- const missingCurrentPerms = requiredScopesCurrent.filter((perm) => !(existingScopes === null || existingScopes === void 0 ? void 0 : existingScopes.includes(perm)));
92
- if (missingCurrentPerms.length == 0)
93
- return [];
94
- let missingDeprecatedPerms = null;
95
- if (requiredScopesDeprecated) {
96
- missingDeprecatedPerms = requiredScopesDeprecated.filter((perm) => !(existingScopes === null || existingScopes === void 0 ? void 0 : existingScopes.includes(perm)));
97
- if (missingDeprecatedPerms.length == 0)
98
- return [];
99
- }
100
- if (missingCurrentPerms.length < requiredScopesCurrent.length) {
101
- return missingCurrentPerms;
102
- }
103
- if (missingDeprecatedPerms && missingDeprecatedPerms.length < requiredScopesDeprecated.length) {
104
- return missingDeprecatedPerms;
105
- }
106
- return requiredScopesCurrent;
90
+ return manifest_1.getMissingScopes(existingScopes, exports.CONTENT_PROPERTY_PERMISSIONS_MAP[context][method]);
107
91
  }
108
92
  }
109
93
  exports.ContentPropertyVerifier = ContentPropertyVerifier;
@@ -27,7 +27,7 @@ export declare class ProductVerifier extends BaseLintIssueVerifier implements Li
27
27
  private lookupApiCall;
28
28
  private getMissingPermissionScopes;
29
29
  private getRequiredScopes;
30
- private getRequiredDeprecatedScopes;
30
+ private getBetaScopes;
31
31
  }
32
32
  export {};
33
33
  //# sourceMappingURL=product-verifier.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"product-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/product-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC1B,2BAA2B,CAAC,EAAE,qBAAqB,EAAE,CAAC;KACvD,CAAC;CACH;AAED,UAAU,aAAa;IACrB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,oBAAY,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAEjE,qBAAa,eAAgB,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAI9F,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHxB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EACD,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,MAAM;IAKlC,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC3E,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,0BAA0B;IA8BlC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,2BAA2B;CAWpC"}
1
+ {"version":3,"file":"product-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/product-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAGpF,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAoB,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC;AAE7D,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,QAAQ,EAAE,aAAa,EAAE,CAAC;QAC1B,2BAA2B,CAAC,EAAE,qBAAqB,EAAE,CAAC;KACvD,CAAC;CACH;AAED,UAAU,aAAa;IACrB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC9B;AAED,oBAAY,uBAAuB,GAAG,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAEjE,qBAAa,eAAgB,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAI9F,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAHxB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,QAAQ,EACD,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,MAAM;IAKlC,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC3E,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,aAAa;CAWtB"}
@@ -5,6 +5,7 @@ const tslib_1 = require("tslib");
5
5
  const linter_interface_1 = require("../../../linter-interface");
6
6
  const verifier_interface_1 = require("../../verifier-interface");
7
7
  const cli_shared_1 = require("@forge/cli-shared");
8
+ const manifest_1 = require("@forge/manifest");
8
9
  const text_1 = require("../../../text");
9
10
  const array_prototype_flatmap_1 = tslib_1.__importDefault(require("array.prototype.flatmap"));
10
11
  class ProductVerifier extends verifier_interface_1.BaseLintIssueVerifier {
@@ -52,25 +53,10 @@ class ProductVerifier extends verifier_interface_1.BaseLintIssueVerifier {
52
53
  }
53
54
  }
54
55
  getMissingPermissionScopes(apiCall) {
55
- var _a, _b, _c;
56
- const currentScopes = this.getRequiredScopes(apiCall);
57
- const deprecatedScopes = this.getRequiredDeprecatedScopes(apiCall);
58
- if (!((_c = (_b = (_a = this.manifest) === null || _a === void 0 ? void 0 : _a.permissions) === null || _b === void 0 ? void 0 : _b.scopes) === null || _c === void 0 ? void 0 : _c.length)) {
59
- return currentScopes;
60
- }
61
- const missingCurrentScopes = currentScopes.filter((scope) => { var _a, _b; return !((_b = (_a = this.manifest.permissions) === null || _a === void 0 ? void 0 : _a.scopes) === null || _b === void 0 ? void 0 : _b.includes(scope)); });
62
- if (!missingCurrentScopes.length)
63
- return [];
64
- const missingDeprecatedScopes = deprecatedScopes.filter((scope) => { var _a, _b; return !((_b = (_a = this.manifest.permissions) === null || _a === void 0 ? void 0 : _a.scopes) === null || _b === void 0 ? void 0 : _b.includes(scope)); });
65
- if (deprecatedScopes.length && !missingDeprecatedScopes.length)
66
- return [];
67
- if (missingCurrentScopes.length < currentScopes.length) {
68
- return missingCurrentScopes;
69
- }
70
- if (missingDeprecatedScopes.length < deprecatedScopes.length) {
71
- return missingDeprecatedScopes;
72
- }
73
- return missingCurrentScopes;
56
+ var _a, _b;
57
+ const current = this.getRequiredScopes(apiCall);
58
+ const beta = this.getBetaScopes(apiCall);
59
+ return manifest_1.getMissingScopes((_b = (_a = this.manifest) === null || _a === void 0 ? void 0 : _a.permissions) === null || _b === void 0 ? void 0 : _b.scopes, { current, beta });
74
60
  }
75
61
  getRequiredScopes({ regex, method }) {
76
62
  var _a, _b, _c, _d;
@@ -85,14 +71,14 @@ class ProductVerifier extends verifier_interface_1.BaseLintIssueVerifier {
85
71
  return [];
86
72
  return swaggerEntries === null || swaggerEntries === void 0 ? void 0 : swaggerEntries.reduce((prev, curr) => [...prev, ...(curr['OAuth2'] || []), ...(curr['oAuthDefinitions'] || [])], []);
87
73
  }
88
- getRequiredDeprecatedScopes({ regex, method }) {
74
+ getBetaScopes({ regex, method }) {
89
75
  var _a, _b;
90
76
  if (!regex)
91
77
  return [];
92
78
  const oAuth2Scopes = (_b = (_a = this.pathMap.get(regex)) === null || _a === void 0 ? void 0 : _a.methods[method]) === null || _b === void 0 ? void 0 : _b['x-atlassian-oauth2-scopes'];
93
79
  if (!oAuth2Scopes)
94
80
  return [];
95
- return array_prototype_flatmap_1.default(oAuth2Scopes.filter((scope) => scope.state === 'Deprecated').map((scope) => scope.scopes), (x) => x);
81
+ return array_prototype_flatmap_1.default(oAuth2Scopes.filter((scope) => scope.state === 'Beta').map((scope) => scope.scopes), (x) => x);
96
82
  }
97
83
  }
98
84
  exports.ProductVerifier = ProductVerifier;
@@ -1 +1 @@
1
- {"version":3,"file":"ui-hook-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/ui-hook-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AA2BpF,qBAAa,cAAe,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAC/F,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAoC1E,OAAO,CAAC,WAAW;CAepB"}
1
+ {"version":3,"file":"ui-hook-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/permission-linter/verifiers/ui-hook-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAmBpF,qBAAa,cAAe,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,OAAO,EAAE,CAAC;IAC/F,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAe1E,OAAO,CAAC,WAAW;CAepB"}
@@ -4,22 +4,19 @@ exports.UIHookVerifier = void 0;
4
4
  const linter_interface_1 = require("../../../linter-interface");
5
5
  const verifier_interface_1 = require("../../verifier-interface");
6
6
  const text_1 = require("../../../text");
7
+ const manifest_1 = require("@forge/manifest");
7
8
  const FORGE_UI_HOOK_PERMISSIONS = {
8
9
  useContentProperty: {
9
- current: [
10
- 'read:content-details:confluence',
11
- 'read:content.property:confluence',
12
- 'write:content.property:confluence'
13
- ],
14
- deprecated: ['read:confluence-props', 'write:confluence-props']
10
+ beta: ['read:content-details:confluence', 'read:content.property:confluence', 'write:content.property:confluence'],
11
+ current: ['read:confluence-props', 'write:confluence-props']
15
12
  },
16
13
  useSpaceProperty: {
17
- current: ['read:content-details:confluence', 'read:space.property:confluence', 'write:space.property:confluence'],
18
- deprecated: ['read:confluence-props', 'write:confluence-props']
14
+ beta: ['read:content-details:confluence', 'read:space.property:confluence', 'write:space.property:confluence'],
15
+ current: ['read:confluence-props', 'write:confluence-props']
19
16
  },
20
17
  useIssueProperty: {
21
- current: ['read:issue.property:jira'],
22
- deprecated: ['read:jira-work', 'write:jira-work']
18
+ beta: ['read:issue.property:jira'],
19
+ current: ['read:jira-work', 'write:jira-work']
23
20
  }
24
21
  };
25
22
  class UIHookVerifier extends verifier_interface_1.BaseLintIssueVerifier {
@@ -27,30 +24,14 @@ class UIHookVerifier extends verifier_interface_1.BaseLintIssueVerifier {
27
24
  return linter_interface_1.LintClass.Error;
28
25
  }
29
26
  async process(apiCalls) {
27
+ var _a;
30
28
  const rules = [];
31
29
  for (const apiCall of apiCalls) {
32
30
  const requiredPermissions = FORGE_UI_HOOK_PERMISSIONS[apiCall.hookName];
33
31
  if (!requiredPermissions)
34
32
  return rules;
35
- const { current, deprecated } = requiredPermissions;
36
- const missingCurrentPerms = current.filter((perm) => { var _a, _b; return !((_b = (_a = this.manifest.permissions) === null || _a === void 0 ? void 0 : _a.scopes) === null || _b === void 0 ? void 0 : _b.includes(perm)); });
37
- if (!missingCurrentPerms.length)
38
- continue;
39
- let missingDeprecatedPerms = null;
40
- if (deprecated) {
41
- missingDeprecatedPerms = deprecated.filter((perm) => { var _a, _b; return !((_b = (_a = this.manifest.permissions) === null || _a === void 0 ? void 0 : _a.scopes) === null || _b === void 0 ? void 0 : _b.includes(perm)); });
42
- if (!missingDeprecatedPerms.length)
43
- continue;
44
- }
45
- if (missingCurrentPerms.length < current.length) {
46
- missingCurrentPerms.forEach((perm) => rules.push(this.getHookRule(apiCall, perm)));
47
- continue;
48
- }
49
- if (deprecated && missingDeprecatedPerms && (missingDeprecatedPerms === null || missingDeprecatedPerms === void 0 ? void 0 : missingDeprecatedPerms.length) < deprecated.length) {
50
- missingDeprecatedPerms.forEach((perm) => rules.push(this.getHookRule(apiCall, perm)));
51
- continue;
52
- }
53
- missingCurrentPerms.forEach((perm) => rules.push(this.getHookRule(apiCall, perm)));
33
+ const missingPermissions = manifest_1.getMissingScopes((_a = this.manifest.permissions) === null || _a === void 0 ? void 0 : _a.scopes, requiredPermissions);
34
+ missingPermissions.forEach((perm) => rules.push(this.getHookRule(apiCall, perm)));
54
35
  }
55
36
  return rules;
56
37
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/lint",
3
- "version": "3.0.5",
3
+ "version": "3.1.0-next.1",
4
4
  "description": "Linting for forge apps",
5
5
  "main": "out/index.js",
6
6
  "license": "UNLICENSED",
@@ -15,9 +15,9 @@
15
15
  "@types/node-fetch": "^2.5.7"
16
16
  },
17
17
  "dependencies": {
18
- "@forge/cli-shared": "2.4.1",
18
+ "@forge/cli-shared": "2.4.2-next.1",
19
19
  "@forge/csp": "1.10.0",
20
- "@forge/manifest": "3.6.0",
20
+ "@forge/manifest": "3.7.0-next.1",
21
21
  "@typescript-eslint/typescript-estree": "^3.5.0",
22
22
  "cross-spawn": "^7.0.1",
23
23
  "node-fetch": "2.6.1",