boss-css 0.0.14 → 0.0.16
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/LICENSE +21 -0
- package/README.md +146 -1
- package/dist/ai/server.cjs +1 -0
- package/dist/ai/server.mjs +1 -0
- package/dist/ai/skills.cjs +3 -0
- package/dist/ai/skills.mjs +3 -0
- package/dist/cli/tasks/init.cjs +54 -30
- package/dist/cli/tasks/init.mjs +54 -30
- package/dist/cli/templates/init.cjs +5 -5
- package/dist/cli/templates/init.mjs +5 -5
- package/dist/devtools-app/index.mjs +320 -0
- package/dist/devtools-app/monaco/vs/_commonjsHelpers-CT9FvmAN.js +1 -0
- package/dist/devtools-app/monaco/vs/abap-D-t0cyap.js +1 -0
- package/dist/devtools-app/monaco/vs/apex-CcIm7xu6.js +1 -0
- package/dist/devtools-app/monaco/vs/assets/css.worker-HnVq6Ewq.js +93 -0
- package/dist/devtools-app/monaco/vs/assets/editor.worker-Be8ye1pW.js +26 -0
- package/dist/devtools-app/monaco/vs/assets/html.worker-B51mlPHg.js +470 -0
- package/dist/devtools-app/monaco/vs/assets/json.worker-DKiEKt88.js +58 -0
- package/dist/devtools-app/monaco/vs/assets/ts.worker-CMbG-7ft.js +67731 -0
- package/dist/devtools-app/monaco/vs/azcli-BA0tQDCg.js +1 -0
- package/dist/devtools-app/monaco/vs/basic-languages/monaco.contribution.js +1 -0
- package/dist/devtools-app/monaco/vs/bat-C397hTD6.js +1 -0
- package/dist/devtools-app/monaco/vs/bicep-DF5aW17k.js +2 -0
- package/dist/devtools-app/monaco/vs/cameligo-plsz8qhj.js +1 -0
- package/dist/devtools-app/monaco/vs/clojure-Y2auQMzK.js +1 -0
- package/dist/devtools-app/monaco/vs/coffee-Bu45yuWE.js +1 -0
- package/dist/devtools-app/monaco/vs/cpp-CkKPQIni.js +1 -0
- package/dist/devtools-app/monaco/vs/csharp-CX28MZyh.js +1 -0
- package/dist/devtools-app/monaco/vs/csp-D8uWnyxW.js +1 -0
- package/dist/devtools-app/monaco/vs/css-CaeNmE3S.js +3 -0
- package/dist/devtools-app/monaco/vs/cssMode-CjiAH6dQ.js +1 -0
- package/dist/devtools-app/monaco/vs/cypher-DVThT8BS.js +1 -0
- package/dist/devtools-app/monaco/vs/dart-CmGfCvrO.js +1 -0
- package/dist/devtools-app/monaco/vs/dockerfile-CZqqYdch.js +1 -0
- package/dist/devtools-app/monaco/vs/ecl-30fUercY.js +1 -0
- package/dist/devtools-app/monaco/vs/editor/editor.main.css +1 -0
- package/dist/devtools-app/monaco/vs/editor/editor.main.js +5 -0
- package/dist/devtools-app/monaco/vs/editor.api-CalNCsUg.js +903 -0
- package/dist/devtools-app/monaco/vs/elixir-xjPaIfzF.js +1 -0
- package/dist/devtools-app/monaco/vs/flow9-DqtmStfK.js +1 -0
- package/dist/devtools-app/monaco/vs/freemarker2-Cz_sV6Md.js +3 -0
- package/dist/devtools-app/monaco/vs/fsharp-BOMdg4U1.js +1 -0
- package/dist/devtools-app/monaco/vs/go-D_hbi-Jt.js +1 -0
- package/dist/devtools-app/monaco/vs/graphql-CKUU4kLG.js +1 -0
- package/dist/devtools-app/monaco/vs/handlebars-OwglfO-1.js +1 -0
- package/dist/devtools-app/monaco/vs/hcl-DTaboeZW.js +1 -0
- package/dist/devtools-app/monaco/vs/html-Pa1xEWsY.js +1 -0
- package/dist/devtools-app/monaco/vs/htmlMode-Bz67EXwp.js +1 -0
- package/dist/devtools-app/monaco/vs/ini-CsNwO04R.js +1 -0
- package/dist/devtools-app/monaco/vs/java-CI4ZMsH9.js +1 -0
- package/dist/devtools-app/monaco/vs/javascript-PczUCGdz.js +1 -0
- package/dist/devtools-app/monaco/vs/jsonMode-DULH5oaX.js +7 -0
- package/dist/devtools-app/monaco/vs/julia-BwzEvaQw.js +1 -0
- package/dist/devtools-app/monaco/vs/kotlin-IUYPiTV8.js +1 -0
- package/dist/devtools-app/monaco/vs/language/css/monaco.contribution.js +1 -0
- package/dist/devtools-app/monaco/vs/language/html/monaco.contribution.js +1 -0
- package/dist/devtools-app/monaco/vs/language/json/monaco.contribution.js +1 -0
- package/dist/devtools-app/monaco/vs/language/typescript/monaco.contribution.js +1 -0
- package/dist/devtools-app/monaco/vs/less-C0eDYdqa.js +2 -0
- package/dist/devtools-app/monaco/vs/lexon-iON-Kj97.js +1 -0
- package/dist/devtools-app/monaco/vs/liquid-DqKjdPGy.js +1 -0
- package/dist/devtools-app/monaco/vs/loader.js +1368 -0
- package/dist/devtools-app/monaco/vs/lspLanguageFeatures-kM9O9rjY.js +4 -0
- package/dist/devtools-app/monaco/vs/lua-DtygF91M.js +1 -0
- package/dist/devtools-app/monaco/vs/m3-CsR4AuFi.js +1 -0
- package/dist/devtools-app/monaco/vs/markdown-C_rD0bIw.js +1 -0
- package/dist/devtools-app/monaco/vs/mdx-DEWtB1K5.js +1 -0
- package/dist/devtools-app/monaco/vs/mips-CiYP61RB.js +1 -0
- package/dist/devtools-app/monaco/vs/monaco.contribution-D2OdxNBt.js +1 -0
- package/dist/devtools-app/monaco/vs/monaco.contribution-DO3azKX8.js +1 -0
- package/dist/devtools-app/monaco/vs/monaco.contribution-EcChJV6a.js +1 -0
- package/dist/devtools-app/monaco/vs/monaco.contribution-qLAYrEOP.js +1 -0
- package/dist/devtools-app/monaco/vs/msdax-C38-sJlp.js +1 -0
- package/dist/devtools-app/monaco/vs/mysql-CdtbpvbG.js +1 -0
- package/dist/devtools-app/monaco/vs/nls.messages-loader.js +1 -0
- package/dist/devtools-app/monaco/vs/nls.messages.cs.js.js +17 -0
- package/dist/devtools-app/monaco/vs/nls.messages.de.js.js +17 -0
- package/dist/devtools-app/monaco/vs/nls.messages.es.js.js +17 -0
- package/dist/devtools-app/monaco/vs/nls.messages.fr.js.js +15 -0
- package/dist/devtools-app/monaco/vs/nls.messages.it.js.js +15 -0
- package/dist/devtools-app/monaco/vs/nls.messages.ja.js.js +17 -0
- package/dist/devtools-app/monaco/vs/nls.messages.js.js +10 -0
- package/dist/devtools-app/monaco/vs/nls.messages.ko.js.js +25 -0
- package/dist/devtools-app/monaco/vs/nls.messages.pl.js.js +17 -0
- package/dist/devtools-app/monaco/vs/nls.messages.pt-br.js.js +6 -0
- package/dist/devtools-app/monaco/vs/nls.messages.ru.js.js +17 -0
- package/dist/devtools-app/monaco/vs/nls.messages.tr.js.js +15 -0
- package/dist/devtools-app/monaco/vs/nls.messages.zh-cn.js.js +17 -0
- package/dist/devtools-app/monaco/vs/nls.messages.zh-tw.js.js +15 -0
- package/dist/devtools-app/monaco/vs/objective-c-CntZFaHX.js +1 -0
- package/dist/devtools-app/monaco/vs/pascal-r6kuqfl_.js +1 -0
- package/dist/devtools-app/monaco/vs/pascaligo-BiXoTmXh.js +1 -0
- package/dist/devtools-app/monaco/vs/perl-DABw_TcH.js +1 -0
- package/dist/devtools-app/monaco/vs/pgsql-me_jFXeX.js +1 -0
- package/dist/devtools-app/monaco/vs/php-D_kh-9LK.js +1 -0
- package/dist/devtools-app/monaco/vs/pla-VfZjczW0.js +1 -0
- package/dist/devtools-app/monaco/vs/postiats-BBSzz8Pk.js +1 -0
- package/dist/devtools-app/monaco/vs/powerquery-Dt-g_2cc.js +1 -0
- package/dist/devtools-app/monaco/vs/powershell-B-7ap1zc.js +1 -0
- package/dist/devtools-app/monaco/vs/protobuf-BmtuEB1A.js +2 -0
- package/dist/devtools-app/monaco/vs/pug-BRpRNeEb.js +1 -0
- package/dist/devtools-app/monaco/vs/python-Cr0UkIbn.js +1 -0
- package/dist/devtools-app/monaco/vs/qsharp-BzsFaUU9.js +1 -0
- package/dist/devtools-app/monaco/vs/r-f8dDdrp4.js +1 -0
- package/dist/devtools-app/monaco/vs/razor-BYAHOTkz.js +1 -0
- package/dist/devtools-app/monaco/vs/redis-fvZQY4PI.js +1 -0
- package/dist/devtools-app/monaco/vs/redshift-45Et0LQi.js +1 -0
- package/dist/devtools-app/monaco/vs/restructuredtext-C7UUFKFD.js +1 -0
- package/dist/devtools-app/monaco/vs/ruby-CZO8zYTz.js +1 -0
- package/dist/devtools-app/monaco/vs/rust-Bfetafyc.js +1 -0
- package/dist/devtools-app/monaco/vs/sb-3GYllVck.js +1 -0
- package/dist/devtools-app/monaco/vs/scala-foMgrKo1.js +1 -0
- package/dist/devtools-app/monaco/vs/scheme-CHdMtr7p.js +1 -0
- package/dist/devtools-app/monaco/vs/scss-C1cmLt9V.js +3 -0
- package/dist/devtools-app/monaco/vs/shell-ClXCKCEW.js +1 -0
- package/dist/devtools-app/monaco/vs/solidity-MZ6ExpPy.js +1 -0
- package/dist/devtools-app/monaco/vs/sophia-DWkuSsPQ.js +1 -0
- package/dist/devtools-app/monaco/vs/sparql-AUGFYSyk.js +1 -0
- package/dist/devtools-app/monaco/vs/sql-32GpJSV2.js +1 -0
- package/dist/devtools-app/monaco/vs/st-CuDFIVZ_.js +1 -0
- package/dist/devtools-app/monaco/vs/swift-n-2HociN.js +3 -0
- package/dist/devtools-app/monaco/vs/systemverilog-Ch4vA8Yt.js +1 -0
- package/dist/devtools-app/monaco/vs/tcl-D74tq1nH.js +1 -0
- package/dist/devtools-app/monaco/vs/tsMode-CZz1Umrk.js +11 -0
- package/dist/devtools-app/monaco/vs/twig-C6taOxMV.js +1 -0
- package/dist/devtools-app/monaco/vs/typescript-DfOrAzoV.js +1 -0
- package/dist/devtools-app/monaco/vs/typespec-D-PIh9Xw.js +1 -0
- package/dist/devtools-app/monaco/vs/vb-Dyb2648j.js +1 -0
- package/dist/devtools-app/monaco/vs/wgsl-BhLXMOR0.js +298 -0
- package/dist/devtools-app/monaco/vs/workers-DcJshg-q.js +1 -0
- package/dist/devtools-app/monaco/vs/xml-CdsdnY8S.js +1 -0
- package/dist/devtools-app/monaco/vs/yaml-DYGvmE88.js +1 -0
- package/dist/eslint-plugin/index.cjs +5 -2
- package/dist/eslint-plugin/index.mjs +5 -2
- package/dist/eslint-plugin/rules/prefer-unitless-values.cjs +217 -0
- package/dist/eslint-plugin/rules/prefer-unitless-values.mjs +217 -0
- package/dist/eslint-plugin/utils/api.cjs +3 -4
- package/dist/eslint-plugin/utils/api.mjs +2 -2
- package/dist/native/server.cjs +4 -4
- package/dist/native/server.mjs +4 -4
- package/dist/parser/jsx/extractCode.cjs +3 -2
- package/dist/parser/jsx/extractCode.mjs +3 -2
- package/dist/parser/jsx/extractProps.cjs +7 -1
- package/dist/parser/jsx/extractProps.mjs +7 -1
- package/dist/parser/jsx/server.cjs +13 -7
- package/dist/parser/jsx/server.mjs +13 -7
- package/dist/prop/at/shared.cjs +3 -3
- package/dist/prop/at/shared.mjs +3 -3
- package/dist/tasks/postcss.cjs +16 -5
- package/dist/tasks/postcss.mjs +16 -5
- package/dist/transform/cache.cjs +0 -3
- package/dist/transform/cache.mjs +0 -2
- package/dist/use/token/browser.cjs +17 -9
- package/dist/use/token/browser.mjs +18 -10
- package/dist/use/token/normalize.cjs +474 -0
- package/dist/use/token/normalize.mjs +473 -0
- package/dist/use/token/propMap.cjs +34 -5
- package/dist/use/token/propMap.mjs +34 -6
- package/dist/use/token/runtime-only.cjs +36 -47
- package/dist/use/token/runtime-only.mjs +37 -48
- package/dist/use/token/server.cjs +82 -15
- package/dist/use/token/server.mjs +83 -17
- package/dist/use/token/vars.cjs +14 -2
- package/dist/use/token/vars.mjs +15 -2
- package/package.json +13 -13
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
define("vs/wgsl-BhLXMOR0",["exports"],(function(a){"use strict";const s={comments:{lineComment:"//",blockComment:["/*","*/"]},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"[",close:"]"},{open:"{",close:"}"},{open:"(",close:")"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"}]};function e(b){let i=[];const o=b.split(/\t+|\r+|\n+| +/);for(let r=0;r<o.length;++r)o[r].length>0&&i.push(o[r]);return i}const c=e("true false"),m=e(`
|
|
2
|
+
alias
|
|
3
|
+
break
|
|
4
|
+
case
|
|
5
|
+
const
|
|
6
|
+
const_assert
|
|
7
|
+
continue
|
|
8
|
+
continuing
|
|
9
|
+
default
|
|
10
|
+
diagnostic
|
|
11
|
+
discard
|
|
12
|
+
else
|
|
13
|
+
enable
|
|
14
|
+
fn
|
|
15
|
+
for
|
|
16
|
+
if
|
|
17
|
+
let
|
|
18
|
+
loop
|
|
19
|
+
override
|
|
20
|
+
requires
|
|
21
|
+
return
|
|
22
|
+
struct
|
|
23
|
+
switch
|
|
24
|
+
var
|
|
25
|
+
while
|
|
26
|
+
`),l=e(`
|
|
27
|
+
NULL
|
|
28
|
+
Self
|
|
29
|
+
abstract
|
|
30
|
+
active
|
|
31
|
+
alignas
|
|
32
|
+
alignof
|
|
33
|
+
as
|
|
34
|
+
asm
|
|
35
|
+
asm_fragment
|
|
36
|
+
async
|
|
37
|
+
attribute
|
|
38
|
+
auto
|
|
39
|
+
await
|
|
40
|
+
become
|
|
41
|
+
binding_array
|
|
42
|
+
cast
|
|
43
|
+
catch
|
|
44
|
+
class
|
|
45
|
+
co_await
|
|
46
|
+
co_return
|
|
47
|
+
co_yield
|
|
48
|
+
coherent
|
|
49
|
+
column_major
|
|
50
|
+
common
|
|
51
|
+
compile
|
|
52
|
+
compile_fragment
|
|
53
|
+
concept
|
|
54
|
+
const_cast
|
|
55
|
+
consteval
|
|
56
|
+
constexpr
|
|
57
|
+
constinit
|
|
58
|
+
crate
|
|
59
|
+
debugger
|
|
60
|
+
decltype
|
|
61
|
+
delete
|
|
62
|
+
demote
|
|
63
|
+
demote_to_helper
|
|
64
|
+
do
|
|
65
|
+
dynamic_cast
|
|
66
|
+
enum
|
|
67
|
+
explicit
|
|
68
|
+
export
|
|
69
|
+
extends
|
|
70
|
+
extern
|
|
71
|
+
external
|
|
72
|
+
fallthrough
|
|
73
|
+
filter
|
|
74
|
+
final
|
|
75
|
+
finally
|
|
76
|
+
friend
|
|
77
|
+
from
|
|
78
|
+
fxgroup
|
|
79
|
+
get
|
|
80
|
+
goto
|
|
81
|
+
groupshared
|
|
82
|
+
highp
|
|
83
|
+
impl
|
|
84
|
+
implements
|
|
85
|
+
import
|
|
86
|
+
inline
|
|
87
|
+
instanceof
|
|
88
|
+
interface
|
|
89
|
+
layout
|
|
90
|
+
lowp
|
|
91
|
+
macro
|
|
92
|
+
macro_rules
|
|
93
|
+
match
|
|
94
|
+
mediump
|
|
95
|
+
meta
|
|
96
|
+
mod
|
|
97
|
+
module
|
|
98
|
+
move
|
|
99
|
+
mut
|
|
100
|
+
mutable
|
|
101
|
+
namespace
|
|
102
|
+
new
|
|
103
|
+
nil
|
|
104
|
+
noexcept
|
|
105
|
+
noinline
|
|
106
|
+
nointerpolation
|
|
107
|
+
noperspective
|
|
108
|
+
null
|
|
109
|
+
nullptr
|
|
110
|
+
of
|
|
111
|
+
operator
|
|
112
|
+
package
|
|
113
|
+
packoffset
|
|
114
|
+
partition
|
|
115
|
+
pass
|
|
116
|
+
patch
|
|
117
|
+
pixelfragment
|
|
118
|
+
precise
|
|
119
|
+
precision
|
|
120
|
+
premerge
|
|
121
|
+
priv
|
|
122
|
+
protected
|
|
123
|
+
pub
|
|
124
|
+
public
|
|
125
|
+
readonly
|
|
126
|
+
ref
|
|
127
|
+
regardless
|
|
128
|
+
register
|
|
129
|
+
reinterpret_cast
|
|
130
|
+
require
|
|
131
|
+
resource
|
|
132
|
+
restrict
|
|
133
|
+
self
|
|
134
|
+
set
|
|
135
|
+
shared
|
|
136
|
+
sizeof
|
|
137
|
+
smooth
|
|
138
|
+
snorm
|
|
139
|
+
static
|
|
140
|
+
static_assert
|
|
141
|
+
static_cast
|
|
142
|
+
std
|
|
143
|
+
subroutine
|
|
144
|
+
super
|
|
145
|
+
target
|
|
146
|
+
template
|
|
147
|
+
this
|
|
148
|
+
thread_local
|
|
149
|
+
throw
|
|
150
|
+
trait
|
|
151
|
+
try
|
|
152
|
+
type
|
|
153
|
+
typedef
|
|
154
|
+
typeid
|
|
155
|
+
typename
|
|
156
|
+
typeof
|
|
157
|
+
union
|
|
158
|
+
unless
|
|
159
|
+
unorm
|
|
160
|
+
unsafe
|
|
161
|
+
unsized
|
|
162
|
+
use
|
|
163
|
+
using
|
|
164
|
+
varying
|
|
165
|
+
virtual
|
|
166
|
+
volatile
|
|
167
|
+
wgsl
|
|
168
|
+
where
|
|
169
|
+
with
|
|
170
|
+
writeonly
|
|
171
|
+
yield
|
|
172
|
+
`),u=e(`
|
|
173
|
+
read write read_write
|
|
174
|
+
function private workgroup uniform storage
|
|
175
|
+
perspective linear flat
|
|
176
|
+
center centroid sample
|
|
177
|
+
vertex_index instance_index position front_facing frag_depth
|
|
178
|
+
local_invocation_id local_invocation_index
|
|
179
|
+
global_invocation_id workgroup_id num_workgroups
|
|
180
|
+
sample_index sample_mask
|
|
181
|
+
rgba8unorm
|
|
182
|
+
rgba8snorm
|
|
183
|
+
rgba8uint
|
|
184
|
+
rgba8sint
|
|
185
|
+
rgba16uint
|
|
186
|
+
rgba16sint
|
|
187
|
+
rgba16float
|
|
188
|
+
r32uint
|
|
189
|
+
r32sint
|
|
190
|
+
r32float
|
|
191
|
+
rg32uint
|
|
192
|
+
rg32sint
|
|
193
|
+
rg32float
|
|
194
|
+
rgba32uint
|
|
195
|
+
rgba32sint
|
|
196
|
+
rgba32float
|
|
197
|
+
bgra8unorm
|
|
198
|
+
`),p=e(`
|
|
199
|
+
bool
|
|
200
|
+
f16
|
|
201
|
+
f32
|
|
202
|
+
i32
|
|
203
|
+
sampler sampler_comparison
|
|
204
|
+
texture_depth_2d
|
|
205
|
+
texture_depth_2d_array
|
|
206
|
+
texture_depth_cube
|
|
207
|
+
texture_depth_cube_array
|
|
208
|
+
texture_depth_multisampled_2d
|
|
209
|
+
texture_external
|
|
210
|
+
texture_external
|
|
211
|
+
u32
|
|
212
|
+
`),d=e(`
|
|
213
|
+
array
|
|
214
|
+
atomic
|
|
215
|
+
mat2x2
|
|
216
|
+
mat2x3
|
|
217
|
+
mat2x4
|
|
218
|
+
mat3x2
|
|
219
|
+
mat3x3
|
|
220
|
+
mat3x4
|
|
221
|
+
mat4x2
|
|
222
|
+
mat4x3
|
|
223
|
+
mat4x4
|
|
224
|
+
ptr
|
|
225
|
+
texture_1d
|
|
226
|
+
texture_2d
|
|
227
|
+
texture_2d_array
|
|
228
|
+
texture_3d
|
|
229
|
+
texture_cube
|
|
230
|
+
texture_cube_array
|
|
231
|
+
texture_multisampled_2d
|
|
232
|
+
texture_storage_1d
|
|
233
|
+
texture_storage_2d
|
|
234
|
+
texture_storage_2d_array
|
|
235
|
+
texture_storage_3d
|
|
236
|
+
vec2
|
|
237
|
+
vec3
|
|
238
|
+
vec4
|
|
239
|
+
`),x=e(`
|
|
240
|
+
vec2i vec3i vec4i
|
|
241
|
+
vec2u vec3u vec4u
|
|
242
|
+
vec2f vec3f vec4f
|
|
243
|
+
vec2h vec3h vec4h
|
|
244
|
+
mat2x2f mat2x3f mat2x4f
|
|
245
|
+
mat3x2f mat3x3f mat3x4f
|
|
246
|
+
mat4x2f mat4x3f mat4x4f
|
|
247
|
+
mat2x2h mat2x3h mat2x4h
|
|
248
|
+
mat3x2h mat3x3h mat3x4h
|
|
249
|
+
mat4x2h mat4x3h mat4x4h
|
|
250
|
+
`),f=e(`
|
|
251
|
+
bitcast all any select arrayLength abs acos acosh asin asinh atan atanh atan2
|
|
252
|
+
ceil clamp cos cosh countLeadingZeros countOneBits countTrailingZeros cross
|
|
253
|
+
degrees determinant distance dot exp exp2 extractBits faceForward firstLeadingBit
|
|
254
|
+
firstTrailingBit floor fma fract frexp inverseBits inverseSqrt ldexp length
|
|
255
|
+
log log2 max min mix modf normalize pow quantizeToF16 radians reflect refract
|
|
256
|
+
reverseBits round saturate sign sin sinh smoothstep sqrt step tan tanh transpose
|
|
257
|
+
trunc dpdx dpdxCoarse dpdxFine dpdy dpdyCoarse dpdyFine fwidth fwidthCoarse fwidthFine
|
|
258
|
+
textureDimensions textureGather textureGatherCompare textureLoad textureNumLayers
|
|
259
|
+
textureNumLevels textureNumSamples textureSample textureSampleBias textureSampleCompare
|
|
260
|
+
textureSampleCompareLevel textureSampleGrad textureSampleLevel textureSampleBaseClampToEdge
|
|
261
|
+
textureStore atomicLoad atomicStore atomicAdd atomicSub atomicMax atomicMin
|
|
262
|
+
atomicAnd atomicOr atomicXor atomicExchange atomicCompareExchangeWeak pack4x8snorm
|
|
263
|
+
pack4x8unorm pack2x16snorm pack2x16unorm pack2x16float unpack4x8snorm unpack4x8unorm
|
|
264
|
+
unpack2x16snorm unpack2x16unorm unpack2x16float storageBarrier workgroupBarrier
|
|
265
|
+
workgroupUniformLoad
|
|
266
|
+
`),_=e(`
|
|
267
|
+
&
|
|
268
|
+
&&
|
|
269
|
+
->
|
|
270
|
+
/
|
|
271
|
+
=
|
|
272
|
+
==
|
|
273
|
+
!=
|
|
274
|
+
>
|
|
275
|
+
>=
|
|
276
|
+
<
|
|
277
|
+
<=
|
|
278
|
+
%
|
|
279
|
+
-
|
|
280
|
+
--
|
|
281
|
+
+
|
|
282
|
+
++
|
|
283
|
+
|
|
|
284
|
+
||
|
|
285
|
+
*
|
|
286
|
+
<<
|
|
287
|
+
>>
|
|
288
|
+
+=
|
|
289
|
+
-=
|
|
290
|
+
*=
|
|
291
|
+
/=
|
|
292
|
+
%=
|
|
293
|
+
&=
|
|
294
|
+
|=
|
|
295
|
+
^=
|
|
296
|
+
>>=
|
|
297
|
+
<<=
|
|
298
|
+
`),g=/enable|requires|diagnostic/,n=new RegExp("[_\\p{XID_Start}]\\p{XID_Continue}*","u"),t="variable.predefined",h={tokenPostfix:".wgsl",defaultToken:"invalid",unicode:!0,atoms:c,keywords:m,reserved:l,predeclared_enums:u,predeclared_types:p,predeclared_type_generators:d,predeclared_type_aliases:x,predeclared_intrinsics:f,operators:_,symbols:/[!%&*+\-\.\/:;<=>^|_~,]+/,tokenizer:{root:[[g,"keyword","@directive"],[n,{cases:{"@atoms":t,"@keywords":"keyword","@reserved":"invalid","@predeclared_enums":t,"@predeclared_types":t,"@predeclared_type_generators":t,"@predeclared_type_aliases":t,"@predeclared_intrinsics":t,"@default":"identifier"}}],{include:"@commentOrSpace"},{include:"@numbers"},[/[{}()\[\]]/,"@brackets"],["@","annotation","@attribute"],[/@symbols/,{cases:{"@operators":"operator","@default":"delimiter"}}],[/./,"invalid"]],commentOrSpace:[[/\s+/,"white"],[/\/\*/,"comment","@blockComment"],[/\/\/.*$/,"comment"]],blockComment:[[/[^\/*]+/,"comment"],[/\/\*/,"comment","@push"],[/\*\//,"comment","@pop"],[/[\/*]/,"comment"]],attribute:[{include:"@commentOrSpace"},[/\w+/,"annotation","@pop"]],directive:[{include:"@commentOrSpace"},[/[()]/,"@brackets"],[/,/,"delimiter"],[n,"meta.content"],[/;/,"delimiter","@pop"]],numbers:[[/0[fh]/,"number.float"],[/[1-9][0-9]*[fh]/,"number.float"],[/[0-9]*\.[0-9]+([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+\.[0-9]*([eE][+-]?[0-9]+)?[fh]?/,"number.float"],[/[0-9]+[eE][+-]?[0-9]+[fh]?/,"number.float"],[/0[xX][0-9a-fA-F]*\.[0-9a-fA-F]+(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+\.[0-9a-fA-F]*(?:[pP][+-]?[0-9]+[fh]?)?/,"number.hex"],[/0[xX][0-9a-fA-F]+[pP][+-]?[0-9]+[fh]?/,"number.hex"],[/0[xX][0-9a-fA-F]+[iu]?/,"number.hex"],[/[1-9][0-9]*[iu]?/,"number"],[/0[iu]?/,"number"]]}};a.conf=s,a.language=h,Object.defineProperty(a,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
define("vs/workers-DcJshg-q",["exports","./editor.api-CalNCsUg"],(function(c,a){"use strict";function l(e,o){const r=globalThis.MonacoEnvironment;if(r?.createTrustedTypesPolicy)try{return r.createTrustedTypesPolicy(e,o)}catch(t){console.error(t);return}try{return globalThis.trustedTypes?.createPolicy(e,o)}catch(t){console.error(t);return}}let n;typeof self=="object"&&self.constructor&&self.constructor.name==="DedicatedWorkerGlobalScope"&&globalThis.workerttPolicy!==void 0?n=globalThis.workerttPolicy:n=l("defaultWorkerFactory",{createScriptURL:e=>e});function i(e){const o=e.label,r=globalThis.MonacoEnvironment;if(r){if(typeof r.getWorker=="function")return r.getWorker("workerMain.js",o);if(typeof r.getWorkerUrl=="function"){const t=r.getWorkerUrl("workerMain.js",o);return new Worker(n?n.createScriptURL(t):t,{name:o,type:"module"})}}if(e.createWorker)return e.createWorker();throw new Error("You must define a function MonacoEnvironment.getWorkerUrl or MonacoEnvironment.getWorker")}function s(e){const o=Promise.resolve(i({label:e.label??"monaco-editor-worker",moduleId:e.moduleId,createWorker:e.createWorker})).then(r=>(r.postMessage("ignore"),r.postMessage(e.createData),r));return a.editor.createWebWorker({worker:o,host:e.host,keepIdleModels:e.keepIdleModels})}c.createWebWorker=s}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
define("vs/xml-CdsdnY8S",["exports","./editor.api-CalNCsUg"],(function(e,t){"use strict";const n={comments:{blockComment:["<!--","-->"]},brackets:[["<",">"]],autoClosingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],surroundingPairs:[{open:"<",close:">"},{open:"'",close:"'"},{open:'"',close:'"'}],onEnterRules:[{beforeText:new RegExp("<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$","i"),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:t.languages.IndentAction.IndentOutdent}},{beforeText:new RegExp("<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$","i"),action:{indentAction:t.languages.IndentAction.Indent}}]},a={defaultToken:"",tokenPostfix:".xml",ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,""],{include:"@whitespace"},[/(<)(@qualifiedName)/,[{token:"delimiter"},{token:"tag",next:"@tag"}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:"delimiter"},{token:"tag"},"",{token:"delimiter"}]],[/(<\?)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/(<\!)(@qualifiedName)/,[{token:"delimiter"},{token:"metatag",next:"@tag"}]],[/<\!\[CDATA\[/,{token:"delimiter.cdata",next:"@cdata"}],[/&\w+;/,"string.escape"]],cdata:[[/[^\]]+/,""],[/\]\]>/,{token:"delimiter.cdata",next:"@pop"}],[/\]/,""]],tag:[[/[ \t\r\n]+/,""],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,["attribute.name","","attribute.value"]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,["attribute.name","","attribute.value"]],[/@qualifiedName/,"attribute.name"],[/\?>/,{token:"delimiter",next:"@pop"}],[/(\/)(>)/,[{token:"tag"},{token:"delimiter",next:"@pop"}]],[/>/,{token:"delimiter",next:"@pop"}]],whitespace:[[/[ \t\r\n]+/,""],[/<!--/,{token:"comment",next:"@comment"}]],comment:[[/[^<\-]+/,"comment.content"],[/-->/,{token:"comment",next:"@pop"}],[/<!--/,"comment.content.invalid"],[/[<\-]/,"comment.content"]]}};e.conf=n,e.language=a,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
define("vs/yaml-DYGvmE88",["exports","./editor.api-CalNCsUg"],(function(e,n){"use strict";const t={comments:{lineComment:"#"},brackets:[["{","}"],["[","]"],["(",")"]],autoClosingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],surroundingPairs:[{open:"{",close:"}"},{open:"[",close:"]"},{open:"(",close:")"},{open:'"',close:'"'},{open:"'",close:"'"}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:n.languages.IndentAction.Indent}}]},o={tokenPostfix:".yaml",brackets:[{token:"delimiter.bracket",open:"{",close:"}"},{token:"delimiter.square",open:"[",close:"]"}],keywords:["true","True","TRUE","false","False","FALSE","null","Null","Null","~"],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:"@whitespace"},{include:"@comment"},[/%[^ ]+.*$/,"meta.directive"],[/---/,"operators.directivesEnd"],[/\.{3}/,"operators.documentEnd"],[/[-?:](?= )/,"operators"],{include:"@anchor"},{include:"@tagHandle"},{include:"@flowCollections"},{include:"@blockStyle"},[/@numberInteger(?![ \t]*\S+)/,"number"],[/@numberFloat(?![ \t]*\S+)/,"number.float"],[/@numberOctal(?![ \t]*\S+)/,"number.octal"],[/@numberHex(?![ \t]*\S+)/,"number.hex"],[/@numberInfinity(?![ \t]*\S+)/,"number.infinity"],[/@numberNaN(?![ \t]*\S+)/,"number.nan"],[/@numberDate(?![ \t]*\S+)/,"number.date"],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,["type","white","operators","white"]],{include:"@flowScalars"},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":"keyword","@default":"string"}}]],object:[{include:"@whitespace"},{include:"@comment"},[/\}/,"@brackets","@pop"],[/,/,"delimiter.comma"],[/:(?= )/,"operators"],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,"type"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\},]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],array:[{include:"@whitespace"},{include:"@comment"},[/\]/,"@brackets","@pop"],[/,/,"delimiter.comma"],{include:"@flowCollections"},{include:"@flowScalars"},{include:"@tagHandle"},{include:"@anchor"},{include:"@flowNumber"},[/[^\],]+/,{cases:{"@keywords":"keyword","@default":"string"}}]],multiString:[[/^( +).+$/,"string","@multiStringContinued.$1"]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":"string","@default":{token:"@rematch",next:"@popall"}}}]],whitespace:[[/[ \t\r\n]+/,"white"]],comment:[[/#.*$/,"comment"]],flowCollections:[[/\[/,"@brackets","@array"],[/\{/,"@brackets","@object"]],flowScalars:[[/"([^"\\]|\\.)*$/,"string.invalid"],[/'([^'\\]|\\.)*$/,"string.invalid"],[/'[^']*'/,"string"],[/"/,"string","@doubleQuotedString"]],doubleQuotedString:[[/[^\\"]+/,"string"],[/@escapes/,"string.escape"],[/\\./,"string.escape.invalid"],[/"/,"string","@pop"]],blockStyle:[[/[>|][0-9]*[+-]?$/,"operators","@multiString"]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,"number"],[/@numberFloat(?=[ \t]*[,\]\}])/,"number.float"],[/@numberOctal(?=[ \t]*[,\]\}])/,"number.octal"],[/@numberHex(?=[ \t]*[,\]\}])/,"number.hex"],[/@numberInfinity(?=[ \t]*[,\]\}])/,"number.infinity"],[/@numberNaN(?=[ \t]*[,\]\}])/,"number.nan"],[/@numberDate(?=[ \t]*[,\]\}])/,"number.date"]],tagHandle:[[/\![^ ]*/,"tag"]],anchor:[[/[&*][^ ]+/,"namespace"]]}};e.conf=t,e.language=o,Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}));
|
|
@@ -6,6 +6,7 @@ const require_prefer_classnames = require('./rules/prefer-classnames.cjs');
|
|
|
6
6
|
const require_require_prop_functions = require('./rules/require-prop-functions.cjs');
|
|
7
7
|
const require_redundant_cx = require('./rules/redundant-cx.cjs');
|
|
8
8
|
const require_prefer_token_values = require('./rules/prefer-token-values.cjs');
|
|
9
|
+
const require_prefer_unitless_values = require('./rules/prefer-unitless-values.cjs');
|
|
9
10
|
|
|
10
11
|
//#region src/eslint-plugin/index.js
|
|
11
12
|
const plugin = {
|
|
@@ -18,7 +19,8 @@ const plugin = {
|
|
|
18
19
|
[require_prefer_classnames.default.name]: require_prefer_classnames.default,
|
|
19
20
|
[require_require_prop_functions.default.name]: require_require_prop_functions.default,
|
|
20
21
|
[require_redundant_cx.default.name]: require_redundant_cx.default,
|
|
21
|
-
[require_prefer_token_values.default.name]: require_prefer_token_values.default
|
|
22
|
+
[require_prefer_token_values.default.name]: require_prefer_token_values.default,
|
|
23
|
+
[require_prefer_unitless_values.default.name]: require_prefer_unitless_values.default
|
|
22
24
|
}
|
|
23
25
|
};
|
|
24
26
|
const plugins = [plugin.meta.name];
|
|
@@ -43,7 +45,8 @@ const createConfig = (name, getRules) => ({
|
|
|
43
45
|
const getStylisticRules = (severity = "warn") => ({
|
|
44
46
|
[`${plugin.meta.name}/${require_format_classnames.default.name}`]: severity,
|
|
45
47
|
[`${plugin.meta.name}/${require_redundant_cx.default.name}`]: severity,
|
|
46
|
-
[`${plugin.meta.name}/${require_prefer_token_values.default.name}`]: severity
|
|
48
|
+
[`${plugin.meta.name}/${require_prefer_token_values.default.name}`]: severity,
|
|
49
|
+
[`${plugin.meta.name}/${require_prefer_unitless_values.default.name}`]: severity
|
|
47
50
|
});
|
|
48
51
|
const getCorrectnessRules = (severity = "error") => ({
|
|
49
52
|
[`${plugin.meta.name}/${require_no_unknown_classes.default.name}`]: severity,
|
|
@@ -6,6 +6,7 @@ import prefer_classnames_default from "./rules/prefer-classnames.mjs";
|
|
|
6
6
|
import require_prop_functions_default from "./rules/require-prop-functions.mjs";
|
|
7
7
|
import redundant_cx_default from "./rules/redundant-cx.mjs";
|
|
8
8
|
import prefer_token_values_default from "./rules/prefer-token-values.mjs";
|
|
9
|
+
import prefer_unitless_values_default from "./rules/prefer-unitless-values.mjs";
|
|
9
10
|
|
|
10
11
|
//#region src/eslint-plugin/index.js
|
|
11
12
|
const plugin = {
|
|
@@ -18,7 +19,8 @@ const plugin = {
|
|
|
18
19
|
[prefer_classnames_default.name]: prefer_classnames_default,
|
|
19
20
|
[require_prop_functions_default.name]: require_prop_functions_default,
|
|
20
21
|
[redundant_cx_default.name]: redundant_cx_default,
|
|
21
|
-
[prefer_token_values_default.name]: prefer_token_values_default
|
|
22
|
+
[prefer_token_values_default.name]: prefer_token_values_default,
|
|
23
|
+
[prefer_unitless_values_default.name]: prefer_unitless_values_default
|
|
22
24
|
}
|
|
23
25
|
};
|
|
24
26
|
const plugins = [plugin.meta.name];
|
|
@@ -43,7 +45,8 @@ const createConfig = (name, getRules) => ({
|
|
|
43
45
|
const getStylisticRules = (severity = "warn") => ({
|
|
44
46
|
[`${plugin.meta.name}/${format_classnames_default.name}`]: severity,
|
|
45
47
|
[`${plugin.meta.name}/${redundant_cx_default.name}`]: severity,
|
|
46
|
-
[`${plugin.meta.name}/${prefer_token_values_default.name}`]: severity
|
|
48
|
+
[`${plugin.meta.name}/${prefer_token_values_default.name}`]: severity,
|
|
49
|
+
[`${plugin.meta.name}/${prefer_unitless_values_default.name}`]: severity
|
|
47
50
|
});
|
|
48
51
|
const getCorrectnessRules = (severity = "error") => ({
|
|
49
52
|
[`${plugin.meta.name}/${no_unknown_classes_default.name}`]: severity,
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
const require_ast = require('../utils/ast.cjs');
|
|
2
|
+
const require_defaults = require('../utils/defaults.cjs');
|
|
3
|
+
const require_format = require('../utils/format.cjs');
|
|
4
|
+
const require_api = require('../utils/api.cjs');
|
|
5
|
+
const require_boss_classes = require('../utils/boss-classes.cjs');
|
|
6
|
+
|
|
7
|
+
//#region src/eslint-plugin/rules/prefer-unitless-values.js
|
|
8
|
+
const RULE_NAME = "prefer-unitless-values";
|
|
9
|
+
const defaultOptions = {
|
|
10
|
+
attributes: require_defaults.DEFAULT_ATTRIBUTE_PATTERNS,
|
|
11
|
+
callees: require_defaults.DEFAULT_CALLEE_PATTERNS,
|
|
12
|
+
variables: require_defaults.DEFAULT_VARIABLE_PATTERNS,
|
|
13
|
+
tags: require_defaults.DEFAULT_TAG_PATTERNS,
|
|
14
|
+
additionalProps: [],
|
|
15
|
+
unit: null
|
|
16
|
+
};
|
|
17
|
+
const createPatterns = (options) => ({
|
|
18
|
+
attributes: require_ast.compilePatterns(options.attributes),
|
|
19
|
+
callees: require_ast.compilePatterns(options.callees),
|
|
20
|
+
variables: require_ast.compilePatterns(options.variables),
|
|
21
|
+
tags: require_ast.compilePatterns(options.tags)
|
|
22
|
+
});
|
|
23
|
+
const normalizeUnit = (value) => {
|
|
24
|
+
if (typeof value !== "string") return null;
|
|
25
|
+
const trimmed = value.trim();
|
|
26
|
+
return trimmed.length ? trimmed : null;
|
|
27
|
+
};
|
|
28
|
+
const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
29
|
+
const createUnitValuePattern = (unit) => new RegExp(`(^|_)([+-]?(?:\\d*\\.\\d+|\\d+))${escapeRegExp(unit)}(?=(_|$))`, "g");
|
|
30
|
+
const stripDefaultUnitSuffixes = (rawValue, unit, pattern = createUnitValuePattern(unit)) => {
|
|
31
|
+
if (!rawValue || !unit) return null;
|
|
32
|
+
let changed = false;
|
|
33
|
+
const nextValue = rawValue.replace(pattern, (_, prefix, numberValue) => {
|
|
34
|
+
changed = true;
|
|
35
|
+
return `${prefix}${numberValue}`;
|
|
36
|
+
});
|
|
37
|
+
return changed ? nextValue : null;
|
|
38
|
+
};
|
|
39
|
+
const getSimpleTokenValueInfo = (token, extraProps) => {
|
|
40
|
+
const fragments = require_boss_classes.splitFragments(token);
|
|
41
|
+
if (!fragments.length) return null;
|
|
42
|
+
let propIndex = -1;
|
|
43
|
+
for (let i = 0; i < fragments.length; i += 1) if (require_boss_classes.isCssPropName(fragments[i], extraProps)) {
|
|
44
|
+
propIndex = i;
|
|
45
|
+
break;
|
|
46
|
+
}
|
|
47
|
+
if (propIndex === -1 || propIndex >= fragments.length - 1) return null;
|
|
48
|
+
return {
|
|
49
|
+
prop: fragments[propIndex],
|
|
50
|
+
value: fragments.slice(propIndex + 1).join(":"),
|
|
51
|
+
prefix: fragments.slice(0, propIndex + 1).join(":")
|
|
52
|
+
};
|
|
53
|
+
};
|
|
54
|
+
const rewriteGroupedToken = (token, unit, extraProps, pattern) => {
|
|
55
|
+
const grouped = require_boss_classes.parseGroupedSelector(token);
|
|
56
|
+
if (!grouped) return null;
|
|
57
|
+
let changed = false;
|
|
58
|
+
const entries = [];
|
|
59
|
+
const issues = [];
|
|
60
|
+
for (const entry of grouped.entries) {
|
|
61
|
+
const current = entry.rawValue;
|
|
62
|
+
const nextValue = require_boss_classes.isCssPropName(entry.name, extraProps) ? stripDefaultUnitSuffixes(current, unit, pattern) : null;
|
|
63
|
+
if (!nextValue) {
|
|
64
|
+
entries.push(entry);
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
changed = true;
|
|
68
|
+
entries.push({
|
|
69
|
+
...entry,
|
|
70
|
+
rawValue: nextValue
|
|
71
|
+
});
|
|
72
|
+
issues.push({
|
|
73
|
+
prop: entry.name,
|
|
74
|
+
value: current,
|
|
75
|
+
nextValue
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
if (!changed) return null;
|
|
79
|
+
return {
|
|
80
|
+
nextToken: `${grouped.prefix}:{${entries.map((entry) => `${entry.name}:${entry.rawValue}`).join(";")}}`,
|
|
81
|
+
issues
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
const rewriteSimpleToken = (token, unit, extraProps, pattern) => {
|
|
85
|
+
const valueInfo = getSimpleTokenValueInfo(token, extraProps);
|
|
86
|
+
if (!valueInfo) return null;
|
|
87
|
+
const nextValue = stripDefaultUnitSuffixes(valueInfo.value, unit, pattern);
|
|
88
|
+
if (!nextValue) return null;
|
|
89
|
+
return {
|
|
90
|
+
nextToken: `${valueInfo.prefix}:${nextValue}`,
|
|
91
|
+
issues: [{
|
|
92
|
+
prop: valueInfo.prop,
|
|
93
|
+
value: valueInfo.value,
|
|
94
|
+
nextValue
|
|
95
|
+
}]
|
|
96
|
+
};
|
|
97
|
+
};
|
|
98
|
+
const rewriteTokenUnitValues = (token, unit, extraProps, pattern = createUnitValuePattern(unit)) => rewriteGroupedToken(token, unit, extraProps, pattern) || rewriteSimpleToken(token, unit, extraProps, pattern);
|
|
99
|
+
const analyzeClassList = (classList, unit, extraProps) => {
|
|
100
|
+
const tokens = require_boss_classes.splitClassList(classList);
|
|
101
|
+
if (!tokens.length) return {
|
|
102
|
+
issues: [],
|
|
103
|
+
nextClassList: null
|
|
104
|
+
};
|
|
105
|
+
const pattern = createUnitValuePattern(unit);
|
|
106
|
+
let changed = false;
|
|
107
|
+
const issues = [];
|
|
108
|
+
const nextTokens = tokens.map((token) => {
|
|
109
|
+
const rewritten = rewriteTokenUnitValues(token, unit, extraProps, pattern);
|
|
110
|
+
if (!rewritten) return token;
|
|
111
|
+
changed = true;
|
|
112
|
+
issues.push(...rewritten.issues);
|
|
113
|
+
return rewritten.nextToken;
|
|
114
|
+
});
|
|
115
|
+
return {
|
|
116
|
+
issues,
|
|
117
|
+
nextClassList: changed ? nextTokens.join(" ") : null
|
|
118
|
+
};
|
|
119
|
+
};
|
|
120
|
+
const create = (context) => {
|
|
121
|
+
const sourceCode = context.getSourceCode();
|
|
122
|
+
const options = {
|
|
123
|
+
...defaultOptions,
|
|
124
|
+
...context.options[0] || {}
|
|
125
|
+
};
|
|
126
|
+
const patterns = createPatterns(options);
|
|
127
|
+
const extraProps = options.additionalProps?.length ? new Set(options.additionalProps) : null;
|
|
128
|
+
const { api } = require_api.getApi();
|
|
129
|
+
const unit = normalizeUnit(options.unit) || normalizeUnit(api?.unit) || "px";
|
|
130
|
+
if (!unit) return {};
|
|
131
|
+
const reportLiteral = (literal) => {
|
|
132
|
+
if (!literal || !literal.value) return;
|
|
133
|
+
const { issues, nextClassList } = analyzeClassList(literal.value, unit, extraProps);
|
|
134
|
+
if (!issues.length) return;
|
|
135
|
+
const preview = issues.slice(0, 3).map((issue) => `${issue.prop}:${issue.value} -> ${issue.prop}:${issue.nextValue}`).join(", ");
|
|
136
|
+
const remainder = issues.length > 3 ? ` (+${issues.length - 3} more)` : "";
|
|
137
|
+
context.report({
|
|
138
|
+
node: literal.node,
|
|
139
|
+
messageId: "preferUnitlessValues",
|
|
140
|
+
data: {
|
|
141
|
+
unit,
|
|
142
|
+
values: preview + remainder
|
|
143
|
+
},
|
|
144
|
+
fix: literal.canFix && nextClassList ? (fixer) => fixer.replaceText(literal.node, require_format.buildLiteralReplacement(literal.node, sourceCode, nextClassList)) : null
|
|
145
|
+
});
|
|
146
|
+
};
|
|
147
|
+
return {
|
|
148
|
+
JSXAttribute(node) {
|
|
149
|
+
const name = require_ast.getJSXAttributeName(node);
|
|
150
|
+
if (!name || !require_ast.matchesPattern(patterns.attributes, name)) return;
|
|
151
|
+
if (!node.value) return;
|
|
152
|
+
const literals = [];
|
|
153
|
+
require_ast.collectClassLiteralsFromExpression(node.value, sourceCode, literals);
|
|
154
|
+
for (const literal of literals) reportLiteral(literal);
|
|
155
|
+
},
|
|
156
|
+
CallExpression(node) {
|
|
157
|
+
const calleeName = require_ast.getCalleeName(node.callee);
|
|
158
|
+
if (!calleeName || !require_ast.matchesPattern(patterns.callees, calleeName)) return;
|
|
159
|
+
const literals = [];
|
|
160
|
+
for (const argument of node.arguments) require_ast.collectClassLiteralsFromExpression(argument, sourceCode, literals);
|
|
161
|
+
for (const literal of literals) reportLiteral(literal);
|
|
162
|
+
},
|
|
163
|
+
VariableDeclarator(node) {
|
|
164
|
+
if (!node.id || node.id.type !== "Identifier") return;
|
|
165
|
+
if (!require_ast.matchesPattern(patterns.variables, node.id.name)) return;
|
|
166
|
+
const literals = [];
|
|
167
|
+
require_ast.collectClassLiteralsFromExpression(node.init, sourceCode, literals);
|
|
168
|
+
for (const literal of literals) reportLiteral(literal);
|
|
169
|
+
},
|
|
170
|
+
TaggedTemplateExpression(node) {
|
|
171
|
+
const tagName = require_ast.getCalleeName(node.tag);
|
|
172
|
+
if (!tagName || !require_ast.matchesPattern(patterns.tags, tagName)) return;
|
|
173
|
+
const literal = require_ast.getLiteralInfo(node.quasi, sourceCode);
|
|
174
|
+
if (literal) reportLiteral(literal);
|
|
175
|
+
}
|
|
176
|
+
};
|
|
177
|
+
};
|
|
178
|
+
var prefer_unitless_values_default = {
|
|
179
|
+
name: RULE_NAME,
|
|
180
|
+
meta: {
|
|
181
|
+
type: "suggestion",
|
|
182
|
+
docs: { description: "Prefer unitless numeric class values for the configured default unit (for example border:1_solid over border:1px_solid)." },
|
|
183
|
+
fixable: "code",
|
|
184
|
+
schema: [{
|
|
185
|
+
type: "object",
|
|
186
|
+
additionalProperties: false,
|
|
187
|
+
properties: {
|
|
188
|
+
attributes: {
|
|
189
|
+
type: "array",
|
|
190
|
+
items: { type: "string" }
|
|
191
|
+
},
|
|
192
|
+
callees: {
|
|
193
|
+
type: "array",
|
|
194
|
+
items: { type: "string" }
|
|
195
|
+
},
|
|
196
|
+
variables: {
|
|
197
|
+
type: "array",
|
|
198
|
+
items: { type: "string" }
|
|
199
|
+
},
|
|
200
|
+
tags: {
|
|
201
|
+
type: "array",
|
|
202
|
+
items: { type: "string" }
|
|
203
|
+
},
|
|
204
|
+
additionalProps: {
|
|
205
|
+
type: "array",
|
|
206
|
+
items: { type: "string" }
|
|
207
|
+
},
|
|
208
|
+
unit: { type: "string" }
|
|
209
|
+
}
|
|
210
|
+
}],
|
|
211
|
+
messages: { preferUnitlessValues: "Avoid hardcoded \"{{unit}}\" in Boss class values: {{values}}." }
|
|
212
|
+
},
|
|
213
|
+
create
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
//#endregion
|
|
217
|
+
exports.default = prefer_unitless_values_default;
|