oxlint-appsync 0.1.1 → 0.3.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 CHANGED
@@ -22,11 +22,17 @@ Copy [oxlintrc.example.json](oxlintrc.example.json) to `.oxlintrc.json` in your
22
22
 
23
23
  ```ts
24
24
  import { defineConfig } from "oxlint";
25
- import plugin, { recommended } from "oxlint-appsync";
25
+ import plugin, { portable, recommended } from "oxlint-appsync";
26
26
 
27
27
  export default defineConfig({
28
28
  jsPlugins: [plugin],
29
29
  rules: recommended,
30
+ overrides: [
31
+ {
32
+ files: ["src/shared/**/*.js"],
33
+ rules: portable,
34
+ },
35
+ ],
30
36
  });
31
37
  ```
32
38
 
@@ -42,38 +48,56 @@ The plugin uses Oxlint's `createOnce` API wrapped with `eslintCompatPlugin`, so
42
48
 
43
49
  ```js
44
50
  import appsync from "oxlint-appsync";
45
- import { recommended } from "oxlint-appsync";
51
+ import { portable, recommended } from "oxlint-appsync";
46
52
 
47
53
  export default [
48
54
  {
49
55
  plugins: { appsync },
50
56
  rules: recommended,
51
57
  },
58
+ {
59
+ files: ["src/shared/**/*.js"],
60
+ rules: portable,
61
+ },
52
62
  ];
53
63
  ```
54
64
 
65
+ ## Config presets
66
+
67
+ | Preset | Use for |
68
+ | ------------- | ----------------------------------------------------------------------------------------------------------------- |
69
+ | `recommended` | AppSync resolver entry points — all syntax rules enabled |
70
+ | `portable` | Shared modules that must run in AppSync and other runtimes (e.g. Lambda) — syntax rules plus `no-appsync-globals` |
71
+
55
72
  ## Rules
56
73
 
57
- | Rule | Description |
58
- | --- | --- |
59
- | `appsync/no-string-constructor` | Disallow `String()` for stringification |
60
- | `appsync/no-async-await` | Disallow `async`/`await` and async functions |
61
- | `appsync/no-classes` | Disallow `class` declarations and expressions |
62
- | `appsync/no-instanceof` | Disallow `instanceof` |
63
- | `appsync/no-for-loop` | Disallow C-style `for` loops (`for-in` / `for-of` allowed) |
64
- | `appsync/no-while` | Disallow `while` loops |
65
- | `appsync/no-do-while` | Disallow `do-while` loops |
66
- | `appsync/no-try` | Disallow `try`/`catch`/`finally` |
67
- | `appsync/no-throw` | Disallow `throw` |
68
- | `appsync/no-continue` | Disallow `continue` |
69
- | `appsync/no-labeled-statement` | Disallow labeled statements |
70
- | `appsync/no-new` | Disallow the `new` operator |
71
- | `appsync/no-generators` | Disallow generator functions |
72
- | `appsync/no-this` | Disallow `this` |
73
- | `appsync/no-update-operators` | Disallow `++` and `--` |
74
- | `appsync/no-bitwise-not` | Disallow bitwise NOT (`~`) |
75
- | `appsync/no-in-operator` | Disallow `in` (use `Object.hasOwn`) |
76
- | `appsync/no-function-arguments` | Disallow passing function references as call arguments (inline arrow callbacks are allowed) |
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-instanceof` | Disallow `instanceof` |
80
+ | `appsync/no-for-loop` | Disallow C-style `for` loops (`for-in` / `for-of` allowed) |
81
+ | `appsync/no-while` | Disallow `while` loops |
82
+ | `appsync/no-do-while` | Disallow `do-while` loops |
83
+ | `appsync/no-try` | Disallow `try`/`catch`/`finally` |
84
+ | `appsync/no-throw` | Disallow `throw` |
85
+ | `appsync/no-continue` | Disallow `continue` |
86
+ | `appsync/no-labeled-statement` | Disallow labeled statements |
87
+ | `appsync/no-new` | Disallow the `new` operator |
88
+ | `appsync/no-generators` | Disallow generator functions |
89
+ | `appsync/no-this` | Disallow `this` |
90
+ | `appsync/no-update-operators` | Disallow `++` and `--` |
91
+ | `appsync/no-bitwise-not` | Disallow bitwise NOT (`~`) |
92
+ | `appsync/no-in-operator` | Disallow `in` (use `Object.hasOwn`) |
93
+ | `appsync/no-function-arguments` | Disallow passing function references as call arguments (inline arrow callbacks are allowed) |
94
+ | `appsync/no-appsync-globals` | Disallow AppSync-only globals (`util`, `extensions`, `runtime`) — opt-in, included in `portable` |
95
+
96
+ ## Migration
97
+
98
+ ### 0.1.x → 0.2.0
99
+
100
+ `appsync/no-string-constructor` was removed. Use `appsync/no-global-constructor` instead — it covers `String()` and other global constructor calls (`Boolean()`, `Number()`, `Date()`, etc.).
77
101
 
78
102
  ## Development
79
103
 
package/dist/index.d.ts CHANGED
@@ -9,6 +9,7 @@ type AppsyncRuleModule = {
9
9
  //#endregion
10
10
  //#region src/rules/index.d.ts
11
11
  declare const rules: {
12
+ "no-appsync-globals": AppsyncRuleModule;
12
13
  "no-async-await": AppsyncRuleModule;
13
14
  "no-bitwise-not": AppsyncRuleModule;
14
15
  "no-classes": AppsyncRuleModule;
@@ -21,7 +22,7 @@ declare const rules: {
21
22
  "no-instanceof": AppsyncRuleModule;
22
23
  "no-labeled-statement": AppsyncRuleModule;
23
24
  "no-new": AppsyncRuleModule;
24
- "no-string-constructor": AppsyncRuleModule;
25
+ "no-global-constructor": AppsyncRuleModule;
25
26
  "no-this": AppsyncRuleModule;
26
27
  "no-throw": AppsyncRuleModule;
27
28
  "no-try": AppsyncRuleModule;
@@ -31,9 +32,30 @@ declare const rules: {
31
32
  //#endregion
32
33
  //#region src/plugin.d.ts
33
34
  declare const plugin: _oxlint_plugins0.Plugin;
34
- declare const recommended: Record<`appsync/${keyof typeof rules}`, "error">;
35
+ declare const recommended: Record<`appsync/${Exclude<keyof typeof rules, "no-appsync-globals">}`, "error">;
36
+ declare const portable: {
37
+ readonly "appsync/no-appsync-globals": "error";
38
+ readonly "appsync/no-async-await": "error";
39
+ readonly "appsync/no-bitwise-not": "error";
40
+ readonly "appsync/no-classes": "error";
41
+ readonly "appsync/no-continue": "error";
42
+ readonly "appsync/no-do-while": "error";
43
+ readonly "appsync/no-for-loop": "error";
44
+ readonly "appsync/no-function-arguments": "error";
45
+ readonly "appsync/no-generators": "error";
46
+ readonly "appsync/no-in-operator": "error";
47
+ readonly "appsync/no-instanceof": "error";
48
+ readonly "appsync/no-labeled-statement": "error";
49
+ readonly "appsync/no-new": "error";
50
+ readonly "appsync/no-global-constructor": "error";
51
+ readonly "appsync/no-this": "error";
52
+ readonly "appsync/no-throw": "error";
53
+ readonly "appsync/no-try": "error";
54
+ readonly "appsync/no-update-operators": "error";
55
+ readonly "appsync/no-while": "error";
56
+ };
35
57
  //# sourceMappingURL=plugin.d.ts.map
36
58
 
37
59
  //#endregion
38
- export { plugin as default, plugin, recommended };
60
+ export { plugin as default, plugin, portable, recommended };
39
61
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/rules/types.ts","../src/rules/index.ts","../src/plugin.ts"],"mappings":";;;;KAEY,iBAAA;QACJ,IAAA,CAAK;wBACW,IAAA,CAAK,gBAAgB,IAAA,CAAK;AAFlD,CAAA;;;cCkBM;;;EDlBM,YAAA,mBAAiB;EAAA,aAAA,mBAAA;eAChB,mBAAA;eACgB,mBAAA;yBAAqB,mBAAA;EAAY,eAAA,mBAAA;;;;ECgBxD,QAmBuC,mBAAA;EAAA,uBAAA,mBAAA;;;;;;;;;cCpChC,QAKX,gBAAA,CALiB;cAON,aAER,+BAA+B"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/rules/types.ts","../src/rules/index.ts","../src/plugin.ts"],"mappings":";;;;KAEY,iBAAA;QACJ,IAAA,CAAK;wBACW,IAAA,CAAK,gBAAgB,IAAA,CAAK;AAFlD,CAAA;;;cCmBM;;;EDnBM,gBAAA,mBAAiB;EAAA,YAAA,mBAAA;eAChB,mBAAA;eACgB,mBAAA;eAAqB,mBAAA;EAAY,uBAAA,mBAAA;;;;ECiBxD,sBAoBuC,mBAAA;EAAA,QAAA,mBAAA;;;;;;;;;;cCpChC,QAKX,gBAAA,CALiB;cAON,aAIR,kBAAkB,qBAAqB;cAE/B;EFhBD,SAAA,4BAAiB,EAAA,OAAA;EAAA,SAAA,wBAAA,EAAA,OAAA;WAChB,wBAAA,EAAA,OAAA;WACgB,oBAAA,EAAA,OAAA;WAAqB,qBAAA,EAAA,OAAA;EAAY,SAAA,qBAAA,EAAA,OAAA;;;;ECiBxD,SAoBuC,wBAAA,EAAA,OAAA;EAAA,SAAA,uBAAA,EAAA,OAAA"}
package/dist/index.js CHANGED
@@ -1,13 +1,63 @@
1
1
  import { eslintCompatPlugin } from "@oxlint/plugins";
2
+ //#region src/rules/appsync-globals.ts
3
+ const APPSYNC_GLOBAL_NAMES = /* @__PURE__ */ new Set([
4
+ "util",
5
+ "extensions",
6
+ "runtime"
7
+ ]);
8
+ //#endregion
2
9
  //#region src/rules/types.ts
3
10
  function defineAppsyncRule(rule) {
4
11
  return rule;
5
12
  }
6
13
  //#endregion
7
- //#region src/rules/utils.ts
8
- function isIdentifier(node, name) {
9
- return node?.type === "Identifier" && node.name === name;
14
+ //#region src/rules/no-appsync-globals.ts
15
+ function isBindingPosition(node) {
16
+ const parent = node.parent;
17
+ if (!parent) return false;
18
+ if (parent.type === "VariableDeclarator" || parent.type === "FunctionDeclaration" || parent.type === "FunctionExpression" || parent.type === "ClassDeclaration") return parent.id === node;
19
+ if (parent.type === "ImportSpecifier" || parent.type === "ImportDefaultSpecifier" || parent.type === "ImportNamespaceSpecifier") return parent.local === node;
20
+ if (parent.type === "CatchClause") return parent.param === node;
21
+ return false;
22
+ }
23
+ function isNonReferencePosition(node) {
24
+ const parent = node.parent;
25
+ if (!parent) return false;
26
+ if (parent.type === "Property" && parent.key === node && !parent.computed) return true;
27
+ if (parent.type === "MemberExpression" && parent.property === node && !parent.computed) return true;
28
+ return isBindingPosition(node);
29
+ }
30
+ function hasLocalBinding(node, context) {
31
+ let scope = context.sourceCode.getScope(node);
32
+ while (scope) {
33
+ const variable = scope.set.get(node.name);
34
+ if (variable && variable.defs.length > 0) return true;
35
+ scope = scope.upper;
36
+ }
37
+ return false;
10
38
  }
39
+ var no_appsync_globals_default = defineAppsyncRule({
40
+ meta: {
41
+ type: "problem",
42
+ docs: { description: "Disallow AppSync-only globals in code that must run outside the AppSync runtime" },
43
+ messages: { default: "AppSync global `{{name}}` is not available outside the AppSync runtime" },
44
+ schema: []
45
+ },
46
+ createOnce(context) {
47
+ return { Identifier(node) {
48
+ if (!APPSYNC_GLOBAL_NAMES.has(node.name)) return;
49
+ if (isNonReferencePosition(node)) return;
50
+ if (hasLocalBinding(node, context)) return;
51
+ context.report({
52
+ node,
53
+ messageId: "default",
54
+ data: { name: node.name }
55
+ });
56
+ } };
57
+ }
58
+ });
59
+ //#endregion
60
+ //#region src/rules/utils.ts
11
61
  function reportDefault(context, node, messageId = "default") {
12
62
  context.report({
13
63
  node,
@@ -138,48 +188,86 @@ function isFunctionReference(node, context) {
138
188
  }
139
189
  return false;
140
190
  }
191
+ var no_function_arguments_default = defineAppsyncRule({
192
+ meta: {
193
+ type: "problem",
194
+ docs: { description: "Disallow passing function references as call arguments in AppSync resolvers" },
195
+ messages: { default: "Passing a function reference as an argument is not supported in the AppSync JS runtime; use an inline arrow function instead" },
196
+ schema: []
197
+ },
198
+ createOnce(context) {
199
+ return { CallExpression(node) {
200
+ for (const argument of node.arguments) {
201
+ if (argument.type === "SpreadElement") continue;
202
+ if (isFunctionReference(argument, context)) reportDefault(context, argument);
203
+ }
204
+ } };
205
+ }
206
+ });
207
+ //#endregion
208
+ //#region src/rules/no-generators.ts
209
+ var no_generators_default = defineAppsyncRule({
210
+ meta: {
211
+ type: "problem",
212
+ docs: { description: "Disallow generator functions in AppSync resolvers" },
213
+ messages: { default: "Generators are not supported in the AppSync JS runtime" },
214
+ schema: []
215
+ },
216
+ createOnce(context) {
217
+ const reportGenerator = (node) => {
218
+ if (node.generator) reportDefault(context, node);
219
+ };
220
+ return {
221
+ FunctionDeclaration: reportGenerator,
222
+ FunctionExpression: reportGenerator
223
+ };
224
+ }
225
+ });
226
+ //#endregion
227
+ //#region src/rules/global-constructors.ts
228
+ const GLOBAL_CONSTRUCTOR_NAMES = /* @__PURE__ */ new Set([
229
+ "String",
230
+ "Boolean",
231
+ "Number",
232
+ "BigInt",
233
+ "Symbol",
234
+ "Date",
235
+ "Object",
236
+ "Array",
237
+ "Function",
238
+ "RegExp"
239
+ ]);
240
+ //#endregion
241
+ //#region src/rules/no-global-constructor.ts
242
+ var no_global_constructor_default = defineAppsyncRule({
243
+ meta: {
244
+ type: "problem",
245
+ docs: { description: "Disallow calling global constructor functions in AppSync resolvers" },
246
+ messages: { default: "Do not use `{{name}}()` as a constructor in the AppSync JS runtime" },
247
+ schema: []
248
+ },
249
+ createOnce(context) {
250
+ return { CallExpression(node) {
251
+ if (node.callee.type === "Identifier" && GLOBAL_CONSTRUCTOR_NAMES.has(node.callee.name)) context.report({
252
+ node,
253
+ messageId: "default",
254
+ data: { name: node.callee.name }
255
+ });
256
+ } };
257
+ }
258
+ });
141
259
  //#endregion
142
260
  //#region src/rules/index.ts
143
261
  const rules = {
262
+ "no-appsync-globals": no_appsync_globals_default,
144
263
  "no-async-await": no_async_await_default,
145
264
  "no-bitwise-not": no_bitwise_not_default,
146
265
  "no-classes": no_classes_default,
147
266
  "no-continue": no_continue_default,
148
267
  "no-do-while": no_do_while_default,
149
268
  "no-for-loop": no_for_loop_default,
150
- "no-function-arguments": defineAppsyncRule({
151
- meta: {
152
- type: "problem",
153
- docs: { description: "Disallow passing function references as call arguments in AppSync resolvers" },
154
- messages: { default: "Passing a function reference as an argument is not supported in the AppSync JS runtime; use an inline arrow function instead" },
155
- schema: []
156
- },
157
- createOnce(context) {
158
- return { CallExpression(node) {
159
- for (const argument of node.arguments) {
160
- if (argument.type === "SpreadElement") continue;
161
- if (isFunctionReference(argument, context)) reportDefault(context, argument);
162
- }
163
- } };
164
- }
165
- }),
166
- "no-generators": defineAppsyncRule({
167
- meta: {
168
- type: "problem",
169
- docs: { description: "Disallow generator functions in AppSync resolvers" },
170
- messages: { default: "Generators are not supported in the AppSync JS runtime" },
171
- schema: []
172
- },
173
- createOnce(context) {
174
- const reportGenerator = (node) => {
175
- if (node.generator) reportDefault(context, node);
176
- };
177
- return {
178
- FunctionDeclaration: reportGenerator,
179
- FunctionExpression: reportGenerator
180
- };
181
- }
182
- }),
269
+ "no-function-arguments": no_function_arguments_default,
270
+ "no-generators": no_generators_default,
183
271
  "no-in-operator": defineAppsyncRule({
184
272
  meta: {
185
273
  type: "problem",
@@ -232,24 +320,7 @@ const rules = {
232
320
  } };
233
321
  }
234
322
  }),
235
- "no-string-constructor": defineAppsyncRule({
236
- meta: {
237
- type: "problem",
238
- docs: { description: "Disallow using String() to stringify values in AppSync resolvers" },
239
- messages: { default: "Do not use String() to stringify variables in the AppSync JS runtime" },
240
- schema: []
241
- },
242
- createOnce(context) {
243
- return {
244
- CallExpression(node) {
245
- if (isIdentifier(node.callee, "String")) reportDefault(context, node);
246
- },
247
- NewExpression(node) {
248
- if (isIdentifier(node.callee, "String")) reportDefault(context, node);
249
- }
250
- };
251
- }
252
- }),
323
+ "no-global-constructor": no_global_constructor_default,
253
324
  "no-this": defineAppsyncRule({
254
325
  meta: {
255
326
  type: "problem",
@@ -318,15 +389,20 @@ const rules = {
318
389
  };
319
390
  //#endregion
320
391
  //#region src/plugin.ts
392
+ const OPT_IN_RULES = /* @__PURE__ */ new Set(["no-appsync-globals"]);
321
393
  const plugin = eslintCompatPlugin({
322
394
  meta: { name: "appsync" },
323
395
  rules
324
396
  });
325
- const recommended = Object.fromEntries(Object.keys(rules).map((ruleName) => [`appsync/${ruleName}`, "error"]));
397
+ const recommended = Object.fromEntries(Object.keys(rules).filter((ruleName) => !OPT_IN_RULES.has(ruleName)).map((ruleName) => [`appsync/${ruleName}`, "error"]));
398
+ const portable = {
399
+ ...recommended,
400
+ "appsync/no-appsync-globals": "error"
401
+ };
326
402
  //#endregion
327
403
  //#region src/index.ts
328
404
  var src_default = plugin;
329
405
  //#endregion
330
- export { src_default as default, plugin, recommended };
406
+ export { src_default as default, plugin, portable, recommended };
331
407
 
332
408
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["noAsyncAwait","noBitwiseNot","noClasses","noContinue","noDoWhile","noForLoop","noFunctionArguments","noGenerators","noInOperator","noInstanceof","noLabeledStatement","noNew","noStringConstructor","noThis","noThrow","noTry","noUpdateOperators","noWhile"],"sources":["../src/rules/types.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/no-in-operator.ts","../src/rules/no-instanceof.ts","../src/rules/no-labeled-statement.ts","../src/rules/no-new.ts","../src/rules/no-string-constructor.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":["import type { Rule } from \"eslint\";\n\nexport type AppsyncRuleModule = {\n meta: Rule.RuleMetaData;\n createOnce: (context: Rule.RuleContext) => Rule.RuleListener;\n};\n\nexport function defineAppsyncRule(rule: AppsyncRuleModule): AppsyncRuleModule {\n return rule;\n}\n","import type { Rule } from \"eslint\";\n\ntype NodeWithType = { type: string };\n\nexport function isIdentifier(\n node: NodeWithType | null | undefined,\n name: string,\n): boolean {\n return node?.type === \"Identifier\" && (node as { name: string }).name === name;\n}\n\nexport function reportDefault(\n context: Rule.RuleContext,\n node: Rule.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 { Rule } from \"eslint\";\nimport { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nfunction definitionCreatesFunction(def: Rule.Scope.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 isFunctionReference(\n node: Rule.Node,\n context: Rule.RuleContext,\n): boolean {\n if (node.type === \"FunctionExpression\") {\n return true;\n }\n\n if (node.type !== \"Identifier\") {\n return false;\n }\n\n let scope: Rule.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 function references as call arguments in AppSync resolvers\",\n },\n messages: {\n default:\n \"Passing a function reference as an argument is not supported in the AppSync JS runtime; use an inline arrow function instead\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n for (const argument of node.arguments) {\n if (argument.type === \"SpreadElement\") {\n continue;\n }\n\n if (isFunctionReference(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","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 { isIdentifier, reportDefault } from \"./utils.js\";\n\nexport default defineAppsyncRule({\n meta: {\n type: \"problem\",\n docs: {\n description:\n \"Disallow using String() to stringify values in AppSync resolvers\",\n },\n messages: {\n default:\n \"Do not use String() to stringify variables in the AppSync JS runtime\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n if (isIdentifier(node.callee, \"String\")) {\n reportDefault(context, node);\n }\n },\n NewExpression(node) {\n if (isIdentifier(node.callee, \"String\")) {\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 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 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 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 noStringConstructor from \"./no-string-constructor.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-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-string-constructor\": noStringConstructor,\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\nexport const plugin = eslintCompatPlugin({\n meta: {\n name: \"appsync\",\n },\n rules,\n});\n\nexport const recommended = Object.fromEntries(\n Object.keys(rules).map((ruleName) => [`appsync/${ruleName}`, \"error\"]),\n) as Record<`appsync/${keyof typeof rules}`, \"error\">;\n","import { plugin, recommended } from \"./plugin.js\";\n\nexport { plugin, recommended };\nexport default plugin;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["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 { Rule } from \"eslint\";\n\nexport type AppsyncRuleModule = {\n meta: Rule.RuleMetaData;\n createOnce: (context: Rule.RuleContext) => Rule.RuleListener;\n};\n\nexport function defineAppsyncRule(rule: AppsyncRuleModule): AppsyncRuleModule {\n return rule;\n}\n","import type { Rule } from \"eslint\";\nimport { APPSYNC_GLOBAL_NAMES } from \"./appsync-globals.js\";\nimport { defineAppsyncRule } from \"./types.js\";\n\nfunction isBindingPosition(node: Rule.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: Rule.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: Rule.Node & { type: \"Identifier\"; name: string },\n context: Rule.RuleContext,\n): boolean {\n let scope: Rule.Scope.Scope | null = context.sourceCode.getScope(node);\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 { Rule } from \"eslint\";\n\ntype NodeWithType = { type: string };\n\nexport function isIdentifier(\n node: NodeWithType | null | undefined,\n name: string,\n): boolean {\n return node?.type === \"Identifier\" && (node as { name: string }).name === name;\n}\n\nexport function reportDefault(\n context: Rule.RuleContext,\n node: Rule.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 { Rule } from \"eslint\";\nimport { defineAppsyncRule } from \"./types.js\";\nimport { reportDefault } from \"./utils.js\";\n\nfunction definitionCreatesFunction(def: Rule.Scope.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 isFunctionReference(\n node: Rule.Node,\n context: Rule.RuleContext,\n): boolean {\n if (node.type === \"FunctionExpression\") {\n return true;\n }\n\n if (node.type !== \"Identifier\") {\n return false;\n }\n\n let scope: Rule.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 function references as call arguments in AppSync resolvers\",\n },\n messages: {\n default:\n \"Passing a function reference as an argument is not supported in the AppSync JS runtime; use an inline arrow function instead\",\n },\n schema: [],\n },\n createOnce(context) {\n return {\n CallExpression(node) {\n for (const argument of node.arguments) {\n if (argument.type === \"SpreadElement\") {\n continue;\n }\n\n if (isFunctionReference(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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oxlint-appsync",
3
- "version": "0.1.1",
3
+ "version": "0.3.0",
4
4
  "description": "Oxlint plugin that enforces AWS AppSync JavaScript runtime restrictions",
5
5
  "type": "module",
6
6
  "license": "MIT",