UNPKG

@sphereon/ssi-sdk.qr-code-generator

Version:

QR Code provider (react)

178 lines (174 loc) • 6.37 kB
var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/types/IQRCodeGenerator.ts var QRType = /* @__PURE__ */ (function(QRType2) { QRType2["URI"] = "uri"; QRType2["SIOPV2"] = "openid-vc"; QRType2["DIDCOMM_V2_OOB_INVITATION"] = "https://didcomm.org/out-of-band/2.0/invitation"; QRType2["OpenID4VCI"] = "openid-credential-offer"; return QRType2; })({}); var StatusCode = /* @__PURE__ */ (function(StatusCode2) { StatusCode2["OK"] = "OK"; StatusCode2["CREATED"] = "CREATED"; return StatusCode2; })({}); var events = /* @__PURE__ */ (function(events2) { events2["QR_CODE_CODE_CREATED"] = "QrCodeCreated"; return events2; })({}); // src/agent/utils/react-qr.tsx import QRCodeImport from "react-qr-code"; import React from "react"; var QRCode = QRCodeImport?.default || QRCodeImport; async function generateQRCodeValueImpl(args, orig, context) { const { onGenerate } = orig; const { id } = orig.data; const value = args.data.object; const result = { id, value, data: orig.data, renderingProps: "renderingProps" in orig ? orig.renderingProps : void 0, context }; if (onGenerate) { onGenerate(result); } if (context) { context.agent.emit(events.QR_CODE_CODE_CREATED, result); } return result; } __name(generateQRCodeValueImpl, "generateQRCodeValueImpl"); async function generateQRCodeReactElement(args, context) { return generateQRCodeReactElementImpl(args, args, context); } __name(generateQRCodeReactElement, "generateQRCodeReactElement"); async function generateQRCodeReactElementImpl(args, orig, context) { const { renderingProps } = args; const { bgColor, fgColor, level, size, title } = renderingProps; const result = await generateQRCodeValueImpl(args, orig, context); return /* @__PURE__ */ React.createElement(QRCode, { value: result.value, bgColor, fgColor, level, size, title }); } __name(generateQRCodeReactElementImpl, "generateQRCodeReactElementImpl"); // src/agent/utils/didcomm-oob-message.tsx import base64url from "base64url"; var DidCommOutOfBandMessage = class { static { __name(this, "DidCommOutOfBandMessage"); } static toJson(props) { return JSON.stringify(props).replace("goalCode", "goal-code"); } static urlEncode(payload) { return base64url(this.toJson(payload)); } }; // src/agent/QrCodeProvider.tsx var QrCodeProvider = class _QrCodeProvider { static { __name(this, "QrCodeProvider"); } methods = { qrDIDCommOobInvitationElement: _QrCodeProvider.qrDIDCommOobInvitationElement.bind(this), qrDIDCommOobInvitationValue: _QrCodeProvider.qrDIDCommOobInvitationValue.bind(this), qrSIOPv2Element: _QrCodeProvider.qrSIOPv2Element.bind(this), qrSIOPv2Value: _QrCodeProvider.qrSIOPv2Value.bind(this), qrURIElement: _QrCodeProvider.qrURIElement.bind(this), qrOpenID4VCIElement: _QrCodeProvider.qrOpenID4VCIElement.bind(this), qrOpenID4VCIValue: _QrCodeProvider.qrOpenID4VCIValue.bind(this) }; /** {@inheritDoc IQRCodeGenerator.uriElement} */ static async qrURIElement(args, context) { return generateQRCodeReactElement(args, context); } /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationValue} */ static async qrDIDCommOobInvitationValue(args, context) { const { object } = args.data; const encoded = DidCommOutOfBandMessage.urlEncode(object.oobInvitation); const delim = object.baseURI.includes("?") ? "&" : "?"; return object.baseURI.includes("oob=") ? object.baseURI.replace("oob=", `oob=${encoded}`) : `${object.baseURI}${delim}_oob=${encoded}`; } /** {@inheritDoc IQRCodeGenerator.didCommOobInvitationElement} */ static async qrDIDCommOobInvitationElement(args, context) { const content = await _QrCodeProvider.qrDIDCommOobInvitationValue(args, context); return generateQRCodeReactElementImpl({ ...args, data: { ...args.data, object: content } }, args, context); } /** {@inheritDoc IQRCodeGenerator.siopv2Value} */ static async qrSIOPv2Value(args, context) { const { object } = args.data; if (typeof object === "string") { return object; } const scheme = (object.scheme ?? "openid-vc://").replace("://?", "").replace("://", "") + "://"; const requestUri = `request_uri=${object.requestUri.replace("request_uri=", "")}`; return `${scheme}?${requestUri}`; } /** {@inheritDoc IQRCodeGenerator.siopv2Element} */ static async qrSIOPv2Element(args, context) { const content = await _QrCodeProvider.qrSIOPv2Value(args, context); return generateQRCodeReactElementImpl({ ...args, data: { ...args.data, object: content } }, args, context); } /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIElement} */ static async qrOpenID4VCIElement(args, context) { const content = await _QrCodeProvider.qrOpenID4VCIValue(args, context); return generateQRCodeReactElementImpl({ ...args, data: { ...args.data, object: content } }, args, context); } /** {@inheritDoc IQRCodeGenerator.qrOpenID4VCIValue} */ static async qrOpenID4VCIValue(args, context) { const { object } = args.data; if (!object.credentialOffer && !object.credentialOfferUri) { throw new Error("Please provide credential_offer or credential_offer_uri"); } const scheme = (object.scheme ?? "openid-credential-offer://").replace("://?", "").replace("://", "") + "://"; const baseUri = object.baseUri ?? ""; let url; const splitBaseUri = baseUri.split("://"); const hasScheme = splitBaseUri.length > 1; if (hasScheme && object.scheme) { if (splitBaseUri[0] !== object.scheme) { throw new Error("The uri must contain the same scheme or omit it"); } url = `${baseUri}`; } else { url = `${scheme}${baseUri}`; } const credentialOfferUri = `?credential_offer_uri=${object.credentialOfferUri?.replace("credential_offer_uri=", "")}`; const credentialOffer = `?credential_offer=${object.credentialOffer?.replace("credential_offer=", "")}`; const value = object.credentialOffer ? credentialOffer : credentialOfferUri; return `${url}${value}`; } }; export { QRType, QrCodeProvider, StatusCode, events }; //# sourceMappingURL=index.js.map