@forge/lint 5.15.2-next.4 → 5.16.0-experimental-43cfec4

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,45 @@
1
1
  # @forge/lint
2
2
 
3
+ ## 5.16.0-experimental-43cfec4
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [43cfec4]
8
+ - @forge/manifest@12.2.0-experimental-43cfec4
9
+ - @forge/cli-shared@8.16.0-experimental-43cfec4
10
+ - @forge/csp@5.6.1-experimental-43cfec4
11
+
12
+ ## 5.16.0
13
+
14
+ ### Minor Changes
15
+
16
+ - 7ef2435: Add lint rule to warn about deprecation of storage module in @forge/api package.
17
+
18
+ ### Patch Changes
19
+
20
+ - Updated dependencies [ad5a470]
21
+ - Updated dependencies [7e3c9ae]
22
+ - Updated dependencies [c70bd69]
23
+ - Updated dependencies [43cbfaf]
24
+ - Updated dependencies [3a792a2]
25
+ - Updated dependencies [4210da0]
26
+ - @forge/manifest@12.2.0
27
+ - @forge/cli-shared@8.16.0
28
+
29
+ ## 5.16.0-next.6
30
+
31
+ ### Minor Changes
32
+
33
+ - 7ef2435: Add lint rule to warn about deprecation of storage module in @forge/api package.
34
+
35
+ ## 5.15.2-next.5
36
+
37
+ ### Patch Changes
38
+
39
+ - Updated dependencies [3a792a2]
40
+ - @forge/manifest@12.2.0-next.3
41
+ - @forge/cli-shared@8.16.0-next.5
42
+
3
43
  ## 5.15.2-next.4
4
44
 
5
45
  ### Patch 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;AAcxG,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,KAazB,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;AAexG,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,KAczB,QAAQ,UAAU,EAAE,CAyCtB,CAAC;AAwBF,eAAO,MAAM,QAAQ,WACX,UAAU,kBACF,cAAc,WACtB,eAAe,KACtB,QAAQ,UAAU,EAAE,CAGtB,CAAC"}
package/out/lint/lint.js CHANGED
@@ -19,6 +19,7 @@ const storage_module_linter_1 = require("./linters/storage-module-linter/storage
19
19
  const frame_component_linter_1 = require("./linters/frame-component-linter/frame-component-linter");
20
20
  const deprecated_egress_permissions_manifest_linter_1 = require("./linters/manifest-linter/deprecated-egress-permissions-manifest-linter");
21
21
  const llm_module_linter_1 = require("./linters/llm-module-linter/llm-module-linter");
22
+ const deprecated_api_module_linter_1 = require("./linters/deprecated-api-module-linter/deprecated-api-module-linter");
22
23
  const reportLintResults = (logger, lintResults, showSummary = true) => {
23
24
  let numErrors = 0, numWarnings = 0;
24
25
  let noProblemsFound = true;
@@ -91,6 +92,7 @@ const lint = async (filesToLint, manifest, environment, logger, statsigService,
91
92
  new storage_module_linter_1.StorageModulesLinter(environment, manifest, logger),
92
93
  new frame_component_linter_1.FrameComponentLinter(environment, manifest, logger),
93
94
  new llm_module_linter_1.LlmModuleLinter(environment, manifest, logger),
95
+ new deprecated_api_module_linter_1.DeprecatedApiModuleLinter(environment, manifest, logger),
94
96
  new deprecated_egress_permissions_manifest_linter_1.DeprecatedEgressPermissionsManifestLinter(logger, statsigService)
95
97
  ]) => {
96
98
  const { include, exclude } = await (0, cli_shared_1.listTSConfigIncludeExclude)(new cli_shared_1.FileSystemReader());
@@ -0,0 +1,9 @@
1
+ import { LintCriteriaMatch } from '../../linter-interface';
2
+ export declare const FORGE_API_PACKAGE = "@forge/api";
3
+ export declare const DEPRECATED_STORAGE_EXPORT_NAME = "storage";
4
+ export declare type DeprecatedApiStorageMatch = LintCriteriaMatch;
5
+ export interface DeprecatedApiStorageMatches {
6
+ [key: string]: DeprecatedApiStorageMatch[];
7
+ deprecatedApiStorage: DeprecatedApiStorageMatch[];
8
+ }
9
+ //# sourceMappingURL=deprecated-api-module-interface.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEPRECATED_STORAGE_EXPORT_NAME = exports.FORGE_API_PACKAGE = void 0;
4
+ exports.FORGE_API_PACKAGE = '@forge/api';
5
+ exports.DEPRECATED_STORAGE_EXPORT_NAME = 'storage';
@@ -0,0 +1,12 @@
1
+ import { ManifestSchema as Manifest } from '@forge/manifest';
2
+ import BaseLinter from '../../base-linter';
3
+ import { LintLogger } from '../../linter-interface';
4
+ import { DeprecatedApiStorageMatch, DeprecatedApiStorageMatches } from './deprecated-api-module-interface';
5
+ export declare class DeprecatedApiModuleLinter extends BaseLinter<DeprecatedApiStorageMatch, DeprecatedApiStorageMatches, DeprecatedApiStorageMatch[]> {
6
+ private manifest;
7
+ constructor(environment: string, manifest: Manifest, logger: LintLogger);
8
+ protected addLintCriteriaMatch(match: DeprecatedApiStorageMatch, filepath: string): void;
9
+ bootstrap(): Promise<void>;
10
+ protected setupMatchesMap(filePath: string): void;
11
+ }
12
+ //# sourceMappingURL=deprecated-api-module-linter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated-api-module-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/deprecated-api-module-linter/deprecated-api-module-linter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGpD,OAAO,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAE3G,qBAAa,yBAA0B,SAAQ,UAAU,CACvD,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EAAE,CAC5B;IAGG,OAAO,CAAC,QAAQ;gBADhB,WAAW,EAAE,MAAM,EACX,QAAQ,EAAE,QAAQ,EAC1B,MAAM,EAAE,UAAU;IAKpB,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK3E,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAOvC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAMlD"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeprecatedApiModuleLinter = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const base_linter_1 = tslib_1.__importDefault(require("../../base-linter"));
6
+ const deprecated_api_module_visitor_1 = require("./deprecated-api-module-visitor");
7
+ const deprecated_api_module_verifier_1 = require("./deprecated-api-module-verifier");
8
+ class DeprecatedApiModuleLinter extends base_linter_1.default {
9
+ manifest;
10
+ constructor(environment, manifest, logger) {
11
+ super(environment, logger);
12
+ this.manifest = manifest;
13
+ }
14
+ addLintCriteriaMatch(match, filepath) {
15
+ const criteriaMatches = this.matches.get(filepath);
16
+ criteriaMatches?.deprecatedApiStorage.push(match);
17
+ }
18
+ async bootstrap() {
19
+ this.nodeVisitors = [new deprecated_api_module_visitor_1.DeprecatedApiModuleVisitor()];
20
+ this.verifiers = {
21
+ deprecatedApiStorage: new deprecated_api_module_verifier_1.DeprecatedApiModuleVerifier(this.environment, this.manifest)
22
+ };
23
+ }
24
+ setupMatchesMap(filePath) {
25
+ this.matches.set(filePath, {
26
+ deprecatedApiStorage: []
27
+ });
28
+ this.nodeVisitors = [new deprecated_api_module_visitor_1.DeprecatedApiModuleVisitor()];
29
+ }
30
+ }
31
+ exports.DeprecatedApiModuleLinter = DeprecatedApiModuleLinter;
@@ -0,0 +1,8 @@
1
+ import { BaseLintIssueVerifier, LintIssueVerifier } from '../verifier-interface';
2
+ import { LintClass, LintResultRule } from '../../linter-interface';
3
+ import { DeprecatedApiStorageMatch } from './deprecated-api-module-interface';
4
+ export declare class DeprecatedApiModuleVerifier extends BaseLintIssueVerifier implements LintIssueVerifier<DeprecatedApiStorageMatch[]> {
5
+ protected getLintClass(): LintClass;
6
+ process(matches: DeprecatedApiStorageMatch[]): Promise<LintResultRule[]>;
7
+ }
8
+ //# sourceMappingURL=deprecated-api-module-verifier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated-api-module-verifier.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/deprecated-api-module-linter/deprecated-api-module-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAEnE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,qBAAa,2BACX,SAAQ,qBACR,YAAW,iBAAiB,CAAC,yBAAyB,EAAE,CAAC;IAEzD,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAQtF"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeprecatedApiModuleVerifier = void 0;
4
+ const verifier_interface_1 = require("../verifier-interface");
5
+ const linter_interface_1 = require("../../linter-interface");
6
+ const text_1 = require("../../text");
7
+ class DeprecatedApiModuleVerifier extends verifier_interface_1.BaseLintIssueVerifier {
8
+ getLintClass() {
9
+ return linter_interface_1.LintClass.Warning;
10
+ }
11
+ async process(matches) {
12
+ return matches.map((match) => ({
13
+ class: this.getLintClass(),
14
+ message: text_1.messages.verifiers.deprecatedApiStorage.message(),
15
+ reference: text_1.messages.verifiers.deprecatedApiStorage.reference,
16
+ ...match
17
+ }));
18
+ }
19
+ }
20
+ exports.DeprecatedApiModuleVerifier = DeprecatedApiModuleVerifier;
@@ -0,0 +1,11 @@
1
+ import { TSESTree } from '@typescript-eslint/typescript-estree';
2
+ import { NodeVisitor } from '../node-visitor-interface';
3
+ import { DeprecatedApiStorageMatch } from './deprecated-api-module-interface';
4
+ export declare class DeprecatedApiModuleVisitor implements NodeVisitor<DeprecatedApiStorageMatch> {
5
+ private namespaceNames;
6
+ visit(node: TSESTree.Node, _parent: TSESTree.Node | undefined, onMatchCallback: (match: DeprecatedApiStorageMatch) => void): void;
7
+ private visitImportDeclaration;
8
+ private visitMemberExpression;
9
+ private visitVariableDeclarator;
10
+ }
11
+ //# sourceMappingURL=deprecated-api-module-visitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecated-api-module-visitor.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/deprecated-api-module-linter/deprecated-api-module-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AAEhF,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAGL,yBAAyB,EAC1B,MAAM,mCAAmC,CAAC;AAE3C,qBAAa,0BAA2B,YAAW,WAAW,CAAC,yBAAyB,CAAC;IACvF,OAAO,CAAC,cAAc,CAA0B;IAEzC,KAAK,CACV,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,OAAO,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,EAClC,eAAe,EAAE,CAAC,KAAK,EAAE,yBAAyB,KAAK,IAAI,GAC1D,IAAI;IAgBP,OAAO,CAAC,sBAAsB;IAuB9B,OAAO,CAAC,qBAAqB;IA0B7B,OAAO,CAAC,uBAAuB;CA+BhC"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DeprecatedApiModuleVisitor = void 0;
4
+ const typescript_estree_1 = require("@typescript-eslint/typescript-estree");
5
+ const deprecated_api_module_interface_1 = require("./deprecated-api-module-interface");
6
+ class DeprecatedApiModuleVisitor {
7
+ namespaceNames = new Set();
8
+ visit(node, _parent, onMatchCallback) {
9
+ if (node.type === typescript_estree_1.AST_NODE_TYPES.ImportDeclaration && node.source.value === deprecated_api_module_interface_1.FORGE_API_PACKAGE) {
10
+ this.visitImportDeclaration(node, onMatchCallback);
11
+ return;
12
+ }
13
+ if (node.type === typescript_estree_1.AST_NODE_TYPES.MemberExpression) {
14
+ this.visitMemberExpression(node, onMatchCallback);
15
+ return;
16
+ }
17
+ if (node.type === typescript_estree_1.AST_NODE_TYPES.VariableDeclarator) {
18
+ this.visitVariableDeclarator(node, onMatchCallback);
19
+ }
20
+ }
21
+ visitImportDeclaration(node, onMatchCallback) {
22
+ for (const specifier of node.specifiers) {
23
+ if (specifier.type === typescript_estree_1.AST_NODE_TYPES.ImportSpecifier &&
24
+ specifier.imported.type === typescript_estree_1.AST_NODE_TYPES.Identifier &&
25
+ specifier.imported.name === deprecated_api_module_interface_1.DEPRECATED_STORAGE_EXPORT_NAME &&
26
+ specifier.local.loc) {
27
+ onMatchCallback({
28
+ line: specifier.local.loc.start.line,
29
+ column: specifier.local.loc.start.column
30
+ });
31
+ }
32
+ if (specifier.type === typescript_estree_1.AST_NODE_TYPES.ImportNamespaceSpecifier) {
33
+ this.namespaceNames.add(specifier.local.name);
34
+ }
35
+ }
36
+ }
37
+ visitMemberExpression(node, onMatchCallback) {
38
+ if (node.object.type !== typescript_estree_1.AST_NODE_TYPES.Identifier || !this.namespaceNames.has(node.object.name)) {
39
+ return;
40
+ }
41
+ const isStorageDotAccess = !node.computed &&
42
+ node.property.type === typescript_estree_1.AST_NODE_TYPES.Identifier &&
43
+ node.property.name === deprecated_api_module_interface_1.DEPRECATED_STORAGE_EXPORT_NAME;
44
+ const isStorageBracketAccess = node.computed &&
45
+ node.property.type === typescript_estree_1.AST_NODE_TYPES.Literal &&
46
+ node.property.value === deprecated_api_module_interface_1.DEPRECATED_STORAGE_EXPORT_NAME;
47
+ if ((isStorageDotAccess || isStorageBracketAccess) && node.property.loc) {
48
+ onMatchCallback({
49
+ line: node.property.loc.start.line,
50
+ column: node.property.loc.start.column
51
+ });
52
+ }
53
+ }
54
+ visitVariableDeclarator(node, onMatchCallback) {
55
+ if (node.init?.type !== typescript_estree_1.AST_NODE_TYPES.Identifier || !this.namespaceNames.has(node.init.name)) {
56
+ return;
57
+ }
58
+ if (node.id.type === typescript_estree_1.AST_NODE_TYPES.Identifier) {
59
+ this.namespaceNames.add(node.id.name);
60
+ return;
61
+ }
62
+ if (node.id.type === typescript_estree_1.AST_NODE_TYPES.ObjectPattern) {
63
+ for (const prop of node.id.properties) {
64
+ if (prop.type === typescript_estree_1.AST_NODE_TYPES.Property &&
65
+ prop.key.type === typescript_estree_1.AST_NODE_TYPES.Identifier &&
66
+ prop.key.name === deprecated_api_module_interface_1.DEPRECATED_STORAGE_EXPORT_NAME &&
67
+ prop.key.loc) {
68
+ onMatchCallback({
69
+ line: prop.key.loc.start.line,
70
+ column: prop.key.loc.start.column
71
+ });
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ exports.DeprecatedApiModuleVisitor = DeprecatedApiModuleVisitor;
@@ -63,6 +63,10 @@ export declare const messages: {
63
63
  message: (scope: string, product: string) => string;
64
64
  reference: string;
65
65
  };
66
+ deprecatedApiStorage: {
67
+ message: () => string;
68
+ reference: string;
69
+ };
66
70
  };
67
71
  };
68
72
  //# sourceMappingURL=messages.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/lint/text/messages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;2BAGA,MAAM;;;;2BAKN,MAAM;2BAER,MAAM;;;;2BAKJ,MAAM;;;;iCAKA,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;;;;CAK7C,CAAC"}
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../../src/lint/text/messages.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,QAAQ;;;2BAGA,MAAM;;;;2BAKN,MAAM;2BAER,MAAM;;;;2BAKJ,MAAM;;;;iCAKA,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;;;;;;;;CAU7C,CAAC"}
@@ -67,6 +67,10 @@ exports.messages = {
67
67
  notification: {
68
68
  message: (scope, product) => `Missing permission ${scope} required for NotificationApi. Only add this if you are building a ${product} app`,
69
69
  reference: 'permission-scope-required'
70
+ },
71
+ deprecatedApiStorage: {
72
+ message: () => `The \"storage\" export from \"@forge/api\" is deprecated. Use the \"@forge/kvs\" package instead.`,
73
+ reference: 'deprecated-api-storage'
70
74
  }
71
75
  }
72
76
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/lint",
3
- "version": "5.15.2-next.4",
3
+ "version": "5.16.0-experimental-43cfec4",
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": "^7.0.3-next.1",
14
+ "@forge/api": "^7.1.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": "8.16.0-next.4",
23
- "@forge/csp": "5.6.1",
22
+ "@forge/cli-shared": "8.16.0-experimental-43cfec4",
23
+ "@forge/csp": "5.6.1-experimental-43cfec4",
24
24
  "@forge/egress": "2.3.1",
25
- "@forge/manifest": "12.2.0-next.2",
25
+ "@forge/manifest": "12.2.0-experimental-43cfec4",
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",