worsier 0.1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # Worsier
2
2
 
3
- A configurable JavaScript, TypeScript, JSX, and TSX formatter powered by Rust.
3
+ A focused JavaScript, TypeScript, JSX, and TSX static-import formatter powered by Rust. Source text
4
+ outside imports and their blank-line boundaries is preserved byte-for-byte.
4
5
 
5
6
  ```sh
6
7
  pnpm add -D worsier
@@ -12,5 +13,5 @@ pnpm exec worsier --write .
12
13
  ```js
13
14
  import { format } from 'worsier'
14
15
 
15
- const output = await format('example.ts', 'const value={answer:42};', {})
16
+ const output = await format('example.ts', "import{answer,type Value}from'pkg'", {})
16
17
  ```
@@ -9,26 +9,6 @@
9
9
  "null"
10
10
  ]
11
11
  },
12
- "arrays": {
13
- "$ref": "#/$defs/ArrayConfig",
14
- "default": {
15
- "elementLayout": "auto",
16
- "layout": "auto",
17
- "objectElements": "inherit"
18
- }
19
- },
20
- "arrowParentheses": {
21
- "$ref": "#/$defs/ArrowParentheses",
22
- "default": "always"
23
- },
24
- "bracketSpacing": {
25
- "type": "boolean",
26
- "default": true
27
- },
28
- "finalNewline": {
29
- "type": "boolean",
30
- "default": true
31
- },
32
12
  "ignorePatterns": {
33
13
  "type": "array",
34
14
  "default": [],
@@ -36,61 +16,18 @@
36
16
  "type": "string"
37
17
  }
38
18
  },
39
- "imports": {
40
- "$ref": "#/$defs/ImportConfig",
41
- "default": {
42
- "specifierLayout": "auto"
43
- }
44
- },
45
- "indentStyle": {
46
- "$ref": "#/$defs/IndentStyle",
47
- "default": "space"
48
- },
49
- "indentWidth": {
50
- "type": "integer",
51
- "format": "uint8",
52
- "default": 2,
53
- "maximum": 24,
54
- "minimum": 0
55
- },
56
- "lineEnding": {
57
- "$ref": "#/$defs/LineEnding",
58
- "default": "preserve"
59
- },
60
19
  "lineWidth": {
61
20
  "type": "integer",
62
- "format": "uint16",
63
- "default": 100,
64
- "maximum": 320,
21
+ "format": "uint32",
22
+ "default": 120,
65
23
  "minimum": 1
66
24
  },
67
- "objects": {
68
- "$ref": "#/$defs/ObjectConfig",
25
+ "rules": {
26
+ "$ref": "#/$defs/RulesConfig",
69
27
  "default": {
70
- "layout": "auto",
71
- "propertyLayout": "auto",
72
- "whenArrayElement": "inherit"
73
- }
74
- },
75
- "quoteStyle": {
76
- "$ref": "#/$defs/QuoteStyle",
77
- "default": "single"
78
- },
79
- "semicolons": {
80
- "$ref": "#/$defs/Semicolons",
81
- "default": "always"
82
- },
83
- "statementSpacing": {
84
- "type": "array",
85
- "default": [],
86
- "items": {
87
- "$ref": "#/$defs/StatementSpacingRule"
28
+ "imports": true
88
29
  }
89
30
  },
90
- "trailingCommas": {
91
- "$ref": "#/$defs/TrailingCommas",
92
- "default": "multiline"
93
- },
94
31
  "verifyAst": {
95
32
  "type": "boolean",
96
33
  "default": true
@@ -98,201 +35,15 @@
98
35
  },
99
36
  "additionalProperties": false,
100
37
  "$defs": {
101
- "ArrayConfig": {
38
+ "RulesConfig": {
102
39
  "type": "object",
103
40
  "properties": {
104
- "elementLayout": {
105
- "$ref": "#/$defs/CollectionItemLayout",
106
- "default": "auto"
107
- },
108
- "layout": {
109
- "$ref": "#/$defs/CollectionLayout",
110
- "default": "auto"
111
- },
112
- "objectElements": {
113
- "$ref": "#/$defs/ArrayObjectLayout",
114
- "default": "inherit"
41
+ "imports": {
42
+ "type": "boolean",
43
+ "default": true
115
44
  }
116
45
  },
117
46
  "additionalProperties": false
118
- },
119
- "ArrayObjectLayout": {
120
- "type": "string",
121
- "enum": [
122
- "inherit",
123
- "onePerLine"
124
- ]
125
- },
126
- "ArrowParentheses": {
127
- "type": "string",
128
- "enum": [
129
- "always",
130
- "asNeeded"
131
- ]
132
- },
133
- "CollectionItemLayout": {
134
- "type": "string",
135
- "enum": [
136
- "auto",
137
- "preserve",
138
- "onePerLine"
139
- ]
140
- },
141
- "CollectionLayout": {
142
- "type": "string",
143
- "enum": [
144
- "auto",
145
- "preserve",
146
- "singleLine",
147
- "multiLine"
148
- ]
149
- },
150
- "ImportConfig": {
151
- "type": "object",
152
- "properties": {
153
- "specifierLayout": {
154
- "$ref": "#/$defs/CollectionItemLayout",
155
- "default": "auto"
156
- }
157
- },
158
- "additionalProperties": false
159
- },
160
- "IndentStyle": {
161
- "type": "string",
162
- "enum": [
163
- "space",
164
- "tab"
165
- ]
166
- },
167
- "LineEnding": {
168
- "type": "string",
169
- "enum": [
170
- "preserve",
171
- "lf",
172
- "crlf"
173
- ]
174
- },
175
- "LineShape": {
176
- "type": "string",
177
- "enum": [
178
- "any",
179
- "singleLine",
180
- "multiLine"
181
- ]
182
- },
183
- "ObjectArrayLayout": {
184
- "type": "string",
185
- "enum": [
186
- "inherit",
187
- "multiLine"
188
- ]
189
- },
190
- "ObjectConfig": {
191
- "type": "object",
192
- "properties": {
193
- "layout": {
194
- "$ref": "#/$defs/CollectionLayout",
195
- "default": "auto"
196
- },
197
- "propertyLayout": {
198
- "$ref": "#/$defs/CollectionItemLayout",
199
- "default": "auto"
200
- },
201
- "whenArrayElement": {
202
- "$ref": "#/$defs/ObjectArrayLayout",
203
- "default": "inherit"
204
- }
205
- },
206
- "additionalProperties": false
207
- },
208
- "QuoteStyle": {
209
- "type": "string",
210
- "enum": [
211
- "single",
212
- "double"
213
- ]
214
- },
215
- "Semicolons": {
216
- "type": "string",
217
- "enum": [
218
- "always",
219
- "asNeeded"
220
- ]
221
- },
222
- "StatementKind": {
223
- "type": "string",
224
- "enum": [
225
- "any",
226
- "import",
227
- "export",
228
- "const",
229
- "let",
230
- "var",
231
- "function",
232
- "class",
233
- "type",
234
- "interface",
235
- "enum",
236
- "namespace",
237
- "other"
238
- ]
239
- },
240
- "StatementScope": {
241
- "type": "string",
242
- "enum": [
243
- "any",
244
- "topLevel",
245
- "block"
246
- ]
247
- },
248
- "StatementSelector": {
249
- "type": "object",
250
- "properties": {
251
- "kind": {
252
- "$ref": "#/$defs/StatementKind",
253
- "default": "any"
254
- },
255
- "lineShape": {
256
- "$ref": "#/$defs/LineShape",
257
- "default": "any"
258
- }
259
- },
260
- "additionalProperties": false
261
- },
262
- "StatementSpacingRule": {
263
- "type": "object",
264
- "properties": {
265
- "blankLines": {
266
- "type": "integer",
267
- "format": "uint8",
268
- "maximum": 255,
269
- "minimum": 0
270
- },
271
- "next": {
272
- "$ref": "#/$defs/StatementSelector"
273
- },
274
- "previous": {
275
- "$ref": "#/$defs/StatementSelector"
276
- },
277
- "scope": {
278
- "$ref": "#/$defs/StatementScope",
279
- "default": "any"
280
- }
281
- },
282
- "additionalProperties": false,
283
- "required": [
284
- "previous",
285
- "next",
286
- "blankLines"
287
- ]
288
- },
289
- "TrailingCommas": {
290
- "type": "string",
291
- "enum": [
292
- "none",
293
- "multiline",
294
- "all"
295
- ]
296
47
  }
297
48
  }
298
49
  }
package/dist/types.d.ts CHANGED
@@ -1,42 +1,10 @@
1
1
  export interface FormatConfig {
2
2
  $schema?: string | null;
3
- arrays?: ArrayConfig;
4
- arrowParentheses?: 'always' | 'asNeeded';
5
- bracketSpacing?: boolean;
6
- finalNewline?: boolean;
7
3
  ignorePatterns?: string[];
8
- imports?: ImportConfig;
9
- indentStyle?: 'space' | 'tab';
10
- indentWidth?: number;
11
- lineEnding?: 'preserve' | 'lf' | 'crlf';
12
4
  lineWidth?: number;
13
- objects?: ObjectConfig;
14
- quoteStyle?: 'single' | 'double';
15
- semicolons?: 'always' | 'asNeeded';
16
- statementSpacing?: StatementSpacingRule[];
17
- trailingCommas?: 'none' | 'multiline' | 'all';
5
+ rules?: RulesConfig;
18
6
  verifyAst?: boolean;
19
7
  }
20
- export interface ArrayConfig {
21
- elementLayout?: 'auto' | 'preserve' | 'onePerLine';
22
- layout?: 'auto' | 'preserve' | 'singleLine' | 'multiLine';
23
- objectElements?: 'inherit' | 'onePerLine';
24
- }
25
- export interface ImportConfig {
26
- specifierLayout?: 'auto' | 'preserve' | 'onePerLine';
27
- }
28
- export interface ObjectConfig {
29
- layout?: 'auto' | 'preserve' | 'singleLine' | 'multiLine';
30
- propertyLayout?: 'auto' | 'preserve' | 'onePerLine';
31
- whenArrayElement?: 'inherit' | 'multiLine';
32
- }
33
- export interface StatementSpacingRule {
34
- blankLines: number;
35
- next: StatementSelector;
36
- previous: StatementSelector;
37
- scope?: 'any' | 'topLevel' | 'block';
38
- }
39
- export interface StatementSelector {
40
- kind?: 'any' | 'import' | 'export' | 'const' | 'let' | 'var' | 'function' | 'class' | 'type' | 'interface' | 'enum' | 'namespace' | 'other';
41
- lineShape?: 'any' | 'singleLine' | 'multiLine';
8
+ export interface RulesConfig {
9
+ imports?: boolean;
42
10
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "worsier",
3
- "version": "0.1.0",
4
- "description": "A configurable JavaScript and TypeScript formatter powered by Rust",
3
+ "version": "1.0.1",
4
+ "description": "A focused JavaScript and TypeScript import formatter powered by Rust",
5
5
  "license": "MIT",
6
6
  "repository": {
7
7
  "type": "git",
@@ -32,7 +32,7 @@
32
32
  "build": "tsc -p tsconfig.json",
33
33
  "build:native": "napi build --manifest-path ../../crates/napi/Cargo.toml --output-dir ../../npm/linux-x64-gnu --platform --release --no-js",
34
34
  "test": "node --test test/*.test.mjs",
35
- "test:packed": "node ../../scripts/test-packed-package.mjs"
35
+ "test:packed": "node scripts/test-packed-package.mjs"
36
36
  },
37
37
  "napi": {
38
38
  "binaryName": "worsier",
@@ -48,14 +48,14 @@
48
48
  ]
49
49
  },
50
50
  "optionalDependencies": {
51
- "worsier-darwin-arm64": "0.1.0",
52
- "worsier-win32-arm64-msvc": "0.1.0",
53
- "worsier-linux-arm64-gnu": "0.1.0",
54
- "worsier-linux-arm64-musl": "0.1.0",
55
- "worsier-darwin-x64": "0.1.0",
56
- "worsier-win32-x64-msvc": "0.1.0",
57
- "worsier-linux-x64-gnu": "0.1.0",
58
- "worsier-linux-x64-musl": "0.1.0"
51
+ "worsier-darwin-arm64": "1.0.1",
52
+ "worsier-win32-arm64-msvc": "1.0.1",
53
+ "worsier-linux-arm64-gnu": "1.0.1",
54
+ "worsier-linux-arm64-musl": "1.0.1",
55
+ "worsier-darwin-x64": "1.0.1",
56
+ "worsier-win32-x64-msvc": "1.0.1",
57
+ "worsier-linux-x64-gnu": "1.0.1",
58
+ "worsier-linux-x64-musl": "1.0.1"
59
59
  },
60
60
  "devDependencies": {
61
61
  "@types/node": "26.2.0",