@multiplatform.one/gpg 6.0.2 → 6.0.3

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.
@@ -70,10 +70,12 @@ const GpgProvider = ({
70
70
  refetchOnReconnect: false,
71
71
  staleTime: Infinity
72
72
  });
73
- const message = (0, import_react.useMemo)(() => nonce.data ? (buildMessage ?? defaultBuildMessage)({
73
+ const buildMessageRef = (0, import_react.useRef)(buildMessage);
74
+ buildMessageRef.current = buildMessage;
75
+ const message = (0, import_react.useMemo)(() => nonce.data ? (buildMessageRef.current ?? defaultBuildMessage)({
74
76
  nonce: nonce.data
75
- }) : null, [nonce.data, buildMessage]);
76
- const command = (0, import_react.useMemo)(() => message ? `{ printf %s '${message}' | gpg --detach-sign --armor; gpg --armor --export; }` : null, [message]);
77
+ }) : null, [nonce.data]);
78
+ const command = (0, import_react.useMemo)(() => message ? `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }` : null, [message]);
77
79
  const signIn = async pastedBlob => {
78
80
  const blob = pastedBlob.trim();
79
81
  if (!blob.includes("-----BEGIN PGP SIGNATURE-----") || !blob.includes("-----BEGIN PGP PUBLIC KEY BLOCK-----")) {
@@ -80,13 +80,16 @@ var GpgProvider = function GpgProvider2(param) {
80
80
  refetchOnReconnect: false,
81
81
  staleTime: Infinity
82
82
  });
83
+ var buildMessageRef = (0, import_react.useRef)(buildMessage);
84
+ buildMessageRef.current = buildMessage;
83
85
  var message = (0, import_react.useMemo)(function () {
84
- return nonce.data ? (buildMessage !== null && buildMessage !== void 0 ? buildMessage : defaultBuildMessage)({
86
+ var _buildMessageRef_current;
87
+ return nonce.data ? ((_buildMessageRef_current = buildMessageRef.current) !== null && _buildMessageRef_current !== void 0 ? _buildMessageRef_current : defaultBuildMessage)({
85
88
  nonce: nonce.data
86
89
  }) : null;
87
- }, [nonce.data, buildMessage]);
90
+ }, [nonce.data]);
88
91
  var command = (0, import_react.useMemo)(function () {
89
- return message ? `{ printf %s '${message}' | gpg --detach-sign --armor; gpg --armor --export; }` : null;
92
+ return message ? `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }` : null;
90
93
  }, [message]);
91
94
  var signIn = async function signIn2(pastedBlob) {
92
95
  var blob = pastedBlob.trim();
@@ -1 +1 @@
1
- {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","GpgProvider_exports","__export","GPG_NONCE_QUERY_KEY","GpgProvider","module","exports","import_jsx_runtime","require","import_react","import_react_query","import_connectkit","import_GpgContext","b64","b642","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","param","nonce","location","host","origin","Date","toISOString","GpgProvider2","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","useState","GpgStatusState","READY","resetStatus","resetStatus2","useContext","GpgContext","Error","Context","useQuery","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","message","useMemo","data","command","signIn","signIn2","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","jsx","Provider"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","GpgProvider_exports","__export","GPG_NONCE_QUERY_KEY","GpgProvider","module","exports","import_jsx_runtime","require","import_react","import_react_query","import_connectkit","import_GpgContext","b64","b642","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","param","nonce","location","host","origin","Date","toISOString","GpgProvider2","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","useState","GpgStatusState","READY","resetStatus","resetStatus2","useContext","GpgContext","Error","Context","useQuery","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","buildMessageRef","useRef","current","message","useMemo","_buildMessageRef_current","data","command","replace","signIn","signIn2","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","jsx","Provider"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,4 +1,4 @@
1
- import { useContext, useMemo, useState } from "react";
1
+ import { useContext, useMemo, useRef, useState } from "react";
2
2
  import { useQuery } from "@tanstack/react-query";
3
3
  import { Context as ConnectKitContext } from "@multiplatform.one/connectkit";
4
4
  import { GpgContext, GpgStatusState } from "./GpgContext.mjs";
@@ -42,10 +42,12 @@ const GpgProvider = ({
42
42
  refetchOnReconnect: false,
43
43
  staleTime: Infinity
44
44
  });
45
- const message = useMemo(() => nonce.data ? (buildMessage ?? defaultBuildMessage)({
45
+ const buildMessageRef = useRef(buildMessage);
46
+ buildMessageRef.current = buildMessage;
47
+ const message = useMemo(() => nonce.data ? (buildMessageRef.current ?? defaultBuildMessage)({
46
48
  nonce: nonce.data
47
- }) : null, [nonce.data, buildMessage]);
48
- const command = useMemo(() => message ? `{ printf %s '${message}' | gpg --detach-sign --armor; gpg --armor --export; }` : null, [message]);
49
+ }) : null, [nonce.data]);
50
+ const command = useMemo(() => message ? `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }` : null, [message]);
49
51
  const signIn = async pastedBlob => {
50
52
  const blob = pastedBlob.trim();
51
53
  if (!blob.includes("-----BEGIN PGP SIGNATURE-----") || !blob.includes("-----BEGIN PGP PUBLIC KEY BLOCK-----")) {
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","useMemo","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","jsx","GPG_NONCE_QUERY_KEY","b64","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","nonce","location","host","origin","Date","toISOString","GpgProvider","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","message","data","command","signIn","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useContext","useMemo","useRef","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","jsx","GPG_NONCE_QUERY_KEY","b64","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","nonce","location","host","origin","Date","toISOString","GpgProvider","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","buildMessageRef","current","message","data","command","replace","signIn","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useContext, useMemo, useState } from "react";
2
+ import { useContext, useMemo, useRef, useState } from "react";
3
3
  import { useQuery } from "@tanstack/react-query";
4
4
  import { Context as ConnectKitContext } from "@multiplatform.one/connectkit";
5
5
  import { GpgContext, GpgStatusState } from "./GpgContext.native.js";
@@ -50,13 +50,16 @@ var GpgProvider = function GpgProvider2(param) {
50
50
  refetchOnReconnect: false,
51
51
  staleTime: Infinity
52
52
  });
53
+ var buildMessageRef = useRef(buildMessage);
54
+ buildMessageRef.current = buildMessage;
53
55
  var message = useMemo(function () {
54
- return nonce.data ? (buildMessage !== null && buildMessage !== void 0 ? buildMessage : defaultBuildMessage)({
56
+ var _buildMessageRef_current;
57
+ return nonce.data ? ((_buildMessageRef_current = buildMessageRef.current) !== null && _buildMessageRef_current !== void 0 ? _buildMessageRef_current : defaultBuildMessage)({
55
58
  nonce: nonce.data
56
59
  }) : null;
57
- }, [nonce.data, buildMessage]);
60
+ }, [nonce.data]);
58
61
  var command = useMemo(function () {
59
- return message ? `{ printf %s '${message}' | gpg --detach-sign --armor; gpg --armor --export; }` : null;
62
+ return message ? `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }` : null;
60
63
  }, [message]);
61
64
  var signIn = async function signIn2(pastedBlob) {
62
65
  var blob = pastedBlob.trim();
@@ -1 +1 @@
1
- {"version":3,"names":["jsx","_jsx","useContext","useMemo","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","GPG_NONCE_QUERY_KEY","b64","b642","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","param","nonce","location","host","origin","Date","toISOString","GpgProvider","GpgProvider2","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","resetStatus2","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","message","data","command","signIn","signIn2","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["jsx","_jsx","useContext","useMemo","useRef","useState","useQuery","Context","ConnectKitContext","GpgContext","GpgStatusState","GPG_NONCE_QUERY_KEY","b64","b642","s","window","btoa","unescape","encodeURIComponent","defaultBuildMessage","param","nonce","location","host","origin","Date","toISOString","GpgProvider","GpgProvider2","children","enabled","nonceRefetchInterval","buildMessage","onSignIn","gpgConfig","status","setStatus","READY","resetStatus","resetStatus2","Error","queryKey","queryFn","getNonce","refetchInterval","refetchOnWindowFocus","refetchOnReconnect","staleTime","Infinity","buildMessageRef","current","message","_buildMessageRef_current","data","command","replace","signIn","signIn2","pastedBlob","blob","trim","includes","ERROR","LOADING","result","onSign","username","password","SUCCESS","error","Provider","value"],"sources":["../../src/GpgProvider.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@multiplatform.one/gpg",
3
- "version": "6.0.2",
3
+ "version": "6.0.3",
4
4
  "description": "Sign-In With GPG (SIWG) screen + GpgProvider for the connectkit modal — no viem",
5
5
  "keywords": [
6
6
  "connectkit",
@@ -53,14 +53,14 @@
53
53
  "access": "public"
54
54
  },
55
55
  "dependencies": {
56
- "@multiplatform.one/connectkit": "6.0.2"
56
+ "@multiplatform.one/connectkit": "6.0.3"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@tamagui/build": "2.0.0-rc.41",
60
60
  "@types/react": "~19.2.14",
61
61
  "react": "19.2.5",
62
62
  "typescript": "~5.9.3",
63
- "@multiplatform.one/config": "6.0.2"
63
+ "@multiplatform.one/config": "6.0.3"
64
64
  },
65
65
  "peerDependencies": {
66
66
  "@tanstack/react-query": "^5.62.0",
@@ -1,4 +1,4 @@
1
- import { ReactNode, useContext, useMemo, useState } from "react";
1
+ import { ReactNode, useContext, useMemo, useRef, useState } from "react";
2
2
  import { useQuery } from "@tanstack/react-query";
3
3
 
4
4
  import { Context as ConnectKitContext } from "@multiplatform.one/connectkit";
@@ -62,17 +62,23 @@ export const GpgProvider = ({
62
62
  // Compute the challenge ONCE per nonce (it embeds an Issued At timestamp); recomputing
63
63
  // on every render would desync the displayed/copied message from the one base64'd into
64
64
  // `password`, breaking the signature (which is verified over the exact message bytes).
65
+ // buildMessage is read through a ref so an inline-closure prop (new identity every
66
+ // render) can't retrigger the memo and desync the message the same way.
67
+ const buildMessageRef = useRef(buildMessage);
68
+ buildMessageRef.current = buildMessage;
65
69
  const message = useMemo(
66
- () => (nonce.data ? (buildMessage ?? defaultBuildMessage)({ nonce: nonce.data }) : null),
67
- [nonce.data, buildMessage],
70
+ () =>
71
+ nonce.data ? (buildMessageRef.current ?? defaultBuildMessage)({ nonce: nonce.data }) : null,
72
+ [nonce.data],
68
73
  );
69
74
  // The ready-to-run terminal command: detached armored signature + the exported public
70
75
  // key, concatenated — exactly the blob the user pastes back. printf %s (no newline) so
71
- // the signed bytes are byte-identical to `message`.
76
+ // the signed bytes are byte-identical to `message`. Single quotes in the message are
77
+ // POSIX-escaped ('\'' ) so a custom buildMessage can't break out of the quoting.
72
78
  const command = useMemo(
73
79
  () =>
74
80
  message
75
- ? `{ printf %s '${message}' | gpg --detach-sign --armor; gpg --armor --export; }`
81
+ ? `{ printf %s '${message.replace(/'/g, "'\\''")}' | gpg --detach-sign --armor; gpg --armor --export; }`
76
82
  : null,
77
83
  [message],
78
84
  );