Skip to content

Commit 0c2ea49

Browse files
committed
Convert to TypeScript
1 parent d2cd82f commit 0c2ea49

32 files changed

+1044
-1036
lines changed

.github/workflows/provenance.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,5 +22,6 @@ jobs:
2222
with:
2323
debug: ${{ inputs.debug }}
2424
package-name: '@socketregistry/packageurl-js'
25+
setup-script: 'pnpm run build'
2526
secrets:
2627
npm_token: ${{ secrets.NPM_TOKEN }}

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ Thumbs.db
1010
**/.cache
1111
**/node_modules
1212
/*.tsbuildinfo
13+
/dist
1314

1415
!/.vscode/extensions.json

eslint.config.mjs

Lines changed: 62 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
includeIgnoreFile,
88
} from '@eslint/compat'
99
import js from '@eslint/js'
10+
import typescriptParser from '@typescript-eslint/parser'
1011
import importXPlugin from 'eslint-plugin-import-x'
1112
import nodePlugin from 'eslint-plugin-n'
1213
import sortDestructureKeysPlugin from 'eslint-plugin-sort-destructure-keys'
@@ -87,6 +88,8 @@ export default [
8788
js: 'ignorePackages',
8889
json: 'always',
8990
mjs: 'ignorePackages',
91+
mts: 'never',
92+
ts: 'never',
9093
},
9194
],
9295
'import-x/no-named-as-default-member': 'off',
@@ -154,9 +157,66 @@ export default [
154157
},
155158
},
156159
{
157-
files: ['**/*.mjs'],
160+
files: ['**/*.mjs', '**/*.mts'],
158161
languageOptions: {
159162
sourceType: 'module',
160163
},
164+
rules: {
165+
'import-x/extensions': ['error', 'never', { mts: 'never' }],
166+
},
167+
},
168+
{
169+
files: ['test/**/*.test.mts'],
170+
languageOptions: {
171+
parser: typescriptParser,
172+
sourceType: 'module',
173+
parserOptions: {
174+
ecmaVersion: 'latest',
175+
sourceType: 'module',
176+
},
177+
},
178+
rules: {
179+
'n/no-unsupported-features/es-syntax': 'off',
180+
'n/no-missing-import': 'off',
181+
'n/no-missing-require': 'off',
182+
'import-x/no-unresolved': 'off',
183+
'import-x/extensions': 'off',
184+
'no-unused-vars': [
185+
'error',
186+
{
187+
argsIgnorePattern: '^_|^this$|^context$',
188+
ignoreRestSiblings: true,
189+
varsIgnorePattern: '^_',
190+
},
191+
],
192+
'unicorn/consistent-function-scoping': 'off',
193+
'no-proto': 'off',
194+
'no-new': 'off',
195+
},
196+
},
197+
{
198+
files: ['**/*.ts', '**/*.mts'],
199+
languageOptions: {
200+
parser: typescriptParser,
201+
sourceType: 'module',
202+
parserOptions: {
203+
ecmaVersion: 'latest',
204+
sourceType: 'module',
205+
},
206+
},
207+
rules: {
208+
'n/no-unsupported-features/es-syntax': 'off',
209+
'n/no-missing-import': 'off',
210+
'n/no-missing-require': 'off',
211+
'import-x/no-unresolved': 'off',
212+
'import-x/extensions': [
213+
'error',
214+
'always',
215+
{
216+
ts: 'never',
217+
mts: 'never',
218+
},
219+
],
220+
},
161221
},
162-
]
222+
]

index.js renamed to index.ts

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -19,18 +19,9 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
1919
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
2020
SOFTWARE.
2121
*/
22-
'use strict'
2322

24-
const {
25-
PackageURL,
23+
export { PackageURL,
2624
PurlComponent,
2725
PurlQualifierNames,
2826
PurlType,
29-
} = require('./src/package-url')
30-
31-
module.exports = {
32-
PackageURL,
33-
PurlComponent,
34-
PurlQualifierNames,
35-
PurlType,
36-
}
27+
} from './src/package-url.js'

knip.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"entry": ["scripts/*.js", "src/*.{js,ts}", "test/*.test.ts", "*.js"],
2+
"entry": ["scripts/*.js", "src/*.{js,mts}", "test/*.test.mts", "*.mts"],
33
"project": ["scripts/**", "src/**", "test/**"]
44
}

package.json

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,30 +12,19 @@
1212
"type": "git",
1313
"url": "git+https://github.com/SocketDev/socket-packageurl-js.git"
1414
},
15+
"main": "./dist/cjs/package-url.js",
16+
"types": "./dist/cjs/package-url.d.ts",
1517
"exports": {
1618
".": {
17-
"types": "./index.d.ts",
18-
"default": "./index.js"
19+
"types": "./dist/cjs/package-url.d.ts",
20+
"default": "./dist/cjs/package-url.js"
1921
},
2022
"./data/npm/builtin-names.json": "./data/npm/builtin-names.json",
2123
"./data/npm/legacy-names.json": "./data/npm/legacy-names.json",
22-
"./src/constants": "./src/constants.js",
23-
"./src/decode": "./src/decode.js",
24-
"./src/encode": "./src/encode.js",
25-
"./src/error": "./src/error.js",
26-
"./src/helpers": "./src/helpers.js",
27-
"./src/lang": "./src/lang.js",
28-
"./src/normalize": "./src/normalize.js",
29-
"./src/objects": "./src/objects.js",
30-
"./src/package-url": {
31-
"types": "./src/package-url.d.ts",
32-
"default": "./src/package-url.js"
24+
"./dist/cjs/*": {
25+
"types": "./dist/cjs/*.d.ts",
26+
"default": "./dist/cjs/*.js"
3327
},
34-
"./src/purl-component": "./src/purl-component.js",
35-
"./src/purl-qualifier-names": "./src/purl-qualifier-names.js",
36-
"./src/purl-type": "./src/purl-type.js",
37-
"./src/strings": "./src/strings.js",
38-
"./src/validate": "./src/validate.js",
3928
"./package.json": "./package.json"
4029
},
4130
"sideEffects": false,
@@ -44,7 +33,10 @@
4433
"check-ci": "pnpm check:lint",
4534
"check:lint": "eslint --report-unused-disable-directives .",
4635
"check:lint:fix": "pnpm check:lint --fix",
47-
"check:tsc": "tsc",
36+
"build": "pnpm run clean:dist && pnpm run build:cjs",
37+
"build:cjs": "tsc",
38+
"check:tsc": "tsc --noEmit",
39+
"clean:dist": "del-cli 'dist'",
4840
"clean": "run-s -c clean:*",
4941
"clean:cache": "del-cli '**/.cache'",
5042
"clean:coverage": "del-cli 'coverage'",
@@ -81,6 +73,9 @@
8173
"@eslint/compat": "1.3.2",
8274
"@eslint/js": "9.35.0",
8375
"@socketsecurity/registry": "1.2.2",
76+
"@types/node": "24.5.2",
77+
"@typescript-eslint/eslint-plugin": "8.44.1",
78+
"@typescript-eslint/parser": "8.44.1",
8479
"@vitest/coverage-v8": "3.2.4",
8580
"all-the-package-names": "2.0.0",
8681
"all-the-package-names-v1.3905.0": "npm:[email protected]",
@@ -113,9 +108,8 @@
113108
"pnpm": ">=10.16.0"
114109
},
115110
"files": [
116-
"*{.js,.ts}",
111+
"dist/**/*",
117112
"data/**/*.json",
118-
"src/**/*{.js,.ts}",
119113
"CHANGELOG.md"
120114
],
121115
"lint-staged": {

0 commit comments

Comments
 (0)