diff --git a/generator/schemaGenerator.ts b/generator/schemaGenerator.ts index 614d35bf..8825c41d 100644 --- a/generator/schemaGenerator.ts +++ b/generator/schemaGenerator.ts @@ -1,7 +1,8 @@ import Ajv from 'ajv'; -import standaloneCode from 'ajv/dist/standalone'; +import standaloneCode from 'ajv/dist/standalone/index.cjs'; import fs from 'fs'; import path from 'path'; +import { fileURLToPath } from 'url'; import { BaseType, createFormatter, @@ -15,6 +16,9 @@ import { } from 'ts-json-schema-generator'; import { Schema } from 'ts-json-schema-generator/src/Schema/Schema'; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + class CustomTypeFormatter implements SubTypeFormatter { public supportsType(type: FunctionType): boolean { return type instanceof FunctionType; diff --git a/package.json b/package.json index fff0f8f5..344f85a0 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,12 @@ { "name": "@sphereon/did-auth-siop", "version": "0.3.0-unstable.17", + "type": "module", "main": "dist/main/index.js", - "types": "dist/main/index.d.ts", + "typings": "dist/main/index.d.ts", + "browser": "dist/browser/index.js", + "module": "dist/module/index.js", + "types": "dist/module/index.d.ts", "license": "Apache-2.0", "repository": { "url": "https://github.com/Sphereon-Opensource/did-auth-siop.git" @@ -10,9 +14,12 @@ "author": "Sphereon", "description": "Self Issued OpenID V2 (SIOPv2) and OpenID 4 Verifiable Presentations (OID4VP)", "scripts": { - "build": "npm-run-all build:schemaGenerator build:main", - "build:main": "tsc -p tsconfig.build.json", - "build:schemaGenerator": "node --loader ts-node/esm generator/schemaGenerator.ts", + "build": "npm-run-all build:schemaGenerator build:schemaPatch build:main build:browser build:module", + "build:main": "tsc -p tsconfig.main.json", + "build:browser": "tsc -p tsconfig.browser.json", + "build:module": "rollup -c", + "build:schemaGenerator": "ts-node --esm generator/schemaGenerator.ts", + "build:schemaPatch": "echo \"export const AuthorizationRequestPayloadVID1Schema = validate10;\nexport const AuthorizationRequestPayloadVD11Schema = validate57;\nexport const AuthorizationResponseOptsSchema = validate102;\nexport const RPRegistrationMetadataPayloadSchema = validate144;\nexport const DiscoveryMetadataPayloadSchema = validate147;\n\" >> src/main/schemas/validation/schemaValidation.js", "clean": "rimraf dist coverage", "fix": "run-s fix:*", "fix:prettier": "prettier \"{src,test}/**/*.ts\" --write", @@ -60,14 +67,16 @@ "@digitalcredentials/ed25519-signature-2020": "^3.0.2", "@digitalcredentials/jsonld-signatures": "^9.3.1", "@digitalcredentials/vc": "^5.0.0", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.2", "@types/jest": "^29.4.0", "@types/language-tags": "^1.0.1", "@typescript-eslint/eslint-plugin": "^5.52.0", "@typescript-eslint/parser": "^5.52.0", + "ajv": "^8.12.0", "codecov": "^3.8.3", "cspell": "^6.26.3", "dotenv": "^16.0.3", - "ajv": "^8.12.0", "eslint": "^8.34.0", "eslint-config-prettier": "^8.6.0", "eslint-plugin-eslint-comments": "^3.2.0", @@ -80,18 +89,39 @@ "npm-run-all": "^4.1.5", "open-cli": "^7.1.0", "prettier": "^2.8.4", + "rollup": "^3.28.0", "ts-jest": "^29.0.5", "ts-json-schema-generator": "^1.2.0", "ts-node": "^10.9.1", "typescript": "4.6.4" }, "files": [ - "dist/main" + "dist/main", + "dist/module", + "dist/browser" ], "prettier": { "singleQuote": true, "printWidth": 150 }, + "exports": { + ".": { + "import": { + "types": "./dist/module/index.d.ts", + "default": "./dist/index.mjs" + }, + "require": { + "types": "./dist/main/index.d.ts", + "default": "./dist/main/index.js" + }, + "browser": { + "types": "./dist/browser/index.d.ts", + "default": "./dist/browser/index.js" + }, + "default": "./dist/module/index.mjs" + }, + "./package.json": "./package.json" + }, "keywords": [ "Sphereon", "SSI", diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..e497662c --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,26 @@ +import typescript from '@rollup/plugin-typescript'; +import terser from '@rollup/plugin-terser'; + +export default { + input: 'src/main/index.ts', + output: { + dir: 'dist/module', + format: 'esm', + entryFileNames: '[name].mjs' + }, + plugins: [ + typescript( { + tsconfig: 'tsconfig.module.json' + }), + terser({ + format: { + comments: 'some', + beautify: true, + ecma: '2022', + }, + compress: false, + mangle: false, + module: true, + }), + ] +}; \ No newline at end of file diff --git a/tsconfig.browser.json b/tsconfig.browser.json new file mode 100644 index 00000000..c5551644 --- /dev/null +++ b/tsconfig.browser.json @@ -0,0 +1,25 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "target": "ES6", + "outDir": "dist/browser", + "module": "commonjs" + }, + "lib": [ + "es2015", "dom", "es6" + ], + "include": [ + "declarations.d.ts", + "index.ts", + "src/**/*.ts", + "src/**/*.js", + ], + "exclude": [ + "node_modules/**", + "coverage/**", + "resources/**", + "dist/**", + "test/**", + "generator/**/*.ts" + ] +} diff --git a/tsconfig.build.json b/tsconfig.build.json deleted file mode 100644 index 17f586d0..00000000 --- a/tsconfig.build.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig.json", - "exclude": [ - "test/**/*.ts", - "generator/**/*.ts" - ] -} diff --git a/tsconfig.json b/tsconfig.json index 52f5b651..103a8465 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,10 +1,10 @@ { "compilerOptions": { "incremental": true, - "target": "ES6", + "target": "ES2022", "outDir": "dist/main", "moduleResolution": "node", - "module": "commonjs", + "module": "ESNext", "declaration": true, "inlineSourceMap": true, "allowJs": true, @@ -41,7 +41,10 @@ "src/**/*.ts", "src/**/*.js", "test/**/*.ts", - "generator/**/*.ts" + "generator/**/*.ts", + "./package.json", + "./README.md", + "./LICENSE" ], "exclude": [ "node_modules/**", diff --git a/tsconfig.main.json b/tsconfig.main.json new file mode 100644 index 00000000..53801c4b --- /dev/null +++ b/tsconfig.main.json @@ -0,0 +1,26 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "target": "ES6", + "outDir": "dist/main", + "module": "CommonJS", + "moduleResolution": "node", + "esModuleInterop": true + }, + + "include": [ + "declarations.d.ts", + "index.ts", + "src/**/*.ts", + "src/**/*.js", + ], + "exclude": [ + "node_modules/**", + "coverage/**", + "resources/**", + "dist/**", + "test/**", + "generator/**/*.ts" + ], + +} diff --git a/tsconfig.module.json b/tsconfig.module.json new file mode 100644 index 00000000..a7c81629 --- /dev/null +++ b/tsconfig.module.json @@ -0,0 +1,24 @@ +{ + "extends": "./tsconfig", + "compilerOptions": { + "target": "ES2022", + "outDir": "dist/module", + "module": "ESNext", + "moduleResolution": "node", + "esModuleInterop": true + }, + "include": [ + "declarations.d.ts", + "index.ts", + "src/**/*.ts", + "src/**/*.js" + ], + "exclude": [ + "node_modules/**", + "coverage/**", + "resources/**", + "dist/**", + "test/**", + "generator/**/*.ts" + ] +} diff --git a/yarn.lock b/yarn.lock index e3f1312e..ed8f6736 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1364,6 +1364,15 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" +"@jridgewell/gen-mapping@^0.3.0": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz#7e02e6eb5df901aaedb08514203b096614024098" + integrity sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ== + dependencies: + "@jridgewell/set-array" "^1.0.1" + "@jridgewell/sourcemap-codec" "^1.4.10" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" @@ -1383,6 +1392,14 @@ resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72" integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw== +"@jridgewell/source-map@^0.3.3": + version "0.3.5" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.5.tgz#a3bb4d5c6825aab0d281268f47f6ad5853431e91" + integrity sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ== + dependencies: + "@jridgewell/gen-mapping" "^0.3.0" + "@jridgewell/trace-mapping" "^0.3.9" + "@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10": version "1.4.14" resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24" @@ -1452,6 +1469,32 @@ tslib "^2.4.1" webcrypto-core "^1.7.4" +"@rollup/plugin-terser@^0.4.3": + version "0.4.3" + resolved "https://registry.yarnpkg.com/@rollup/plugin-terser/-/plugin-terser-0.4.3.tgz#c2bde2fe3a85e45fa68a454d48f4e73e57f98b30" + integrity sha512-EF0oejTMtkyhrkwCdg0HJ0IpkcaVg1MMSf2olHb2Jp+1mnLM04OhjpJWGma4HobiDTF0WCyViWuvadyE9ch2XA== + dependencies: + serialize-javascript "^6.0.1" + smob "^1.0.0" + terser "^5.17.4" + +"@rollup/plugin-typescript@^11.1.2": + version "11.1.2" + resolved "https://registry.yarnpkg.com/@rollup/plugin-typescript/-/plugin-typescript-11.1.2.tgz#09eb5690a650bb0334bf84125bce9abd296442e4" + integrity sha512-0ghSOCMcA7fl1JM+0gYRf+Q/HWyg+zg7/gDSc+fRLmlJWcW5K1I+CLRzaRhXf4Y3DRyPnnDo4M2ktw+a6JcDEg== + dependencies: + "@rollup/pluginutils" "^5.0.1" + resolve "^1.22.1" + +"@rollup/pluginutils@^5.0.1": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.0.2.tgz#012b8f53c71e4f6f9cb317e311df1404f56e7a33" + integrity sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@sinclair/typebox@^0.24.1": version "0.24.51" resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" @@ -1732,6 +1775,11 @@ dependencies: "@types/node" "*" +"@types/estree@^1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.1.tgz#aa22750962f3bf0e79d753d3cc067f010c95f194" + integrity sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA== + "@types/graceful-fs@^4.1.3": version "4.1.5" resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.5.tgz#21ffba0d98da4350db64891f92a9e5db3cdb4e15" @@ -1963,6 +2011,11 @@ acorn@^8.4.1, acorn@^8.8.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== +acorn@^8.8.2: + version "8.10.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.10.0.tgz#8be5b3907a67221a81ab23c7889c4c5526b62ec5" + integrity sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw== + aes-js@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/aes-js/-/aes-js-3.0.0.tgz#e21df10ad6c2053295bcbb8dab40b09dbea87e4d" @@ -2536,6 +2589,11 @@ commander@^10.0.0: resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.0.tgz#71797971162cd3cf65f0b9d24eb28f8d303acdf1" integrity sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA== +commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" @@ -3254,6 +3312,11 @@ estraverse@^5.1.0, estraverse@^5.2.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -3552,7 +3615,7 @@ fs.realpath@^1.0.0: resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== -fsevents@^2.3.2: +fsevents@^2.3.2, fsevents@~2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== @@ -5570,6 +5633,13 @@ rlp@^2.2.4: dependencies: bn.js "^5.2.0" +rollup@^3.28.0: + version "3.28.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.28.0.tgz#a3c70004b01934760c0cb8df717c7a1d932389a2" + integrity sha512-d7zhvo1OUY2SXSM6pfNjgD5+d0Nz87CUp4mt8l/GgVP3oBsPwzNvSzyu1me6BSG9JIgWNTVcafIXBIyM8yQ3yw== + optionalDependencies: + fsevents "~2.3.2" + run-parallel@^1.1.9: version "1.2.0" resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" @@ -5648,6 +5718,13 @@ serialize-error@^8.0.1: dependencies: type-fest "^0.20.2" +serialize-javascript@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.1.tgz#b206efb27c3da0b0ab6b52f48d170b7996458e5c" + integrity sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w== + dependencies: + randombytes "^2.1.0" + setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" @@ -5714,6 +5791,11 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +smob@^1.0.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/smob/-/smob-1.4.0.tgz#ac9751fe54b1fc1fc8286a628d4e7f824273b95a" + integrity sha512-MqR3fVulhjWuRNSMydnTlweu38UhQ0HXM4buStD/S3mc/BzX3CuM9OmhyQpmtYCvoYdl5ris6TI0ZqH355Ymqg== + source-map-support@0.5.13: version "0.5.13" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" @@ -5722,6 +5804,14 @@ source-map-support@0.5.13: buffer-from "^1.0.0" source-map "^0.6.0" +source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" @@ -5948,6 +6038,16 @@ tempy@^3.0.0: type-fest "^2.12.2" unique-string "^3.0.0" +terser@^5.17.4: + version "5.19.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.19.2.tgz#bdb8017a9a4a8de4663a7983f45c506534f9234e" + integrity sha512-qC5+dmecKJA4cpYxRa5aVkKehYsQKc+AHeKl0Oe62aYjBL8ZA33tTljktDHJSaxxMnbI5ZYw+o/S2DxxLu8OfA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e"