@forge/lint 6.0.0-next.9 → 6.0.1-next.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +68 -0
  2. package/out/lint/lint.d.ts.map +1 -1
  3. package/out/lint/lint.js +2 -0
  4. package/out/lint/linter-interface.d.ts +2 -2
  5. package/out/lint/linter-interface.d.ts.map +1 -1
  6. package/out/lint/linter-interface.js +1 -1
  7. package/out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.d.ts +10 -0
  8. package/out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.d.ts.map +1 -0
  9. package/out/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.js +43 -0
  10. package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.d.ts +3 -0
  11. package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.d.ts.map +1 -0
  12. package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.js +32 -0
  13. package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permissions-sdk-usage.d.ts +3 -0
  14. package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permissions-sdk-usage.d.ts.map +1 -0
  15. package/out/lint/linters/app-managed-permissions-sdk-linter/detect-permissions-sdk-usage.js +162 -0
  16. package/out/lint/linters/app-managed-permissions-sdk-linter/manifest-declarative-permission-handling.d.ts +3 -0
  17. package/out/lint/linters/app-managed-permissions-sdk-linter/manifest-declarative-permission-handling.d.ts.map +1 -0
  18. package/out/lint/linters/app-managed-permissions-sdk-linter/manifest-declarative-permission-handling.js +57 -0
  19. package/out/lint/linters/deprecated-api-module-linter/deprecated-api-module-interface.d.ts +1 -1
  20. package/out/lint/linters/deprecated-api-module-linter/deprecated-api-module-interface.d.ts.map +1 -1
  21. package/out/lint/linters/endpoint-linter/invoke-endpoint-interface.d.ts +2 -2
  22. package/out/lint/linters/endpoint-linter/invoke-endpoint-interface.d.ts.map +1 -1
  23. package/out/lint/linters/endpoint-linter/invoke-endpoint-interface.js +1 -1
  24. package/out/lint/linters/frame-component-linter/frame-component-interface.d.ts +1 -1
  25. package/out/lint/linters/frame-component-linter/frame-component-interface.d.ts.map +1 -1
  26. package/out/lint/linters/manifest-linter/webtrigger-url-format-manifest-linter.d.ts.map +1 -1
  27. package/out/lint/linters/permission-linter/api-call-interface.d.ts +2 -2
  28. package/out/lint/linters/permission-linter/api-call-interface.d.ts.map +1 -1
  29. package/out/lint/linters/permission-linter/api-call-interface.js +1 -1
  30. package/out/lint/linters/permission-linter/permission-linter.d.ts +1 -1
  31. package/out/lint/linters/permission-linter/permission-linter.d.ts.map +1 -1
  32. package/out/lint/linters/permission-linter/verifiers/product-verifier.d.ts +1 -1
  33. package/out/lint/linters/permission-linter/verifiers/product-verifier.d.ts.map +1 -1
  34. package/out/lint/linters/storage-module-linter/api-call-interface.d.ts +2 -2
  35. package/out/lint/linters/storage-module-linter/api-call-interface.d.ts.map +1 -1
  36. package/out/lint/linters/storage-module-linter/api-call-interface.js +1 -1
  37. package/out/lint/linters/storage-module-linter/storage-module-linter.d.ts.map +1 -1
  38. package/out/lint/linters/utils.d.ts.map +1 -1
  39. package/out/lint/text/messages.d.ts +4 -0
  40. package/out/lint/text/messages.d.ts.map +1 -1
  41. package/out/lint/text/messages.js +4 -0
  42. package/out/parse/parser.d.ts +1 -0
  43. package/out/parse/parser.d.ts.map +1 -1
  44. package/out/parse/parser.js +1 -0
  45. package/package.json +6 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,73 @@
1
1
  # @forge/lint
2
2
 
3
+ ## 6.0.1-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [4cd2242]
8
+ - @forge/manifest@13.1.0-next.0
9
+ - @forge/cli-shared@9.0.1-next.0
10
+
11
+ ## 6.0.0
12
+
13
+ ### Major Changes
14
+
15
+ - 78fcb7f: Adds support for TypeScript 5
16
+
17
+ ### Minor Changes
18
+
19
+ - fbf8219: Adds a lint warning when you use app-managed permissions and the linter still sees API usage that usually needs scopes, but no permission checks in your scanned code or manifest yet.
20
+ - 6adb226: The Forge linter now reports an error (previously a warning) when the `@forge/sql` SDK is imported but no corresponding `sql` module is declared in the manifest. The autofix continues to add the missing `sql` module and now counts it as a fixed error.
21
+
22
+ ### Patch Changes
23
+
24
+ - Updated dependencies [c3b96b3]
25
+ - Updated dependencies [2a03b88]
26
+ - Updated dependencies [814b8fe]
27
+ - Updated dependencies [561f8f4]
28
+ - Updated dependencies [6aeecd7]
29
+ - Updated dependencies [78fcb7f]
30
+ - Updated dependencies [ab1dcaa]
31
+ - Updated dependencies [4a191fe]
32
+ - Updated dependencies [bb903a8]
33
+ - Updated dependencies [c1acc55]
34
+ - Updated dependencies [8ac7dd3]
35
+ - Updated dependencies [39d4f9d]
36
+ - Updated dependencies [297d598]
37
+ - Updated dependencies [5b67e61]
38
+ - Updated dependencies [661b109]
39
+ - Updated dependencies [9a6de66]
40
+ - Updated dependencies [55c1371]
41
+ - Updated dependencies [d66be70]
42
+ - Updated dependencies [1a461c3]
43
+ - Updated dependencies [2a1ec30]
44
+ - @forge/cli-shared@9.0.0
45
+ - @forge/manifest@13.0.0
46
+ - @forge/csp@6.0.0
47
+ - @forge/egress@3.0.0
48
+
49
+ ## 6.0.0-next.12
50
+
51
+ ### Minor Changes
52
+
53
+ - fbf8219: Adds a lint warning when you use app-managed permissions and the linter still sees API usage that usually needs scopes, but no permission checks in your scanned code or manifest yet.
54
+
55
+ ## 6.0.0-next.11
56
+
57
+ ### Patch Changes
58
+
59
+ - Updated dependencies [4a191fe]
60
+ - Updated dependencies [d66be70]
61
+ - @forge/cli-shared@9.0.0-next.9
62
+ - @forge/manifest@13.0.0-next.3
63
+
64
+ ## 6.0.0-next.10
65
+
66
+ ### Patch Changes
67
+
68
+ - Updated dependencies [39d4f9d]
69
+ - @forge/cli-shared@9.0.0-next.8
70
+
3
71
  ## 6.0.0-next.9
4
72
 
5
73
  ### Major Changes
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAiBxG,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB,WAAY,UAAU,eAAe,UAAU,EAAE,4BAAuB,IA+CrG,CAAC;AAEF,eAAO,MAAM,YAAY,gBAAiB,UAAU,EAAE,KAAG,YAQxD,CAAC;AAEF,eAAO,MAAM,eAAe,aAChB,MAAM,UACR,eAAe,oBACN,OAAO,GAAG,QAAQ,CAAC,aAAa,KAChD,QAAQ,SAAS,CAOnB,CAAC;AAEF,eAAO,MAAM,IAAI,gBACF,MAAM,EAAE,YACX,QAAQ,eACL,MAAM,UACX,UAAU,kBACF,cAAc,6BAjBpB,MAAM,UACR,eAAe,oBACN,OAAO,GAAG,QAAQ,CAAC,aAAa,KAChD,QAAQ,SAAS,CAAC,YAgBV,eAAe,EAAE,KAgBzB,QAAQ,UAAU,EAAE,CAyCtB,CAAC;AAwBF,eAAO,MAAM,QAAQ,WACX,UAAU,kBACF,cAAc,WACtB,eAAe,KACtB,QAAQ,UAAU,EAAE,CAGtB,CAAC"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,cAAc,EACf,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAE,MAAM,IAAI,CAAC;AAIpB,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAkB,MAAM,oBAAoB,CAAC;AAkBxG,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,UAAU,EAAE,aAAa,UAAU,EAAE,EAAE,qBAAkB,KAAG,IA+CrG,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,aAAa,UAAU,EAAE,KAAG,YAQxD,CAAC;AAEF,eAAO,MAAM,eAAe,GAC1B,UAAU,MAAM,EAChB,QAAQ,OAAO,QAAQ,EACvB,kBAAiB,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAsC,KACzE,OAAO,CAAC,SAAS,CAOnB,CAAC;AAEF,eAAO,MAAM,IAAI,GACf,aAAa,MAAM,EAAE,EACrB,UAAU,QAAQ,EAClB,aAAa,MAAM,EACnB,QAAQ,UAAU,EAClB,gBAAgB,cAAc,EAC9B,2BAlBU,MAAM,UACR,OAAO,QAAQ,oBACN,OAAO,EAAE,CAAC,QAAQ,CAAC,aAAa,KAChD,OAAO,CAAC,SAAS,CAea,EAC/B,UAAS,eAAe,EAgBvB,KACA,OAAO,CAAC,UAAU,EAAE,CAyCtB,CAAC;AAwBF,eAAO,MAAM,QAAQ,GACnB,QAAQ,UAAU,EAClB,gBAAgB,cAAc,EAC9B,SAAQ,eAAiE,KACxE,OAAO,CAAC,UAAU,EAAE,CAGtB,CAAC"}
package/out/lint/lint.js CHANGED
@@ -21,6 +21,7 @@ const frame_component_linter_1 = require("./linters/frame-component-linter/frame
21
21
  const deprecated_egress_permissions_manifest_linter_1 = require("./linters/manifest-linter/deprecated-egress-permissions-manifest-linter");
22
22
  const llm_module_linter_1 = require("./linters/llm-module-linter/llm-module-linter");
23
23
  const deprecated_api_module_linter_1 = require("./linters/deprecated-api-module-linter/deprecated-api-module-linter");
24
+ const app_managed_permissions_sdk_linter_1 = require("./linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter");
24
25
  const function_timeout_linter_1 = require("./linters/function-timeout-linter/function-timeout-linter");
25
26
  const reportLintResults = (logger, lintResults, showSummary = true) => {
26
27
  let numErrors = 0, numWarnings = 0;
@@ -97,6 +98,7 @@ const lint = async (filesToLint, manifest, environment, logger, statsigService,
97
98
  new llm_module_linter_1.LlmModuleLinter(environment, manifest, logger),
98
99
  new deprecated_api_module_linter_1.DeprecatedApiModuleLinter(environment, manifest, logger),
99
100
  new deprecated_egress_permissions_manifest_linter_1.DeprecatedEgressPermissionsManifestLinter(logger, statsigService),
101
+ new app_managed_permissions_sdk_linter_1.AppManagedPermissionsSdkLinter(manifest, logger),
100
102
  new function_timeout_linter_1.FunctionTimeoutLinter(manifest, logger)
101
103
  ]) => {
102
104
  const { include, exclude } = await (0, cli_shared_1.listTSConfigIncludeExclude)(new cli_shared_1.FileSystemReader());
@@ -4,8 +4,8 @@ export declare enum LintClass {
4
4
  Error = "error",
5
5
  Warning = "warning"
6
6
  }
7
- export declare type LintLogger = Pick<Logger, 'info'>;
8
- export declare type LintFixer = (errors: LintResultRule[], warnings: LintResultRule[], state: LintFixState) => Promise<LintFixState>;
7
+ export type LintLogger = Pick<Logger, 'info'>;
8
+ export type LintFixer = (errors: LintResultRule[], warnings: LintResultRule[], state: LintFixState) => Promise<LintFixState>;
9
9
  export interface LintFixState {
10
10
  errorsFixed: number;
11
11
  warningsFixed: number;
@@ -1 +1 @@
1
- {"version":3,"file":"linter-interface.d.ts","sourceRoot":"","sources":["../../src/lint/linter-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEvD,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,oBAAY,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,oBAAY,SAAS,GAAG,CACtB,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,qBAAa,UAAU;IAKZ,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,KAAK,CAAC;IALT,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAM;gBAG9B,IAAI,EAAE,MAAM,EACX,KAAK,CAAC,uBAAW;IAGpB,GAAG,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAW/B,QAAQ,CAAC,GAAG,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAI1C,IAAI,IAAI,MAAM;IAId,QAAQ,IAAI,OAAO;IAIb,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;CAMlE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB"}
1
+ {"version":3,"file":"linter-interface.d.ts","sourceRoot":"","sources":["../../src/lint/linter-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEvD,oBAAY,SAAS;IACnB,KAAK,UAAU;IACf,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,CACtB,MAAM,EAAE,cAAc,EAAE,EACxB,QAAQ,EAAE,cAAc,EAAE,EAC1B,KAAK,EAAE,YAAY,KAChB,OAAO,CAAC,YAAY,CAAC,CAAC;AAE3B,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,UAAU,CAAC;CACxB;AAED,qBAAa,UAAU;IAKZ,IAAI,EAAE,MAAM;IACnB,OAAO,CAAC,KAAK,CAAC;IALT,MAAM,EAAE,cAAc,EAAE,CAAM;IAC9B,QAAQ,EAAE,cAAc,EAAE,CAAM;gBAG9B,IAAI,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,SAAS,YAAA;IAGpB,GAAG,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI;IAW/B,QAAQ,CAAC,GAAG,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAI1C,IAAI,IAAI,MAAM;IAId,QAAQ,IAAI,OAAO;IAIb,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC;CAMlE;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,YAAY,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CACzD;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -5,7 +5,7 @@ var LintClass;
5
5
  (function (LintClass) {
6
6
  LintClass["Error"] = "error";
7
7
  LintClass["Warning"] = "warning";
8
- })(LintClass = exports.LintClass || (exports.LintClass = {}));
8
+ })(LintClass || (exports.LintClass = LintClass = {}));
9
9
  class LintResult {
10
10
  file;
11
11
  fixer;
@@ -0,0 +1,10 @@
1
+ import { ManifestSchema as Manifest } from '@forge/manifest';
2
+ import { AbstractLinter } from '../../abstract-linter';
3
+ import { LintInput, LintLogger, LintResult } from '../../linter-interface';
4
+ export declare class AppManagedPermissionsSdkLinter extends AbstractLinter {
5
+ private readonly manifest;
6
+ constructor(manifest: Manifest, logger: LintLogger);
7
+ bootstrap(): Promise<void>;
8
+ batchExecuteImpl(inputs?: LintInput[]): Promise<LintResult[]>;
9
+ }
10
+ //# sourceMappingURL=app-managed-permissions-sdk-linter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-managed-permissions-sdk-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/app-managed-permissions-sdk-linter/app-managed-permissions-sdk-linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAiB,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAa,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAOtF,qBAAa,8BAA+B,SAAQ,cAAc;IAE9D,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,QAAQ,EACnC,MAAM,EAAE,UAAU;IAKd,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAI1B,gBAAgB,CAAC,MAAM,GAAE,SAAS,EAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;CA8BxE"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AppManagedPermissionsSdkLinter = void 0;
4
+ const manifest_1 = require("@forge/manifest");
5
+ const abstract_linter_1 = require("../../abstract-linter");
6
+ const linter_interface_1 = require("../../linter-interface");
7
+ const text_1 = require("../../text");
8
+ const detect_permission_sensitive_usage_1 = require("./detect-permission-sensitive-usage");
9
+ const detect_permissions_sdk_usage_1 = require("./detect-permissions-sdk-usage");
10
+ const manifest_declarative_permission_handling_1 = require("./manifest-declarative-permission-handling");
11
+ class AppManagedPermissionsSdkLinter extends abstract_linter_1.AbstractLinter {
12
+ manifest;
13
+ constructor(manifest, logger) {
14
+ super(logger);
15
+ this.manifest = manifest;
16
+ }
17
+ async bootstrap() {
18
+ }
19
+ async batchExecuteImpl(inputs = []) {
20
+ if (this.manifest.permissions?.enforcement !== 'app-managed') {
21
+ return [];
22
+ }
23
+ const declaresHandling = (0, manifest_declarative_permission_handling_1.manifestDeclaresDeclarativePermissionHandling)(this.manifest) ||
24
+ inputs.some(({ ast }) => ast !== null && (0, detect_permissions_sdk_usage_1.doesAstUsePermissionsSdk)(ast));
25
+ if (declaresHandling) {
26
+ return [];
27
+ }
28
+ const hasPermissionSensitiveUsage = inputs.some(({ ast }) => (0, detect_permission_sensitive_usage_1.doesAstIndicatePermissionSensitiveUsage)(ast));
29
+ if (!hasPermissionSensitiveUsage) {
30
+ return [];
31
+ }
32
+ const lintResult = new linter_interface_1.LintResult(manifest_1.MANIFEST_FILE);
33
+ lintResult.add({
34
+ class: linter_interface_1.LintClass.Warning,
35
+ message: text_1.messages.verifiers.appManagedPermissionsSdk.message(),
36
+ reference: text_1.messages.verifiers.appManagedPermissionsSdk.reference,
37
+ line: 0,
38
+ column: 0
39
+ });
40
+ return [lintResult];
41
+ }
42
+ }
43
+ exports.AppManagedPermissionsSdkLinter = AppManagedPermissionsSdkLinter;
@@ -0,0 +1,3 @@
1
+ import type { ASTParseResult } from '../../../parse';
2
+ export declare const doesAstIndicatePermissionSensitiveUsage: (ast: ASTParseResult | null) => boolean;
3
+ //# sourceMappingURL=detect-permission-sensitive-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-permission-sensitive-usage.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/app-managed-permissions-sdk-linter/detect-permission-sensitive-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAyBrD,eAAO,MAAM,uCAAuC,GAAI,KAAK,cAAc,GAAG,IAAI,KAAG,OAoBpF,CAAC"}
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.doesAstIndicatePermissionSensitiveUsage = void 0;
4
+ const visitors_1 = require("../permission-linter/visitors");
5
+ const PERMISSION_SENSITIVE_VISITORS = [
6
+ new visitors_1.ProductNodeVisitor(),
7
+ new visitors_1.ExternalApiCallVisitor(),
8
+ new visitors_1.StorageAPINodeVisitor(),
9
+ new visitors_1.UIHookNodeVisitor(),
10
+ new visitors_1.NotificationAPINodeVisitor(),
11
+ new visitors_1.ImageUrlVisitor()
12
+ ];
13
+ const doesAstIndicatePermissionSensitiveUsage = (ast) => {
14
+ if (!ast?.parsed) {
15
+ return false;
16
+ }
17
+ let found = false;
18
+ ast.traverse({
19
+ enter: (node, parent) => {
20
+ if (found) {
21
+ return;
22
+ }
23
+ for (const visitor of PERMISSION_SENSITIVE_VISITORS) {
24
+ visitor.visit(node, parent, (_match) => {
25
+ found = true;
26
+ });
27
+ }
28
+ }
29
+ });
30
+ return found;
31
+ };
32
+ exports.doesAstIndicatePermissionSensitiveUsage = doesAstIndicatePermissionSensitiveUsage;
@@ -0,0 +1,3 @@
1
+ import type { ASTParseResult } from '../../../parse';
2
+ export declare const doesAstUsePermissionsSdk: (ast: ASTParseResult) => boolean;
3
+ //# sourceMappingURL=detect-permissions-sdk-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect-permissions-sdk-usage.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/app-managed-permissions-sdk-linter/detect-permissions-sdk-usage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AA4JrD,eAAO,MAAM,wBAAwB,GAAI,KAAK,cAAc,KAAG,OAwC9D,CAAC"}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.doesAstUsePermissionsSdk = void 0;
4
+ const typescript_estree_1 = require("@typescript-eslint/typescript-estree");
5
+ const FORGE_API_MODULE = '@forge/api';
6
+ const FORGE_BRIDGE_MODULE = '@forge/bridge';
7
+ const FORGE_REACT_MODULE = '@forge/react';
8
+ const PERMISSIONS_SDK_METHODS = new Set(['hasPermission', 'hasScope', 'canFetchFrom', 'canLoadResource']);
9
+ const BRIDGE_SDK_IMPORTS = new Set(['checkPermissions', 'createPermissionUtils']);
10
+ const getImportSource = (node) => {
11
+ if (node.source.type === typescript_estree_1.AST_NODE_TYPES.Literal && typeof node.source.value === 'string') {
12
+ return node.source.value;
13
+ }
14
+ return null;
15
+ };
16
+ const collectImportBindings = (program) => {
17
+ const forgeApiPermissions = new Set();
18
+ const forgeApiNamespaces = new Set();
19
+ const forgeBridgeSdk = new Set();
20
+ const forgeBridgeNamespaces = new Set();
21
+ const forgeReactUsePermissions = new Set();
22
+ const forgeReactNamespaces = new Set();
23
+ for (const stmt of program.body) {
24
+ if (stmt.type !== typescript_estree_1.AST_NODE_TYPES.ImportDeclaration)
25
+ continue;
26
+ const source = getImportSource(stmt);
27
+ if (!source)
28
+ continue;
29
+ if (source === FORGE_API_MODULE) {
30
+ for (const spec of stmt.specifiers) {
31
+ if (spec.type === typescript_estree_1.AST_NODE_TYPES.ImportSpecifier) {
32
+ if (spec.imported.type === typescript_estree_1.AST_NODE_TYPES.Identifier && spec.imported.name === 'permissions') {
33
+ forgeApiPermissions.add(spec.local.name);
34
+ }
35
+ }
36
+ else if (spec.type === typescript_estree_1.AST_NODE_TYPES.ImportNamespaceSpecifier) {
37
+ forgeApiNamespaces.add(spec.local.name);
38
+ }
39
+ }
40
+ }
41
+ else if (source === FORGE_BRIDGE_MODULE) {
42
+ for (const spec of stmt.specifiers) {
43
+ if (spec.type === typescript_estree_1.AST_NODE_TYPES.ImportNamespaceSpecifier) {
44
+ forgeBridgeNamespaces.add(spec.local.name);
45
+ }
46
+ else if (spec.type === typescript_estree_1.AST_NODE_TYPES.ImportSpecifier && spec.imported.type === typescript_estree_1.AST_NODE_TYPES.Identifier) {
47
+ if (BRIDGE_SDK_IMPORTS.has(spec.imported.name)) {
48
+ forgeBridgeSdk.add(spec.local.name);
49
+ }
50
+ }
51
+ }
52
+ }
53
+ else if (source === FORGE_REACT_MODULE) {
54
+ for (const spec of stmt.specifiers) {
55
+ if (spec.type === typescript_estree_1.AST_NODE_TYPES.ImportNamespaceSpecifier) {
56
+ forgeReactNamespaces.add(spec.local.name);
57
+ }
58
+ else if (spec.type === typescript_estree_1.AST_NODE_TYPES.ImportSpecifier && spec.imported.type === typescript_estree_1.AST_NODE_TYPES.Identifier) {
59
+ if (spec.imported.name === 'usePermissions') {
60
+ forgeReactUsePermissions.add(spec.local.name);
61
+ }
62
+ }
63
+ }
64
+ }
65
+ }
66
+ return {
67
+ forgeApiPermissions,
68
+ forgeApiNamespaces,
69
+ forgeBridgeSdk,
70
+ forgeBridgeNamespaces,
71
+ forgeReactUsePermissions,
72
+ forgeReactNamespaces
73
+ };
74
+ };
75
+ const flattenMemberExpression = (expr) => {
76
+ const chain = [];
77
+ let current = expr;
78
+ while (current.type === typescript_estree_1.AST_NODE_TYPES.MemberExpression) {
79
+ if (current.property.type !== typescript_estree_1.AST_NODE_TYPES.Identifier) {
80
+ return undefined;
81
+ }
82
+ chain.unshift(current.property.name);
83
+ current = current.object;
84
+ }
85
+ return { root: current, chain };
86
+ };
87
+ const isForgeApiPermissionsCall = (callee, bindings) => {
88
+ const flat = flattenMemberExpression(callee);
89
+ if (!flat)
90
+ return false;
91
+ const { root, chain } = flat;
92
+ if (root.type !== typescript_estree_1.AST_NODE_TYPES.Identifier) {
93
+ return false;
94
+ }
95
+ if (chain.length === 1 && PERMISSIONS_SDK_METHODS.has(chain[0])) {
96
+ return bindings.forgeApiPermissions.has(root.name);
97
+ }
98
+ if (chain.length === 2 &&
99
+ chain[0] === 'permissions' &&
100
+ PERMISSIONS_SDK_METHODS.has(chain[1]) &&
101
+ bindings.forgeApiNamespaces.has(root.name)) {
102
+ return true;
103
+ }
104
+ return false;
105
+ };
106
+ const isForgeBridgeSdkCall = (callee, bindings) => {
107
+ const flat = flattenMemberExpression(callee);
108
+ if (!flat)
109
+ return false;
110
+ const { root, chain } = flat;
111
+ if (root.type !== typescript_estree_1.AST_NODE_TYPES.Identifier)
112
+ return false;
113
+ if (chain.length !== 1 || !BRIDGE_SDK_IMPORTS.has(chain[0]))
114
+ return false;
115
+ return bindings.forgeBridgeNamespaces.has(root.name);
116
+ };
117
+ const isForgeReactUsePermissionsCall = (callee, bindings) => {
118
+ const flat = flattenMemberExpression(callee);
119
+ if (!flat)
120
+ return false;
121
+ const { root, chain } = flat;
122
+ if (root.type !== typescript_estree_1.AST_NODE_TYPES.Identifier)
123
+ return false;
124
+ if (chain.length !== 1 || chain[0] !== 'usePermissions')
125
+ return false;
126
+ return bindings.forgeReactNamespaces.has(root.name);
127
+ };
128
+ const doesAstUsePermissionsSdk = (ast) => {
129
+ const program = ast.parsed;
130
+ if (!program)
131
+ return false;
132
+ const bindings = collectImportBindings(program);
133
+ let found = false;
134
+ ast.traverse({
135
+ enter: (node) => {
136
+ if (found || node.type !== typescript_estree_1.AST_NODE_TYPES.CallExpression)
137
+ return;
138
+ const callee = node.callee;
139
+ if (callee.type === typescript_estree_1.AST_NODE_TYPES.Identifier && bindings.forgeBridgeSdk.has(callee.name)) {
140
+ found = true;
141
+ return;
142
+ }
143
+ if (callee.type === typescript_estree_1.AST_NODE_TYPES.Identifier && bindings.forgeReactUsePermissions.has(callee.name)) {
144
+ found = true;
145
+ return;
146
+ }
147
+ if (callee.type === typescript_estree_1.AST_NODE_TYPES.MemberExpression && isForgeApiPermissionsCall(callee, bindings)) {
148
+ found = true;
149
+ return;
150
+ }
151
+ if (callee.type === typescript_estree_1.AST_NODE_TYPES.MemberExpression && isForgeBridgeSdkCall(callee, bindings)) {
152
+ found = true;
153
+ return;
154
+ }
155
+ if (callee.type === typescript_estree_1.AST_NODE_TYPES.MemberExpression && isForgeReactUsePermissionsCall(callee, bindings)) {
156
+ found = true;
157
+ }
158
+ }
159
+ });
160
+ return found;
161
+ };
162
+ exports.doesAstUsePermissionsSdk = doesAstUsePermissionsSdk;
@@ -0,0 +1,3 @@
1
+ import type { ManifestSchema as Manifest } from '@forge/manifest';
2
+ export declare const manifestDeclaresDeclarativePermissionHandling: (manifest: Manifest) => boolean;
3
+ //# sourceMappingURL=manifest-declarative-permission-handling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest-declarative-permission-handling.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/app-managed-permissions-sdk-linter/manifest-declarative-permission-handling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAiDlE,eAAO,MAAM,6CAA6C,GAAI,UAAU,QAAQ,KAAG,OAuBlF,CAAC"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.manifestDeclaresDeclarativePermissionHandling = void 0;
4
+ const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
5
+ const moduleEntryUsesPermissionDisplayConditions = (entry) => {
6
+ if (!isRecord(entry))
7
+ return false;
8
+ const displayConditions = entry.displayConditions;
9
+ if (!isRecord(displayConditions))
10
+ return false;
11
+ return Object.prototype.hasOwnProperty.call(displayConditions, 'permissions');
12
+ };
13
+ const expressionReferencesEventPermissions = (expression) => typeof expression === 'string' && expression.includes('event.permissions');
14
+ const triggerEntryUsesEventPermissionsFilter = (entry) => {
15
+ if (!isRecord(entry))
16
+ return false;
17
+ const topFilter = entry.filter;
18
+ if (isRecord(topFilter) && expressionReferencesEventPermissions(topFilter.expression)) {
19
+ return true;
20
+ }
21
+ const events = entry.events;
22
+ if (!Array.isArray(events))
23
+ return false;
24
+ for (const ev of events) {
25
+ if (!isRecord(ev))
26
+ continue;
27
+ const filter = ev.filter;
28
+ if (isRecord(filter) && expressionReferencesEventPermissions(filter.expression)) {
29
+ return true;
30
+ }
31
+ }
32
+ return false;
33
+ };
34
+ const manifestDeclaresDeclarativePermissionHandling = (manifest) => {
35
+ const modules = manifest.modules;
36
+ if (!isRecord(modules))
37
+ return false;
38
+ for (const value of Object.values(modules)) {
39
+ if (!Array.isArray(value))
40
+ continue;
41
+ for (const entry of value) {
42
+ if (moduleEntryUsesPermissionDisplayConditions(entry)) {
43
+ return true;
44
+ }
45
+ }
46
+ }
47
+ const triggers = modules.trigger;
48
+ if (Array.isArray(triggers)) {
49
+ for (const entry of triggers) {
50
+ if (triggerEntryUsesEventPermissionsFilter(entry)) {
51
+ return true;
52
+ }
53
+ }
54
+ }
55
+ return false;
56
+ };
57
+ exports.manifestDeclaresDeclarativePermissionHandling = manifestDeclaresDeclarativePermissionHandling;
@@ -1,7 +1,7 @@
1
1
  import { LintCriteriaMatch } from '../../linter-interface';
2
2
  export declare const FORGE_API_PACKAGE = "@forge/api";
3
3
  export declare const DEPRECATED_STORAGE_EXPORT_NAME = "storage";
4
- export declare type DeprecatedApiStorageMatch = LintCriteriaMatch;
4
+ export type DeprecatedApiStorageMatch = LintCriteriaMatch;
5
5
  export interface DeprecatedApiStorageMatches {
6
6
  [key: string]: DeprecatedApiStorageMatch[];
7
7
  deprecatedApiStorage: DeprecatedApiStorageMatch[];
@@ -1 +1 @@
1
- {"version":3,"file":"deprecated-api-module-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/deprecated-api-module-linter/deprecated-api-module-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,8BAA8B,YAAY,CAAC;AAExD,oBAAY,yBAAyB,GAAG,iBAAiB,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAC3C,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;CACnD"}
1
+ {"version":3,"file":"deprecated-api-module-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/deprecated-api-module-linter/deprecated-api-module-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAC9C,eAAO,MAAM,8BAA8B,YAAY,CAAC;AAExD,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,CAAC;AAE1D,MAAM,WAAW,2BAA2B;IAC1C,CAAC,GAAG,EAAE,MAAM,GAAG,yBAAyB,EAAE,CAAC;IAC3C,oBAAoB,EAAE,yBAAyB,EAAE,CAAC;CACnD"}
@@ -26,8 +26,8 @@ export interface InvokeEndpointImportList extends LintCriteriaMatch {
26
26
  type: InvokeEndpointTypes.IMPORT_LIST;
27
27
  imports: InvokeEndpointImport[];
28
28
  }
29
- export declare type InvokeEndpointCall = InvokeEndpointDirectCall | InvokeEndpointMemberCall;
30
- export declare type InvokeEndpointUsage = InvokeEndpointCall | InvokeEndpointImportList;
29
+ export type InvokeEndpointCall = InvokeEndpointDirectCall | InvokeEndpointMemberCall;
30
+ export type InvokeEndpointUsage = InvokeEndpointCall | InvokeEndpointImportList;
31
31
  export interface InvokeEndpointVerifierInput {
32
32
  invokeEndpointCalls: InvokeEndpointCall[];
33
33
  imports: InvokeEndpointImport[];
@@ -1 +1 @@
1
- {"version":3,"file":"invoke-endpoint-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/endpoint-linter/invoke-endpoint-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,oBAAY,mBAAmB;IAC7B,WAAW,IAAA;IACX,WAAW,IAAA;IACX,WAAW,IAAA;CACZ;AAED,eAAO,MAAM,4BAA4B,eAAe,CAAC;AACzD,eAAO,MAAM,6BAA6B,iBAAiB,CAAC;AAE5D,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,oBAAY,kBAAkB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAErF,oBAAY,mBAAmB,GAAG,kBAAkB,GAAG,wBAAwB,CAAC;AAEhF,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC"}
1
+ {"version":3,"file":"invoke-endpoint-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/endpoint-linter/invoke-endpoint-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,oBAAY,mBAAmB;IAC7B,WAAW,IAAA;IACX,WAAW,IAAA;IACX,WAAW,IAAA;CACZ;AAED,eAAO,MAAM,4BAA4B,eAAe,CAAC;AACzD,eAAO,MAAM,6BAA6B,iBAAiB,CAAC;AAE5D,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,wBAAyB,SAAQ,sBAAsB;IACtE,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,iBAAiB;IAC7D,IAAI,EAAE,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,wBAAyB,SAAQ,iBAAiB;IACjE,IAAI,EAAE,mBAAmB,CAAC,WAAW,CAAC;IACtC,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC;AAED,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,GAAG,wBAAwB,CAAC;AAErF,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG,wBAAwB,CAAC;AAEhF,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,kBAAkB,EAAE,CAAC;IAC1C,OAAO,EAAE,oBAAoB,EAAE,CAAC;CACjC"}
@@ -6,6 +6,6 @@ var InvokeEndpointTypes;
6
6
  InvokeEndpointTypes[InvokeEndpointTypes["DIRECT_CALL"] = 0] = "DIRECT_CALL";
7
7
  InvokeEndpointTypes[InvokeEndpointTypes["MEMBER_CALL"] = 1] = "MEMBER_CALL";
8
8
  InvokeEndpointTypes[InvokeEndpointTypes["IMPORT_LIST"] = 2] = "IMPORT_LIST";
9
- })(InvokeEndpointTypes = exports.InvokeEndpointTypes || (exports.InvokeEndpointTypes = {}));
9
+ })(InvokeEndpointTypes || (exports.InvokeEndpointTypes = InvokeEndpointTypes = {}));
10
10
  exports.INVOKE_ENDPOINT_PACKAGE_NAME = '@forge/api';
11
11
  exports.INVOKE_ENDPOINT_FUNCTION_NAME = 'invokeRemote';
@@ -1,5 +1,5 @@
1
1
  import { LintCriteriaMatch } from '../../linter-interface';
2
- export declare type FrameResourceInfo = LintCriteriaMatch & {
2
+ export type FrameResourceInfo = LintCriteriaMatch & {
3
3
  resource: string | undefined;
4
4
  };
5
5
  //# sourceMappingURL=frame-component-interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"frame-component-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/frame-component-linter/frame-component-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,oBAAY,iBAAiB,GAAG,iBAAiB,GAAG;IAClD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"frame-component-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/frame-component-linter/frame-component-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG;IAClD,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"webtrigger-url-format-manifest-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/manifest-linter/webtrigger-url-format-manifest-linter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItE,eAAO,MAAM,mBAAmB,YACrB,cAAc,EAAE,aACd,cAAc,EAAE,SACpB,YAAY,KAClB,QAAQ,YAAY,CA+BtB,CAAC"}
1
+ {"version":3,"file":"webtrigger-url-format-manifest-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/manifest-linter/webtrigger-url-format-manifest-linter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAItE,eAAO,MAAM,mBAAmB,GAC9B,SAAS,cAAc,EAAE,EACzB,WAAW,cAAc,EAAE,EAC3B,OAAO,YAAY,KAClB,OAAO,CAAC,YAAY,CA+BtB,CAAC"}
@@ -8,7 +8,7 @@ export declare enum ApiCallTypes {
8
8
  'IMAGE' = 5,
9
9
  'NOTIFICATION' = 6
10
10
  }
11
- export declare type ProductName = 'jira' | 'confluence' | 'bitbucket';
11
+ export type ProductName = 'jira' | 'confluence' | 'bitbucket';
12
12
  export interface ProductApiCall extends LintCriteriaMatch {
13
13
  type: ApiCallTypes.PRODUCT;
14
14
  product: ProductName;
@@ -39,5 +39,5 @@ export interface ContentPropertyApiCall extends LintCriteriaMatch {
39
39
  export interface NotificationApiCall extends LintCriteriaMatch {
40
40
  type: ApiCallTypes.NOTIFICATION;
41
41
  }
42
- export declare type ApiCall = ProductApiCall | UIHookApiCall | StorageApiCall | ExternalApiCall | ImageUrl | ContentPropertyApiCall | NotificationApiCall;
42
+ export type ApiCall = ProductApiCall | UIHookApiCall | StorageApiCall | ExternalApiCall | ImageUrl | ContentPropertyApiCall | NotificationApiCall;
43
43
  //# sourceMappingURL=api-call-interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-call-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/permission-linter/api-call-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,oBAAY,YAAY;IACtB,SAAS,IAAA;IACT,MAAM,IAAA;IACN,SAAS,IAAA;IACT,UAAU,IAAA;IACV,kBAAkB,IAAA;IAClB,OAAO,IAAA;IACP,cAAc,IAAA;CACf;AAED,oBAAY,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAS,SAAQ,iBAAiB;IACjD,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,IAAI,EAAE,YAAY,CAAC,gBAAgB,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC;CACjC;AAED,oBAAY,OAAO,GACf,cAAc,GACd,aAAa,GACb,cAAc,GACd,eAAe,GACf,QAAQ,GACR,sBAAsB,GACtB,mBAAmB,CAAC"}
1
+ {"version":3,"file":"api-call-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/permission-linter/api-call-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,oBAAY,YAAY;IACtB,SAAS,IAAA;IACT,MAAM,IAAA;IACN,SAAS,IAAA;IACT,UAAU,IAAA;IACV,kBAAkB,IAAA;IAClB,OAAO,IAAA;IACP,cAAc,IAAA;CACf;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;IAC3B,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAc,SAAQ,iBAAiB;IACtD,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,IAAI,EAAE,YAAY,CAAC,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC;IAC5B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,QAAS,SAAQ,iBAAiB;IACjD,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,sBAAuB,SAAQ,iBAAiB;IAC/D,IAAI,EAAE,YAAY,CAAC,gBAAgB,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,IAAI,EAAE,YAAY,CAAC,YAAY,CAAC;CACjC;AAED,MAAM,MAAM,OAAO,GACf,cAAc,GACd,aAAa,GACb,cAAc,GACd,eAAe,GACf,QAAQ,GACR,sBAAsB,GACtB,mBAAmB,CAAC"}
@@ -10,4 +10,4 @@ var ApiCallTypes;
10
10
  ApiCallTypes[ApiCallTypes["CONTENT_PROPERTY"] = 4] = "CONTENT_PROPERTY";
11
11
  ApiCallTypes[ApiCallTypes["IMAGE"] = 5] = "IMAGE";
12
12
  ApiCallTypes[ApiCallTypes["NOTIFICATION"] = 6] = "NOTIFICATION";
13
- })(ApiCallTypes = exports.ApiCallTypes || (exports.ApiCallTypes = {}));
13
+ })(ApiCallTypes || (exports.ApiCallTypes = ApiCallTypes = {}));
@@ -9,7 +9,7 @@ interface SwaggerFormat {
9
9
  };
10
10
  }
11
11
  export declare const NON_FWD_SLASH_REGEX = "[^\\/\\s]*";
12
- export declare const findMissingPermissions: (errors: LintResultRule[], warnings: LintResultRule[], permissionsType: 'missingPermission' | 'missingExternalFetchPermission' | 'missingContentStylePermission' | 'missingExternalImagesPermission', state?: LintFixState) => Set<string>;
12
+ export declare const findMissingPermissions: (errors: LintResultRule[], warnings: LintResultRule[], permissionsType: "missingPermission" | "missingExternalFetchPermission" | "missingContentStylePermission" | "missingExternalImagesPermission", state?: LintFixState) => Set<string>;
13
13
  export declare const deprecatedEgressPermissions: (warnings: LintResultRule[], state?: LintFixState) => boolean;
14
14
  export declare const fixMissingPermissions: (errors: LintResultRule[], warnings: LintResultRule[], state: LintFixState) => Promise<LintFixState>;
15
15
  interface PermissionLintCriteriaMatches {
@@ -1 +1 @@
1
- {"version":3,"file":"permission-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/permission-linter/permission-linter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,IAAI,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAE/E,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,OAAO,EAEP,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAML,WAAW,EAIZ,MAAM,aAAa,CAAC;AAarB,UAAU,aAAa;IACrB,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;KAC7B,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAKhD,eAAO,MAAM,sBAAsB,WACzB,cAAc,EAAE,YACd,cAAc,EAAE,mBAEtB,mBAAmB,GACnB,gCAAgC,GAChC,+BAA+B,GAC/B,iCAAiC,UAC7B,YAAY,KACnB,IAAI,MAAM,CAkBZ,CAAC;AAEF,eAAO,MAAM,2BAA2B,aAAc,cAAc,EAAE,UAAU,YAAY,KAAG,OAI9F,CAAC;AAsCF,eAAO,MAAM,qBAAqB,WACxB,cAAc,EAAE,YACd,cAAc,EAAE,SACnB,YAAY,KAClB,QAAQ,YAAY,CAyEtB,CAAC;AAEF,UAAU,6BAA6B;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,YAAY,EAAE,mBAAmB,EAAE,CAAC;CACrC;AAED,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,CAAC;IAe/F,OAAO,CAAC,QAAQ;IAdlB,MAAM,CAAC,cAAc,SAAgC;IACrD,MAAM,CAAC,aAAa,SAA+B;IACnD,MAAM,CAAC,aAAa,SAA+B;IACnD,MAAM,CAAC,oBAAoB,SAAsC;IACjE,MAAM,CAAC,uBAAuB,SAAyC;IACvE,MAAM,CAAC,mBAAmB,SAAqC;IAE/D,OAAO,CAAC,IAAI,CAAC,CAA0B;IACvC,OAAO,CAAC,UAAU,CAAC,CAA0B;IAC7C,OAAO,CAAC,SAAS,CAAC,CAA0B;IAC5C,OAAO,CAAC,KAAK,CAAC,CAAa;gBAGzB,WAAW,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAC1B,MAAM,EAAE,UAAU;IAKP,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA6FvC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAejD,SAAS,CAAC,QAAQ,IACd,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GACtG,SAAS;IAIb,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAyB3D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAWtE,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAKrE,OAAO,CAAC,YAAY;CAarB"}
1
+ {"version":3,"file":"permission-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/permission-linter/permission-linter.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,IAAI,QAAQ,EAAe,MAAM,iBAAiB,CAAC;AAE/E,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EACL,OAAO,EAEP,eAAe,EACf,QAAQ,EACR,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAML,WAAW,EAIZ,MAAM,aAAa,CAAC;AAarB,UAAU,aAAa;IACrB,KAAK,EAAE;QACL,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;KAC7B,CAAC;CACH;AAED,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAKhD,eAAO,MAAM,sBAAsB,GACjC,QAAQ,cAAc,EAAE,EACxB,UAAU,cAAc,EAAE,EAC1B,iBACI,mBAAmB,GACnB,gCAAgC,GAChC,+BAA+B,GAC/B,iCAAiC,EACrC,QAAQ,YAAY,KACnB,GAAG,CAAC,MAAM,CAkBZ,CAAC;AAEF,eAAO,MAAM,2BAA2B,GAAI,UAAU,cAAc,EAAE,EAAE,QAAQ,YAAY,KAAG,OAI9F,CAAC;AAsCF,eAAO,MAAM,qBAAqB,GAChC,QAAQ,cAAc,EAAE,EACxB,UAAU,cAAc,EAAE,EAC1B,OAAO,YAAY,KAClB,OAAO,CAAC,YAAY,CAyEtB,CAAC;AAEF,UAAU,6BAA6B;IACrC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,YAAY,EAAE,mBAAmB,EAAE,CAAC;CACrC;AAED,qBAAa,gBAAiB,SAAQ,UAAU,CAAC,OAAO,EAAE,6BAA6B,EAAE,OAAO,EAAE,CAAC;IAe/F,OAAO,CAAC,QAAQ;IAdlB,MAAM,CAAC,cAAc,SAAgC;IACrD,MAAM,CAAC,aAAa,SAA+B;IACnD,MAAM,CAAC,aAAa,SAA+B;IACnD,MAAM,CAAC,oBAAoB,SAAsC;IACjE,MAAM,CAAC,uBAAuB,SAAyC;IACvE,MAAM,CAAC,mBAAmB,SAAqC;IAE/D,OAAO,CAAC,IAAI,CAAC,CAA0B;IACvC,OAAO,CAAC,UAAU,CAAC,CAA0B;IAC7C,OAAO,CAAC,SAAS,CAAC,CAA0B;IAC5C,OAAO,CAAC,KAAK,CAAC,CAAa;gBAGzB,WAAW,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAC1B,MAAM,EAAE,UAAU;IAKP,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA6FvC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAejD,SAAS,CAAC,QAAQ,IACd,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GACtG,SAAS;IAIb,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAyB3D,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAWtE,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAKrE,OAAO,CAAC,YAAY;CAarB"}
@@ -17,7 +17,7 @@ export interface PathMethods {
17
17
  interface SecurityEntry {
18
18
  [authType: string]: string[];
19
19
  }
20
- export declare type ProductPathToMethodsMap = Map<RegExp, ProductMethod>;
20
+ export type ProductPathToMethodsMap = Map<RegExp, ProductMethod>;
21
21
  export declare class ProductVerifier extends BaseLintIssueVerifier implements LintIssueVerifier<ApiCall[]> {
22
22
  private readonly pathMap;
23
23
  private readonly product;
@@ -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,EAAoB,MAAM,iBAAiB,CAAC;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AACvD,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;IAuC3E,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,aAAa;CAWtB"}
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,8BAA8B,CAAC;AACvD,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,MAAM,MAAM,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;IAuC3E,OAAO,CAAC,aAAa;IAerB,OAAO,CAAC,0BAA0B;IAOlC,OAAO,CAAC,iBAAiB;IAqBzB,OAAO,CAAC,aAAa;CAWtB"}
@@ -3,9 +3,9 @@ export declare enum ApiCallTypes {
3
3
  'SQL' = 0,
4
4
  'OS' = 1
5
5
  }
6
- export declare type ProductName = 'jira' | 'confluence' | 'bitbucket';
6
+ export type ProductName = 'jira' | 'confluence' | 'bitbucket';
7
7
  export interface StorageApiCall extends LintCriteriaMatch {
8
8
  type: ApiCallTypes.SQL | ApiCallTypes.OS;
9
9
  }
10
- export declare type ApiCall = StorageApiCall;
10
+ export type ApiCall = StorageApiCall;
11
11
  //# sourceMappingURL=api-call-interface.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api-call-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/storage-module-linter/api-call-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,oBAAY,YAAY;IACtB,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,oBAAY,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,IAAI,EAAE,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,EAAE,CAAC;CAC1C;AAED,oBAAY,OAAO,GAAG,cAAc,CAAC"}
1
+ {"version":3,"file":"api-call-interface.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/storage-module-linter/api-call-interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,oBAAY,YAAY;IACtB,KAAK,IAAA;IACL,IAAI,IAAA;CACL;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,CAAC;AAE9D,MAAM,WAAW,cAAe,SAAQ,iBAAiB;IACvD,IAAI,EAAE,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,EAAE,CAAC;CAC1C;AAED,MAAM,MAAM,OAAO,GAAG,cAAc,CAAC"}
@@ -5,4 +5,4 @@ var ApiCallTypes;
5
5
  (function (ApiCallTypes) {
6
6
  ApiCallTypes[ApiCallTypes["SQL"] = 0] = "SQL";
7
7
  ApiCallTypes[ApiCallTypes["OS"] = 1] = "OS";
8
- })(ApiCallTypes = exports.ApiCallTypes || (exports.ApiCallTypes = {}));
8
+ })(ApiCallTypes || (exports.ApiCallTypes = ApiCallTypes = {}));
@@ -1 +1 @@
1
- {"version":3,"file":"storage-module-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/storage-module-linter/storage-module-linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAW,MAAM,iBAAiB,CAAC;AACtE,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAgB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM7E,UAAU,gCAAgC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,GAAG,EAAE,cAAc,EAAE,CAAC;IACtB,EAAE,EAAE,cAAc,EAAE,CAAC;CACtB;AAaD,eAAO,MAAM,iBAAiB,WACpB,cAAc,EAAE,YACd,cAAc,EAAE,SACnB,YAAY,KAClB,QAAQ,YAAY,CAmCtB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,OAAO,EAAE,gCAAgC,EAAE,OAAO,EAAE,CAAC;IAGtG,OAAO,CAAC,QAAQ;gBADhB,WAAW,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAC1B,MAAM,EAAE,UAAU;IAKP,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOjD,SAAS,CAAC,QAAQ,IACd,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GACtG,SAAS;IAIb,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAWzE"}
1
+ {"version":3,"file":"storage-module-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/storage-module-linter/storage-module-linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAW,MAAM,iBAAiB,CAAC;AACtE,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,OAAO,EAAgB,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAM7E,UAAU,gCAAgC;IACxC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,EAAE,CAAC;IACzB,GAAG,EAAE,cAAc,EAAE,CAAC;IACtB,EAAE,EAAE,cAAc,EAAE,CAAC;CACtB;AAaD,eAAO,MAAM,iBAAiB,GAC5B,QAAQ,cAAc,EAAE,EACxB,UAAU,cAAc,EAAE,EAC1B,OAAO,YAAY,KAClB,OAAO,CAAC,YAAY,CAmCtB,CAAC;AAEF,qBAAa,oBAAqB,SAAQ,UAAU,CAAC,OAAO,EAAE,gCAAgC,EAAE,OAAO,EAAE,CAAC;IAGtG,OAAO,CAAC,QAAQ;gBADhB,WAAW,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAC1B,MAAM,EAAE,UAAU;IAKP,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IASvC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAOjD,SAAS,CAAC,QAAQ,IACd,CAAC,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,EAAE,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,GACtG,SAAS;IAIb,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAWzE"}
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lint/linters/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,eAAO,MAAM,aAAa,eAAgB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,WAMxD,CAAC;AAEF,eAAO,MAAM,eAAe,WAAY,MAAM,aAA2D,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lint/linters/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,eAAO,MAAM,aAAa,GAAI,YAAY;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,WAMxD,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,aAA2D,CAAC"}
@@ -69,6 +69,10 @@ export declare const messages: {
69
69
  message: () => string;
70
70
  reference: string;
71
71
  };
72
+ appManagedPermissionsSdk: {
73
+ message: () => string;
74
+ reference: string;
75
+ };
72
76
  functionTimeout: {
73
77
  shared: {
74
78
  message: (functionKey: string, conflictingModuleKey: string, conflictingModuleType: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/lint/text/messages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;2BAGA,MAAM;2BAEN,MAAM,KAAG,MAAM;;;;2BAKf,MAAM;2BAER,MAAM;;;;2BAKJ,MAAM;2BAEN,MAAM,KAAG,MAAM;;;;iCAKT,MAAM;;;;iCAKN,MAAM;;;;8BAKT,MAAM,OAAO,MAAM;;;;+BAKlB,MAAM,UAAU,MAAM,QAAQ,MAAM,GAAG,SAAS,SAAS,MAAM;;;;6BAKjE,MAAM;;;;+BAIJ,MAAM,QAAQ,MAAM,SAAS,MAAM;;;;8BAKpC,MAAM;;;;8BAIN,MAAM;;;;8BAIN,MAAM;;;;;;;;;oCASF,MAAM;;;;;6BAOX,MAAM,WAAW,MAAM;;;;;;;;;uCAWf,MAAM,wBAAwB,MAAM,yBAAyB,MAAM;;;;uCAKnE,MAAM,kBAAkB,MAAM,aAAa,MAAM,cAAc,MAAM;;;;;CAMnG,CAAC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/lint/text/messages.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,QAAQ;;;2BAGA,MAAM;2BAEN,MAAM,KAAG,MAAM;;;;2BAKf,MAAM;2BAER,MAAM;;;;2BAKJ,MAAM;2BAEN,MAAM,KAAG,MAAM;;;;iCAKT,MAAM;;;;iCAKN,MAAM;;;;8BAKT,MAAM,OAAO,MAAM;;;;+BAKlB,MAAM,UAAU,MAAM,QAAQ,MAAM,GAAG,SAAS,SAAS,MAAM;;;;6BAKjE,MAAM;;;;+BAIJ,MAAM,QAAQ,MAAM,SAAS,MAAM;;;;8BAKpC,MAAM;;;;8BAIN,MAAM;;;;8BAIN,MAAM;;;;;;;;;oCASF,MAAM;;;;;6BAOX,MAAM,WAAW,MAAM;;;;;;;;;;;;;uCAgBf,MAAM,wBAAwB,MAAM,yBAAyB,MAAM;;;;uCAKnE,MAAM,kBAAkB,MAAM,aAAa,MAAM,cAAc,MAAM;;;;;CAMnG,CAAC"}
@@ -75,6 +75,10 @@ exports.messages = {
75
75
  message: () => `The \"storage\" export from \"@forge/api\" is deprecated. Use the \"@forge/kvs\" package instead.`,
76
76
  reference: 'deprecated-api-storage'
77
77
  },
78
+ appManagedPermissionsSdk: {
79
+ message: () => 'App-managed permissions enforcement is set in the manifest. Source files include API usage that requires OAuth scopes (such as requestJira or external fetch), without checks for when those scopes are missing. Use the Permissions SDK (@forge/api, @forge/bridge, or @forge/react), displayConditions.permissions, or a trigger filter that references event.permissions.',
80
+ reference: 'https://go.atlassian.com/forge-permissions-sdk'
81
+ },
78
82
  functionTimeout: {
79
83
  shared: {
80
84
  message: (functionKey, conflictingModuleKey, conflictingModuleType) => `Function "${functionKey}" is used by a consumer and ${conflictingModuleType} "${conflictingModuleKey}". Consumer functions must not be shared with other modules. Use a separate function for each module type.`,
@@ -11,6 +11,7 @@ export interface ParseOptions {
11
11
  errorOnTypeScriptSyntacticAndSemanticIssues: true;
12
12
  loc: true;
13
13
  filePath: string;
14
+ loggerFn?: false | ((message: string) => void);
14
15
  tsConfigRootDir?: string;
15
16
  project?: string;
16
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,GAAG,EAGH,QAAQ,EACR,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAG9C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAC1D;AAGD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;CACzE;AAKD,MAAM,WAAW,YAAY;IAC3B,2CAA2C,EAAE,IAAI,CAAC;IAClD,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,qBAAsB,MAAM,oBAAoB,gBAAgB,KAAG,YAWjG,CAAC;AAEF,eAAO,MAAM,QAAQ,SACb,MAAM,YACF,MAAM,iBACD,QAAQ,YAAY,CAAC,KACnC,QAAQ,cAAc,CAYxB,CAAC"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../src/parse/parser.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,GAAG,EAGH,QAAQ,EACR,eAAe,EAChB,MAAM,sCAAsC,CAAC;AAG9C,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,GAAG,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,OAAO,EAAE,2BAA2B,KAAK,IAAI,CAAC;CAC1D;AAGD,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;CACzE;AAKD,MAAM,WAAW,YAAY;IAC3B,2CAA2C,EAAE,IAAI,CAAC;IAClD,GAAG,EAAE,IAAI,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;IAIjB,QAAQ,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,kBAAkB,GAAI,kBAAkB,MAAM,EAAE,kBAAkB,gBAAgB,KAAG,YAajG,CAAC;AAEF,eAAO,MAAM,QAAQ,GACnB,MAAM,MAAM,EACZ,UAAU,MAAM,EAChB,eAAe,OAAO,CAAC,YAAY,CAAC,KACnC,OAAO,CAAC,cAAc,CAYxB,CAAC"}
@@ -14,6 +14,7 @@ const createParseOptions = (absoluteFilePath, fileSystemReader) => {
14
14
  errorOnTypeScriptSyntacticAndSemanticIssues: true,
15
15
  loc: true,
16
16
  filePath: absoluteFilePath,
17
+ loggerFn: false,
17
18
  ...tsconfigOptions
18
19
  };
19
20
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/lint",
3
- "version": "6.0.0-next.9",
3
+ "version": "6.0.1-next.0",
4
4
  "description": "Linting for forge apps",
5
5
  "main": "out/index.js",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",
@@ -11,7 +11,7 @@
11
11
  },
12
12
  "devDependencies": {
13
13
  "@atlassian/xen-test-util": "^4.2.0",
14
- "@forge/api": "^8.0.0-next.2",
14
+ "@forge/api": "^8.0.1-next.0",
15
15
  "@types/array.prototype.flatmap": "^1.2.6",
16
16
  "@types/cross-spawn": "^6.0.6",
17
17
  "@types/eslint": "8.56.12",
@@ -19,10 +19,10 @@
19
19
  "eslint-plugin-import": "^2.29.1"
20
20
  },
21
21
  "dependencies": {
22
- "@forge/cli-shared": "9.0.0-next.7",
23
- "@forge/csp": "6.0.0-next.3",
24
- "@forge/egress": "3.0.0-next.0",
25
- "@forge/manifest": "13.0.0-next.2",
22
+ "@forge/cli-shared": "9.0.1-next.0",
23
+ "@forge/csp": "6.0.0",
24
+ "@forge/egress": "3.0.0",
25
+ "@forge/manifest": "13.1.0-next.0",
26
26
  "@typescript-eslint/typescript-estree": "^5.62.0",
27
27
  "array.prototype.flatmap": "^1.3.3",
28
28
  "@atlassian/atlassian-openapi": "^1.0.6",