create-near-app 5.3.1 → 6.0.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 (112) hide show
  1. package/dist/make.js +19 -15
  2. package/dist/messages.js +2 -2
  3. package/dist/package-json.js +17 -1
  4. package/dist/types.js +1 -1
  5. package/dist/user-input.js +16 -15
  6. package/package.json +4 -1
  7. package/templates/contracts/js/deploy.sh +6 -1
  8. package/templates/contracts/js/package-lock.json +5966 -0
  9. package/templates/contracts/js/src/contract.ts +5 -5
  10. package/templates/contracts/rust/Cargo.toml +1 -1
  11. package/templates/contracts/rust/README.md +2 -2
  12. package/templates/contracts/rust/deploy.sh +5 -0
  13. package/templates/contracts/rust/src/lib.rs +11 -11
  14. package/templates/frontend/gateway/.nvmrc +1 -0
  15. package/templates/frontend/gateway/.prettierrc +6 -0
  16. package/templates/frontend/gateway/next.config.js +15 -0
  17. package/templates/frontend/gateway/package.json +74 -0
  18. package/templates/frontend/gateway/public/apple-touch-icon.png +0 -0
  19. package/templates/frontend/gateway/public/bos-meta.png +0 -0
  20. package/templates/frontend/gateway/public/favicon.ico +0 -0
  21. package/templates/frontend/gateway/public/favicon.png +0 -0
  22. package/templates/frontend/gateway/public/fonts/FKGrotesk.woff2 +0 -0
  23. package/templates/frontend/gateway/public/fonts/Mona-Sans.woff2 +0 -0
  24. package/templates/frontend/gateway/public/logo192.png +0 -0
  25. package/templates/frontend/gateway/public/next.svg +1 -0
  26. package/templates/frontend/gateway/public/robots.txt +3 -0
  27. package/templates/frontend/gateway/public/site.webmanifest +8 -0
  28. package/templates/frontend/gateway/public/vercel.svg +1 -0
  29. package/templates/frontend/gateway/src/assets/images/near-icon.svg +3 -0
  30. package/templates/frontend/gateway/src/components/MetaTags.tsx +22 -0
  31. package/templates/frontend/gateway/src/components/component/ComponentWrapperPage.tsx +27 -0
  32. package/templates/frontend/gateway/src/components/layouts/DefaultLayout.tsx +16 -0
  33. package/templates/frontend/gateway/src/components/layouts/SimpleLayout.tsx +9 -0
  34. package/templates/frontend/gateway/src/components/lib/Button/Button.tsx +379 -0
  35. package/templates/frontend/gateway/src/components/lib/Button/index.tsx +1 -0
  36. package/templates/frontend/gateway/src/components/lib/Spinner/Spinner.tsx +33 -0
  37. package/templates/frontend/gateway/src/components/lib/Spinner/index.ts +1 -0
  38. package/templates/frontend/gateway/src/components/lib/Text/Text.tsx +14 -0
  39. package/templates/frontend/gateway/src/components/lib/Text/index.tsx +1 -0
  40. package/templates/frontend/gateway/src/components/lib/Toast/README.md +83 -0
  41. package/templates/frontend/gateway/src/components/lib/Toast/Toast.tsx +25 -0
  42. package/templates/frontend/gateway/src/components/lib/Toast/Toaster.tsx +48 -0
  43. package/templates/frontend/gateway/src/components/lib/Toast/api.ts +6 -0
  44. package/templates/frontend/gateway/src/components/lib/Toast/index.ts +3 -0
  45. package/templates/frontend/gateway/src/components/lib/Toast/store.ts +83 -0
  46. package/templates/frontend/gateway/src/components/lib/Toast/styles.ts +126 -0
  47. package/templates/frontend/gateway/src/components/navigation/Navigation.tsx +23 -0
  48. package/templates/frontend/gateway/src/components/navigation/UserDropdownMenu.tsx +209 -0
  49. package/templates/frontend/gateway/src/components/navigation/desktop/DesktopNavigation.tsx +109 -0
  50. package/templates/frontend/gateway/src/components/navigation/desktop/MainNavigationMenu.tsx +170 -0
  51. package/templates/frontend/gateway/src/components/navigation/icons/close.svg +22 -0
  52. package/templates/frontend/gateway/src/components/navigation/icons/near-icon.svg +3 -0
  53. package/templates/frontend/gateway/src/components/navigation/icons/near-logo.svg +14 -0
  54. package/templates/frontend/gateway/src/components/navigation/icons/return.svg +29 -0
  55. package/templates/frontend/gateway/src/components/navigation/icons/search.svg +3 -0
  56. package/templates/frontend/gateway/src/components/navigation/mobile/AccordionMenu.tsx +141 -0
  57. package/templates/frontend/gateway/src/components/navigation/mobile/Menu.tsx +86 -0
  58. package/templates/frontend/gateway/src/components/navigation/mobile/MobileNavigation.tsx +131 -0
  59. package/templates/frontend/gateway/src/components/navigation/navigation-categories.ts +75 -0
  60. package/templates/frontend/gateway/src/components/vm/VmCommitButton.tsx +20 -0
  61. package/templates/frontend/gateway/src/components/vm/VmComponent.tsx +29 -0
  62. package/templates/frontend/gateway/src/components/vm/VmInitializer.tsx +124 -0
  63. package/templates/frontend/gateway/src/data/components.ts +50 -0
  64. package/templates/frontend/gateway/src/data/web3.ts +292 -0
  65. package/templates/frontend/gateway/src/hooks/useBosComponents.ts +14 -0
  66. package/templates/frontend/gateway/src/hooks/useBosLoaderInitializer.ts +60 -0
  67. package/templates/frontend/gateway/src/hooks/useFlags.ts +40 -0
  68. package/templates/frontend/gateway/src/hooks/useLayout.tsx +12 -0
  69. package/templates/frontend/gateway/src/index.d.ts +9 -0
  70. package/templates/frontend/gateway/src/pages/_app.tsx +47 -0
  71. package/templates/frontend/gateway/src/pages/_document.tsx +27 -0
  72. package/templates/frontend/gateway/src/pages/dig.tsx +25 -0
  73. package/templates/frontend/gateway/src/pages/flags.tsx +83 -0
  74. package/templates/frontend/gateway/src/pages/hello-api.tsx +105 -0
  75. package/templates/frontend/gateway/src/pages/hello-component.tsx +23 -0
  76. package/templates/frontend/gateway/src/pages/hello-ethereum.tsx +23 -0
  77. package/templates/frontend/gateway/src/pages/hello-social.tsx +31 -0
  78. package/templates/frontend/gateway/src/pages/index.tsx +51 -0
  79. package/templates/frontend/gateway/src/pages/nui.tsx +25 -0
  80. package/templates/frontend/gateway/src/stores/auth.ts +29 -0
  81. package/templates/frontend/gateway/src/stores/bos-loader.ts +20 -0
  82. package/templates/frontend/gateway/src/stores/current-component.ts +11 -0
  83. package/templates/frontend/gateway/src/stores/vm.ts +24 -0
  84. package/templates/frontend/gateway/src/styles/globals.css +68 -0
  85. package/templates/frontend/gateway/src/styles/theme.css +129 -0
  86. package/templates/frontend/gateway/src/utils/config.ts +49 -0
  87. package/templates/frontend/gateway/src/utils/form-validation.ts +18 -0
  88. package/templates/frontend/gateway/src/utils/keypom-options.ts +59 -0
  89. package/templates/frontend/gateway/src/utils/route/privateRoute.tsx +20 -0
  90. package/templates/frontend/gateway/src/utils/route/signedOutRoute.tsx +21 -0
  91. package/templates/frontend/gateway/src/utils/types.ts +33 -0
  92. package/templates/frontend/gateway/tsconfig.json +24 -0
  93. package/templates/frontend/vanilla/.env +1 -0
  94. package/templates/frontend/vanilla/index.html +15 -6
  95. package/templates/frontend/vanilla/index.js +1 -1
  96. package/templates/frontend/{shared → vanilla}/near-wallet.js +2 -2
  97. package/templates/frontend/vanilla/package.json +9 -8
  98. package/templates/integration-tests/js-tests/package-lock.json +5014 -0
  99. package/templates/integration-tests/js-tests/package.json +3 -0
  100. package/templates/integration-tests/js-tests/src/main.ava.ts +6 -6
  101. package/templates/integration-tests/rust-tests/src/tests.rs +7 -7
  102. package/templates/frontend/react/App.js +0 -75
  103. package/templates/frontend/react/assets/favicon.ico +0 -0
  104. package/templates/frontend/react/assets/global.css +0 -231
  105. package/templates/frontend/react/assets/logo-black.svg +0 -1
  106. package/templates/frontend/react/assets/logo-white.svg +0 -1
  107. package/templates/frontend/react/index.html +0 -15
  108. package/templates/frontend/react/index.js +0 -23
  109. package/templates/frontend/react/package.json +0 -52
  110. package/templates/frontend/react/ui-components.js +0 -59
  111. package/templates/frontend/shared/start.sh +0 -26
  112. /package/templates/{shared → contracts/rust}/rust-toolchain.toml +0 -0
package/dist/make.js CHANGED
@@ -58,22 +58,26 @@ async function createFiles({ contract, frontend, tests, projectPath, verbose, ro
58
58
  const sourceSharedDir = path_1.default.resolve(rootDir, 'shared');
59
59
  await copyDir(sourceSharedDir, projectPath, { verbose, skip: skip.map(f => path_1.default.join(sourceSharedDir, f)) });
60
60
  // copy contract files
61
- const sourceContractDir = path_1.default.resolve(rootDir, 'contracts', contract);
62
- const targetContractDir = path_1.default.resolve(projectPath, 'contract');
63
- fs_1.default.mkdirSync(targetContractDir, { recursive: true });
64
- await copyDir(sourceContractDir, targetContractDir, {
65
- verbose,
66
- skip: skip.map(f => path_1.default.join(sourceContractDir, f))
67
- });
61
+ if (contract !== 'none') {
62
+ const sourceContractDir = path_1.default.resolve(rootDir, 'contracts', contract);
63
+ const targetContractDir = path_1.default.resolve(projectPath, 'contract');
64
+ fs_1.default.mkdirSync(targetContractDir, { recursive: true });
65
+ await copyDir(sourceContractDir, targetContractDir, {
66
+ verbose,
67
+ skip: skip.map(f => path_1.default.join(sourceContractDir, f))
68
+ });
69
+ }
68
70
  // tests dir
69
- const targetTestDir = path_1.default.resolve(projectPath, 'integration-tests');
70
- fs_1.default.mkdirSync(targetTestDir, { recursive: true });
71
- // copy tests - shared files
72
- const sourceTestSharedDir = path_1.default.resolve(`${rootDir}/integration-tests/${tests}-tests`);
73
- await copyDir(sourceTestSharedDir, targetTestDir, {
74
- verbose,
75
- skip: skip.map(f => path_1.default.join(sourceTestSharedDir, f))
76
- });
71
+ if (contract !== 'none') {
72
+ const targetTestDir = path_1.default.resolve(projectPath, 'integration-tests');
73
+ fs_1.default.mkdirSync(targetTestDir, { recursive: true });
74
+ // copy tests - shared files
75
+ const sourceTestSharedDir = path_1.default.resolve(`${rootDir}/integration-tests/${tests}-tests`);
76
+ await copyDir(sourceTestSharedDir, targetTestDir, {
77
+ verbose,
78
+ skip: skip.map(f => path_1.default.join(sourceTestSharedDir, f))
79
+ });
80
+ }
77
81
  // add .gitignore
78
82
  await (0, exports.renameFile)(`${projectPath}/template.gitignore`, `${projectPath}/.gitignore`);
79
83
  }
package/dist/messages.js CHANGED
@@ -24,9 +24,9 @@ Please refer to https://github.com/near/create-near-app README to troubleshoot.
24
24
  Notice: some platforms aren't supported (yet).
25
25
  {bold {red ==========================================}}`);
26
26
  exports.setupFailed = setupFailed;
27
- const successContractToText = (contract) => (0, chalk_1.default) `with a smart contract in {bold ${contract === 'rust' ? 'Rust' : 'JavaScript'}}`;
27
+ const successContractToText = (contract) => contract === 'none' ? '' : (0, chalk_1.default) `with a smart contract in {bold ${contract === 'rust' ? 'Rust' : 'JavaScript'}}`;
28
28
  exports.successContractToText = successContractToText;
29
- const successFrontendToText = (frontend) => frontend === 'none' ? '' : (0, chalk_1.default) ` and a frontend template${frontend === 'react' ? (0, chalk_1.default) `{bold in React.js}` : ''}`;
29
+ const successFrontendToText = (frontend) => frontend === 'none' ? '' : (0, chalk_1.default) ` and a frontend template${frontend === 'gateway' ? (0, chalk_1.default) `{bold in React.js}` : ''}`;
30
30
  exports.successFrontendToText = successFrontendToText;
31
31
  const setupSuccess = (projectName, contract, frontend, install) => (0, exports.show)((0, chalk_1.default) `
32
32
  {green ======================================================}
@@ -31,7 +31,7 @@ function basePackage({ contract, frontend, tests, projectName }) {
31
31
  };
32
32
  }
33
33
  const startScript = (hasFrontend) => hasFrontend ? {
34
- 'start': 'cd frontend && npm run start'
34
+ 'start': 'cd frontend && npm run dev'
35
35
  } : {};
36
36
  const buildScript = (hasFrontend) => hasFrontend ? {
37
37
  'build': 'npm run build:contract && npm run build:web',
@@ -50,6 +50,10 @@ const buildContractScript = (contract) => {
50
50
  return {
51
51
  [buildContractScriptName]: 'cd contract && ./build.sh',
52
52
  };
53
+ case 'none':
54
+ return {
55
+ [buildContractScriptName]: 'echo "No contract to build"',
56
+ };
53
57
  }
54
58
  };
55
59
  const deployScript = (contract) => {
@@ -62,6 +66,10 @@ const deployScript = (contract) => {
62
66
  return {
63
67
  'deploy': 'cd contract && ./deploy.sh',
64
68
  };
69
+ case 'none':
70
+ return {
71
+ 'deploy': 'echo "No contract to deploy"',
72
+ };
65
73
  }
66
74
  };
67
75
  const unitTestScripts = (contract) => {
@@ -70,9 +78,14 @@ const unitTestScripts = (contract) => {
70
78
  return { 'test:unit': 'cd contract && npm test' };
71
79
  case 'rust':
72
80
  return { 'test:unit': 'cd contract && cargo test' };
81
+ case 'none':
82
+ return { 'test:unit': 'echo "No contract to test"' };
73
83
  }
74
84
  };
75
85
  const integrationTestScripts = (contract, tests) => {
86
+ if (contract === 'none') {
87
+ return { 'test:integration': 'echo "No contract to test"' };
88
+ }
76
89
  let wasm_path = '';
77
90
  switch (contract) {
78
91
  case 'js':
@@ -106,6 +119,9 @@ const npmInstallScript = (contract, hasFrontend, tests) => {
106
119
  case 'rust':
107
120
  contract_install = 'echo rs contract';
108
121
  break;
122
+ case 'none':
123
+ contract_install = 'echo no contract';
124
+ break;
109
125
  }
110
126
  return {
111
127
  'postinstall': `${frontend_install} && ${test_install} && ${contract_install}`
package/dist/types.js CHANGED
@@ -2,6 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TESTING_FRAMEWORKS = exports.FRONTENDS = exports.CONTRACTS = void 0;
4
4
  exports.CONTRACTS = ['js', 'rust'];
5
- exports.FRONTENDS = ['react', 'vanilla', 'none'];
5
+ exports.FRONTENDS = ['gateway', 'vanilla', 'none'];
6
6
  exports.TESTING_FRAMEWORKS = ['rust', 'js'];
7
7
  //# sourceMappingURL=types.js.map
@@ -75,37 +75,38 @@ function validateUserArgs(args) {
75
75
  }
76
76
  exports.validateUserArgs = validateUserArgs;
77
77
  const contractChoices = [
78
- { title: 'TypeScript', value: 'js' },
79
- { title: 'Rust', value: 'rust' },
78
+ { title: 'Yes, in TypeScript', description: 'Build a Near contract using javascript/typescript', value: 'js' },
79
+ { title: 'Yes, in Rust', description: 'Build a Near contract using Rust', value: 'rust' },
80
+ { title: 'No', description: 'You are not building a Near smart contract', value: 'none' },
80
81
  ];
81
82
  const testsChoices = [
82
- { title: 'Rust Sandbox Tests', value: 'rust' },
83
- { title: 'TypeScript Sandbox Tests', value: 'js' },
83
+ { title: 'Tests written in Rust', value: 'rust' },
84
+ { title: 'Tests written in Javascript', value: 'js' },
84
85
  ];
85
86
  const frontendChoices = [
86
- { title: 'React.js', value: 'react' },
87
- { title: 'Vanilla JavaScript', value: 'vanilla' },
88
- { title: 'No frontend', value: 'none' },
87
+ { title: 'Composable web app (Gateway)', description: 'Leverage next.js and web3 components to create multi-chain apps', value: 'gateway' },
88
+ { title: 'Vanilla web app', description: 'Interact with the Near blockchain using a simple web app', value: 'vanilla' },
89
+ { title: 'No frontend', description: 'Build a smart contract with no frontend', value: 'none' },
89
90
  ];
90
91
  const userPrompts = [
92
+ {
93
+ type: 'select',
94
+ name: 'frontend',
95
+ message: 'Frontend: What kind of App are you building?',
96
+ choices: frontendChoices,
97
+ },
91
98
  {
92
99
  type: 'select',
93
100
  name: 'contract',
94
- message: 'Select your smart-contract language',
101
+ message: 'Contract: Are you building a NEAR contract?',
95
102
  choices: contractChoices,
96
103
  },
97
104
  {
98
105
  type: prev => prev === 'rust' ? 'select' : null,
99
106
  name: 'tests',
100
- message: 'Select language for Sandbox Test',
107
+ message: 'Sandbox Testing: Which language do you prefer to test your contract?',
101
108
  choices: testsChoices,
102
109
  },
103
- {
104
- type: 'select',
105
- name: 'frontend',
106
- message: 'Select a template for your frontend',
107
- choices: frontendChoices,
108
- },
109
110
  {
110
111
  type: 'text',
111
112
  name: 'projectName',
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-near-app",
3
- "version": "5.3.1",
3
+ "version": "6.0.0-beta.0",
4
4
  "description": "Quickly scaffold your dApp on NEAR Blockchain",
5
5
  "main": "index.js",
6
6
  "engines": {
@@ -34,6 +34,9 @@
34
34
  },
35
35
  "devDependencies": {
36
36
  "@babel/eslint-parser": "^7.22.5",
37
+ "@babel/core": "^7.23.2",
38
+ "@babel/plugin-transform-react-jsx": "^7.22.15",
39
+ "@babel/plugin-syntax-flow": "^7.22.5",
37
40
  "@commitlint/cli": "^17.6.6",
38
41
  "@commitlint/config-conventional": "^17.6.6",
39
42
  "@release-it/conventional-changelog": "^5.1.1",
@@ -10,4 +10,9 @@ fi
10
10
  echo ">> Deploying contract"
11
11
 
12
12
  # https://docs.near.org/tools/near-cli#near-dev-deploy
13
- near dev-deploy --wasmFile build/hello_near.wasm
13
+ near dev-deploy --wasmFile build/hello_near.wasm
14
+
15
+ # if ../frontend folder exists, copy the env file there
16
+ if [ -d "../frontend" ]; then
17
+ (echo ; cat ./neardev/dev-account.env) >> ../frontend/.env
18
+ fi