@sideid/id-profanity-filter 1.11.0 → 1.11.6

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 (53) hide show
  1. package/.eslintrc.js +44 -44
  2. package/.github/workflows/release.yml +62 -0
  3. package/CONTRIBUTING.md +150 -150
  4. package/LICENSE +21 -21
  5. package/README.md +548 -548
  6. package/dist/index.d.ts +989 -0
  7. package/dist/index.esm.js +504 -234
  8. package/dist/index.esm.js.map +1 -1
  9. package/dist/index.js +504 -234
  10. package/dist/index.js.map +1 -1
  11. package/dist/types/constants/regions/aceh.d.ts +4 -0
  12. package/dist/types/constants/regions/bali.d.ts +4 -0
  13. package/dist/{constants → types/constants}/regions/jawa.d.ts +1 -1
  14. package/dist/types/index.d.ts +375 -57
  15. package/dist/types/types/index.d.ts +59 -0
  16. package/eslint.config.mjs +40 -40
  17. package/examples/advanced.ts +120 -120
  18. package/examples/basic.ts +71 -71
  19. package/examples/custom-list.ts +140 -140
  20. package/jest.config.mjs +10 -10
  21. package/package.json +2 -1
  22. package/prettierrc +6 -6
  23. package/rollup.config.mjs +40 -35
  24. package/src/constants/regions/aceh.ts +231 -0
  25. package/src/constants/regions/bali.ts +168 -0
  26. package/src/constants/regions/batak.ts +136 -6
  27. package/src/constants/regions/general.ts +9 -0
  28. package/src/constants/regions/jawa.ts +367 -229
  29. package/src/index.ts +15 -15
  30. package/tsconfig.json +115 -115
  31. package/.github/workflows/ci.yml +0 -0
  32. package/dist/constants/categories/index.d.ts +0 -9
  33. package/dist/constants/regions/index.d.ts +0 -8
  34. /package/dist/{config → types/config}/options.d.ts +0 -0
  35. /package/dist/{constants → types/constants}/categories/blasphemy.d.ts +0 -0
  36. /package/dist/{constants → types/constants}/categories/disgusting.d.ts +0 -0
  37. /package/dist/{constants → types/constants}/categories/drugs.d.ts +0 -0
  38. /package/dist/{constants → types/constants}/categories/insult.d.ts +0 -0
  39. /package/dist/{constants → types/constants}/categories/profanity.d.ts +0 -0
  40. /package/dist/{constants → types/constants}/categories/sexual.d.ts +0 -0
  41. /package/dist/{constants → types/constants}/categories/slur.d.ts +0 -0
  42. /package/dist/{constants → types/constants}/regions/batak.d.ts +0 -0
  43. /package/dist/{constants → types/constants}/regions/betawi.d.ts +0 -0
  44. /package/dist/{constants → types/constants}/regions/general.d.ts +0 -0
  45. /package/dist/{constants → types/constants}/regions/sunda.d.ts +0 -0
  46. /package/dist/{constants → types/constants}/wordList.d.ts +0 -0
  47. /package/dist/{core → types/core}/analyzer.d.ts +0 -0
  48. /package/dist/{core → types/core}/filter.d.ts +0 -0
  49. /package/dist/{core → types/core}/matcher.d.ts +0 -0
  50. /package/dist/{utils → types/utils}/ahoCorasick.d.ts +0 -0
  51. /package/dist/{utils → types/utils}/regexUtils.d.ts +0 -0
  52. /package/dist/{utils → types/utils}/similarityUtils.d.ts +0 -0
  53. /package/dist/{utils → types/utils}/stringUtils.d.ts +0 -0
package/.eslintrc.js CHANGED
@@ -1,44 +1,44 @@
1
- module.exports = {
2
- parser: '@typescript-eslint/parser',
3
- parserOptions: {
4
- ecmaVersion: 2020,
5
- sourceType: 'module',
6
- project: './tsconfig.json',
7
- },
8
- extends: [
9
- 'eslint:recommended',
10
- 'plugin:@typescript-eslint/recommended',
11
- 'prettier', // Disables ESLint rules that might conflict with Prettier
12
- ],
13
- plugins: ['@typescript-eslint'],
14
- env: {
15
- node: true,
16
- jest: true,
17
- },
18
- rules: {
19
- // Enforce consistent code style
20
- '@typescript-eslint/explicit-function-return-type': 'off',
21
- '@typescript-eslint/no-explicit-any': 'warn',
22
- '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
23
-
24
- // Allow certain TypeScript patterns
25
- '@typescript-eslint/no-non-null-assertion': 'off',
26
-
27
- // General ESLint rules
28
- 'no-console': ['warn', { allow: ['warn', 'error'] }],
29
- 'prefer-const': 'warn',
30
- 'no-var': 'error',
31
-
32
- // Make sure imports are properly sorted
33
- 'sort-imports': [
34
- 'off',
35
- {
36
- ignoreCase: false,
37
- ignoreDeclarationSort: true,
38
- ignoreMemberSort: false,
39
- memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
40
- },
41
- ],
42
- },
43
- ignorePatterns: ['dist/', 'node_modules/', '*.js', '*.d.ts'],
44
- };
1
+ module.exports = {
2
+ parser: '@typescript-eslint/parser',
3
+ parserOptions: {
4
+ ecmaVersion: 2020,
5
+ sourceType: 'module',
6
+ project: './tsconfig.json',
7
+ },
8
+ extends: [
9
+ 'eslint:recommended',
10
+ 'plugin:@typescript-eslint/recommended',
11
+ 'prettier', // Disables ESLint rules that might conflict with Prettier
12
+ ],
13
+ plugins: ['@typescript-eslint'],
14
+ env: {
15
+ node: true,
16
+ jest: true,
17
+ },
18
+ rules: {
19
+ // Enforce consistent code style
20
+ '@typescript-eslint/explicit-function-return-type': 'off',
21
+ '@typescript-eslint/no-explicit-any': 'warn',
22
+ '@typescript-eslint/no-unused-vars': ['warn', { argsIgnorePattern: '^_' }],
23
+
24
+ // Allow certain TypeScript patterns
25
+ '@typescript-eslint/no-non-null-assertion': 'off',
26
+
27
+ // General ESLint rules
28
+ 'no-console': ['warn', { allow: ['warn', 'error'] }],
29
+ 'prefer-const': 'warn',
30
+ 'no-var': 'error',
31
+
32
+ // Make sure imports are properly sorted
33
+ 'sort-imports': [
34
+ 'off',
35
+ {
36
+ ignoreCase: false,
37
+ ignoreDeclarationSort: true,
38
+ ignoreMemberSort: false,
39
+ memberSyntaxSortOrder: ['none', 'all', 'multiple', 'single'],
40
+ },
41
+ ],
42
+ },
43
+ ignorePatterns: ['dist/', 'node_modules/', '*.js', '*.d.ts'],
44
+ };
@@ -0,0 +1,62 @@
1
+ name: Create Release
2
+ on:
3
+ push:
4
+ branches:
5
+ - main
6
+ paths:
7
+ - 'package.json'
8
+ jobs:
9
+ check-version-and-release:
10
+ runs-on: ubuntu-latest
11
+ steps:
12
+ - name: Checkout code
13
+ uses: actions/checkout@v4
14
+ with:
15
+ fetch-depth: 2
16
+ token: ${{ secrets.GH_PAT }}
17
+
18
+ - name: Setup Node.js
19
+ uses: actions/setup-node@v4
20
+ with:
21
+ node-version: '20.x'
22
+ registry-url: 'https://registry.npmjs.org'
23
+
24
+ - name: Check if version changed
25
+ id: check_version
26
+ run: |
27
+ git diff HEAD^ HEAD -- package.json | grep '"version"' || echo "No version change"
28
+ NEW_VERSION=$(node -p "require('./package.json').version")
29
+ echo "VERSION=$NEW_VERSION" >> $GITHUB_OUTPUT
30
+ echo "Version changed to $NEW_VERSION"
31
+
32
+ - name: Create Git Tag
33
+ if: contains(steps.check_version.outputs.VERSION, '.')
34
+ run: |
35
+ git config --local user.email "action@github.com"
36
+ git config --local user.name "GitHub Action"
37
+ git tag -a "v${{ steps.check_version.outputs.VERSION }}" -m "Release v${{ steps.check_version.outputs.VERSION }}"
38
+ git push https://${{ secrets.GH_PAT }}@github.com/${{ github.repository }}.git --tags
39
+
40
+ - name: Install dependencies
41
+ run: npm ci
42
+
43
+ - name: Build
44
+ run: npm run build
45
+
46
+ - name: Create GitHub Release
47
+ if: contains(steps.check_version.outputs.VERSION, '.')
48
+ uses: softprops/action-gh-release@v1
49
+ with:
50
+ tag_name: v${{ steps.check_version.outputs.VERSION }}
51
+ name: v${{ steps.check_version.outputs.VERSION }}
52
+ draft: false
53
+ prerelease: false
54
+ generate_release_notes: true
55
+ env:
56
+ GITHUB_TOKEN: ${{ secrets.GH_PAT }}
57
+
58
+ - name: Publish to npm
59
+ if: contains(steps.check_version.outputs.VERSION, '.')
60
+ run: npm publish --access public
61
+ env:
62
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
package/CONTRIBUTING.md CHANGED
@@ -1,151 +1,151 @@
1
- # Panduan Kontribusi untuk ID-Profanity-Filter
2
-
3
- Terima kasih telah mempertimbangkan untuk berkontribusi pada proyek ID-Profanity-Filter! Panduan ini akan menjelaskan proses kontribusi, terutama untuk menambahkan kata kotor baru ke dalam database.
4
-
5
- ## Cara Berkontribusi
6
-
7
- ### 1. Fork & Clone Repositori
8
-
9
- - Fork repositori ini ke akun GitHub Anda
10
- - Clone repositori fork Anda ke komputer lokal:
11
- ```bash
12
- git clone https://github.com/username/id-profanity-filter.git
13
- cd id-profanity-filter
14
- ```
15
-
16
- ### 2. Install Dependensi
17
-
18
- ```bash
19
- npm install
20
- ```
21
-
22
- ### 3. Buat Branch Baru
23
-
24
- ```bash
25
- git switch -c add-kata-kotor-daerah
26
- ```
27
-
28
- ## Struktur Kata Kotor
29
-
30
- Kata-kata kotor dalam proyek ini dikelompokkan berdasarkan dua dimensi:
31
-
32
- ### Berdasarkan Daerah Asal
33
-
34
- Lokasi file: `src/constants/regions/`
35
-
36
- Kata-kata dikelompokkan berdasarkan daerah asalnya di Indonesia, seperti:
37
- - `general.ts` - Kata-kata umum di Indonesia
38
- - `jawa.ts` - Kata-kata dari Jawa
39
- - `sunda.ts` - Kata-kata dari Sunda
40
- - `betawi.ts` - Kata-kata dari Betawi
41
- - `batak.ts` - Kata-kata dari Batak
42
- - ... dan daerah lainnya
43
-
44
- ### Berdasarkan Kategori
45
-
46
- Lokasi file: `src/constants/categories/`
47
-
48
- Kata-kata juga dikelompokkan berdasarkan jenisnya:
49
- - `sexual.ts` - Kata-kata berbau seksual
50
- - `insult.ts` - Kata-kata penghinaan
51
- - `profanity.ts` - Umpatan umum
52
- - `slur.ts` - Kata-kata merendahkan berdasarkan identitas
53
- - `drugs.ts` - Kata-kata terkait narkoba
54
- - `disgusting.ts` - Kata-kata menjijikkan
55
- - `blasphemy.ts` - Kata-kata penistaan agama
56
-
57
- ## Cara Menambahkan Kata Kotor Baru
58
-
59
- ### 1. Menambahkan ke File Daerah
60
-
61
- Pilih file daerah yang sesuai di `src/constants/regions/` atau buat file baru jika daerah tersebut belum ada. Format entri kata kotor harus mengikuti interface `ProfanityWord`:
62
-
63
- ```typescript
64
- {
65
- word: 'kata_kotor', // Kata kotor dalam bentuk dasarnya
66
- category: 'insult', // Kategori kata (sexual, insult, profanity, slur, drugs, disgusting, blasphemy)
67
- region: 'nama_daerah', // Daerah asal kata
68
- severity: 0.7, // Tingkat keparahan (0-1)
69
- aliases: ['alias1', 'alias2'], // Variasi atau alias kata (opsional)
70
- description: 'Deskripsi kata', // Penjelasan singkat tentang kata (opsional)
71
- context: 'Konteks penggunaan' // Informasi konteks penggunaan (opsional)
72
- }
73
- ```
74
-
75
- Contoh menambahkan kata ke file daerah (misalnya `bali.ts`):
76
-
77
- ```typescript
78
- import { ProfanityWord } from '../../types';
79
-
80
- export const bali: ProfanityWord[] = [
81
- // ... kata-kata yang sudah ada
82
- {
83
- word: 'cicing',
84
- category: 'profanity',
85
- region: 'bali',
86
- severity: 0.6,
87
- aliases: ['cicying'],
88
- description: 'Secara harfiah berarti anjing dalam Bahasa Bali',
89
- context: 'Umpatan umum dalam Bahasa Bali'
90
- },
91
- // ... tambahkan kata lainnya
92
- ];
93
-
94
- export const baliWords = bali.map(item => item.word);
95
-
96
- export default bali;
97
- ```
98
-
99
- ### 2. Menambahkan ke File Kategori (Opsional)
100
-
101
- Jika Anda menambahkan kata baru, perbarui juga file kategori yang sesuai (`src/constants/categories/`). Kata-kata tersebut akan otomatis terambil saat library dibuild, tetapi terkadang kategori perlu diperbarui.
102
-
103
- ### 3. Update File indeks Daerah/Kategori (jika ada daerah baru)
104
-
105
- Jika Anda menambahkan daerah baru, pastikan untuk memperbarui file indeks:
106
- - `src/constants/regions/index.ts`
107
- - `src/constants/wordList.ts`
108
-
109
- ### 4. Jalankan Tes (jika ada)
110
-
111
- ```bash
112
- npm test
113
- ```
114
-
115
- ### 5. Build Library
116
-
117
- ```bash
118
- npm run build
119
- ```
120
-
121
- ### 6. Commit dan Push Perubahan Anda
122
-
123
- ```bash
124
- git add .
125
- git commit -m "Menambahkan kata kotor daerah X"
126
- git push origin add-kata-kotor-daerah
127
- ```
128
-
129
- ### 7. Buat Pull Request
130
-
131
- Buat Pull Request dari branch Anda ke repositori utama.
132
-
133
- ## Pedoman Penambahan Kata
134
-
135
- 1. **Validasi Kata**: Pastikan kata tersebut benar-benar dianggap kasar di daerah yang dimaksud.
136
- 2. **Metadata**: Tambahkan metadata yang cukup, terutama tingkat keparahan dan kategori.
137
- 3. **Konteks**: Tambahkan komentar konteks jika diperlukan untuk menjelaskan kata tersebut.
138
- 4. **Bentuk Dasar**: Tambahkan kata dalam bentuk dasarnya, variasi dapat ditambahkan dalam `aliases`.
139
- 5. **Kategorisasi**: Kategorikan kata dengan benar (seksual, hinaan, umpatan, dll).
140
- 6. **Hindari Duplikasi**: Periksa apakah kata tersebut sudah ada sebelum menambahkannya.
141
-
142
- ## Format Commit
143
-
144
- Gunakan format commit yang konsisten:
145
- - `Add: Menambahkan kata X dari daerah Y`
146
- - `Update: Memperbaiki metadata kata X`
147
- - `Fix: Memperbaiki bug pada ...`
148
-
149
- ## Informasi Tambahan
150
-
1
+ # Panduan Kontribusi untuk ID-Profanity-Filter
2
+
3
+ Terima kasih telah mempertimbangkan untuk berkontribusi pada proyek ID-Profanity-Filter! Panduan ini akan menjelaskan proses kontribusi, terutama untuk menambahkan kata kotor baru ke dalam database.
4
+
5
+ ## Cara Berkontribusi
6
+
7
+ ### 1. Fork & Clone Repositori
8
+
9
+ - Fork repositori ini ke akun GitHub Anda
10
+ - Clone repositori fork Anda ke komputer lokal:
11
+ ```bash
12
+ git clone https://github.com/username/id-profanity-filter.git
13
+ cd id-profanity-filter
14
+ ```
15
+
16
+ ### 2. Install Dependensi
17
+
18
+ ```bash
19
+ npm install
20
+ ```
21
+
22
+ ### 3. Buat Branch Baru
23
+
24
+ ```bash
25
+ git switch -c add-kata-kotor-daerah
26
+ ```
27
+
28
+ ## Struktur Kata Kotor
29
+
30
+ Kata-kata kotor dalam proyek ini dikelompokkan berdasarkan dua dimensi:
31
+
32
+ ### Berdasarkan Daerah Asal
33
+
34
+ Lokasi file: `src/constants/regions/`
35
+
36
+ Kata-kata dikelompokkan berdasarkan daerah asalnya di Indonesia, seperti:
37
+ - `general.ts` - Kata-kata umum di Indonesia
38
+ - `jawa.ts` - Kata-kata dari Jawa
39
+ - `sunda.ts` - Kata-kata dari Sunda
40
+ - `betawi.ts` - Kata-kata dari Betawi
41
+ - `batak.ts` - Kata-kata dari Batak
42
+ - ... dan daerah lainnya
43
+
44
+ ### Berdasarkan Kategori
45
+
46
+ Lokasi file: `src/constants/categories/`
47
+
48
+ Kata-kata juga dikelompokkan berdasarkan jenisnya:
49
+ - `sexual.ts` - Kata-kata berbau seksual
50
+ - `insult.ts` - Kata-kata penghinaan
51
+ - `profanity.ts` - Umpatan umum
52
+ - `slur.ts` - Kata-kata merendahkan berdasarkan identitas
53
+ - `drugs.ts` - Kata-kata terkait narkoba
54
+ - `disgusting.ts` - Kata-kata menjijikkan
55
+ - `blasphemy.ts` - Kata-kata penistaan agama
56
+
57
+ ## Cara Menambahkan Kata Kotor Baru
58
+
59
+ ### 1. Menambahkan ke File Daerah
60
+
61
+ Pilih file daerah yang sesuai di `src/constants/regions/` atau buat file baru jika daerah tersebut belum ada. Format entri kata kotor harus mengikuti interface `ProfanityWord`:
62
+
63
+ ```typescript
64
+ {
65
+ word: 'kata_kotor', // Kata kotor dalam bentuk dasarnya
66
+ category: 'insult', // Kategori kata (sexual, insult, profanity, slur, drugs, disgusting, blasphemy)
67
+ region: 'nama_daerah', // Daerah asal kata
68
+ severity: 0.7, // Tingkat keparahan (0-1)
69
+ aliases: ['alias1', 'alias2'], // Variasi atau alias kata (opsional)
70
+ description: 'Deskripsi kata', // Penjelasan singkat tentang kata (opsional)
71
+ context: 'Konteks penggunaan' // Informasi konteks penggunaan (opsional)
72
+ }
73
+ ```
74
+
75
+ Contoh menambahkan kata ke file daerah (misalnya `bali.ts`):
76
+
77
+ ```typescript
78
+ import { ProfanityWord } from '../../types';
79
+
80
+ export const bali: ProfanityWord[] = [
81
+ // ... kata-kata yang sudah ada
82
+ {
83
+ word: 'cicing',
84
+ category: 'profanity',
85
+ region: 'bali',
86
+ severity: 0.6,
87
+ aliases: ['cicying'],
88
+ description: 'Secara harfiah berarti anjing dalam Bahasa Bali',
89
+ context: 'Umpatan umum dalam Bahasa Bali'
90
+ },
91
+ // ... tambahkan kata lainnya
92
+ ];
93
+
94
+ export const baliWords = bali.map(item => item.word);
95
+
96
+ export default bali;
97
+ ```
98
+
99
+ ### 2. Menambahkan ke File Kategori (Opsional)
100
+
101
+ Jika Anda menambahkan kata baru, perbarui juga file kategori yang sesuai (`src/constants/categories/`). Kata-kata tersebut akan otomatis terambil saat library dibuild, tetapi terkadang kategori perlu diperbarui.
102
+
103
+ ### 3. Update File indeks Daerah/Kategori (jika ada daerah baru)
104
+
105
+ Jika Anda menambahkan daerah baru, pastikan untuk memperbarui file indeks:
106
+ - `src/constants/regions/index.ts`
107
+ - `src/constants/wordList.ts`
108
+
109
+ ### 4. Jalankan Tes (jika ada)
110
+
111
+ ```bash
112
+ npm test
113
+ ```
114
+
115
+ ### 5. Build Library
116
+
117
+ ```bash
118
+ npm run build
119
+ ```
120
+
121
+ ### 6. Commit dan Push Perubahan Anda
122
+
123
+ ```bash
124
+ git add .
125
+ git commit -m "Menambahkan kata kotor daerah X"
126
+ git push origin add-kata-kotor-daerah
127
+ ```
128
+
129
+ ### 7. Buat Pull Request
130
+
131
+ Buat Pull Request dari branch Anda ke repositori utama.
132
+
133
+ ## Pedoman Penambahan Kata
134
+
135
+ 1. **Validasi Kata**: Pastikan kata tersebut benar-benar dianggap kasar di daerah yang dimaksud.
136
+ 2. **Metadata**: Tambahkan metadata yang cukup, terutama tingkat keparahan dan kategori.
137
+ 3. **Konteks**: Tambahkan komentar konteks jika diperlukan untuk menjelaskan kata tersebut.
138
+ 4. **Bentuk Dasar**: Tambahkan kata dalam bentuk dasarnya, variasi dapat ditambahkan dalam `aliases`.
139
+ 5. **Kategorisasi**: Kategorikan kata dengan benar (seksual, hinaan, umpatan, dll).
140
+ 6. **Hindari Duplikasi**: Periksa apakah kata tersebut sudah ada sebelum menambahkannya.
141
+
142
+ ## Format Commit
143
+
144
+ Gunakan format commit yang konsisten:
145
+ - `Add: Menambahkan kata X dari daerah Y`
146
+ - `Update: Memperbaiki metadata kata X`
147
+ - `Fix: Memperbaiki bug pada ...`
148
+
149
+ ## Informasi Tambahan
150
+
151
151
  Untuk pertanyaan atau diskusi, silakan buat issue di GitHub atau hubungi maintainer proyek. Terima kasih atas kontribusi Anda!
package/LICENSE CHANGED
@@ -1,21 +1,21 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Side ID ~
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Side ID ~
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.