From f536bbc5a35d03a227d1fc4d01a8ca85ddb629ba Mon Sep 17 00:00:00 2001 From: duncdrum Date: Mon, 8 Jan 2024 13:00:15 +0100 Subject: [PATCH 1/8] fix(reviews): primary first reviews should appear after reviewed work see #12 --- cypress/e2e/reviews.cy.js | 59 +++++++++++++++++++++++++++++++++++++++ notes/Ziele.md | 2 +- 2 files changed, 60 insertions(+), 1 deletion(-) create mode 100644 cypress/e2e/reviews.cy.js diff --git a/cypress/e2e/reviews.cy.js b/cypress/e2e/reviews.cy.js new file mode 100644 index 0000000..f7ae92e --- /dev/null +++ b/cypress/e2e/reviews.cy.js @@ -0,0 +1,59 @@ +// see #12 + + +describe('Review after reviewed', () => { + describe('36 Strategems', () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: '36 strategeme harro von senger', + type: 'AllFields', + limit: '5' + } + }) + }) + + // affirm existent of primary work title via PP + it('should be among top 5 hits', () => { + cy.get('[href*="020460147"]') + .should('exist') + }) + + // TODO(DP): unskip after yaml changes + it.skip('first hit should not be a review', () => { + cy.get('#result0') + .contains('Strategeme') + .should('not.contain', 'Rezension') + .should('not.contain', 'Book Reviews') + }) + }) + + describe('Liberty manik', () => { + // Note Title search 20 hits, AllFields (23) but all fields tested above + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Liberty manik', + type: 'Title' + } + }) + }) + + // TODO(DP): unclear what the top hit should be + it('should see matching search results', () => { + cy.get('[href*="1019346698"]') + .should('exist') + }) + + // TODO(DP): unskip after yaml changes + it.skip('first hit should not be a review', () => { + cy.get('#result0') + .contains('Manik') + .should('not.contain', 'Rezension') + .should('not.contain', 'Book Reviews') + }) + }) + +}) \ No newline at end of file diff --git a/notes/Ziele.md b/notes/Ziele.md index a4b0a54..4f7c3c3 100644 --- a/notes/Ziele.md +++ b/notes/Ziele.md @@ -29,7 +29,7 @@ - [ ] Index - [x] Ranking - [ ] Nutzer konfigurierbar - - [ ] DONE + - [x] DONE 6. Rezensionen runterranken, - [ ] Query - [ ] Index From 12a27c6ffd949b4db7945dbe9f8f05dc181693ad Mon Sep 17 00:00:00 2001 From: duncdrum Date: Mon, 8 Jan 2024 14:44:10 +0100 Subject: [PATCH 2/8] refactor: split specs --- cypress/e2e/multi-lang-phrase.cy.js | 37 +++++++++++++++++ cypress/e2e/nested.cy.js | 27 +++++++++++++ cypress/e2e/reviews.cy.js | 13 +++--- cypress/e2e/simple.cy.js | 63 ----------------------------- 4 files changed, 70 insertions(+), 70 deletions(-) create mode 100644 cypress/e2e/multi-lang-phrase.cy.js create mode 100644 cypress/e2e/nested.cy.js diff --git a/cypress/e2e/multi-lang-phrase.cy.js b/cypress/e2e/multi-lang-phrase.cy.js new file mode 100644 index 0000000..173bc5b --- /dev/null +++ b/cypress/e2e/multi-lang-phrase.cy.js @@ -0,0 +1,37 @@ +describe('Foreign language phrase search', () => { + // See #6 + // Thematische Suche#L30 + it('en all fields query matches en not ar', () => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Egyptian Language', + type: 'AllFields' + } + }) + cy.get('.resultlist') + // PPN JST063665204 + .contains('The Egyptian Language') + cy.get('.resultlist') + // PPN DOAJ008736839 + .should('not.contain', 'المعانی الثانیة للأمر فی النص المصری القدیم دراسة بلاغیة مقارنة ') + + }) + + it('en subject query matches en and ar', () => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Egyptian Language', + type: 'Subject' + } + }) + cy.get('.resultlist') + // PPN JST063665204 + .contains('The Egyptian Language') + cy.get('.resultlist') + // PPN DOAJ008736839 + .contains('المعانی الثانیة للأمر فی النص المصری القدیم دراسة بلاغیة مقارنة ') + + }) +}) \ No newline at end of file diff --git a/cypress/e2e/nested.cy.js b/cypress/e2e/nested.cy.js new file mode 100644 index 0000000..f7aafc7 --- /dev/null +++ b/cypress/e2e/nested.cy.js @@ -0,0 +1,27 @@ +describe('Parent Work', () => { + // see #8 + describe("African American Review", () => { + // Title search and online access false to limit noise + // check if exact match first list item is the journal parent and subsequent entries are child works + // a more elaborate test would compare the value of '.record-number' within the same family + before(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'African American Review', + type: 'Title', + "filter[]": '~remote_bool:"false"' + } + }) + }) + + it('should appear before child work', () => { + cy.get('#result0') + .find('.media-type') + .contains(' Zeitschrift (gedruckt) ') + cy.get('#result1') + .find('.media-type') + .contains(' Band einer Zeitschrift/Zeitung ') + }) + }) +}) \ No newline at end of file diff --git a/cypress/e2e/reviews.cy.js b/cypress/e2e/reviews.cy.js index f7ae92e..51d32e3 100644 --- a/cypress/e2e/reviews.cy.js +++ b/cypress/e2e/reviews.cy.js @@ -1,7 +1,6 @@ -// see #12 - - describe('Review after reviewed', () => { + // see #12 + // we should add more language specific searches here describe('36 Strategems', () => { beforeEach(() => { cy.visit({ @@ -17,7 +16,7 @@ describe('Review after reviewed', () => { // affirm existent of primary work title via PP it('should be among top 5 hits', () => { cy.get('[href*="020460147"]') - .should('exist') + .should('exist') }) // TODO(DP): unskip after yaml changes @@ -30,7 +29,7 @@ describe('Review after reviewed', () => { }) describe('Liberty manik', () => { - // Note Title search 20 hits, AllFields (23) but all fields tested above + // Note Title search 20 hits, AllFields (23) but allfields already tested above beforeEach(() => { cy.visit({ url: '/Results', @@ -44,9 +43,9 @@ describe('Review after reviewed', () => { // TODO(DP): unclear what the top hit should be it('should see matching search results', () => { cy.get('[href*="1019346698"]') - .should('exist') + .should('exist') }) - + // TODO(DP): unskip after yaml changes it.skip('first hit should not be a review', () => { cy.get('#result0') diff --git a/cypress/e2e/simple.cy.js b/cypress/e2e/simple.cy.js index 80b08ea..69588b1 100644 --- a/cypress/e2e/simple.cy.js +++ b/cypress/e2e/simple.cy.js @@ -29,67 +29,4 @@ describe('simple GUI spec', () => { }) }) - - describe('Foreign language phrase search', () => { - // See #6 - // Thematische Suche#L30 - it('en all fields query matches en not ar', () => { - cy.visit({ - url: '/Results', - qs: { - lookfor: 'Egyptian Language', - type: 'AllFields' - } - }) - cy.get('.resultlist') - // PPN JST063665204 - .contains('The Egyptian Language') - cy.get('.resultlist') - // PPN DOAJ008736839 - .should('not.contain', 'المعانی الثانیة للأمر فی النص المصری القدیم دراسة بلاغیة مقارنة ') - - }) - - it('en subject query matches en and ar', () => { - cy.visit({ - url: '/Results', - qs: { - lookfor: 'Egyptian Language', - type: 'Subject' - } - }) - cy.get('.resultlist') - // PPN JST063665204 - .contains('The Egyptian Language') - cy.get('.resultlist') - // PPN DOAJ008736839 - .contains('المعانی الثانیة للأمر فی النص المصری القدیم دراسة بلاغیة مقارنة ') - - }) - }) - - // see #8 - // Title search and online access false to limit noise - // check if exact match first list item is the journal parent and subsequent entries are child works - // a more elaborate test would compare the value of '.record-number' within the same family - // - describe('Parent Work', () => { - it('should appear before child work', () => { - cy.visit({ - url: '/Results', - qs: { - lookfor: 'African American Review', - type: 'Title', - "filter[]": '~remote_bool:"false"' - } - }) - cy.get('#result0') - .find('.media-type') - .contains(' Zeitschrift (gedruckt) ') - cy.get('#result1') - .find('.media-type') - .contains(' Band einer Zeitschrift/Zeitung ') - - }) - }) }) \ No newline at end of file From ecedae7a3064a1d192574a939c934edb50a577bd Mon Sep 17 00:00:00 2001 From: duncdrum Date: Mon, 8 Jan 2024 15:54:37 +0100 Subject: [PATCH 3/8] fix: add more examples see #8 #12 --- cypress/e2e/nested.cy.js | 60 +++++++++++++++++++++++++++++++++++++-- cypress/e2e/reviews.cy.js | 57 +++++++++++++++++++++++++++++++++++-- 2 files changed, 111 insertions(+), 6 deletions(-) diff --git a/cypress/e2e/nested.cy.js b/cypress/e2e/nested.cy.js index f7aafc7..7ecce94 100644 --- a/cypress/e2e/nested.cy.js +++ b/cypress/e2e/nested.cy.js @@ -1,10 +1,10 @@ -describe('Parent Work', () => { +describe('Nested Work', () => { // see #8 - describe("African American Review", () => { + describe('African American Review', () => { // Title search and online access false to limit noise // check if exact match first list item is the journal parent and subsequent entries are child works // a more elaborate test would compare the value of '.record-number' within the same family - before(() => { + beforeEach(() => { cy.visit({ url: '/Results', qs: { @@ -24,4 +24,58 @@ describe('Parent Work', () => { .contains(' Band einer Zeitschrift/Zeitung ') }) }) + + describe('Nachrichten Organ Bergbau Hüttenbetrieb', () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Nachrichten Organ Bergbau Hüttenbetrieb', + type: 'allFields' + } + }) + }) + + // (DP): 3 hits no child works as far as I can see + // PPN: 168000709 + it('first hit should be parent work', () => { + cy.get('[href*="168000709"]') + .should('exist') + }) + }) + + describe('Journal of Comparative Law 2021', () => { + // (DP): parent work not in top 20 + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Journal of Comparative Law 2021', + type: 'allFields' + } + }) + }) + + + // PPN: 1755480725 + it('first hit should be 2021 child work based on search term', () => { + cy.get('#result0') + .find('[href*="1755480725"]') + .should('exist') + }) + + // TODO(DP): failing is this desirable? + it('parent work should appear in initial results', () => { + cy.get('[href*="521689139"]') + .should('exist') + }) + + // This asssumes de default view + it('first hit should be child volume based on search term', () => { + cy.get('#result0') + .find('.media-type') + .should('contain', 'Band einer Zeitschrift/Zeitung') + .and('not.contain', 'Serial Volume') + }) + }) }) \ No newline at end of file diff --git a/cypress/e2e/reviews.cy.js b/cypress/e2e/reviews.cy.js index 51d32e3..b91d196 100644 --- a/cypress/e2e/reviews.cy.js +++ b/cypress/e2e/reviews.cy.js @@ -19,7 +19,7 @@ describe('Review after reviewed', () => { .should('exist') }) - // TODO(DP): unskip after yaml changes + // TODO(DP): failing it.skip('first hit should not be a review', () => { cy.get('#result0') .contains('Strategeme') @@ -46,8 +46,8 @@ describe('Review after reviewed', () => { .should('exist') }) - // TODO(DP): unskip after yaml changes - it.skip('first hit should not be a review', () => { + // TODO(DP): failing + it('first hit should not be a review', () => { cy.get('#result0') .contains('Manik') .should('not.contain', 'Rezension') @@ -55,4 +55,55 @@ describe('Review after reviewed', () => { }) }) + describe('Die Organisierte Welt Internationale Beziehungen und Organisationsforschung', () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Die Organisierte Welt Internationale Beziehungen und Organisationsforschung', + type: 'AllFields' + } + }) + }) + + // PPN 608988723 + it('first hit matches Title', () => { + cy.get('#result0') + .find('[href*="608988723"]') + .should('exist') + }) + + it('second hit should be a review', () => { + cy.get('#result1') + .contains('Rezension') + }) + }) + + describe('Young, Iris Marion (2002): Inclusion and Democracy. Oxford: Oxford University Press', () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Young, Iris Marion (2002): Inclusion and Democracy. Oxford: Oxford University Press', + type: 'AllFields', + limit: '10' + } + }) + }) + + // PPN 315776242 + // TODO(DP): failing + it('first hit matches exact title', () => { + cy.get('#result0') + .find('[href*="315776242"]') + .should('exist') + }) + + it.only('second hit should be a review', () => { + cy.get('#result1') + .should('exist') + .contains('Review') + }) + }) + }) \ No newline at end of file From 2f7a5730a09bfce7f49abefd4f22f2ea26170295 Mon Sep 17 00:00:00 2001 From: duncdrum Date: Mon, 8 Jan 2024 17:25:00 +0100 Subject: [PATCH 4/8] wip(author): add spec author searches see #14 --- cypress/e2e/author.cy.js | 116 ++++++++++++++++++++++++++++++++++++ notes/Ranking_Stabikat.xlsx | Bin 69918 -> 19848 bytes 2 files changed, 116 insertions(+) create mode 100644 cypress/e2e/author.cy.js diff --git a/cypress/e2e/author.cy.js b/cypress/e2e/author.cy.js new file mode 100644 index 0000000..e06bdd6 --- /dev/null +++ b/cypress/e2e/author.cy.js @@ -0,0 +1,116 @@ +describe('Author Search', () => { + // see #14 + describe.only('glaser karin' , () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'glaser karin', + type: 'Author' + } + }) + }) + + // Bei Author-Suche Autorenfeld boosten (gegenüber anderen Feldern, auch Titel) + it('should appear before child work', () => { + cy.get('#result0') + .find('.media-type') + .contains(' Zeitschrift (gedruckt) ') + cy.get('#result1') + .find('.media-type') + .contains(' Band einer Zeitschrift/Zeitung ') + }) + }) + + describe('阎连科', () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: '阎连科', + type: 'allFields' + } + }) + }) + + // (DP): 3 hits no child works as far as I can see + // PPN: 168000709 + it('first hit should be parent work', () => { + cy.get('[href*="168000709"]') + .should('exist') + }) + }) + + describe('"Corte, Justine del"', () => { + // (DP): parent work not in top 20 + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: '"Corte, Justine del"', + type: 'allFields' + } + }) + }) + + // TODO(DP): failing + // PPN: 521689139 + it('first hit should be parent work', () => { + cy.get('#result0') + .find('[href*="521689139"]') + .should('exist') + }) + + // TODO(DP): failing + it('first hit should not be child volume', () => { + cy.get('#result0') + .find('.media-type') + .should('not.contain', 'Band einer Zeitschrift/Zeitung') + .and('not.contain', 'Serial Volume') + }) + }) + + describe('Andreas Gryphius' , () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'Andreas Gryphius', + type: 'Author' + } + }) + }) + + // Bei Author-Suche Autorenfeld boosten (gegenüber anderen Feldern, auch Titel) + it('should appear before child work', () => { + cy.get('#result0') + .find('.media-type') + .contains(' Zeitschrift (gedruckt) ') + cy.get('#result1') + .find('.media-type') + .contains(' Band einer Zeitschrift/Zeitung ') + }) + }) + + describe('oliver heaviside' , () => { + beforeEach(() => { + cy.visit({ + url: '/Results', + qs: { + lookfor: 'oliver heaviside', + type: 'Author' + } + }) + }) + + // Bei Author-Suche Autorenfeld boosten (gegenüber anderen Feldern, auch Titel) + it('should appear before child work', () => { + cy.get('#result0') + .find('.media-type') + .contains(' Zeitschrift (gedruckt) ') + cy.get('#result1') + .find('.media-type') + .contains(' Band einer Zeitschrift/Zeitung ') + }) + }) +}) \ No newline at end of file diff --git a/notes/Ranking_Stabikat.xlsx b/notes/Ranking_Stabikat.xlsx index a7055aa5019a65195f7d418d1bb3ef24a9f590bb..d39e59ae7cf8edc7af406415251b359bb3833a0f 100644 GIT binary patch literal 19848 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 literal 69918 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 From 4a48978613c54ef1fcce24832c2ed46455344cfb Mon Sep 17 00:00:00 2001 From: Duncan Paterson Date: Tue, 9 Jan 2024 13:40:42 +0100 Subject: [PATCH 5/8] =?UTF-8?q?=F0=9F=93=84=20docs:=20minor=20updates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1f67275..015ad26 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ Um direkt mit dem [Findex](https://github.com/gbv/findex-config) zu kommuniziere ```powershell $env:HTTP_PROXY = "http://proxy.spk-berlin.de:3128" +$env:HTTPS_PROXY = "HTTPS_PROXY=http://proxy-dev.spk-berlin.de:3128" $env:NO_PROXY = "b-dev20220203-vufind-6, localhost, 127.0.0.1, 10.0.0.0/8, 172.16.200.0/24, 194.94.132.0/22, .sbb.spk-berlin.de, .staatsbibliothek-berlin.de, .dev.sbb.berlin, smb.museum, .pk.de" ``` @@ -72,14 +73,13 @@ Oder via Browser GUI modus: npx cypress open ``` -Caveat: Sollte ein eine Browser spezifische Warnung erscheinen, verhindern Windows Systemeinstellungen die automatisierte Nutzung des gewählten Browsers. - Für die Reproduktion der CI Testläufe gegen den produktiven Stabikat von ausserhalb des Hausnetzes: ```powerhshell CYPRESS_BASE_URL=https://stabikat.de/search/ npx cypress run -s cypress/e2e/simple.cy.js ``` +Caveat: Sollte ein eine Browser spezifische Warnung erscheinen, verhindern Windows Systemeinstellungen die automatisierte Nutzung des gewählten Browsers. ```powershell Cypress detected policy settings on your computer that may cause issues. From b691ca6aee17a3d79e4e4aab4ae11417a1c5e717 Mon Sep 17 00:00:00 2001 From: duncdrum Date: Wed, 10 Jan 2024 12:32:30 +0100 Subject: [PATCH 6/8] fix(ci): run tests run first tests after 09.01 update see #25 #26 --- .github/workflows/test.yml | 7 +++++-- cypress/e2e/nested.cy.js | 7 ++++--- cypress/e2e/reviews.cy.js | 8 ++++---- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 043eb20..48a3509 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,6 +23,9 @@ jobs: uses: cypress-io/github-action@v6 with: build: npm install - config: baseUrl=https://stabikat.de/ - spec: cypress/e2e/spec.cy.js + config: baseUrl=https://stabikat.de/search/ + spec: | + cypress/e2e/spec.cy.js + cypress/e2e/reviews.cy.js + cypress/e2e/nested.cy.js # browser: firefox \ No newline at end of file diff --git a/cypress/e2e/nested.cy.js b/cypress/e2e/nested.cy.js index 7ecce94..93a45a3 100644 --- a/cypress/e2e/nested.cy.js +++ b/cypress/e2e/nested.cy.js @@ -15,7 +15,8 @@ describe('Nested Work', () => { }) }) - it('should appear before child work', () => { + // see #25 + it.skip('should appear before child work', () => { cy.get('#result0') .find('.media-type') .contains(' Zeitschrift (gedruckt) ') @@ -64,8 +65,8 @@ describe('Nested Work', () => { .should('exist') }) - // TODO(DP): failing is this desirable? - it('parent work should appear in initial results', () => { + // see #25 + it.skip('parent work should appear in initial results', () => { cy.get('[href*="521689139"]') .should('exist') }) diff --git a/cypress/e2e/reviews.cy.js b/cypress/e2e/reviews.cy.js index b91d196..f772ee1 100644 --- a/cypress/e2e/reviews.cy.js +++ b/cypress/e2e/reviews.cy.js @@ -19,7 +19,7 @@ describe('Review after reviewed', () => { .should('exist') }) - // TODO(DP): failing + // see #26 it.skip('first hit should not be a review', () => { cy.get('#result0') .contains('Strategeme') @@ -92,14 +92,14 @@ describe('Review after reviewed', () => { }) // PPN 315776242 - // TODO(DP): failing - it('first hit matches exact title', () => { + // see #26 + it.skip('first hit matches exact title', () => { cy.get('#result0') .find('[href*="315776242"]') .should('exist') }) - it.only('second hit should be a review', () => { + it('second hit should be a review', () => { cy.get('#result1') .should('exist') .contains('Review') From 30f862fe29940da7bc28656214d33c981e4da3af Mon Sep 17 00:00:00 2001 From: duncdrum Date: Wed, 10 Jan 2024 16:27:52 +0100 Subject: [PATCH 7/8] feat(yamllint): lint files on CI --- .github/workflows/test.yml | 5 +- README.md | 10 +- package-lock.json | 428 +++++++++++++++++++++++++++++++++++++ package.json | 4 +- 4 files changed, 444 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 48a3509..d7a1be5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -28,4 +28,7 @@ jobs: cypress/e2e/spec.cy.js cypress/e2e/reviews.cy.js cypress/e2e/nested.cy.js - # browser: firefox \ No newline at end of file + # browser: firefox + # Lint Yaml + - name: Yaml Lint + run: npm run lint \ No newline at end of file diff --git a/README.md b/README.md index 015ad26..b67032c 100644 --- a/README.md +++ b/README.md @@ -91,4 +91,12 @@ The following policies were detected that may prevent Cypress from automating Ch For more information, see https://on.cypress.io/bad-browser-policy ``` -In diese Fällen müssen Tests in `Electron` ausgeführt werden. \ No newline at end of file +In diese Fällen müssen Tests in `Electron` ausgeführt werden. + +### Yaml Prüfung + +Um die yaml Dateien im `vufind/` Ordner auf Syntaxfehler zu überprüfen: + +```powershell +npm run lint +``` \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index bb5e84d..46b508d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,6 +10,7 @@ "license": "MIT", "devDependencies": { "cypress": "^13.6.2", + "yaml-lint": "^1.7.0", "yamljs": "^0.3.0" } }, @@ -71,6 +72,41 @@ "ms": "^2.1.1" } }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/@types/node": { "version": "18.18.8", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.8.tgz", @@ -192,6 +228,15 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/asn1": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", @@ -312,6 +357,18 @@ "concat-map": "0.0.1" } }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/buffer": { "version": "5.7.1", "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", @@ -478,6 +535,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -538,6 +606,12 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -674,6 +748,18 @@ "node": ">=0.4.0" } }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/ecc-jsbn": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", @@ -712,6 +798,15 @@ "node": ">=8.6" } }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -797,6 +892,31 @@ "node >=0.6.0" ] }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.16.0.tgz", + "integrity": "sha512-ifCoaXsDrsdkWTtiNJX5uzHDsrck5TzfKKDcuFFTIrrc/BS076qgEIfoIy1VeZqViznfKiysPYTh/QeHtnIsYA==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fd-slicer": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", @@ -821,6 +941,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/forever-agent": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", @@ -874,6 +1006,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, "node_modules/get-intrinsic": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", @@ -942,6 +1083,18 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/global-dirs": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", @@ -957,6 +1110,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -1075,6 +1248,15 @@ } ] }, + "node_modules/ignore": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, "node_modules/indent-string": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", @@ -1121,6 +1303,15 @@ "is-ci": "bin.js" } }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -1130,6 +1321,18 @@ "node": ">=8" } }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-installed-globally": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", @@ -1146,6 +1349,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -1197,6 +1409,24 @@ "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", "dev": true }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, "node_modules/jsbn": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", @@ -1373,6 +1603,28 @@ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -1430,6 +1682,21 @@ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, + "node_modules/nconf": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.1.tgz", + "integrity": "sha512-p2cfF+B3XXacQdswUYWZ0w6Vld0832A/tuqjLBu3H1sfUcby4N2oVbGhyuCkZv+t3iY3aiFEj7gZGqax9Q2c1w==", + "dev": true, + "dependencies": { + "async": "^3.0.0", + "ini": "^2.0.0", + "secure-keys": "^1.0.0", + "yargs": "^16.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", @@ -1514,6 +1781,15 @@ "node": ">=8" } }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -1526,6 +1802,18 @@ "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", "dev": true }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/pify": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", @@ -1608,6 +1896,26 @@ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", "dev": true }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -1617,6 +1925,15 @@ "throttleit": "^1.0.0" } }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/requires-port": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", @@ -1636,6 +1953,16 @@ "node": ">=8" } }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rfdc": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", @@ -1657,6 +1984,29 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, "node_modules/rxjs": { "version": "7.8.1", "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", @@ -1692,6 +2042,12 @@ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "dev": true }, + "node_modules/secure-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/secure-keys/-/secure-keys-1.0.0.tgz", + "integrity": "sha512-nZi59hW3Sl5P3+wOO89eHBAAGwmCPd2aE1+dLZV5MO+ItQctIvAqihzaAXIQhvtH4KJPxM080HsnqltR2y8cWg==", + "dev": true + }, "node_modules/semver": { "version": "7.5.4", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", @@ -1763,6 +2119,15 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, "node_modules/slice-ansi": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", @@ -1882,6 +2247,18 @@ "node": ">=8.17.0" } }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, "node_modules/tough-cookie": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", @@ -2037,12 +2414,36 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yaml-lint": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/yaml-lint/-/yaml-lint-1.7.0.tgz", + "integrity": "sha512-zeBC/kskKQo4zuoGQ+IYjw6C9a/YILr2SXoEZA9jM0COrSwvwVbfTiFegT8qYBSBgOwLMWGL8sY137tOmFXGnQ==", + "dev": true, + "dependencies": { + "consola": "^2.15.3", + "globby": "^11.1.0", + "js-yaml": "^4.1.0", + "nconf": "^0.12.0" + }, + "bin": { + "yamllint": "dist/cli.js" + } + }, "node_modules/yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", @@ -2057,6 +2458,33 @@ "yaml2json": "bin/yaml2json" } }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yauzl": { "version": "2.10.0", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", diff --git a/package.json b/package.json index de132b1..b155e47 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "Specs for relevance of stabikat search", "main": "index.js", "scripts": { - "test": "cypress run" + "test": "cypress run", + "lint": "yamllint vufind/*.yaml" }, "repository": { "type": "git", @@ -23,6 +24,7 @@ "homepage": "https://github.com/duncdrum/sbb-relevance-test#readme", "devDependencies": { "cypress": "^13.6.2", + "yaml-lint": "^1.7.0", "yamljs": "^0.3.0" } } From d55441f115fb4d9554b7690b1c3d2feafd21e753 Mon Sep 17 00:00:00 2001 From: duncdrum Date: Wed, 10 Jan 2024 17:55:29 +0100 Subject: [PATCH 8/8] fix(author): author searches see #14 #22 --- .github/workflows/test.yml | 2 + cypress/e2e/author.cy.js | 94 +++++++++++++--------------- cypress/e2e/multi-lang-phrase.cy.js | 3 +- notes/Ranking_Stabikat.xlsx | Bin 19848 -> 19947 bytes 4 files changed, 49 insertions(+), 50 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d7a1be5..d95d68f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,8 +26,10 @@ jobs: config: baseUrl=https://stabikat.de/search/ spec: | cypress/e2e/spec.cy.js + cypress/e2e/author.cy.js cypress/e2e/reviews.cy.js cypress/e2e/nested.cy.js + cypress/e2e/multi-lang-phrase.cy.js # browser: firefox # Lint Yaml - name: Yaml Lint diff --git a/cypress/e2e/author.cy.js b/cypress/e2e/author.cy.js index e06bdd6..a7abc8f 100644 --- a/cypress/e2e/author.cy.js +++ b/cypress/e2e/author.cy.js @@ -1,6 +1,6 @@ describe('Author Search', () => { // see #14 - describe.only('glaser karin' , () => { + describe('glaser karin' , () => { beforeEach(() => { cy.visit({ url: '/Results', @@ -11,14 +11,11 @@ describe('Author Search', () => { }) }) - // Bei Author-Suche Autorenfeld boosten (gegenüber anderen Feldern, auch Titel) - it('should appear before child work', () => { + // erster Treffer von Autorin + it('first hit should be by the author', () => { cy.get('#result0') - .find('.media-type') - .contains(' Zeitschrift (gedruckt) ') - cy.get('#result1') - .find('.media-type') - .contains(' Band einer Zeitschrift/Zeitung ') + .find('.resultlist-data') + .contains('Karin Glaser') }) }) @@ -28,21 +25,19 @@ describe('Author Search', () => { url: '/Results', qs: { lookfor: '阎连科', - type: 'allFields' + type: 'Author' } }) }) - // (DP): 3 hits no child works as far as I can see - // PPN: 168000709 - it('first hit should be parent work', () => { - cy.get('[href*="168000709"]') - .should('exist') + // see #22 + it('CJK author search should return translations', () => { + cy.get('.record-list') + .contains('Yan, Lianke') }) }) describe('"Corte, Justine del"', () => { - // (DP): parent work not in top 20 beforeEach(() => { cy.visit({ url: '/Results', @@ -53,42 +48,41 @@ describe('Author Search', () => { }) }) - // TODO(DP): failing - // PPN: 521689139 - it('first hit should be parent work', () => { - cy.get('#result0') - .find('[href*="521689139"]') - .should('exist') - }) - - // TODO(DP): failing - it('first hit should not be child volume', () => { - cy.get('#result0') - .find('.media-type') - .should('not.contain', 'Band einer Zeitschrift/Zeitung') - .and('not.contain', 'Serial Volume') + it('strict search should only contain works by that author', () => { + cy.get('.resultlist-data') + .should('have.length.gte', 3) + .and('contain','Corte, Justine del') }) }) - describe('Andreas Gryphius' , () => { + describe('Samuel Scheidt' , () => { beforeEach(() => { cy.visit({ url: '/Results', qs: { - lookfor: 'Andreas Gryphius', - type: 'Author' + lookfor: 'Samuel Scheidt', + type: 'Author', + limit: '5' } }) }) - // Bei Author-Suche Autorenfeld boosten (gegenüber anderen Feldern, auch Titel) - it('should appear before child work', () => { - cy.get('#result0') - .find('.media-type') - .contains(' Zeitschrift (gedruckt) ') - cy.get('#result1') - .find('.media-type') - .contains(' Band einer Zeitschrift/Zeitung ') + // (DP): 182 (or 90?)works by author but 200 hits. + // within top 20 6 works unrelated to search 14 by author + // Top 5 in author search should all be by author + // see #28 + it.skip('TOP 5 should all be by author', () => { + cy.get('.resultlist-data') + .find('[href*=Author]') + .each(($el, index, $lis) => { + cy.wrap($el) + .contains('Scheidt, Samuel') + }) + .then(($lis) => { + cy.wrap($lis) + .should('have.length', '5') + }) + }) }) @@ -98,19 +92,21 @@ describe('Author Search', () => { url: '/Results', qs: { lookfor: 'oliver heaviside', - type: 'Author' + type: 'allFields' } }) }) - // Bei Author-Suche Autorenfeld boosten (gegenüber anderen Feldern, auch Titel) - it('should appear before child work', () => { - cy.get('#result0') - .find('.media-type') - .contains(' Zeitschrift (gedruckt) ') - cy.get('#result1') - .find('.media-type') - .contains(' Band einer Zeitschrift/Zeitung ') + it('should appear in each of top 20', () => { + cy.get('.resultlist') + .each(($el, index, $lis) => { + cy.wrap($el) + .contains('Heaviside', {matchCase: false}) + }) + .then(($lis) => { + cy.wrap($lis) + .should('have.length', '20') + }) }) }) }) \ No newline at end of file diff --git a/cypress/e2e/multi-lang-phrase.cy.js b/cypress/e2e/multi-lang-phrase.cy.js index 173bc5b..430002e 100644 --- a/cypress/e2e/multi-lang-phrase.cy.js +++ b/cypress/e2e/multi-lang-phrase.cy.js @@ -18,7 +18,8 @@ describe('Foreign language phrase search', () => { }) - it('en subject query matches en and ar', () => { + // see #27 + it.skip('en subject query matches en and ar', () => { cy.visit({ url: '/Results', qs: { diff --git a/notes/Ranking_Stabikat.xlsx b/notes/Ranking_Stabikat.xlsx index d39e59ae7cf8edc7af406415251b359bb3833a0f..5c274da2ced0d89ce0a7d5e30512b8311713af91 100644 GIT binary patch delta 10819 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 I%%7Y84`jp4z5oCK delta 10776 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