@forge/lint 5.6.7 → 5.7.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 +14 -0
- package/out/lint/lint.d.ts.map +1 -1
- package/out/lint/lint.js +3 -1
- package/out/lint/linters/frame-component-linter/frame-component-interface.d.ts +5 -0
- package/out/lint/linters/frame-component-linter/frame-component-interface.d.ts.map +1 -0
- package/out/lint/linters/frame-component-linter/frame-component-interface.js +2 -0
- package/out/lint/linters/frame-component-linter/frame-component-linter.d.ts +17 -0
- package/out/lint/linters/frame-component-linter/frame-component-linter.d.ts.map +1 -0
- package/out/lint/linters/frame-component-linter/frame-component-linter.js +32 -0
- package/out/lint/linters/frame-component-linter/verifiers/frame-component-verifier.d.ts +13 -0
- package/out/lint/linters/frame-component-linter/verifiers/frame-component-verifier.d.ts.map +1 -0
- package/out/lint/linters/frame-component-linter/verifiers/frame-component-verifier.js +41 -0
- package/out/lint/linters/frame-component-linter/visitors/frame-component-visitor.d.ts +9 -0
- package/out/lint/linters/frame-component-linter/visitors/frame-component-visitor.d.ts.map +1 -0
- package/out/lint/linters/frame-component-linter/visitors/frame-component-visitor.js +75 -0
- package/out/lint/text/messages.d.ts +10 -0
- package/out/lint/text/messages.d.ts.map +1 -1
- package/out/lint/text/messages.js +12 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @forge/lint
|
|
2
2
|
|
|
3
|
+
## 5.7.0-next.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [cd0e244]
|
|
8
|
+
- @forge/manifest@8.6.1-next.0
|
|
9
|
+
- @forge/cli-shared@6.5.5-next.0
|
|
10
|
+
|
|
11
|
+
## 5.7.0-next.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- 874e9a2: Add linter to ensure UI Kit Frame component has set the resource property correctly
|
|
16
|
+
|
|
3
17
|
## 5.6.7
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/out/lint/lint.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"AAQA,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;
|
|
1
|
+
{"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["../../src/lint/lint.ts"],"names":[],"mappings":"AAQA,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;AAaxG,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,6BAhBR,MAAM,UACR,eAAe,oBACN,OAAO,GAAG,QAAQ,CAAC,aAAa,KAChD,QAAQ,SAAS,CAAC,YAeV,eAAe,EAAE,KAYzB,QAAQ,UAAU,EAAE,CAyCtB,CAAC;AAwBF,eAAO,MAAM,QAAQ,WACX,UAAU,WACV,eAAe,KACtB,QAAQ,UAAU,EAAE,CAGtB,CAAC"}
|
package/out/lint/lint.js
CHANGED
|
@@ -17,6 +17,7 @@ const dynamic_properties_permissions_linter_1 = require("./linters/dynamic-prope
|
|
|
17
17
|
const remote_compute_manifest_linter_1 = require("./linters/manifest-linter/remote-compute-manifest-linter");
|
|
18
18
|
const invoke_remote_linter_1 = require("./linters/remote-linter/invoke-remote-linter");
|
|
19
19
|
const storage_module_linter_1 = require("./linters/storage-module-linter/storage-module-linter");
|
|
20
|
+
const frame_component_linter_1 = require("./linters/frame-component-linter/frame-component-linter");
|
|
20
21
|
const reportLintResults = (logger, lintResults, showSummary = true) => {
|
|
21
22
|
let numErrors = 0, numWarnings = 0;
|
|
22
23
|
let noProblemsFound = true;
|
|
@@ -87,7 +88,8 @@ const lint = async (filesToLint, manifest, environment, logger, parseFunction =
|
|
|
87
88
|
new handler_linter_1.HandlerLinter(environment, manifest, logger),
|
|
88
89
|
new dynamic_properties_permissions_linter_1.DynamicPropertiesPermissionsLinter(environment, manifest, logger),
|
|
89
90
|
new invoke_remote_linter_1.InvokeRemoteLinter(environment, manifest, logger),
|
|
90
|
-
new storage_module_linter_1.StorageModulesLinter(environment, manifest, logger)
|
|
91
|
+
new storage_module_linter_1.StorageModulesLinter(environment, manifest, logger),
|
|
92
|
+
new frame_component_linter_1.FrameComponentLinter(environment, manifest, logger)
|
|
91
93
|
]) => {
|
|
92
94
|
const { include, exclude } = await (0, cli_shared_1.listTSConfigIncludeExclude)(new cli_shared_1.FileSystemReader());
|
|
93
95
|
const tsInclude = new Set(include);
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { ManifestSchema as Manifest } from '@forge/manifest';
|
|
2
|
+
import BaseLinter from '../../base-linter';
|
|
3
|
+
import { FrameResourceInfo } from './frame-component-interface';
|
|
4
|
+
import { LintLogger } from '../../linter-interface';
|
|
5
|
+
interface FrameComponentLintCriteriaMatches {
|
|
6
|
+
[key: string]: FrameResourceInfo[];
|
|
7
|
+
frameComponentResource: FrameResourceInfo[];
|
|
8
|
+
}
|
|
9
|
+
export declare class FrameComponentLinter extends BaseLinter<FrameResourceInfo, FrameComponentLintCriteriaMatches, FrameResourceInfo[]> {
|
|
10
|
+
private manifest;
|
|
11
|
+
constructor(environment: string, manifest: Manifest, logger: LintLogger);
|
|
12
|
+
bootstrap(): Promise<void>;
|
|
13
|
+
protected setupMatchesMap(filepath: string): void;
|
|
14
|
+
protected addLintCriteriaMatch(frameResourceInfo: FrameResourceInfo, filepath: string): void;
|
|
15
|
+
}
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=frame-component-linter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-component-linter.d.ts","sourceRoot":"","sources":["../../../../src/lint/linters/frame-component-linter/frame-component-linter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE7D,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,UAAU,iCAAiC;IACzC,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAAC;IACnC,sBAAsB,EAAE,iBAAiB,EAAE,CAAC;CAC7C;AAED,qBAAa,oBAAqB,SAAQ,UAAU,CAClD,iBAAiB,EACjB,iCAAiC,EACjC,iBAAiB,EAAE,CACpB;IAGG,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;IAMjD,SAAS,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;CAK7F"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrameComponentLinter = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const cli_shared_1 = require("@forge/cli-shared");
|
|
6
|
+
const base_linter_1 = tslib_1.__importDefault(require("../../base-linter"));
|
|
7
|
+
const frame_component_verifier_1 = require("./verifiers/frame-component-verifier");
|
|
8
|
+
const frame_component_visitor_1 = require("./visitors/frame-component-visitor");
|
|
9
|
+
class FrameComponentLinter extends base_linter_1.default {
|
|
10
|
+
manifest;
|
|
11
|
+
constructor(environment, manifest, logger) {
|
|
12
|
+
super(environment, logger);
|
|
13
|
+
this.manifest = manifest;
|
|
14
|
+
}
|
|
15
|
+
async bootstrap() {
|
|
16
|
+
this.nodeVisitors = [new frame_component_visitor_1.FrameComponentVisitor()];
|
|
17
|
+
const humanReadableEnvironment = (0, cli_shared_1.environmentToOption)(this.environment);
|
|
18
|
+
this.verifiers = {
|
|
19
|
+
frameComponentResource: new frame_component_verifier_1.FrameComponentVerifier(humanReadableEnvironment, this.manifest)
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
setupMatchesMap(filepath) {
|
|
23
|
+
this.matches.set(filepath, {
|
|
24
|
+
frameComponentResource: []
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
addLintCriteriaMatch(frameResourceInfo, filepath) {
|
|
28
|
+
const criteriaMatches = this.matches.get(filepath);
|
|
29
|
+
criteriaMatches.frameComponentResource.push(frameResourceInfo);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.FrameComponentLinter = FrameComponentLinter;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ManifestSchema as Manifest } from '@forge/manifest';
|
|
2
|
+
import { LintClass, LintResultRule } from '../../../linter-interface';
|
|
3
|
+
import { BaseLintIssueVerifier, LintIssueVerifier } from '../../verifier-interface';
|
|
4
|
+
import { type FrameResourceInfo } from '../frame-component-interface';
|
|
5
|
+
export declare class FrameComponentVerifier extends BaseLintIssueVerifier implements LintIssueVerifier<FrameResourceInfo[]> {
|
|
6
|
+
private possibleFrameResourceKeys;
|
|
7
|
+
constructor(environment: string, manifest: Manifest);
|
|
8
|
+
protected getLintClass(): LintClass;
|
|
9
|
+
process(frameResources: FrameResourceInfo[]): Promise<LintResultRule[]>;
|
|
10
|
+
private isValidFrameResourceKey;
|
|
11
|
+
private getPossibleFrameResourceKeysFromManifest;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=frame-component-verifier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-component-verifier.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/frame-component-linter/verifiers/frame-component-verifier.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,IAAI,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,qBAAa,sBAAuB,SAAQ,qBAAsB,YAAW,iBAAiB,CAAC,iBAAiB,EAAE,CAAC;IACjH,OAAO,CAAC,yBAAyB,CAAc;gBAEnC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ;IAKnD,SAAS,CAAC,YAAY,IAAI,SAAS;IAItB,OAAO,CAAC,cAAc,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAepF,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,wCAAwC;CAQjD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrameComponentVerifier = void 0;
|
|
4
|
+
const linter_interface_1 = require("../../../linter-interface");
|
|
5
|
+
const verifier_interface_1 = require("../../verifier-interface");
|
|
6
|
+
const text_1 = require("../../../text");
|
|
7
|
+
class FrameComponentVerifier extends verifier_interface_1.BaseLintIssueVerifier {
|
|
8
|
+
possibleFrameResourceKeys;
|
|
9
|
+
constructor(environment, manifest) {
|
|
10
|
+
super(environment, manifest);
|
|
11
|
+
this.possibleFrameResourceKeys = this.getPossibleFrameResourceKeysFromManifest();
|
|
12
|
+
}
|
|
13
|
+
getLintClass() {
|
|
14
|
+
return linter_interface_1.LintClass.Error;
|
|
15
|
+
}
|
|
16
|
+
async process(frameResources) {
|
|
17
|
+
return frameResources
|
|
18
|
+
.filter(({ resource }) => !this.isValidFrameResourceKey(resource))
|
|
19
|
+
.map(({ resource, column, line }) => {
|
|
20
|
+
const linterMessages = text_1.messages.verifiers.frameComponentResource;
|
|
21
|
+
return {
|
|
22
|
+
class: this.getLintClass(),
|
|
23
|
+
column,
|
|
24
|
+
line,
|
|
25
|
+
message: resource ? linterMessages.invalid.message(resource) : linterMessages.missing.message(),
|
|
26
|
+
reference: resource ? linterMessages.invalid.reference : linterMessages.missing.reference
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
isValidFrameResourceKey(resourceKey) {
|
|
31
|
+
if (!resourceKey) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return this.possibleFrameResourceKeys.has(resourceKey);
|
|
35
|
+
}
|
|
36
|
+
getPossibleFrameResourceKeysFromManifest() {
|
|
37
|
+
const resources = this.manifest?.resources ?? [];
|
|
38
|
+
return new Set(resources.map(({ key }) => key));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.FrameComponentVerifier = FrameComponentVerifier;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { NodeVisitor } from '../../node-visitor-interface';
|
|
2
|
+
import { type TSESTree } from '@typescript-eslint/typescript-estree';
|
|
3
|
+
import { type FrameResourceInfo } from '../frame-component-interface';
|
|
4
|
+
export declare class FrameComponentVisitor implements NodeVisitor<FrameResourceInfo> {
|
|
5
|
+
visit(node: TSESTree.Node, _parent: TSESTree.Node | undefined, callback: (frameResourceInfo: FrameResourceInfo) => void): void;
|
|
6
|
+
private getFrameComponentNode;
|
|
7
|
+
private getFrameComponentResourceInfo;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=frame-component-visitor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frame-component-visitor.d.ts","sourceRoot":"","sources":["../../../../../src/lint/linters/frame-component-linter/visitors/frame-component-visitor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,sCAAsC,CAAC;AACrF,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AA6BtE,qBAAa,qBAAsB,YAAW,WAAW,CAAC,iBAAiB,CAAC;IACnE,KAAK,CACV,IAAI,EAAE,QAAQ,CAAC,IAAI,EACnB,OAAO,EAAE,QAAQ,CAAC,IAAI,GAAG,SAAS,EAClC,QAAQ,EAAE,CAAC,iBAAiB,EAAE,iBAAiB,KAAK,IAAI,GACvD,IAAI;IAWP,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,6BAA6B;CAmCtC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FrameComponentVisitor = void 0;
|
|
4
|
+
const typescript_estree_1 = require("@typescript-eslint/typescript-estree");
|
|
5
|
+
const ensureResourceKeyValue = (raw) => {
|
|
6
|
+
const value = raw?.trim() ?? '';
|
|
7
|
+
return value.length > 0 ? value : undefined;
|
|
8
|
+
};
|
|
9
|
+
const resolveStringAttributeValue = (node) => {
|
|
10
|
+
const value = node.value;
|
|
11
|
+
if (value && value.type === typescript_estree_1.AST_NODE_TYPES.Literal && typeof value.value === 'string') {
|
|
12
|
+
return ensureResourceKeyValue(value.value);
|
|
13
|
+
}
|
|
14
|
+
else if (value && value.type === typescript_estree_1.AST_NODE_TYPES.JSXExpressionContainer) {
|
|
15
|
+
const expression = value.expression;
|
|
16
|
+
if (expression.type === typescript_estree_1.AST_NODE_TYPES.Literal && typeof expression.value === 'string') {
|
|
17
|
+
return ensureResourceKeyValue(expression.value);
|
|
18
|
+
}
|
|
19
|
+
else if (expression.type === typescript_estree_1.AST_NODE_TYPES.TemplateLiteral) {
|
|
20
|
+
const { quasis } = expression;
|
|
21
|
+
if (quasis.length === 1) {
|
|
22
|
+
return ensureResourceKeyValue(quasis[0].value.raw);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return false;
|
|
27
|
+
};
|
|
28
|
+
class FrameComponentVisitor {
|
|
29
|
+
visit(node, _parent, callback) {
|
|
30
|
+
const frameComponentNode = this.getFrameComponentNode(node);
|
|
31
|
+
if (!frameComponentNode) {
|
|
32
|
+
return undefined;
|
|
33
|
+
}
|
|
34
|
+
const frameResourceInfo = this.getFrameComponentResourceInfo(frameComponentNode);
|
|
35
|
+
if (frameResourceInfo) {
|
|
36
|
+
callback(frameResourceInfo);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
getFrameComponentNode(node) {
|
|
40
|
+
if (node.type !== typescript_estree_1.AST_NODE_TYPES.JSXOpeningElement) {
|
|
41
|
+
return undefined;
|
|
42
|
+
}
|
|
43
|
+
const { name: nameNode } = node;
|
|
44
|
+
if (nameNode.type === typescript_estree_1.AST_NODE_TYPES.JSXIdentifier && nameNode.name === 'Frame') {
|
|
45
|
+
return node;
|
|
46
|
+
}
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
getFrameComponentResourceInfo(node) {
|
|
50
|
+
const { attributes } = node;
|
|
51
|
+
const resourceNode = attributes.find((attribute) => {
|
|
52
|
+
return attribute.type === typescript_estree_1.AST_NODE_TYPES.JSXAttribute && attribute.name.name === 'resource';
|
|
53
|
+
});
|
|
54
|
+
if (!resourceNode) {
|
|
55
|
+
return {
|
|
56
|
+
resource: undefined,
|
|
57
|
+
line: node.loc.start.line,
|
|
58
|
+
column: node.loc.start.column
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
else if (resourceNode.type === typescript_estree_1.AST_NODE_TYPES.JSXAttribute) {
|
|
62
|
+
const resourceKey = resolveStringAttributeValue(resourceNode);
|
|
63
|
+
if (resourceKey !== false && resourceNode.value) {
|
|
64
|
+
const { loc: { start: { line, column } } } = resourceNode.value;
|
|
65
|
+
return {
|
|
66
|
+
resource: resourceKey,
|
|
67
|
+
line,
|
|
68
|
+
column
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
return undefined;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.FrameComponentVisitor = FrameComponentVisitor;
|
|
@@ -41,6 +41,16 @@ export declare const messages: {
|
|
|
41
41
|
message: (module: string) => string;
|
|
42
42
|
reference: string;
|
|
43
43
|
};
|
|
44
|
+
frameComponentResource: {
|
|
45
|
+
missing: {
|
|
46
|
+
message: () => string;
|
|
47
|
+
reference: string;
|
|
48
|
+
};
|
|
49
|
+
invalid: {
|
|
50
|
+
message: (resource: string) => string;
|
|
51
|
+
reference: string;
|
|
52
|
+
};
|
|
53
|
+
};
|
|
44
54
|
};
|
|
45
55
|
};
|
|
46
56
|
//# 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
|
|
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;;;;;;;;;oCASF,MAAM;;;;;CAOjC,CAAC"}
|
|
@@ -43,6 +43,18 @@ exports.messages = {
|
|
|
43
43
|
sql: {
|
|
44
44
|
message: (module) => `SQL package is used but '${module}' module is not defined in the manifest`,
|
|
45
45
|
reference: 'https://developer.atlassian.com/platform/forge/manifest-reference/#modules'
|
|
46
|
+
},
|
|
47
|
+
frameComponentResource: {
|
|
48
|
+
missing: {
|
|
49
|
+
message: () => 'The "resource" property is missing in the Frame component',
|
|
50
|
+
reference: 'missing-frame-component-resource-property'
|
|
51
|
+
},
|
|
52
|
+
invalid: {
|
|
53
|
+
message: (resource) => {
|
|
54
|
+
return `The resource attribute "${resource}" is not included in the "resources" section of your app's manifest.yml file`;
|
|
55
|
+
},
|
|
56
|
+
reference: 'valid-frame-component-resource-attribute-required'
|
|
57
|
+
}
|
|
46
58
|
}
|
|
47
59
|
}
|
|
48
60
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/lint",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.7.0-next.1",
|
|
4
4
|
"description": "Linting for forge apps",
|
|
5
5
|
"main": "out/index.js",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
"eslint-plugin-import": "^2.29.1"
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@forge/cli-shared": "6.5.
|
|
22
|
+
"@forge/cli-shared": "6.5.5-next.0",
|
|
23
23
|
"@forge/egress": "1.3.0",
|
|
24
|
-
"@forge/manifest": "8.6.0",
|
|
24
|
+
"@forge/manifest": "8.6.1-next.0",
|
|
25
25
|
"@typescript-eslint/typescript-estree": "^5.62.0",
|
|
26
26
|
"array.prototype.flatmap": "^1.3.2",
|
|
27
27
|
"atlassian-openapi": "^1.0.18",
|