@uruhalushia/rule-converter-napi 0.1.3 → 0.2.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 +97 -46
- package/index.d.ts +63 -47
- package/index.js +17 -10
- package/package.json +13 -13
package/README.md
CHANGED
|
@@ -14,10 +14,14 @@ pnpm --dir napi build
|
|
|
14
14
|
```js
|
|
15
15
|
import { writeFileSync } from 'node:fs'
|
|
16
16
|
import {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
fileToBuf,
|
|
18
|
+
listAsnNumbers,
|
|
19
|
+
listGeoipCountries,
|
|
20
|
+
listGeoipDatCountries,
|
|
21
|
+
listGeositeCodes,
|
|
22
|
+
matchFile,
|
|
23
|
+
strToBuf,
|
|
24
|
+
strToStr,
|
|
21
25
|
} from '@uruhalushia/rule-converter-napi'
|
|
22
26
|
|
|
23
27
|
const payload = `
|
|
@@ -27,7 +31,7 @@ payload:
|
|
|
27
31
|
- IP-CIDR,192.168.1.0/24,no-resolve
|
|
28
32
|
`
|
|
29
33
|
|
|
30
|
-
const
|
|
34
|
+
const mrs = strToBuf(payload, {
|
|
31
35
|
inputTarget: 'mihomo',
|
|
32
36
|
inputFormat: 'yaml',
|
|
33
37
|
inputBehavior: 'classical',
|
|
@@ -36,11 +40,9 @@ const result = convertPayloadStringToMrs(payload, {
|
|
|
36
40
|
outputBehavior: 'domain',
|
|
37
41
|
})
|
|
38
42
|
|
|
39
|
-
|
|
40
|
-
writeFileSync(`${output.behavior}.mrs`, output.bytes)
|
|
41
|
-
}
|
|
43
|
+
writeFileSync('domain.mrs', mrs.outputs.domain)
|
|
42
44
|
|
|
43
|
-
const text =
|
|
45
|
+
const text = strToStr(payload, {
|
|
44
46
|
inputTarget: 'mihomo',
|
|
45
47
|
inputFormat: 'yaml',
|
|
46
48
|
inputBehavior: 'classical',
|
|
@@ -49,71 +51,120 @@ const text = convertPayloadStringToString(payload, {
|
|
|
49
51
|
outputBehavior: 'classical',
|
|
50
52
|
})
|
|
51
53
|
|
|
52
|
-
console.log(text.outputs
|
|
54
|
+
console.log(text.outputs.classical)
|
|
53
55
|
|
|
54
|
-
const srs =
|
|
56
|
+
const srs = fileToBuf('rules.yaml', {
|
|
55
57
|
outputTarget: 'sing-box',
|
|
56
58
|
outputFormat: 'srs',
|
|
57
59
|
outputBehavior: 'classical',
|
|
58
60
|
})
|
|
59
61
|
|
|
60
|
-
writeFileSync('
|
|
62
|
+
writeFileSync('classical.srs', srs.outputs.classical)
|
|
61
63
|
|
|
62
|
-
const
|
|
64
|
+
const geoip = fileToBuf('country.mmdb', {
|
|
65
|
+
inputTarget: 'geoip',
|
|
63
66
|
outputTarget: 'general',
|
|
64
|
-
outputFormat: '
|
|
65
|
-
|
|
67
|
+
outputFormat: 'ipset',
|
|
68
|
+
countries: ['cn'],
|
|
66
69
|
})
|
|
67
70
|
|
|
68
|
-
|
|
69
|
-
|
|
71
|
+
writeFileSync('cn.list', geoip.outputs.cn)
|
|
72
|
+
|
|
73
|
+
const singDb = fileToBuf('country.mmdb', {
|
|
74
|
+
inputTarget: 'geoip',
|
|
75
|
+
outputTarget: 'geoip',
|
|
76
|
+
outputFormat: 'sing-db',
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
writeFileSync('country.sing.db', singDb.outputs.db)
|
|
70
80
|
|
|
71
|
-
|
|
81
|
+
console.log(listGeoipCountries('country.mmdb'))
|
|
82
|
+
console.log(listGeoipDatCountries('geoip.dat'))
|
|
83
|
+
console.log(listGeositeCodes('geosite.dat'))
|
|
84
|
+
console.log(listAsnNumbers('GeoLite2-ASN.mmdb'))
|
|
85
|
+
```
|
|
72
86
|
|
|
73
87
|
```js
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
88
|
+
const match = matchFile('rules.list', 'ads.example.com', {
|
|
89
|
+
inputTarget: 'general',
|
|
90
|
+
inputFormat: 'text',
|
|
91
|
+
inputBehavior: 'classical',
|
|
78
92
|
})
|
|
93
|
+
console.log(match.matched, match.rules)
|
|
94
|
+
|
|
95
|
+
const route = matchFile('config.yaml', 'github.com')
|
|
96
|
+
console.log(route.matched, route.rules)
|
|
79
97
|
```
|
|
80
98
|
|
|
99
|
+
`outputs` is a name-keyed object. Rule output keys are usually behavior names such as `domain`, `ip`, or `classical`. DB export keys are country codes, ASN numbers, or `db` for a generated database.
|
|
100
|
+
|
|
81
101
|
## API
|
|
82
102
|
|
|
83
|
-
- `
|
|
84
|
-
- `
|
|
85
|
-
- `
|
|
86
|
-
- `
|
|
87
|
-
- `
|
|
88
|
-
- `
|
|
89
|
-
- `
|
|
90
|
-
- `
|
|
91
|
-
- `
|
|
92
|
-
- `
|
|
103
|
+
- `bufToBuf(input, options?)`: converts a `Uint8Array` payload and returns byte outputs.
|
|
104
|
+
- `strToBuf(input, options?)`: converts a string payload and returns byte outputs.
|
|
105
|
+
- `fileToBuf(input, options?)`: converts one input file path and returns byte outputs.
|
|
106
|
+
- `bufToStr(input, options?)`: converts a `Uint8Array` payload and returns UTF-8 text outputs.
|
|
107
|
+
- `strToStr(input, options?)`: converts a string payload and returns UTF-8 text outputs.
|
|
108
|
+
- `fileToStr(input, options?)`: converts one input file path and returns UTF-8 text outputs.
|
|
109
|
+
- `listGeoipCountries(input)`: reads a GeoIP MMDB file path and returns sorted country codes.
|
|
110
|
+
- `listGeoipCountriesFromBuffer(input)`: reads GeoIP MMDB bytes and returns sorted country codes.
|
|
111
|
+
- `listGeoipDatCountries(input)` / `listGeoipDatCountriesFromBuffer(input)`: reads V2Ray `geoip.dat` and returns sorted country codes.
|
|
112
|
+
- `listGeositeCodes(input)` / `listGeositeCodesFromBuffer(input)`: reads V2Ray `geosite.dat` and returns sorted site codes.
|
|
113
|
+
- `listAsnNumbers(input)`: reads an ASN MMDB file path and returns sorted ASN numbers.
|
|
114
|
+
- `listAsnNumbersFromBuffer(input)`: reads ASN MMDB bytes and returns sorted ASN numbers.
|
|
115
|
+
- `matchBuf(input, query, options?)` / `matchStr(input, query, options?)` / `matchFile(input, query, options?)`: matches a domain or IP against rules and returns `{ matched, query, kind, rules }`. Mihomo config input is supported for provider `path`, `file://`, and HTTP(S) `url`. HTTP providers are downloaded into memory for matching.
|
|
93
116
|
|
|
94
117
|
```ts
|
|
95
|
-
interface
|
|
96
|
-
inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box'
|
|
97
|
-
inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs'
|
|
118
|
+
interface AnyConvertOptions {
|
|
119
|
+
inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
|
|
120
|
+
inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset' | 'mmdb' | 'sing-db' | 'metadb' | 'dat'
|
|
98
121
|
inputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
|
|
99
|
-
outputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box'
|
|
100
|
-
outputFormat?: 'mrs' | 'text' | 'yaml' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset'
|
|
101
|
-
outputBehavior?: 'domain' | 'ip' | 'classical'
|
|
122
|
+
outputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
|
|
123
|
+
outputFormat?: 'mrs' | 'text' | 'yaml' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset' | 'mmdb' | 'sing-db' | 'metadb' | 'dat'
|
|
124
|
+
outputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
|
|
125
|
+
countries?: string[]
|
|
126
|
+
codes?: string[]
|
|
127
|
+
asns?: number[]
|
|
128
|
+
split?: boolean
|
|
129
|
+
country?: string
|
|
130
|
+
code?: string
|
|
131
|
+
asn?: number
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
interface AnyBufferResult {
|
|
135
|
+
kind: 'rules' | 'db'
|
|
136
|
+
outputs: Record<string, Uint8Array>
|
|
137
|
+
info: Record<string, AnyOutputInfo>
|
|
138
|
+
skipped: SkippedRule[]
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
interface AnyStringResult {
|
|
142
|
+
kind: 'rules' | 'db'
|
|
143
|
+
outputs: Record<string, string>
|
|
144
|
+
info: Record<string, AnyOutputInfo>
|
|
145
|
+
skipped: SkippedRule[]
|
|
102
146
|
}
|
|
103
147
|
```
|
|
104
148
|
|
|
105
149
|
Defaults:
|
|
106
150
|
|
|
107
|
-
- `inputTarget`: auto-detected
|
|
151
|
+
- `inputTarget`: auto-detected rule input unless set to `geoip`, `geosite`, or `asn`
|
|
108
152
|
- `inputFormat`: auto-detected
|
|
109
153
|
- `inputBehavior`: `auto`
|
|
110
|
-
- `outputTarget`: `mihomo`
|
|
111
|
-
- `outputFormat`: `mrs`
|
|
112
|
-
- `outputBehavior`:
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
154
|
+
- `outputTarget`: `mihomo` for rule input, `general` for DB-to-rules export, or the same DB target for DB conversion
|
|
155
|
+
- `outputFormat`: `mrs` for rule input, `ipset` for DB-to-rules export, or `mmdb` for DB conversion
|
|
156
|
+
- `outputBehavior`: selected from the target/format default
|
|
157
|
+
- `split`: `true` for DB-to-rules export
|
|
158
|
+
|
|
159
|
+
DB conversions use the same functions as rule conversions:
|
|
160
|
+
|
|
161
|
+
- `inputTarget: 'geoip'`, `outputTarget: 'general' | 'mihomo' | 'egern' | 'sing-box'` exports GeoIP contents as rule sets.
|
|
162
|
+
- `inputTarget: 'asn'`, `outputTarget: 'general' | 'mihomo' | 'egern' | 'sing-box'` exports ASN contents as rule sets.
|
|
163
|
+
- `inputTarget: 'geoip'`, `outputTarget: 'geoip'` converts GeoIP DB bytes between `mmdb`, `sing-db`, `metadb`, and V2Ray `dat`.
|
|
164
|
+
- `inputTarget: 'geosite'`, `outputTarget: 'general' | 'mihomo' | 'egern' | 'sing-box'` exports V2Ray `geosite.dat` as rule sets.
|
|
165
|
+
- `inputTarget: 'geosite'`, `outputTarget: 'geosite'` filters or normalizes V2Ray `geosite.dat`; geosite DB only supports `dat`.
|
|
166
|
+
- `inputTarget: 'asn'`, `outputTarget: 'asn'` normalizes ASN MMDB bytes. ASN DB output only supports `mmdb`.
|
|
167
|
+
- Rule input can build DB output with `outputTarget: 'geoip'` plus `country`, `outputTarget: 'geosite'` plus `code`, or `outputTarget: 'asn'` plus `asn`.
|
|
117
168
|
|
|
118
169
|
`mihomo + text/yaml + domain` uses mihomo/Clash domain wildcard syntax such as `+.example.com`; `general + domainset + domain` uses domain-set syntax where `.example.com` means the domain itself and all subdomains.
|
|
119
170
|
|
package/index.d.ts
CHANGED
|
@@ -1,65 +1,82 @@
|
|
|
1
1
|
/* auto-generated by NAPI-RS */
|
|
2
2
|
/* eslint-disable */
|
|
3
|
-
export interface
|
|
4
|
-
|
|
3
|
+
export interface AnyBufferResult {
|
|
4
|
+
kind: 'rules' | 'db'
|
|
5
|
+
outputs: Record<string, Uint8Array>
|
|
6
|
+
info: Record<string, AnyOutputInfo>
|
|
7
|
+
skipped: Array<SkippedRule>
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export interface AnyConvertOptions {
|
|
11
|
+
inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
|
|
12
|
+
inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset' | 'mmdb' | 'sing-db' | 'metadb' | 'dat'
|
|
13
|
+
inputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
|
|
14
|
+
outputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
|
|
15
|
+
outputFormat?: 'mrs' | 'text' | 'yaml' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset' | 'mmdb' | 'sing-db' | 'metadb' | 'dat'
|
|
16
|
+
outputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
|
|
17
|
+
countries?: Array<string>
|
|
18
|
+
codes?: Array<string>
|
|
19
|
+
asns?: Array<number>
|
|
20
|
+
split?: boolean
|
|
21
|
+
country?: string
|
|
22
|
+
code?: string
|
|
23
|
+
asn?: number
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
export interface AnyOutputInfo {
|
|
27
|
+
behavior?: string
|
|
28
|
+
format: string
|
|
5
29
|
count: number
|
|
6
|
-
buffer: Uint8Array
|
|
7
30
|
}
|
|
8
31
|
|
|
9
|
-
export interface
|
|
10
|
-
|
|
32
|
+
export interface AnyStringResult {
|
|
33
|
+
kind: 'rules' | 'db'
|
|
34
|
+
outputs: Record<string, string>
|
|
35
|
+
info: Record<string, AnyOutputInfo>
|
|
11
36
|
skipped: Array<SkippedRule>
|
|
12
37
|
}
|
|
13
38
|
|
|
14
|
-
export declare function
|
|
39
|
+
export declare function bufToBuf(input: Uint8Array, options?: AnyConvertOptions | undefined | null): AnyBufferResult
|
|
15
40
|
|
|
16
|
-
export declare function
|
|
41
|
+
export declare function bufToStr(input: Uint8Array, options?: AnyConvertOptions | undefined | null): AnyStringResult
|
|
17
42
|
|
|
18
|
-
export declare function
|
|
43
|
+
export declare function fileToBuf(input: string, options?: AnyConvertOptions | undefined | null): AnyBufferResult
|
|
19
44
|
|
|
20
|
-
export declare function
|
|
45
|
+
export declare function fileToStr(input: string, options?: AnyConvertOptions | undefined | null): AnyStringResult
|
|
21
46
|
|
|
22
|
-
export
|
|
23
|
-
inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box'
|
|
24
|
-
inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs'
|
|
25
|
-
inputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
|
|
26
|
-
outputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box'
|
|
27
|
-
outputFormat?: 'mrs' | 'text' | 'yaml' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset'
|
|
28
|
-
outputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
|
|
29
|
-
}
|
|
47
|
+
export declare function listAsnNumbers(input: string): Array<number>
|
|
30
48
|
|
|
31
|
-
export
|
|
32
|
-
behavior: 'domain' | 'ip'
|
|
33
|
-
count: number
|
|
34
|
-
bytes: Uint8Array
|
|
35
|
-
}
|
|
49
|
+
export declare function listAsnNumbersFromBuffer(input: Uint8Array): Array<number>
|
|
36
50
|
|
|
37
|
-
export declare function
|
|
51
|
+
export declare function listGeoipCountries(input: string): Array<string>
|
|
38
52
|
|
|
39
|
-
export declare function
|
|
53
|
+
export declare function listGeoipCountriesFromBuffer(input: Uint8Array): Array<string>
|
|
40
54
|
|
|
41
|
-
export declare function
|
|
55
|
+
export declare function listGeoipDatCountries(input: string): Array<string>
|
|
42
56
|
|
|
43
|
-
export declare function
|
|
57
|
+
export declare function listGeoipDatCountriesFromBuffer(input: Uint8Array): Array<string>
|
|
44
58
|
|
|
45
|
-
export declare function
|
|
59
|
+
export declare function listGeositeCodes(input: string): Array<string>
|
|
46
60
|
|
|
47
|
-
export declare function
|
|
61
|
+
export declare function listGeositeCodesFromBuffer(input: Uint8Array): Array<string>
|
|
48
62
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
63
|
+
|
|
64
|
+
export interface MatchOptions {
|
|
65
|
+
inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box'
|
|
66
|
+
inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset'
|
|
67
|
+
inputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
|
|
52
68
|
}
|
|
53
69
|
|
|
54
|
-
export interface
|
|
55
|
-
behavior:
|
|
56
|
-
|
|
57
|
-
text: string
|
|
70
|
+
export interface MatchRule {
|
|
71
|
+
behavior: string
|
|
72
|
+
rule: string
|
|
58
73
|
}
|
|
59
74
|
|
|
60
|
-
export interface
|
|
61
|
-
|
|
62
|
-
|
|
75
|
+
export interface MatchResult {
|
|
76
|
+
matched: boolean
|
|
77
|
+
query: string
|
|
78
|
+
kind: string
|
|
79
|
+
rules: Array<MatchRule>
|
|
63
80
|
}
|
|
64
81
|
|
|
65
82
|
export interface SkippedRule {
|
|
@@ -67,13 +84,12 @@ export interface SkippedRule {
|
|
|
67
84
|
reason: string
|
|
68
85
|
}
|
|
69
86
|
|
|
70
|
-
export
|
|
71
|
-
outputs: Array<WrittenOutput>
|
|
72
|
-
skipped: Array<SkippedRule>
|
|
73
|
-
}
|
|
87
|
+
export declare function strToBuf(input: string, options?: AnyConvertOptions | undefined | null): AnyBufferResult
|
|
74
88
|
|
|
75
|
-
export
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
89
|
+
export declare function strToStr(input: string, options?: AnyConvertOptions | undefined | null): AnyStringResult
|
|
90
|
+
|
|
91
|
+
export declare function matchBuf(input: Uint8Array, query: string, options?: MatchOptions | undefined | null): MatchResult
|
|
92
|
+
|
|
93
|
+
export declare function matchStr(input: string, query: string, options?: MatchOptions | undefined | null): MatchResult
|
|
94
|
+
|
|
95
|
+
export declare function matchFile(input: string, query: string, options?: MatchOptions | undefined | null): MatchResult
|
package/index.js
CHANGED
|
@@ -92,13 +92,20 @@ if (!nativeBinding) {
|
|
|
92
92
|
}
|
|
93
93
|
|
|
94
94
|
export default nativeBinding
|
|
95
|
-
export const
|
|
96
|
-
export const
|
|
97
|
-
export const
|
|
98
|
-
export const
|
|
99
|
-
export const
|
|
100
|
-
export const
|
|
101
|
-
export const
|
|
102
|
-
export const
|
|
103
|
-
export const
|
|
104
|
-
export const
|
|
95
|
+
export const bufToBuf = nativeBinding.bufToBuf
|
|
96
|
+
export const strToBuf = nativeBinding.strToBuf
|
|
97
|
+
export const fileToBuf = nativeBinding.fileToBuf
|
|
98
|
+
export const bufToStr = nativeBinding.bufToStr
|
|
99
|
+
export const strToStr = nativeBinding.strToStr
|
|
100
|
+
export const fileToStr = nativeBinding.fileToStr
|
|
101
|
+
export const listGeoipCountries = nativeBinding.listGeoipCountries
|
|
102
|
+
export const listGeoipCountriesFromBuffer = nativeBinding.listGeoipCountriesFromBuffer
|
|
103
|
+
export const listGeoipDatCountries = nativeBinding.listGeoipDatCountries
|
|
104
|
+
export const listGeoipDatCountriesFromBuffer = nativeBinding.listGeoipDatCountriesFromBuffer
|
|
105
|
+
export const listGeositeCodes = nativeBinding.listGeositeCodes
|
|
106
|
+
export const listGeositeCodesFromBuffer = nativeBinding.listGeositeCodesFromBuffer
|
|
107
|
+
export const listAsnNumbers = nativeBinding.listAsnNumbers
|
|
108
|
+
export const listAsnNumbersFromBuffer = nativeBinding.listAsnNumbersFromBuffer
|
|
109
|
+
export const matchBuf = nativeBinding.matchBuf
|
|
110
|
+
export const matchStr = nativeBinding.matchStr
|
|
111
|
+
export const matchFile = nativeBinding.matchFile
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@uruhalushia/rule-converter-napi",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Node.js bindings for converting mihomo, sing-box, Egern, and generic rule sets.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -51,17 +51,17 @@
|
|
|
51
51
|
"@napi-rs/cli": "^3"
|
|
52
52
|
},
|
|
53
53
|
"optionalDependencies": {
|
|
54
|
-
"@uruhalushia/rule-converter-napi-linux-x64-gnu": "0.
|
|
55
|
-
"@uruhalushia/rule-converter-napi-linux-arm64-gnu": "0.
|
|
56
|
-
"@uruhalushia/rule-converter-napi-linux-riscv64-gnu": "0.
|
|
57
|
-
"@uruhalushia/rule-converter-napi-linux-loong64-gnu": "0.
|
|
58
|
-
"@uruhalushia/rule-converter-napi-linux-x64-musl": "0.
|
|
59
|
-
"@uruhalushia/rule-converter-napi-linux-arm64-musl": "0.
|
|
60
|
-
"@uruhalushia/rule-converter-napi-linux-riscv64-musl": "0.
|
|
61
|
-
"@uruhalushia/rule-converter-napi-linux-loong64-musl": "0.
|
|
62
|
-
"@uruhalushia/rule-converter-napi-darwin-x64": "0.
|
|
63
|
-
"@uruhalushia/rule-converter-napi-darwin-arm64": "0.
|
|
64
|
-
"@uruhalushia/rule-converter-napi-win32-x64-msvc": "0.
|
|
65
|
-
"@uruhalushia/rule-converter-napi-win32-arm64-msvc": "0.
|
|
54
|
+
"@uruhalushia/rule-converter-napi-linux-x64-gnu": "0.2.0",
|
|
55
|
+
"@uruhalushia/rule-converter-napi-linux-arm64-gnu": "0.2.0",
|
|
56
|
+
"@uruhalushia/rule-converter-napi-linux-riscv64-gnu": "0.2.0",
|
|
57
|
+
"@uruhalushia/rule-converter-napi-linux-loong64-gnu": "0.2.0",
|
|
58
|
+
"@uruhalushia/rule-converter-napi-linux-x64-musl": "0.2.0",
|
|
59
|
+
"@uruhalushia/rule-converter-napi-linux-arm64-musl": "0.2.0",
|
|
60
|
+
"@uruhalushia/rule-converter-napi-linux-riscv64-musl": "0.2.0",
|
|
61
|
+
"@uruhalushia/rule-converter-napi-linux-loong64-musl": "0.2.0",
|
|
62
|
+
"@uruhalushia/rule-converter-napi-darwin-x64": "0.2.0",
|
|
63
|
+
"@uruhalushia/rule-converter-napi-darwin-arm64": "0.2.0",
|
|
64
|
+
"@uruhalushia/rule-converter-napi-win32-x64-msvc": "0.2.0",
|
|
65
|
+
"@uruhalushia/rule-converter-napi-win32-arm64-msvc": "0.2.0"
|
|
66
66
|
}
|
|
67
67
|
}
|