diff --git a/.circleci/config.yml b/.circleci/config.yml index 077b30a37..8c32532fa 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -24,6 +24,16 @@ jobs: key: alfresco-content-app-{{ .Branch }}-{{ checksum "package.json" }} - run: npm install - run: npm run lint + spellcheck: + working_directory: ~/alfresco-content-app + docker: + - image: circleci/node:8-browsers + steps: + - checkout + - restore_cache: + key: alfresco-content-app-{{ .Branch }}-{{ checksum "package.json" }} + - run: npm install + - run: npm run spellcheck test: working_directory: ~/alfresco-content-app docker: @@ -53,6 +63,9 @@ workflows: - lint: requires: - install + - spellcheck: + requires: + - install - test: requires: - install diff --git a/.travis.yml b/.travis.yml index 7da6fc0ce..f97f4facd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,4 +21,4 @@ install: script: # - docker-compose stop - - npm run build && npm run e2e:all + - npm run build && npm run e2e:docker diff --git a/cspell.json b/cspell.json new file mode 100644 index 000000000..9e9b86be0 --- /dev/null +++ b/cspell.json @@ -0,0 +1,40 @@ +{ + "version": "0.1", + "language": "en", + "words": [ + "succes", + + "ngstack", + "sidenav", + "injectable", + "truthy", + "cryptodoc", + "mysites", + "afts", + "classlist", + "folderlink", + "filelink", + "datatable", + "repo", + "snackbar", + "promisify", + "xdescribe", + "unfavorite", + + "unshare", + "validators", + "guid", + "polyfill", + "polyfills", + "jsonp", + "hammerjs", + "pdfjs", + "xpath", + "tooltip", + "tooltips", + "unindent" + ], + "dictionaries": [ + "html" + ] +} diff --git a/e2e/suites/actions/mark-favorite.test.ts b/e2e/suites/actions/mark-favorite.test.ts index f6f79cf09..cc861d022 100644 --- a/e2e/suites/actions/mark-favorite.test.ts +++ b/e2e/suites/actions/mark-favorite.test.ts @@ -87,7 +87,7 @@ describe('Mark items as favorites', () => { browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform().then(done); }); - it('Favorite action has empty star icon for unfavorited item', () => { + it('Favorite action has empty star icon for an item not marked as favorite', () => { dataTable.clickOnItemName(file1NotFav) .then(() => toolbar.actions.openMoreMenu()) .then(() => expect(toolbar.actions.menu.getItemIconText('Favorite')).toEqual('star_border')); @@ -99,7 +99,7 @@ describe('Mark items as favorites', () => { .then(() => expect(toolbar.actions.menu.getItemIconText('Favorite')).toEqual('star_border')); }); - it('Favorite action has full star icon for favorited items', () => { + it('Favorite action has full star icon for items marked as favorite', () => { dataTable.clickOnItemName(file3Fav) .then(() => toolbar.actions.openMoreMenu()) .then(() => expect(toolbar.actions.menu.getItemIconText('Favorite')).toEqual('star')); diff --git a/e2e/suites/actions/toolbar-single-selection.test.ts b/e2e/suites/actions/toolbar-single-selection.test.ts index 5c9dc25ae..5404e4062 100755 --- a/e2e/suites/actions/toolbar-single-selection.test.ts +++ b/e2e/suites/actions/toolbar-single-selection.test.ts @@ -274,7 +274,7 @@ describe('Toolbar actions - single selection : ', () => { .then(() => browser.actions().mouseMove(browser.$('body'), { x: 0, y: 0 }).click().perform()); }); - it('on Shared Files', () => { + xit('on Shared Files', () => { page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.SHARED_FILES) .then(() => dataTable.waitForHeader()) .then(() => dataTable.selectMultipleItems([ file1, file2 ])) diff --git a/e2e/suites/authentication/login.test.ts b/e2e/suites/authentication/login.test.ts index 3ab8cdfab..e17028248 100755 --- a/e2e/suites/authentication/login.test.ts +++ b/e2e/suites/authentication/login.test.ts @@ -35,9 +35,11 @@ describe('Login', () => { const loginPage = new LoginPage(); const logoutPage = new LogoutPage(); + /* cspell:disable-next-line */ const testUser = `user-${Utils.random()}@alfness`; const russianUser = { + /* cspell:disable-next-line */ username: `пользвате${Utils.random()}`, password: '密碼中國' }; diff --git a/e2e/suites/navigation/breadcrumb.test.ts b/e2e/suites/navigation/breadcrumb.test.ts index 419950ed3..974c62df7 100755 --- a/e2e/suites/navigation/breadcrumb.test.ts +++ b/e2e/suites/navigation/breadcrumb.test.ts @@ -34,8 +34,8 @@ describe('Breadcrumb', () => { const username = `user-${Utils.random()}`; const parent = `parent-${Utils.random()}`; let parentId; - const subfolder1 = `subfolder1-${Utils.random()}`; let subfolder1Id; - const subfolder2 = `subfolder2-${Utils.random()}`; let subfolder2Id; + const subFolder1 = `subFolder1-${Utils.random()}`; let subFolder1Id; + const subFolder2 = `subFolder2-${Utils.random()}`; let subFolder2Id; const fileName1 = `file1-${Utils.random()}.txt`; const siteName = `site-${Utils.random()}`; @@ -57,9 +57,9 @@ describe('Breadcrumb', () => { beforeAll(done => { apis.admin.people.createUser(username) .then(() => apis.user.nodes.createFolder(parent)).then(resp => parentId = resp.data.entry.id) - .then(() => apis.user.nodes.createFolder(subfolder1, parentId)).then(resp => subfolder1Id = resp.data.entry.id) - .then(() => apis.user.nodes.createFolder(subfolder2, subfolder1Id)).then(resp => subfolder2Id = resp.data.entry.id) - .then(() => apis.user.nodes.createFile(fileName1, subfolder2Id)) + .then(() => apis.user.nodes.createFolder(subFolder1, parentId)).then(resp => subFolder1Id = resp.data.entry.id) + .then(() => apis.user.nodes.createFolder(subFolder2, subFolder1Id)).then(resp => subFolder2Id = resp.data.entry.id) + .then(() => apis.user.nodes.createFile(fileName1, subFolder2Id)) .then(() => apis.user.nodes.createFolder(parent2)).then(resp => parent2Id = resp.data.entry.id) .then(() => apis.user.nodes.createFolder(folder1, parent2Id)).then(resp => folder1Id = resp.data.entry.id) @@ -67,9 +67,9 @@ describe('Breadcrumb', () => { .then(() => apis.user.sites.createSite(siteName, SITE_VISIBILITY.PUBLIC)) .then(() => apis.user.sites.getDocLibId(siteName)) .then(resp => apis.user.nodes.createFolder(parent, resp)).then(resp => parentId = resp.data.entry.id) - .then(() => apis.user.nodes.createFolder(subfolder1, parentId)).then(resp => subfolder1Id = resp.data.entry.id) - .then(() => apis.user.nodes.createFolder(subfolder2, subfolder1Id)).then(resp => subfolder2Id = resp.data.entry.id) - .then(() => apis.user.nodes.createFile(fileName1, subfolder2Id)) + .then(() => apis.user.nodes.createFolder(subFolder1, parentId)).then(resp => subFolder1Id = resp.data.entry.id) + .then(() => apis.user.nodes.createFolder(subFolder2, subFolder1Id)).then(resp => subFolder2Id = resp.data.entry.id) + .then(() => apis.user.nodes.createFile(fileName1, subFolder2Id)) .then(() => loginPage.loginWith(username)) .then(done); @@ -137,10 +137,10 @@ describe('Breadcrumb', () => { page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) .then(() => page.dataTable.waitForHeader()) .then(() => page.dataTable.doubleClickOnItemName(parent)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder1)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder2)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder1)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder2)) .then(() => { - const expectedBreadcrumb = [ 'Personal Files', parent, subfolder1, subfolder2 ]; + const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1, subFolder2 ]; expect(breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); }); }); @@ -150,10 +150,10 @@ describe('Breadcrumb', () => { .then(() => page.dataTable.waitForHeader()) .then(() => page.dataTable.doubleClickOnItemName(siteName)) .then(() => page.dataTable.doubleClickOnItemName(parent)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder1)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder2)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder1)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder2)) .then(() => { - const expectedItems = [ 'File Libraries', siteName, parent, subfolder1, subfolder2 ]; + const expectedItems = [ 'File Libraries', siteName, parent, subFolder1, subFolder2 ]; expect(breadcrumb.getAllItems()).toEqual(expectedItems); }); }); @@ -162,11 +162,11 @@ describe('Breadcrumb', () => { page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) .then(() => page.dataTable.waitForHeader()) .then(() => page.dataTable.doubleClickOnItemName(parent)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder1)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder2)) - .then(() => breadcrumb.clickItem(subfolder1)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder1)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder2)) + .then(() => breadcrumb.clickItem(subFolder1)) .then(() => { - const expectedBreadcrumb = [ 'Personal Files', parent, subfolder1 ]; + const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1 ]; expect(breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); }); }); @@ -175,10 +175,10 @@ describe('Breadcrumb', () => { page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) .then(() => page.dataTable.waitForHeader()) .then(() => page.dataTable.doubleClickOnItemName(parent)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder1)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder2)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder1)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder2)) .then(() => { - expect(breadcrumb.getNthItemTooltip(3)).toEqual(subfolder1); + expect(breadcrumb.getNthItemTooltip(3)).toEqual(subFolder1); }); }); @@ -200,13 +200,13 @@ describe('Breadcrumb', () => { page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.PERSONAL_FILES) .then(() => page.dataTable.waitForHeader()) .then(() => page.dataTable.doubleClickOnItemName(parent)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder1)) - .then(() => page.dataTable.doubleClickOnItemName(subfolder2)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder1)) + .then(() => page.dataTable.doubleClickOnItemName(subFolder2)) .then(() => page.sidenav.navigateToLinkByLabel(SIDEBAR_LABELS.TRASH)) .then(() => page.dataTable.waitForEmptyState()) .then(() => browser.navigate().back()) .then(() => { - const expectedBreadcrumb = [ 'Personal Files', parent, subfolder1, subfolder2 ]; + const expectedBreadcrumb = [ 'Personal Files', parent, subFolder1, subFolder2 ]; expect(breadcrumb.getAllItems()).toEqual(expectedBreadcrumb); }); }); diff --git a/e2e/utilities/reporters/console/console-logger.ts b/e2e/utilities/reporters/console/console-logger.ts index 756bfb4a8..76d6683e5 100755 --- a/e2e/utilities/reporters/console/console-logger.ts +++ b/e2e/utilities/reporters/console/console-logger.ts @@ -39,7 +39,7 @@ export const log = { return this; }, - dedent() { + unindent() { this.i--; return this; }, diff --git a/e2e/utilities/reporters/console/console.ts b/e2e/utilities/reporters/console/console.ts index 2f92e394a..ad08110be 100755 --- a/e2e/utilities/reporters/console/console.ts +++ b/e2e/utilities/reporters/console/console.ts @@ -62,7 +62,7 @@ export const consoleReporter = { }, suiteDone: (result) => { - log.dedent(); + log.unindent(); }, jasmineDone: (result) => { diff --git a/package-lock.json b/package-lock.json index 8ac296b96..f6cd03857 100644 --- a/package-lock.json +++ b/package-lock.json @@ -842,7 +842,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "requires": { "color-convert": "^1.9.0" }, @@ -851,7 +850,6 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz", "integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==", - "dev": true, "requires": { "color-name": "^1.1.1" } @@ -2295,8 +2293,15 @@ "commander": { "version": "2.15.1", "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==", - "dev": true + "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" + }, + "comment-json": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-1.1.3.tgz", + "integrity": "sha1-aYbDMw/uDEyeAMI5jNYa+l2PI54=", + "requires": { + "json-parser": "^1.0.0" + } }, "common-tags": { "version": "1.7.2", @@ -2394,6 +2399,32 @@ "typedarray": "^0.0.6" } }, + "configstore": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-3.1.2.tgz", + "integrity": "sha512-vtv5HtGjcYUgFrXc6Kx747B83MRRVS5R1VTEQoXvuP+kMI+if6uywV0nDGoiydJRy4yk7h9od5Og0kxx4zUXmw==", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, + "configstore-fork": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/configstore-fork/-/configstore-fork-3.1.6.tgz", + "integrity": "sha512-sQ31B6Ayj9Tqs2nPBrq+2cg8j9sb1Hd6iyqDx2rH+W1EoBDevYAkLk5ncNqktkj7hCeyrUzcNhQ5kUozKXd75A==", + "requires": { + "dot-prop": "^4.1.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "unique-string": "^1.0.0", + "write-file-atomic": "^2.0.0", + "xdg-basedir": "^3.0.0" + } + }, "connect": { "version": "3.6.6", "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", @@ -2671,6 +2702,205 @@ "randomfill": "^1.0.3" } }, + "crypto-random-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-1.0.0.tgz", + "integrity": "sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=" + }, + "cspell": { + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/cspell/-/cspell-2.1.12.tgz", + "integrity": "sha512-6ydTFFhPDirjOAl7ChrtlaVXiyqt1LmTRMpvYU1Jw9FarHxupnNq34itPL5BSDDjqeue5wI0A+VCjBnfAKuWMQ==", + "requires": { + "chalk": "^2.3.2", + "commander": "^2.15.1", + "comment-json": "^1.1.3", + "configstore-fork": "^3.1.6", + "cspell-dict-cpp": "^1.1.6", + "cspell-dict-django": "^1.0.2", + "cspell-dict-en-gb": "^1.1.0", + "cspell-dict-en_us": "^1.2.3", + "cspell-dict-golang": "^1.1.3", + "cspell-dict-latex": "^1.0.1", + "cspell-dict-php": "^1.0.2", + "cspell-dict-python": "^1.0.3", + "cspell-dict-rust": "^1.0.0", + "cspell-lib": "^2.0.2", + "cspell-trie": "^2.0.3", + "fs-extra": "^5.0.0", + "gensequence": "^2.1.1", + "glob": "^7.1.2", + "minimatch": "^3.0.4", + "rxjs": "^5.5.10", + "rxjs-from-iterable": "^1.0.5", + "vscode-uri": "^1.0.3", + "xregexp": "^4.1.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.1.tgz", + "integrity": "sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + }, + "rxjs": { + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", + "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", + "requires": { + "symbol-observable": "1.0.1" + } + }, + "supports-color": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", + "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", + "requires": { + "has-flag": "^3.0.0" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + }, + "xregexp": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-4.1.1.tgz", + "integrity": "sha512-QJ1gfSUV7kEOLfpKFCjBJRnfPErUzkNKFMso4kDSmGpp3x6ZgkyKf74inxI7PnnQCFYq5TqYJCd7DrgDN8Q05A==" + } + } + }, + "cspell-dict-cpp": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/cspell-dict-cpp/-/cspell-dict-cpp-1.1.6.tgz", + "integrity": "sha512-eVNenrvoViBsrfZYzChoJ1YJ5b0VxwgYCFhxxKjL3Bjk3Te98FM8Bk/ExSnv5KlwT56EhT5y+CBi0ejEv5XW/g==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-dict-django": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cspell-dict-django/-/cspell-dict-django-1.0.2.tgz", + "integrity": "sha512-t52Ga2S7GgsCYaLsN+iqWLgHUHfqGfkMUv0gSjp2QOVOxGNQ4kjj1oJ6GkcZB5k6UnI2sgQ7uku/bjmNlnctDw==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-dict-en-gb": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/cspell-dict-en-gb/-/cspell-dict-en-gb-1.1.2.tgz", + "integrity": "sha512-ry4yNIzjVMZDwSrK7U/0M9vXdbzo7ZFpUHUAYa4r6B4CwUFHBC/d8C0fcav2Hf1jjfQ866AApg00HiRJLP3Aug==", + "requires": { + "configstore": "^3.1.1" + } + }, + "cspell-dict-en_us": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/cspell-dict-en_us/-/cspell-dict-en_us-1.2.5.tgz", + "integrity": "sha512-OaoOaVzIGxJeeyAjZE6Re2+S5OuLHsMFzQcZ3qaD87uO0Q7U9TF6EFPJEmwNuR0Ye9o1rXYYMiFKan6EzH40qg==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-dict-golang": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/cspell-dict-golang/-/cspell-dict-golang-1.1.3.tgz", + "integrity": "sha512-maImSmm4ctZ5cQ3tFyZr5nglBQ/GwY5OYT1eq6O6USjJRQxzWtzmI1EV8WKng1UEA1i07NqgUDQLejTx3W1hIg==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-dict-latex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cspell-dict-latex/-/cspell-dict-latex-1.0.1.tgz", + "integrity": "sha512-RyK6TgEpt6AfGbXStPi5G7Fy2CFJGmIAYs1ie6Qsyss7h3sAsHk19F2yZvwJU0dlHXyw4LujFbzo9ZR3HR7BIA==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-dict-php": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cspell-dict-php/-/cspell-dict-php-1.0.2.tgz", + "integrity": "sha512-F2NyT9rZ6CmcLhbeGH8OKwLlD9Q5zQConpNDVdu/E/ucEQ+HXIf65Ou5KJzlQcyUGC8P9PUmmUBEF60oW5HcCA==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-dict-python": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/cspell-dict-python/-/cspell-dict-python-1.0.3.tgz", + "integrity": "sha512-zQYJu/kWvsZusuMelRk7e9B5xINglh49uLswLv598T+ZptzRzKO83im/yCG0RHBWvgYS+ze0eCpr0Ja5uqHu3Q==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-dict-rust": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cspell-dict-rust/-/cspell-dict-rust-1.0.0.tgz", + "integrity": "sha512-9Rew1ad6yPXQW9fxFQ/J41+fbKg6t9p4oSm7JS0aHuCtWc3w0knFYK7Ty/mVMw6oDFlemBNaBCPZON0M3+oIKg==", + "requires": { + "configstore": "^3.1.0" + } + }, + "cspell-lib": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/cspell-lib/-/cspell-lib-2.0.2.tgz", + "integrity": "sha512-AcNlLBuOFR0xZGO9SwP0g42oFvu8TMooehLJ7FqDzAvCWqtO1u0ddvJ7bm8l8UZgABVchUSy2oqcLVAr4XdCvA==", + "requires": { + "iconv-lite": "^0.4.19", + "rxjs": "^5.5.6", + "rxjs-stream": "^1.1.0" + }, + "dependencies": { + "rxjs": { + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.10.tgz", + "integrity": "sha512-SRjimIDUHJkon+2hFo7xnvNC4ZEHGzCRwh9P7nzX3zPkCGFEg/tuElrNR7L/rZMagnK2JeH2jQwPRpmyXyLB6A==", + "requires": { + "symbol-observable": "1.0.1" + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha1-g0D8RwLDEi310iKI+IKD9RPT/dQ=" + } + } + }, + "cspell-trie": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/cspell-trie/-/cspell-trie-2.0.3.tgz", + "integrity": "sha512-5jJiOPbKWzHNoJAwOQ/fkBXJ2xs+P5zfQmj2OEqq1k4Ck5/88KLEkXJmNOPDG8nDP1va5kaLz3vUtAxABo1bwg==", + "requires": { + "commander": "^2.11.0", + "cspell-lib": "^2.0.1", + "fs-extra": "^4.0.2", + "gensequence": "^2.1.1", + "rxjs": "^5.5.2", + "rxjs-from-iterable": "^1.0.5", + "rxjs-stream": "^1.0.4" + } + }, "css-parse": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-1.7.0.tgz", @@ -3290,6 +3520,14 @@ "domelementtype": "1" } }, + "dot-prop": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", + "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==", + "requires": { + "is-obj": "^1.0.0" + } + }, "double-ended-queue": { "version": "2.1.0-0", "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz", @@ -3670,8 +3908,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "escodegen": { "version": "1.9.1", @@ -4332,7 +4569,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", - "dev": true, "requires": { "graceful-fs": "^4.1.2", "jsonfile": "^4.0.0", @@ -4354,8 +4590,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.2.3", @@ -4987,6 +5222,11 @@ "is-property": "^1.0.0" } }, + "gensequence": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/gensequence/-/gensequence-2.1.1.tgz", + "integrity": "sha512-AyZrG5Qq8Tn0qnaDCnH2n9TsWnJLKBXEa2FcUlHWfEgl1rRS3MbcvB4OsarxyEekx/PwYlyKXvjQwNvYsByXAw==" + }, "get-caller-file": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz", @@ -5079,7 +5319,6 @@ "version": "7.1.2", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5152,8 +5391,7 @@ "graceful-fs": { "version": "4.1.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.1.11.tgz", - "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", - "dev": true + "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=" }, "hammerjs": { "version": "2.0.8", @@ -5698,8 +5936,7 @@ "iconv-lite": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", - "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==", - "dev": true + "integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" }, "ieee754": { "version": "1.1.11", @@ -5745,8 +5982,7 @@ "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" }, "in-publish": { "version": "2.0.0", @@ -5781,7 +6017,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6028,6 +6263,11 @@ "kind-of": "^3.0.2" } }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=" + }, "is-odd": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-odd/-/is-odd-2.0.0.tgz", @@ -6477,6 +6717,21 @@ "integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==", "dev": true }, + "json-parser": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/json-parser/-/json-parser-1.1.5.tgz", + "integrity": "sha1-5i7FJh0aal/CDoEqMgdAxtkAVnc=", + "requires": { + "esprima": "^2.7.0" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" + } + } + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -6518,7 +6773,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, "requires": { "graceful-fs": "^4.1.6" } @@ -7354,7 +7608,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.2.0.tgz", "integrity": "sha512-aNUAa4UMg/UougV25bbrU4ZaaKNjJ/3/xnvg/twpmKROPdKZPZ9wGgI0opdZzO8q/zUFawoUuixuOv33eZ61Iw==", - "dev": true, "requires": { "pify": "^3.0.0" } @@ -8292,7 +8545,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -8633,8 +8885,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -8725,8 +8976,7 @@ "pify": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" }, "pinkie": { "version": "2.0.4", @@ -9847,6 +10097,16 @@ "symbol-observable": "^1.0.1" } }, + "rxjs-from-iterable": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/rxjs-from-iterable/-/rxjs-from-iterable-1.0.5.tgz", + "integrity": "sha1-zqsVcAVLO7Bf0m15iBSCx9sbc9c=" + }, + "rxjs-stream": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rxjs-stream/-/rxjs-stream-1.3.0.tgz", + "integrity": "sha512-Vj86/1qAYvCApBOIi7gghVteCrMCXTnQxICPnW/D+4vtFIpgSE/xDegUDYJy9bwKyxR7VteVDhZyCvQt4RV/xQ==" + }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -10193,8 +10453,7 @@ "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", - "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=", - "dev": true + "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" }, "silent-error": { "version": "1.1.0", @@ -11579,11 +11838,18 @@ "imurmurhash": "^0.1.4" } }, + "unique-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-1.0.0.tgz", + "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=", + "requires": { + "crypto-random-string": "^1.0.0" + } + }, "universalify": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.1.tgz", - "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=", - "dev": true + "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=" }, "unpipe": { "version": "1.0.0", @@ -11880,6 +12146,11 @@ "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", "dev": true }, + "vscode-uri": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-1.0.3.tgz", + "integrity": "sha1-Yxvb9xbcyrDmUpGo3CXCMjIIWlI=" + }, "wait-on": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wait-on/-/wait-on-2.1.0.tgz", @@ -13250,8 +13521,17 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.3.0.tgz", + "integrity": "sha512-xuPeK4OdjWqtfi59ylvVL0Yn35SF3zgcAcv7rBPFHVaEapaDr4GdGgm3j7ckTwH9wHL7fGmgfAnb0+THrHb8tA==", + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } }, "ws": { "version": "3.3.3", @@ -13264,6 +13544,11 @@ "ultron": "~1.1.0" } }, + "xdg-basedir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-3.0.0.tgz", + "integrity": "sha1-SWsswQnsqNus/i3HK2A8F8WHCtQ=" + }, "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", diff --git a/package.json b/package.json index ef8c23ba5..a2d3de4e2 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,8 @@ "e2e:all": "npm run start:docker && npm run cypress:ci && npm run e2e && npm run stop:docker", "cypress:open": "cypress open", "cypress:run": "cypress run", - "cypress:ci": "cypress run --browser chrome --config baseUrl=http://localhost:3000" + "cypress:ci": "cypress run --browser chrome --config baseUrl=http://localhost:3000", + "spellcheck": "cspell 'src/**/*.ts' 'e2e/**/*.ts'" }, "private": true, "dependencies": { @@ -49,6 +50,7 @@ "@ngx-translate/core": "9.1.1", "alfresco-js-api": "2.4.0-31a7fc6e5d58dc8bf202ef9a80bc993c9f48fe18", "core-js": "2.5.3", + "cspell": "^2.1.12", "hammerjs": "2.0.8", "moment-es6": "1.0.0", "pdfjs-dist": "2.0.303", diff --git a/src/app/common/directives/node-delete.directive.ts b/src/app/common/directives/node-delete.directive.ts index 758eb24e9..291cced24 100644 --- a/src/app/common/directives/node-delete.directive.ts +++ b/src/app/common/directives/node-delete.directive.ts @@ -66,7 +66,7 @@ export class NodeDeleteDirective { (data) => { const processedData = this.processStatus(data); - this.getDeleteMesssage(processedData) + this.getDeleteMessage(processedData) .subscribe((message) => { const withUndo = processedData.someSucceeded ? this.translation.translate.instant('APP.ACTIONS.UNDO') : ''; @@ -194,7 +194,7 @@ export class NodeDeleteDirective { } } - private getDeleteMesssage(status): Observable { + private getDeleteMessage(status): Observable { if (status.allFailed && !status.oneFailed) { return this.translation.get( 'APP.MESSAGES.ERRORS.NODE_DELETION_PLURAL', diff --git a/src/app/common/directives/node-restore.directive.ts b/src/app/common/directives/node-restore.directive.ts index 2b83ad19c..dfd480126 100644 --- a/src/app/common/directives/node-restore.directive.ts +++ b/src/app/common/directives/node-restore.directive.ts @@ -79,10 +79,10 @@ export class NodeRestoreDirective { .flatMap(() => this.getDeletedNodes()) .subscribe( (deletedNodesList: DeletedNodesPaging) => { - const { entries: nodelist } = deletedNodesList.list; + const { entries: nodeList } = deletedNodesList.list; const { fail: restoreErrorNodes } = this.restoreProcessStatus; const selectedNodes = this.diff(restoreErrorNodes, selection, false); - const remainingNodes = this.diff(selectedNodes, nodelist); + const remainingNodes = this.diff(selectedNodes, nodeList); if (!remainingNodes.length) { this.restoreNotification(); diff --git a/src/app/common/services/node-actions.service.spec.ts b/src/app/common/services/node-actions.service.spec.ts index 2942e578e..c3037f4a3 100644 --- a/src/app/common/services/node-actions.service.spec.ts +++ b/src/app/common/services/node-actions.service.spec.ts @@ -1069,21 +1069,21 @@ describe('NodeActionsService', () => { baseName: 'withExtension.txt', expected: 'withExtension-1.txt' }, { - name: 'with-lineStringSufix.txt', - baseName: 'with-lineStringSufix.txt', - expected: 'with-lineStringSufix-1.txt' + name: 'with-lineStringSuffix.txt', + baseName: 'with-lineStringSuffix.txt', + expected: 'with-lineStringSuffix-1.txt' }, { name: 'noExtension-1', baseName: 'noExtension-1', expected: 'noExtension-1-1' }, { - name: 'with-lineNumberSufix-1.txt', - baseName: 'with-lineNumberSufix-1.txt', - expected: 'with-lineNumberSufix-1-1.txt' + name: 'with-lineNumberSuffix-1.txt', + baseName: 'with-lineNumberSuffix-1.txt', + expected: 'with-lineNumberSuffix-1-1.txt' }, { - name: 'with-lineNumberSufix.txt', + name: 'with-lineNumberSuffix.txt', baseName: undefined, - expected: 'with-lineNumberSufix-1.txt' + expected: 'with-lineNumberSuffix-1.txt' }, { name: 'noExtension-1', baseName: 'noExtension',