create-near-app 6.3.1 → 6.4.0-beta.0

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 (73) hide show
  1. package/README.md +7 -7
  2. package/dist/app.js +1 -2
  3. package/dist/make.js +3 -25
  4. package/dist/messages.js +5 -9
  5. package/dist/tracking.js +1 -2
  6. package/dist/types.js +2 -3
  7. package/dist/user-input.js +9 -39
  8. package/package.json +1 -1
  9. package/templates/contracts/rs/Cargo.toml +17 -8
  10. package/templates/contracts/rs/README.md +23 -84
  11. package/templates/contracts/rs/rust-toolchain.toml +2 -2
  12. package/templates/contracts/rs/src/lib.rs +10 -17
  13. package/templates/contracts/rs/tests/test_basics.rs +32 -0
  14. package/templates/contracts/ts/README.md +15 -12
  15. package/templates/contracts/ts/ava.config.cjs +15 -0
  16. package/templates/contracts/ts/package.json +9 -5
  17. package/templates/{sandbox-tests/sandbox-ts/src → contracts/ts/sandbox-ts}/main.ava.ts +6 -7
  18. package/templates/contracts/ts/src/contract.ts +1 -1
  19. package/templates/contracts/ts/tsconfig.json +7 -2
  20. package/templates/frontend/next-app/README.md +10 -1
  21. package/templates/frontend/next-app/next.config.js +1 -1
  22. package/templates/frontend/next-app/package.json +16 -21
  23. package/templates/frontend/next-app/src/app/hello-components/page.js +9 -10
  24. package/templates/frontend/next-app/src/app/hello-near/page.js +18 -12
  25. package/templates/frontend/next-app/src/app/layout.js +25 -5
  26. package/templates/frontend/next-app/src/components/navigation.js +8 -7
  27. package/templates/frontend/next-app/src/components/vm-component.js +7 -8
  28. package/templates/frontend/next-app/src/config.js +8 -6
  29. package/templates/frontend/next-app/src/wallets/near-wallet.js +144 -0
  30. package/templates/frontend/next-page/README.md +10 -1
  31. package/templates/frontend/next-page/next.config.js +1 -1
  32. package/templates/frontend/next-page/package.json +10 -12
  33. package/templates/frontend/next-page/src/components/cards.js +1 -1
  34. package/templates/frontend/next-page/src/components/navigation.js +8 -6
  35. package/templates/frontend/next-page/src/components/vm-component.js +4 -5
  36. package/templates/frontend/next-page/src/config.js +8 -6
  37. package/templates/frontend/next-page/src/layout.js +22 -6
  38. package/templates/frontend/next-page/src/pages/_app.js +3 -3
  39. package/templates/frontend/next-page/src/pages/_document.js +2 -2
  40. package/templates/frontend/next-page/src/pages/hello-components/index.js +14 -15
  41. package/templates/frontend/next-page/src/pages/hello-near/index.js +23 -21
  42. package/templates/frontend/next-page/src/pages/index.js +4 -4
  43. package/templates/frontend/next-page/src/wallets/near-wallet.js +143 -0
  44. package/templates/frontend/next-page/yarn.lock +8439 -0
  45. package/templates/contracts/rs/.cargo/config +0 -2
  46. package/templates/contracts/rs/build.sh +0 -3
  47. package/templates/contracts/rs/deploy.sh +0 -2
  48. package/templates/contracts/rs/test-rs.sh +0 -9
  49. package/templates/contracts/rs/test-ts.sh +0 -10
  50. package/templates/contracts/ts/package-lock.json +0 -5966
  51. package/templates/frontend/next-app/src/wallets/wallet-selector.js +0 -120
  52. package/templates/frontend/next-page/package-lock.json +0 -14642
  53. package/templates/frontend/next-page/src/wallets/wallet-selector.js +0 -120
  54. package/templates/frontend/vanilla/.babelrc +0 -7
  55. package/templates/frontend/vanilla/.gitpod.yml +0 -6
  56. package/templates/frontend/vanilla/README.md +0 -100
  57. package/templates/frontend/vanilla/package.json +0 -43
  58. package/templates/frontend/vanilla/src/assets/favicon.ico +0 -0
  59. package/templates/frontend/vanilla/src/assets/global.css +0 -202
  60. package/templates/frontend/vanilla/src/assets/logo-black.svg +0 -1
  61. package/templates/frontend/vanilla/src/assets/logo-white.svg +0 -1
  62. package/templates/frontend/vanilla/src/components.html +0 -61
  63. package/templates/frontend/vanilla/src/components.js +0 -59
  64. package/templates/frontend/vanilla/src/hello-near.html +0 -80
  65. package/templates/frontend/vanilla/src/hello.js +0 -61
  66. package/templates/frontend/vanilla/src/index.html +0 -65
  67. package/templates/frontend/vanilla/src/near-wallet.js +0 -108
  68. package/templates/frontend/vanilla/webpack.config.js +0 -79
  69. package/templates/sandbox-tests/sandbox-rs/Cargo.toml +0 -14
  70. package/templates/sandbox-tests/sandbox-rs/src/tests.rs +0 -65
  71. package/templates/sandbox-tests/sandbox-ts/ava.config.cjs +0 -9
  72. package/templates/sandbox-tests/sandbox-ts/package-lock.json +0 -5014
  73. package/templates/sandbox-tests/sandbox-ts/package.json +0 -17
@@ -1,120 +0,0 @@
1
- import { create as createStore } from 'zustand';
2
- import { distinctUntilChanged, map } from 'rxjs';
3
- import { providers } from 'near-api-js';
4
- import { setupWalletSelector } from '@near-wallet-selector/core';
5
- import { setupModal } from '@near-wallet-selector/modal-ui';
6
- import { setupMyNearWallet } from '@near-wallet-selector/my-near-wallet';
7
- import { setupHereWallet } from '@near-wallet-selector/here-wallet';
8
-
9
- import { useEffect, useState } from 'react';
10
-
11
- export const useWallet = createStore(set => ({
12
- signedAccountId: '',
13
- logOut: undefined,
14
- logIn: undefined,
15
- selector: undefined,
16
- viewMethod: undefined,
17
- callMethod: undefined,
18
- setLogActions: ({ logOut, logIn }) => set({ logOut, logIn }),
19
- setAuth: ({ signedAccountId }) => set({ signedAccountId }),
20
- setMethods: ({ viewMethod, callMethod }) => set({ viewMethod, callMethod }),
21
- setStoreSelector: ({ selector }) => set({ selector }),
22
- }));
23
-
24
- export function useInitWallet({ createAccessKeyFor, networkId }) {
25
- const setAuth = useWallet(store => store.setAuth);
26
- const setLogActions = useWallet(store => store.setLogActions);
27
- const setMethods = useWallet(store => store.setMethods);
28
- const setStoreSelector = useWallet(store => store.setStoreSelector);
29
- const [selector, setSelector] = useState(undefined);
30
-
31
- useEffect(() => {
32
- const selector = setupWalletSelector({
33
- network: networkId,
34
- modules: [setupMyNearWallet(), setupHereWallet()]
35
- });
36
-
37
- setSelector(selector);
38
- setStoreSelector({ selector });
39
- }, [networkId, setStoreSelector]);
40
-
41
- useEffect(() => {
42
- if (!selector) return;
43
-
44
- selector.then(walletSelector => {
45
- const accounts = walletSelector.store.getState().accounts;
46
- const signedAccountId = accounts.find((account) => account.active)?.accountId || '';
47
- setAuth({ signedAccountId });
48
-
49
- walletSelector.store.observable
50
- .pipe(
51
- map((state) => state.accounts),
52
- distinctUntilChanged()
53
- )
54
- .subscribe((accounts) => {
55
- const signedAccountId = accounts.find((account) => account.active)?.accountId || '';
56
- setAuth({ signedAccountId });
57
- });
58
- });
59
- }, [selector, setAuth]);
60
-
61
- useEffect(() => {
62
- if (!selector) return;
63
-
64
- // defined logOut and logIn actions
65
- const logOut = async () => {
66
- const wallet = await (await selector).wallet();
67
- await wallet.signOut();
68
- setAuth({ signedAccountId: '' });
69
- };
70
-
71
- const logIn = async () => {
72
- const modal = setupModal(await selector, { contractId: createAccessKeyFor });
73
- modal.show();
74
- };
75
-
76
- setLogActions({ logOut, logIn });
77
- }, [createAccessKeyFor, selector, setAuth, setLogActions]);
78
-
79
- useEffect(() => {
80
- if (!selector) return;
81
-
82
- const viewMethod = async (contractId, method, args = {}) => {
83
- const { network } = (await selector).options;
84
- const provider = new providers.JsonRpcProvider({ url: network.nodeUrl });
85
-
86
- let res = await provider.query({
87
- request_type: 'call_function',
88
- account_id: contractId,
89
- method_name: method,
90
- args_base64: Buffer.from(JSON.stringify(args)).toString('base64'),
91
- finality: 'optimistic',
92
- });
93
- return JSON.parse(Buffer.from(res.result).toString());
94
- };
95
-
96
- const callMethod = async (contractId, method, args = {}, gas = '30000000000000', deposit = 0) => {
97
- const wallet = await (await selector).wallet();
98
-
99
- const outcome = await wallet.signAndSendTransaction({
100
- receiverId: contractId,
101
- actions: [
102
- {
103
- type: 'FunctionCall',
104
- params: {
105
- methodName: method,
106
- args,
107
- gas,
108
- deposit,
109
- },
110
- },
111
- ],
112
- });
113
-
114
- return providers.getTransactionLastResult(outcome);
115
- };
116
-
117
- setMethods({ viewMethod, callMethod });
118
-
119
- }, [selector, setMethods]);
120
- }