@sphereon/ssi-sdk.qr-code-generator 0.34.1-next.6 → 0.34.1-next.85
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.
- package/dist/index.cjs +6 -6
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +6 -6
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.cjs
CHANGED
|
@@ -39,22 +39,22 @@ __export(index_exports, {
|
|
|
39
39
|
module.exports = __toCommonJS(index_exports);
|
|
40
40
|
|
|
41
41
|
// src/types/IQRCodeGenerator.ts
|
|
42
|
-
var QRType = /* @__PURE__ */ function(QRType2) {
|
|
42
|
+
var QRType = /* @__PURE__ */ (function(QRType2) {
|
|
43
43
|
QRType2["URI"] = "uri";
|
|
44
44
|
QRType2["SIOPV2"] = "openid-vc";
|
|
45
45
|
QRType2["DIDCOMM_V2_OOB_INVITATION"] = "https://didcomm.org/out-of-band/2.0/invitation";
|
|
46
46
|
QRType2["OpenID4VCI"] = "openid-credential-offer";
|
|
47
47
|
return QRType2;
|
|
48
|
-
}({});
|
|
49
|
-
var StatusCode = /* @__PURE__ */ function(StatusCode2) {
|
|
48
|
+
})({});
|
|
49
|
+
var StatusCode = /* @__PURE__ */ (function(StatusCode2) {
|
|
50
50
|
StatusCode2["OK"] = "OK";
|
|
51
51
|
StatusCode2["CREATED"] = "CREATED";
|
|
52
52
|
return StatusCode2;
|
|
53
|
-
}({});
|
|
54
|
-
var events = /* @__PURE__ */ function(events2) {
|
|
53
|
+
})({});
|
|
54
|
+
var events = /* @__PURE__ */ (function(events2) {
|
|
55
55
|
events2["QR_CODE_CODE_CREATED"] = "QrCodeCreated";
|
|
56
56
|
return events2;
|
|
57
|
-
}({});
|
|
57
|
+
})({});
|
|
58
58
|
|
|
59
59
|
// src/agent/utils/react-qr.tsx
|
|
60
60
|
var import_react_qr_code = __toESM(require("react-qr-code"), 1);
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/types/IQRCodeGenerator.ts","../src/agent/utils/react-qr.tsx","../src/agent/utils/didcomm-oob-message.tsx","../src/agent/QrCodeProvider.tsx"],"sourcesContent":["/**\n * @public\n */\n\nexport * from './agent/QrCodeProvider'\nexport * from './types/IQRCodeGenerator'\n","import { IAgentContext, IPluginMethodMap } from '@veramo/core'\n\nexport interface IQRCodeGenerator extends IPluginMethodMap {\n qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element>\n\n qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string>\n\n qrSIOPv2Element(args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n\n qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string>\n\n qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element>\n\n qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n qrOpenID4VCIValue(args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<string>\n}\n\nexport interface CreateValueArgs<T extends QRType, D> {\n onGenerate?: (result: ValueResult<T, D>) => void\n data: QRData<T, D>\n}\n\nexport interface CreateElementArgs<T extends QRType, D> extends CreateValueArgs<T, D> {\n renderingProps: QRRenderingProps\n}\n\nexport interface ValueResult<T extends QRType, D> {\n id: string\n value: string\n data: QRData<T, D>\n renderingProps?: QRRenderingProps\n context?: IRequiredContext\n}\n\nexport enum QRType {\n URI = 'uri',\n SIOPV2 = 'openid-vc',\n DIDCOMM_V2_OOB_INVITATION = 'https://didcomm.org/out-of-band/2.0/invitation',\n OpenID4VCI = 'openid-credential-offer',\n}\n\nexport type SIOPv2Scheme = 'openid' | 'openid-vc' | string\nexport interface SIOPv2DataWithScheme {\n scheme?: SIOPv2Scheme\n requestUri: string\n}\n\nexport type OpenID4VCIScheme = 'openid-credential-offer' | 'https' | string\nexport interface OpenID4VCIDataWithScheme {\n scheme?: OpenID4VCIScheme\n baseUri?: string\n credentialOfferUri?: string\n credentialOffer?: string\n}\n\nexport interface DIDCommV2OOBInvitationData {\n baseURI: string\n oobInvitation: DIDCommV2OOBInvitation\n}\n\n/**\n * {\n * \"type\": \"https://didcomm.org/out-of-band/2.0/invitation\",\n * \"id\": \"599f3638-b563-4937-9487-dfe55099d900\",\n * \"from\": \"did:example:verifier\",\n * \"body\": {\n * \"goal_code\": \"streamlined-vp\",\n * \"accept\": ['didcomm/v2']\n * }\n * }\n */\nexport interface DIDCommV2OOBInvitation {\n type: 'https://didcomm.org/out-of-band/2.0/invitation'\n id: string\n from: DID\n\n body: Body\n}\n\nexport type URIData = string\n\nexport type DID = string\n\nexport interface Body {\n goal_code: GoalCode\n accept: [AcceptMode]\n}\n\nexport type GoalCode = 'streamlined-vp' | 'streamlined-vc'\n\nexport type AcceptMode = 'didcomm/v2' | string\n\n/*OIDC4VP = 'oidc4vp',\nSIOPV2_WITH_OIDC4VP = 'siopv2+oidc4vp',\nSIOP_V2 = 'siopv2',*/\n\nexport enum StatusCode {\n OK = 'OK',\n CREATED = 'CREATED',\n}\n\nexport interface QRData<T extends QRType, D> {\n id: string\n type: T\n object: D\n}\n\nexport interface QRRenderingProps {\n bgColor?: string\n fgColor?: string\n level?: 'L' | 'M' | 'Q' | 'H'\n size?: number\n title?: string\n}\n\nexport enum events {\n QR_CODE_CODE_CREATED = 'QrCodeCreated',\n}\n\nexport type IRequiredContext = IAgentContext<Record<string, never>>\n","import { CreateElementArgs, CreateValueArgs, events, IRequiredContext, QRType, ValueResult } from '../../types/IQRCodeGenerator'\nimport QRCode from 'react-qr-code'\nimport React from 'react'\n\nexport async function generateQRCodeValue<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n return generateQRCodeValueImpl(args, args, context)\n}\n\nexport async function generateQRCodeValueImpl<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n orig: CreateValueArgs<T, any> | CreateElementArgs<T, any>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n const { onGenerate } = orig\n const { id } = orig.data\n\n const value = args.data.object\n\n const result: ValueResult<T, string> = {\n id,\n value,\n data: orig.data,\n renderingProps: 'renderingProps' in orig ? orig.renderingProps : undefined,\n context,\n }\n\n if (onGenerate) {\n onGenerate(result)\n }\n if (context) {\n context.agent.emit(events.QR_CODE_CODE_CREATED, result)\n }\n\n return result\n}\n\nexport async function generateQRCodeReactElement<T extends QRType>(\n args: CreateElementArgs<T, string>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n return generateQRCodeReactElementImpl(args, args, context)\n}\n\nexport async function generateQRCodeReactElementImpl<T extends QRType>(\n args: CreateElementArgs<T, string>,\n orig: CreateElementArgs<T, any>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n const { renderingProps } = args\n const { bgColor, fgColor, level, size, title } = renderingProps\n const result: ValueResult<T, string> = await generateQRCodeValueImpl(args, orig, context)\n\n // @ts-ignore\n return <QRCode value={result.value} bgColor={bgColor} fgColor={fgColor} level={level} size={size} title={title} />\n}\n","import { DIDCommV2OOBInvitation } from '../../types/IQRCodeGenerator'\nimport base64url from 'base64url'\n\nexport class DidCommOutOfBandMessage {\n public static toJson(props: DIDCommV2OOBInvitation): string {\n return JSON.stringify(props).replace('goalCode', 'goal-code')\n }\n\n public static urlEncode(payload: DIDCommV2OOBInvitation) {\n return base64url(this.toJson(payload))\n }\n}\n","import { IAgentPlugin } from '@veramo/core'\n\nimport {\n CreateElementArgs,\n CreateValueArgs,\n DIDCommV2OOBInvitationData,\n IQRCodeGenerator,\n IRequiredContext,\n OpenID4VCIDataWithScheme,\n QRType,\n SIOPv2DataWithScheme,\n URIData,\n} from '../types/IQRCodeGenerator'\nimport { DidCommOutOfBandMessage, generateQRCodeReactElement } from './utils'\nimport { generateQRCodeReactElementImpl } from './utils/react-qr'\n\n/**\n * {@inheritDoc IQRCodeGenerator}\n */\nexport class QrCodeProvider implements IAgentPlugin {\n readonly methods: IQRCodeGenerator = {\n qrDIDCommOobInvitationElement: QrCodeProvider.qrDIDCommOobInvitationElement.bind(this),\n qrDIDCommOobInvitationValue: QrCodeProvider.qrDIDCommOobInvitationValue.bind(this),\n qrSIOPv2Element: QrCodeProvider.qrSIOPv2Element.bind(this),\n qrSIOPv2Value: QrCodeProvider.qrSIOPv2Value.bind(this),\n qrURIElement: QrCodeProvider.qrURIElement.bind(this),\n qrOpenID4VCIElement: QrCodeProvider.qrOpenID4VCIElement.bind(this),\n qrOpenID4VCIValue: QrCodeProvider.qrOpenID4VCIValue.bind(this),\n }\n\n /** {@inheritDoc IQRCodeGenerator.uriElement} */\n\n private static async qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element> {\n return generateQRCodeReactElement(args, context)\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationValue} */\n private static async qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n const encoded = DidCommOutOfBandMessage.urlEncode(object.oobInvitation)\n const delim = object.baseURI.includes('?') ? '&' : '?'\n return object.baseURI.includes('oob=') ? object.baseURI.replace('oob=', `oob=${encoded}`) : `${object.baseURI}${delim}_oob=${encoded}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationElement} */\n private static async qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrDIDCommOobInvitationValue(args, context)\n return generateQRCodeReactElementImpl(\n {\n ...args,\n data: { ...args.data, object: content },\n } as CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Value} */\n private static async qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string> {\n const { object } = args.data\n if (typeof object === 'string') {\n return object\n }\n\n const scheme = (object.scheme ?? 'openid-vc://').replace('://?', '').replace('://', '') + '://'\n const requestUri = `request_uri=${object.requestUri.replace('request_uri=', '')}`\n return `${scheme}?${requestUri}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Element} */\n private static async qrSIOPv2Element(\n args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrSIOPv2Value(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.SIOPV2, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIElement} */\n private static async qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, any>, context: IRequiredContext): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrOpenID4VCIValue(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.OpenID4VCI, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIValue} */\n private static async qrOpenID4VCIValue(\n args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n if (!object.credentialOffer && !object.credentialOfferUri) {\n throw new Error('Please provide credential_offer or credential_offer_uri')\n }\n const scheme = (object.scheme ?? 'openid-credential-offer://').replace('://?', '').replace('://', '') + '://'\n const baseUri = object.baseUri ?? ''\n let url\n const splitBaseUri = baseUri.split('://')\n const hasScheme = splitBaseUri.length > 1\n if (hasScheme && object.scheme) {\n if (splitBaseUri[0] !== object.scheme) {\n throw new Error('The uri must contain the same scheme or omit it')\n }\n url = `${baseUri}`\n } else {\n url = `${scheme}${baseUri}`\n }\n const credentialOfferUri = `?credential_offer_uri=${object.credentialOfferUri?.replace('credential_offer_uri=', '')}`\n const credentialOffer = `?credential_offer=${object.credentialOffer?.replace('credential_offer=', '')}`\n const value = object.credentialOffer ? credentialOffer : credentialOfferUri\n return `${url}${value}`\n }\n}\n"],"mappings":"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","names":["QRType","StatusCode","events","generateQRCodeValueImpl","args","orig","context","onGenerate","id","data","value","object","result","renderingProps","undefined","agent","emit","events","QR_CODE_CODE_CREATED","generateQRCodeReactElement","generateQRCodeReactElementImpl","bgColor","fgColor","level","size","title","React","QRCode","DidCommOutOfBandMessage","toJson","props","JSON","stringify","replace","urlEncode","payload","base64url","QrCodeProvider","methods","qrDIDCommOobInvitationElement","bind","qrDIDCommOobInvitationValue","qrSIOPv2Element","qrSIOPv2Value","qrURIElement","qrOpenID4VCIElement","qrOpenID4VCIValue","args","context","generateQRCodeReactElement","object","data","encoded","DidCommOutOfBandMessage","urlEncode","oobInvitation","delim","baseURI","includes","replace","content","generateQRCodeReactElementImpl","scheme","requestUri","credentialOffer","credentialOfferUri","Error","baseUri","url","splitBaseUri","split","hasScheme","length","value"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/types/IQRCodeGenerator.ts","../src/agent/utils/react-qr.tsx","../src/agent/utils/didcomm-oob-message.tsx","../src/agent/QrCodeProvider.tsx"],"sourcesContent":["/**\n * @public\n */\n\nexport * from './agent/QrCodeProvider'\nexport * from './types/IQRCodeGenerator'\n","import { IAgentContext, IPluginMethodMap } from '@veramo/core'\n\nexport interface IQRCodeGenerator extends IPluginMethodMap {\n qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element>\n\n qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string>\n\n qrSIOPv2Element(args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n\n qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string>\n\n qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element>\n\n qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n qrOpenID4VCIValue(args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<string>\n}\n\nexport interface CreateValueArgs<T extends QRType, D> {\n onGenerate?: (result: ValueResult<T, D>) => void\n data: QRData<T, D>\n}\n\nexport interface CreateElementArgs<T extends QRType, D> extends CreateValueArgs<T, D> {\n renderingProps: QRRenderingProps\n}\n\nexport interface ValueResult<T extends QRType, D> {\n id: string\n value: string\n data: QRData<T, D>\n renderingProps?: QRRenderingProps\n context?: IRequiredContext\n}\n\nexport enum QRType {\n URI = 'uri',\n SIOPV2 = 'openid-vc',\n DIDCOMM_V2_OOB_INVITATION = 'https://didcomm.org/out-of-band/2.0/invitation',\n OpenID4VCI = 'openid-credential-offer',\n}\n\nexport type SIOPv2Scheme = 'openid' | 'openid-vc' | string\nexport interface SIOPv2DataWithScheme {\n scheme?: SIOPv2Scheme\n requestUri: string\n}\n\nexport type OpenID4VCIScheme = 'openid-credential-offer' | 'https' | string\nexport interface OpenID4VCIDataWithScheme {\n scheme?: OpenID4VCIScheme\n baseUri?: string\n credentialOfferUri?: string\n credentialOffer?: string\n}\n\nexport interface DIDCommV2OOBInvitationData {\n baseURI: string\n oobInvitation: DIDCommV2OOBInvitation\n}\n\n/**\n * {\n * \"type\": \"https://didcomm.org/out-of-band/2.0/invitation\",\n * \"id\": \"599f3638-b563-4937-9487-dfe55099d900\",\n * \"from\": \"did:example:verifier\",\n * \"body\": {\n * \"goal_code\": \"streamlined-vp\",\n * \"accept\": ['didcomm/v2']\n * }\n * }\n */\nexport interface DIDCommV2OOBInvitation {\n type: 'https://didcomm.org/out-of-band/2.0/invitation'\n id: string\n from: DID\n\n body: Body\n}\n\nexport type URIData = string\n\nexport type DID = string\n\nexport interface Body {\n goal_code: GoalCode\n accept: [AcceptMode]\n}\n\nexport type GoalCode = 'streamlined-vp' | 'streamlined-vc'\n\nexport type AcceptMode = 'didcomm/v2' | string\n\n/*OIDC4VP = 'oidc4vp',\nSIOPV2_WITH_OIDC4VP = 'siopv2+oidc4vp',\nSIOP_V2 = 'siopv2',*/\n\nexport enum StatusCode {\n OK = 'OK',\n CREATED = 'CREATED',\n}\n\nexport interface QRData<T extends QRType, D> {\n id: string\n type: T\n object: D\n}\n\nexport interface QRRenderingProps {\n bgColor?: string\n fgColor?: string\n level?: 'L' | 'M' | 'Q' | 'H'\n size?: number\n title?: string\n}\n\nexport enum events {\n QR_CODE_CODE_CREATED = 'QrCodeCreated',\n}\n\nexport type IRequiredContext = IAgentContext<Record<string, never>>\n","import { CreateElementArgs, CreateValueArgs, events, IRequiredContext, QRType, ValueResult } from '../../types/IQRCodeGenerator'\nimport QRCode from 'react-qr-code'\nimport React from 'react'\n\nexport async function generateQRCodeValue<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n return generateQRCodeValueImpl(args, args, context)\n}\n\nexport async function generateQRCodeValueImpl<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n orig: CreateValueArgs<T, any> | CreateElementArgs<T, any>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n const { onGenerate } = orig\n const { id } = orig.data\n\n const value = args.data.object\n\n const result: ValueResult<T, string> = {\n id,\n value,\n data: orig.data,\n renderingProps: 'renderingProps' in orig ? orig.renderingProps : undefined,\n context,\n }\n\n if (onGenerate) {\n onGenerate(result)\n }\n if (context) {\n context.agent.emit(events.QR_CODE_CODE_CREATED, result)\n }\n\n return result\n}\n\nexport async function generateQRCodeReactElement<T extends QRType>(\n args: CreateElementArgs<T, string>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n return generateQRCodeReactElementImpl(args, args, context)\n}\n\nexport async function generateQRCodeReactElementImpl<T extends QRType>(\n args: CreateElementArgs<T, string>,\n orig: CreateElementArgs<T, any>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n const { renderingProps } = args\n const { bgColor, fgColor, level, size, title } = renderingProps\n const result: ValueResult<T, string> = await generateQRCodeValueImpl(args, orig, context)\n\n // @ts-ignore\n return <QRCode value={result.value} bgColor={bgColor} fgColor={fgColor} level={level} size={size} title={title} />\n}\n","import { DIDCommV2OOBInvitation } from '../../types/IQRCodeGenerator'\nimport base64url from 'base64url'\n\nexport class DidCommOutOfBandMessage {\n public static toJson(props: DIDCommV2OOBInvitation): string {\n return JSON.stringify(props).replace('goalCode', 'goal-code')\n }\n\n public static urlEncode(payload: DIDCommV2OOBInvitation) {\n return base64url(this.toJson(payload))\n }\n}\n","import { IAgentPlugin } from '@veramo/core'\n\nimport {\n CreateElementArgs,\n CreateValueArgs,\n DIDCommV2OOBInvitationData,\n IQRCodeGenerator,\n IRequiredContext,\n OpenID4VCIDataWithScheme,\n QRType,\n SIOPv2DataWithScheme,\n URIData,\n} from '../types/IQRCodeGenerator'\nimport { DidCommOutOfBandMessage, generateQRCodeReactElement } from './utils'\nimport { generateQRCodeReactElementImpl } from './utils/react-qr'\n\n/**\n * {@inheritDoc IQRCodeGenerator}\n */\nexport class QrCodeProvider implements IAgentPlugin {\n readonly methods: IQRCodeGenerator = {\n qrDIDCommOobInvitationElement: QrCodeProvider.qrDIDCommOobInvitationElement.bind(this),\n qrDIDCommOobInvitationValue: QrCodeProvider.qrDIDCommOobInvitationValue.bind(this),\n qrSIOPv2Element: QrCodeProvider.qrSIOPv2Element.bind(this),\n qrSIOPv2Value: QrCodeProvider.qrSIOPv2Value.bind(this),\n qrURIElement: QrCodeProvider.qrURIElement.bind(this),\n qrOpenID4VCIElement: QrCodeProvider.qrOpenID4VCIElement.bind(this),\n qrOpenID4VCIValue: QrCodeProvider.qrOpenID4VCIValue.bind(this),\n }\n\n /** {@inheritDoc IQRCodeGenerator.uriElement} */\n\n private static async qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element> {\n return generateQRCodeReactElement(args, context)\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationValue} */\n private static async qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n const encoded = DidCommOutOfBandMessage.urlEncode(object.oobInvitation)\n const delim = object.baseURI.includes('?') ? '&' : '?'\n return object.baseURI.includes('oob=') ? object.baseURI.replace('oob=', `oob=${encoded}`) : `${object.baseURI}${delim}_oob=${encoded}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationElement} */\n private static async qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrDIDCommOobInvitationValue(args, context)\n return generateQRCodeReactElementImpl(\n {\n ...args,\n data: { ...args.data, object: content },\n } as CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Value} */\n private static async qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string> {\n const { object } = args.data\n if (typeof object === 'string') {\n return object\n }\n\n const scheme = (object.scheme ?? 'openid-vc://').replace('://?', '').replace('://', '') + '://'\n const requestUri = `request_uri=${object.requestUri.replace('request_uri=', '')}`\n return `${scheme}?${requestUri}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Element} */\n private static async qrSIOPv2Element(\n args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrSIOPv2Value(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.SIOPV2, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIElement} */\n private static async qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, any>, context: IRequiredContext): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrOpenID4VCIValue(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.OpenID4VCI, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIValue} */\n private static async qrOpenID4VCIValue(\n args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n if (!object.credentialOffer && !object.credentialOfferUri) {\n throw new Error('Please provide credential_offer or credential_offer_uri')\n }\n const scheme = (object.scheme ?? 'openid-credential-offer://').replace('://?', '').replace('://', '') + '://'\n const baseUri = object.baseUri ?? ''\n let url\n const splitBaseUri = baseUri.split('://')\n const hasScheme = splitBaseUri.length > 1\n if (hasScheme && object.scheme) {\n if (splitBaseUri[0] !== object.scheme) {\n throw new Error('The uri must contain the same scheme or omit it')\n }\n url = `${baseUri}`\n } else {\n url = `${scheme}${baseUri}`\n }\n const credentialOfferUri = `?credential_offer_uri=${object.credentialOfferUri?.replace('credential_offer_uri=', '')}`\n const credentialOffer = `?credential_offer=${object.credentialOffer?.replace('credential_offer=', '')}`\n const value = object.credentialOffer ? credentialOffer : credentialOfferUri\n return `${url}${value}`\n }\n}\n"],"mappings":"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","names":["QRType","StatusCode","events","generateQRCodeValueImpl","args","orig","context","onGenerate","id","data","value","object","result","renderingProps","undefined","agent","emit","events","QR_CODE_CODE_CREATED","generateQRCodeReactElement","generateQRCodeReactElementImpl","bgColor","fgColor","level","size","title","React","QRCode","DidCommOutOfBandMessage","toJson","props","JSON","stringify","replace","urlEncode","payload","base64url","QrCodeProvider","methods","qrDIDCommOobInvitationElement","bind","qrDIDCommOobInvitationValue","qrSIOPv2Element","qrSIOPv2Value","qrURIElement","qrOpenID4VCIElement","qrOpenID4VCIValue","args","context","generateQRCodeReactElement","object","data","encoded","DidCommOutOfBandMessage","urlEncode","oobInvitation","delim","baseURI","includes","replace","content","generateQRCodeReactElementImpl","scheme","requestUri","credentialOffer","credentialOfferUri","Error","baseUri","url","splitBaseUri","split","hasScheme","length","value"]}
|
package/dist/index.js
CHANGED
|
@@ -2,22 +2,22 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
4
|
// src/types/IQRCodeGenerator.ts
|
|
5
|
-
var QRType = /* @__PURE__ */ function(QRType2) {
|
|
5
|
+
var QRType = /* @__PURE__ */ (function(QRType2) {
|
|
6
6
|
QRType2["URI"] = "uri";
|
|
7
7
|
QRType2["SIOPV2"] = "openid-vc";
|
|
8
8
|
QRType2["DIDCOMM_V2_OOB_INVITATION"] = "https://didcomm.org/out-of-band/2.0/invitation";
|
|
9
9
|
QRType2["OpenID4VCI"] = "openid-credential-offer";
|
|
10
10
|
return QRType2;
|
|
11
|
-
}({});
|
|
12
|
-
var StatusCode = /* @__PURE__ */ function(StatusCode2) {
|
|
11
|
+
})({});
|
|
12
|
+
var StatusCode = /* @__PURE__ */ (function(StatusCode2) {
|
|
13
13
|
StatusCode2["OK"] = "OK";
|
|
14
14
|
StatusCode2["CREATED"] = "CREATED";
|
|
15
15
|
return StatusCode2;
|
|
16
|
-
}({});
|
|
17
|
-
var events = /* @__PURE__ */ function(events2) {
|
|
16
|
+
})({});
|
|
17
|
+
var events = /* @__PURE__ */ (function(events2) {
|
|
18
18
|
events2["QR_CODE_CODE_CREATED"] = "QrCodeCreated";
|
|
19
19
|
return events2;
|
|
20
|
-
}({});
|
|
20
|
+
})({});
|
|
21
21
|
|
|
22
22
|
// src/agent/utils/react-qr.tsx
|
|
23
23
|
import QRCode from "react-qr-code";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/types/IQRCodeGenerator.ts","../src/agent/utils/react-qr.tsx","../src/agent/utils/didcomm-oob-message.tsx","../src/agent/QrCodeProvider.tsx"],"sourcesContent":["import { IAgentContext, IPluginMethodMap } from '@veramo/core'\n\nexport interface IQRCodeGenerator extends IPluginMethodMap {\n qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element>\n\n qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string>\n\n qrSIOPv2Element(args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n\n qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string>\n\n qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element>\n\n qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n qrOpenID4VCIValue(args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<string>\n}\n\nexport interface CreateValueArgs<T extends QRType, D> {\n onGenerate?: (result: ValueResult<T, D>) => void\n data: QRData<T, D>\n}\n\nexport interface CreateElementArgs<T extends QRType, D> extends CreateValueArgs<T, D> {\n renderingProps: QRRenderingProps\n}\n\nexport interface ValueResult<T extends QRType, D> {\n id: string\n value: string\n data: QRData<T, D>\n renderingProps?: QRRenderingProps\n context?: IRequiredContext\n}\n\nexport enum QRType {\n URI = 'uri',\n SIOPV2 = 'openid-vc',\n DIDCOMM_V2_OOB_INVITATION = 'https://didcomm.org/out-of-band/2.0/invitation',\n OpenID4VCI = 'openid-credential-offer',\n}\n\nexport type SIOPv2Scheme = 'openid' | 'openid-vc' | string\nexport interface SIOPv2DataWithScheme {\n scheme?: SIOPv2Scheme\n requestUri: string\n}\n\nexport type OpenID4VCIScheme = 'openid-credential-offer' | 'https' | string\nexport interface OpenID4VCIDataWithScheme {\n scheme?: OpenID4VCIScheme\n baseUri?: string\n credentialOfferUri?: string\n credentialOffer?: string\n}\n\nexport interface DIDCommV2OOBInvitationData {\n baseURI: string\n oobInvitation: DIDCommV2OOBInvitation\n}\n\n/**\n * {\n * \"type\": \"https://didcomm.org/out-of-band/2.0/invitation\",\n * \"id\": \"599f3638-b563-4937-9487-dfe55099d900\",\n * \"from\": \"did:example:verifier\",\n * \"body\": {\n * \"goal_code\": \"streamlined-vp\",\n * \"accept\": ['didcomm/v2']\n * }\n * }\n */\nexport interface DIDCommV2OOBInvitation {\n type: 'https://didcomm.org/out-of-band/2.0/invitation'\n id: string\n from: DID\n\n body: Body\n}\n\nexport type URIData = string\n\nexport type DID = string\n\nexport interface Body {\n goal_code: GoalCode\n accept: [AcceptMode]\n}\n\nexport type GoalCode = 'streamlined-vp' | 'streamlined-vc'\n\nexport type AcceptMode = 'didcomm/v2' | string\n\n/*OIDC4VP = 'oidc4vp',\nSIOPV2_WITH_OIDC4VP = 'siopv2+oidc4vp',\nSIOP_V2 = 'siopv2',*/\n\nexport enum StatusCode {\n OK = 'OK',\n CREATED = 'CREATED',\n}\n\nexport interface QRData<T extends QRType, D> {\n id: string\n type: T\n object: D\n}\n\nexport interface QRRenderingProps {\n bgColor?: string\n fgColor?: string\n level?: 'L' | 'M' | 'Q' | 'H'\n size?: number\n title?: string\n}\n\nexport enum events {\n QR_CODE_CODE_CREATED = 'QrCodeCreated',\n}\n\nexport type IRequiredContext = IAgentContext<Record<string, never>>\n","import { CreateElementArgs, CreateValueArgs, events, IRequiredContext, QRType, ValueResult } from '../../types/IQRCodeGenerator'\nimport QRCode from 'react-qr-code'\nimport React from 'react'\n\nexport async function generateQRCodeValue<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n return generateQRCodeValueImpl(args, args, context)\n}\n\nexport async function generateQRCodeValueImpl<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n orig: CreateValueArgs<T, any> | CreateElementArgs<T, any>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n const { onGenerate } = orig\n const { id } = orig.data\n\n const value = args.data.object\n\n const result: ValueResult<T, string> = {\n id,\n value,\n data: orig.data,\n renderingProps: 'renderingProps' in orig ? orig.renderingProps : undefined,\n context,\n }\n\n if (onGenerate) {\n onGenerate(result)\n }\n if (context) {\n context.agent.emit(events.QR_CODE_CODE_CREATED, result)\n }\n\n return result\n}\n\nexport async function generateQRCodeReactElement<T extends QRType>(\n args: CreateElementArgs<T, string>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n return generateQRCodeReactElementImpl(args, args, context)\n}\n\nexport async function generateQRCodeReactElementImpl<T extends QRType>(\n args: CreateElementArgs<T, string>,\n orig: CreateElementArgs<T, any>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n const { renderingProps } = args\n const { bgColor, fgColor, level, size, title } = renderingProps\n const result: ValueResult<T, string> = await generateQRCodeValueImpl(args, orig, context)\n\n // @ts-ignore\n return <QRCode value={result.value} bgColor={bgColor} fgColor={fgColor} level={level} size={size} title={title} />\n}\n","import { DIDCommV2OOBInvitation } from '../../types/IQRCodeGenerator'\nimport base64url from 'base64url'\n\nexport class DidCommOutOfBandMessage {\n public static toJson(props: DIDCommV2OOBInvitation): string {\n return JSON.stringify(props).replace('goalCode', 'goal-code')\n }\n\n public static urlEncode(payload: DIDCommV2OOBInvitation) {\n return base64url(this.toJson(payload))\n }\n}\n","import { IAgentPlugin } from '@veramo/core'\n\nimport {\n CreateElementArgs,\n CreateValueArgs,\n DIDCommV2OOBInvitationData,\n IQRCodeGenerator,\n IRequiredContext,\n OpenID4VCIDataWithScheme,\n QRType,\n SIOPv2DataWithScheme,\n URIData,\n} from '../types/IQRCodeGenerator'\nimport { DidCommOutOfBandMessage, generateQRCodeReactElement } from './utils'\nimport { generateQRCodeReactElementImpl } from './utils/react-qr'\n\n/**\n * {@inheritDoc IQRCodeGenerator}\n */\nexport class QrCodeProvider implements IAgentPlugin {\n readonly methods: IQRCodeGenerator = {\n qrDIDCommOobInvitationElement: QrCodeProvider.qrDIDCommOobInvitationElement.bind(this),\n qrDIDCommOobInvitationValue: QrCodeProvider.qrDIDCommOobInvitationValue.bind(this),\n qrSIOPv2Element: QrCodeProvider.qrSIOPv2Element.bind(this),\n qrSIOPv2Value: QrCodeProvider.qrSIOPv2Value.bind(this),\n qrURIElement: QrCodeProvider.qrURIElement.bind(this),\n qrOpenID4VCIElement: QrCodeProvider.qrOpenID4VCIElement.bind(this),\n qrOpenID4VCIValue: QrCodeProvider.qrOpenID4VCIValue.bind(this),\n }\n\n /** {@inheritDoc IQRCodeGenerator.uriElement} */\n\n private static async qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element> {\n return generateQRCodeReactElement(args, context)\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationValue} */\n private static async qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n const encoded = DidCommOutOfBandMessage.urlEncode(object.oobInvitation)\n const delim = object.baseURI.includes('?') ? '&' : '?'\n return object.baseURI.includes('oob=') ? object.baseURI.replace('oob=', `oob=${encoded}`) : `${object.baseURI}${delim}_oob=${encoded}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationElement} */\n private static async qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrDIDCommOobInvitationValue(args, context)\n return generateQRCodeReactElementImpl(\n {\n ...args,\n data: { ...args.data, object: content },\n } as CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Value} */\n private static async qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string> {\n const { object } = args.data\n if (typeof object === 'string') {\n return object\n }\n\n const scheme = (object.scheme ?? 'openid-vc://').replace('://?', '').replace('://', '') + '://'\n const requestUri = `request_uri=${object.requestUri.replace('request_uri=', '')}`\n return `${scheme}?${requestUri}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Element} */\n private static async qrSIOPv2Element(\n args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrSIOPv2Value(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.SIOPV2, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIElement} */\n private static async qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, any>, context: IRequiredContext): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrOpenID4VCIValue(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.OpenID4VCI, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIValue} */\n private static async qrOpenID4VCIValue(\n args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n if (!object.credentialOffer && !object.credentialOfferUri) {\n throw new Error('Please provide credential_offer or credential_offer_uri')\n }\n const scheme = (object.scheme ?? 'openid-credential-offer://').replace('://?', '').replace('://', '') + '://'\n const baseUri = object.baseUri ?? ''\n let url\n const splitBaseUri = baseUri.split('://')\n const hasScheme = splitBaseUri.length > 1\n if (hasScheme && object.scheme) {\n if (splitBaseUri[0] !== object.scheme) {\n throw new Error('The uri must contain the same scheme or omit it')\n }\n url = `${baseUri}`\n } else {\n url = `${scheme}${baseUri}`\n }\n const credentialOfferUri = `?credential_offer_uri=${object.credentialOfferUri?.replace('credential_offer_uri=', '')}`\n const credentialOffer = `?credential_offer=${object.credentialOffer?.replace('credential_offer=', '')}`\n const value = object.credentialOffer ? credentialOffer : credentialOfferUri\n return `${url}${value}`\n }\n}\n"],"mappings":"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","names":["QRType","StatusCode","events","QRCode","React","generateQRCodeValueImpl","args","orig","context","onGenerate","id","data","value","object","result","renderingProps","undefined","agent","emit","events","QR_CODE_CODE_CREATED","generateQRCodeReactElement","generateQRCodeReactElementImpl","bgColor","fgColor","level","size","title","QRCode","base64url","DidCommOutOfBandMessage","toJson","props","JSON","stringify","replace","urlEncode","payload","base64url","QrCodeProvider","methods","qrDIDCommOobInvitationElement","bind","qrDIDCommOobInvitationValue","qrSIOPv2Element","qrSIOPv2Value","qrURIElement","qrOpenID4VCIElement","qrOpenID4VCIValue","args","context","generateQRCodeReactElement","object","data","encoded","DidCommOutOfBandMessage","urlEncode","oobInvitation","delim","baseURI","includes","replace","content","generateQRCodeReactElementImpl","scheme","requestUri","credentialOffer","credentialOfferUri","Error","baseUri","url","splitBaseUri","split","hasScheme","length","value"]}
|
|
1
|
+
{"version":3,"sources":["../src/types/IQRCodeGenerator.ts","../src/agent/utils/react-qr.tsx","../src/agent/utils/didcomm-oob-message.tsx","../src/agent/QrCodeProvider.tsx"],"sourcesContent":["import { IAgentContext, IPluginMethodMap } from '@veramo/core'\n\nexport interface IQRCodeGenerator extends IPluginMethodMap {\n qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element>\n\n qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string>\n\n qrSIOPv2Element(args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n\n qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string>\n\n qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element>\n\n qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<JSX.Element>\n qrOpenID4VCIValue(args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>, context: IRequiredContext): Promise<string>\n}\n\nexport interface CreateValueArgs<T extends QRType, D> {\n onGenerate?: (result: ValueResult<T, D>) => void\n data: QRData<T, D>\n}\n\nexport interface CreateElementArgs<T extends QRType, D> extends CreateValueArgs<T, D> {\n renderingProps: QRRenderingProps\n}\n\nexport interface ValueResult<T extends QRType, D> {\n id: string\n value: string\n data: QRData<T, D>\n renderingProps?: QRRenderingProps\n context?: IRequiredContext\n}\n\nexport enum QRType {\n URI = 'uri',\n SIOPV2 = 'openid-vc',\n DIDCOMM_V2_OOB_INVITATION = 'https://didcomm.org/out-of-band/2.0/invitation',\n OpenID4VCI = 'openid-credential-offer',\n}\n\nexport type SIOPv2Scheme = 'openid' | 'openid-vc' | string\nexport interface SIOPv2DataWithScheme {\n scheme?: SIOPv2Scheme\n requestUri: string\n}\n\nexport type OpenID4VCIScheme = 'openid-credential-offer' | 'https' | string\nexport interface OpenID4VCIDataWithScheme {\n scheme?: OpenID4VCIScheme\n baseUri?: string\n credentialOfferUri?: string\n credentialOffer?: string\n}\n\nexport interface DIDCommV2OOBInvitationData {\n baseURI: string\n oobInvitation: DIDCommV2OOBInvitation\n}\n\n/**\n * {\n * \"type\": \"https://didcomm.org/out-of-band/2.0/invitation\",\n * \"id\": \"599f3638-b563-4937-9487-dfe55099d900\",\n * \"from\": \"did:example:verifier\",\n * \"body\": {\n * \"goal_code\": \"streamlined-vp\",\n * \"accept\": ['didcomm/v2']\n * }\n * }\n */\nexport interface DIDCommV2OOBInvitation {\n type: 'https://didcomm.org/out-of-band/2.0/invitation'\n id: string\n from: DID\n\n body: Body\n}\n\nexport type URIData = string\n\nexport type DID = string\n\nexport interface Body {\n goal_code: GoalCode\n accept: [AcceptMode]\n}\n\nexport type GoalCode = 'streamlined-vp' | 'streamlined-vc'\n\nexport type AcceptMode = 'didcomm/v2' | string\n\n/*OIDC4VP = 'oidc4vp',\nSIOPV2_WITH_OIDC4VP = 'siopv2+oidc4vp',\nSIOP_V2 = 'siopv2',*/\n\nexport enum StatusCode {\n OK = 'OK',\n CREATED = 'CREATED',\n}\n\nexport interface QRData<T extends QRType, D> {\n id: string\n type: T\n object: D\n}\n\nexport interface QRRenderingProps {\n bgColor?: string\n fgColor?: string\n level?: 'L' | 'M' | 'Q' | 'H'\n size?: number\n title?: string\n}\n\nexport enum events {\n QR_CODE_CODE_CREATED = 'QrCodeCreated',\n}\n\nexport type IRequiredContext = IAgentContext<Record<string, never>>\n","import { CreateElementArgs, CreateValueArgs, events, IRequiredContext, QRType, ValueResult } from '../../types/IQRCodeGenerator'\nimport QRCode from 'react-qr-code'\nimport React from 'react'\n\nexport async function generateQRCodeValue<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n return generateQRCodeValueImpl(args, args, context)\n}\n\nexport async function generateQRCodeValueImpl<T extends QRType>(\n args: CreateValueArgs<T, string> | CreateElementArgs<T, string>,\n orig: CreateValueArgs<T, any> | CreateElementArgs<T, any>,\n context?: IRequiredContext,\n): Promise<ValueResult<T, string>> {\n const { onGenerate } = orig\n const { id } = orig.data\n\n const value = args.data.object\n\n const result: ValueResult<T, string> = {\n id,\n value,\n data: orig.data,\n renderingProps: 'renderingProps' in orig ? orig.renderingProps : undefined,\n context,\n }\n\n if (onGenerate) {\n onGenerate(result)\n }\n if (context) {\n context.agent.emit(events.QR_CODE_CODE_CREATED, result)\n }\n\n return result\n}\n\nexport async function generateQRCodeReactElement<T extends QRType>(\n args: CreateElementArgs<T, string>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n return generateQRCodeReactElementImpl(args, args, context)\n}\n\nexport async function generateQRCodeReactElementImpl<T extends QRType>(\n args: CreateElementArgs<T, string>,\n orig: CreateElementArgs<T, any>,\n context: IRequiredContext,\n): Promise<JSX.Element> {\n const { renderingProps } = args\n const { bgColor, fgColor, level, size, title } = renderingProps\n const result: ValueResult<T, string> = await generateQRCodeValueImpl(args, orig, context)\n\n // @ts-ignore\n return <QRCode value={result.value} bgColor={bgColor} fgColor={fgColor} level={level} size={size} title={title} />\n}\n","import { DIDCommV2OOBInvitation } from '../../types/IQRCodeGenerator'\nimport base64url from 'base64url'\n\nexport class DidCommOutOfBandMessage {\n public static toJson(props: DIDCommV2OOBInvitation): string {\n return JSON.stringify(props).replace('goalCode', 'goal-code')\n }\n\n public static urlEncode(payload: DIDCommV2OOBInvitation) {\n return base64url(this.toJson(payload))\n }\n}\n","import { IAgentPlugin } from '@veramo/core'\n\nimport {\n CreateElementArgs,\n CreateValueArgs,\n DIDCommV2OOBInvitationData,\n IQRCodeGenerator,\n IRequiredContext,\n OpenID4VCIDataWithScheme,\n QRType,\n SIOPv2DataWithScheme,\n URIData,\n} from '../types/IQRCodeGenerator'\nimport { DidCommOutOfBandMessage, generateQRCodeReactElement } from './utils'\nimport { generateQRCodeReactElementImpl } from './utils/react-qr'\n\n/**\n * {@inheritDoc IQRCodeGenerator}\n */\nexport class QrCodeProvider implements IAgentPlugin {\n readonly methods: IQRCodeGenerator = {\n qrDIDCommOobInvitationElement: QrCodeProvider.qrDIDCommOobInvitationElement.bind(this),\n qrDIDCommOobInvitationValue: QrCodeProvider.qrDIDCommOobInvitationValue.bind(this),\n qrSIOPv2Element: QrCodeProvider.qrSIOPv2Element.bind(this),\n qrSIOPv2Value: QrCodeProvider.qrSIOPv2Value.bind(this),\n qrURIElement: QrCodeProvider.qrURIElement.bind(this),\n qrOpenID4VCIElement: QrCodeProvider.qrOpenID4VCIElement.bind(this),\n qrOpenID4VCIValue: QrCodeProvider.qrOpenID4VCIValue.bind(this),\n }\n\n /** {@inheritDoc IQRCodeGenerator.uriElement} */\n\n private static async qrURIElement(args: CreateElementArgs<QRType.URI, URIData>, context: IRequiredContext): Promise<JSX.Element> {\n return generateQRCodeReactElement(args, context)\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationValue} */\n private static async qrDIDCommOobInvitationValue(\n args: CreateValueArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n const encoded = DidCommOutOfBandMessage.urlEncode(object.oobInvitation)\n const delim = object.baseURI.includes('?') ? '&' : '?'\n return object.baseURI.includes('oob=') ? object.baseURI.replace('oob=', `oob=${encoded}`) : `${object.baseURI}${delim}_oob=${encoded}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationElement} */\n private static async qrDIDCommOobInvitationElement(\n args: CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, DIDCommV2OOBInvitationData>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrDIDCommOobInvitationValue(args, context)\n return generateQRCodeReactElementImpl(\n {\n ...args,\n data: { ...args.data, object: content },\n } as CreateElementArgs<QRType.DIDCOMM_V2_OOB_INVITATION, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Value} */\n private static async qrSIOPv2Value(args: CreateValueArgs<QRType.SIOPV2, SIOPv2DataWithScheme>, context: IRequiredContext): Promise<string> {\n const { object } = args.data\n if (typeof object === 'string') {\n return object\n }\n\n const scheme = (object.scheme ?? 'openid-vc://').replace('://?', '').replace('://', '') + '://'\n const requestUri = `request_uri=${object.requestUri.replace('request_uri=', '')}`\n return `${scheme}?${requestUri}`\n }\n\n /** {@inheritDoc IQRCodeGenerator.siopv2Element} */\n private static async qrSIOPv2Element(\n args: CreateElementArgs<QRType.SIOPV2, SIOPv2DataWithScheme>,\n context: IRequiredContext,\n ): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrSIOPv2Value(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.SIOPV2, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIElement} */\n private static async qrOpenID4VCIElement(args: CreateElementArgs<QRType.OpenID4VCI, any>, context: IRequiredContext): Promise<JSX.Element> {\n const content = await QrCodeProvider.qrOpenID4VCIValue(args, context)\n return generateQRCodeReactElementImpl(\n { ...args, data: { ...args.data, object: content } } as CreateElementArgs<QRType.OpenID4VCI, string>,\n args,\n context,\n )\n }\n\n /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIValue} */\n private static async qrOpenID4VCIValue(\n args: CreateValueArgs<QRType.OpenID4VCI, OpenID4VCIDataWithScheme>,\n context: IRequiredContext,\n ): Promise<string> {\n const { object } = args.data\n if (!object.credentialOffer && !object.credentialOfferUri) {\n throw new Error('Please provide credential_offer or credential_offer_uri')\n }\n const scheme = (object.scheme ?? 'openid-credential-offer://').replace('://?', '').replace('://', '') + '://'\n const baseUri = object.baseUri ?? ''\n let url\n const splitBaseUri = baseUri.split('://')\n const hasScheme = splitBaseUri.length > 1\n if (hasScheme && object.scheme) {\n if (splitBaseUri[0] !== object.scheme) {\n throw new Error('The uri must contain the same scheme or omit it')\n }\n url = `${baseUri}`\n } else {\n url = `${scheme}${baseUri}`\n }\n const credentialOfferUri = `?credential_offer_uri=${object.credentialOfferUri?.replace('credential_offer_uri=', '')}`\n const credentialOffer = `?credential_offer=${object.credentialOffer?.replace('credential_offer=', '')}`\n const value = object.credentialOffer ? credentialOffer : credentialOfferUri\n return `${url}${value}`\n }\n}\n"],"mappings":"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","names":["QRType","StatusCode","events","QRCode","React","generateQRCodeValueImpl","args","orig","context","onGenerate","id","data","value","object","result","renderingProps","undefined","agent","emit","events","QR_CODE_CODE_CREATED","generateQRCodeReactElement","generateQRCodeReactElementImpl","bgColor","fgColor","level","size","title","QRCode","base64url","DidCommOutOfBandMessage","toJson","props","JSON","stringify","replace","urlEncode","payload","base64url","QrCodeProvider","methods","qrDIDCommOobInvitationElement","bind","qrDIDCommOobInvitationValue","qrSIOPv2Element","qrSIOPv2Value","qrURIElement","qrOpenID4VCIElement","qrOpenID4VCIValue","args","context","generateQRCodeReactElement","object","data","encoded","DidCommOutOfBandMessage","urlEncode","oobInvitation","delim","baseURI","includes","replace","content","generateQRCodeReactElementImpl","scheme","requestUri","credentialOffer","credentialOfferUri","Error","baseUri","url","splitBaseUri","split","hasScheme","length","value"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sphereon/ssi-sdk.qr-code-generator",
|
|
3
|
-
"version": "0.34.1-next.
|
|
3
|
+
"version": "0.34.1-next.85+019802c5",
|
|
4
4
|
"description": "QR Code provider (react)",
|
|
5
5
|
"source": "src/index.ts",
|
|
6
6
|
"type": "module",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
},
|
|
35
35
|
"devDependencies": {
|
|
36
36
|
"@inrupt/jest-jsdom-polyfills": "^1.8.0",
|
|
37
|
-
"@sphereon/ssi-sdk.agent-config": "0.34.1-next.
|
|
37
|
+
"@sphereon/ssi-sdk.agent-config": "0.34.1-next.85+019802c5",
|
|
38
38
|
"@testing-library/jest-dom": "^5.17.0",
|
|
39
39
|
"@testing-library/react": "^14.3.1",
|
|
40
40
|
"@types/react": "^18.3.3",
|
|
@@ -67,5 +67,5 @@
|
|
|
67
67
|
"OpenID4VCI",
|
|
68
68
|
"QR Code"
|
|
69
69
|
],
|
|
70
|
-
"gitHead": "
|
|
70
|
+
"gitHead": "019802c57e9c1f9e3df4ecbb1d6a17f49e8fdbeb"
|
|
71
71
|
}
|