create-blocklet 0.9.6 → 0.9.8

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.
Files changed (91) hide show
  1. package/common/.prettierrc +11 -1
  2. package/common/scripts/build-clean.mjs +0 -1
  3. package/common/scripts/bump-version.mjs +33 -29
  4. package/index.js +16 -10
  5. package/lib/did.js +10 -5
  6. package/package.json +1 -1
  7. package/templates/did-connect-dapp/.eslintrc.js +4 -0
  8. package/templates/did-connect-dapp/README.md +35 -0
  9. package/templates/did-connect-dapp/api/dev.js +5 -0
  10. package/templates/did-connect-dapp/api/hooks/pre-start.js +33 -0
  11. package/templates/did-connect-dapp/api/index.js +48 -0
  12. package/templates/did-connect-dapp/api/libs/auth.js +25 -0
  13. package/templates/did-connect-dapp/api/libs/env.js +9 -0
  14. package/templates/did-connect-dapp/api/libs/logger.js +3 -0
  15. package/templates/did-connect-dapp/api/libs/utils.js +70 -0
  16. package/templates/did-connect-dapp/api/routes/auth/index.js +15 -0
  17. package/templates/did-connect-dapp/api/routes/auth/request-digest-signature.js +51 -0
  18. package/templates/did-connect-dapp/api/routes/auth/request-multiple-claims.js +52 -0
  19. package/templates/did-connect-dapp/api/routes/auth/request-multiple-steps.js +57 -0
  20. package/templates/did-connect-dapp/api/routes/auth/request-nft.js +82 -0
  21. package/templates/did-connect-dapp/api/routes/auth/request-payment.js +72 -0
  22. package/templates/did-connect-dapp/api/routes/auth/request-profile.js +25 -0
  23. package/templates/did-connect-dapp/api/routes/auth/request-text-signature.js +44 -0
  24. package/templates/did-connect-dapp/api/routes/auth/request-transaction-signature.js +62 -0
  25. package/templates/did-connect-dapp/blocklet.md +5 -0
  26. package/templates/did-connect-dapp/blocklet.yml +57 -0
  27. package/templates/did-connect-dapp/index.html +17 -0
  28. package/templates/did-connect-dapp/package.json +86 -0
  29. package/templates/did-connect-dapp/src/app.jsx +20 -0
  30. package/templates/did-connect-dapp/src/assets/get_wallet_en.png +0 -0
  31. package/templates/did-connect-dapp/src/assets/get_wallet_zh.png +0 -0
  32. package/templates/did-connect-dapp/src/components/connect-item.jsx +39 -0
  33. package/templates/did-connect-dapp/src/components/connects/request-digest-signature.jsx +45 -0
  34. package/templates/did-connect-dapp/src/components/connects/request-multiple-claims.jsx +55 -0
  35. package/templates/did-connect-dapp/src/components/connects/request-multiple-steps.jsx +54 -0
  36. package/templates/did-connect-dapp/src/components/connects/request-nft.jsx +75 -0
  37. package/templates/did-connect-dapp/src/components/connects/request-payment.jsx +82 -0
  38. package/templates/did-connect-dapp/src/components/connects/request-profile.jsx +72 -0
  39. package/templates/did-connect-dapp/src/components/connects/request-text-signature.jsx +44 -0
  40. package/templates/did-connect-dapp/src/components/connects/request-transaction-signature.jsx +44 -0
  41. package/templates/did-connect-dapp/src/components/info-row.jsx +39 -0
  42. package/templates/did-connect-dapp/src/components/layout.jsx +26 -0
  43. package/templates/did-connect-dapp/src/index.jsx +6 -0
  44. package/templates/did-connect-dapp/src/libs/session.js +11 -0
  45. package/templates/did-connect-dapp/src/libs/utils.js +4 -0
  46. package/templates/did-connect-dapp/src/locales/en.js +115 -0
  47. package/templates/did-connect-dapp/src/locales/index.js +5 -0
  48. package/templates/did-connect-dapp/src/locales/zh.js +115 -0
  49. package/templates/did-connect-dapp/src/pages/main.jsx +95 -0
  50. package/templates/did-connect-dapp/template-info.json +12 -0
  51. package/templates/did-connect-dapp/vite.config.mjs +11 -0
  52. package/templates/did-wallet-dapp/blocklet.yml +1 -2
  53. package/templates/did-wallet-dapp/package.json +18 -18
  54. package/templates/express-api/blocklet.yml +0 -1
  55. package/templates/express-api/package.json +9 -8
  56. package/templates/html-static/blocklet.yml +0 -1
  57. package/templates/html-static/package.json +4 -3
  58. package/templates/monorepo/package.json +4 -3
  59. package/templates/monorepo/scripts/bump-version.mjs +36 -32
  60. package/templates/nestjs-api/blocklet.yml +0 -1
  61. package/templates/nestjs-api/package.json +16 -15
  62. package/templates/nextjs-dapp/blocklet.yml +0 -1
  63. package/templates/nextjs-dapp/package.json +7 -7
  64. package/templates/react-dapp/blocklet.yml +0 -1
  65. package/templates/react-dapp/package.json +16 -15
  66. package/templates/react-dapp-ts/blocklet.yml +0 -1
  67. package/templates/react-dapp-ts/package.json +19 -18
  68. package/templates/react-gun-dapp/blocklet.yml +0 -1
  69. package/templates/react-gun-dapp/package.json +15 -14
  70. package/templates/react-static/blocklet.yml +0 -1
  71. package/templates/react-static/package.json +11 -10
  72. package/templates/solidjs-dapp/blocklet.yml +0 -1
  73. package/templates/solidjs-dapp/package.json +14 -13
  74. package/templates/solidjs-static/blocklet.yml +0 -1
  75. package/templates/solidjs-static/package.json +9 -8
  76. package/templates/svelte-dapp/blocklet.yml +0 -1
  77. package/templates/svelte-dapp/package.json +13 -12
  78. package/templates/svelte-static/blocklet.yml +0 -1
  79. package/templates/svelte-static/package.json +9 -8
  80. package/templates/todo-list-example/blocklet.yml +0 -1
  81. package/templates/todo-list-example/package.json +13 -12
  82. package/templates/vue-dapp/blocklet.yml +0 -1
  83. package/templates/vue-dapp/package.json +16 -15
  84. package/templates/vue-static/blocklet.yml +0 -1
  85. package/templates/vue-static/package.json +11 -10
  86. package/templates/vue-ts-static/blocklet.yml +1 -2
  87. package/templates/vue-ts-static/package.json +12 -12
  88. package/templates/vue2-dapp/blocklet.yml +0 -1
  89. package/templates/vue2-dapp/package.json +13 -12
  90. package/templates/vue2-static/blocklet.yml +0 -1
  91. package/templates/vue2-static/package.json +9 -8
@@ -0,0 +1,75 @@
1
+ import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
2
+ import iconOpenInNewRounded from '@iconify-icons/material-symbols/open-in-new-rounded';
3
+ import { Icon } from '@iconify/react';
4
+ import { Link } from '@mui/material';
5
+ import { useState } from 'react';
6
+
7
+ import { useSessionContext } from '../../libs/session';
8
+ import { getExplorerUrl } from '../../libs/utils';
9
+ import ConnectItem from '../connect-item';
10
+ import InfoRow from '../info-row';
11
+
12
+ export default function RequestNFT() {
13
+ const [result, setResult] = useState(null);
14
+ const { locale, t } = useLocaleContext();
15
+ const { connectApi } = useSessionContext();
16
+
17
+ const requestFn = () => {
18
+ const action = 'request-nft';
19
+ setResult(null);
20
+ connectApi.open({
21
+ locale,
22
+ action,
23
+ onSuccess(res) {
24
+ setResult(res.result);
25
+ },
26
+ messages: {
27
+ title: t('claims.requestNFT.connect.title'),
28
+ scan: t('claims.requestNFT.connect.scan'),
29
+ },
30
+ });
31
+ };
32
+
33
+ return (
34
+ <ConnectItem
35
+ title={t('claims.requestNFT.title')}
36
+ description={
37
+ <>
38
+ {t('claims.requestNFT.description')}{' '}
39
+ <Link
40
+ href="https://playground.staging.arcblock.io"
41
+ target="_blank"
42
+ underline="hover"
43
+ sx={{
44
+ display: 'inline-flex',
45
+ alignItems: 'center',
46
+ gap: 0.5,
47
+ }}>
48
+ https://playground.staging.arcblock.io <Icon icon={iconOpenInNewRounded} />
49
+ </Link>
50
+ </>
51
+ }
52
+ onClick={requestFn}
53
+ result={
54
+ result ? (
55
+ <InfoRow
56
+ name="NFT"
57
+ value={
58
+ <Link
59
+ href={getExplorerUrl(result.asset, 'assets')}
60
+ target="_blank"
61
+ underline="hover"
62
+ sx={{
63
+ display: 'inline-flex',
64
+ alignItems: 'center',
65
+ gap: 0.5,
66
+ }}>
67
+ {result.asset} <Icon icon={iconOpenInNewRounded} />
68
+ </Link>
69
+ }
70
+ />
71
+ ) : null
72
+ }
73
+ />
74
+ );
75
+ }
@@ -0,0 +1,82 @@
1
+ import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
2
+ import iconOpenInNewRounded from '@iconify-icons/material-symbols/open-in-new-rounded';
3
+ import { Icon } from '@iconify/react';
4
+ import { Box, Link } from '@mui/material';
5
+ import { useState } from 'react';
6
+
7
+ import { useSessionContext } from '../../libs/session';
8
+ import { getExplorerUrl } from '../../libs/utils';
9
+ import ConnectItem from '../connect-item';
10
+ import InfoRow from '../info-row';
11
+
12
+ export default function RequestPayment() {
13
+ const [result, setResult] = useState(null);
14
+ const { locale, t } = useLocaleContext();
15
+ const { connectApi } = useSessionContext();
16
+
17
+ const requestPayment = () => {
18
+ const action = 'request-payment';
19
+ setResult(null);
20
+ connectApi.open({
21
+ locale,
22
+ action,
23
+ onSuccess(res) {
24
+ setResult(res.result);
25
+ },
26
+ messages: {
27
+ title: t('claims.requestPayment.connect.title'),
28
+ scan: t('claims.requestPayment.connect.scan'),
29
+ },
30
+ });
31
+ };
32
+
33
+ return (
34
+ <ConnectItem
35
+ title={t('claims.requestPayment.title')}
36
+ description={
37
+ <>
38
+ {t('claims.requestPayment.description')}
39
+
40
+ <Box>
41
+ {t('claims.requestPayment.takeTokenFromHere')}{' '}
42
+ <Link
43
+ href="https://faucet.abtnetwork.io"
44
+ target="_blank"
45
+ underline="hover"
46
+ sx={{
47
+ display: 'inline-flex',
48
+ alignItems: 'center',
49
+ gap: 0.5,
50
+ }}>
51
+ https://faucet.abtnetwork.io <Icon icon={iconOpenInNewRounded} />
52
+ </Link>
53
+ </Box>
54
+ </>
55
+ }
56
+ onClick={requestPayment}
57
+ result={
58
+ result ? (
59
+ <>
60
+ <InfoRow
61
+ name={t('claims.requestPayment.result.hash')}
62
+ value={
63
+ <Link
64
+ href={getExplorerUrl(result.hash)}
65
+ target="_blank"
66
+ underline="hover"
67
+ sx={{
68
+ display: 'inline-flex',
69
+ alignItems: 'center',
70
+ gap: 0.5,
71
+ }}>
72
+ {result.hash} <Icon icon={iconOpenInNewRounded} />
73
+ </Link>
74
+ }
75
+ />
76
+ <InfoRow name={t('claims.requestPayment.result.signature')} value={result.sig} />
77
+ </>
78
+ ) : null
79
+ }
80
+ />
81
+ );
82
+ }
@@ -0,0 +1,72 @@
1
+ import Avatar from '@arcblock/ux/lib/Avatar';
2
+ import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
3
+ import AccountBoxOutline from '@iconify-icons/material-symbols/account-box-outline';
4
+ import CakeOutlineRoundedIcon from '@iconify-icons/material-symbols/cake-outline-rounded';
5
+ import MailOutlineRoundedIcon from '@iconify-icons/material-symbols/mail-outline-rounded';
6
+ import PhoneOutlineRoundedIcon from '@iconify-icons/material-symbols/phone-android-outline-rounded';
7
+ import { Icon } from '@iconify/react';
8
+ import { useState } from 'react';
9
+
10
+ import { useSessionContext } from '../../libs/session';
11
+ import ConnectItem from '../connect-item';
12
+ import InfoRow from '../info-row';
13
+
14
+ export default function RequestProfile() {
15
+ const [result, setResult] = useState(null);
16
+ const { locale, t } = useLocaleContext();
17
+ const { connectApi } = useSessionContext();
18
+
19
+ const requestProfile = () => {
20
+ const action = 'request-profile';
21
+ setResult(null);
22
+ connectApi.open({
23
+ locale,
24
+ action,
25
+ onSuccess(res) {
26
+ if (res.result.avatar) {
27
+ res.result.avatar = res.result.avatar.replace(/[\r\n\s]/g, '');
28
+ }
29
+ setResult(res.result);
30
+ },
31
+ messages: {
32
+ title: t('claims.requestProfile.connect.title'),
33
+ scan: t('claims.requestProfile.connect.scan'),
34
+ },
35
+ });
36
+ };
37
+
38
+ return (
39
+ <ConnectItem
40
+ title={t('claims.requestProfile.title')}
41
+ description={t('claims.requestProfile.description')}
42
+ onClick={requestProfile}
43
+ result={
44
+ result ? (
45
+ <>
46
+ <Avatar variant="circle" src={result.avatar} did={result.did} size={60} />
47
+ <InfoRow
48
+ icon={<Icon fontSize={18} icon={AccountBoxOutline} />}
49
+ name={t('claims.requestProfile.result.fullName')}
50
+ value={result.fullName}
51
+ />
52
+ <InfoRow
53
+ icon={<Icon fontSize={18} icon={MailOutlineRoundedIcon} />}
54
+ name={t('claims.requestProfile.result.email')}
55
+ value={result.email}
56
+ />
57
+ <InfoRow
58
+ icon={<Icon fontSize={18} icon={PhoneOutlineRoundedIcon} />}
59
+ name={t('claims.requestProfile.result.phone')}
60
+ value={result.phone}
61
+ />
62
+ <InfoRow
63
+ icon={<Icon fontSize={18} icon={CakeOutlineRoundedIcon} />}
64
+ name={t('claims.requestProfile.result.birthday')}
65
+ value={result.birthday}
66
+ />
67
+ </>
68
+ ) : null
69
+ }
70
+ />
71
+ );
72
+ }
@@ -0,0 +1,44 @@
1
+ import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
2
+ import { useState } from 'react';
3
+
4
+ import { useSessionContext } from '../../libs/session';
5
+ import ConnectItem from '../connect-item';
6
+ import InfoRow from '../info-row';
7
+
8
+ export default function RequestTextSignature() {
9
+ const [result, setResult] = useState(null);
10
+ const { locale, t } = useLocaleContext();
11
+ const { connectApi } = useSessionContext();
12
+
13
+ const requestFn = () => {
14
+ const action = 'request-text-signature';
15
+ setResult(null);
16
+ connectApi.open({
17
+ locale,
18
+ action,
19
+ onSuccess(res) {
20
+ setResult(res.result);
21
+ },
22
+ messages: {
23
+ title: t('claims.requestTextSig.connect.title'),
24
+ scan: t('claims.requestTextSig.connect.scan'),
25
+ },
26
+ });
27
+ };
28
+
29
+ return (
30
+ <ConnectItem
31
+ title={t('claims.requestTextSig.title')}
32
+ description={t('claims.requestTextSig.description')}
33
+ onClick={requestFn}
34
+ result={
35
+ result ? (
36
+ <>
37
+ <InfoRow name={t('claims.requestTextSig.result.origin')} value={result.origin} />
38
+ <InfoRow name={t('claims.requestTextSig.result.signature')} value={result.sig} />
39
+ </>
40
+ ) : null
41
+ }
42
+ />
43
+ );
44
+ }
@@ -0,0 +1,44 @@
1
+ import { useLocaleContext } from '@arcblock/ux/lib/Locale/context';
2
+ import { useState } from 'react';
3
+
4
+ import { useSessionContext } from '../../libs/session';
5
+ import ConnectItem from '../connect-item';
6
+ import InfoRow from '../info-row';
7
+
8
+ export default function RequestTransactionSignature() {
9
+ const [result, setResult] = useState(null);
10
+ const { locale, t } = useLocaleContext();
11
+ const { connectApi } = useSessionContext();
12
+
13
+ const requestFn = () => {
14
+ const action = 'request-transaction-signature';
15
+ setResult(null);
16
+ connectApi.open({
17
+ locale,
18
+ action,
19
+ onSuccess(res) {
20
+ setResult(res.result);
21
+ },
22
+ messages: {
23
+ title: t('claims.requestTransactionSig.connect.title'),
24
+ scan: t('claims.requestTransactionSig.connect.scan'),
25
+ },
26
+ });
27
+ };
28
+
29
+ return (
30
+ <ConnectItem
31
+ title={t('claims.requestTransactionSig.title')}
32
+ description={t('claims.requestTransactionSig.description')}
33
+ onClick={requestFn}
34
+ result={
35
+ result ? (
36
+ <>
37
+ <InfoRow name={t('claims.requestTransactionSig.result.hash')} value={result.hash} />
38
+ <InfoRow name={t('claims.requestTransactionSig.result.signature')} value={result.sig} />
39
+ </>
40
+ ) : null
41
+ }
42
+ />
43
+ );
44
+ }
@@ -0,0 +1,39 @@
1
+ /* eslint-disable react/require-default-props */
2
+ import { Box, Typography } from '@mui/material';
3
+ import PropTypes from 'prop-types';
4
+
5
+ export default function InfoRow({ icon = null, name, value }) {
6
+ return (
7
+ <Typography variant="body1" color="text.primary" gutterBottom sx={{ display: 'flex', alignItems: 'center' }}>
8
+ <Box
9
+ sx={{
10
+ display: 'inline-flex',
11
+ alignItems: 'center',
12
+ gap: 0.5,
13
+ mr: 0.75,
14
+ flexShrink: 0,
15
+ '&:after': {
16
+ content: '":"',
17
+ ml: -0.25,
18
+ },
19
+ }}>
20
+ {icon}
21
+ {name}
22
+ </Box>
23
+ <Typography
24
+ component="span"
25
+ color="text.secondary"
26
+ sx={{
27
+ wordBreak: 'break-word',
28
+ }}>
29
+ {value}
30
+ </Typography>
31
+ </Typography>
32
+ );
33
+ }
34
+
35
+ InfoRow.propTypes = {
36
+ icon: PropTypes.any,
37
+ name: PropTypes.any.isRequired,
38
+ value: PropTypes.any.isRequired,
39
+ };
@@ -0,0 +1,26 @@
1
+ import { Footer, Header } from '@blocklet/ui-react';
2
+ import { Box, Container } from '@mui/material';
3
+ import PropTypes from 'prop-types';
4
+
5
+ export default function Layout({ children }) {
6
+ return (
7
+ <Box>
8
+ <Header maxWidth="unset" />
9
+ <Container maxWidth="lg" my={3}>
10
+ {children}
11
+ </Container>
12
+ <Box
13
+ component={Footer}
14
+ sx={{
15
+ '&>div>.MuiContainer-root': {
16
+ maxWidth: 'unset',
17
+ },
18
+ }}
19
+ />
20
+ </Box>
21
+ );
22
+ }
23
+
24
+ Layout.propTypes = {
25
+ children: PropTypes.any.isRequired,
26
+ };
@@ -0,0 +1,6 @@
1
+ import ReactDOM from 'react-dom/client';
2
+
3
+ import App from './app';
4
+
5
+ const root = ReactDOM.createRoot(document.getElementById('app'));
6
+ root.render(<App />);
@@ -0,0 +1,11 @@
1
+ import { createAuthServiceSessionContext } from '@arcblock/did-connect/lib/Session';
2
+ import { useContext } from 'react';
3
+
4
+ const { SessionProvider, SessionContext, SessionConsumer, withSession } = createAuthServiceSessionContext();
5
+
6
+ function useSessionContext() {
7
+ const info = useContext(SessionContext);
8
+ return info;
9
+ }
10
+
11
+ export { SessionProvider, SessionContext, SessionConsumer, useSessionContext, withSession };
@@ -0,0 +1,4 @@
1
+ /* eslint-disable import/prefer-default-export */
2
+ export const getExplorerUrl = (assetDidOrHash, type = 'txs') => {
3
+ return `https://explorer.abtnetwork.io/explorer/${type}/${assetDidOrHash}?host=${window.blocklet.CHAIN_HOST}`;
4
+ };
@@ -0,0 +1,115 @@
1
+ import { flatten } from 'flat';
2
+
3
+ export default flatten({
4
+ result: 'Result',
5
+ step1: {
6
+ title: 'Step 1',
7
+ prepareDIDWallet: 'Prepare DID Wallet',
8
+ getWalletFromHere: 'Get DID Wallet from here',
9
+ },
10
+ step2: {
11
+ title: 'Step 2',
12
+ enjoyPlayground: 'Enjoy The DID Connect Playground',
13
+ },
14
+ claims: {
15
+ requestProfile: {
16
+ title: 'Request Profile',
17
+ description: 'If the app need user name/email to function properly, you can request a profile from the user.',
18
+ connect: {
19
+ title: 'Request Profile',
20
+ scan: 'Please provide your name and email to continue',
21
+ },
22
+ result: {
23
+ fullName: 'Full Name',
24
+ email: 'Email Address',
25
+ phone: 'Phone Number',
26
+ birthday: 'Birthday',
27
+ },
28
+ },
29
+ requestNFT: {
30
+ title: 'Request NFT',
31
+ description: 'Get a badge or Certificate from here',
32
+ connect: {
33
+ title: 'Request NFT',
34
+ scan: 'Please provide a NFT to continue',
35
+ },
36
+ },
37
+ requestTextSig: {
38
+ title: 'Request Text Signature',
39
+ description: 'In some cases, app may want user to sign some text to authorize the app to do something.',
40
+ connect: {
41
+ title: 'Request Text Signature',
42
+ scan: 'Please sign some text to continue',
43
+ },
44
+ result: {
45
+ origin: 'Original Text',
46
+ signature: 'Signature',
47
+ },
48
+ },
49
+ requestDigestSig: {
50
+ title: 'Request Digest Signature',
51
+ description:
52
+ 'In some cases, when the data to be signed is too large to display in DID Wallet, the app shall request the Wallet to sign the digest of the data.',
53
+ connect: {
54
+ title: 'Request Digest Signature',
55
+ scan: 'Please sign the digest to continue',
56
+ },
57
+ result: {
58
+ origin: 'Original Text',
59
+ digest: 'Digest',
60
+ signature: 'Signature',
61
+ },
62
+ },
63
+ requestTransactionSig: {
64
+ title: 'Request Transaction Signature',
65
+ description: 'When the app needs user to sign some transaction that can be broadcast to ArcBlock chain.',
66
+ connect: {
67
+ title: 'Request Transaction Signature',
68
+ scan: 'Please sign a transaction to continue',
69
+ },
70
+ result: {
71
+ hash: 'Transaction Hash',
72
+ signature: 'Signature',
73
+ },
74
+ },
75
+ requestPayment: {
76
+ title: 'Request Payment',
77
+ description: 'When the app needs user to pay some token to get some service.',
78
+ takeTokenFromHere: 'Please take some TBA from here',
79
+ connect: {
80
+ title: 'Request Payment',
81
+ scan: 'Please sign the transaction to continue',
82
+ },
83
+ result: {
84
+ hash: 'Transaction Hash',
85
+ signature: 'Signature',
86
+ },
87
+ },
88
+ requestMultipleClaims: {
89
+ title: 'Request Multiple Claims',
90
+ description: 'Request text signature and digest signature in a single session.',
91
+ connect: {
92
+ title: 'Request Multiple Claims',
93
+ scan: 'In that session, you will do both text signing and summary signing.',
94
+ },
95
+ result: {
96
+ origin: 'Original Text',
97
+ digest: 'Digest',
98
+ signature: 'Signature',
99
+ },
100
+ },
101
+ requestMultipleSteps: {
102
+ title: 'Request Multiple Steps',
103
+ description: 'Request text signature and then request digest signature.',
104
+ connect: {
105
+ title: 'Request Multiple Steps',
106
+ scan: 'In that session, you will do a text signature followed by a summary signature.',
107
+ },
108
+ result: {
109
+ origin: 'Original Text',
110
+ digest: 'Digest',
111
+ signature: 'Signature',
112
+ },
113
+ },
114
+ },
115
+ });
@@ -0,0 +1,5 @@
1
+ /* eslint-disable import/prefer-default-export */
2
+ import en from './en';
3
+ import zh from './zh';
4
+
5
+ export const translations = { zh, en };
@@ -0,0 +1,115 @@
1
+ import { flatten } from 'flat';
2
+
3
+ export default flatten({
4
+ result: '操作结果',
5
+ step1: {
6
+ title: '第一步',
7
+ prepareDIDWallet: '准备 DID Wallet',
8
+ getWalletFromHere: '从这里获取 DID Wallet',
9
+ },
10
+ step2: {
11
+ title: '第二步',
12
+ enjoyPlayground: '享受 DID Connect 游乐场',
13
+ },
14
+ claims: {
15
+ requestProfile: {
16
+ title: '获取用户信息',
17
+ description: '当应用需要用户名称/邮件地址来正常使用时,可以请求用户提供相关信息。',
18
+ connect: {
19
+ title: '获取用户信息',
20
+ scan: '请提供您的个人信息,以便我们可以为您提供更好的服务。',
21
+ },
22
+ result: {
23
+ fullName: '用户名',
24
+ email: '邮箱地址',
25
+ phone: '电话号码',
26
+ birthday: '生日',
27
+ },
28
+ },
29
+ requestNFT: {
30
+ title: '请求 NFT',
31
+ description: '从这里获取徽章或证书',
32
+ connect: {
33
+ title: '请出示一个 NFT',
34
+ scan: '请出示一个 NFT,以便验证您是否有抽奖的机会',
35
+ },
36
+ },
37
+ requestTextSig: {
38
+ title: '请求文本签名',
39
+ description: '在某些情况下,应用可能需要用户签名一段文本来授权应用做一些事情。',
40
+ connect: {
41
+ title: '请求文本签名',
42
+ scan: '请签名一段文本,以便验证您的安全。',
43
+ },
44
+ result: {
45
+ origin: '签名数据',
46
+ signature: '签名结果',
47
+ },
48
+ },
49
+ requestDigestSig: {
50
+ title: '请求摘要签名',
51
+ description:
52
+ '在某些情况下,当需要签名的数据太大,不适合在 DID Wallet 中显示时,应用可以请求 Wallet 签名数据的摘要。',
53
+ connect: {
54
+ title: '请求摘要签名',
55
+ scan: '请签名一段摘要,以便验证您的安全。',
56
+ },
57
+ result: {
58
+ origin: '签名数据',
59
+ digest: '摘要数据',
60
+ signature: '签名结果',
61
+ },
62
+ },
63
+ requestTransactionSig: {
64
+ title: '请求交易签名',
65
+ description: '当应用需要用户签名一个可以广播到 ArcBlock 链的交易时。',
66
+ connect: {
67
+ title: '请求交易签名',
68
+ scan: '请签名一个交易,以便验证交易的安全性。',
69
+ },
70
+ result: {
71
+ hash: '交易 hash',
72
+ signature: '签名结果',
73
+ },
74
+ },
75
+ requestPayment: {
76
+ title: '请求付款',
77
+ description: '当应用需要用户支付一些代币来获取某种服务时。',
78
+ takeTokenFromHere: '请从这里获取一些代币',
79
+ connect: {
80
+ title: '请求付款',
81
+ scan: '该笔订单需要您确认,才能完成付款。',
82
+ },
83
+ result: {
84
+ hash: '交易 hash',
85
+ signature: '签名结果',
86
+ },
87
+ },
88
+ requestMultipleClaims: {
89
+ title: '多个操作',
90
+ description: '在同一个会话中请求文本签名和摘要签名。',
91
+ connect: {
92
+ title: '请求多个操作',
93
+ scan: '在该会话中,您将同时进行文本签名和摘要签名。',
94
+ },
95
+ result: {
96
+ origin: '签名数据',
97
+ digest: '摘要数据',
98
+ signature: '签名结果',
99
+ },
100
+ },
101
+ requestMultipleSteps: {
102
+ title: '多个步骤',
103
+ description: '先请求文本签名,然后再请求摘要签名。',
104
+ connect: {
105
+ title: '请求多步操作',
106
+ scan: '在该会话中,您将先进行文本签名,然后进行摘要签名。',
107
+ },
108
+ result: {
109
+ origin: '签名数据',
110
+ digest: '摘要数据',
111
+ signature: '签名结果',
112
+ },
113
+ },
114
+ },
115
+ });