@uruhalushia/rule-converter-napi 0.1.3 → 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.
Files changed (4) hide show
  1. package/README.md +100 -46
  2. package/index.d.ts +84 -45
  3. package/index.js +19 -10
  4. package/package.json +13 -13
package/README.md CHANGED
@@ -14,10 +14,15 @@ pnpm --dir napi build
14
14
  ```js
15
15
  import { writeFileSync } from 'node:fs'
16
16
  import {
17
- convertPayloadStringToMrs,
18
- convertPayloadStringToString,
19
- convertFileToBuffer,
20
- convertFileToPath,
17
+ fileToBuf,
18
+ detectFile,
19
+ listAsnNumbers,
20
+ listGeoipCountries,
21
+ listGeoipDatCountries,
22
+ listGeositeCodes,
23
+ matchFile,
24
+ strToBuf,
25
+ strToStr,
21
26
  } from '@uruhalushia/rule-converter-napi'
22
27
 
23
28
  const payload = `
@@ -27,7 +32,7 @@ payload:
27
32
  - IP-CIDR,192.168.1.0/24,no-resolve
28
33
  `
29
34
 
30
- const result = convertPayloadStringToMrs(payload, {
35
+ const mrs = strToBuf(payload, {
31
36
  inputTarget: 'mihomo',
32
37
  inputFormat: 'yaml',
33
38
  inputBehavior: 'classical',
@@ -36,11 +41,9 @@ const result = convertPayloadStringToMrs(payload, {
36
41
  outputBehavior: 'domain',
37
42
  })
38
43
 
39
- for (const output of result.outputs) {
40
- writeFileSync(`${output.behavior}.mrs`, output.bytes)
41
- }
44
+ writeFileSync('domain.mrs', mrs.outputs.domain)
42
45
 
43
- const text = convertPayloadStringToString(payload, {
46
+ const text = strToStr(payload, {
44
47
  inputTarget: 'mihomo',
45
48
  inputFormat: 'yaml',
46
49
  inputBehavior: 'classical',
@@ -49,71 +52,122 @@ const text = convertPayloadStringToString(payload, {
49
52
  outputBehavior: 'classical',
50
53
  })
51
54
 
52
- console.log(text.outputs[0].text)
55
+ console.log(text.outputs.classical)
53
56
 
54
- const srs = convertFileToBuffer('rules.yaml', {
57
+ const srs = fileToBuf('rules.yaml', {
55
58
  outputTarget: 'sing-box',
56
59
  outputFormat: 'srs',
57
60
  outputBehavior: 'classical',
58
61
  })
59
62
 
60
- writeFileSync('rules.srs', srs.outputs[0].buffer)
63
+ writeFileSync('classical.srs', srs.outputs.classical)
61
64
 
62
- const written = convertFileToPath('rules.yaml', 'dist/rules.list', {
65
+ const geoip = fileToBuf('country.mmdb', {
66
+ inputTarget: 'geoip',
63
67
  outputTarget: 'general',
64
- outputFormat: 'ruleset',
65
- outputBehavior: 'classical',
68
+ outputFormat: 'ipset',
69
+ countries: ['cn'],
66
70
  })
67
71
 
68
- console.log(written.outputs)
69
- ```
72
+ writeFileSync('cn.list', geoip.outputs.cn)
73
+
74
+ const singDb = fileToBuf('country.mmdb', {
75
+ inputTarget: 'geoip',
76
+ outputTarget: 'geoip',
77
+ outputFormat: 'sing-db',
78
+ })
79
+
80
+ writeFileSync('country.sing.db', singDb.outputs.db)
70
81
 
71
- Multiple files can be merged by passing a path array, a directory path, or a final-component `*` wildcard:
82
+ console.log(listGeoipCountries('country.mmdb'))
83
+ console.log(listGeoipDatCountries('geoip.dat'))
84
+ console.log(listGeositeCodes('geosite.dat'))
85
+ console.log(listAsnNumbers('GeoLite2-ASN.mmdb'))
86
+ console.log(detectFile('geosite.dat'))
87
+ ```
72
88
 
73
89
  ```js
74
- convertFileToPath(['/path/rules-a.yaml', '/path/rules-b.yaml'], 'dist/ad.mrs', {
75
- outputTarget: 'mihomo',
76
- outputFormat: 'mrs',
77
- outputBehavior: 'domain',
90
+ const match = matchFile('rules.list', 'ads.example.com', {
91
+ inputTarget: 'general',
92
+ inputFormat: 'text',
93
+ inputBehavior: 'classical',
78
94
  })
95
+ console.log(match.matched, match.rules)
96
+
97
+ const route = matchFile('config.yaml', 'github.com')
98
+ console.log(route.matched, route.rules)
79
99
  ```
80
100
 
101
+ `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.
102
+
81
103
  ## API
82
104
 
83
- - `convertPayloadToMrs(payload, options?)`: accepts `Uint8Array` and returns generated MRS files in memory.
84
- - `convertPayloadStringToMrs(payload, options?)`: accepts a string and returns generated MRS files in memory.
85
- - `convertFileToMrs(input, options?)`: reads one file, directory, wildcard, or path array and returns generated MRS files in memory.
86
- - `convertPayloadToBuffer(payload, options?)`: accepts `Uint8Array` and returns generated files as Node.js `Buffer` objects in memory.
87
- - `convertPayloadStringToBuffer(payload, options?)`: accepts a string and returns generated files as Node.js `Buffer` objects in memory.
88
- - `convertFileToBuffer(input, options?)`: reads one file, directory, wildcard, or path array and returns generated files as Node.js `Buffer` objects in memory.
89
- - `convertPayloadToString(payload, options?)`: accepts `Uint8Array` and returns generated text output as strings.
90
- - `convertPayloadStringToString(payload, options?)`: accepts a string and returns generated text output as strings.
91
- - `convertFileToString(input, options?)`: reads one file, directory, wildcard, or path array and returns generated text output as strings.
92
- - `convertFileToPath(input, output, options?)`: writes converted outputs to disk.
105
+ - `bufToBuf(input, options?)`: converts a `Uint8Array` payload and returns byte outputs.
106
+ - `strToBuf(input, options?)`: converts a string payload and returns byte outputs.
107
+ - `fileToBuf(input, options?)`: converts one input file path and returns byte outputs.
108
+ - `bufToStr(input, options?)`: converts a `Uint8Array` payload and returns UTF-8 text outputs.
109
+ - `strToStr(input, options?)`: converts a string payload and returns UTF-8 text outputs.
110
+ - `fileToStr(input, options?)`: converts one input file path and returns UTF-8 text outputs.
111
+ - `detectBuf(input)` / `detectStr(input)` / `detectFile(input)`: returns `{ kind, target, format, behavior }` without converting input.
112
+ - `listGeoipCountries(input)`: reads a GeoIP MMDB file path and returns sorted country codes.
113
+ - `listGeoipCountriesFromBuffer(input)`: reads GeoIP MMDB bytes and returns sorted country codes.
114
+ - `listGeoipDatCountries(input)` / `listGeoipDatCountriesFromBuffer(input)`: reads V2Ray `geoip.dat` and returns sorted country codes.
115
+ - `listGeositeCodes(input)` / `listGeositeCodesFromBuffer(input)`: reads V2Ray `geosite.dat` or sing-geosite DB and returns sorted site codes.
116
+ - `listAsnNumbers(input)`: reads an ASN MMDB file path and returns sorted ASN numbers.
117
+ - `listAsnNumbersFromBuffer(input)`: reads ASN MMDB bytes and returns sorted ASN numbers.
118
+ - `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
119
 
94
120
  ```ts
95
- interface ConvertOptions {
96
- inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box'
97
- inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs'
121
+ interface AnyConvertOptions {
122
+ inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
123
+ inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset' | 'mmdb' | 'sing-db' | 'metadb' | 'dat' | 'sing-geosite'
98
124
  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'
125
+ outputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
126
+ outputFormat?: 'mrs' | 'text' | 'yaml' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset' | 'mmdb' | 'sing-db' | 'metadb' | 'dat' | 'sing-geosite'
127
+ outputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
128
+ countries?: string[]
129
+ codes?: string[]
130
+ asns?: number[]
131
+ split?: boolean
132
+ country?: string
133
+ code?: string
134
+ asn?: number
135
+ }
136
+
137
+ interface AnyBufferResult {
138
+ kind: 'rules' | 'db'
139
+ outputs: Record<string, Uint8Array>
140
+ info: Record<string, AnyOutputInfo>
141
+ skipped: SkippedRule[]
142
+ }
143
+
144
+ interface AnyStringResult {
145
+ kind: 'rules' | 'db'
146
+ outputs: Record<string, string>
147
+ info: Record<string, AnyOutputInfo>
148
+ skipped: SkippedRule[]
102
149
  }
103
150
  ```
104
151
 
105
152
  Defaults:
106
153
 
107
- - `inputTarget`: auto-detected
154
+ - `inputTarget`: auto-detected rule input unless set to `geoip`, `geosite`, or `asn`
108
155
  - `inputFormat`: auto-detected
109
156
  - `inputBehavior`: `auto`
110
- - `outputTarget`: `mihomo`
111
- - `outputFormat`: `mrs`
112
- - `outputBehavior`: `domain`
113
-
114
- mihomo MRS output supports only `domain` and `ip`. sing-box JSON/SRS is available with `outputTarget: 'sing-box'` and `outputFormat: 'json' | 'srs'`.
115
-
116
- String output supports text formats only: `text`, `yaml`, `json`, `domainset`, `ruleset`, and `ipset`. Use the buffer functions for binary `mrs` and `srs` output.
157
+ - `outputTarget`: `mihomo` for rule input, `general` for DB-to-rules export, or the same DB target for DB conversion
158
+ - `outputFormat`: `mrs` for rule input, `ipset` for DB-to-rules export, or `mmdb` for DB conversion
159
+ - `outputBehavior`: selected from the target/format default
160
+ - `split`: `true` for DB-to-rules export
161
+
162
+ DB conversions use the same functions as rule conversions:
163
+
164
+ - `inputTarget: 'geoip'`, `outputTarget: 'general' | 'mihomo' | 'egern' | 'sing-box'` exports GeoIP contents as rule sets.
165
+ - `inputTarget: 'asn'`, `outputTarget: 'general' | 'mihomo' | 'egern' | 'sing-box'` exports ASN contents as rule sets.
166
+ - `inputTarget: 'geoip'`, `outputTarget: 'geoip'` converts GeoIP DB bytes between `mmdb`, `sing-db`, `metadb`, and V2Ray `dat`.
167
+ - `inputTarget: 'geosite'`, `outputTarget: 'general' | 'mihomo' | 'egern' | 'sing-box'` exports V2Ray `geosite.dat` or sing-geosite DB as rule sets.
168
+ - `inputTarget: 'geosite'`, `outputTarget: 'geosite'` converts and filters geosite DB between `dat` and `sing-geosite`.
169
+ - `inputTarget: 'asn'`, `outputTarget: 'asn'` normalizes ASN MMDB bytes. ASN DB output only supports `mmdb`.
170
+ - Rule input can build DB output with `outputTarget: 'geoip'` plus `country`, `outputTarget: 'geosite'` plus `code`, or `outputTarget: 'asn'` plus `asn`.
117
171
 
118
172
  `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
173
 
package/index.d.ts CHANGED
@@ -1,79 +1,118 @@
1
1
  /* auto-generated by NAPI-RS */
2
2
  /* eslint-disable */
3
- export interface ConvertBufferOutput {
4
- behavior: 'domain' | 'ip'
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' | 'sing-geosite'
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' | 'sing-geosite'
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 ConvertBufferResult {
10
- outputs: Array<ConvertBufferOutput>
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 convertFileToBuffer(input: string | string[], options?: ConvertOptions | undefined | null): ConvertBufferResult
39
+ export declare function bufToBuf(input: Uint8Array, options?: AnyConvertOptions | undefined | null): AnyBufferResult
15
40
 
16
- export declare function convertFileToMrs(input: string | string[], options?: ConvertOptions | undefined | null): ConvertResult
41
+ export declare function bufToStr(input: Uint8Array, options?: AnyConvertOptions | undefined | null): AnyStringResult
17
42
 
18
- export declare function convertFileToPath(input: string | string[], output: string, options?: ConvertOptions | undefined | null): WriteResult
43
+ export declare function detectBuf(input: Uint8Array): DetectResult
19
44
 
20
- export declare function convertFileToString(input: string | string[], options?: ConvertOptions | undefined | null): ConvertStringResult
45
+ export declare function detectFile(input: string): DetectResult
21
46
 
22
- export interface ConvertOptions {
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'
47
+ export interface DetectResult {
48
+ kind: 'rules' | 'db'
49
+ target: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
50
+ format: string
51
+ behavior?: string
29
52
  }
30
53
 
31
- export interface ConvertOutput {
32
- behavior: 'domain' | 'ip'
33
- count: number
34
- bytes: Uint8Array
54
+ export declare function detectStr(input: string): DetectResult
55
+
56
+ export declare function fileToBuf(input: string, options?: AnyConvertOptions | undefined | null): AnyBufferResult
57
+
58
+ export declare function fileToStr(input: string, options?: AnyConvertOptions | undefined | null): AnyStringResult
59
+
60
+ export interface IndexSection {
61
+ title: string
62
+ items: Array<string>
35
63
  }
36
64
 
37
- export declare function convertPayloadStringToBuffer(payload: string, options?: ConvertOptions | undefined | null): ConvertBufferResult
65
+ export declare function listAsnNumbers(input: string): Array<number>
38
66
 
39
- export declare function convertPayloadStringToMrs(payload: string, options?: ConvertOptions | undefined | null): ConvertResult
67
+ export declare function listAsnNumbersFromBuffer(input: Uint8Array): Array<number>
40
68
 
41
- export declare function convertPayloadStringToString(payload: string, options?: ConvertOptions | undefined | null): ConvertStringResult
69
+ export declare function listGeoipCountries(input: string): Array<string>
42
70
 
43
- export declare function convertPayloadToBuffer(payload: Uint8Array, options?: ConvertOptions | undefined | null): ConvertBufferResult
71
+ export declare function listGeoipCountriesFromBuffer(input: Uint8Array): Array<string>
44
72
 
45
- export declare function convertPayloadToMrs(payload: Uint8Array, options?: ConvertOptions | undefined | null): ConvertResult
73
+ export declare function listGeoipDatCountries(input: string): Array<string>
46
74
 
47
- export declare function convertPayloadToString(payload: Uint8Array, options?: ConvertOptions | undefined | null): ConvertStringResult
75
+ export declare function listGeoipDatCountriesFromBuffer(input: Uint8Array): Array<string>
48
76
 
49
- export interface ConvertResult {
50
- outputs: Array<ConvertOutput>
51
- skipped: Array<SkippedRule>
77
+ export declare function listGeositeCodes(input: string): Array<string>
78
+
79
+ export declare function listGeositeCodesFromBuffer(input: Uint8Array): Array<string>
80
+
81
+ export declare function listIndexes(input: string): Array<IndexSection>
82
+
83
+ export declare function listIndexesFromBuffer(input: Uint8Array): Array<IndexSection>
84
+
85
+ export declare function matchBuf(input: Uint8Array, query: string, options?: MatchOptions | undefined | null): MatchResult
86
+
87
+ export declare function matchFile(input: string, query: string, options?: MatchOptions | undefined | null): MatchResult
88
+
89
+ export interface MatchOptions {
90
+ inputTarget?: 'mihomo' | 'general' | 'egern' | 'sing-box' | 'geoip' | 'geosite' | 'asn'
91
+ inputFormat?: 'yaml' | 'mrs' | 'text' | 'json' | 'srs' | 'domainset' | 'ruleset' | 'ipset' | 'dat' | 'sing-geosite' | 'mmdb' | 'sing-db' | 'metadb'
92
+ inputBehavior?: 'auto' | 'domain' | 'ip' | 'classical'
52
93
  }
53
94
 
54
- export interface ConvertStringOutput {
55
- behavior: 'domain' | 'ip'
56
- count: number
57
- text: string
95
+ export interface MatchResult {
96
+ matched: boolean
97
+ query: string
98
+ kind: string
99
+ rules: Array<MatchRule>
58
100
  }
59
101
 
60
- export interface ConvertStringResult {
61
- outputs: Array<ConvertStringOutput>
62
- skipped: Array<SkippedRule>
102
+ export interface MatchRule {
103
+ behavior: string
104
+ rule: string
105
+ source?: string
106
+ set?: string
63
107
  }
64
108
 
109
+ export declare function matchStr(input: string, query: string, options?: MatchOptions | undefined | null): MatchResult
110
+
65
111
  export interface SkippedRule {
66
112
  rule: string
67
113
  reason: string
68
114
  }
69
115
 
70
- export interface WriteResult {
71
- outputs: Array<WrittenOutput>
72
- skipped: Array<SkippedRule>
73
- }
116
+ export declare function strToBuf(input: string, options?: AnyConvertOptions | undefined | null): AnyBufferResult
74
117
 
75
- export interface WrittenOutput {
76
- behavior: 'domain' | 'ip'
77
- count: number
78
- path: string
79
- }
118
+ export declare function strToStr(input: string, options?: AnyConvertOptions | undefined | null): AnyStringResult
package/index.js CHANGED
@@ -92,13 +92,22 @@ if (!nativeBinding) {
92
92
  }
93
93
 
94
94
  export default nativeBinding
95
- export const convertPayloadToMrs = nativeBinding.convertPayloadToMrs
96
- export const convertPayloadStringToMrs = nativeBinding.convertPayloadStringToMrs
97
- export const convertPayloadToBuffer = nativeBinding.convertPayloadToBuffer
98
- export const convertPayloadStringToBuffer = nativeBinding.convertPayloadStringToBuffer
99
- export const convertPayloadToString = nativeBinding.convertPayloadToString
100
- export const convertPayloadStringToString = nativeBinding.convertPayloadStringToString
101
- export const convertFileToMrs = nativeBinding.convertFileToMrs
102
- export const convertFileToBuffer = nativeBinding.convertFileToBuffer
103
- export const convertFileToString = nativeBinding.convertFileToString
104
- export const convertFileToPath = nativeBinding.convertFileToPath
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 listIndexes = nativeBinding.listIndexes
102
+ export const listIndexesFromBuffer = nativeBinding.listIndexesFromBuffer
103
+ export const listGeoipCountries = nativeBinding.listGeoipCountries
104
+ export const listGeoipCountriesFromBuffer = nativeBinding.listGeoipCountriesFromBuffer
105
+ export const listGeoipDatCountries = nativeBinding.listGeoipDatCountries
106
+ export const listGeoipDatCountriesFromBuffer = nativeBinding.listGeoipDatCountriesFromBuffer
107
+ export const listGeositeCodes = nativeBinding.listGeositeCodes
108
+ export const listGeositeCodesFromBuffer = nativeBinding.listGeositeCodesFromBuffer
109
+ export const listAsnNumbers = nativeBinding.listAsnNumbers
110
+ export const listAsnNumbersFromBuffer = nativeBinding.listAsnNumbersFromBuffer
111
+ export const matchBuf = nativeBinding.matchBuf
112
+ export const matchStr = nativeBinding.matchStr
113
+ 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.1.3",
3
+ "version": "0.3.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.1.3",
55
- "@uruhalushia/rule-converter-napi-linux-arm64-gnu": "0.1.3",
56
- "@uruhalushia/rule-converter-napi-linux-riscv64-gnu": "0.1.3",
57
- "@uruhalushia/rule-converter-napi-linux-loong64-gnu": "0.1.3",
58
- "@uruhalushia/rule-converter-napi-linux-x64-musl": "0.1.3",
59
- "@uruhalushia/rule-converter-napi-linux-arm64-musl": "0.1.3",
60
- "@uruhalushia/rule-converter-napi-linux-riscv64-musl": "0.1.3",
61
- "@uruhalushia/rule-converter-napi-linux-loong64-musl": "0.1.3",
62
- "@uruhalushia/rule-converter-napi-darwin-x64": "0.1.3",
63
- "@uruhalushia/rule-converter-napi-darwin-arm64": "0.1.3",
64
- "@uruhalushia/rule-converter-napi-win32-x64-msvc": "0.1.3",
65
- "@uruhalushia/rule-converter-napi-win32-arm64-msvc": "0.1.3"
54
+ "@uruhalushia/rule-converter-napi-linux-x64-gnu": "0.3.0",
55
+ "@uruhalushia/rule-converter-napi-linux-arm64-gnu": "0.3.0",
56
+ "@uruhalushia/rule-converter-napi-linux-riscv64-gnu": "0.3.0",
57
+ "@uruhalushia/rule-converter-napi-linux-loong64-gnu": "0.3.0",
58
+ "@uruhalushia/rule-converter-napi-linux-x64-musl": "0.3.0",
59
+ "@uruhalushia/rule-converter-napi-linux-arm64-musl": "0.3.0",
60
+ "@uruhalushia/rule-converter-napi-linux-riscv64-musl": "0.3.0",
61
+ "@uruhalushia/rule-converter-napi-linux-loong64-musl": "0.3.0",
62
+ "@uruhalushia/rule-converter-napi-darwin-x64": "0.3.0",
63
+ "@uruhalushia/rule-converter-napi-darwin-arm64": "0.3.0",
64
+ "@uruhalushia/rule-converter-napi-win32-x64-msvc": "0.3.0",
65
+ "@uruhalushia/rule-converter-napi-win32-arm64-msvc": "0.3.0"
66
66
  }
67
67
  }