Skip to content

Commit

Permalink
chore: rename did key provider (#299)
Browse files Browse the repository at this point in the history
* chore: rename did-key-provider

* fix: rename did key provider in test setup

* chore: change did key ebsi display string

* feat: add vc import typecheck

* chore: run prettier

* fix: prettierignore

* chore: small improvement

* fix: fixes failing tests

* fix: fixes docker build issues

* fix: fixes lint issues

* chore: move prettier dep to dev deps

* fix: fixes docker build issue

---------

Co-authored-by: Martin Domajnko <[email protected]>
  • Loading branch information
tadejpodrekar and martines3000 authored Jul 3, 2023
1 parent 6eac029 commit 287fece
Show file tree
Hide file tree
Showing 22 changed files with 1,503 additions and 1,937 deletions.
11 changes: 8 additions & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -36,15 +36,20 @@ COPY ./apps/oidc/verifier/package.json ./apps/oidc/verifier/
# Remove prepare script
RUN npm pkg delete scripts.prepare

# Install all the dependencies
RUN pnpm install --frozen-lockfile

# Copy all other files
COPY . .

# Install all the dependencies
# This would be better before COPY . . but we use postinstall scripts
# that depend on some of the files copied above
RUN pnpm install --frozen-lockfile

# Copy nx-cloud.env
COPY ./nx-cloud.env ./
ENV NODE_ENV=production

# For Dapp to build as Standalone
ENV DOCKER_BUILD=true

# Build affected projects
RUN pnpm build:docker
8 changes: 4 additions & 4 deletions apps/oidc/issuer/src/modules/agent/agent.service.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
getMascaDidKeyResolver,
MascaKeyDidProvider,
getDidKeyResolver,
KeyDIDProvider,
} from '@blockchain-lab-um/did-provider-key';
import {
IOIDCRPPlugin,
Expand Down Expand Up @@ -107,15 +107,15 @@ export class AgentService {
defaultKms: 'local',
networks: this.providerConfig.networks,
}),
'did:key': new MascaKeyDidProvider({
'did:key': new KeyDIDProvider({
defaultKms: 'local',
}),
},
}),
new DIDResolverPlugin({
resolver: new Resolver({
...getEthrResolver(this.providerConfig),
...getMascaDidKeyResolver(),
...getDidKeyResolver(),
}),
}),
new OIDCRPPlugin({
Expand Down
8 changes: 4 additions & 4 deletions apps/oidc/issuer/tests/testAgent.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
getMascaDidKeyResolver,
MascaKeyDidProvider,
getDidKeyResolver,
KeyDIDProvider,
} from '@blockchain-lab-um/did-provider-key';
import { IOIDCRPPlugin, OIDCRPPlugin } from '@blockchain-lab-um/oidc-rp-plugin';
import {
Expand Down Expand Up @@ -90,15 +90,15 @@ const getAgent = async (): Promise<Agent> => {
defaultKms: 'local',
networks: providerConfig.networks,
}),
'did:key': new MascaKeyDidProvider({
'did:key': new KeyDIDProvider({
defaultKms: 'local',
}),
},
}),
new DIDResolverPlugin({
resolver: new Resolver({
...getEthrResolver(providerConfig),
...getMascaDidKeyResolver(),
...getDidKeyResolver(),
}),
}),
new OIDCRPPlugin({
Expand Down
4 changes: 2 additions & 2 deletions libs/did-provider-key/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
*
* @packageDocumentation
*/
export { MascaKeyDidProvider } from './keyDidProvider.js';
export { getMascaDidKeyResolver } from './keyDidResolver.js';
export { KeyDIDProvider } from './keyDidProvider.js';
export { getDidKeyResolver } from './keyDidResolver.js';
export * from './keyDidUtils.js';
export * from './types/keyDidTypes.js';
2 changes: 1 addition & 1 deletion libs/did-provider-key/src/keyDidProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ type IContext = IAgentContext<IKeyManager>;
*
* @beta This API may change without a BREAKING CHANGE notice.
*/
export class MascaKeyDidProvider extends AbstractIdentifierProvider {
export class KeyDIDProvider extends AbstractIdentifierProvider {
private defaultKms: string;

constructor(options: { defaultKms: string }) {
Expand Down
2 changes: 1 addition & 1 deletion libs/did-provider-key/src/keyDidResolver.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,6 @@ export const resolveDidKey: DIDResolver = async (
*
* @public
*/
export function getMascaDidKeyResolver() {
export function getDidKeyResolver() {
return { key: resolveDidKey };
}
6 changes: 3 additions & 3 deletions libs/did-provider-key/tests/agent.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ import { KeyManagementSystem, SecretBox } from '@veramo/kms-local';
import { Resolver } from 'did-resolver';
import { DataSource, type DataSourceOptions } from 'typeorm';

import { getMascaDidKeyResolver, MascaKeyDidProvider } from '../src/index.js';
import { getDidKeyResolver, KeyDIDProvider } from '../src/index.js';
import plugin from './plugin';

jest.setTimeout(60000);
Expand Down Expand Up @@ -79,14 +79,14 @@ const setup = async (options?: IAgentOptions): Promise<boolean> => {
store: new DIDStore(dbConnection),
defaultProvider: 'did:key',
providers: {
'did:key': new MascaKeyDidProvider({
'did:key': new KeyDIDProvider({
defaultKms: 'local',
}),
},
}),
new DIDResolverPlugin({
resolver: new Resolver({
...getMascaDidKeyResolver(),
...getDidKeyResolver(),
}),
}),
new CredentialPlugin(),
Expand Down
1 change: 1 addition & 0 deletions packages/dapp/.eslintrc.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
module.exports = {
root: true,
extends: ['next/core-web-vitals', '../../.eslintrc.cjs'],
ignorePatterns: ['**/src/utils/typia-generated/*.ts'],
parserOptions: {
tsconfigRootDir: __dirname,
project: './tsconfig.eslint.json',
Expand Down
1 change: 1 addition & 0 deletions packages/dapp/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,4 @@ next-env.d.ts

robots.txt
sitemap.xml
src/utils/typia-generated
1 change: 1 addition & 0 deletions packages/dapp/.prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ dist
node_modules
.next
out
src/utils/typia-generated/*.ts
2 changes: 1 addition & 1 deletion packages/dapp/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
FROM blockchain-lab-um/masca:latest as builder

FROM node:18.15-alpine
FROM node:18.16.0-alpine3.16

# Create app directory
RUN mkdir -p /app
Expand Down
2 changes: 1 addition & 1 deletion packages/dapp/next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const nextConfig = {
reactStrictMode: true,
swcMinify: true,
// https://nextjs.org/docs/advanced-features/output-file-tracing#automatically-copying-traced-files
// output: 'standalone',
output: process.env.DOCKER_BUILD === 'true' ? 'standalone' : undefined,
// https://nextjs.org/docs/messages/next-image-unconfigured-host
images: {
domains: ['localhost'],
Expand Down
8 changes: 5 additions & 3 deletions packages/dapp/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,15 @@
"build:docker": "pnpm build",
"dev": "cross-env USE_LOCAL='true' next dev",
"docker:build": "docker build . -t blockchain-lab-um/dapp:latest",
"postinstall": "pnpm prisma generate --schema=./prisma/schema.prisma",
"postinstall": "pnpm prisma generate --schema=./prisma/schema.prisma && pnpm typia:generate",
"lint": "pnpm lint:next && pnpm lint:tsc && pnpm lint:prettier && pnpm lint:stylelint",
"lint:fix": "next lint . --fix && prettier . --write",
"lint:next": "next lint",
"lint:prettier": "prettier . --check",
"lint:stylelint": "stylelint \"src/**/*.{css,scss}\"",
"lint:tsc": "tsc -p tsconfig.json --noEmit --incremental false",
"start": "next start"
"start": "next start",
"typia:generate": "pnpm typia generate --input src/utils/typia-templates --output src/utils/typia-generated --project tsconfig.json"
},
"dependencies": {
"@blockchain-lab-um/masca-connector": "*",
Expand All @@ -43,14 +44,14 @@
"next-intl": "2.15.0-beta.5",
"next-sitemap": "^4.1.3",
"next-themes": "^0.2.1",
"prettier-plugin-tailwindcss": "^0.3.0",
"prop-types": "^15.8.1",
"qrcode.react": "^3.1.0",
"qs": "^6.11.2",
"react": "18.2.0",
"react-dom": "18.2.0",
"swr": "^2.2.0",
"tailwind-scrollbar": "^3.0.4",
"typia": "^4.1.2",
"zustand": "^4.3.8"
},
"devDependencies": {
Expand All @@ -72,6 +73,7 @@
"postcss": "^8.4.24",
"prettier": "^2.8.4",
"prettier-plugin-packagejson": "^2.4.3",
"prettier-plugin-tailwindcss": "^0.3.0",
"prisma": "^4.16.1",
"rimraf": "^5.0.1",
"sass": "^1.63.4",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ const FormatedPanel = ({ credential }: FormatedPanelProps) => {
([key, value]: [string, string]) => (
<>
{key === 'id' ? (
<DIDDisplay did={value} />
<DIDDisplay did={value} key={key} />
) : (
<div key={key} className="flex w-full items-center">
<h2 className="dark:text-navy-blue-200 pr-2 font-bold text-gray-900">
Expand Down
15 changes: 14 additions & 1 deletion packages/dapp/src/components/ImportModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@ import Button from '@/components/Button';
import DropdownMultiselect from '@/components/DropdownMultiselect';
import InfoIcon from '@/components/InfoIcon';
import Modal from '@/components/Modal';
import { useMascaStore } from '@/stores';
import { checkVCType } from '@/utils/typia-generated';
import { useMascaStore, useToastStore } from '@/stores';

interface ImportModalProps {
isOpen: boolean;
Expand Down Expand Up @@ -86,6 +87,18 @@ function ImportModal({ isOpen, setOpen, importVC }: ImportModalProps) {
<Button
onClick={async () => {
setLoading(true);
if (!checkVCType(JSON.parse(vc))) {
setTimeout(() => {
useToastStore.setState({
open: true,
title: 'Invalid verifiable credential type',
type: 'error',
loading: false,
});
}, 200);
setLoading(false);
return;
}
const res = await importVC(vc, selectedItems);
if (res) {
setOpen(false);
Expand Down
2 changes: 1 addition & 1 deletion packages/dapp/src/components/MethodDropdownMenu/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ export default function MethodDropdownMenu() {
selected={method === currMethod}
handleBtn={handleMethodChange}
>
{method}
{method === 'did:key:ebsi' ? 'did:key (EBSI)' : method}
</DropdownButton>
))}
</div>
Expand Down
1 change: 1 addition & 0 deletions packages/dapp/src/utils/typia-templates/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './typeChecks';
5 changes: 5 additions & 0 deletions packages/dapp/src/utils/typia-templates/typeChecks.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { VerifiableCredential } from '@veramo/core';
import typia from 'typia';

// Import a type and generate a type check function
export const checkVCType = typia.createIs<VerifiableCredential>();
2 changes: 1 addition & 1 deletion packages/snap/jest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export default {
uint8arrays:
'<rootDir>/../../node_modules/.pnpm/[email protected]/node_modules/uint8arrays/src/index.ts',
'@ipld/dag-cbor':
'<rootDir>/../../node_modules/.pnpm/@didtools+cacao@2.0.0/node_modules/@ipld/dag-cbor/dist/index.min.js',
'<rootDir>/../../node_modules/.pnpm/@didtools+cacao@2.1.0/node_modules/@ipld/dag-cbor/dist/index.min.js',
},
extensionsToTreatAsEsm: ['.ts'],
transformIgnorePatterns: [`/node_modules/(?!${esModules})/`],
Expand Down
2 changes: 1 addition & 1 deletion packages/snap/snap.manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
"registry": "https://registry.npmjs.org"
}
},
"shasum": "OZ+Y1J+wBac/zJqNXZ8uoSIFKF5ePN3N0kxFCJ7WSgY="
"shasum": "N4Byp0ghxO8DmzeLYiZsE+G2vtR91ihXYE4JDVdyfiA="
},
"initialPermissions": {
"endowment:ethereum-provider": {},
Expand Down
8 changes: 4 additions & 4 deletions packages/snap/src/veramo/setup.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import {
MascaKeyDidProvider,
getMascaDidKeyResolver as mascaKeyDidResolver,
KeyDIDProvider,
getDidKeyResolver as keyDidResolver,
} from '@blockchain-lab-um/did-provider-key';
import {
IOIDCClientPlugin,
Expand Down Expand Up @@ -107,7 +107,7 @@ export const getAgent = async (
networks,
});

didProviders['did:key'] = new MascaKeyDidProvider({ defaultKms: 'web3' });
didProviders['did:key'] = new KeyDIDProvider({ defaultKms: 'web3' });
didProviders['did:pkh'] = new PkhDIDProvider({ defaultKms: 'web3' });
didProviders['did:jwk'] = new JwkDIDProvider({ defaultKms: 'web3' });

Expand Down Expand Up @@ -145,7 +145,7 @@ export const getAgent = async (
new DIDResolverPlugin({
resolver: new Resolver({
...ethrDidResolver({ networks }),
...mascaKeyDidResolver(),
...keyDidResolver(),
...pkhDidResolver(),
...jwkDidResolver(),
...universalDidResolver(),
Expand Down
Loading

0 comments on commit 287fece

Please sign in to comment.