Skip to content

Commit

Permalink
StateWithClones
Browse files Browse the repository at this point in the history
  • Loading branch information
Valentyna authored and Valentyna committed Dec 25, 2024
1 parent 7aa3e8a commit 76b008c
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 6 deletions.
23 changes: 23 additions & 0 deletions .github/workflows/test.yml-template
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: Test

on:
pull_request:
branches: [ master ]

jobs:
build:

runs-on: ubuntu-latest

strategy:
matrix:
node-version: [20.x]

steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v1
with:
node-version: ${{ matrix.node-version }}
- run: npm install
- run: npm test
9 changes: 5 additions & 4 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
"license": "GPL-3.0",
"devDependencies": {
"@mate-academy/eslint-config": "latest",
"@mate-academy/scripts": "^1.8.6",
"@mate-academy/scripts": "^1.9.12",
"eslint": "^8.57.0",
"eslint-plugin-jest": "^28.6.0",
"eslint-plugin-node": "^11.1.0",
Expand Down
26 changes: 25 additions & 1 deletion src/transformStateWithClones.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,31 @@
* @return {Object[]}
*/
function transformStateWithClones(state, actions) {
// write code here
const statesHistory = [];
let currentState = { ...state };

for (const action of actions) {
let newState = { ...currentState };

switch (action.type) {
case 'addProperties':
Object.assign(newState, action.extraData);
break;
case 'removeProperties':
for (const key of action.keysToRemove) {
delete newState[key];
}
break;
case 'clear':
newState = {};
break;
}

statesHistory.push(newState);
currentState = newState;
}

return statesHistory;
}

module.exports = transformStateWithClones;

0 comments on commit 76b008c

Please sign in to comment.