diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..ae1c8ac3 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "asciidoc.antora.enableAntoraSupport": true +} \ No newline at end of file diff --git a/docs/images/08-Domain-Model.png b/docs/images/08-Domain-Model.png new file mode 100644 index 00000000..76c487b7 Binary files /dev/null and b/docs/images/08-Domain-Model.png differ diff --git a/docs/images/10_quality_tree.jpg b/docs/images/10_quality_tree.jpg new file mode 100644 index 00000000..7960413c Binary files /dev/null and b/docs/images/10_quality_tree.jpg differ diff --git a/docs/images/3-BusinessContext.drawio.svg b/docs/images/3-BusinessContext.drawio.svg new file mode 100644 index 00000000..e976cc80 --- /dev/null +++ b/docs/images/3-BusinessContext.drawio.svg @@ -0,0 +1,4 @@ + + + +
User
User

WIQ






WIQ...
Wikidata API
Wikidata API
interacts
interacts
requests
requests
UI
UI
QUESTION GENERATOR
QUESTION GENERATOR
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/images/3-TechnicalContext.drawio.svg b/docs/images/3-TechnicalContext.drawio.svg new file mode 100644 index 00000000..b3226527 --- /dev/null +++ b/docs/images/3-TechnicalContext.drawio.svg @@ -0,0 +1,4 @@ + + + +
User
User
WIQ























WIQ...
Database
Database
HTTPS
HTTPS
LOGIN AND AUTHENTICATION
LOGIN AND AUTHENTICA...
QUESTION GENERATION
QUESTION GENERATION
HOME
HOME
HTTPS
HTTPS
redirect
redirect
Text is not SVG - cannot display
\ No newline at end of file diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc index ddb2ae3d..0eebb332 100644 --- a/docs/src/01_introduction_and_goals.adoc +++ b/docs/src/01_introduction_and_goals.adoc @@ -2,6 +2,8 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-introduction-and-goals]] == Introduction and Goals +The Spanish TV and news company RTVE has hired the software company HappySW to develop a web application based on the successful TV program "Saber y Ganar" called WIQ. +The application will be a trivia style game composed by a series of questions with multiple answers dynamically generated by the use of the WikiData API. [role="arc42help"] **** @@ -16,6 +18,9 @@ These include **** === Requirements Overview +The system will follow the functionality of the "Saber y Ganar" TV program, and so it will allow the users to select an answer between some options. +The questions and answers will be automatically generated using the WikiData API, that will also determine which of the answers is in fact the correct one. +The system will also store the historical data of the users and will be accessible through the web. [role="arc42help"] **** @@ -43,6 +48,16 @@ See https://docs.arc42.org/section-1/[Introduction and Goals] in the arc42 docum === Quality Goals +[options="header",cols="1,2"] +|=== +|Quality attribute|Scenario +| Usability | The user must be able to understand the function of the application before the minute mark. +| Performance | The application will be able to operate within reasonable response times, taking into account the already present waiting times (time to answer, between questions, etc). +| Security | The information stored about a user can only be accessed by said user, never others. +| Robustness | The application will be able to handle any user error that could happen at runtime. +| Accessibility | The application will be accessible by all users, even if the suffer from visual impediments such as colorblindness. +|=== + [role="arc42help"] **** .Contents @@ -88,6 +103,8 @@ Table with role names, person names, and their expectations with respect to the [options="header",cols="1,2,2"] |=== |Role/Name|Contact|Expectations -| __ | __ | __ -| __ | __ | __ +| Development team | Lucía Ruiz Núñez, Mario Junquera Rojas, Jorge Cano Martinez, Laura Gómez Menéndez, Ahmet Erdem Yabaci, Daniel Sinne Argüelles | A working, tested and well documented application. +| Professors | Pablo González | Provide guidance and help during the whole development, as well as evaluate the final product. +| RTVE | RTVE | A working and robust application that the users can enjoy using. +| Users | Users | A working and enjoyable application to play with. |=== diff --git a/docs/src/02_architecture_constraints.adoc b/docs/src/02_architecture_constraints.adoc index 226e501f..562c0962 100644 --- a/docs/src/02_architecture_constraints.adoc +++ b/docs/src/02_architecture_constraints.adoc @@ -2,8 +2,24 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-architecture-constraints]] == Architecture Constraints - - +=== Technical constraints +Wikidata:: The information needed must be got from this central storage. +GitHub:: All the communication and code-sharing will be done by GitHub, so all the work will be recorded there. +API:: Give access about users and generated questions through an API. + +=== Organizational constraints +Team size:: The team is formed by 6 people. +Meetings:: There will be a meeting every week where will be discussions about problems we could have, make an overview about the work done and the work to be done among other things. +Time:: There will be several deliveries and the entire project must be developed and finished in the semester of the course. +Budget:: There will not be any financial support. + +=== Political constraints +Data protection:: The private information of the users must be stored securely. + +=== Conventions +English:: As this course is taught in English, the project must be also developed in that language. +ARC42:: The documentation must follow the arc42 template + [role="arc42help"] **** .Contents diff --git a/docs/src/03_system_scope_and_context.adoc b/docs/src/03_system_scope_and_context.adoc index c528e907..e9304afe 100644 --- a/docs/src/03_system_scope_and_context.adoc +++ b/docs/src/03_system_scope_and_context.adoc @@ -47,14 +47,29 @@ Alternatively (or additionally) you can use a table. The title of the table is the name of your system, the three columns contain the name of the communication partner, the inputs, and the outputs. **** +image::3-BusinessContext.drawio.svg["Business context diagram"] -**** -**** +**Table for entities, inputs and outputs** + +|=== +|Entity |Inputs | Outputs + +|*_User Interface UI_* +|Users request a question to be shown +|The question and the set of answers corresponding to that question are presented +|*_Question Generation_* +|User requests a question and the information extracted from wikidata +|The question and the set of answers corresponding to that question are created +|*_Wikidata API_* +|Some part or topic related to the creation of a question +|Some concepts that will facilitate the creation of the question such as wrong answers +|=== === Technical Context [role="arc42help"] + **** .Contents Technical interfaces (channels and transmission media) linking your system to its environment. In addition a mapping of domain specific input/output to the channels, i.e. an explanation which I/O uses which channel. @@ -67,9 +82,17 @@ E.g. UML deployment diagram describing channels to neighboring systems, together with a mapping table showing the relationships between channels and input/output. **** +image::3-TechnicalContext.drawio.svg["Business context diagram"] +.User And Application interface + +The user will access the web application via the HTTPs protocol + +.Home and Login interface + +The home will allow user to be redirected to the login and authentication phase via the HTTPs protocol + +.Login and Question Generation interface + +The login will allow the user to enter the game and so the question generation will start, this will happend through a redirect -**** +.Login and Database + +The login will access the database directly via TCP/IP protocol -**** -**** diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc index e10f375b..bc687266 100644 --- a/docs/src/06_runtime_view.adoc +++ b/docs/src/06_runtime_view.adoc @@ -37,29 +37,141 @@ See https://docs.arc42.org/section-6/[Runtime View] in the arc42 documentation. **** -=== +=== Runtime Scenario: Retrieval of questions +[plantuml,"Retrieval of questions",png] +---- +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database Wikidata +User -> Frontend: next question +Frontend -> Backend: get question +Backend -> Wikidata: request data +Wikidata -> Backend: receive data +Backend -> Backend: generate question +Backend -> Frontend: return question and answers +Frontend -> User: show question +---- + +=== Runtime Scenario: Answer questions + +[plantuml,"Answer questions",png] +---- +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database DB +User -> Frontend: answer +Frontend -> Backend: forward answer +Backend -> Backend: process answer +Backend -> DB: store result +Backend -> Frontend: return correctness +Frontend -> User: show correctness +---- + +=== Runtime Scenario: Login successful + +[plantuml,"Login successful",png] +---- +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database DB +User -> Frontend: send credentials +Frontend -> Backend: forward credentials +Backend -> DB: query for username +DB -> Backend: retrieve user data +Backend -> Backend: validate password +Backend -> Frontend: login successful +Frontend -> User: login successful +---- + +=== Runtime Scenario: Login failure -* __ -* __ +[plantuml,"Login failure",png] +---- +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database DB +User -> Frontend: send credentials +Frontend -> Backend: forward credentials +Backend -> DB: query for username +DB -> Backend: retrieve user data +Backend-> Backend: validate password +Backend -> Frontend: wrong password +Frontend -> User: ask for credentials +User -> Frontend: send credentials +Frontend -> Backend: ... +---- -It is possible to use a sequence diagram: +=== Runtime Scenario: Signup successful -[plantuml,"Sequence diagram",png] +[plantuml,"Signup successful",png] ---- -actor Alice -actor Bob -database Pod as "Bob's Pod" -Alice -> Bob: Authentication Request -Bob --> Alice: Authentication Response -Alice --> Pod: Store route -Alice -> Bob: Another authentication Request -Alice <-- Bob: another authentication Response +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database DB +User -> Frontend: send signup form +Frontend -> Backend: forward signup form +Backend -> DB: check if username exists +DB -> Backend: answer +Backend -> DB: insert data +Backend -> Frontend: signup successful +Frontend -> User: signup successful ---- -=== +=== Runtime Scenario: Signup failure + +[plantuml,"Signup failure",png] +---- +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database DB +User -> Frontend: send signup form +Frontend -> Backend: forward signup form +Backend -> DB: check if username exists +DB -> Backend: answer +Backend -> Frontend: error: username in use +Frontend -> User: username in use +User -> Frontend: send new username +Frontend -> Backend: forward new username +Backend -> DB: ... +---- -=== ... +=== Runtime Scenario: Wikidata error -=== +[plantuml,"Wikidata error",png] +---- +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database Wikidata +User -> Frontend: next question +Frontend -> Backend: get question +Backend -> Wikidata: request data +Wikidata -> Backend: error +Backend -> Backend: error handling +Backend -> Frontend: wikidata error +Frontend -> User: show error message +---- + +=== Runtime Scenario: DB error + +[plantuml,"DB error",png] +---- +actor User +entity Frontend as "Webapp Frontend" +entity Backend as "Webapp Backend" +database DB +User -> Frontend: request +Frontend -> Backend: request +Backend -> DB: request +DB -> Backend: error +Backend -> Backend: error handling +Backend -> Frontend: DB error +Frontend -> User: show error message +---- diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 22b45c27..eaba8299 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -56,19 +56,7 @@ Describe (usually in a combination of diagrams, tables, and text): For multiple environments or alternative deployments please copy and adapt this section of arc42 for all relevant environments. **** -_****_ - -Motivation:: - -__ - -Quality and/or Performance Features:: - -__ - -Mapping of Building Blocks to Infrastructure:: -__ - +*TBD* === Infrastructure Level 2 @@ -79,16 +67,4 @@ Here you can include the internal structure of (some) infrastructure elements fr Please copy the structure from level 1 for each selected element. **** -==== __ - -__ - -==== __ - -__ - -... - -==== __ - -__ +*TBD* \ No newline at end of file diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc index 591ccf1f..edba9e7f 100644 --- a/docs/src/08_concepts.adoc +++ b/docs/src/08_concepts.adoc @@ -55,19 +55,56 @@ image::08-Crosscutting-Concepts-Structure-EN.png["Possible topics for crosscutti See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation. **** +=== Domain concepts +==== Domain model -=== __ +image::08-Domain-Model.png["model-diagram"] -__ +=== User experience concepts +==== Consistency +Design elements should be consistent throuhgout the design so that the user does not get confused. -=== __ +==== Progress indicators +Provide the users with some sort of progress indicator within the quiz. This helps users understand their current position in the quiz. -__ +==== Feedback on correct or incorrect answers +Provide immediate feedback to users after they answer each question, indicating whether their response was correct or incorrect. -... +==== Internationalization +Provide other language options other than english. -=== __ -__ +=== Security and Safety concepts + +==== Secure storage +Make sure to never store the user passwords in plain text, to secure the users data. + +==== Data encryption +Utilize encryption techniques to secure data in any transmission between actors of owr application. + + +=== Architecture and design patterns concepts + +==== Microservices +The microservices pattern combines design patterns to create multiple services that work interdependently to create a larger application. Because each application is small, it's easier to update them when needed. We will be using this pattern during development. + +=== Under-the-hood concepts +TBD + +=== Developement concepts + +==== Testing +TBD + +==== Deployment +TBD + +==== Task branching +We should create 1 branch per task and merge them as soon as possible. + +=== Operational concepts +TBD + +__ diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 51e9aad9..d4c0636f 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -2,7 +2,9 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-design-decisions]] == Architecture Decisions - +The application will be carried out following a Microservices architecture. + +The Rest API in charge of comunicating with WikiData will be coded using Java. + +_(More details to de added)_ [role="arc42help"] **** diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc index 68475e80..8f9ace78 100644 --- a/docs/src/10_quality_requirements.adoc +++ b/docs/src/10_quality_requirements.adoc @@ -26,6 +26,7 @@ See https://docs.arc42.org/section-10/[Quality Requirements] in the arc42 docume **** === Quality Tree +image::10_quality_tree.jpg["Quality tree"] [role="arc42help"] **** @@ -48,6 +49,27 @@ In any case the tree should include links to the scenarios of the following sect === Quality Scenarios +|=== +| Quality | Scenario + +| Usability +| The application must be easy to use and usable in a computer. + +| Accessibility +| The application must be usable by people with disabilities. + +| Integrity +| The personal information of a user will only be viewable by him/her and user data must be stored securely. + +| Performance +| The application must not have fast response times. + +| Robustness +| The application must answer as expected under all conditions. + +|=== + + [role="arc42help"] **** .Contents diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc index dc5575fc..022fa93a 100644 --- a/docs/src/11_technical_risks.adoc +++ b/docs/src/11_technical_risks.adoc @@ -3,7 +3,6 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-technical-risks]] == Risks and Technical Debts - [role="arc42help"] **** .Contents @@ -23,3 +22,27 @@ List of risks and/or technical debts, probably including suggested measures to m See https://docs.arc42.org/section-11/[Risks and Technical Debt] in the arc42 documentation. **** + +In decision-making processes, we often face constraints. These constraints, known as risks and technical debt, are compromises made to achieve goals. Risk involves the possibility of not desired outcomes, while technical debt entails short-term solutions instead of long-term sustainability. Both are important considerations, as excessive acceptance can lead to future complications. + +### Risks + +There is the table of risks the team is taking for development purposes ordered by priority. + +[options="header",cols="^.^1,2,2"] +|=== +|Risk|Explanation|Solution +| *Insufficient knowledge of React* | None of our team members worked with React before. | The people who's going to work on React are going to learn it. +| *Working with a team* | It might be difficult working with people on projects, as every person has their own way of doing things. | Have weekly meetings deciding on what's going to get solved, how and by whom, keeping bus factor in mind. +| *Time* | It should be kept in mind that the team has deadlines with different requirements, demanding them to work regularly. | Have better time-management skills, keep track of and help each other to not waste any time on hard / complex parts of the project. +|=== + +### Technical debts + +There is the table of technical debt shortcuts the team is taking sacrificing long-term solutions. + +[options="header",cols="^.^1,3"] +|=== +|Technical debt|Explanation +| *Azure* | The team has experience with Microsoft Azure and decided to use it again. The full implementation is not planned yet. +|=== \ No newline at end of file diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc index 192b2353..b5ba9d7a 100644 --- a/docs/src/12_glossary.adoc +++ b/docs/src/12_glossary.adoc @@ -34,9 +34,18 @@ See https://docs.arc42.org/section-12/[Glossary] in the arc42 documentation. |=== |Term |Definition -| -| +|*Docker's container* +|A Docker container is a lightweight, standalone, executable package that contains everything needed to run a piece of software, including the code, runtime, libraries, and dependencies. -| -| +|*Github actions* +|Github actions let you build, test, and deploy your code right from your repository, making it easier to manage and automate your software development processes. + +|*Google's Lighthouse* +|Google's Lighthouse is an open-source tool that provides audits for performance, accessibility, progressive web apps, and more, giving developers actionable feedback on how to improve their websites. + +|*HTTPS* +|HTTPS (Hypertext Transfer Protocol Secure) is the secure version of HTTP, the protocol used for transferring data between a web browser and a website. + +|*Stakeholder* +|Anyone involved in the development process of the system, or that is affected by it somehow. |=== diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..3a0c3c35 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,139 @@ +{ + "name": "wiq_en1b", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "asciidoctor-emoji": "^0.5.0" + } + }, + "node_modules/@asciidoctor/core": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@asciidoctor/core/-/core-3.0.4.tgz", + "integrity": "sha512-41SDMi7iRRBViPe0L6VWFTe55bv6HEOJeRqMj5+E5wB1YPdUPuTucL4UAESPZM6OWmn4t/5qM5LusXomFUVwVQ==", + "peer": true, + "dependencies": { + "@asciidoctor/opal-runtime": "3.0.1", + "unxhr": "1.2.0" + }, + "engines": { + "node": ">=16", + "npm": ">=8" + } + }, + "node_modules/@asciidoctor/opal-runtime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@asciidoctor/opal-runtime/-/opal-runtime-3.0.1.tgz", + "integrity": "sha512-iW7ACahOG0zZft4A/4CqDcc7JX+fWRNjV5tFAVkNCzwZD+EnFolPaUOPYt8jzadc0+Bgd80cQTtRMQnaaV1kkg==", + "peer": true, + "dependencies": { + "glob": "8.1.0", + "unxhr": "1.2.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/asciidoctor-emoji": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/asciidoctor-emoji/-/asciidoctor-emoji-0.5.0.tgz", + "integrity": "sha512-3lsYV2kdX1MseZAm1KgSPwny+P7Fr83ZPH4MxNISIZAz3cPEGaFgNxRbr/uha4Tyv+oarpoaY5cGI7Fe0HluZg==", + "peerDependencies": { + "@asciidoctor/core": ">=2.2 <4.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "peer": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "peer": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "peer": true + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "peer": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "peer": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "peer": true + }, + "node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "peer": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "peer": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/unxhr": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/unxhr/-/unxhr-1.2.0.tgz", + "integrity": "sha512-6cGpm8NFXPD9QbSNx0cD2giy7teZ6xOkCUH3U89WKVkL9N9rBrWjlCwhR94Re18ZlAop4MOc3WU1M3Hv/bgpIw==", + "peer": true, + "engines": { + "node": ">=8.11" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "peer": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 00000000..d5f2efb1 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "asciidoctor-emoji": "^0.5.0" + } +}