oxlint-appsync 0.3.1 → 0.4.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.
- package/README.md +40 -21
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +265 -58
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -71,30 +71,49 @@ export default [
|
|
|
71
71
|
|
|
72
72
|
## Rules
|
|
73
73
|
|
|
74
|
-
| Rule
|
|
75
|
-
|
|
|
76
|
-
| `appsync/no-global-constructor`
|
|
77
|
-
| `appsync/no-async-await`
|
|
78
|
-
| `appsync/no-classes`
|
|
79
|
-
| `appsync/no-
|
|
80
|
-
| `appsync/no-
|
|
81
|
-
| `appsync/no-
|
|
82
|
-
| `appsync/no-
|
|
83
|
-
| `appsync/no-
|
|
84
|
-
| `appsync/no-
|
|
85
|
-
| `appsync/no-
|
|
86
|
-
| `appsync/no-
|
|
87
|
-
| `appsync/no-
|
|
88
|
-
| `appsync/no-
|
|
89
|
-
| `appsync/no-
|
|
90
|
-
| `appsync/no-
|
|
91
|
-
| `appsync/no-
|
|
92
|
-
| `appsync/no-
|
|
93
|
-
| `appsync/no-
|
|
94
|
-
| `appsync/no-
|
|
74
|
+
| Rule | Description |
|
|
75
|
+
| --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
76
|
+
| `appsync/no-global-constructor` | Disallow global constructor calls (`String()`, `Number()`, `Boolean()`, `Date()`, etc.) |
|
|
77
|
+
| `appsync/no-async-await` | Disallow `async`/`await` and async functions |
|
|
78
|
+
| `appsync/no-classes` | Disallow `class` declarations and expressions |
|
|
79
|
+
| `appsync/no-context-reassignment` | Disallow reassigning `context` and its base properties |
|
|
80
|
+
| `appsync/no-instanceof` | Disallow `instanceof` |
|
|
81
|
+
| `appsync/no-for-loop` | Disallow C-style `for` loops (`for-in` / `for-of` allowed) |
|
|
82
|
+
| `appsync/no-while` | Disallow `while` loops |
|
|
83
|
+
| `appsync/no-do-while` | Disallow `do-while` loops |
|
|
84
|
+
| `appsync/no-disallowed-methods` | Disallow unsupported methods (`call`, `apply`, `bind`) |
|
|
85
|
+
| `appsync/no-try` | Disallow `try`/`catch`/`finally` |
|
|
86
|
+
| `appsync/no-throw` | Disallow `throw` |
|
|
87
|
+
| `appsync/no-continue` | Disallow `continue` |
|
|
88
|
+
| `appsync/no-labeled-statement` | Disallow labeled statements |
|
|
89
|
+
| `appsync/no-new` | Disallow the `new` operator |
|
|
90
|
+
| `appsync/no-regex` | Disallow regex literals (`/pattern/`) |
|
|
91
|
+
| `appsync/no-promise` | Disallow `Promise` usage |
|
|
92
|
+
| `appsync/no-recursion` | Disallow recursive function calls |
|
|
93
|
+
| `appsync/no-generators` | Disallow generator functions |
|
|
94
|
+
| `appsync/no-this` | Disallow `this` |
|
|
95
|
+
| `appsync/no-update-operators` | Disallow `++` and `--` |
|
|
96
|
+
| `appsync/no-bitwise-not` | Disallow bitwise NOT (`~`) |
|
|
97
|
+
| `appsync/no-in-operator` | Disallow `in` (use `Object.hasOwn`) |
|
|
98
|
+
| `appsync/no-function-arguments` | Disallow passing functions as call arguments (parity with AWS `no-function-passing`; inline arrows allowed only on allowlisted Array methods like `map`, `filter`) |
|
|
99
|
+
| `appsync/no-function-reassign` | Disallow reassigning function variables |
|
|
100
|
+
| `appsync/no-function-return` | Disallow returning functions from functions |
|
|
101
|
+
| `appsync/no-appsync-globals` | Disallow AppSync-only globals (`util`, `extensions`, `runtime`) — opt-in, included in `portable` |
|
|
95
102
|
|
|
96
103
|
## Migration
|
|
97
104
|
|
|
105
|
+
### 0.3.1 → 0.4.0
|
|
106
|
+
|
|
107
|
+
Seven new rules are enabled in the `recommended` and `portable` presets for parity with `@aws-appsync/eslint-plugin`:
|
|
108
|
+
|
|
109
|
+
- `appsync/no-regex` — regex literals (`/pattern/`) are not supported; use string patterns for `replace`, `split`, etc.
|
|
110
|
+
- `appsync/no-promise` — `Promise` usage is not supported.
|
|
111
|
+
- `appsync/no-context-reassignment` — reassigning `context` or its base properties is not supported.
|
|
112
|
+
- `appsync/no-disallowed-methods` — `call`, `apply`, and `bind` are not supported.
|
|
113
|
+
- `appsync/no-recursion` — recursive function calls are not supported.
|
|
114
|
+
- `appsync/no-function-reassign` — reassigning function variables is not supported.
|
|
115
|
+
- `appsync/no-function-return` — returning functions from functions is not supported.
|
|
116
|
+
|
|
98
117
|
### 0.3.0 → 0.3.1
|
|
99
118
|
|
|
100
119
|
`appsync/no-function-arguments` now matches AWS `no-function-passing` more closely:
|
package/dist/index.d.ts
CHANGED
|
@@ -6,15 +6,22 @@ declare const rules: {
|
|
|
6
6
|
"no-async-await": _oxlint_plugins0.CreateOnceRule;
|
|
7
7
|
"no-bitwise-not": _oxlint_plugins0.CreateOnceRule;
|
|
8
8
|
"no-classes": _oxlint_plugins0.CreateOnceRule;
|
|
9
|
+
"no-context-reassignment": _oxlint_plugins0.CreateOnceRule;
|
|
9
10
|
"no-continue": _oxlint_plugins0.CreateOnceRule;
|
|
10
11
|
"no-do-while": _oxlint_plugins0.CreateOnceRule;
|
|
12
|
+
"no-disallowed-methods": _oxlint_plugins0.CreateOnceRule;
|
|
11
13
|
"no-for-loop": _oxlint_plugins0.CreateOnceRule;
|
|
12
14
|
"no-function-arguments": _oxlint_plugins0.CreateOnceRule;
|
|
15
|
+
"no-function-reassign": _oxlint_plugins0.CreateOnceRule;
|
|
16
|
+
"no-function-return": _oxlint_plugins0.CreateOnceRule;
|
|
13
17
|
"no-generators": _oxlint_plugins0.CreateOnceRule;
|
|
14
18
|
"no-in-operator": _oxlint_plugins0.CreateOnceRule;
|
|
15
19
|
"no-instanceof": _oxlint_plugins0.CreateOnceRule;
|
|
16
20
|
"no-labeled-statement": _oxlint_plugins0.CreateOnceRule;
|
|
17
21
|
"no-new": _oxlint_plugins0.CreateOnceRule;
|
|
22
|
+
"no-promise": _oxlint_plugins0.CreateOnceRule;
|
|
23
|
+
"no-recursion": _oxlint_plugins0.CreateOnceRule;
|
|
24
|
+
"no-regex": _oxlint_plugins0.CreateOnceRule;
|
|
18
25
|
"no-global-constructor": _oxlint_plugins0.CreateOnceRule;
|
|
19
26
|
"no-this": _oxlint_plugins0.CreateOnceRule;
|
|
20
27
|
"no-throw": _oxlint_plugins0.CreateOnceRule;
|
|
@@ -31,15 +38,22 @@ declare const portable: {
|
|
|
31
38
|
readonly "appsync/no-async-await": "error";
|
|
32
39
|
readonly "appsync/no-bitwise-not": "error";
|
|
33
40
|
readonly "appsync/no-classes": "error";
|
|
41
|
+
readonly "appsync/no-context-reassignment": "error";
|
|
34
42
|
readonly "appsync/no-continue": "error";
|
|
35
43
|
readonly "appsync/no-do-while": "error";
|
|
44
|
+
readonly "appsync/no-disallowed-methods": "error";
|
|
36
45
|
readonly "appsync/no-for-loop": "error";
|
|
37
46
|
readonly "appsync/no-function-arguments": "error";
|
|
47
|
+
readonly "appsync/no-function-reassign": "error";
|
|
48
|
+
readonly "appsync/no-function-return": "error";
|
|
38
49
|
readonly "appsync/no-generators": "error";
|
|
39
50
|
readonly "appsync/no-in-operator": "error";
|
|
40
51
|
readonly "appsync/no-instanceof": "error";
|
|
41
52
|
readonly "appsync/no-labeled-statement": "error";
|
|
42
53
|
readonly "appsync/no-new": "error";
|
|
54
|
+
readonly "appsync/no-promise": "error";
|
|
55
|
+
readonly "appsync/no-recursion": "error";
|
|
56
|
+
readonly "appsync/no-regex": "error";
|
|
43
57
|
readonly "appsync/no-global-constructor": "error";
|
|
44
58
|
readonly "appsync/no-this": "error";
|
|
45
59
|
readonly "appsync/no-throw": "error";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/rules/index.ts","../src/plugin.ts"],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/rules/index.ts","../src/plugin.ts"],"mappings":";;;cA4BM;wBA2BuC,gBAAA,CAAA;;EA3BvC,gBA2BuC,iCAAA;EAAA,YAAA,iCAAA;EAAA,yBAAA,iCAAA;;;;;;;;;;;;;;;;;;;;;;;;;cClDhC,QAKX,gBAAA,CALiB;cAON,aAIR,kBAAkB,qBAAqB;ADYtC,cCVO,QDqCgC,EAAA;EAAA,SAAA,4BAAA,EAAA,OAAA;EAAA,SAAA,wBAAA,EAAA,OAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { eslintCompatPlugin } from "@oxlint/plugins";
|
|
2
|
-
//#region src/
|
|
2
|
+
//#region src/lib/appsync-globals.ts
|
|
3
3
|
const APPSYNC_GLOBAL_NAMES = /* @__PURE__ */ new Set([
|
|
4
4
|
"util",
|
|
5
5
|
"extensions",
|
|
6
6
|
"runtime"
|
|
7
7
|
]);
|
|
8
8
|
//#endregion
|
|
9
|
-
//#region src/
|
|
9
|
+
//#region src/lib/rule-types.ts
|
|
10
10
|
function defineAppsyncRule(rule) {
|
|
11
11
|
return rule;
|
|
12
12
|
}
|
|
@@ -57,7 +57,10 @@ var no_appsync_globals_default = defineAppsyncRule({
|
|
|
57
57
|
}
|
|
58
58
|
});
|
|
59
59
|
//#endregion
|
|
60
|
-
//#region src/
|
|
60
|
+
//#region src/lib/utils.ts
|
|
61
|
+
function isIdentifier(node, name) {
|
|
62
|
+
return node?.type === "Identifier" && node.name === name;
|
|
63
|
+
}
|
|
61
64
|
function reportDefault(context, node, messageId = "default") {
|
|
62
65
|
context.report({
|
|
63
66
|
node,
|
|
@@ -123,6 +126,25 @@ var no_classes_default = defineAppsyncRule({
|
|
|
123
126
|
}
|
|
124
127
|
});
|
|
125
128
|
//#endregion
|
|
129
|
+
//#region src/rules/no-context-reassignment.ts
|
|
130
|
+
function isContextAssignmentTarget(node) {
|
|
131
|
+
if (isIdentifier(node, "context")) return true;
|
|
132
|
+
return node.type === "MemberExpression" && isIdentifier(node.object, "context");
|
|
133
|
+
}
|
|
134
|
+
var no_context_reassignment_default = defineAppsyncRule({
|
|
135
|
+
meta: {
|
|
136
|
+
type: "problem",
|
|
137
|
+
docs: { description: "Disallow reassigning context and its base properties in AppSync resolvers" },
|
|
138
|
+
messages: { default: "Reassigning context and base properties of context is not supported in the AppSync JS runtime" },
|
|
139
|
+
schema: []
|
|
140
|
+
},
|
|
141
|
+
createOnce(context) {
|
|
142
|
+
return { AssignmentExpression(node) {
|
|
143
|
+
if (isContextAssignmentTarget(node.left)) reportDefault(context, node.left);
|
|
144
|
+
} };
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
//#endregion
|
|
126
148
|
//#region src/rules/no-continue.ts
|
|
127
149
|
var no_continue_default = defineAppsyncRule({
|
|
128
150
|
meta: {
|
|
@@ -138,6 +160,66 @@ var no_continue_default = defineAppsyncRule({
|
|
|
138
160
|
}
|
|
139
161
|
});
|
|
140
162
|
//#endregion
|
|
163
|
+
//#region src/lib/disallowed-methods.ts
|
|
164
|
+
const DISALLOWED_METHOD_NAMES = /* @__PURE__ */ new Set([
|
|
165
|
+
"apply",
|
|
166
|
+
"bind",
|
|
167
|
+
"call"
|
|
168
|
+
]);
|
|
169
|
+
//#endregion
|
|
170
|
+
//#region src/lib/function-utils.ts
|
|
171
|
+
function getMemberPropertyName(property) {
|
|
172
|
+
if (property.type === "Identifier") return property.name;
|
|
173
|
+
if (property.type === "Literal" && typeof property.value === "string") return property.value;
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
function definitionCreatesFunction(def) {
|
|
177
|
+
if (def.type === "FunctionName") return true;
|
|
178
|
+
if (def.type === "Variable" && def.node.type === "VariableDeclarator") {
|
|
179
|
+
const init = def.node.init;
|
|
180
|
+
if (!init) return false;
|
|
181
|
+
return init.type === "FunctionExpression" || init.type === "ArrowFunctionExpression";
|
|
182
|
+
}
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
function isFunctionNode(node) {
|
|
186
|
+
return node.type === "FunctionDeclaration" || node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression";
|
|
187
|
+
}
|
|
188
|
+
function isFunctionLikeNode(node, context) {
|
|
189
|
+
if (node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression") return true;
|
|
190
|
+
if (node.type !== "Identifier") return false;
|
|
191
|
+
return variableHoldsFunction(node.name, context, node);
|
|
192
|
+
}
|
|
193
|
+
function variableHoldsFunction(name, context, referenceNode) {
|
|
194
|
+
let scope = context.sourceCode.getScope(referenceNode);
|
|
195
|
+
while (scope) {
|
|
196
|
+
if (scope.set.get(name)?.defs.some(definitionCreatesFunction)) return true;
|
|
197
|
+
scope = scope.upper;
|
|
198
|
+
}
|
|
199
|
+
return false;
|
|
200
|
+
}
|
|
201
|
+
//#endregion
|
|
202
|
+
//#region src/rules/no-disallowed-methods.ts
|
|
203
|
+
var no_disallowed_methods_default = defineAppsyncRule({
|
|
204
|
+
meta: {
|
|
205
|
+
type: "problem",
|
|
206
|
+
docs: { description: "Disallow unsupported method calls such as call, apply, and bind" },
|
|
207
|
+
messages: { default: "The {{method}}() method is not supported in the AppSync JS runtime" },
|
|
208
|
+
schema: []
|
|
209
|
+
},
|
|
210
|
+
createOnce(context) {
|
|
211
|
+
return { CallExpression(node) {
|
|
212
|
+
if (node.callee.type !== "MemberExpression") return;
|
|
213
|
+
const method = getMemberPropertyName(node.callee.property);
|
|
214
|
+
if (method && DISALLOWED_METHOD_NAMES.has(method)) context.report({
|
|
215
|
+
node,
|
|
216
|
+
messageId: "default",
|
|
217
|
+
data: { method }
|
|
218
|
+
});
|
|
219
|
+
} };
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
//#endregion
|
|
141
223
|
//#region src/rules/no-do-while.ts
|
|
142
224
|
var no_do_while_default = defineAppsyncRule({
|
|
143
225
|
meta: {
|
|
@@ -168,7 +250,7 @@ var no_for_loop_default = defineAppsyncRule({
|
|
|
168
250
|
}
|
|
169
251
|
});
|
|
170
252
|
//#endregion
|
|
171
|
-
//#region src/
|
|
253
|
+
//#region src/lib/callback-accepting-methods.ts
|
|
172
254
|
const CALLBACK_ACCEPTING_METHODS = /* @__PURE__ */ new Set([
|
|
173
255
|
"map",
|
|
174
256
|
"find",
|
|
@@ -183,32 +265,20 @@ const CALLBACK_ACCEPTING_METHODS = /* @__PURE__ */ new Set([
|
|
|
183
265
|
"some",
|
|
184
266
|
"flatMap"
|
|
185
267
|
]);
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
if (property.type === "Literal" && typeof property.value === "string") return property.value;
|
|
189
|
-
return null;
|
|
190
|
-
}
|
|
268
|
+
//#endregion
|
|
269
|
+
//#region src/rules/no-function-arguments.ts
|
|
191
270
|
function isCallbackAcceptingCall(callee) {
|
|
192
271
|
if (callee.type !== "MemberExpression") return false;
|
|
193
272
|
const propertyName = getMemberPropertyName(callee.property);
|
|
194
273
|
return propertyName !== null && CALLBACK_ACCEPTING_METHODS.has(propertyName);
|
|
195
274
|
}
|
|
196
|
-
function definitionCreatesFunction(def) {
|
|
197
|
-
if (def.type === "FunctionName") return true;
|
|
198
|
-
if (def.type === "Variable" && def.node.type === "VariableDeclarator") {
|
|
199
|
-
const init = def.node.init;
|
|
200
|
-
if (!init) return false;
|
|
201
|
-
return init.type === "FunctionExpression" || init.type === "ArrowFunctionExpression";
|
|
202
|
-
}
|
|
203
|
-
return false;
|
|
204
|
-
}
|
|
205
275
|
function isFunctionLikeArgument(node, context) {
|
|
206
276
|
if (node.type === "FunctionExpression" || node.type === "ArrowFunctionExpression") return true;
|
|
207
277
|
if (node.type !== "Identifier") return false;
|
|
208
278
|
let scope = context.sourceCode.getScope(node);
|
|
209
279
|
while (scope) {
|
|
210
280
|
if (scope.set.get(node.name)?.defs.some(definitionCreatesFunction)) return true;
|
|
211
|
-
scope = scope.upper;
|
|
281
|
+
scope = scope.upper ?? null;
|
|
212
282
|
}
|
|
213
283
|
return false;
|
|
214
284
|
}
|
|
@@ -231,6 +301,38 @@ var no_function_arguments_default = defineAppsyncRule({
|
|
|
231
301
|
}
|
|
232
302
|
});
|
|
233
303
|
//#endregion
|
|
304
|
+
//#region src/rules/no-function-reassign.ts
|
|
305
|
+
var no_function_reassign_default = defineAppsyncRule({
|
|
306
|
+
meta: {
|
|
307
|
+
type: "problem",
|
|
308
|
+
docs: { description: "Disallow reassigning function variables in AppSync resolvers" },
|
|
309
|
+
messages: { default: "Functions cannot be reassigned in the AppSync JS runtime" },
|
|
310
|
+
schema: []
|
|
311
|
+
},
|
|
312
|
+
createOnce(context) {
|
|
313
|
+
return { AssignmentExpression(node) {
|
|
314
|
+
if (node.left.type !== "Identifier") return;
|
|
315
|
+
if (variableHoldsFunction(node.left.name, context, node.left)) reportDefault(context, node.left);
|
|
316
|
+
} };
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
//#endregion
|
|
320
|
+
//#region src/rules/no-function-return.ts
|
|
321
|
+
var no_function_return_default = defineAppsyncRule({
|
|
322
|
+
meta: {
|
|
323
|
+
type: "problem",
|
|
324
|
+
docs: { description: "Disallow returning functions from functions in AppSync resolvers" },
|
|
325
|
+
messages: { default: "Functions cannot be the return value of functions in the AppSync JS runtime" },
|
|
326
|
+
schema: []
|
|
327
|
+
},
|
|
328
|
+
createOnce(context) {
|
|
329
|
+
return { ReturnStatement(node) {
|
|
330
|
+
if (!node.argument) return;
|
|
331
|
+
if (isFunctionLikeNode(node.argument, context)) reportDefault(context, node.argument);
|
|
332
|
+
} };
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
//#endregion
|
|
234
336
|
//#region src/rules/no-generators.ts
|
|
235
337
|
var no_generators_default = defineAppsyncRule({
|
|
236
338
|
meta: {
|
|
@@ -250,7 +352,7 @@ var no_generators_default = defineAppsyncRule({
|
|
|
250
352
|
}
|
|
251
353
|
});
|
|
252
354
|
//#endregion
|
|
253
|
-
//#region src/
|
|
355
|
+
//#region src/lib/global-constructors.ts
|
|
254
356
|
const GLOBAL_CONSTRUCTOR_NAMES = /* @__PURE__ */ new Set([
|
|
255
357
|
"String",
|
|
256
358
|
"Boolean",
|
|
@@ -283,67 +385,172 @@ var no_global_constructor_default = defineAppsyncRule({
|
|
|
283
385
|
}
|
|
284
386
|
});
|
|
285
387
|
//#endregion
|
|
388
|
+
//#region src/rules/no-in-operator.ts
|
|
389
|
+
var no_in_operator_default = defineAppsyncRule({
|
|
390
|
+
meta: {
|
|
391
|
+
type: "problem",
|
|
392
|
+
docs: { description: "Disallow the in operator in AppSync resolvers" },
|
|
393
|
+
messages: { default: "The in operator is not supported in the AppSync JS runtime; use Object.hasOwn instead" },
|
|
394
|
+
schema: []
|
|
395
|
+
},
|
|
396
|
+
createOnce(context) {
|
|
397
|
+
return { BinaryExpression(node) {
|
|
398
|
+
if (node.operator === "in") reportDefault(context, node);
|
|
399
|
+
} };
|
|
400
|
+
}
|
|
401
|
+
});
|
|
402
|
+
//#endregion
|
|
403
|
+
//#region src/rules/no-instanceof.ts
|
|
404
|
+
var no_instanceof_default = defineAppsyncRule({
|
|
405
|
+
meta: {
|
|
406
|
+
type: "problem",
|
|
407
|
+
docs: { description: "Disallow the instanceof operator in AppSync resolvers" },
|
|
408
|
+
messages: { default: "The instanceof operator is not supported in the AppSync JS runtime" },
|
|
409
|
+
schema: []
|
|
410
|
+
},
|
|
411
|
+
createOnce(context) {
|
|
412
|
+
return { BinaryExpression(node) {
|
|
413
|
+
if (node.operator === "instanceof") reportDefault(context, node);
|
|
414
|
+
} };
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
//#endregion
|
|
418
|
+
//#region src/rules/no-labeled-statement.ts
|
|
419
|
+
var no_labeled_statement_default = defineAppsyncRule({
|
|
420
|
+
meta: {
|
|
421
|
+
type: "problem",
|
|
422
|
+
docs: { description: "Disallow labeled statements in AppSync resolvers" },
|
|
423
|
+
messages: { default: "Labeled statements are not supported in the AppSync JS runtime" },
|
|
424
|
+
schema: []
|
|
425
|
+
},
|
|
426
|
+
createOnce(context) {
|
|
427
|
+
return { LabeledStatement(node) {
|
|
428
|
+
reportDefault(context, node);
|
|
429
|
+
} };
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
//#endregion
|
|
433
|
+
//#region src/rules/no-new.ts
|
|
434
|
+
var no_new_default = defineAppsyncRule({
|
|
435
|
+
meta: {
|
|
436
|
+
type: "problem",
|
|
437
|
+
docs: { description: "Disallow the new operator in AppSync resolvers" },
|
|
438
|
+
messages: { default: "The new operator is not supported in the AppSync JS runtime" },
|
|
439
|
+
schema: []
|
|
440
|
+
},
|
|
441
|
+
createOnce(context) {
|
|
442
|
+
return { NewExpression(node) {
|
|
443
|
+
reportDefault(context, node);
|
|
444
|
+
} };
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
//#endregion
|
|
448
|
+
//#region src/rules/no-promise.ts
|
|
449
|
+
var no_promise_default = defineAppsyncRule({
|
|
450
|
+
meta: {
|
|
451
|
+
type: "problem",
|
|
452
|
+
docs: { description: "Disallow Promise usage in AppSync resolvers" },
|
|
453
|
+
messages: { default: "Promises are not supported in the AppSync JS runtime" },
|
|
454
|
+
schema: []
|
|
455
|
+
},
|
|
456
|
+
createOnce(context) {
|
|
457
|
+
return {
|
|
458
|
+
CallExpression(node) {
|
|
459
|
+
const { callee } = node;
|
|
460
|
+
if (isIdentifier(callee, "Promise") || callee.type === "MemberExpression" && isIdentifier(callee.object, "Promise")) reportDefault(context, node);
|
|
461
|
+
},
|
|
462
|
+
NewExpression(node) {
|
|
463
|
+
if (isIdentifier(node.callee, "Promise")) reportDefault(context, node);
|
|
464
|
+
},
|
|
465
|
+
VariableDeclarator(node) {
|
|
466
|
+
if (node.init && isIdentifier(node.init, "Promise")) reportDefault(context, node.init);
|
|
467
|
+
},
|
|
468
|
+
AssignmentExpression(node) {
|
|
469
|
+
if (isIdentifier(node.right, "Promise")) reportDefault(context, node.right);
|
|
470
|
+
}
|
|
471
|
+
};
|
|
472
|
+
}
|
|
473
|
+
});
|
|
474
|
+
//#endregion
|
|
475
|
+
//#region src/rules/no-recursion.ts
|
|
476
|
+
function getEnclosingBindingNames(node, context) {
|
|
477
|
+
const names = /* @__PURE__ */ new Set();
|
|
478
|
+
if ((node.type === "FunctionDeclaration" || node.type === "FunctionExpression") && node.id?.type === "Identifier") names.add(node.id.name);
|
|
479
|
+
let scope = context.sourceCode.getScope(node).upper;
|
|
480
|
+
while (scope) {
|
|
481
|
+
for (const variable of scope.variables) for (const def of variable.defs) if (def.type === "Variable" && def.node.type === "VariableDeclarator" && def.node.init === node) names.add(variable.name);
|
|
482
|
+
scope = scope.upper;
|
|
483
|
+
}
|
|
484
|
+
return names;
|
|
485
|
+
}
|
|
486
|
+
//#endregion
|
|
286
487
|
//#region src/rules/index.ts
|
|
287
488
|
const rules = {
|
|
288
489
|
"no-appsync-globals": no_appsync_globals_default,
|
|
289
490
|
"no-async-await": no_async_await_default,
|
|
290
491
|
"no-bitwise-not": no_bitwise_not_default,
|
|
291
492
|
"no-classes": no_classes_default,
|
|
493
|
+
"no-context-reassignment": no_context_reassignment_default,
|
|
292
494
|
"no-continue": no_continue_default,
|
|
293
495
|
"no-do-while": no_do_while_default,
|
|
496
|
+
"no-disallowed-methods": no_disallowed_methods_default,
|
|
294
497
|
"no-for-loop": no_for_loop_default,
|
|
295
498
|
"no-function-arguments": no_function_arguments_default,
|
|
499
|
+
"no-function-reassign": no_function_reassign_default,
|
|
500
|
+
"no-function-return": no_function_return_default,
|
|
296
501
|
"no-generators": no_generators_default,
|
|
297
|
-
"no-in-operator":
|
|
502
|
+
"no-in-operator": no_in_operator_default,
|
|
503
|
+
"no-instanceof": no_instanceof_default,
|
|
504
|
+
"no-labeled-statement": no_labeled_statement_default,
|
|
505
|
+
"no-new": no_new_default,
|
|
506
|
+
"no-promise": no_promise_default,
|
|
507
|
+
"no-recursion": defineAppsyncRule({
|
|
298
508
|
meta: {
|
|
299
509
|
type: "problem",
|
|
300
|
-
docs: { description: "Disallow
|
|
301
|
-
messages: { default: "
|
|
510
|
+
docs: { description: "Disallow recursive function calls in AppSync resolvers" },
|
|
511
|
+
messages: { default: "Recursive function calls are not supported in the AppSync JS runtime" },
|
|
302
512
|
schema: []
|
|
303
513
|
},
|
|
304
514
|
createOnce(context) {
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
docs: { description: "Disallow labeled statements in AppSync resolvers" },
|
|
327
|
-
messages: { default: "Labeled statements are not supported in the AppSync JS runtime" },
|
|
328
|
-
schema: []
|
|
329
|
-
},
|
|
330
|
-
createOnce(context) {
|
|
331
|
-
return { LabeledStatement(node) {
|
|
332
|
-
reportDefault(context, node);
|
|
333
|
-
} };
|
|
515
|
+
const enclosingBindingNames = [];
|
|
516
|
+
const enterFunction = (node) => {
|
|
517
|
+
if (!isFunctionNode(node)) return;
|
|
518
|
+
enclosingBindingNames.push(getEnclosingBindingNames(node, context));
|
|
519
|
+
};
|
|
520
|
+
const exitFunction = (node) => {
|
|
521
|
+
if (!isFunctionNode(node)) return;
|
|
522
|
+
enclosingBindingNames.pop();
|
|
523
|
+
};
|
|
524
|
+
return {
|
|
525
|
+
FunctionDeclaration: enterFunction,
|
|
526
|
+
"FunctionDeclaration:exit": exitFunction,
|
|
527
|
+
FunctionExpression: enterFunction,
|
|
528
|
+
"FunctionExpression:exit": exitFunction,
|
|
529
|
+
ArrowFunctionExpression: enterFunction,
|
|
530
|
+
"ArrowFunctionExpression:exit": exitFunction,
|
|
531
|
+
CallExpression(node) {
|
|
532
|
+
if (node.callee.type !== "Identifier") return;
|
|
533
|
+
if (enclosingBindingNames[enclosingBindingNames.length - 1]?.has(node.callee.name)) reportDefault(context, node);
|
|
534
|
+
}
|
|
535
|
+
};
|
|
334
536
|
}
|
|
335
537
|
}),
|
|
336
|
-
"no-
|
|
538
|
+
"no-regex": defineAppsyncRule({
|
|
337
539
|
meta: {
|
|
338
540
|
type: "problem",
|
|
339
|
-
docs: { description: "Disallow
|
|
340
|
-
messages: { default: "
|
|
541
|
+
docs: { description: "Disallow regex literals in AppSync resolvers" },
|
|
542
|
+
messages: { default: "Regex literals are not supported in the AppSync JS runtime" },
|
|
341
543
|
schema: []
|
|
342
544
|
},
|
|
343
545
|
createOnce(context) {
|
|
344
|
-
return {
|
|
345
|
-
|
|
346
|
-
|
|
546
|
+
return {
|
|
547
|
+
Literal(node) {
|
|
548
|
+
if ("regex" in node && node.regex) reportDefault(context, node);
|
|
549
|
+
},
|
|
550
|
+
RegExpLiteral(node) {
|
|
551
|
+
reportDefault(context, node);
|
|
552
|
+
}
|
|
553
|
+
};
|
|
347
554
|
}
|
|
348
555
|
}),
|
|
349
556
|
"no-global-constructor": no_global_constructor_default,
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["member","noAppsyncGlobals","noAsyncAwait","noBitwiseNot","noClasses","noContinue","noDoWhile","noForLoop","noFunctionArguments","noGenerators","noInOperator","noInstanceof","noLabeledStatement","noNew","noGlobalConstructor","noThis","noThrow","noTry","noUpdateOperators","noWhile"],"sources":["../src/rules/appsync-globals.ts","../src/rules/types.ts","../src/rules/no-appsync-globals.ts","../src/rules/utils.ts","../src/rules/no-async-await.ts","../src/rules/no-bitwise-not.ts","../src/rules/no-classes.ts","../src/rules/no-continue.ts","../src/rules/no-do-while.ts","../src/rules/no-for-loop.ts","../src/rules/no-function-arguments.ts","../src/rules/no-generators.ts","../src/rules/global-constructors.ts","../src/rules/no-global-constructor.ts","../src/rules/no-in-operator.ts","../src/rules/no-instanceof.ts","../src/rules/no-labeled-statement.ts","../src/rules/no-new.ts","../src/rules/no-this.ts","../src/rules/no-throw.ts","../src/rules/no-try.ts","../src/rules/no-update-operators.ts","../src/rules/no-while.ts","../src/rules/index.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["export const APPSYNC_GLOBAL_NAMES = new Set([\n \"util\",\n \"extensions\",\n \"runtime\",\n]);\n","import type { CreateOnceRule } from \"@oxlint/plugins\";\n\nexport type AppsyncRuleModule = CreateOnceRule;\n\nexport function defineAppsyncRule(rule: AppsyncRuleModule): AppsyncRuleModule {\n return rule;\n}\n","import type { Context, ESTree, Scope } from \"@oxlint/plugins\";\nimport { APPSYNC_GLOBAL_NAMES } from \"./appsync-globals.js\";\nimport { defineAppsyncRule } from \"./types.js\";\n\nfunction isBindingPosition(node: ESTree.Node): boolean {\n const parent = node.parent;\n if (!parent) {\n return false;\n }\n\n if (\n parent.type === \"VariableDeclarator\" ||\n parent.type === \"FunctionDeclaration\" ||\n parent.type === \"FunctionExpression\" ||\n parent.type === \"ClassDeclaration\"\n ) {\n return parent.id === node;\n }\n\n if (\n parent.type === \"ImportSpecifier\" ||\n parent.type === \"ImportDefaultSpecifier\" ||\n parent.type === \"ImportNamespaceSpecifier\"\n ) {\n return parent.local === node;\n }\n\n if (parent.type === \"CatchClause\") {\n return parent.param === node;\n }\n\n return false;\n}\n\nfunction isNonReferencePosition(node: ESTree.Node): boolean {\n const parent = node.parent;\n if (!parent) {\n return false;\n }\n\n if (parent.type === \"Property\" && parent.key === node && !parent.computed) {\n return true;\n }\n\n if (\n parent.type === \"MemberExpression\" &&\n parent.property === node &&\n !parent.computed\n ) {\n return true;\n }\n\n return isBindingPosition(node);\n}\n\nfunction hasLocalBinding(\n node: { name: string },\n context: Context,\n): boolean {\n let scope: Scope | null = context.sourceCode.getScope(\n node as ESTree.IdentifierReference,\n );\n while (scope) {\n const variable = scope.set.get(node.name);\n if (variable && variable.defs.length > 0) {\n return true;\n }\n scope = scope.upper;\n }\n\n return false;\n}\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow AppSync-only globals in code that must run outside the AppSync runtime\",\n },\n messages: {\n default:\n \"AppSync global `{{name}}` is not available outside the AppSync runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n Identifier(node) {\n if (!APPSYNC_GLOBAL_NAMES.has(node.name)) {\n return;\n }\n\n if (isNonReferencePosition(node)) {\n return;\n }\n\n if (hasLocalBinding(node, context)) {\n return;\n }\n\n context.report({\n node,\n messageId: \"default\",\n data: { name: node.name },\n });\n },\n };\n },\n});\n","import type { Context, ESTree } from \"@oxlint/plugins\";\n\ntype NodeWithType = { type: string };\n\nexport function isIdentifier(\n node: NodeWithType | null | undefined,\n name: string,\n): boolean {\n return (\n node?.type === \"Identifier\" &&\n (node as unknown as { name: string }).name === name\n );\n}\n\nexport function reportDefault(\n context: Context,\n node: ESTree.Node,\n messageId = \"default\",\n): void {\n context.report({ node, messageId });\n}\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow async functions and await expressions in AppSync resolvers\",\n },\n messages: {\n default:\n \"Promises and async/await are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n const reportAsyncFunction = (node: { async?: boolean }) => {\n if (node.async) {\n reportDefault(context, node as never);\n }\n };\n\n return {\n AwaitExpression(node) {\n reportDefault(context, node);\n },\n FunctionDeclaration: reportAsyncFunction,\n FunctionExpression: reportAsyncFunction,\n ArrowFunctionExpression: reportAsyncFunction,\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the bitwise NOT (~) operator in AppSync resolvers\",\n },\n messages: {\n default: \"The ~ operator is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n UnaryExpression(node) {\n if (node.operator === \"~\") {\n reportDefault(context, node);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow class declarations and expressions in AppSync resolvers\",\n },\n messages: {\n default: \"Classes are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ClassDeclaration(node) {\n reportDefault(context, node);\n },\n ClassExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow continue statements in AppSync resolvers\",\n },\n messages: {\n default: \"continue statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ContinueStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow do-while loops in AppSync resolvers\",\n },\n messages: {\n default: \"do-while loops are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n DoWhileStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow C-style for loops in AppSync resolvers (for-in and for-of are allowed)\",\n },\n messages: {\n default:\n \"Only for-in and for-of loops are supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ForStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import type { Context, Definition, ESTree, Scope } from \"@oxlint/plugins\";\nimport { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nconst CALLBACK_ACCEPTING_METHODS = new Set([\n \"map\",\n \"find\",\n \"filter\",\n \"findIndex\",\n \"findLast\",\n \"findLastIndex\",\n \"forEach\",\n \"reduce\",\n \"reduceRight\",\n \"every\",\n \"some\",\n \"flatMap\",\n]);\n\nfunction getMemberPropertyName(\n property: ESTree.Node & { type: string },\n): string | null {\n if (property.type === \"Identifier\") {\n return (property as unknown as { name: string }).name;\n }\n\n if (property.type === \"Literal\" && typeof property.value === \"string\") {\n return property.value;\n }\n\n return null;\n}\n\nfunction isCallbackAcceptingCall(callee: ESTree.Node): boolean {\n if (callee.type !== \"MemberExpression\") {\n return false;\n }\n\n const member = callee as ESTree.StaticMemberExpression | ESTree.ComputedMemberExpression;\n const propertyName = getMemberPropertyName(member.property);\n return propertyName !== null && CALLBACK_ACCEPTING_METHODS.has(propertyName);\n}\n\nfunction definitionCreatesFunction(def: Definition): boolean {\n if (def.type === \"FunctionName\") {\n return true;\n }\n\n if (def.type === \"Variable\" && def.node.type === \"VariableDeclarator\") {\n const init = def.node.init;\n if (!init) {\n return false;\n }\n\n return (\n init.type === \"FunctionExpression\" ||\n init.type === \"ArrowFunctionExpression\"\n );\n }\n\n return false;\n}\n\nfunction isFunctionLikeArgument(node: ESTree.Node, context: Context): boolean {\n if (\n node.type === \"FunctionExpression\" ||\n node.type === \"ArrowFunctionExpression\"\n ) {\n return true;\n }\n\n if (node.type !== \"Identifier\") {\n return false;\n }\n\n let scope: Scope | null = context.sourceCode.getScope(node);\n while (scope) {\n const variable = scope.set.get(node.name);\n if (variable?.defs.some(definitionCreatesFunction)) {\n return true;\n }\n scope = scope.upper;\n }\n\n return false;\n}\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow passing functions as call arguments except to allowlisted Array methods\",\n },\n messages: {\n default: \"Functions can not be passed as an argument\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n const allowsCallbacks = isCallbackAcceptingCall(node.callee);\n\n for (const argument of node.arguments) {\n if (argument.type === \"SpreadElement\") {\n continue;\n }\n\n if (argument.type === \"ArrowFunctionExpression\" && allowsCallbacks) {\n continue;\n }\n\n if (isFunctionLikeArgument(argument, context)) {\n reportDefault(context, argument);\n }\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow generator functions in AppSync resolvers\",\n },\n messages: {\n default: \"Generators are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n const reportGenerator = (node: { generator?: boolean }) => {\n if (node.generator) {\n reportDefault(context, node as never);\n }\n };\n\n return {\n FunctionDeclaration: reportGenerator,\n FunctionExpression: reportGenerator,\n };\n },\n});\n","export const GLOBAL_CONSTRUCTOR_NAMES = new Set([\n \"String\",\n \"Boolean\",\n \"Number\",\n \"BigInt\",\n \"Symbol\",\n \"Date\",\n \"Object\",\n \"Array\",\n \"Function\",\n \"RegExp\",\n]);\n","import { GLOBAL_CONSTRUCTOR_NAMES } from \"./global-constructors.js\";\nimport { defineAppsyncRule } from \"./types.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow calling global constructor functions in AppSync resolvers\",\n },\n messages: {\n default:\n \"Do not use `{{name}}()` as a constructor in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n if (\n node.callee.type === \"Identifier\" &&\n GLOBAL_CONSTRUCTOR_NAMES.has(node.callee.name)\n ) {\n context.report({\n node,\n messageId: \"default\",\n data: { name: node.callee.name },\n });\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the in operator in AppSync resolvers\",\n },\n messages: {\n default:\n \"The in operator is not supported in the AppSync JS runtime; use Object.hasOwn instead\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n BinaryExpression(node) {\n if (node.operator === \"in\") {\n reportDefault(context, node);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the instanceof operator in AppSync resolvers\",\n },\n messages: {\n default: \"The instanceof operator is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n BinaryExpression(node) {\n if (node.operator === \"instanceof\") {\n reportDefault(context, node);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow labeled statements in AppSync resolvers\",\n },\n messages: {\n default: \"Labeled statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n LabeledStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the new operator in AppSync resolvers\",\n },\n messages: {\n default: \"The new operator is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n NewExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow this expressions in AppSync resolvers\",\n },\n messages: {\n default: \"this is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ThisExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow throw statements in AppSync resolvers\",\n },\n messages: {\n default: \"throw statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ThrowStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow try/catch/finally statements in AppSync resolvers\",\n },\n messages: {\n default:\n \"try/catch/finally statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n TryStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow ++ and -- operators in AppSync resolvers\",\n },\n messages: {\n default: \"++ and -- operators are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n UpdateExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow while loops in AppSync resolvers\",\n },\n messages: {\n default: \"while loops are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n WhileStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import noAppsyncGlobals from \"./no-appsync-globals.js\";\nimport noAsyncAwait from \"./no-async-await.js\";\nimport noBitwiseNot from \"./no-bitwise-not.js\";\nimport noClasses from \"./no-classes.js\";\nimport noContinue from \"./no-continue.js\";\nimport noDoWhile from \"./no-do-while.js\";\nimport noForLoop from \"./no-for-loop.js\";\nimport noFunctionArguments from \"./no-function-arguments.js\";\nimport noGenerators from \"./no-generators.js\";\nimport noGlobalConstructor from \"./no-global-constructor.js\";\nimport noInOperator from \"./no-in-operator.js\";\nimport noInstanceof from \"./no-instanceof.js\";\nimport noLabeledStatement from \"./no-labeled-statement.js\";\nimport noNew from \"./no-new.js\";\nimport noThis from \"./no-this.js\";\nimport noThrow from \"./no-throw.js\";\nimport noTry from \"./no-try.js\";\nimport noUpdateOperators from \"./no-update-operators.js\";\nimport noWhile from \"./no-while.js\";\nimport type { AppsyncRuleModule } from \"./types.js\";\n\nconst rules = {\n \"no-appsync-globals\": noAppsyncGlobals,\n \"no-async-await\": noAsyncAwait,\n \"no-bitwise-not\": noBitwiseNot,\n \"no-classes\": noClasses,\n \"no-continue\": noContinue,\n \"no-do-while\": noDoWhile,\n \"no-for-loop\": noForLoop,\n \"no-function-arguments\": noFunctionArguments,\n \"no-generators\": noGenerators,\n \"no-in-operator\": noInOperator,\n \"no-instanceof\": noInstanceof,\n \"no-labeled-statement\": noLabeledStatement,\n \"no-new\": noNew,\n \"no-global-constructor\": noGlobalConstructor,\n \"no-this\": noThis,\n \"no-throw\": noThrow,\n \"no-try\": noTry,\n \"no-update-operators\": noUpdateOperators,\n \"no-while\": noWhile,\n} satisfies Record<string, AppsyncRuleModule>;\n\nexport type AppsyncRuleName = keyof typeof rules;\n\nexport default rules;\n","import { eslintCompatPlugin } from \"@oxlint/plugins\";\nimport rules from \"./rules/index.js\";\n\nconst OPT_IN_RULES = new Set([\"no-appsync-globals\"]);\n\nexport const plugin = eslintCompatPlugin({\n meta: {\n name: \"appsync\",\n },\n rules,\n});\n\nexport const recommended = Object.fromEntries(\n Object.keys(rules)\n .filter((ruleName) => !OPT_IN_RULES.has(ruleName))\n .map((ruleName) => [`appsync/${ruleName}`, \"error\"]),\n) as Record<`appsync/${Exclude<keyof typeof rules, \"no-appsync-globals\">}`, \"error\">;\n\nexport const portable = {\n ...recommended,\n \"appsync/no-appsync-globals\": \"error\",\n} as const;\n","import { plugin, portable, recommended } from \"./plugin.js\";\n\nexport { plugin, portable, recommended };\nexport default plugin;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["member","noAppsyncGlobals","noAsyncAwait","noBitwiseNot","noClasses","noContextReassignment","noContinue","noDoWhile","noDisallowedMethods","noForLoop","noFunctionArguments","noFunctionReassign","noFunctionReturn","noGenerators","noInOperator","noInstanceof","noLabeledStatement","noNew","noPromise","noRecursion","noRegex","noGlobalConstructor","noThis","noThrow","noTry","noUpdateOperators","noWhile"],"sources":["../src/lib/appsync-globals.ts","../src/lib/rule-types.ts","../src/rules/no-appsync-globals.ts","../src/lib/utils.ts","../src/rules/no-async-await.ts","../src/rules/no-bitwise-not.ts","../src/rules/no-classes.ts","../src/rules/no-context-reassignment.ts","../src/rules/no-continue.ts","../src/lib/disallowed-methods.ts","../src/lib/function-utils.ts","../src/rules/no-disallowed-methods.ts","../src/rules/no-do-while.ts","../src/rules/no-for-loop.ts","../src/lib/callback-accepting-methods.ts","../src/rules/no-function-arguments.ts","../src/rules/no-function-reassign.ts","../src/rules/no-function-return.ts","../src/rules/no-generators.ts","../src/lib/global-constructors.ts","../src/rules/no-global-constructor.ts","../src/rules/no-in-operator.ts","../src/rules/no-instanceof.ts","../src/rules/no-labeled-statement.ts","../src/rules/no-new.ts","../src/rules/no-promise.ts","../src/rules/no-recursion.ts","../src/rules/no-regex.ts","../src/rules/no-this.ts","../src/rules/no-throw.ts","../src/rules/no-try.ts","../src/rules/no-update-operators.ts","../src/rules/no-while.ts","../src/rules/index.ts","../src/plugin.ts","../src/index.ts"],"sourcesContent":["export const APPSYNC_GLOBAL_NAMES = new Set([\n \"util\",\n \"extensions\",\n \"runtime\",\n]);\n","import type { CreateOnceRule } from \"@oxlint/plugins\";\n\nexport type AppsyncRuleModule = CreateOnceRule;\n\nexport function defineAppsyncRule(rule: AppsyncRuleModule): AppsyncRuleModule {\n return rule;\n}\n","import type { Context, ESTree, Scope } from \"@oxlint/plugins\";\nimport { APPSYNC_GLOBAL_NAMES } from \"../lib/appsync-globals.js\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\n\nfunction isBindingPosition(node: ESTree.Node): boolean {\n const parent = node.parent;\n if (!parent) {\n return false;\n }\n\n if (\n parent.type === \"VariableDeclarator\" ||\n parent.type === \"FunctionDeclaration\" ||\n parent.type === \"FunctionExpression\" ||\n parent.type === \"ClassDeclaration\"\n ) {\n return parent.id === node;\n }\n\n if (\n parent.type === \"ImportSpecifier\" ||\n parent.type === \"ImportDefaultSpecifier\" ||\n parent.type === \"ImportNamespaceSpecifier\"\n ) {\n return parent.local === node;\n }\n\n if (parent.type === \"CatchClause\") {\n return parent.param === node;\n }\n\n return false;\n}\n\nfunction isNonReferencePosition(node: ESTree.Node): boolean {\n const parent = node.parent;\n if (!parent) {\n return false;\n }\n\n if (parent.type === \"Property\" && parent.key === node && !parent.computed) {\n return true;\n }\n\n if (\n parent.type === \"MemberExpression\" &&\n parent.property === node &&\n !parent.computed\n ) {\n return true;\n }\n\n return isBindingPosition(node);\n}\n\nfunction hasLocalBinding(\n node: { name: string },\n context: Context,\n): boolean {\n let scope: Scope | null = context.sourceCode.getScope(\n node as ESTree.IdentifierReference,\n );\n while (scope) {\n const variable = scope.set.get(node.name);\n if (variable && variable.defs.length > 0) {\n return true;\n }\n scope = scope.upper;\n }\n\n return false;\n}\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow AppSync-only globals in code that must run outside the AppSync runtime\",\n },\n messages: {\n default:\n \"AppSync global `{{name}}` is not available outside the AppSync runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n Identifier(node) {\n if (!APPSYNC_GLOBAL_NAMES.has(node.name)) {\n return;\n }\n\n if (isNonReferencePosition(node)) {\n return;\n }\n\n if (hasLocalBinding(node, context)) {\n return;\n }\n\n context.report({\n node,\n messageId: \"default\",\n data: { name: node.name },\n });\n },\n };\n },\n});\n","import type { Context, ESTree } from \"@oxlint/plugins\";\n\ntype NodeWithType = { type: string };\n\nexport function isIdentifier(\n node: NodeWithType | null | undefined,\n name: string,\n): boolean {\n return (\n node?.type === \"Identifier\" &&\n (node as unknown as { name: string }).name === name\n );\n}\n\nexport function reportDefault(\n context: Context,\n node: ESTree.Node,\n messageId = \"default\",\n): void {\n context.report({ node, messageId });\n}\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow async functions and await expressions in AppSync resolvers\",\n },\n messages: {\n default:\n \"Promises and async/await are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n const reportAsyncFunction = (node: { async?: boolean }) => {\n if (node.async) {\n reportDefault(context, node as never);\n }\n };\n\n return {\n AwaitExpression(node) {\n reportDefault(context, node);\n },\n FunctionDeclaration: reportAsyncFunction,\n FunctionExpression: reportAsyncFunction,\n ArrowFunctionExpression: reportAsyncFunction,\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the bitwise NOT (~) operator in AppSync resolvers\",\n },\n messages: {\n default: \"The ~ operator is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n UnaryExpression(node) {\n if (node.operator === \"~\") {\n reportDefault(context, node);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow class declarations and expressions in AppSync resolvers\",\n },\n messages: {\n default: \"Classes are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ClassDeclaration(node) {\n reportDefault(context, node);\n },\n ClassExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import type { ESTree } from \"@oxlint/plugins\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { isIdentifier, reportDefault } from \"../lib/utils.js\";\n\nfunction isContextAssignmentTarget(node: ESTree.Node): boolean {\n if (isIdentifier(node, \"context\")) {\n return true;\n }\n\n return (\n node.type === \"MemberExpression\" && isIdentifier(node.object, \"context\")\n );\n}\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow reassigning context and its base properties in AppSync resolvers\",\n },\n messages: {\n default:\n \"Reassigning context and base properties of context is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n AssignmentExpression(node) {\n if (isContextAssignmentTarget(node.left)) {\n reportDefault(context, node.left);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow continue statements in AppSync resolvers\",\n },\n messages: {\n default: \"continue statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ContinueStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","export const DISALLOWED_METHOD_NAMES = new Set([\"apply\", \"bind\", \"call\"]);\n","import type { Context, Definition, ESTree, Scope } from \"@oxlint/plugins\";\n\ntype FunctionNode = ESTree.Node & {\n type:\n | \"FunctionDeclaration\"\n | \"FunctionExpression\"\n | \"ArrowFunctionExpression\";\n id?: { name: string } | null;\n};\n\nexport function getMemberPropertyName(\n property: ESTree.Node & { type: string },\n): string | null {\n if (property.type === \"Identifier\") {\n return (property as unknown as { name: string }).name;\n }\n\n if (property.type === \"Literal\" && typeof property.value === \"string\") {\n return property.value;\n }\n\n return null;\n}\n\nexport function definitionCreatesFunction(def: Definition): boolean {\n if (def.type === \"FunctionName\") {\n return true;\n }\n\n if (def.type === \"Variable\" && def.node.type === \"VariableDeclarator\") {\n const init = def.node.init;\n if (!init) {\n return false;\n }\n\n return (\n init.type === \"FunctionExpression\" ||\n init.type === \"ArrowFunctionExpression\"\n );\n }\n\n return false;\n}\n\nexport function isFunctionNode(node: ESTree.Node): node is FunctionNode {\n return (\n node.type === \"FunctionDeclaration\" ||\n node.type === \"FunctionExpression\" ||\n node.type === \"ArrowFunctionExpression\"\n );\n}\n\nexport function isFunctionLikeNode(\n node: ESTree.Node,\n context: Context,\n): boolean {\n if (\n node.type === \"FunctionExpression\" ||\n node.type === \"ArrowFunctionExpression\"\n ) {\n return true;\n }\n\n if (node.type !== \"Identifier\") {\n return false;\n }\n\n return variableHoldsFunction(node.name, context, node);\n}\n\nexport function variableHoldsFunction(\n name: string,\n context: Context,\n referenceNode: ESTree.Node,\n): boolean {\n let scope: Scope | null = context.sourceCode.getScope(referenceNode);\n while (scope) {\n const variable = scope.set.get(name);\n if (variable?.defs.some(definitionCreatesFunction)) {\n return true;\n }\n scope = scope.upper;\n }\n\n return false;\n}\n","import { DISALLOWED_METHOD_NAMES } from \"../lib/disallowed-methods.js\";\nimport { getMemberPropertyName } from \"../lib/function-utils.js\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow unsupported method calls such as call, apply, and bind\",\n },\n messages: {\n default:\n \"The {{method}}() method is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n if (node.callee.type !== \"MemberExpression\") {\n return;\n }\n\n const method = getMemberPropertyName(node.callee.property);\n if (method && DISALLOWED_METHOD_NAMES.has(method)) {\n context.report({\n node,\n messageId: \"default\",\n data: { method },\n });\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow do-while loops in AppSync resolvers\",\n },\n messages: {\n default: \"do-while loops are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n DoWhileStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow C-style for loops in AppSync resolvers (for-in and for-of are allowed)\",\n },\n messages: {\n default:\n \"Only for-in and for-of loops are supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ForStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","export const CALLBACK_ACCEPTING_METHODS = new Set([\n \"map\",\n \"find\",\n \"filter\",\n \"findIndex\",\n \"findLast\",\n \"findLastIndex\",\n \"forEach\",\n \"reduce\",\n \"reduceRight\",\n \"every\",\n \"some\",\n \"flatMap\",\n]);\n","import type { Context, ESTree, Scope } from \"@oxlint/plugins\";\nimport { CALLBACK_ACCEPTING_METHODS } from \"../lib/callback-accepting-methods.js\";\nimport {\n definitionCreatesFunction,\n getMemberPropertyName,\n} from \"../lib/function-utils.js\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nfunction isCallbackAcceptingCall(callee: ESTree.Node): boolean {\n if (callee.type !== \"MemberExpression\") {\n return false;\n }\n\n const member = callee as\n | ESTree.StaticMemberExpression\n | ESTree.ComputedMemberExpression;\n const propertyName = getMemberPropertyName(member.property);\n return propertyName !== null && CALLBACK_ACCEPTING_METHODS.has(propertyName);\n}\n\nfunction isFunctionLikeArgument(node: ESTree.Node, context: Context): boolean {\n if (\n node.type === \"FunctionExpression\" ||\n node.type === \"ArrowFunctionExpression\"\n ) {\n return true;\n }\n\n if (node.type !== \"Identifier\") {\n return false;\n }\n\n let scope: Scope | null = context.sourceCode.getScope(node);\n while (scope) {\n const variable = scope.set.get(node.name);\n if (variable?.defs.some(definitionCreatesFunction)) {\n return true;\n }\n scope = scope.upper ?? null;\n }\n\n return false;\n}\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow passing functions as call arguments except to allowlisted Array methods\",\n },\n messages: {\n default: \"Functions can not be passed as an argument\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n const allowsCallbacks = isCallbackAcceptingCall(node.callee);\n\n for (const argument of node.arguments) {\n if (argument.type === \"SpreadElement\") {\n continue;\n }\n\n if (argument.type === \"ArrowFunctionExpression\" && allowsCallbacks) {\n continue;\n }\n\n if (isFunctionLikeArgument(argument, context)) {\n reportDefault(context, argument);\n }\n }\n },\n };\n },\n});\n","import { variableHoldsFunction } from \"../lib/function-utils.js\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow reassigning function variables in AppSync resolvers\",\n },\n messages: {\n default: \"Functions cannot be reassigned in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n AssignmentExpression(node) {\n if (node.left.type !== \"Identifier\") {\n return;\n }\n\n if (variableHoldsFunction(node.left.name, context, node.left)) {\n reportDefault(context, node.left);\n }\n },\n };\n },\n});\n","import { isFunctionLikeNode } from \"../lib/function-utils.js\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow returning functions from functions in AppSync resolvers\",\n },\n messages: {\n default:\n \"Functions cannot be the return value of functions in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ReturnStatement(node) {\n if (!node.argument) {\n return;\n }\n\n if (isFunctionLikeNode(node.argument, context)) {\n reportDefault(context, node.argument);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow generator functions in AppSync resolvers\",\n },\n messages: {\n default: \"Generators are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n const reportGenerator = (node: { generator?: boolean }) => {\n if (node.generator) {\n reportDefault(context, node as never);\n }\n };\n\n return {\n FunctionDeclaration: reportGenerator,\n FunctionExpression: reportGenerator,\n };\n },\n});\n","export const GLOBAL_CONSTRUCTOR_NAMES = new Set([\n \"String\",\n \"Boolean\",\n \"Number\",\n \"BigInt\",\n \"Symbol\",\n \"Date\",\n \"Object\",\n \"Array\",\n \"Function\",\n \"RegExp\",\n]);\n","import { GLOBAL_CONSTRUCTOR_NAMES } from \"../lib/global-constructors.js\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow calling global constructor functions in AppSync resolvers\",\n },\n messages: {\n default:\n \"Do not use `{{name}}()` as a constructor in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n if (\n node.callee.type === \"Identifier\" &&\n GLOBAL_CONSTRUCTOR_NAMES.has(node.callee.name)\n ) {\n context.report({\n node,\n messageId: \"default\",\n data: { name: node.callee.name },\n });\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the in operator in AppSync resolvers\",\n },\n messages: {\n default:\n \"The in operator is not supported in the AppSync JS runtime; use Object.hasOwn instead\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n BinaryExpression(node) {\n if (node.operator === \"in\") {\n reportDefault(context, node);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the instanceof operator in AppSync resolvers\",\n },\n messages: {\n default: \"The instanceof operator is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n BinaryExpression(node) {\n if (node.operator === \"instanceof\") {\n reportDefault(context, node);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow labeled statements in AppSync resolvers\",\n },\n messages: {\n default: \"Labeled statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n LabeledStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow the new operator in AppSync resolvers\",\n },\n messages: {\n default: \"The new operator is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n NewExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { isIdentifier, reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow Promise usage in AppSync resolvers\",\n },\n messages: {\n default: \"Promises are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n const { callee } = node;\n\n if (\n isIdentifier(callee, \"Promise\") ||\n (callee.type === \"MemberExpression\" &&\n isIdentifier(callee.object, \"Promise\"))\n ) {\n reportDefault(context, node);\n }\n },\n NewExpression(node) {\n if (isIdentifier(node.callee, \"Promise\")) {\n reportDefault(context, node);\n }\n },\n VariableDeclarator(node) {\n if (node.init && isIdentifier(node.init, \"Promise\")) {\n reportDefault(context, node.init);\n }\n },\n AssignmentExpression(node) {\n if (isIdentifier(node.right, \"Promise\")) {\n reportDefault(context, node.right);\n }\n },\n };\n },\n});\n","import type { Context, ESTree } from \"@oxlint/plugins\";\nimport { isFunctionNode } from \"../lib/function-utils.js\";\nimport { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nfunction getEnclosingBindingNames(\n node: ESTree.Node,\n context: Context,\n): Set<string> {\n const names = new Set<string>();\n\n if (\n (node.type === \"FunctionDeclaration\" || node.type === \"FunctionExpression\") &&\n node.id?.type === \"Identifier\"\n ) {\n names.add(node.id.name);\n }\n\n let scope = context.sourceCode.getScope(node).upper;\n while (scope) {\n for (const variable of scope.variables) {\n for (const def of variable.defs) {\n if (\n def.type === \"Variable\" &&\n def.node.type === \"VariableDeclarator\" &&\n def.node.init === node\n ) {\n names.add(variable.name);\n }\n }\n }\n scope = scope.upper;\n }\n\n return names;\n}\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow recursive function calls in AppSync resolvers\",\n },\n messages: {\n default: \"Recursive function calls are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n const enclosingBindingNames: Set<string>[] = [];\n\n const enterFunction = (node: ESTree.Node) => {\n if (!isFunctionNode(node)) {\n return;\n }\n\n enclosingBindingNames.push(getEnclosingBindingNames(node, context));\n };\n\n const exitFunction = (node: ESTree.Node) => {\n if (!isFunctionNode(node)) {\n return;\n }\n\n enclosingBindingNames.pop();\n };\n\n return {\n FunctionDeclaration: enterFunction,\n \"FunctionDeclaration:exit\": exitFunction,\n FunctionExpression: enterFunction,\n \"FunctionExpression:exit\": exitFunction,\n ArrowFunctionExpression: enterFunction,\n \"ArrowFunctionExpression:exit\": exitFunction,\n CallExpression(node) {\n if (node.callee.type !== \"Identifier\") {\n return;\n }\n\n const currentBindings =\n enclosingBindingNames[enclosingBindingNames.length - 1];\n if (currentBindings?.has(node.callee.name)) {\n reportDefault(context, node);\n }\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow regex literals in AppSync resolvers\",\n },\n messages: {\n default: \"Regex literals are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n Literal(node) {\n if (\"regex\" in node && node.regex) {\n reportDefault(context, node);\n }\n },\n RegExpLiteral(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow this expressions in AppSync resolvers\",\n },\n messages: {\n default: \"this is not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ThisExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow throw statements in AppSync resolvers\",\n },\n messages: {\n default: \"throw statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n ThrowStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow try/catch/finally statements in AppSync resolvers\",\n },\n messages: {\n default:\n \"try/catch/finally statements are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n TryStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow ++ and -- operators in AppSync resolvers\",\n },\n messages: {\n default: \"++ and -- operators are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n UpdateExpression(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import { defineAppsyncRule } from \"../lib/rule-types.js\";\nimport { reportDefault } from \"../lib/utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description: \"Disallow while loops in AppSync resolvers\",\n },\n messages: {\n default: \"while loops are not supported in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n WhileStatement(node) {\n reportDefault(context, node);\n },\n };\n },\n});\n","import noAppsyncGlobals from \"./no-appsync-globals.js\";\nimport noAsyncAwait from \"./no-async-await.js\";\nimport noBitwiseNot from \"./no-bitwise-not.js\";\nimport noClasses from \"./no-classes.js\";\nimport noContextReassignment from \"./no-context-reassignment.js\";\nimport noContinue from \"./no-continue.js\";\nimport noDisallowedMethods from \"./no-disallowed-methods.js\";\nimport noDoWhile from \"./no-do-while.js\";\nimport noForLoop from \"./no-for-loop.js\";\nimport noFunctionArguments from \"./no-function-arguments.js\";\nimport noFunctionReassign from \"./no-function-reassign.js\";\nimport noFunctionReturn from \"./no-function-return.js\";\nimport noGenerators from \"./no-generators.js\";\nimport noGlobalConstructor from \"./no-global-constructor.js\";\nimport noInOperator from \"./no-in-operator.js\";\nimport noInstanceof from \"./no-instanceof.js\";\nimport noLabeledStatement from \"./no-labeled-statement.js\";\nimport noNew from \"./no-new.js\";\nimport noPromise from \"./no-promise.js\";\nimport noRecursion from \"./no-recursion.js\";\nimport noRegex from \"./no-regex.js\";\nimport noThis from \"./no-this.js\";\nimport noThrow from \"./no-throw.js\";\nimport noTry from \"./no-try.js\";\nimport noUpdateOperators from \"./no-update-operators.js\";\nimport noWhile from \"./no-while.js\";\nimport type { AppsyncRuleModule } from \"../lib/rule-types.js\";\n\nconst rules = {\n \"no-appsync-globals\": noAppsyncGlobals,\n \"no-async-await\": noAsyncAwait,\n \"no-bitwise-not\": noBitwiseNot,\n \"no-classes\": noClasses,\n \"no-context-reassignment\": noContextReassignment,\n \"no-continue\": noContinue,\n \"no-do-while\": noDoWhile,\n \"no-disallowed-methods\": noDisallowedMethods,\n \"no-for-loop\": noForLoop,\n \"no-function-arguments\": noFunctionArguments,\n \"no-function-reassign\": noFunctionReassign,\n \"no-function-return\": noFunctionReturn,\n \"no-generators\": noGenerators,\n \"no-in-operator\": noInOperator,\n \"no-instanceof\": noInstanceof,\n \"no-labeled-statement\": noLabeledStatement,\n \"no-new\": noNew,\n \"no-promise\": noPromise,\n \"no-recursion\": noRecursion,\n \"no-regex\": noRegex,\n \"no-global-constructor\": noGlobalConstructor,\n \"no-this\": noThis,\n \"no-throw\": noThrow,\n \"no-try\": noTry,\n \"no-update-operators\": noUpdateOperators,\n \"no-while\": noWhile,\n} satisfies Record<string, AppsyncRuleModule>;\n\nexport type AppsyncRuleName = keyof typeof rules;\n\nexport default rules;\n","import { eslintCompatPlugin } from \"@oxlint/plugins\";\nimport rules from \"./rules/index.js\";\n\nconst OPT_IN_RULES = new Set([\"no-appsync-globals\"]);\n\nexport const plugin = eslintCompatPlugin({\n meta: {\n name: \"appsync\",\n },\n rules,\n});\n\nexport const recommended = Object.fromEntries(\n Object.keys(rules)\n .filter((ruleName) => !OPT_IN_RULES.has(ruleName))\n .map((ruleName) => [`appsync/${ruleName}`, \"error\"]),\n) as Record<`appsync/${Exclude<keyof typeof rules, \"no-appsync-globals\">}`, \"error\">;\n\nexport const portable = {\n ...recommended,\n \"appsync/no-appsync-globals\": \"error\",\n} as const;\n","import { plugin, portable, recommended } from \"./plugin.js\";\n\nexport { plugin, portable, recommended };\nexport default plugin;\n"],"mappings":"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"}
|