Skip to content

Commit 42b80d5

Browse files
authored
Merge pull request #477 from observablehq/observable-update-3
Observable update 3
2 parents 9682458 + eeed611 commit 42b80d5

File tree

7,775 files changed

+159446
-119041
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

7,775 files changed

+159446
-119041
lines changed

.editorconfig

+7-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@ insert_final_newline = true
1010

1111
[cspell.json]
1212
indent_size = 4
13-
insert_final_newline = false
1413

15-
[website/blog/*.md]
14+
[{,website/blog/,changelog_unreleased/**/}*.md]
1615
trim_trailing_whitespace = false
16+
17+
[tests/{**/__snapshots__/*, tests/format/**/*}]
18+
trim_trailing_whitespace = false
19+
20+
[tests/format/**/jsfmt.spec.js]
21+
trim_trailing_whitespace = true

.eslintignore

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
1+
.tmp
12
!/*.js
2-
/tests/**/*.js
3-
!/tests/**/jsfmt.spec.js
3+
/tests/format/**/*.js
4+
/tests/integration/cli/
5+
!/tests/format/**/jsfmt.spec.js
46
!/**/.eslintrc.js
5-
/test*.js
7+
/test*.*
68
/scripts/release/node_modules
79
/coverage/
810
/dist/
911
**/node_modules/**
1012
/website/build/
1113
/website/static/playground.js
1214
/website/static/lib/
13-
/tests_integration/cli/
15+
/vendors/

.eslintrc.js

+333
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,333 @@
1+
"use strict";
2+
const { isCI } = require("ci-info");
3+
4+
module.exports = {
5+
root: true,
6+
env: {
7+
es2022: true,
8+
node: true,
9+
},
10+
parserOptions: {
11+
ecmaVersion: "latest",
12+
},
13+
reportUnusedDisableDirectives: true,
14+
extends: ["eslint:recommended", "prettier"],
15+
plugins: [
16+
"prettier-internal-rules",
17+
"import",
18+
"regexp",
19+
"unicorn",
20+
"@typescript-eslint",
21+
],
22+
settings: {
23+
"import/internal-regex": "^linguist-languages/",
24+
},
25+
rules: {
26+
"@typescript-eslint/prefer-ts-expect-error": "error",
27+
"arrow-body-style": ["error", "as-needed"],
28+
curly: "error",
29+
"dot-notation": "error",
30+
eqeqeq: "error",
31+
"no-console": isCI ? "error" : "warn",
32+
"no-else-return": [
33+
"error",
34+
{
35+
allowElseIf: false,
36+
},
37+
],
38+
"no-implicit-coercion": "error",
39+
"no-inner-declarations": "error",
40+
"no-restricted-syntax": [
41+
"error",
42+
// `!foo === bar` and `!foo !== bar`
43+
'BinaryExpression[operator=/^[!=]==$/] > UnaryExpression.left[operator="!"]',
44+
],
45+
"no-return-await": "error",
46+
"no-unneeded-ternary": "error",
47+
"no-useless-return": "error",
48+
"no-unused-vars": [
49+
"error",
50+
{
51+
ignoreRestSiblings: true,
52+
},
53+
],
54+
"no-var": "error",
55+
"object-shorthand": "error",
56+
"one-var": ["error", "never"],
57+
"prefer-arrow-callback": "error",
58+
"prefer-const": [
59+
"error",
60+
{
61+
destructuring: "all",
62+
},
63+
],
64+
"prefer-destructuring": [
65+
"error",
66+
{
67+
VariableDeclarator: {
68+
array: false,
69+
object: true,
70+
},
71+
AssignmentExpression: {
72+
array: false,
73+
object: false,
74+
},
75+
},
76+
{
77+
enforceForRenamedProperties: false,
78+
},
79+
],
80+
"prefer-object-spread": "error",
81+
"prefer-rest-params": "error",
82+
"prefer-spread": "error",
83+
"prettier-internal-rules/jsx-identifier-case": "error",
84+
"prettier-internal-rules/no-identifier-n": "error",
85+
quotes: [
86+
"error",
87+
"double",
88+
{
89+
avoidEscape: true,
90+
},
91+
],
92+
"require-await": "error",
93+
strict: "error",
94+
"symbol-description": "error",
95+
yoda: [
96+
"error",
97+
"never",
98+
{
99+
exceptRange: true,
100+
},
101+
],
102+
103+
"import/extensions": ["error", "ignorePackages"],
104+
"import/no-extraneous-dependencies": [
105+
"error",
106+
{
107+
devDependencies: ["tests*/**", "scripts/**"],
108+
},
109+
],
110+
"import/order": "error",
111+
"import/no-anonymous-default-export": "error",
112+
113+
"regexp/match-any": [
114+
"error",
115+
{
116+
allows: ["dotAll"],
117+
},
118+
],
119+
"regexp/no-unused-capturing-group": "error",
120+
"regexp/no-useless-flag": [
121+
"error",
122+
{
123+
strictTypes: false,
124+
},
125+
],
126+
"regexp/no-useless-lazy": "error",
127+
128+
"unicorn/better-regex": "error",
129+
"unicorn/explicit-length-check": "error",
130+
"unicorn/filename-case": "error",
131+
"unicorn/new-for-builtins": "error",
132+
"unicorn/no-array-for-each": "error",
133+
"unicorn/no-array-push-push": "error",
134+
"unicorn/no-new-array": "error",
135+
"unicorn/no-unreadable-iife": "error",
136+
"unicorn/no-useless-length-check": "error",
137+
"unicorn/no-useless-promise-resolve-reject": "error",
138+
"unicorn/no-useless-undefined": "error",
139+
"unicorn/prefer-array-flat": [
140+
"error",
141+
{
142+
functions: ["flat", "flatten"],
143+
},
144+
],
145+
"unicorn/prefer-array-flat-map": "error",
146+
"unicorn/prefer-array-some": "error",
147+
"unicorn/prefer-includes": "error",
148+
"unicorn/prefer-json-parse-buffer": "error",
149+
"unicorn/prefer-native-coercion-functions": "error",
150+
"unicorn/prefer-number-properties": "error",
151+
"unicorn/prefer-optional-catch-binding": "error",
152+
"unicorn/prefer-regexp-test": "error",
153+
"unicorn/prefer-spread": "error",
154+
"unicorn/prefer-string-slice": "error",
155+
"unicorn/prefer-string-starts-ends-with": "error",
156+
"unicorn/prefer-switch": "error",
157+
"unicorn/prefer-type-error": "error",
158+
"unicorn/template-indent": "error",
159+
"unicorn/text-encoding-identifier-case": "error",
160+
},
161+
overrides: [
162+
{
163+
files: [
164+
"scripts/**/*.js",
165+
"scripts/**/*.mjs",
166+
"tests/config/install-prettier.js",
167+
],
168+
rules: {
169+
"no-console": "off",
170+
},
171+
},
172+
{
173+
files: ["scripts/**/*.mjs"],
174+
rules: {
175+
"unicorn/prefer-top-level-await": "error",
176+
},
177+
},
178+
{
179+
files: [
180+
"**/*.mjs",
181+
"scripts/release/**/*.js",
182+
"scripts/tools/bundle-test/**/*.js",
183+
],
184+
parserOptions: {
185+
sourceType: "module",
186+
},
187+
rules: {
188+
"unicorn/prefer-module": "error",
189+
"unicorn/prefer-node-protocol": "error",
190+
},
191+
},
192+
{
193+
files: [
194+
"tests/format/**/jsfmt.spec.js",
195+
"tests/config/**/*.js",
196+
"tests/integration/**/*.js",
197+
"scripts/release/__tests__/**/*.spec.js",
198+
],
199+
env: {
200+
jest: true,
201+
},
202+
plugins: ["jest"],
203+
rules: {
204+
"jest/valid-expect": [
205+
"error",
206+
{
207+
alwaysAwait: true,
208+
},
209+
],
210+
"jest/prefer-to-be": "error",
211+
},
212+
},
213+
{
214+
files: ["tests/integration/**/*.js"],
215+
rules: {
216+
"prettier-internal-rules/await-cli-tests": "error",
217+
},
218+
},
219+
{
220+
files: ["tests/**/*.js"],
221+
rules: {
222+
strict: "off",
223+
"unicorn/prefer-array-flat": "off",
224+
"unicorn/prefer-array-flat-map": "off",
225+
},
226+
globals: {
227+
run_spec: false,
228+
},
229+
},
230+
{
231+
files: ["src/cli/*.js"],
232+
rules: {
233+
"no-restricted-modules": [
234+
"error",
235+
{
236+
patterns: ["../"],
237+
},
238+
],
239+
},
240+
},
241+
{
242+
files: ["src/cli/*/*.js"],
243+
rules: {
244+
"no-restricted-modules": [
245+
"error",
246+
{
247+
patterns: ["../../"],
248+
},
249+
],
250+
},
251+
},
252+
{
253+
files: "src/language-js/needs-parens.js",
254+
rules: {
255+
"prettier-internal-rules/better-parent-property-check-in-needs-parens":
256+
"error",
257+
},
258+
},
259+
{
260+
files: "src/**/*.js",
261+
rules: {
262+
"prettier-internal-rules/consistent-negative-index-access": "error",
263+
"prettier-internal-rules/flat-ast-path-call": "error",
264+
"prettier-internal-rules/no-conflicting-comment-check-flags": "error",
265+
"prettier-internal-rules/no-doc-builder-concat": "error",
266+
"prettier-internal-rules/no-empty-flat-contents-for-if-break": "error",
267+
"prettier-internal-rules/no-unnecessary-ast-path-call": "error",
268+
"prettier-internal-rules/prefer-ast-path-each": "error",
269+
"prettier-internal-rules/prefer-indent-if-break": "error",
270+
"prettier-internal-rules/prefer-is-non-empty-array": "error",
271+
},
272+
},
273+
{
274+
files: ["src/language-*/**/*.js"],
275+
rules: {
276+
"prettier-internal-rules/directly-loc-start-end": "error",
277+
},
278+
},
279+
{
280+
files: ["src/language-js/**/*.js"],
281+
rules: {
282+
"prettier-internal-rules/no-node-comments": [
283+
"error",
284+
{
285+
file: "src/language-js/utils/index.js",
286+
functions: ["hasComment", "getComments"],
287+
},
288+
"src/language-js/pragma.js",
289+
"src/language-js/parse/postprocess/*.js",
290+
"src/language-js/parse/babel.js",
291+
"src/language-js/parse/meriyah.js",
292+
"src/language-js/parse/json.js",
293+
"src/language-js/parse/acorn.js",
294+
],
295+
},
296+
},
297+
{
298+
files: ["website/**/*"],
299+
env: {
300+
browser: true,
301+
worker: true,
302+
},
303+
extends: ["plugin:react/recommended"],
304+
settings: {
305+
react: {
306+
version: "17",
307+
},
308+
},
309+
rules: {
310+
"import/no-extraneous-dependencies": "off",
311+
"react/display-name": "off",
312+
"react/no-deprecated": "off",
313+
"react/prop-types": "off",
314+
"unicorn/filename-case": "off",
315+
},
316+
},
317+
{
318+
files: ["website/playground/**/*"],
319+
parserOptions: {
320+
sourceType: "module",
321+
},
322+
},
323+
{
324+
files: ["bin/prettier.js"],
325+
parserOptions: {
326+
ecmaVersion: 5,
327+
},
328+
rules: {
329+
"no-var": "off",
330+
},
331+
},
332+
],
333+
};

0 commit comments

Comments
 (0)