diff --git a/package-lock.json b/package-lock.json index 6821386..14ebcae 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "vue-router": "^4.1.6" }, "devDependencies": { + "@aeternity/contract-builder": "^0.1.0", "@babel/core": "^7.21.3", "@babel/eslint-parser": "^7.21.3", "@vue/cli-plugin-babel": "~5.0.8", @@ -111,6 +112,89 @@ "resolved": "https://registry.npmjs.org/@aeternity/argon2-browser/-/argon2-browser-0.1.2.tgz", "integrity": "sha512-nL3xZYf0JXVIm6HFyppXn9fgHjmSjYa1PBYXzD1/pLbECdikD+r3IuhIR3dAwn8nq9xShjHPr9ZnJUbbUvva4g==" }, + "node_modules/@aeternity/contract-builder": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@aeternity/contract-builder/-/contract-builder-0.1.0.tgz", + "integrity": "sha512-TR13cbulH1orEc/SvmE5fkoYk9lmMcrKRVJ+sQryGKDzvj1adKk16LiEG/deviXfyT8UFWfyMa5unKb3n5p4zw==", + "dev": true, + "dependencies": { + "@aeternity/aepp-sdk": "^13.0.0", + "@types/lodash": "^4.14.192", + "commander": "^10.0.0", + "lodash": "^4.17.21", + "schema-utils": "^4.0.0", + "webpack": "^5.78.0", + "webpack-cli": "^5.0.1" + }, + "bin": { + "ae-contract-builder": "dist/cli.js" + }, + "engines": { + "node": ">=14.19.0" + } + }, + "node_modules/@aeternity/contract-builder/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@aeternity/contract-builder/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/@aeternity/contract-builder/node_modules/commander": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.0.tgz", + "integrity": "sha512-zS5PnTI22FIRM6ylNW8G4Ap0IEOyk62fhLSD0+uHRT9McRCLGpkVNvao4bjimpK/GShynyQkFFxHhwMcETmduA==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@aeternity/contract-builder/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/@aeternity/contract-builder/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, "node_modules/@aeternity/uuid": { "version": "0.0.1", "license": "MIT", @@ -1955,6 +2039,15 @@ "ms": "^2.1.1" } }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -3262,6 +3355,12 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash": { + "version": "4.14.192", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.192.tgz", + "integrity": "sha512-km+Vyn3BYm5ytMO13k9KTp27O75rbQ0NFw+U//g+PX7VZyjCioXaRFisqSIJRECljcTv73G3i6BpglNGHgUQ5A==", + "dev": true + }, "node_modules/@types/mime": { "version": "1.3.2", "dev": true, @@ -4326,6 +4425,50 @@ "@xtuc/long": "4.2.2" } }, + "node_modules/@webpack-cli/configtest": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.0.1.tgz", + "integrity": "sha512-njsdJXJSiS2iNbQVS0eT8A/KPnmyH4pv1APj2K0d1wrZcBLw+yppxOy4CGqa0OxDJkzfL/XELDhD8rocnIwB5A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.1.tgz", + "integrity": "sha512-fE1UEWTwsAxRhrJNikE7v4EotYflkEhBL7EbajfkPlf6E37/2QshOy/D48Mw8G5XMFlQtS6YV42vtbG9zBpIQA==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.1.tgz", + "integrity": "sha512-0G7tNyS+yW8TdgHwZKlDWYXFA6OJQnoLCQvYKkQP0Q2X205PSQ6RNUj0M+1OB/9gRQaUZ/ccYfaxd0nhaWKfjw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "dev": true, @@ -7126,6 +7269,18 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/error-ex": { "version": "1.3.2", "dev": true, @@ -8141,6 +8296,15 @@ "dev": true, "license": "MIT" }, + "node_modules/fastest-levenshtein": { + "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", + "dev": true, + "engines": { + "node": ">= 4.9.1" + } + }, "node_modules/fastq": { "version": "1.13.0", "dev": true, @@ -9083,6 +9247,15 @@ "node": ">=10" } }, + "node_modules/interpret": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, "node_modules/ipaddr.js": { "version": "2.0.1", "dev": true, @@ -14412,6 +14585,18 @@ "node": ">=8.10.0" } }, + "node_modules/rechoir": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "dev": true, + "dependencies": { + "resolve": "^1.20.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, "node_modules/regenerate": { "version": "1.4.2", "dev": true, @@ -16281,9 +16466,10 @@ } }, "node_modules/webpack": { - "version": "5.74.0", + "version": "5.78.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.78.0.tgz", + "integrity": "sha512-gT5DP72KInmE/3azEaQrISjTvLYlSM0j1Ezhht/KLVkrqtv10JoP/RXhwmX/frrutOPuSq3o5Vq0ehR/4Vmd1g==", "dev": true, - "license": "MIT", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^0.0.51", @@ -16440,6 +16626,60 @@ "node": ">=0.10.0" } }, + "node_modules/webpack-cli": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.0.1.tgz", + "integrity": "sha512-S3KVAyfwUqr0Mo/ur3NzIp6jnerNpo7GUO6so51mxLi1spqsA17YcMXy0WOIJtBSnj748lthxC6XLbNKh/ZC+A==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^2.0.1", + "@webpack-cli/info": "^2.0.1", + "@webpack-cli/serve": "^2.0.1", + "colorette": "^2.0.14", + "commander": "^9.4.1", + "cross-spawn": "^7.0.3", + "envinfo": "^7.7.3", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^3.1.1", + "rechoir": "^0.8.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-cli/node_modules/commander": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || >=14" + } + }, "node_modules/webpack-dev-middleware": { "version": "5.3.3", "dev": true, diff --git a/package.json b/package.json index f8f7f6a..1fb9726 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "vue-router": "^4.1.6" }, "devDependencies": { + "@aeternity/contract-builder": "^0.1.0", "@babel/core": "^7.21.3", "@babel/eslint-parser": "^7.21.3", "@vue/cli-plugin-babel": "~5.0.8", diff --git a/src/App.vue b/src/App.vue index 04e2f27..0fac8c1 100644 --- a/src/App.vue +++ b/src/App.vue @@ -4,7 +4,7 @@

Welcome To Aeternity

diff --git a/src/router/index.js b/src/router/index.js index c0ac051..4145d54 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -8,12 +8,12 @@ const routes = [ component: Home }, { - path: '/about', - name: 'About', + path: '/contract', + name: 'Contract', // route level code-splitting - // this generates a separate chunk (about.[hash].js) for this route + // this generates a separate chunk (contract.[hash].js) for this route // which is lazy-loaded when the route is visited. - component: () => import(/* webpackChunkName: "about" */ '../views/AboutView.vue') + component: () => import(/* webpackChunkName: "contract" */ '../views/ContractView.vue') } ] diff --git a/src/utils/aeternity/contracts/Idenitity.aes b/src/utils/aeternity/contracts/Idenitity.aes deleted file mode 100644 index 11e8fcd..0000000 --- a/src/utils/aeternity/contracts/Idenitity.aes +++ /dev/null @@ -1,2 +0,0 @@ -contract Identity = - entrypoint main(x : int) = x diff --git a/src/utils/aeternity/contracts/Multiplier.aes b/src/utils/aeternity/contracts/Multiplier.aes new file mode 100644 index 0000000..6817828 --- /dev/null +++ b/src/utils/aeternity/contracts/Multiplier.aes @@ -0,0 +1,4 @@ +contract Multiplier = + record state = { factor: int } + entrypoint init(f : int) : state = { factor = f } + entrypoint calc(x : int) = x * state.factor diff --git a/src/views/AboutView.vue b/src/views/AboutView.vue deleted file mode 100644 index 3ab9d87..0000000 --- a/src/views/AboutView.vue +++ /dev/null @@ -1,14 +0,0 @@ - - - diff --git a/src/views/ContractView.vue b/src/views/ContractView.vue new file mode 100644 index 0000000..f151f02 --- /dev/null +++ b/src/views/ContractView.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/vue.config.js b/vue.config.js index 624b81b..71e49fb 100644 --- a/vue.config.js +++ b/vue.config.js @@ -1,16 +1,14 @@ -module.exports = { - transpileDependencies: [ - '@aeternity' - ], - // added file-loader - chainWebpack: config => { - // .aes loader - config.module - .rule('aes') - .test(/\.aes$/) - .use('file-loader') - .loader('file-loader') - .end() - } +const { defineConfig } = require('@vue/cli-service'); -} +module.exports = defineConfig({ + configureWebpack: { + module: { + rules: [{ + test: /\.aes$/, + use: { + loader: '@aeternity/contract-builder', + }, + }], + }, + }, +});