From ce26de0560fec68b5cac225f47b907a6647282d7 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 3 Mar 2023 14:23:11 +0100 Subject: [PATCH 001/183] Add tunocent build and deploy --- .github/workflows/starter.yaml | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/starter.yaml b/.github/workflows/starter.yaml index 3cb16b2f..a597d7e3 100644 --- a/.github/workflows/starter.yaml +++ b/.github/workflows/starter.yaml @@ -39,7 +39,7 @@ jobs: else echo "environment=review-${{ github.ref_name }}" echo "environment=review-${{ github.ref_name }}" >> $GITHUB_OUTPUT - fi + fi _1: needs: [setup_workflow_env] uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/build-herokuish-and-push-to-registry.yaml@main @@ -52,6 +52,18 @@ jobs: image_tagged: ${{ needs.setup_workflow_env.outputs.image_tagged }} source_image: ${{ needs.setup_workflow_env.outputs.source_image }} default_port: ${{ needs.setup_workflow_env.outputs.default_port }} + _1-tunocent: + needs: [setup_workflow_env] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/build-herokuish-and-push-to-registry.yaml@main + secrets: inherit +# if you run this outside of acdh-oeaw yo uneed to specify every secret you want to pass by name + with: + environment: ${{ needs.setup_workflow_env.outputs.environment}}-tunocent + BUILDPACK_URL: ${{ needs.setup_workflow_env.outputs.BUILDPACK_URL }} + registry_root: ${{ needs.setup_workflow_env.outputs.registry_root }} + image_tagged: ${{ needs.setup_workflow_env.outputs.image_tagged }}-tunocent + source_image: ${{ needs.setup_workflow_env.outputs.source_image }} + default_port: ${{ needs.setup_workflow_env.outputs.default_port }} _2: needs: [setup_workflow_env] uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/herokuish-tests-db-url.yaml@main @@ -77,4 +89,16 @@ jobs: APP_ROOT: ${{ needs.setup_workflow_env.outputs.APP_ROOT }} SERVICE_ID: ${{ needs.setup_workflow_env.outputs.SERVICE_ID }} PUBLIC_URL: ${{ needs.setup_workflow_env.outputs.PUBLIC_URL }} + POSTGRES_ENABLED: ${{ needs.setup_workflow_env.outputs.POSTGRES_ENABLED == 'true'}} + _3-tunocent: + needs: [setup_workflow_env, _1, _2] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/deploy-cluster-2.yml@main + secrets: inherit + with: + environment: ${{ needs.setup_workflow_env.outputs.environment}}-tunocent + DOCKER_TAG: ${{ needs.setup_workflow_env.outputs.registry_root }}${{ needs.setup_workflow_env.outputs.image_tagged }}-tunocent + APP_NAME: ${{ needs.setup_workflow_env.outputs.APP_NAME }} + APP_ROOT: ${{ needs.setup_workflow_env.outputs.APP_ROOT }} + SERVICE_ID: ${{ needs.setup_workflow_env.outputs.SERVICE_ID }} + PUBLIC_URL: ${{ needs.setup_workflow_env.outputs.PUBLIC_URL }} POSTGRES_ENABLED: ${{ needs.setup_workflow_env.outputs.POSTGRES_ENABLED == 'true'}} \ No newline at end of file From 16b1db42597c9f2a5fa49775739549ef0f251056 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 3 Mar 2023 14:33:09 +0100 Subject: [PATCH 002/183] Correct dependencies for tunocent --- .github/workflows/starter.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/starter.yaml b/.github/workflows/starter.yaml index a597d7e3..4b450201 100644 --- a/.github/workflows/starter.yaml +++ b/.github/workflows/starter.yaml @@ -91,7 +91,7 @@ jobs: PUBLIC_URL: ${{ needs.setup_workflow_env.outputs.PUBLIC_URL }} POSTGRES_ENABLED: ${{ needs.setup_workflow_env.outputs.POSTGRES_ENABLED == 'true'}} _3-tunocent: - needs: [setup_workflow_env, _1, _2] + needs: [setup_workflow_env, _1-tunocent, _2] uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/deploy-cluster-2.yml@main secrets: inherit with: From 0d69a4dc8d5c9790f68b2dad62bcec883dcc1d8a Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Mon, 6 Mar 2023 16:35:18 +0100 Subject: [PATCH 003/183] tunocent app needs a separate name --- .github/workflows/starter.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/starter.yaml b/.github/workflows/starter.yaml index 4b450201..5a6ac73a 100644 --- a/.github/workflows/starter.yaml +++ b/.github/workflows/starter.yaml @@ -97,7 +97,7 @@ jobs: with: environment: ${{ needs.setup_workflow_env.outputs.environment}}-tunocent DOCKER_TAG: ${{ needs.setup_workflow_env.outputs.registry_root }}${{ needs.setup_workflow_env.outputs.image_tagged }}-tunocent - APP_NAME: ${{ needs.setup_workflow_env.outputs.APP_NAME }} + APP_NAME: tunocent-app APP_ROOT: ${{ needs.setup_workflow_env.outputs.APP_ROOT }} SERVICE_ID: ${{ needs.setup_workflow_env.outputs.SERVICE_ID }} PUBLIC_URL: ${{ needs.setup_workflow_env.outputs.PUBLIC_URL }} From 2908abe688741d4c822c14a8a66155fdd28c1661 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 18 Apr 2023 16:37:36 +0200 Subject: [PATCH 004/183] Return the (Vue) component name to use for a particular menu item --- xslt/menu-json.xslt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index acfc35c7..152610df 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -35,6 +35,18 @@ + + + DataList + WMap + DictQuery + Text + SampleText + BiblioQuery + CrossDictQuery + UnknownTypeWarning + + From 9fa9b9adb2bf9aae921bdf2906fc7b2a9819ef41 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 18 Apr 2023 16:45:25 +0200 Subject: [PATCH 005/183] Try run only on push to master and devel --- .github/workflows/starter.yaml | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/.github/workflows/starter.yaml b/.github/workflows/starter.yaml index 5a6ac73a..8467291a 100644 --- a/.github/workflows/starter.yaml +++ b/.github/workflows/starter.yaml @@ -3,9 +3,8 @@ name: workflows starter on: push: branches: - - "**" - tags-ignore: - - "**" + - "master" + - "devel" jobs: setup_workflow_env: runs-on: ubuntu-latest From 8abfd14fea7b76e9b9e413338b95a10d9215113f Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Mon, 24 Apr 2023 11:22:35 +0200 Subject: [PATCH 006/183] First draft of search endpoint --- vicav.xqm | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) diff --git a/vicav.xqm b/vicav.xqm index 08f9bec2..6136ef6a 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1478,4 +1478,72 @@ function vicav:get_profiles_overview() { $tei) }; + +declare +%rest:path("vicav/corpus") +%rest:GET +%rest:query-param("query", "{$query}") +%rest:query-param("print", "{$print}") +function vicav:search_corpus($query as xs:string, $print as xs:string?) { + let $noske_host := vicav:project_config()//noskeHost + + let $result := if ($noske_host) then + http:send-request(, + $noske_host || '/bonito/run.cgi/first?corpname=' || vicav:get_project_name() + || '&queryselector=cqlrow&cql=[word="' || $query + || '"]&default_attr=word&attrs=wid&kwicleftctx=-1&kwicrightctx=0&refs=u.id,doc.id&pagesize=100000') + else false() + +(:let consecutiveIDs + json.Lines.map((line) => { + const key = line.Refs.map((ref) => {return ref.split('=')[1]}).join(); + consecutiveIDs = consecutiveIDs || [] + docsUandIDs[key] = docsUandIDs[key] || []; + docsUHits[key] = docsUHits[key] || []; + if (!line.Kwic[0]) {line.Kwic = line.Left} + if (!line.Kwic[0]) {line.Kwic = line.Right} + const ids = line.Kwic[0].str.split(" ").filter(str => str != "") + const found = docsUandIDs[key].findIndex((id) => id === ids[0]) + if (line.Kwic[0]) { + if (ids[0] === '' || found === -1) { + consecutiveIDs = consecutiveIDs.concat(ids) + docsUHits[key].push(Array.from(consecutiveIDs)) + docsUandIDs[key] = docsUandIDs[key].concat(consecutiveIDs) + console.log('uhits', JSON.stringify(docsUHits), 'uandids', JSON.stringify(docsUandIDs)) + consecutiveIDs = [] + } else { + const newIds = ids.filter(id => docsUandIDs[key].indexOf(id) === -1) + if (newIds.length > 1) { + consecutiveIDs = consecutiveIDs.concat(newIds) + } + } + }:) + + + let $consecutiveIds := [] + (:let $docUandIds := map:merge():) + let $hits := if (not($result)) then '' else for $line in $result/json/Lines/_ + let $uId := tokenize($line/Refs/_[1], '=')[2] + let $docId := tokenize($line/Refs/_[2], '=')[2] + (:$docUandIds := if not((map:contains($docUandIds, $key))) then map:put($docUandIds, $key, []) else $docUandIds:) + let $tokenId := if (count($line/Kwic/_) > 0) then + $line/Kwic/_[1]/str/text() + else if (count($line/Left/_) > 0) then + $line/Left/_[1]/text() + else if (count($line/Right/_) > 0) then + $line/Right/_[1]/text() else "" + + let $u := collection( + 'vicav_corpus/' || vicav:get_project_db() + )/descendant::tei:TEI/tei:text/tei:body/tei:div/tei:annotationBlock/tei:u[@xml:id = $uId] + return {$u}{normalize-space($tokenId)} + + + let $out := vicav:transform({$hits}, 'corpus_search_result.xslt', $print, map{}) + + return + (web:response-header(map {'method': 'basex'}, cors:header(())), + $out) + +}; From 9d0548626bc44e59f99a57102aead1d5c247ce5b Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Tue, 25 Apr 2023 12:07:03 +0200 Subject: [PATCH 007/183] Get a pageable stream of utterances --- vicav.xqm | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/vicav.xqm b/vicav.xqm index 6136ef6a..7dc60114 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1546,4 +1546,23 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { $out) }; - + +declare +%rest:path("vicav/corpus_text") +%rest:GET +%rest:query-param("id", "{$id}") +%rest:query-param("page", "{$page}") +%rest:query-param("size", "{$size}") +function vicav:corpus_text($id as xs:string, $page as xs:integer?, $size as xs:integer?) { + let $p := if (empty($page)) then 1 else $page + let $s := if (empty($size)) then 10 else $size + + let $doc := subsequence(collection( + 'vicav_corpus/' || vicav:get_project_db() + )/descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@level="a"]/text() = $id] + /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u, ($p - 1)*$s+1, $s) + + return + (web:response-header(map {'method': 'basex'}, cors:header(())), + {$doc}) +}; \ No newline at end of file From 1ec63b940d485bc8e75c4d0138cc51abc83065a7 Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Tue, 25 Apr 2023 18:12:44 +0200 Subject: [PATCH 008/183] Corpust text aoutput --- vicav.xqm | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 7dc60114..dfd7ca57 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1539,7 +1539,7 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { return {$u}{normalize-space($tokenId)} - let $out := vicav:transform({$hits}, 'corpus_search_result.xslt', $print, map{}) + let $out := vicav:transform({$hits}, 'corpus_search_result.xslt', $print, map{ 'query': $query }) return (web:response-header(map {'method': 'basex'}, cors:header(())), @@ -1557,12 +1557,16 @@ function vicav:corpus_text($id as xs:string, $page as xs:integer?, $size as xs:i let $p := if (empty($page)) then 1 else $page let $s := if (empty($size)) then 10 else $size + + let $doc := subsequence(collection( 'vicav_corpus/' || vicav:get_project_db() )/descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@level="a"]/text() = $id] /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u, ($p - 1)*$s+1, $s) + let $out := vicav:transform({$doc}, 'corpus_utterances.xslt', (), map{}) + return (web:response-header(map {'method': 'basex'}, cors:header(())), - {$doc}) + $out) }; \ No newline at end of file From b0ecb35e509974217174c35dccb191c7983cf469 Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Tue, 2 May 2023 20:52:53 +0200 Subject: [PATCH 009/183] Add XSL files --- xslt/corpus_search_result.xslt | 72 ++++++++++++++++++++++++++++++++++ xslt/corpus_utterances.xslt | 29 ++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 xslt/corpus_search_result.xslt create mode 100644 xslt/corpus_utterances.xslt diff --git a/xslt/corpus_search_result.xslt b/xslt/corpus_search_result.xslt new file mode 100644 index 00000000..2bed9b28 --- /dev/null +++ b/xslt/corpus_search_result.xslt @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + +
+

Search results for

+ + + + + + + + + + + +
+ +
+ + + + + + + + + +
+
+ + + + + + +
+
+ + + + + + + + +
+
+
+
+
+
+
\ No newline at end of file diff --git a/xslt/corpus_utterances.xslt b/xslt/corpus_utterances.xslt new file mode 100644 index 00000000..d052feb9 --- /dev/null +++ b/xslt/corpus_utterances.xslt @@ -0,0 +1,29 @@ + + + + + + +
+ +
+ + + + + + + + + + + +
+ +
+
+
+
\ No newline at end of file From 7ba680bd2be2b192d6e9ceb8a96c6cb013cf7b23 Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Thu, 4 May 2023 14:31:26 +0200 Subject: [PATCH 010/183] API Docs comment --- vicav.xqm | 30 +++++++++++++++++++++++------- xslt/corpus_search_result.xslt | 1 - xslt/corpus_utterances.xslt | 1 - 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index dfd7ca57..56ad0d5c 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1478,7 +1478,14 @@ function vicav:get_profiles_overview() { $tei) }; - +(:~ + : Performs a corpus search in NoSKE. + : + : @param $query Query to perform against NoSKE. + : @param $print Whether return the printable page with full HTML headers. + : + : @return A rendered HTML snippet with the search results. + :) declare %rest:path("vicav/corpus") %rest:GET @@ -1532,10 +1539,10 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { $line/Left/_[1]/text() else if (count($line/Right/_) > 0) then $line/Right/_[1]/text() else "" - let $u := collection( 'vicav_corpus/' || vicav:get_project_db() - )/descendant::tei:TEI/tei:text/tei:body/tei:div/tei:annotationBlock/tei:u[@xml:id = $uId] + )/descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type="SHAWICorpusID"]/text() = $docId] + /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u[@xml:id = $uId] return {$u}{normalize-space($tokenId)} @@ -1547,24 +1554,33 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { }; +(:~ + : Retrieve pageble set of utterances from a corpus text. + : + : @param $id Text Identidfier. + : @param $page Page number (defaults to 1) + : @param $size Page size (defaults to 10) + : @param $print Whether to return a printable page with full HTML headers. + : + : @return A rendered HTML snippet of the utterances. + :) declare %rest:path("vicav/corpus_text") %rest:GET %rest:query-param("id", "{$id}") %rest:query-param("page", "{$page}") %rest:query-param("size", "{$size}") -function vicav:corpus_text($id as xs:string, $page as xs:integer?, $size as xs:integer?) { +%rest:query-param("print", "{$print}") +function vicav:corpus_text($id as xs:string, $page as xs:integer?, $size as xs:integer?, $print as xs:string?) { let $p := if (empty($page)) then 1 else $page let $s := if (empty($size)) then 10 else $size - - let $doc := subsequence(collection( 'vicav_corpus/' || vicav:get_project_db() )/descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@level="a"]/text() = $id] /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u, ($p - 1)*$s+1, $s) - let $out := vicav:transform({$doc}, 'corpus_utterances.xslt', (), map{}) + let $out := vicav:transform({$doc}, 'corpus_utterances.xslt', $print, map{}) return (web:response-header(map {'method': 'basex'}, cors:header(())), diff --git a/xslt/corpus_search_result.xslt b/xslt/corpus_search_result.xslt index 2bed9b28..529330e8 100644 --- a/xslt/corpus_search_result.xslt +++ b/xslt/corpus_search_result.xslt @@ -6,7 +6,6 @@ - diff --git a/xslt/corpus_utterances.xslt b/xslt/corpus_utterances.xslt index d052feb9..d6baaa8a 100644 --- a/xslt/corpus_utterances.xslt +++ b/xslt/corpus_utterances.xslt @@ -5,7 +5,6 @@ xmlns:tei="http://www.tei-c.org/ns/1.0" version="2.0"> -
From 26aa005e188c7c39674c488142077ae5cbbff22e Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 5 May 2023 13:36:05 +0200 Subject: [PATCH 011/183] Add a xqdoc description for the geo markers endpoint The format should be usable with the openapi generator --- vicav.xqm | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/vicav.xqm b/vicav.xqm index 08f9bec2..0c83a568 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -958,6 +958,34 @@ return }; +(:~ + : gets a geo marker information. + : + : Retrieve geo data information from the bibliography for displaying coordinates on a map. + : + : @param $query A BaseX Full-Text search query in in vicav-biblio tei:biblstruct with wildcards enabled. + : See: https://docs.basex.org/wiki/Full-Text#Match_Options + : using wildcards using diacritics sensitive + : Uses prefixes to limit the full text search to certein elements. + : * date: -> tei:date + : * title: -> tei:title + : * pubPlace: -> tei:pubPlace + : * author: -> tei:author/tei:surname + : * geo:, geo_reg:, reg:, diaGroup: -> tei:note[@type="tag"]/tei:name + : * vt:, prj: -> tei:note[@type="tag"] + : + : Without a prefix any text in vicav-biblio tei:biblstruct is searched. + : + : More than one query is possible by separating with ' '/+. + : @param $scope Filters based on a set of tei:name/@types being present in a tei:note[tei:geo] + : * geo + : * diaGroup + : * reg + : * geo_reg: any of the above + : + : @return a list of geo markers + :) + declare %rest:path("vicav/bibl_markers_tei") %rest:query-param("query", "{$query}") @@ -976,7 +1004,7 @@ function vicav:get_bibl_markers_tei($query as xs:string, $scope as xs:string) { else if (contains($query, 'pubPlace:')) then '[.//tei:pubPlace[text() contains text "' || substring-after($query, ':') || '" using wildcards using diacritics sensitive]]' else if (contains($query, 'author:')) then - '[.//tei:author/tei:surname[text() contains text "' || substring-after($query, ':') || '" using wildcards using diacritics sensitive]]' + '[.//[text() contains text "' || substring-after($query, ':') || '" using wildcards using diacritics sensitive]]' else if (contains($query, 'geo:') or contains($query, 'geo_reg:') or contains($query, 'reg:') or contains($query, 'diaGroup:')) then '[.//tei:note[@type="tag"]/tei:name[text() contains text "' || substring-after($query, ':') || '" using wildcards using diacritics sensitive]]' else if (contains($query, 'vt:')) then From f674868976ee4769570f5527ce4e8a5a7fa72bdb Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 5 May 2023 14:55:47 +0200 Subject: [PATCH 012/183] Implement json output for bibl geo markers --- vicav.xqm | 24 ++++++++++++++++----- xslt/bibl-markers-json.xslt | 42 +++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 5 deletions(-) create mode 100644 xslt/bibl-markers-json.xslt diff --git a/vicav.xqm b/vicav.xqm index 0c83a568..fbf74786 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -71,6 +71,10 @@ declare function vicav:get_project_db() as xs:string { declare %rest:path("vicav/project") %rest:GET +%rest:produces("application/xml") +%rest:produces("application/json") +%rest:produces('application/problem+json') +%rest:produces('application/problem+xml') function vicav:project_config() { api-problem:or_result (prof:current-ns(), vicav:_project_config#0, [], map:merge((cors:header(()), vicav:return_content_header())) @@ -991,8 +995,18 @@ declare %rest:query-param("query", "{$query}") %rest:query-param("scope", "{$scope}") %rest:GET - +%rest:produces("application/xml") +%rest:produces("application/json") +%rest:produces('application/problem+json') +%rest:produces('application/problem+xml') function vicav:get_bibl_markers_tei($query as xs:string, $scope as xs:string) { + api-problem:or_result (prof:current-ns(), + vicav:_get_bibl_markers_tei#2, [$query, $scope], map:merge((cors:header(()), vicav:return_content_header())) + ) +}; + +declare function vicav:_get_bibl_markers_tei($query as xs:string, $scope as xs:string) { + let $accept-header := try { request:header("ACCEPT") } catch basex:http { 'application/xhtml+xml' } let $queries := tokenize($query, '\+') let $qs := for $query in $queries @@ -1113,13 +1127,13 @@ function vicav:get_bibl_markers_tei($query as xs:string, $scope as xs:string) { :) (:else ():) - return - (web:response-header(map {'method': 'xml'}, map:merge((cors:header(()), vicav:return_content_header()))), - {$out2} + return if (matches($accept-header, '[+/]json')) + then let $renderedJson := xslt:transform(<_>{$out2}, 'xslt/bibl-markers-json.xslt') + return serialize($renderedJson, map {"method": "json"}) + else {$out2} (: {$out} :) (: {$query} :) (: <_>{$tempresults} :) - ) }; declare diff --git a/xslt/bibl-markers-json.xslt b/xslt/bibl-markers-json.xslt new file mode 100644 index 00000000..c762fef1 --- /dev/null +++ b/xslt/bibl-markers-json.xslt @@ -0,0 +1,42 @@ + + + + + Created on: May 5, 2023 + Author:Omar Siam + + + + + + + + + + + + One marker + + + + <_ type="object"> + Feature + + Point + + <_> + <_> + + + + + + + + + + + \ No newline at end of file From 4c388f68b6fc7de9e0f5a11cd426b39e4b80399d Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 9 May 2023 16:47:12 +0200 Subject: [PATCH 013/183] Coordinates are numbers and they are used the other way round by leaflet. --- xslt/bibl-markers-json.xslt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xslt/bibl-markers-json.xslt b/xslt/bibl-markers-json.xslt index c762fef1..fe9d15b3 100644 --- a/xslt/bibl-markers-json.xslt +++ b/xslt/bibl-markers-json.xslt @@ -27,8 +27,8 @@ Point - <_> - <_> + <_ type="number"> + <_ type="number"> From dd1736fa6dab691c2802a5fb8457fab7a0346d4a Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 15:26:30 +0200 Subject: [PATCH 014/183] We have -data content repos now --- deployment/initial.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index c8ece1bc..bee89744 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -6,7 +6,7 @@ cp -Rv ./deployment/* ${1:-../../} npm install cd ${1:-../../} git clone $CONTENT_REPO -cp -Rv ./*-content/deployment/* . +cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings if [ $branch_name == "devel" ] then sed 's/onlytags=true.*/onlytags=false # enable for production/g' -i redeploy.settings From d7c9794af97722dbe64205a566f47af8a7e47b62 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 15:31:42 +0200 Subject: [PATCH 015/183] We need to be able to specify a branch in the content repo --- deployment/initial.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index bee89744..7d8b7876 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -1,11 +1,12 @@ #!/bin/bash CONTENT_REPO=${CONTENT_REPO:-https://github.com/acdh-oeaw/vicav-content} +CONTENT_BRANCH=${CONTENT_BRANCH:-master} branch_name=$(git rev-parse --abbrev-ref HEAD) cp -Rv ./deployment/* ${1:-../../} npm install cd ${1:-../../} -git clone $CONTENT_REPO +git clone $CONTENT_REPO $CONTENT_BRANCH cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings if [ $branch_name == "devel" ] From f41b85efb433f2dd06c45661e435e73796229cf8 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 15:34:51 +0200 Subject: [PATCH 016/183] Branch is a parameter --- deployment/initial.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index 7d8b7876..2c18df80 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -6,7 +6,7 @@ branch_name=$(git rev-parse --abbrev-ref HEAD) cp -Rv ./deployment/* ${1:-../../} npm install cd ${1:-../../} -git clone $CONTENT_REPO $CONTENT_BRANCH +git clone $CONTENT_REPO -b $CONTENT_BRANCH cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings if [ $branch_name == "devel" ] From bff1c06e3d9d3eba07db47ad7f08efcd0345f84f Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 21:22:20 +0200 Subject: [PATCH 017/183] There is no default password anymore --- deployment/initial.sh | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index 2c18df80..3625984b 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -6,16 +6,19 @@ branch_name=$(git rev-parse --abbrev-ref HEAD) cp -Rv ./deployment/* ${1:-../../} npm install cd ${1:-../../} +source data/credentials +local_password=${BASEX_admin_pw:-admin} git clone $CONTENT_REPO -b $CONTENT_BRANCH cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings +sed -e "s/local_password=.*/local_password=$local_password/g" -i '' redeploy.settings if [ $branch_name == "devel" ] -then sed 's/onlytags=true.*/onlytags=false # enable for production/g' -i redeploy.settings +then sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i '' redeploy.settings fi if [ "${STACK}x" = "x" ]; then pushd lib/custom -curl -LO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/11.4/Saxon-HE-11.4.jar -curl -LO https://repo1.maven.org/maven2/org/xmlresolver/xmlresolver/4.6.4/xmlresolver-4.6.4.jar +curl -LO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.2/Saxon-HE-12.2.jar +curl -LO https://repo1.maven.org/maven2/org/xmlresolver/xmlresolver/5.1.3/xmlresolver-5.1.3.jar popd if [ "$OSTYPE" == "msys" -o "$OSTYPE" == "win32" ] then From 09896ae920996f3f6fca71069ffcfe8a3aa99e36 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 21:34:46 +0200 Subject: [PATCH 018/183] sed trick is without space --- deployment/initial.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index 3625984b..62f0c600 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -11,9 +11,9 @@ local_password=${BASEX_admin_pw:-admin} git clone $CONTENT_REPO -b $CONTENT_BRANCH cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings -sed -e "s/local_password=.*/local_password=$local_password/g" -i '' redeploy.settings +sed -e "s/local_password=.*/local_password=$local_password/g" -i'' redeploy.settings if [ $branch_name == "devel" ] -then sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i '' redeploy.settings +then sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i'' redeploy.settings fi if [ "${STACK}x" = "x" ]; then pushd lib/custom From f93cebc72cbbe2378655f03128d9b08260e562fb Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 21:54:32 +0200 Subject: [PATCH 019/183] Put the random password im single quotes In case it contains bash special characters the workflow would fail --- deployment/initial.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index 62f0c600..f11879e9 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -11,7 +11,7 @@ local_password=${BASEX_admin_pw:-admin} git clone $CONTENT_REPO -b $CONTENT_BRANCH cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings -sed -e "s/local_password=.*/local_password=$local_password/g" -i'' redeploy.settings +sed -e "s/local_password=.*/local_password='$local_password'/g" -i'' redeploy.settings if [ $branch_name == "devel" ] then sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i'' redeploy.settings fi From a4e1463059488050e84bfccf502536c1a36d75bb Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 22:05:03 +0200 Subject: [PATCH 020/183] For debugging --- deployment/initial.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deployment/initial.sh b/deployment/initial.sh index f11879e9..e0a000c6 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -15,6 +15,8 @@ sed -e "s/local_password=.*/local_password='$local_password'/g" -i'' redeploy.se if [ $branch_name == "devel" ] then sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i'' redeploy.settings fi +echo 'redeploy.settings content:' +cat redeploy.settings if [ "${STACK}x" = "x" ]; then pushd lib/custom curl -LO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.2/Saxon-HE-12.2.jar From b20aa59d5bdd026373936e0a1537e58061b2048f Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 16 May 2023 22:22:39 +0200 Subject: [PATCH 021/183] Add a SHAWI setup to the devel build --- .github/workflows/starter.yaml | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/.github/workflows/starter.yaml b/.github/workflows/starter.yaml index 8467291a..34ead626 100644 --- a/.github/workflows/starter.yaml +++ b/.github/workflows/starter.yaml @@ -63,6 +63,18 @@ jobs: image_tagged: ${{ needs.setup_workflow_env.outputs.image_tagged }}-tunocent source_image: ${{ needs.setup_workflow_env.outputs.source_image }} default_port: ${{ needs.setup_workflow_env.outputs.default_port }} + _1-shawi: + needs: [setup_workflow_env] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/build-herokuish-and-push-to-registry.yaml@main + secrets: inherit +# if you run this outside of acdh-oeaw yo uneed to specify every secret you want to pass by name + with: + environment: ${{ needs.setup_workflow_env.outputs.environment}}-shawi + BUILDPACK_URL: ${{ needs.setup_workflow_env.outputs.BUILDPACK_URL }} + registry_root: ${{ needs.setup_workflow_env.outputs.registry_root }} + image_tagged: ${{ needs.setup_workflow_env.outputs.image_tagged }}-shawi + source_image: ${{ needs.setup_workflow_env.outputs.source_image }} + default_port: ${{ needs.setup_workflow_env.outputs.default_port }} _2: needs: [setup_workflow_env] uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/herokuish-tests-db-url.yaml@main @@ -100,4 +112,16 @@ jobs: APP_ROOT: ${{ needs.setup_workflow_env.outputs.APP_ROOT }} SERVICE_ID: ${{ needs.setup_workflow_env.outputs.SERVICE_ID }} PUBLIC_URL: ${{ needs.setup_workflow_env.outputs.PUBLIC_URL }} + POSTGRES_ENABLED: ${{ needs.setup_workflow_env.outputs.POSTGRES_ENABLED == 'true'}} + _3-shawi: + needs: [setup_workflow_env, _1-shawi, _2] + uses: acdh-oeaw/gl-autodevops-minimal-port/.github/workflows/deploy-cluster-2.yml@main + secrets: inherit + with: + environment: ${{ needs.setup_workflow_env.outputs.environment}}-shawi + DOCKER_TAG: ${{ needs.setup_workflow_env.outputs.registry_root }}${{ needs.setup_workflow_env.outputs.image_tagged }}-shawi + APP_NAME: shawi-app + APP_ROOT: ${{ needs.setup_workflow_env.outputs.APP_ROOT }} + SERVICE_ID: ${{ needs.setup_workflow_env.outputs.SERVICE_ID }} + PUBLIC_URL: ${{ needs.setup_workflow_env.outputs.PUBLIC_URL }} POSTGRES_ENABLED: ${{ needs.setup_workflow_env.outputs.POSTGRES_ENABLED == 'true'}} \ No newline at end of file From 359baefd0118bb9ee65e34c954fb4c348cd606b5 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 24 May 2023 15:10:13 +0200 Subject: [PATCH 022/183] Fix: Resolution in the vicav_corpus collection ws too specific Add a few (disabled) logging instructions. Make get project name work from test scripts. --- vicav.xqm | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 2659fea4..15bc950a 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -54,7 +54,7 @@ $seq as node()*) as xs:boolean { }; declare function vicav:get_project_name() as xs:string { - let $project := doc('vicav_projects/projects.xml')/projects/project[matches(request:hostname(), @regex)]/text() + let $project := doc('vicav_projects/projects.xml')/projects/project[matches(try{request:hostname()} catch basex:http {()}, @regex)]/text() return if (empty($project) or $project = '') then doc('vicav_projects/projects.xml')/projects/project[1]/text() else $project }; @@ -1534,14 +1534,18 @@ declare %rest:query-param("query", "{$query}") %rest:query-param("print", "{$print}") function vicav:search_corpus($query as xs:string, $print as xs:string?) { - let $noske_host := vicav:project_config()//noskeHost + let $noske_host := vicav:project_config()//noskeHost, + $request := $noske_host || '/bonito/run.cgi/first?corpname=' || vicav:get_project_name() + || '&queryselector=cqlrow&cql=[word="' || $query + || '"]&default_attr=word&attrs=wid&kwicleftctx=-1&kwicrightctx=0&refs=u.id,doc.id&pagesize=100000' + , $_ := admin:write-log($request, 'INFO') + let $result := if ($noske_host) then http:send-request(, - $noske_host || '/bonito/run.cgi/first?corpname=' || vicav:get_project_name() - || '&queryselector=cqlrow&cql=[word="' || $query - || '"]&default_attr=word&attrs=wid&kwicleftctx=-1&kwicrightctx=0&refs=u.id,doc.id&pagesize=100000') + $request) else false() + (: , $_ := admin:write-log(serialize($result[2], map{'method': 'json'}), 'INFO') :) (:let consecutiveIDs json.Lines.map((line) => { @@ -1571,7 +1575,7 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { let $consecutiveIds := [] (:let $docUandIds := map:merge():) - let $hits := if (not($result)) then '' else for $line in $result/json/Lines/_ + let $hits := {if (not($result)) then '' else for $line in $result/json/Lines/_ let $uId := tokenize($line/Refs/_[1], '=')[2] let $docId := tokenize($line/Refs/_[2], '=')[2] (:$docUandIds := if not((map:contains($docUandIds, $key))) then map:put($docUandIds, $key, []) else $docUandIds:) @@ -1581,14 +1585,14 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { $line/Left/_[1]/text() else if (count($line/Right/_) > 0) then $line/Right/_[1]/text() else "" - let $u := collection( - 'vicav_corpus/' || vicav:get_project_db() - )/descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type="SHAWICorpusID"]/text() = $docId] + let $u := collection('vicav_corpus') + /descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type="SHAWICorpusID"]/text() = $docId] /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u[@xml:id = $uId] - return {$u}{normalize-space($tokenId)} - + return {$u}{normalize-space($tokenId)}} + (: , $_ := admin:write-log(serialize($hits), 'INFO') :) + (: , $_ := file:write(file:resolve-path('hits.xml', file:base-dir()), $hits, map { "method": "xml"}) :) - let $out := vicav:transform({$hits}, 'corpus_search_result.xslt', $print, map{ 'query': $query }) + let $out := vicav:transform($hits, 'corpus_search_result.xslt', $print, map{ 'query': $query }) return (web:response-header(map {'method': 'basex'}, cors:header(())), From 508c53cba55a68fcece36ce8f406abe9c790910e Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 24 May 2023 15:10:43 +0200 Subject: [PATCH 023/183] Add a transformation scenario for hits from debug output --- viacv-app.xpr | 103 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 103 insertions(+) diff --git a/viacv-app.xpr b/viacv-app.xpr index ef092747..0b8c8e74 100644 --- a/viacv-app.xpr +++ b/viacv-app.xpr @@ -8,6 +8,26 @@ scenario.associations + + + hits.xml + + + + corpus_search_result + + + + + XSL + + + + + 2 + + + xslt/projectConfig-test.xml @@ -116,6 +136,89 @@ + + + + + + corpus_search_result + + + + + + + + + pdf + + + Apache FOP + + + + + + ${pdu}/xslt/corpus_search_result.xslt + + + ${currentFileURL} + + + false + + + false + + + XSL + + + true + + + false + + + + + + false + + + + + + false + + + false + + + true + + + false + + + false + + + true + + + + + + + + + Saxon-HE + + + + + From 0c8b03101a43c54d1c9b08830ac0dd1e00212045 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 24 May 2023 15:55:31 +0200 Subject: [PATCH 024/183] Update the corpus text functions the same way as search Fix: use the file resolve functions for the augmented xsl transform function --- vicav.xqm | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 15bc950a..dd80b7d2 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -245,10 +245,10 @@ function vicav:query_biblio_id($query as xs:string*, $xsltfn as xs:string) { }; declare function vicav:transform($doc as element(), $xsltfn as xs:string, $print as xs:string?, $options as map(*)?) { - let $stylePath := file:base-dir() || 'xslt/' - let $style := doc($stylePath || $xsltfn) + let $stylePath := file:resolve-path('xslt/', file:base-dir()) + let $style := doc(file:resolve-path('xslt/' || $xsltfn, file:base-dir())) - let $xslt := if (empty($print)) then $style else xslt:transform-text(doc($stylePath || 'printable.xslt'), doc($stylePath || 'printable_path.xslt'), map {'xslt': $stylePath || $xsltfn}) + let $xslt := if (empty($print)) then $style else xslt:transform-text(doc(file:resolve-path('xslt/printable.xslt', file:base-dir())), doc(file:resolve-path('xslt/printable_path.xslt', file:base-dir())), map {'xslt': file:path-to-uri(file:resolve-path('xslt/' || $xsltfn, file:base-dir()))}) let $sHTML := xslt:transform-text($doc, $xslt, $options) return @@ -1603,7 +1603,7 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { (:~ : Retrieve pageble set of utterances from a corpus text. : - : @param $id Text Identidfier. + : @param $docId Text Identidfier. : @param $page Page number (defaults to 1) : @param $size Page size (defaults to 10) : @param $print Whether to return a printable page with full HTML headers. @@ -1613,20 +1613,20 @@ function vicav:search_corpus($query as xs:string, $print as xs:string?) { declare %rest:path("vicav/corpus_text") %rest:GET -%rest:query-param("id", "{$id}") +%rest:query-param("id", "{$docId}") %rest:query-param("page", "{$page}") %rest:query-param("size", "{$size}") %rest:query-param("print", "{$print}") -function vicav:corpus_text($id as xs:string, $page as xs:integer?, $size as xs:integer?, $print as xs:string?) { +function vicav:corpus_text($docId as xs:string, $page as xs:integer?, $size as xs:integer?, $print as xs:string?) { let $p := if (empty($page)) then 1 else $page let $s := if (empty($size)) then 10 else $size - let $doc := subsequence(collection( - 'vicav_corpus/' || vicav:get_project_db() - )/descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title[@level="a"]/text() = $id] - /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u, ($p - 1)*$s+1, $s) - - let $out := vicav:transform({$doc}, 'corpus_utterances.xslt', $print, map{}) + let $doc := {subsequence(collection('vicav_corpus') + /descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type="SHAWICorpusID"]/text() = $docId] + /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u, ($p - 1)*$s+1, $s)} + (: , $_ := file:write(file:resolve-path('doc.xml', file:base-dir()), $doc, map { "method": "xml"}) :) + + let $out := vicav:transform($doc, 'corpus_utterances.xslt', $print, map{}) return (web:response-header(map {'method': 'basex'}, cors:header(())), From 4172d0b1bbdab3126a3e2ec4e7d47673764ae3a5 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 24 May 2023 15:56:42 +0200 Subject: [PATCH 025/183] Fix: need to restructure xsl so it works with print --- xslt/corpus_utterances.xslt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xslt/corpus_utterances.xslt b/xslt/corpus_utterances.xslt index d6baaa8a..64d2605f 100644 --- a/xslt/corpus_utterances.xslt +++ b/xslt/corpus_utterances.xslt @@ -5,9 +5,9 @@ xmlns:tei="http://www.tei-c.org/ns/1.0" version="2.0"> - +
- +
From f9a9cefcf3c0425c22c951877bc692367d87b7d1 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 24 May 2023 15:57:19 +0200 Subject: [PATCH 026/183] Add a print and an utterance transformation scenario --- viacv-app.xpr | 231 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 231 insertions(+) diff --git a/viacv-app.xpr b/viacv-app.xpr index 0b8c8e74..25cb3a9d 100644 --- a/viacv-app.xpr +++ b/viacv-app.xpr @@ -8,6 +8,46 @@ scenario.associations + + + doc.xml + + + + corpus_utterances_print + + + + + XSL + + + + + 2 + + + + + + xslt/printable.xslt + + + + printable + + + + + XSL + + + + + 2 + + + hits.xml @@ -219,6 +259,197 @@ + + + + + + printable + + + + + + + + + pdf + + + Apache FOP + + + + + + ${pdu}/xslt/printable_path.xslt + + + ${currentFileURL} + + + false + + + false + + + XSL + + + true + + + false + + + + + + false + + + + + + false + + + false + + + true + + + false + + + false + + + true + + + + + + + + xslt + + + + + + + + + + + file:/V:/basexVicav/webapp/vicav-app/xslt/corpus_utterances.xslt + + + false + + + false + + + + + + + + + Saxon-HE + + + + + + + + + + + corpus_utterances_print + + + + + + + + + pdf + + + Apache FOP + + + + + + ${pdu}/xslt/corpus_utterances_print.xsl + + + ${currentFileURL} + + + false + + + false + + + XSL + + + true + + + false + + + + + + false + + + + + + false + + + false + + + true + + + false + + + false + + + true + + + + + + + + + Saxon-HE + + + + + From 0b178c9e4a50f56696cac8f9344584b02666da99 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 24 May 2023 18:17:53 +0200 Subject: [PATCH 027/183] Quick and very dirty styling for corpus texts and search results --- xslt/printable.xslt | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/xslt/printable.xslt b/xslt/printable.xslt index 3eb3bd97..3e4aea72 100644 --- a/xslt/printable.xslt +++ b/xslt/printable.xslt @@ -74,6 +74,33 @@ .tdFeaturesHead, .highlight { font-weight: bold; } + .corpus-utterances > .u { + white-space: nowrap; + overflow-x: scroll; + } + .corpus-search-results { + display: table; + width: 100% + } + .corpus-search-result { + display: table-row; + width: 100% + } + .corpus-search-result > * { + display: table-cell; + } + .corpus-search-result > .left { + text-align: right; + } + .corpus-search-result > .keyword { + text-align: center; + padding-left: 1en; + padding-right: 1en; + background-color: yellow; + } + .corpus-search-result > .right { + text-align: left; + } From 565f9ccb4f050d97ce1eb833c20a8515ac54ca02 Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Tue, 30 May 2023 13:14:24 +0200 Subject: [PATCH 028/183] First draft of the dictionary xslt --- xslt/shawi_dict_001.xslt | 408 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 408 insertions(+) create mode 100644 xslt/shawi_dict_001.xslt diff --git a/xslt/shawi_dict_001.xslt b/xslt/shawi_dict_001.xslt new file mode 100644 index 00000000..58948bc3 --- /dev/null +++ b/xslt/shawi_dict_001.xslt @@ -0,0 +1,408 @@ + + + +
+
+ +  hits +
+ + + + + +
+ + + + + ( + + act. part. + coll. noun + common noun + comp. preposition + dem. pronoun + dual + existential marker + gen. marker + int. adverb + multiword unit + neg. particle + ord. adj. + ord. num. + particle + pass. part. + pers. pronoun + plural noun + proper noun + response particle + + + ; fem. + ;   + ) + + + + + + + +     [Syn. ] + + + + +     [Dia. ] + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Var. + + + + +  () + + + +  (;  + + ) + + + +
Etym. + + + + + + + +  () + + + +
Inflected + + + , + + + + + +   + + [act. part.] + [elative] + [elative, feminine] + [feminine] + [plural] + [feminine, singular] + [masculine] + [feminine] + [plural] + [feminine] + [construct state] + [dual] + [feminine] + [count plural] + [count plural] + [plural] + [unit noun] + [unit noun plural] + [verbal noun] + [feminine] + [plural] + [pas. part.] + [feminine] + [plural] + [feminine] + [feminine] + [plural] + [plural] + [feminine] + [masculine] + [2.pl.imp.] + [2.pl.imp.] + [2.sg.m.imp.] + [2.sg.f.imp.] + [2.sg.m.imp.] + [2.sg.f.imp.] + [2.sg.past] + [3.sg.pres.] + [pas. part.] + [act. part.] + [masculine] + [feminine] + [masculine] + [feminine] + [verbal noun] + + + + + + + + () + + + +
Defs. +
+ + + + ,  + + + + +
+ + + + ,  + + + + +
+
+ + + + ,  + + + + +
+
+
Sense +   + + + + + + + () + + + + + + +
+ + +
+
+
+ + + + ,  + + + () + + + + + +
+ + + + ,  + + + () + + + + + + () + +
+
+ +
+ + + + ,  + + + () + + + + + + () + +
+
+
+ +
+ + + + +   + + + + +   + + + +
+
+ +
+ + + + + + + +
+ + + +
+ + +   + () + + +
+
+
+
+
+ +
+ + + + + + + +
+ + + +
+ + + + () + + +
+
+
+
+
+
Refs. + + + ; + + + +
Editors + + + + , + + S. Procházka + G. Kitzler + S. Procházka + K. Moerth + + + + +
+
+
+
+
From e1ec10e8cf6fcf00810be62c4fae53dac5b3289e Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Tue, 30 May 2023 14:53:45 +0200 Subject: [PATCH 029/183] Wirking draft without examples --- xslt/shawi_dict_001.xslt | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/xslt/shawi_dict_001.xslt b/xslt/shawi_dict_001.xslt index 58948bc3..6cedbc99 100644 --- a/xslt/shawi_dict_001.xslt +++ b/xslt/shawi_dict_001.xslt @@ -186,12 +186,12 @@ - + Defs.
- + ,  @@ -200,7 +200,7 @@
- + ,  @@ -210,7 +210,7 @@
- + ,  @@ -250,7 +250,7 @@ ,  - + () @@ -296,15 +296,15 @@
- - + + - +   - +   @@ -321,10 +321,10 @@ - +
- +   () @@ -340,16 +340,16 @@
- +
- +
- + () From 8c7aa9345ec333e3cb6d93b1f55d7fbde6d3766e Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 30 May 2023 15:33:32 +0200 Subject: [PATCH 030/183] Use vicav:transform also for dict(s)_api --- vicav.xqm | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index dd80b7d2..1d5b7db5 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -271,7 +271,7 @@ function vicav:get_profile($coll as xs:string, $id as xs:string*, $xsltfn as xs: let $results := xquery:eval($query) return (web:response-header(map {'method': 'basex'}, map:merge((cors:header(()), vicav:return_content_header()))), - vicav:transform($results, $xsltfn, $print, ())) + vicav:transform($results, $xsltfn, $print, map{})) }; declare @@ -290,7 +290,7 @@ function vicav:get_sample($coll as xs:string*, $id as xs:string*, $xsltfn as xs: let $results := xquery:eval($query) return (web:response-header(map {'method': 'basex'}, map:merge((cors:header(()), vicav:return_content_header()))), - vicav:transform($results, $xsltfn, $print, ())) + vicav:transform($results, $xsltfn, $print, map{})) }; @@ -644,9 +644,10 @@ declare %rest:query-param("query", "{$query}") %rest:query-param("dicts", "{$dicts}") %rest:query-param("xslt", "{$xsltfn}") +%rest:query-param("print", "{$print}") %rest:GET -function vicav:dicts_query($dicts as xs:string, $query as xs:string*, $xsltfn as xs:string) { +function vicav:dicts_query($dicts as xs:string, $query as xs:string*, $xsltfn as xs:string, $print as xs:string?) { let $nsTei := "declare namespace tei = 'http://www.tei-c.org/ns/1.0';" let $queries := tokenize($query, ',') let $qs := @@ -702,9 +703,11 @@ let $qq := let $sQuery := $nsTei || string-join($qq) let $results := xquery:eval($sQuery) -let $style := doc("xslt/" || $xsltfn) let $ress := {$results} -let $sReturn := xslt:transform-text($ress, $style) +let $sReturn := vicav:transform($ress, $xsltfn, $print, map{ + "query": $query, + "dicts": $dicts +}) return (web:response-header(map {'method': 'basex'}, map:merge((cors:header(()), vicav:return_content_header()))), $sReturn) @@ -716,9 +719,10 @@ declare %rest:query-param("query", "{$query}") %rest:query-param("dict", "{$dict}") %rest:query-param("xslt", "{$xsltfn}") +%rest:query-param("print", "{$print}") %rest:GET -function vicav:dict_query($dict as xs:string, $query as xs:string*, $xsltfn as xs:string) { +function vicav:dict_query($dict as xs:string, $query as xs:string*, $xsltfn as xs:string, $print as xs:string?) { (: let $user := substring-before($autho, ':') let $pw := substring-after($autho, ':') :) @@ -824,9 +828,11 @@ let $res2 := for $e in $res return vicav:expandExamplePointers($e, collection($dict)) -let $style := doc("xslt/" || $xsltfn) let $ress := {$res2} -let $sReturn := xslt:transform-text($ress, $style) +let $sReturn := vicav:transform($ress, $xsltfn, $print, map{ + "query": $query, + "dict": $dict +}) return (web:response-header(map {'method': 'basex'}, map:merge((cors:header(()), vicav:return_content_header()))), From 99c0204be4a1265ca8cca4692e36d8adefb02320 Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Sat, 10 Jun 2023 15:37:14 +0200 Subject: [PATCH 031/183] Fix whitespace in utterances --- xslt/corpus_utterances.xslt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xslt/corpus_utterances.xslt b/xslt/corpus_utterances.xslt index 64d2605f..ec7f247a 100644 --- a/xslt/corpus_utterances.xslt +++ b/xslt/corpus_utterances.xslt @@ -16,7 +16,7 @@ - + From 991cd0da478b8a750bdf69b0ce305c6249cc378b Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Sat, 10 Jun 2023 16:07:53 +0200 Subject: [PATCH 032/183] Examples --- vicav.xqm | 5 ++++- xslt/shawi_dict_001.xslt | 8 +++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 1d5b7db5..2aad1efb 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -26,6 +26,9 @@ declare function vicav:expandExamplePointers($in as item(), $dict as document-no case element(tei:ptr) return $dict//tei:cit[@xml:id = $in/@target] + case element(tei:ref) + return + $dict//tei:cit[@xml:id = replace($in/@target, '#', '')] case element() return (: element { QName( namespace-uri($in), local-name($in) ) } { for $node in $in/node() return wde:expandExamplePointers($node, $dict) } :) @@ -817,7 +820,7 @@ let $ress1 := {$ed} return
{$entry}{$editors}
-let $exptrs := $ress1//tei:ptr[@type = 'example'] +let $exptrs := $ress1//tei:*[name() = ['ptr', 'ref'] and @type = 'example'] let $entries := for $r in $ress1 return diff --git a/xslt/shawi_dict_001.xslt b/xslt/shawi_dict_001.xslt index 6cedbc99..0e502c55 100644 --- a/xslt/shawi_dict_001.xslt +++ b/xslt/shawi_dict_001.xslt @@ -297,14 +297,16 @@
- + + + - +   - +   From 7056d4657c518c471e3375d5e85f0edbf2f18456 Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Mon, 12 Jun 2023 15:39:38 +0200 Subject: [PATCH 033/183] Dictionary print view --- xslt/printable.xslt | 3 +++ xslt/shawi_dict_001.xslt | 6 +++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/xslt/printable.xslt b/xslt/printable.xslt index 3e4aea72..aefbf7ed 100644 --- a/xslt/printable.xslt +++ b/xslt/printable.xslt @@ -101,6 +101,9 @@ .corpus-search-result > .right { text-align: left; } + .spExampleQuote, .lemma { + font-weight: bold; + } diff --git a/xslt/shawi_dict_001.xslt b/xslt/shawi_dict_001.xslt index 0e502c55..469374fe 100644 --- a/xslt/shawi_dict_001.xslt +++ b/xslt/shawi_dict_001.xslt @@ -1,6 +1,6 @@ - +
@@ -12,7 +12,7 @@
- + @@ -116,7 +116,7 @@ , - + From 3c098494c51f1345ff88e37f67aa40788aa2ff4b Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Sun, 25 Jun 2023 20:56:45 +0200 Subject: [PATCH 034/183] Add interactive OpenAPI documentation --- deployment/initial.sh | 5 +++++ expath-pkg.xml | 14 ++++++++++++++ openapi-config.xml | 33 +++++++++++++++++++++++++++++++++ repo.xml | 16 ++++++++++++++++ vicav.xqm | 13 ++++++++++++- 5 files changed, 80 insertions(+), 1 deletion(-) create mode 100644 expath-pkg.xml create mode 100644 openapi-config.xml create mode 100644 repo.xml diff --git a/deployment/initial.sh b/deployment/initial.sh index e0a000c6..eb69a895 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -22,6 +22,11 @@ pushd lib/custom curl -LO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.2/Saxon-HE-12.2.jar curl -LO https://repo1.maven.org/maven2/org/xmlresolver/xmlresolver/5.1.3/xmlresolver-5.1.3.jar popd + +pushd webapp +git clone https://github.com/acdh-oeaw/openapi4restxq +popd + if [ "$OSTYPE" == "msys" -o "$OSTYPE" == "win32" ] then cd bin diff --git a/expath-pkg.xml b/expath-pkg.xml new file mode 100644 index 00000000..4d9bb764 --- /dev/null +++ b/expath-pkg.xml @@ -0,0 +1,14 @@ + + + VICAV + + + urn:vicav + vicav.xqm + + \ No newline at end of file diff --git a/openapi-config.xml b/openapi-config.xml new file mode 100644 index 00000000..f4ee50db --- /dev/null +++ b/openapi-config.xml @@ -0,0 +1,33 @@ + + + + https://example.com/terms-of-use + + christoph.hoffmann@oeaw.ac.at + + + + Local development server + current ACDH-CH prod server + current ACDH-CH dev server + SwaggerHub API Auto Mocking + + + + Operations available without authentication + + + + \ No newline at end of file diff --git a/repo.xml b/repo.xml new file mode 100644 index 00000000..98bb84c1 --- /dev/null +++ b/repo.xml @@ -0,0 +1,16 @@ + + + Vienna Corpus of Arabic Varieties + Austrian Centre for Digital Humanities + https://vicav.acdh.oeaw.ac.at + development + MIT + true + application + vicav + + +
    + + + \ No newline at end of file diff --git a/vicav.xqm b/vicav.xqm index 2aad1efb..503c2239 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -9,6 +9,15 @@ declare namespace tei = 'http://www.tei-c.org/ns/1.0'; declare namespace dcterms = "http://purl.org/dc/terms/"; declare namespace prof = "http://basex.org/modules/prof"; +import module namespace openapi="https://lab.sub.uni-goettingen.de/restxqopenapi" at "../openapi4restxq/content/openapi.xqm"; + +declare + %rest:path('/vicav/openapi.json') + %rest:produces('application/json') + %output:media-type('application/json') +function vicav:getOpenapiJSON() as item()+ { + openapi:json(file:base-dir()) +}; declare function vicav:expandExamplePointers($in as item(), $dict as document-node()*) { typeswitch ($in) @@ -251,7 +260,9 @@ declare function vicav:transform($doc as element(), $xsltfn as xs:string, $print let $stylePath := file:resolve-path('xslt/', file:base-dir()) let $style := doc(file:resolve-path('xslt/' || $xsltfn, file:base-dir())) - let $xslt := if (empty($print)) then $style else xslt:transform-text(doc(file:resolve-path('xslt/printable.xslt', file:base-dir())), doc(file:resolve-path('xslt/printable_path.xslt', file:base-dir())), map {'xslt': file:path-to-uri(file:resolve-path('xslt/' || $xsltfn, file:base-dir()))}) + let $xslt := if (empty($print)) then $style else xslt:transform-text( + doc(file:resolve-path('xslt/printable.xslt', file:base-dir())) + , doc(file:resolve-path('xslt/printable_path.xslt', file:base-dir())), map {'xslt': file:path-to-uri(file:resolve-path('xslt/' || $xsltfn, file:base-dir()))}) let $sHTML := xslt:transform-text($doc, $xslt, $options) return From a85a0cc67515448b8ac2a6e1b85f17828554fb08 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 27 Jun 2023 11:34:22 +0200 Subject: [PATCH 035/183] Add other useful RestXQ modules --- 3rd-party/openapi4restxq | 1 + 3rd-party/vleserver_basex | 1 + 2 files changed, 2 insertions(+) create mode 160000 3rd-party/openapi4restxq create mode 160000 3rd-party/vleserver_basex diff --git a/3rd-party/openapi4restxq b/3rd-party/openapi4restxq new file mode 160000 index 00000000..b3ba4335 --- /dev/null +++ b/3rd-party/openapi4restxq @@ -0,0 +1 @@ +Subproject commit b3ba4335d3a6a1b7af402d39616a5821239d0b2c diff --git a/3rd-party/vleserver_basex b/3rd-party/vleserver_basex new file mode 160000 index 00000000..b360d4f7 --- /dev/null +++ b/3rd-party/vleserver_basex @@ -0,0 +1 @@ +Subproject commit b360d4f75dce022caf8e018b913336f237ed5b46 From dc349542d197930689ebbfc449ded3dc0c676b5e Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 27 Jun 2023 13:21:59 +0200 Subject: [PATCH 036/183] Change initial setup and openapi module path to match new directory layout --- deployment/initial.sh | 25 ++++++++++++++++++++----- vicav.xqm | 2 +- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index eb69a895..744c3b22 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -13,20 +13,35 @@ cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings sed -e "s/local_password=.*/local_password='$local_password'/g" -i'' redeploy.settings if [ $branch_name == "devel" ] -then sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i'' redeploy.settings +then + +sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i'' redeploy.settings + +pushd 3rd-party/openapi4restxq +git checkout master_basex +git pull +popd + +pushd 3rd-party/vleserver_basex +git checkout main +git pull +popd + fi echo 'redeploy.settings content:' cat redeploy.settings + +pushd 3rd-party/openapi4restxq +npm install +mv node_modules resources +popd + if [ "${STACK}x" = "x" ]; then pushd lib/custom curl -LO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.2/Saxon-HE-12.2.jar curl -LO https://repo1.maven.org/maven2/org/xmlresolver/xmlresolver/5.1.3/xmlresolver-5.1.3.jar popd -pushd webapp -git clone https://github.com/acdh-oeaw/openapi4restxq -popd - if [ "$OSTYPE" == "msys" -o "$OSTYPE" == "win32" ] then cd bin diff --git a/vicav.xqm b/vicav.xqm index 503c2239..848b881b 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -9,7 +9,7 @@ declare namespace tei = 'http://www.tei-c.org/ns/1.0'; declare namespace dcterms = "http://purl.org/dc/terms/"; declare namespace prof = "http://basex.org/modules/prof"; -import module namespace openapi="https://lab.sub.uni-goettingen.de/restxqopenapi" at "../openapi4restxq/content/openapi.xqm"; +import module namespace openapi="https://lab.sub.uni-goettingen.de/restxqopenapi" at "3rd-party/openapi4restxq/content/openapi.xqm"; declare %rest:path('/vicav/openapi.json') From 3d65502ab7308c4202d2e3bbc3ad083bcd2994f7 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 27 Jun 2023 13:51:16 +0200 Subject: [PATCH 037/183] Where to find the submodules --- .gitmodules | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .gitmodules diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..5b2e925c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,6 @@ +[submodule "openapi4restxq"] + path = 3rd-party/openapi4restxq + url = https://github.com/acdh-oeaw/openapi4restxq.git +[submodule "vleserver_basex"] + path = 3rd-party/vleserver_basex + url = https://github.com/acdh-oeaw/vleserver_basex.git \ No newline at end of file From f4fd89e923dda82a3d2404e3ed03c14ce513c2c9 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 28 Jun 2023 17:25:33 +0200 Subject: [PATCH 038/183] Need to change directories way more often --- deployment/initial.sh | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index 744c3b22..6c70951a 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -5,17 +5,20 @@ CONTENT_BRANCH=${CONTENT_BRANCH:-master} branch_name=$(git rev-parse --abbrev-ref HEAD) cp -Rv ./deployment/* ${1:-../../} npm install -cd ${1:-../../} +pushd ${1:-../../} source data/credentials local_password=${BASEX_admin_pw:-admin} git clone $CONTENT_REPO -b $CONTENT_BRANCH cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings sed -e "s/local_password=.*/local_password='$local_password'/g" -i'' redeploy.settings -if [ $branch_name == "devel" ] +popd +if [ $branch_name == "59-add-interactive-openapi-documentation" ] then - + +pushd ${1:-../../} sed -e 's/onlytags=true.*/onlytags=false # enable for production/g' -i'' redeploy.settings +popd pushd 3rd-party/openapi4restxq git checkout master_basex @@ -28,14 +31,17 @@ git pull popd fi +pushd ${1:-../../} echo 'redeploy.settings content:' cat redeploy.settings +popd pushd 3rd-party/openapi4restxq npm install mv node_modules resources popd +pushd ${1:-../../} if [ "${STACK}x" = "x" ]; then pushd lib/custom curl -LO https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/12.2/Saxon-HE-12.2.jar From 1020ed94bfb74fcc2cfa18480045b592ef7a48ea Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 28 Jun 2023 17:54:25 +0200 Subject: [PATCH 039/183] Disable the error handler in the copied api-problem module The one in vleserver_basex will be used. Update version of vle server API. --- 3rd-party/vleserver_basex | 2 +- api-problem.xqm | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/3rd-party/vleserver_basex b/3rd-party/vleserver_basex index b360d4f7..de3ad575 160000 --- a/3rd-party/vleserver_basex +++ b/3rd-party/vleserver_basex @@ -1 +1 @@ -Subproject commit b360d4f75dce022caf8e018b913336f237ed5b46 +Subproject commit de3ad575a2c0a1b9f6f21f161e7181af4491eb84 diff --git a/api-problem.xqm b/api-problem.xqm index 1e51bb45..bcce41e2 100644 --- a/api-problem.xqm +++ b/api-problem.xqm @@ -187,7 +187,7 @@ declare %private function _:runtime($start as xs:integer) { ((prof:current-ns() - $start) idiv 10000) div 100 }; -declare +(: declare :) (: use when there is another error handler :) (: %rest:error('Q{https://tools.ietf.org/html/rfc7231#section-6}*') :) (: use when this is the only error handler :) @@ -196,7 +196,7 @@ declare You could declare all of them in this module or you could add a call to a lookup function in your module(s) that will resolve the xs:string to an xs:QName. :) - %rest:error('*') +(: %rest:error('*') %rest:error-param("code", "{$code}") %rest:error-param("description", "{$description}") %rest:error-param("value", "{$value}") @@ -204,7 +204,7 @@ declare %rest:error-param("line-number", "{$line-number}") %rest:error-param("column-number", "{$column-number}") %rest:error-param("additional", "{$additional}") -function _:error-handler($code as xs:string, $description, $value, $module, $line-number, $column-number, $additional) as item()+ { + function _:error-handler($code as xs:string, $description, $value, $module, $line-number, $column-number, $additional) as item()+ { let $start-time-ns := prof:current-ns(), $origin := try { req:header("Origin") } catch basex:http {'urn:local'}, $type := try { @@ -234,7 +234,7 @@ function _:error-handler($code as xs:string, $description, $value, $module, $lin {if ($_:enable_trace) then {replace(replace($additional, '^.*Stopped at ', '', 's'), ':\n.*($|(\n\nStack Trace:(\n)))', '$3')} else ()} , if (exists($origin)) then map{"Access-Control-Allow-Origin": $origin, "Access-Control-Allow-Credentials": "true"} else ()) -}; +}; :) declare %private function _:on_accept_to_json($problem as element(rfc7807:problem)) { let $objects := string-join($problem//*[*[local-name() ne '_']]/local-name(), ' '), From 275b7c08a77d3d9f5a79a59c19001d406d575ff6 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 29 Jun 2023 12:16:42 +0200 Subject: [PATCH 040/183] Configure swagger-ui --- deployment/initial.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/deployment/initial.sh b/deployment/initial.sh index 6c70951a..cdad7919 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -39,6 +39,7 @@ popd pushd 3rd-party/openapi4restxq npm install mv node_modules resources +rm content/openapi-test*.xqm popd pushd ${1:-../../} From bda60799bf53241e814fe79c963646a155b37fdb Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 29 Jun 2023 12:58:14 +0200 Subject: [PATCH 041/183] List hidden REST API functions Update the openapi4restxq generator to support that --- 3rd-party/openapi4restxq | 2 +- openapi-config.xml | 28 ++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/3rd-party/openapi4restxq b/3rd-party/openapi4restxq index b3ba4335..a30e0901 160000 --- a/3rd-party/openapi4restxq +++ b/3rd-party/openapi4restxq @@ -1 +1 @@ -Subproject commit b3ba4335d3a6a1b7af402d39616a5821239d0b2c +Subproject commit a30e09017e53af830c601f2cfa5c39c5aae980db diff --git a/openapi-config.xml b/openapi-config.xml index f4ee50db..ea6bcc2b 100644 --- a/openapi-config.xml +++ b/openapi-config.xml @@ -13,8 +13,32 @@ SwaggerHub API Auto Mocking - - Operations available without authentication + + API Problem and JSON HAL based API for querying dictionary like XML datasets. + + + + + + + + + + + + + + + + + + + + + + + +
    diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index 8b99894f..17eea073 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -18,80 +18,86 @@ - - + - - - - - - -
    - -
    - - - - - - - - - - - - - -
    -
    + + + + + + +
    + + + - + + - + - + - -
    -
    - - - - - - - - - - - - -
    -
    - + + + + + + + + + + + - + + + + + + + + + + + + - + + + +
    +
    - - + + + + + <_ type="object"> - + + + <_ type="string"> + + diff --git a/xslt/corpus_utterances.xslt b/xslt/corpus_utterances.xslt index 7471d529..6b0bf4b2 100644 --- a/xslt/corpus_utterances.xslt +++ b/xslt/corpus_utterances.xslt @@ -4,27 +4,40 @@ xmlns="http://www.w3.org/1999/xhtml" xmlns:tei="http://www.tei-c.org/ns/1.0" version="2.0"> + + +
    -
    +
    +
    + +
    +
    - - - - - - - - - - - - - + + + + + + hit + + + + + + + + + + - + +
    - +
    diff --git a/xslt/corpus_utterances_json.xslt b/xslt/corpus_utterances_json.xslt index 7b775379..ef1f767c 100644 --- a/xslt/corpus_utterances_json.xslt +++ b/xslt/corpus_utterances_json.xslt @@ -6,6 +6,7 @@ + @@ -15,12 +16,23 @@ +
    +
    + +
    +
    - + + + + + + + @@ -31,6 +43,7 @@ - +
    From 0f39364ca10ffc2ed540092f1d8f30add2dee3dd Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 24 Aug 2023 13:26:43 +0200 Subject: [PATCH 076/183] Update mapbox access to use acdh-ch-tech account --- js/vicav_funcs.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/js/vicav_funcs.js b/js/vicav_funcs.js index aec1bcb4..67937619 100644 --- a/js/vicav_funcs.js +++ b/js/vicav_funcs.js @@ -168,10 +168,10 @@ L.Icon.Default.prototype.options.iconAnchor = [2, 35]; // we use a cop of the North Star map style: https://blog.mapbox.com/designing-north-star-c8574e299c94 // mapbox://styles/osiam/cl4mxp3zk003v15ufbeb1ynbc -// to copy and edit the VICAV North Star style use this link https://api.mapbox.com/styles/v1/osiam/cl4mxp3zk003v15ufbeb1ynbc.html?title=copy&access_token=pk.eyJ1Ijoib3NpYW0iLCJhIjoiY2pmMnVpZTV3MDFpNjJxbHQxb2Nna25ldiJ9.mlqREmow6onk_Zfco-qDHA&zoomwheel=true&fresh=true#4.6/31.38/26.74 +// to copy and edit the VICAV North Star style use this link https://api.mapbox.com/styles/v1/acdh-ch-tech/cllp2n7aj004a01r7fl637bq1.html?title=copy&access_token=pk.eyJ1IjoiYWNkaC1jaC10ZWNoIiwiYSI6ImNsZXpnMDdpODBlc2Q0MGwzOGZmaWNveDgifQ.yYx8e9PdsDl-NzOpGXAL7g&zoomwheel=true&fresh=true#4.6/31.38/26.74 // map style from acetin ~2017 https://api.mapbox.com/styles/v1/acetin/cjb22mkrf16qf2spyl3u1vee3.html?title=copy&access_token=pk.eyJ1IjoiYWNldGluIiwiYSI6ImNqYjIybG5xdTI4OWYyd285dmsydGFkZWQifQ.xG4sN5u8h-BoXaej6OjkXw&zoomwheel=true&fresh=true#4.6/31.38/26.74 var mainMap = L.map('dvMainMap').setView([19.064, 24.544], 4); -L.tileLayer('https://api.mapbox.com/styles/v1/osiam/cl4mxp3zk003v15ufbeb1ynbc/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1Ijoib3NpYW0iLCJhIjoiY2w0bXg1bnNkMTBlODNjcXBvNW95YXJxMyJ9.ZiEUkkjVe2jzAlHZTRcJXA', { +L.tileLayer('https://api.mapbox.com/styles/v1/acdh-ch-tech/cllp2n7aj004a01r7fl637bq1/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1IjoiYWNkaC1jaC10ZWNoIiwiYSI6ImNsZXpnMDdpODBlc2Q0MGwzOGZmaWNveDgifQ.yYx8e9PdsDl-NzOpGXAL7g', { maxZoom: 20, attribution: 'Map data © OpenStreetMap contributors, ' + 'CC-BY-SA, ' + From 46fd008c0ea694332a9c21c11a7630773d95a6d7 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 29 Aug 2023 18:12:39 +0200 Subject: [PATCH 077/183] Document and enhance TEI static text endpoint --- vicav.xqm | 53 +++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 43 insertions(+), 10 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index ace35706..0d43e9ce 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -8,9 +8,22 @@ declare namespace dc = 'http://purl.org/dc/elements/1.1/'; declare namespace tei = 'http://www.tei-c.org/ns/1.0'; declare namespace dcterms = "http://purl.org/dc/terms/"; declare namespace prof = "http://basex.org/modules/prof"; +declare namespace response-codes = "https://tools.ietf.org/html/rfc7231#section-6"; +declare namespace test = "http://exist-db.org/xquery/xqsuite"; import module namespace openapi="https://lab.sub.uni-goettingen.de/restxqopenapi" at "3rd-party/openapi4restxq/content/openapi.xqm"; +(:~ + : VICAV API + : + : An API for retrieving the various VICAV TEI documents rendered either as XHTML snippets or JSON + :) + +(:~ + : get the API description + : + : OpenAPI 3.0 JSON description of the API + :) declare %rest:path('/vicav/openapi.json') %rest:produces('application/json') @@ -575,24 +588,44 @@ function vicav:explore_samples( $sHTML) }; +(:~ + : get a description text + : + : Retrieve a description TEI text found in the DB. + : + : @param $id ID of a description TEI text found in the DB. + : May start with li_ + : @param $xsltfn XSL used to rencer the TEI (defaults to vicavTexts.xslt) + : + : @return A rendered HTML of the description TEI text. + :) declare %rest:path("/vicav/text") %rest:query-param("id", "{$id}") -%rest:query-param("xslt", "{$xsltfn}", "/vicavTexts.xslt") +%test:arg("id", "li_vicavMission") +%rest:query-param("xslt", "{$xsltfn}", "vicavTexts.xslt") %rest:GET +%rest:produces("application/xml") +%rest:produces('application/problem+json') +%rest:produces('application/problem+xml') +function vicav:get_text($id as xs:string, $xsltfn as xs:string?) { + api-problem:or_result (prof:current-ns(), + vicav:_get_text#2, [$id, $xsltfn], map:merge((cors:header(()), vicav:return_content_header())) + ) +}; -function vicav:get_text($id as xs:string*, $xsltfn as xs:string) { - let $ns := "declare namespace tei = 'http://www.tei-c.org/ns/1.0';" - let $q := 'collection("/vicav_texts")//tei:div[@xml:id="' || $id || '"]' - let $query := $ns || $q - let $results := parse-xml(serialize(xquery:eval($query), map {'method': 'xml', 'indent': 'yes'})) +declare function vicav:_get_text($id as xs:string, $xsltfn as xs:string?) { + let $id := replace($id, '^li_', '') + let $xsltfn := if (exists($xsltfn)) then $xsltfn else "vicavTexts.xslt" + let $results := collection("/vicav_texts")//tei:div[@xml:id=$id] + let $notFound := if (not(exists($results))) then + error(xs:QName('response-codes:_404'), + $api-problem:codes_to_message(404), + 'Text with id '||$id||' does not exist') else () let $stylePath := file:base-dir() || 'xslt/' || $xsltfn let $style := doc($stylePath) let $sHTML := xslt:transform-text($results, $style) - return - (web:response-header(map {'method': 'basex'}, map:merge((cors:header(()), vicav:return_content_header()))), - $sHTML) - + return $sHTML }; declare From 136cf7a1182b0804127336bb4b0149b88d0c9c9b Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 5 Sep 2023 17:45:40 +0200 Subject: [PATCH 078/183] Add the label lookup table and use that to provide a window title/label --- xslt/menu-json.xslt | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 98fe9b0e..783e6a22 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -3,6 +3,45 @@ + + @@ -56,6 +95,9 @@ UnknownTypeWarning + From 2ffbff1ea861f38d97a9c05a0a60071b01793051 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 5 Sep 2023 17:47:33 +0200 Subject: [PATCH 079/183] Create data attributes on links that contain the target type, id and label Also provide the query if needed for that kind of window. --- xslt/vicavTexts.xslt | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index b9dc470e..727787e5 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -2,9 +2,39 @@ xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0" + xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all" version="2.0" > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -190,6 +220,7 @@ + @@ -209,6 +240,7 @@ starts-with(@target,'sample:')]"> javascript:getDBSnippet("", this) +
    @@ -228,9 +260,11 @@ javascript:getDBSnippet("", this) + javascript:getDBSnippet("", this) + @@ -239,6 +273,7 @@ + @@ -254,6 +289,7 @@ + From ac15fd6d35813cd8f1cdbd06d39dc263d1380dcb Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 5 Sep 2023 17:48:17 +0200 Subject: [PATCH 080/183] Add an identity transform to get the source of the transformation more easily --- xslt/identity.xslt | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 xslt/identity.xslt diff --git a/xslt/identity.xslt b/xslt/identity.xslt new file mode 100644 index 00000000..8b4bd993 --- /dev/null +++ b/xslt/identity.xslt @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file From dbd9633c81f5d2dca75290047f1f8073ec407e1a Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 19 Sep 2023 15:24:28 +0200 Subject: [PATCH 081/183] Need to give priority to one of the attributes --- xslt/menu-json.xslt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 783e6a22..02205714 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -96,7 +96,7 @@ From 3070041bc25d134c0815837132daec1bf39d4837 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 19 Sep 2023 15:47:46 +0200 Subject: [PATCH 082/183] Other way round --- xslt/menu-json.xslt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 02205714..8db94964 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -96,7 +96,7 @@ From 650a85fdf3cd44d6e5f39ffac87dd16fd1f07403 Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Wed, 20 Sep 2023 17:18:31 +0200 Subject: [PATCH 083/183] Fix issue caused by duplicate token ID --- xslt/corpus_search_result.xslt | 8 +++++--- xslt/corpus_search_result_json.xslt | 9 +++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/xslt/corpus_search_result.xslt b/xslt/corpus_search_result.xslt index 9bb3711a..c2428071 100644 --- a/xslt/corpus_search_result.xslt +++ b/xslt/corpus_search_result.xslt @@ -27,10 +27,12 @@ - + + + + + - -
    diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index 17eea073..6566dc97 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -22,12 +22,13 @@ - + - + + Error: duplicate token ID + + - -
    From 30a78b4d33e480470ec1d2ab21f0b1e8608efa3c Mon Sep 17 00:00:00 2001 From: Mau Zsofia Abraham Date: Wed, 20 Sep 2023 17:22:35 +0200 Subject: [PATCH 084/183] Different syntax for json version --- xslt/corpus_search_result_json.xslt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index 6566dc97..c6ca6523 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -25,7 +25,7 @@ - Error: duplicate token ID + Error: duplicate token ID From 3d1d465bc7980e4be3e36c521de0db6b8d1bf81f Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 22 Sep 2023 13:39:03 +0200 Subject: [PATCH 085/183] Convenience changes --- deployment/initial-shawi.sh | 5 +++++ deployment/initial.sh | 2 ++ 2 files changed, 7 insertions(+) create mode 100755 deployment/initial-shawi.sh diff --git a/deployment/initial-shawi.sh b/deployment/initial-shawi.sh new file mode 100755 index 00000000..31308df6 --- /dev/null +++ b/deployment/initial-shawi.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +CONTENT_REPO=${CONTENT_REPO:-https://github.com/acdh-oeaw/shawi-data} +CONTENT_BRANCH=${CONTENT_BRANCH:-main} +source ./$(dirname $0)/initial.sh \ No newline at end of file diff --git a/deployment/initial.sh b/deployment/initial.sh index 6f52e300..cf959fed 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -4,6 +4,8 @@ CONTENT_REPO=${CONTENT_REPO:-https://github.com/acdh-oeaw/vicav-content} CONTENT_BRANCH=${CONTENT_BRANCH:-master} PORT=${PORT:-8984} branch_name=$(git rev-parse --abbrev-ref HEAD) +# Just do that again in case the user didn't remember +git submodule update --init cp -Rv ./deployment/* ${1:-../../} npm install pushd ${1:-../../} From c677c2b446fb7232ef9969fb022d36f2cdffb0cf Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 22 Sep 2023 13:49:50 +0200 Subject: [PATCH 086/183] By default do not install dev dependencies --- deployment/initial.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index cf959fed..e9754911 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -7,7 +7,7 @@ branch_name=$(git rev-parse --abbrev-ref HEAD) # Just do that again in case the user didn't remember git submodule update --init cp -Rv ./deployment/* ${1:-../../} -npm install +npm install --production pushd ${1:-../../} source data/credentials local_password=${BASEX_admin_pw:-admin} From 4f82446e345604b2cfa61ccb019856486911483f Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 22 Sep 2023 13:51:24 +0200 Subject: [PATCH 087/183] Limit data clone depth --- deployment/initial.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployment/initial.sh b/deployment/initial.sh index e9754911..72ca0871 100755 --- a/deployment/initial.sh +++ b/deployment/initial.sh @@ -11,7 +11,7 @@ npm install --production pushd ${1:-../../} source data/credentials local_password=${BASEX_admin_pw:-admin} -git clone $CONTENT_REPO -b $CONTENT_BRANCH +git clone $CONTENT_REPO -b $CONTENT_BRANCH --depth=10 cp -Rv ./*-{content,data}/deployment/* . mv redeploy.settings.dist redeploy.settings sed -e "s~local_password=.*~local_password='$local_password'~g" -i'' redeploy.settings From 4b6beab7926f4d68bdda906159ac70a0e6bcf422 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 26 Sep 2023 14:06:13 +0200 Subject: [PATCH 088/183] Fix: Accept multiple scope (an array of scopes) for bibl_markers_tei This is a fix for vicav-app-api/issues/6 --- vicav.xqm | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 8b3139ce..effc5e65 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1046,19 +1046,19 @@ return declare %rest:path("/vicav/bibl_markers_tei") %rest:query-param("query", "{$query}") -%rest:query-param("scope", "{$scope}") +%rest:query-param("scope", "{$scope}", "geo", "reg", "diaGroup") %rest:GET %rest:produces("application/xml") %rest:produces("application/json") %rest:produces('application/problem+json') %rest:produces('application/problem+xml') -function vicav:get_bibl_markers_tei($query as xs:string, $scope as xs:string) { +function vicav:get_bibl_markers_tei($query as xs:string, $scope as xs:string+) { api-problem:or_result (prof:current-ns(), vicav:_get_bibl_markers_tei#2, [$query, $scope], map:merge((cors:header(()), vicav:return_content_header())) ) }; -declare function vicav:_get_bibl_markers_tei($query as xs:string, $scope as xs:string) { +declare function vicav:_get_bibl_markers_tei($query as xs:string, $scope as xs:string+) { let $accept-header := try { request:header("ACCEPT") } catch basex:http { 'application/xhtml+xml' } let $queries := tokenize($query, '\+') let $qs := @@ -1102,10 +1102,10 @@ declare function vicav:_get_bibl_markers_tei($query as xs:string, $scope as xs:s let $tempresults := xquery:eval($query) let $out := - for $subj at $icnt in $tempresults + for $subj in $tempresults return let $geos := - switch ($scope) + $scope!(switch (.) case 'geo_reg' return $subj/tei:note/tei:note[(tei:name/@type = 'reg') or (tei:name/@type = 'geo') or (tei:name/@type = 'diaGroup')][tei:geo] case 'geo' @@ -1114,7 +1114,7 @@ declare function vicav:_get_bibl_markers_tei($query as xs:string, $scope as xs:s return $subj/tei:note/tei:note[tei:name/@type = 'diaGroup'][tei:geo] case 'reg' return $subj/tei:note/tei:note[tei:name/@type = 'reg'][tei:geo] - default return () + default return ()) for $geo in $geos return From c5282520a999777523e104c6b00e683acab15d93 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Wed, 27 Sep 2023 18:56:19 +0200 Subject: [PATCH 089/183] Get a base URI for an API call and add that to links to assets that should be fetched from this server --- vicav.xqm | 3 ++- xslt/menu-json.xslt | 8 +++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index effc5e65..eb8625de 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -12,6 +12,7 @@ declare namespace response-codes = "https://tools.ietf.org/html/rfc7231#section- declare namespace test = "http://exist-db.org/xquery/xqsuite"; import module namespace openapi="https://lab.sub.uni-goettingen.de/restxqopenapi" at "3rd-party/openapi4restxq/content/openapi.xqm"; +import module namespace util = "https://www.oeaw.ac.at/acdh/tools/vle/util" at "3rd-party/vleserver_basex/vleserver/util.xqm"; (:~ : VICAV API @@ -119,7 +120,7 @@ function vicav:_project_config() { let $path := 'vicav_projects/' || vicav:get_project_name() || '.xml' let $config := if (doc-available($path)) then doc($path)/projectConfig else return if (matches($accept-header, '[+/]json')) - then let $renderedJson := xslt:transform($config, 'xslt/menu-json.xslt') + then let $renderedJson := xslt:transform($config, 'xslt/menu-json.xslt', map{'baseURIPublic': util:get-base-uri-public()}) return serialize($renderedJson, map {"method": "json"}) else let $renderedMenu := xslt:transform($config/menu, 'xslt/menu.xslt') return {$config}{$renderedMenu} diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 8db94964..ed543133 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -3,6 +3,8 @@ + + - + @@ -173,6 +175,10 @@ + + + + From 66ff5e8d9572a167776974181ee291dd128e6ce7 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 28 Sep 2023 13:11:58 +0200 Subject: [PATCH 090/183] Produce full URLs for assets in project config and texts. --- vicav.xqm | 4 ++-- xslt/menu-json.xslt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index eb8625de..9171a8a7 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -120,7 +120,7 @@ function vicav:_project_config() { let $path := 'vicav_projects/' || vicav:get_project_name() || '.xml' let $config := if (doc-available($path)) then doc($path)/projectConfig else return if (matches($accept-header, '[+/]json')) - then let $renderedJson := xslt:transform($config, 'xslt/menu-json.xslt', map{'baseURIPublic': util:get-base-uri-public()}) + then let $renderedJson := xslt:transform($config, 'xslt/menu-json.xslt', map{'baseURIPublic': replace(util:get-base-uri-public(), '/project', '')}) return serialize($renderedJson, map {"method": "json"}) else let $renderedMenu := xslt:transform($config/menu, 'xslt/menu.xslt') return {$config}{$renderedMenu} @@ -625,7 +625,7 @@ declare function vicav:_get_text($id as xs:string, $xsltfn as xs:string?) { 'Text with id '||$id||' does not exist') else () let $stylePath := file:base-dir() || 'xslt/' || $xsltfn let $style := doc($stylePath) - let $sHTML := xslt:transform-text($results, $style) + let $sHTML := xslt:transform-text($results, $style, map{'param-images-base-path': replace(util:get-base-uri-public()||'/images', '/text', '')}) return $sHTML }; diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index ed543133..b0a430fb 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -176,7 +176,7 @@ - + From 3aa22820375f411d91213b6506ad953cadcb7b8f Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 28 Sep 2023 22:35:33 +0200 Subject: [PATCH 091/183] profile_markers endpoint uses different type names for the same concepts --- xslt/bibl-markers-json.xslt | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/xslt/bibl-markers-json.xslt b/xslt/bibl-markers-json.xslt index a994eb5c..39f095e5 100644 --- a/xslt/bibl-markers-json.xslt +++ b/xslt/bibl-markers-json.xslt @@ -5,7 +5,7 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:err="http://www.w3.org/2005/xqt-errors" exclude-result-prefixes="xd _ xs err" - version="2.0"> + version="3.1"> Created on: May 5, 2023 @@ -20,6 +20,13 @@ + + One marker @@ -43,7 +50,7 @@ - + From 26d9fcd45197843ef701d898306a9c5410a38530 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 28 Sep 2023 22:49:30 +0200 Subject: [PATCH 092/183] Hit count can only be a number --- xslt/bibl-markers-json.xslt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xslt/bibl-markers-json.xslt b/xslt/bibl-markers-json.xslt index 39f095e5..f39b1c17 100644 --- a/xslt/bibl-markers-json.xslt +++ b/xslt/bibl-markers-json.xslt @@ -15,7 +15,7 @@ - + From b1347890085e68dd37e8ca648b4f63d5ceb359f3 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 29 Sep 2023 10:28:33 +0200 Subject: [PATCH 093/183] Return alt if it is specified in addition to locName --- xslt/bibl-markers-json.xslt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xslt/bibl-markers-json.xslt b/xslt/bibl-markers-json.xslt index f39b1c17..e99ee00f 100644 --- a/xslt/bibl-markers-json.xslt +++ b/xslt/bibl-markers-json.xslt @@ -51,7 +51,10 @@ - + + + + From f3c2bf38e7acdb4d024800c8ae36d878186c9245 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 29 Sep 2023 10:41:45 +0200 Subject: [PATCH 094/183] Fix the hard coded one off dict_markers endpoint --- vicav.xqm | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 9171a8a7..88df2c5d 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1435,8 +1435,14 @@ declare function vicav:_get_feature_markers() { declare %rest:path("/vicav/data_markers") %rest:GET - function vicav:get_all_data_markers() { + api-problem:or_result (prof:current-ns(), + vicav:_get_all_data_markers#0, [], map:merge((cors:header(()), vicav:return_content_header())) + ) +}; + +declare function vicav:_get_all_data_markers() { + let $accept-header := try { request:header("ACCEPT") } catch basex:http { 'application/xhtml+xml' } let $entries := for $c in ('vicav_profiles', 'vicav_samples', 'vicav_lingfeatures') return collection($c)/descendant::tei:TEI @@ -1462,9 +1468,10 @@ function vicav:get_all_data_markers() { else '' - return - (web:response-header(map {'method': 'xml'}, map:merge((cors:header(()), vicav:return_content_header()))), - {$out}) + return if (matches($accept-header, '[+/]json')) + then let $renderedJson := xslt:transform(<_>{$out}, 'xslt/bibl-markers-json.xslt') + return serialize($renderedJson, map {"method": "json"}) + else {$out} }; @@ -1783,9 +1790,9 @@ declare function vicav:_get_dict_markers() { "coordinates": [30.05, 31.23] }, "properties": map{ - "type": "dict", + "type": "reg", "name": "Cairo", - "hitCount": "1" + "hitCount": 1 }}, map { "type": "Feature", @@ -1794,9 +1801,9 @@ declare function vicav:_get_dict_markers() { "coordinates": [33.51, 36.29] }, "properties": map{ - "type": "dict", + "type": "reg", "name": "Damascus", - "hitCount": "1" + "hitCount": 1 }}, map { "type": "Feature", @@ -1805,9 +1812,9 @@ declare function vicav:_get_dict_markers() { "coordinates": [36.8, 10.18] }, "properties": map{ - "type": "dict", + "type": "reg", "name": "Tunis", - "hitCount": "1" + "hitCount": 1 }}, map { "type": "Feature", @@ -1816,9 +1823,9 @@ declare function vicav:_get_dict_markers() { "coordinates": [33.33, 44.38] }, "properties": map{ - "type": "dict", + "type": "reg", "name": "Baghdad", - "hitCount": "1" + "hitCount": 1 }} ], map{"method": "json"}) }; \ No newline at end of file From 80a310df0fa2621ac5f7da412c0b383eda0cb5fd Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 29 Sep 2023 14:54:34 +0200 Subject: [PATCH 095/183] Settle for a common reference to reference windows from other UI elements and other fixes Standardize on common target identifiers for windows, menu entries and nav bar entries. Menu entries for dictionaries lead to a front page/explanation of that dictionary, so to a text. Change the captions to mixed case. Calling toUpperCase in JS is trivial, the other way round not so much. --- xslt/menu-json.xslt | 83 ++++++++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 35 deletions(-) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index b0a430fb..8a605ccf 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -1,4 +1,6 @@ @@ -6,43 +8,48 @@ + 'vicavLinguistics': 'Linguistics', + 'vicavMission': 'Mission', + 'vicavNews': 'VICAV News', + 'vicavTypesOfText': 'Types of Text'}"/> + + + + + @@ -88,7 +95,7 @@ DataList WMap - DictQuery + Text Text SampleText BiblioQuery @@ -98,7 +105,8 @@ @@ -175,6 +183,11 @@ + + + + + From 4f1388590a0ff3a0ef51826ecc73ff5b6919bf9a Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 29 Sep 2023 14:55:23 +0200 Subject: [PATCH 096/183] Fix order of coordinates for dictionaries --- vicav.xqm | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 88df2c5d..169f1e81 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1787,7 +1787,10 @@ declare function vicav:_get_dict_markers() { "type": "Feature", "geometry": map { "type": "Point", - "coordinates": [30.05, 31.23] + "coordinates": [ + 31.233333333333334, + 30.05 + ] }, "properties": map{ "type": "reg", @@ -1798,7 +1801,10 @@ declare function vicav:_get_dict_markers() { "type": "Feature", "geometry": map { "type": "Point", - "coordinates": [33.51, 36.29] + "coordinates": [ + 36.28333333333333, + 33.5 + ] }, "properties": map{ "type": "reg", @@ -1809,7 +1815,10 @@ declare function vicav:_get_dict_markers() { "type": "Feature", "geometry": map { "type": "Point", - "coordinates": [36.8, 10.18] + "coordinates": [ + 10.15, + 36.81666666666667 + ] }, "properties": map{ "type": "reg", @@ -1820,7 +1829,10 @@ declare function vicav:_get_dict_markers() { "type": "Feature", "geometry": map { "type": "Point", - "coordinates": [33.33, 44.38] + "coordinates":[ + 44.4, + 33.333333333333336 + ] }, "properties": map{ "type": "reg", From 9213b191fff0718a684202062460aa72315ceddf Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 29 Sep 2023 15:35:11 +0200 Subject: [PATCH 097/183] Target for the dictionaries is the front page text --- xslt/menu-json.xslt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 8a605ccf..431e38f4 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -48,7 +48,11 @@ - + + + + + From 8fd9946327a76fc225f03bc6bc927941b86b50b9 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 29 Sep 2023 16:21:31 +0200 Subject: [PATCH 098/183] Generate data attributes for Dictionary Query links --- xslt/vicavTexts.xslt | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index 727787e5..43a31740 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -6,17 +6,32 @@ exclude-result-prefixes="#all" version="2.0" > + + - - - - - - - - + + + + + + + + + + + + + + + From 2eea4e6f943ff24e0222c0f65a5b10fea8ba6753 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 3 Oct 2023 13:14:07 +0200 Subject: [PATCH 099/183] Try to parse more TEI links into data attributes Reuse the ID to label mapping. --- xslt/menu-json.xslt | 41 ++----------------------------------- xslt/vicavIDToLabel.xslt | 44 ++++++++++++++++++++++++++++++++++++++++ xslt/vicavTexts.xslt | 7 ++++++- 3 files changed, 52 insertions(+), 40 deletions(-) create mode 100644 xslt/vicavIDToLabel.xslt diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 431e38f4..7157d3a1 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -6,45 +6,8 @@ - - + + diff --git a/xslt/vicavIDToLabel.xslt b/xslt/vicavIDToLabel.xslt new file mode 100644 index 00000000..6f910b41 --- /dev/null +++ b/xslt/vicavIDToLabel.xslt @@ -0,0 +1,44 @@ + + + + \ No newline at end of file diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index 43a31740..74bef6b4 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -6,6 +6,8 @@ exclude-result-prefixes="#all" version="2.0" > + + + + + @@ -41,7 +46,7 @@ - + From f44e06bb21c2718dd2f05bbc5fdd552fcbf1f93c Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Mon, 16 Oct 2023 13:51:50 +0200 Subject: [PATCH 100/183] Fix decoding of text endpoint JS snippets The label part was not deleted. Also do not generate data attributes for data we don't have. --- xslt/vicavTexts.xslt | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index 74bef6b4..415c5a7d 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -24,7 +24,8 @@ - + + @@ -32,7 +33,7 @@ - + @@ -47,8 +48,12 @@ - - + + + + + + From 98fddbf29049126d859c841e3e08d81b5863b1e0 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Mon, 16 Oct 2023 14:11:46 +0200 Subject: [PATCH 101/183] Do not generate the table with the teiLink marker for the new UI --- vicav.xqm | 7 +++-- xslt/vicavTexts.xslt | 71 +++++++++++++++++++++++++------------------- 2 files changed, 45 insertions(+), 33 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 169f1e81..53a53d29 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -604,7 +604,7 @@ declare %rest:path("/vicav/text") %rest:query-param("id", "{$id}") %test:arg("id", "li_vicavMission") -%rest:query-param("xslt", "{$xsltfn}", "vicavTexts.xslt") +%rest:query-param("xslt", "{$xsltfn}") %rest:GET %rest:produces("application/xml") %rest:produces('application/problem+json') @@ -617,6 +617,7 @@ function vicav:get_text($id as xs:string, $xsltfn as xs:string?) { declare function vicav:_get_text($id as xs:string, $xsltfn as xs:string?) { let $id := replace($id, '^li_', '') + let $generateTeiMarker := exists($xsltfn) let $xsltfn := if (exists($xsltfn)) then $xsltfn else "vicavTexts.xslt" let $results := collection("/vicav_texts")//tei:div[@xml:id=$id] let $notFound := if (not(exists($results))) then @@ -625,7 +626,9 @@ declare function vicav:_get_text($id as xs:string, $xsltfn as xs:string?) { 'Text with id '||$id||' does not exist') else () let $stylePath := file:base-dir() || 'xslt/' || $xsltfn let $style := doc($stylePath) - let $sHTML := xslt:transform-text($results, $style, map{'param-images-base-path': replace(util:get-base-uri-public()||'/images', '/text', '')}) + let $sHTML := xslt:transform-text($results, $style, map{ + 'param-images-base-path': replace(util:get-base-uri-public()||'/images', '/text', ''), + 'tei-link-marker': xs:string($generateTeiMarker)}) return $sHTML }; diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index 415c5a7d..71ac27e1 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -5,7 +5,27 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" exclude-result-prefixes="#all" version="2.0" > - + + + + + images + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + +
    @@ -146,11 +146,20 @@ - - -

    - -

    {teiLink}
    + + + + +

    + +

    {teiLink}
    +
    + +

    + +

    +
    +

    From 8fdeb410333e4ecf471712e0194c8ea4710159d1 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 17 Oct 2023 16:42:28 +0200 Subject: [PATCH 102/183] Fix: use full URL for docs --- vicav.xqm | 2 +- xslt/vicavTexts.xslt | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 53a53d29..4d1d3c90 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -627,7 +627,7 @@ declare function vicav:_get_text($id as xs:string, $xsltfn as xs:string?) { let $stylePath := file:base-dir() || 'xslt/' || $xsltfn let $style := doc($stylePath) let $sHTML := xslt:transform-text($results, $style, map{ - 'param-images-base-path': replace(util:get-base-uri-public()||'/images', '/text', ''), + 'param-base-path': replace(util:get-base-uri-public(), '/text', ''), 'tei-link-marker': xs:string($generateTeiMarker)}) return $sHTML }; diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index 71ac27e1..7550f6f8 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -9,23 +9,26 @@ - images + images - + + - + - - + + - + - - + + + + From d4a9f4b7ebb0711f32b173dcef4968e2710fa2f0 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 27 Oct 2023 16:19:18 +0200 Subject: [PATCH 103/183] Fix: Only remove prefixes not any occurrence in id for getting the target --- xslt/menu-json.xslt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 7157d3a1..bcf3e3a3 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -11,7 +11,7 @@ - + From 4db715fd26e873d21d11bb110767c352007c4006 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 9 Nov 2023 15:35:28 +0100 Subject: [PATCH 104/183] Change the json result so more rendering logic can be implemented in Vue. --- xslt/corpus_search_result_json.xslt | 38 +++++++++++++++++------------ xslt/serialize-html.xslt | 35 -------------------------- 2 files changed, 22 insertions(+), 51 deletions(-) delete mode 100644 xslt/serialize-html.xslt diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index c6ca6523..0bf9b796 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -1,13 +1,13 @@ + xmlns:tei="http://www.tei-c.org/ns/1.0" + exclude-result-prefixes="tei acdh" + version="2.0"> - - @@ -31,9 +31,9 @@ -
    - - + + + @@ -46,9 +46,12 @@ - - - - + + + + + + @@ -57,8 +60,11 @@ - - - + + + + + @@ -70,8 +76,9 @@ - - -
    +
    + +
    @@ -79,7 +86,7 @@ - + @@ -89,7 +96,6 @@ - <_ type="object"> @@ -99,7 +105,7 @@ <_ type="string"> - + diff --git a/xslt/serialize-html.xslt b/xslt/serialize-html.xslt deleted file mode 100644 index 16b0884b..00000000 --- a/xslt/serialize-html.xslt +++ /dev/null @@ -1,35 +0,0 @@ - - - - - < - - - - - > - - </ - - > - - - /> - - - - - - - - =" - - " - - - - - - \ No newline at end of file From eb844e4732692a73cb0aba85b393c6a65d4fd288 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 9 Nov 2023 16:42:36 +0100 Subject: [PATCH 105/183] Use same rendering method for corpus texts --- xslt/corpus_search_result_json.xslt | 4 +++- xslt/corpus_utterances_json.xslt | 14 ++++++++------ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index 0bf9b796..7600af8f 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -47,7 +47,7 @@
    - + @@ -62,6 +62,7 @@ + @@ -78,6 +79,7 @@ +
    diff --git a/xslt/corpus_utterances_json.xslt b/xslt/corpus_utterances_json.xslt index ef1f767c..e8862365 100644 --- a/xslt/corpus_utterances_json.xslt +++ b/xslt/corpus_utterances_json.xslt @@ -1,11 +1,11 @@ + xmlns:tei="http://www.tei-c.org/ns/1.0" + exclude-result-prefixes="tei acdh" + version="2.0"> - @@ -16,8 +16,8 @@ - - + +
    @@ -45,6 +45,8 @@
    +
    +
    @@ -54,7 +56,7 @@ <_ type="object"> - + From 8d76f0498d3aefb735c787f8c5ca54cf98c0a142 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 9 Nov 2023 16:47:37 +0100 Subject: [PATCH 106/183] Fix: double serialize... --- xslt/corpus_search_result_json.xslt | 2 -- 1 file changed, 2 deletions(-) diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index 7600af8f..cfee2c08 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -61,7 +61,6 @@ -
    - @@ -78,7 +77,6 @@
    - From b8bb65464ee21957f92fbfae3d133e50b3a756c4 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 9 Nov 2023 16:51:11 +0100 Subject: [PATCH 107/183] Use a npsp after kwic --- xslt/corpus_search_result_json.xslt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index cfee2c08..e3aea623 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -55,7 +55,7 @@ - +   - From e69007ddff9865a31c2bccb23908a8a1c58b2060 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 9 Nov 2023 17:59:57 +0100 Subject: [PATCH 108/183] Set data attributes for corpus text links --- xslt/vicavTexts.xslt | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index 7550f6f8..89c63e4e 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -45,11 +45,15 @@ - + + + + + @@ -292,7 +296,8 @@ starts-with(@ref,'bibl:') or starts-with(@ref,'flashcards:') or starts-with(@ref,'text:') or - starts-with(@ref,'sample:')]"> + starts-with(@ref,'sample:') or + starts-with(@ref,'corpusText:')]"> From 8adf9b04077ab1ece8d76baabca6fad570bc055a Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 10 Nov 2023 10:20:16 +0100 Subject: [PATCH 109/183] Only generate id and target from one source if the other is missing --- xslt/menu-json.xslt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index bcf3e3a3..8b530e52 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -150,6 +150,14 @@ + + + + + + + + From 3d6679240f3c5d08e9e1db33ff4bad2accca090a Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 16 Nov 2023 18:11:02 +0100 Subject: [PATCH 110/183] Enable searching for more than one word in corpus query Add a way to select any xslt for corpus search transformations, especially identity transformation for debugging. Start preparing data_list for json output. --- vicav.xqm | 39 +++++++++++++++++++++++++-------------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 4d1d3c90..3ff404b1 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1539,6 +1539,13 @@ declare %rest:query-param("type", "{$type}") %rest:GET function vicav:get_data_list($type as xs:string*) { + api-problem:or_result (prof:current-ns(), + vicav:_get_data_list#1, [$type], map:merge((cors:header(()), vicav:return_content_header())) + ) +}; + +declare function vicav:_get_data_list($type as xs:string*) { + let $accept-header := try { request:header("ACCEPT") } catch basex:http { 'application/xhtml+xml' } let $type := if (empty($type) or $type = '') then 'all' else $type let $items := if ($type = 'all') then for $c in ('vicav_profiles', 'vicav_samples', 'vicav_lingfeatures') return collection($c)/descendant::tei:TEI @@ -1547,7 +1554,7 @@ function vicav:get_data_list($type as xs:string*) { let $countries := distinct-values($items/tei:teiHeader/tei:profileDesc/tei:settingDesc/tei:place/tei:country) - let $out := if (count($countries) > 1) then + let $out :=
    Total: {count($items)}
    {if (count($countries) > 1) then for $country in $countries order by $country let $regions := distinct-values($items/tei:teiHeader/tei:profileDesc/tei:settingDesc/tei:place[./tei:country[./text() = $country]]/tei:region) @@ -1560,11 +1567,12 @@ function vicav:get_data_list($type as xs:string*) { let $regions := distinct-values($items/tei:teiHeader/tei:profileDesc/tei:settingDesc/tei:place/tei:region) for $region in $regions order by $region - return vicav:data_list_region($type, $region, $items[./tei:teiHeader/tei:profileDesc/tei:settingDesc/tei:place[./tei:region[./text() = $region]]]) + return vicav:data_list_region($type, $region, $items[./tei:teiHeader/tei:profileDesc/tei:settingDesc/tei:place[./tei:region[./text() = $region]]])}
    - return - (web:response-header(map {'method': 'xml'}, map:merge((cors:header(()), vicav:return_content_header()))), -
    Total: {count($items)}
    {$out}
    ) + return if (matches($accept-header, '[+/]json')) + then let $renderedJson := xslt:transform(<_>{$out}, 'xslt/identity.xslt') + return serialize($renderedJson, map {"method": "xml"}) + else $out }; @@ -1629,27 +1637,30 @@ declare %rest:GET %rest:query-param("query", "{$query}") %rest:query-param("print", "{$print}") +%rest:query-param("xslt", "{$xslt}", "corpus_search_result.xslt") %rest:produces("application/xml") %rest:produces("application/json") %rest:produces('application/problem+json') %rest:produces('application/problem+xml') -function vicav:search_corpus($query as xs:string, $print as xs:string?) { +function vicav:search_corpus($query as xs:string, $print as xs:string?, $xslt as xs:string?) { api-problem:or_result (prof:current-ns(), - vicav:_search_corpus#2, [$query, $print], map:merge((cors:header(()), vicav:return_content_header())) + vicav:_search_corpus#3, [$query, $print, $xslt], map:merge((cors:header(()), vicav:return_content_header())) ) }; -declare function vicav:_search_corpus($query as xs:string, $print as xs:string?) { +declare function vicav:_search_corpus($query as xs:string, $print as xs:string?, $xslt as xs:string?) { let $accept-header := try { request:header("ACCEPT") } catch basex:http { 'application/xhtml+xml' } - + + let $query-words := tokenize($query, '\s') + let $query-parts := string-join(($query-words!('[word="' || encode-for-uri(.) + || '"]'))) let $path := 'vicav_projects/' || vicav:get_project_name() || '.xml' let $config := if (doc-available($path)) then doc($path)/projectConfig else let $noske_host := $config//noskeHost, $request := $noske_host || '/bonito/run.cgi/first?corpname=' || vicav:get_project_name() - || '&queryselector=cqlrow&cql=[word="' || $query - || '"]&default_attr=word&attrs=wid&kwicleftctx=-1&kwicrightctx=0&refs=u.id,doc.id&pagesize=100000' + || '&queryselector=cqlrow&cql='||$query-parts||'&default_attr=word&attrs=wid&kwicleftctx=-1&kwicrightctx=0&refs=u.id,doc.id&pagesize=100000' , $_ := admin:write-log($request, 'INFO') @@ -1692,7 +1703,7 @@ declare function vicav:_search_corpus($query as xs:string, $print as xs:string?) let $docId := tokenize($line/Refs/_[2], '=')[2] (:$docUandIds := if not((map:contains($docUandIds, $key))) then map:put($docUandIds, $key, []) else $docUandIds:) let $tokenId := if (count($line/Kwic/_) > 0) then - $line/Kwic/_[1]/str/text() + tokenize($line/Kwic/_[1]/str/text(), '\s') else if (count($line/Left/_) > 0) then $line/Left/_[1]/text() else if (count($line/Right/_) > 0) then @@ -1700,7 +1711,7 @@ declare function vicav:_search_corpus($query as xs:string, $print as xs:string?) let $u := collection('vicav_corpus') /descendant::tei:TEI[./tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno[@type="SHAWICorpusID"]/text() = $docId] /tei:text/tei:body/tei:div/tei:annotationBlock/tei:u[@xml:id = $uId] - return {$u}{normalize-space($tokenId)}} + return {$u}{$tokenId!{normalize-space(.)}}} (: , $_ := admin:write-log(serialize($hits), 'INFO') :) (: , $_ := file:write(file:resolve-path('hits.xml', file:base-dir()), $hits, map { "method": "xml"}) :) @@ -1709,7 +1720,7 @@ declare function vicav:_search_corpus($query as xs:string, $print as xs:string?) let $transformedOutput := xslt:transform($hits, 'xslt/corpus_search_result_json.xslt', map{ 'query': $query}) return serialize($transformedOutput, map {"method": "json"}) else - let $out := vicav:transform($hits, 'corpus_search_result.xslt', $print, map{ 'query': $query }) + let $out := vicav:transform($hits, $xslt, $print, map{ 'query': $query }) return $out From 647aa252229768a23b34671475f201af3ae113e0 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 16 Nov 2023 18:12:36 +0100 Subject: [PATCH 111/183] Render KWICs with more than one xml:id The logic for identifying duplicate IDs due to e.g. duplicate texts needed to be removed --- xslt/corpus_search_result_json.xslt | 101 ++++++++++++++-------------- 1 file changed, 50 insertions(+), 51 deletions(-) diff --git a/xslt/corpus_search_result_json.xslt b/xslt/corpus_search_result_json.xslt index e3aea623..a1a10eb3 100644 --- a/xslt/corpus_search_result_json.xslt +++ b/xslt/corpus_search_result_json.xslt @@ -22,64 +22,63 @@ - + - - Error: duplicate token ID - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + - + + + + + + + + - + + - +   - + - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + - + + + + + From a36dee758da644a49c1598e6ee9fd85a0dd940ee Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 15:27:41 +0100 Subject: [PATCH 112/183] Refactor profile endpoint so it works better with the Vue frontend Remove the teiLink placeholder. Respond with full img src urls. Add a ling_feature (no plural) endpoint for the ling feature texts instead of using profile parameters. --- vicav.xqm | 41 +- xslt/concat-path-inc.xslt | 21 + xslt/features_01.xslt | 98 ++-- xslt/profile_01.xslt | 983 ++++++++++++++++++----------------- xslt/sampletexts_common.xslt | 13 +- xslt/vicavTexts.xslt | 19 +- 6 files changed, 615 insertions(+), 560 deletions(-) create mode 100644 xslt/concat-path-inc.xslt diff --git a/vicav.xqm b/vicav.xqm index 3ff404b1..069bc658 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -285,21 +285,42 @@ declare function vicav:transform($doc as element(), $xsltfn as xs:string, $print declare %rest:path("/vicav/profile") -%rest:query-param("coll", "{$coll}", "/vicav_profiles") +%rest:GET %rest:query-param("id", "{$id}") -%rest:query-param("xslt", "{$xsltfn}", "profile_01.xslt") +%test:arg("id", "profile_amman_01") +%rest:query-param("coll", "{$coll}", "/vicav_profiles") +%rest:query-param("xslt", "{$xsltfn}") %rest:query-param("print", "{$print}") +%rest:produces("application/xml") +%rest:produces('application/problem+json') +%rest:produces('application/problem+xml') +function vicav:get_profile($coll as xs:string, $id as xs:string*, $xsltfn as xs:string*, $print as xs:string*) { + let $generateTeiMarker := exists($xsltfn) + let $xsltfn := if (exists($xsltfn)) then $xsltfn else "profile_01.xslt" + return api-problem:or_result (prof:current-ns(), + vicav:_get_profile#6, [$coll, $id, $xsltfn, $print, $generateTeiMarker, '/profile'], map:merge((cors:header(()), vicav:return_content_header())) + ) +}; +declare +%rest:path("/vicav/ling_feature") %rest:GET +%rest:query-param("id", "{$id}") +%test:arg("id", "ling_features_baghdad") +function vicav:get_ling_feature($id as xs:string?) { + api-problem:or_result (prof:current-ns(), + vicav:_get_profile#6, ['vicav_lingfeatures', $id, 'features_01.xslt', (), false(), '/ling_feature'], map:merge((cors:header(()), vicav:return_content_header()))) +}; -function vicav:get_profile($coll as xs:string, $id as xs:string*, $xsltfn as xs:string, $print as xs:string*) { - let $ns := "declare namespace tei = 'http://www.tei-c.org/ns/1.0';" - let $q := 'collection("' || $coll || vicav:get_project_db() || '")/descendant::tei:TEI[@xml:id="' || $id || '"]' - let $query := $ns || $q - let $results := xquery:eval($query) - return - (web:response-header(map {'method': 'basex'}, map:merge((cors:header(()), vicav:return_content_header()))), - vicav:transform($results, $xsltfn, $print, map{})) +declare function vicav:_get_profile($coll as xs:string, $id as xs:string*, + $xsltfn as xs:string*, $print as xs:string*, $generateTeiMarker as xs:boolean, + $endpoint as xs:string) { + vicav:transform(collection($coll || vicav:get_project_db())/descendant::tei:TEI[@xml:id=$id], + $xsltfn, $print, map{ + 'param-base-path': replace(util:get-base-uri-public(), $endpoint, ''), + 'tei-link-marker': xs:string($generateTeiMarker) + } + ) }; declare diff --git a/xslt/concat-path-inc.xslt b/xslt/concat-path-inc.xslt new file mode 100644 index 00000000..295de638 --- /dev/null +++ b/xslt/concat-path-inc.xslt @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xslt/features_01.xslt b/xslt/features_01.xslt index 1e563294..1a0271b6 100644 --- a/xslt/features_01.xslt +++ b/xslt/features_01.xslt @@ -1,45 +1,53 @@ - - - - - -
    - - - - -
    - - -

    - -

    By (revision: )

    - -
    • Informant ID: , Sex: , Age:
    • -
    - - - - - - - - - - -
    -
    -
    -
    -
    + + + + + + +
    + + + + +
    + + + + +

    +
    + +

    +
    +
    + +

    By (revision: )

    + +
    • Informant ID: , Sex: , Age:
    • +
    + + + + + + + + + + +
    +
    +
    +
    +
    diff --git a/xslt/profile_01.xslt b/xslt/profile_01.xslt index 3c69d8e6..607cebed 100644 --- a/xslt/profile_01.xslt +++ b/xslt/profile_01.xslt @@ -1,485 +1,498 @@ - - - - - - - -
    - - - -
    Typology
    - - - -
    -
    - - - - - - -
    Linguistic Features
    - -
    - -
    General
    - -
    - -
    Research History
    - -
    - -
    Sample Text
    - -
    - -
    Bibliography
    - -
    - -
    Text Books
    - -
    - -
    Dictionaries
    - -
    - -
    Audio Data
    - -
    - -
    Gallery
    - -
    -
    -
    - - -
    -
    - - - - - - - - - - - - - - - - -
    - - - - - -
    -
    /
    - - - - - - -
    -
    - - - - - -
    -

    -
    - - -
    -
    - - - -
    - - - - - -
    -
    -
    -
    -
    -
    - - - -
    - - -
    -
    - - - - - - - - -
    -
    - - - -
    -
    - -
  • -
    - - - - # - refEvent("") - --> - - - - - - - - - - - - - - - - - - - - - - - -
    -
    - - - - - -
    -
    - - - - - -
    -
    - - - - javascript:getDBSnippet("") - - - - - - - javascript:getDBSnippet("") - - - - - -
    - -
    - - - - - - - - - - - - -
    -

    -
    - - -
    -
    - - - -
    - - - - - -
    -
    -
    -
    -
    -
    - - -
    - - - float: right; margin: 10px 10px 0px 10px - - - float: left; margin: 10px 10px 0px 10px - - - - - - - - - -
    - -
    -
    -
    -
    - - - + + + + + + /vicav + + + + + + + +
    + + + + +

    +
    + +

    +
    +
    + +
    +
    + + + +
    + +
    +
    + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    MSA Name
    MSA Name (trans.)
    Local name
    Local name (trans.) +
    Geo location + + + + + + + + + + +
    Contributed by
    +
    + + + + + + + + + +
    + + + + + +
    +
    /
    + + + + + + +
    +
    + + + + + +
    +

    +
    + + +
    +
    + + + +
    + + + + + +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    +
    + + +
    Typology
    + + + +
    +
    + + + + + + +
    Linguistic Features
    + +
    + +
    General
    + +
    + +
    Research History
    + +
    + +
    Sample Text
    + +
    + +
    Bibliography
    + +
    + +
    Text Books
    + +
    + +
    Dictionaries
    + +
    + +
    Audio Data
    + +
    + +
    Gallery
    + +
    +
    +
    + + +
    +
    + + + + + + + + + + + + + + + + +
    + + + + + +
    +
    /
    + + + + + + +
    +
    + + + + + +
    +

    +
    + + +
    +
    + + + +
    + + + + + +
    +
    +
    +
    +
    +
    + + + +
    + + +
    +
    + + + + + + + + +
    +
    + + + +
    +
    + +
  • +
    + + + + # + refEvent("") + --> + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + + + + +
    +
    + + + + + +
    +
    + + + + javascript:getDBSnippet("") + + + + + + + javascript:getDBSnippet("") + + + + + +
    + +
    + + + + + + + + + + + + +
    +

    +
    + + +
    +
    + + + +
    + + + + + +
    +
    +
    +
    +
    +
    + + +
    + + + float: right; margin: 10px 10px 0px 10px + + + float: left; margin: 10px 10px 0px 10px + + + + + + + + + +
    + +
    +
    +
    +
    + +
    + diff --git a/xslt/sampletexts_common.xslt b/xslt/sampletexts_common.xslt index d09d6c01..209fdc28 100644 --- a/xslt/sampletexts_common.xslt +++ b/xslt/sampletexts_common.xslt @@ -1,11 +1,18 @@ - - + + + +/vicav + + + + diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index 89c63e4e..f1421435 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -9,24 +9,9 @@ - images + /vicav - - - - - - - - - - - - - - - - + From 1b32df9d42d776d5e09cfb7e21b178fc30f3a6ac Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 18:13:28 +0100 Subject: [PATCH 113/183] Add a cache cleanup script --- .github/workflows/cache-cleanup.yaml | 29 ++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/cache-cleanup.yaml diff --git a/.github/workflows/cache-cleanup.yaml b/.github/workflows/cache-cleanup.yaml new file mode 100644 index 00000000..9b90e4c4 --- /dev/null +++ b/.github/workflows/cache-cleanup.yaml @@ -0,0 +1,29 @@ +name: cleanup caches by a branch +on: + repository_dispatch: + types: [run] + workflow_dispatch: {} + +jobs: + cleanup: + runs-on: ubuntu-latest + steps: + - name: Cleanup + run: | + gh extension install actions/gh-actions-cache + + echo "Fetching list of cache key" + cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 ) + + ## Setting this to not fail the workflow while deleting cache keys. + set +e + echo "Deleting caches..." + for cacheKey in $cacheKeysForPR + do + gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm + done + echo "Done" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + REPO: ${{ github.repository }} + BRANCH: refs/pull/${{ github.event.pull_request.number }}/merge \ No newline at end of file From ee1bd1d337305c356e1b67df9a149cf59c57fca7 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 18:59:28 +0100 Subject: [PATCH 114/183] Fix a test fail due to new full image src URLs --- cypress/integration/profiles_spec.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cypress/integration/profiles_spec.js b/cypress/integration/profiles_spec.js index b91eaf11..46d64dd5 100644 --- a/cypress/integration/profiles_spec.js +++ b/cypress/integration/profiles_spec.js @@ -5,7 +5,7 @@ describe('Profiles', function() { cy.get('img[alt^="Tunis"]').click({force: true}) - cy.get('img[src="images/tunis-zeituna-1988.jpg"]').should('be.visible') + cy.get('img[src="http://localhost:8984/vicav/images/tunis-zeituna-1988.jpg"]').should('be.visible') cy.contains("‏تونس") }); }) From 3b728cd75db64a54fadfb3ca017f67c2e6948777 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 22:10:55 +0100 Subject: [PATCH 115/183] In some (test) cases currentURL has no part after # --- js/vicav_funcs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/js/vicav_funcs.js b/js/vicav_funcs.js index 67937619..164ac3ba 100644 --- a/js/vicav_funcs.js +++ b/js/vicav_funcs.js @@ -377,7 +377,7 @@ function changePanelVisibility(panel, type, expand)   { var currentURL = window.location.toString(); var args = currentURL.split('#'); var baseUrl = args[0]; - var args = args[1].split('&'); + var args = (args[1] || '').split('&'); if (type == 'minimize' || type == 'maximize') { if (type == 'minimize') { From b72d51b231615615cad01032ebfc3154e1f5e5bc Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 22:12:00 +0100 Subject: [PATCH 116/183] Try harder to show a clean screen on the videos Close unnecessary elements, scroll to closer to the top. --- .../sampletexts_comparison_spec.js | 25 ++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/cypress/integration/sampletexts_comparison_spec.js b/cypress/integration/sampletexts_comparison_spec.js index 65564fc3..731422ed 100644 --- a/cypress/integration/sampletexts_comparison_spec.js +++ b/cypress/integration/sampletexts_comparison_spec.js @@ -4,7 +4,8 @@ chai.use(chaiColors) const BASEX_ROOT = Cypress.env('BASEX_ROOT') || '/app/.heroku/basex' const BASEX_PWD = Cypress.env('BASEX_admin_pw') || 'admin' -describe('VICAV Compare samples window', function() { +describe('VICAV Compare samples window', function() { + it ('shows form with the right behavior', function() { cy.exec(`${BASEX_ROOT}/bin/basexclient -Uadmin -P${BASEX_PWD} -c "OPEN vicav_projects; REPLACE vicav.xml ${Cypress.config()['fileServerFolder']}/fixtures/vicav_projects/vicav.xml"`) cy.exec(`${BASEX_ROOT}/bin/basexclient -Uadmin -P${BASEX_PWD} -c "OPEN vicav_samples; REPLACE vicav_sample_text_002.xml ${Cypress.config()['fileServerFolder']}/fixtures/vicav_samples/sampletexts.xml"`) @@ -15,14 +16,19 @@ describe('VICAV Compare samples window', function() { $navbar_toggler.click() } }) + cy.get('#cookie-overlay .cookie-accept-btn').click() + cy.get('.how-to-panel .chrome-close').click() + cy.scrollTo(0, 200) cy.contains('Samples').click().then(() => { cy.contains('Compare Locations').click().then(() => { + cy.scrollTo(0, 200) cy.get('.location-wrapper .tagit input').type('Tun', {force: true}) cy.get('.tagit-autocomplete .ui-menu-item').then(() => { cy.contains('Tunis2').click() }) - cy.get('.word-wrapper .tagit input').scrollIntoView().type('nh', {force: true}) + cy.scrollTo(0, 200) + cy.get('.word-wrapper .tagit input').type('nh', {force: true}) cy.get('.tagit-autocomplete .ui-menu-item').then(() => { cy.contains('nhāṛ').click() }) @@ -30,7 +36,8 @@ describe('VICAV Compare samples window', function() { cy.get('[name="sex"][value=f]').click() cy.get('[name="sex"][value=m]').click() - cy.get('.person-wrapper .tagit input').scrollIntoView().type('Tes', {force: true}) + cy.scrollTo(0, 200) + cy.get('.person-wrapper .tagit input').type('Tes', {force: true}) cy.get('.tagit-autocomplete .ui-menu-item').then(() => { cy.contains('Test1/m/20').click() }) @@ -50,6 +57,9 @@ describe('VICAV Compare samples window', function() { it('should only show the given sentences ', () => { cy.visit('http://localhost:8984/vicav/#map=[biblMarkers,_samples_,]&1=[crossSamplesResult,location|Tunis2+age|0%2C100+person|+features|2+word+xslt|cross_samples_01.xslt,open]') + cy.get('#cookie-overlay .cookie-accept-btn').click() + cy.get('.how-to-panel .chrome-close').click() + cy.scrollTo(0, 200) cy.get('[data-snippetID=compare-samples-result]') .contains('šrīt zūz kīlu buṛdgāna b-dīnāṛ zāda.') .contains('nhāṛ li-ṯnīn baʕd il-fažr əmšīt l-is-sūq bāš nišri ʕ9am w-xu9ṛa kīma bītinžāl w-ṯūm.').should('not.exist'); @@ -57,12 +67,18 @@ describe('VICAV Compare samples window', function() { it ('supports wildcards and highlights in word search', () => { cy.visit('http://localhost:8984/vicav/#map=[biblMarkers,_samples_,]&1=[crossSamplesResult,location|Tunis2%2CTest+age|+person|+features|+word|b%2Ain%C5%BE%2A+xslt|cross_samples_01.xslt, open]') + cy.get('#cookie-overlay .cookie-accept-btn').click() + cy.get('.how-to-panel .chrome-close').click() + cy.scrollTo(0, 200) cy.get('[data-snippetID=compare-samples-result]').contains('span', 'biḏinžǟn').should('have.css', 'color').and('be.colored', 'red') cy.get('[data-snippetID=compare-samples-result]').contains('span', 'bītinžāl').should('have.css', 'color').and('be.colored', 'red') }) it ('supports search by gender', () => { cy.visit('http://localhost:8984/vicav/#map=[biblMarkers,_samples_,]&1=[crossSamplesResult,location|Test+age|+person|+features|+word|+sex|f+xslt|cross_samples_01.xslt, open]') + cy.get('#cookie-overlay .cookie-accept-btn').click() + cy.get('.how-to-panel .chrome-close').click() + cy.scrollTo(0, 200) cy.get('[data-snippetID=compare-samples-result]').then(() => { cy.contains('Test1/m/20').should('not.exist') cy.contains('Test2/f/40') @@ -71,6 +87,9 @@ describe('VICAV Compare samples window', function() { it ('supports search by age', () => { cy.visit('http://localhost:8984/vicav/#map=[biblMarkers,_samples_,]&1=[crossSamplesResult,location|Test+age|0%2c30+person|+features|+word|+sex|+xslt|cross_samples_01.xslt, open]') + cy.get('#cookie-overlay .cookie-accept-btn').click() + cy.get('.how-to-panel .chrome-close').click() + cy.scrollTo(0, 200) cy.get('[data-snippetID=compare-samples-result]').then(() => { cy.contains('Test2/f/40').should('not.exist') cy.contains('Test1/m/20') From da3f4751c405cda13917e35f3ee8233e94134915 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 22:23:18 +0100 Subject: [PATCH 117/183] Try show the last state of a test a bit longer --- cypress/integration/sampletexts_comparison_spec.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/cypress/integration/sampletexts_comparison_spec.js b/cypress/integration/sampletexts_comparison_spec.js index 731422ed..8889b51d 100644 --- a/cypress/integration/sampletexts_comparison_spec.js +++ b/cypress/integration/sampletexts_comparison_spec.js @@ -51,7 +51,8 @@ describe('VICAV Compare samples window', function() { }) }); }); - + cy.scrollTo(0, 200) + cy.wait(800) }) @@ -63,6 +64,7 @@ describe('VICAV Compare samples window', function() { cy.get('[data-snippetID=compare-samples-result]') .contains('šrīt zūz kīlu buṛdgāna b-dīnāṛ zāda.') .contains('nhāṛ li-ṯnīn baʕd il-fažr əmšīt l-is-sūq bāš nišri ʕ9am w-xu9ṛa kīma bītinžāl w-ṯūm.').should('not.exist'); + cy.wait(800) }) it ('supports wildcards and highlights in word search', () => { @@ -72,6 +74,7 @@ describe('VICAV Compare samples window', function() { cy.scrollTo(0, 200) cy.get('[data-snippetID=compare-samples-result]').contains('span', 'biḏinžǟn').should('have.css', 'color').and('be.colored', 'red') cy.get('[data-snippetID=compare-samples-result]').contains('span', 'bītinžāl').should('have.css', 'color').and('be.colored', 'red') + cy.wait(800) }) it ('supports search by gender', () => { @@ -83,6 +86,7 @@ describe('VICAV Compare samples window', function() { cy.contains('Test1/m/20').should('not.exist') cy.contains('Test2/f/40') }) + cy.wait(800) }) it ('supports search by age', () => { @@ -94,6 +98,7 @@ describe('VICAV Compare samples window', function() { cy.contains('Test2/f/40').should('not.exist') cy.contains('Test1/m/20') }) + cy.wait(800) }) }) From b170253d3b95f9addd972c9829358363323de482 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 23:08:57 +0100 Subject: [PATCH 118/183] Major update to Cypress 10 --- cypress.config.js | 14 + cypress.json | 5 - .../biblio_spec.js => e2e/biblio.cy.js} | 0 .../dictionaries.cy.js} | 0 .../homepage_config.cy.js} | 0 .../ling_features.cy.js} | 0 .../profiles_spec.js => e2e/profiles.cy.js} | 0 .../sampletexts.cy.js} | 0 .../sampletexts_comparison.cy.js} | 0 cypress/fixtures/example.json | 5 + cypress/support/{index.js => e2e.js} | 0 package-lock.json | 3514 +++-------------- package.json | 6 +- 13 files changed, 660 insertions(+), 2884 deletions(-) create mode 100644 cypress.config.js delete mode 100644 cypress.json rename cypress/{integration/biblio_spec.js => e2e/biblio.cy.js} (100%) rename cypress/{integration/dictionaries_spec.js => e2e/dictionaries.cy.js} (100%) rename cypress/{integration/homepage_config_spec.js => e2e/homepage_config.cy.js} (100%) rename cypress/{integration/ling_features_spec.js => e2e/ling_features.cy.js} (100%) rename cypress/{integration/profiles_spec.js => e2e/profiles.cy.js} (100%) rename cypress/{integration/sampletexts_spec.js => e2e/sampletexts.cy.js} (100%) rename cypress/{integration/sampletexts_comparison_spec.js => e2e/sampletexts_comparison.cy.js} (100%) create mode 100644 cypress/fixtures/example.json rename cypress/support/{index.js => e2e.js} (100%) diff --git a/cypress.config.js b/cypress.config.js new file mode 100644 index 00000000..b9b6c7a9 --- /dev/null +++ b/cypress.config.js @@ -0,0 +1,14 @@ +const { defineConfig } = require('cypress') + +module.exports = defineConfig({ + defaultCommandTimeout: 20000, + viewportHeight: 768, + viewportWidth: 1440, + e2e: { + // We've imported your old cypress plugins here. + // You may want to clean this up later by importing these. + setupNodeEvents(on, config) { + return require('./cypress/plugins/index.js')(on, config) + }, + }, +}) diff --git a/cypress.json b/cypress.json deleted file mode 100644 index 730a5500..00000000 --- a/cypress.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "defaultCommandTimeout": 20000, - "viewportHeight": 768, - "viewportWidth": 1440 -} diff --git a/cypress/integration/biblio_spec.js b/cypress/e2e/biblio.cy.js similarity index 100% rename from cypress/integration/biblio_spec.js rename to cypress/e2e/biblio.cy.js diff --git a/cypress/integration/dictionaries_spec.js b/cypress/e2e/dictionaries.cy.js similarity index 100% rename from cypress/integration/dictionaries_spec.js rename to cypress/e2e/dictionaries.cy.js diff --git a/cypress/integration/homepage_config_spec.js b/cypress/e2e/homepage_config.cy.js similarity index 100% rename from cypress/integration/homepage_config_spec.js rename to cypress/e2e/homepage_config.cy.js diff --git a/cypress/integration/ling_features_spec.js b/cypress/e2e/ling_features.cy.js similarity index 100% rename from cypress/integration/ling_features_spec.js rename to cypress/e2e/ling_features.cy.js diff --git a/cypress/integration/profiles_spec.js b/cypress/e2e/profiles.cy.js similarity index 100% rename from cypress/integration/profiles_spec.js rename to cypress/e2e/profiles.cy.js diff --git a/cypress/integration/sampletexts_spec.js b/cypress/e2e/sampletexts.cy.js similarity index 100% rename from cypress/integration/sampletexts_spec.js rename to cypress/e2e/sampletexts.cy.js diff --git a/cypress/integration/sampletexts_comparison_spec.js b/cypress/e2e/sampletexts_comparison.cy.js similarity index 100% rename from cypress/integration/sampletexts_comparison_spec.js rename to cypress/e2e/sampletexts_comparison.cy.js diff --git a/cypress/fixtures/example.json b/cypress/fixtures/example.json new file mode 100644 index 00000000..da18d935 --- /dev/null +++ b/cypress/fixtures/example.json @@ -0,0 +1,5 @@ +{ + "name": "Using fixtures to represent data", + "email": "hello@cypress.io", + "body": "Fixtures are a great way to mock data for responses to routes" +} \ No newline at end of file diff --git a/cypress/support/index.js b/cypress/support/e2e.js similarity index 100% rename from cypress/support/index.js rename to cypress/support/e2e.js diff --git a/package-lock.json b/package-lock.json index eee06a3a..f0839316 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,2174 +1,20 @@ { "name": "vicav-app", "version": "1.0.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "vicav-app", - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "blueimp-gallery": "^3.2.0", - "bootstrap": "4.3.1", - "jquery": "3.4.1", - "jquery-ui": "^1.13.0", - "leaflet": "^1.2.0", - "popper.js": "^1.12.5" - }, - "devDependencies": { - "chai-colors": "^1.0.1", - "cypress": "^4.12.1" - }, - "engines": { - "basex": "9.7.3", - "jvm": "17", - "node": "18.x", - "npm": "9.5.x", - "saxon": "11.3" - } - }, - "node_modules/@cypress/listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@cypress/listr-verbose-renderer/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", - "dev": true, - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "http-signature": "~1.3.6", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@cypress/xvfb": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@cypress/xvfb/-/xvfb-1.2.4.tgz", - "integrity": "sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==", - "dev": true, - "dependencies": { - "debug": "^3.1.0", - "lodash.once": "^4.1.1" - } - }, - "node_modules/@cypress/xvfb/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/@samverschueren/stream-to-observable": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", - "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", - "dev": true, - "dependencies": { - "any-observable": "^0.3.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "rxjs": { - "optional": true - }, - "zen-observable": { - "optional": true - } - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", - "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", - "dev": true - }, - "node_modules/@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", - "dev": true - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ansi-styles": { - "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, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "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/asn1": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", - "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", - "dev": true, - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "node_modules/assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", - "dev": true - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true - }, - "node_modules/aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "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==", - "dev": true - }, - "node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", - "dev": true, - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "node_modules/blueimp-gallery": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/blueimp-gallery/-/blueimp-gallery-3.4.0.tgz", - "integrity": "sha512-t4zQ8XSlE3IuJK72gd6hnexHMUpndUZYRKcAYv+24TpYGom5YtP5yizWdH2cGwyb0MOTKojkwSWVweTo1rbDEw==" - }, - "node_modules/bootstrap": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", - "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==", - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jquery": "1.9.1 - 3", - "popper.js": "^1.14.7" - } - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", - "dev": true - }, - "node_modules/chai-colors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/chai-colors/-/chai-colors-1.0.1.tgz", - "integrity": "sha512-dHfkpLWbYx8jHxruZJWBO/TAh/kx6nK4FQ99bTGOxxChkGbq4x/1oOCbkoNo3CkyVZf5etG8qeaLaoAeCvC/mA==", - "dev": true, - "dependencies": { - "onecolor": "~2.4.2" - } - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-more-types": { - "version": "2.24.0", - "resolved": "https://registry.npmjs.org/check-more-types/-/check-more-types-2.24.0.tgz", - "integrity": "sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "node_modules/cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", - "dev": true, - "dependencies": { - "restore-cursor": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", - "dev": true, - "dependencies": { - "object-assign": "^4.1.0", - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "colors": "^1.1.2" - } - }, - "node_modules/cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", - "dev": true, - "dependencies": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate/node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "dependencies": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/common-tags": { - "version": "1.8.2", - "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", - "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "engines": [ - "node >= 0.8" - ], - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/cypress": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-4.12.1.tgz", - "integrity": "sha512-9SGIPEmqU8vuRA6xst2CMTYd9sCFCxKSzrHt0wr+w2iAQMCIIsXsQ5Gplns1sT6LDbZcmLv6uehabAOl3fhc9Q==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@cypress/listr-verbose-renderer": "^0.4.1", - "@cypress/request": "^2.88.5", - "@cypress/xvfb": "^1.2.4", - "@types/sinonjs__fake-timers": "^6.0.1", - "@types/sizzle": "^2.3.2", - "arch": "^2.1.2", - "bluebird": "^3.7.2", - "cachedir": "^2.3.0", - "chalk": "^2.4.2", - "check-more-types": "^2.24.0", - "cli-table3": "~0.5.1", - "commander": "^4.1.1", - "common-tags": "^1.8.0", - "debug": "^4.1.1", - "eventemitter2": "^6.4.2", - "execa": "^1.0.0", - "executable": "^4.1.1", - "extract-zip": "^1.7.0", - "fs-extra": "^8.1.0", - "getos": "^3.2.1", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.2", - "lazy-ass": "^1.6.0", - "listr": "^0.14.3", - "lodash": "^4.17.19", - "log-symbols": "^3.0.0", - "minimist": "^1.2.5", - "moment": "^2.27.0", - "ospath": "^1.2.2", - "pretty-bytes": "^5.3.0", - "ramda": "~0.26.1", - "request-progress": "^3.0.0", - "supports-color": "^7.1.0", - "tmp": "~0.1.0", - "untildify": "^4.0.0", - "url": "^0.11.0", - "yauzl": "^2.10.0" - }, - "bin": { - "cypress": "bin/cypress" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", - "dev": true - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", - "dev": true, - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "node_modules/elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eventemitter2": { - "version": "6.4.7", - "resolved": "https://registry.npmjs.org/eventemitter2/-/eventemitter2-6.4.7.tgz", - "integrity": "sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==", - "dev": true - }, - "node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "node_modules/extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", - "dev": true, - "dependencies": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - } - }, - "node_modules/extract-zip/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/extract-zip/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", - "dev": true, - "engines": [ - "node >=0.6.0" - ] - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "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==", - "dev": true - }, - "node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/getos": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/getos/-/getos-3.2.1.tgz", - "integrity": "sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q==", - "dev": true, - "dependencies": { - "async": "^3.2.0" - } - }, - "node_modules/getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "dependencies": { - "ini": "1.3.7" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/http-signature": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", - "integrity": "sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw==", - "dev": true, - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^2.0.2", - "sshpk": "^1.14.1" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": 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==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", - "dev": true - }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", - "dev": true, - "dependencies": { - "symbol-observable": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", - "dev": true - }, - "node_modules/jquery": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.4.1.tgz", - "integrity": "sha512-36+AdBzCL+y6qjw5Tx7HgzeGCzC81MDDgaUP8ld2zhx58HdqXGoBd+tHdrBMiyjGQs0Hxs/MLZTu/eHNJJuWPw==" - }, - "node_modules/jquery-ui": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", - "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", - "dependencies": { - "jquery": ">=1.8.0 <4.0.0" - } - }, - "node_modules/jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", - "dev": true - }, - "node_modules/json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsprim": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-2.0.2.tgz", - "integrity": "sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - } - }, - "node_modules/lazy-ass": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/lazy-ass/-/lazy-ass-1.6.0.tgz", - "integrity": "sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==", - "dev": true, - "engines": { - "node": "> 0.8" - } - }, - "node_modules/leaflet": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.8.0.tgz", - "integrity": "sha512-gwhMjFCQiYs3x/Sf+d49f10ERXaEFCPr+nVTryhAW8DWbMGqJqt9G4XuIaHmFW08zYvhgdzqXGr8AlW8v8dQkA==" - }, - "node_modules/listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "dev": true, - "dependencies": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "dev": true, - "dependencies": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "listr": "^0.14.2" - } - }, - "node_modules/listr-update-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", - "dev": true, - "dependencies": { - "chalk": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/listr-update-renderer/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "dependencies": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/listr-verbose-renderer/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", - "dev": true, - "dependencies": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onecolor": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/onecolor/-/onecolor-2.4.2.tgz", - "integrity": "sha512-V2BitXZgajFyGmUNh+lYfoOQAKj31YhOBjqYVsVEkYUYUCr7MsVQbBKJdUWmLhu1c+y3imbdagOjbeC8ygrTyA==", - "dev": true, - "engines": { - "node": ">=0.4.8" - } - }, - "node_modules/onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ospath": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/ospath/-/ospath-1.2.2.tgz", - "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", - "dev": true - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", - "dev": true - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/popper.js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", - "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", - "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, - "node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/psl": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", - "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", - "dev": true, - "engines": { - "node": ">=0.4.x" - } - }, - "node_modules/ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true - }, - "node_modules/readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readable-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/request-progress": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", - "integrity": "sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==", - "dev": true, - "dependencies": { - "throttleit": "^1.0.0" - } - }, - "node_modules/restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", - "dev": true, - "dependencies": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "dependencies": { - "tslib": "^1.9.0" - }, - "engines": { - "npm": ">=2.0.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "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/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", - "dev": true, - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string_decoder/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "dev": true, - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "dev": true, - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", - "dev": true - }, - "node_modules/tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", - "dev": true, - "dependencies": { - "rimraf": "^2.6.3" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "dependencies": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "dev": true - }, - "node_modules/typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", - "dev": true - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", - "dev": true, - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", - "dev": true, - "engines": [ - "node >=0.6.0" - ], - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "node_modules/verror/node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", - "dev": true, - "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "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==", - "dev": true - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - } - }, "dependencies": { - "@cypress/listr-verbose-renderer": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@cypress/listr-verbose-renderer/-/listr-verbose-renderer-0.4.1.tgz", - "integrity": "sha512-EDiBsVPWC27DDLEJCo+dpl9ODHhdrwU57ccr9tspwCdG2ni0QVkf6LF0FGbhfujcjPxnXLIwsaks4sOrwrA4Qw==", + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", "dev": true, - "requires": { - "chalk": "^1.1.3", - "cli-cursor": "^1.0.2", - "date-fns": "^1.27.2", - "figures": "^1.7.0" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true - } - } + "optional": true }, "@cypress/request": { - "version": "2.88.10", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.10.tgz", - "integrity": "sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg==", + "version": "2.88.12", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", + "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -2184,9 +30,9 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.5.2", + "qs": "~6.10.3", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", + "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", "uuid": "^8.3.2" } @@ -2212,54 +58,74 @@ } } }, - "@samverschueren/stream-to-observable": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", - "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", - "dev": true, - "requires": { - "any-observable": "^0.3.0" - } + "@types/node": { + "version": "14.18.63", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", + "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "dev": true }, "@types/sinonjs__fake-timers": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-6.0.4.tgz", - "integrity": "sha512-IFQTJARgMUBF+xVd2b+hIgXWrZEjND3vJtRCvIelcFB5SIXfjV4bOHbHJ0eXKh+0COrBRc8MqteKAz/j88rE0A==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz", + "integrity": "sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==", "dev": true }, "@types/sizzle": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.3.tgz", - "integrity": "sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==", "dev": true }, - "ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "dev": true, + "optional": true, + "requires": { + "@types/node": "*" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true }, "ansi-styles": { - "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==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "requires": { - "color-convert": "^1.9.0" + "color-convert": "^2.0.1" } }, - "any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "dev": true - }, "arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -2281,10 +147,16 @@ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "dev": true }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, "async": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", - "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==", + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==", "dev": true }, "asynckit": { @@ -2293,6 +165,12 @@ "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, + "at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "dev": true + }, "aws-sign2": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", @@ -2300,9 +178,9 @@ "dev": true }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", "dev": true }, "balanced-match": { @@ -2311,6 +189,12 @@ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, "bcrypt-pbkdf": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", @@ -2320,6 +204,12 @@ "tweetnacl": "^0.14.3" } }, + "blob-util": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/blob-util/-/blob-util-2.0.2.tgz", + "integrity": "sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==", + "dev": true + }, "bluebird": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", @@ -2334,8 +224,7 @@ "bootstrap": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.3.1.tgz", - "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==", - "requires": {} + "integrity": "sha512-rXqOmH1VilAt2DyPzluTi2blhk17bO7ef+zLLPlWvG494pDxcM234pJ8wTc/6R40UWizAIIMgxjvxZg5kmsbag==" }, "brace-expansion": { "version": "1.1.11", @@ -2347,24 +236,39 @@ "concat-map": "0.0.1" } }, + "buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, "buffer-crc32": { "version": "0.2.13", "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, "cachedir": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.3.0.tgz", - "integrity": "sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/cachedir/-/cachedir-2.4.0.tgz", + "integrity": "sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==", "dev": true }, + "call-bind": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, "caseless": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", @@ -2381,29 +285,22 @@ } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "dependencies": { - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^4.0.0" } } } @@ -2415,90 +312,66 @@ "dev": true }, "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true }, "cli-cursor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-1.0.2.tgz", - "integrity": "sha512-25tABq090YNKkF6JH7lcwO0zFJTRke4Jcq9iX2nr/Sz0Cjjv4gckmwlW6Ty/aoyFd6z3ysR2hMGC2GFugmBo6A==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "requires": { - "restore-cursor": "^1.0.1" + "restore-cursor": "^3.1.0" } }, "cli-table3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.5.1.tgz", - "integrity": "sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==", + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.3.tgz", + "integrity": "sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg==", "dev": true, "requires": { - "colors": "^1.1.2", - "object-assign": "^4.1.0", - "string-width": "^2.1.1" + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" } }, "cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", "dev": true, "requires": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "dependencies": { - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - } + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" } }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true - }, "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "requires": { - "color-name": "1.1.3" + "color-name": "~1.1.4" } }, "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true, - "optional": true + "colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, "combined-stream": { "version": "1.0.8", @@ -2510,9 +383,9 @@ } }, "commander": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", "dev": true }, "common-tags": { @@ -2527,79 +400,70 @@ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", "dev": true }, "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", "dev": true, "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" } }, "cypress": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-4.12.1.tgz", - "integrity": "sha512-9SGIPEmqU8vuRA6xst2CMTYd9sCFCxKSzrHt0wr+w2iAQMCIIsXsQ5Gplns1sT6LDbZcmLv6uehabAOl3fhc9Q==", + "version": "10.11.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", + "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", "dev": true, "requires": { - "@cypress/listr-verbose-renderer": "^0.4.1", - "@cypress/request": "^2.88.5", + "@cypress/request": "^2.88.10", "@cypress/xvfb": "^1.2.4", - "@types/sinonjs__fake-timers": "^6.0.1", + "@types/node": "^14.14.31", + "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", - "arch": "^2.1.2", + "arch": "^2.2.0", + "blob-util": "^2.0.2", "bluebird": "^3.7.2", + "buffer": "^5.6.0", "cachedir": "^2.3.0", - "chalk": "^2.4.2", + "chalk": "^4.1.0", "check-more-types": "^2.24.0", - "cli-table3": "~0.5.1", - "commander": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-table3": "~0.6.1", + "commander": "^5.1.0", "common-tags": "^1.8.0", - "debug": "^4.1.1", - "eventemitter2": "^6.4.2", - "execa": "^1.0.0", + "dayjs": "^1.10.4", + "debug": "^4.3.2", + "enquirer": "^2.3.6", + "eventemitter2": "6.4.7", + "execa": "4.1.0", "executable": "^4.1.1", - "extract-zip": "^1.7.0", - "fs-extra": "^8.1.0", + "extract-zip": "2.0.1", + "figures": "^3.2.0", + "fs-extra": "^9.1.0", "getos": "^3.2.1", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.3.2", + "is-ci": "^3.0.0", + "is-installed-globally": "~0.4.0", "lazy-ass": "^1.6.0", - "listr": "^0.14.3", - "lodash": "^4.17.19", - "log-symbols": "^3.0.0", - "minimist": "^1.2.5", - "moment": "^2.27.0", + "listr2": "^3.8.3", + "lodash": "^4.17.21", + "log-symbols": "^4.0.0", + "minimist": "^1.2.6", "ospath": "^1.2.2", - "pretty-bytes": "^5.3.0", - "ramda": "~0.26.1", + "pretty-bytes": "^5.6.0", + "proxy-from-env": "1.0.0", "request-progress": "^3.0.0", - "supports-color": "^7.1.0", - "tmp": "~0.1.0", + "semver": "^7.3.2", + "supports-color": "^8.1.1", + "tmp": "~0.2.1", "untildify": "^4.0.0", - "url": "^0.11.0", "yauzl": "^2.10.0" } }, @@ -2612,10 +476,10 @@ "assert-plus": "^1.0.0" } }, - "date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "dayjs": { + "version": "1.11.10", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==", "dev": true }, "debug": { @@ -2625,6 +489,25 @@ "dev": true, "requires": { "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" } }, "delayed-stream": { @@ -2643,10 +526,10 @@ "safer-buffer": "^2.1.0" } }, - "elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, "end-of-stream": { @@ -2658,6 +541,16 @@ "once": "^1.4.0" } }, + "enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + } + }, "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", @@ -2671,18 +564,20 @@ "dev": true }, "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", "dev": true, "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" } }, "executable": { @@ -2694,12 +589,6 @@ "pify": "^2.2.0" } }, - "exit-hook": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exit-hook/-/exit-hook-1.1.1.tgz", - "integrity": "sha512-MsG3prOVw1WtLXAZbM3KiYtooKR1LvxHh3VHsVtIy0uiUu8usxgB/94DP2HxtD/661lLdB6yzQ09lGJSQr6nkg==", - "dev": true - }, "extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -2707,32 +596,15 @@ "dev": true }, "extract-zip": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", - "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", "dev": true, "requires": { - "concat-stream": "^1.6.2", - "debug": "^2.6.9", - "mkdirp": "^0.5.4", + "@types/yauzl": "^2.9.1", + "debug": "^4.1.1", + "get-stream": "^5.1.0", "yauzl": "^2.10.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } } }, "extsprintf": { @@ -2751,13 +623,12 @@ } }, "figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "dev": true, "requires": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" + "escape-string-regexp": "^1.0.5" } }, "forever-agent": { @@ -2778,14 +649,23 @@ } }, "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", + "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", "dev": true, "requires": { + "at-least-node": "^1.0.0", "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } } }, "fs.realpath": { @@ -2794,10 +674,28 @@ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "requires": { "pump": "^3.0.0" @@ -2836,35 +734,65 @@ } }, "global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, "requires": { - "ini": "1.3.7" + "ini": "2.0.0" } }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "get-intrinsic": "^1.1.3" } }, + "graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, "has-flag": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, "http-signature": { "version": "1.3.6", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.3.6.tgz", @@ -2876,10 +804,22 @@ "sshpk": "^1.14.1" } }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, "indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true }, "inflight": { @@ -2899,43 +839,34 @@ "dev": true }, "ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", "dev": true }, "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, "requires": { - "ci-info": "^2.0.0" + "ci-info": "^3.2.0" } }, "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true }, "is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", - "dev": true, - "requires": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" - } - }, - "is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "requires": { - "symbol-observable": "^1.1.0" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" } }, "is-path-inside": { @@ -2944,16 +875,10 @@ "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true }, - "is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", - "dev": true - }, "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true }, "is-typedarray": { @@ -2962,10 +887,10 @@ "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true }, "isexe": { @@ -3012,12 +937,21 @@ "dev": true }, "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.6" + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + }, + "dependencies": { + "universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true + } } }, "jsprim": { @@ -3043,130 +977,20 @@ "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.8.0.tgz", "integrity": "sha512-gwhMjFCQiYs3x/Sf+d49f10ERXaEFCPr+nVTryhAW8DWbMGqJqt9G4XuIaHmFW08zYvhgdzqXGr8AlW8v8dQkA==" }, - "listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", - "dev": true, - "requires": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - } - }, - "listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", - "dev": true - }, - "listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", + "listr2": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-3.14.0.tgz", + "integrity": "sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g==", "dev": true, "requires": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", - "dev": true, - "requires": { - "chalk": "^1.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "dev": true - } - } - }, - "listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, - "dependencies": { - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "dev": true, - "requires": { - "escape-string-regexp": "^1.0.5" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "dev": true, - "requires": { - "mimic-fn": "^1.0.0" - } - }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "dev": true, - "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - } - } + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.1", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" } }, "lodash": { @@ -3182,55 +1006,66 @@ "dev": true }, "log-symbols": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", - "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "requires": { - "chalk": "^2.4.2" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" } }, "log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "requires": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "dependencies": { - "cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "dev": true, - "requires": { - "restore-cursor": "^2.0.0" - } - }, - "onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "requires": { - "mimic-fn": "^1.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" } }, - "restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "requires": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -3247,9 +1082,9 @@ } }, "mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true }, "minimatch": { @@ -3262,57 +1097,30 @@ } }, "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "moment": { - "version": "2.29.4", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", - "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true }, "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "requires": { - "path-key": "^2.0.0" + "path-key": "^3.0.0" } }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "dev": true }, "once": { @@ -3331,10 +1139,13 @@ "dev": true }, "onetime": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz", - "integrity": "sha512-GZ+g4jayMqzCRMgB2sol7GiCLjKfS1PINkjmx8spcKce1LiVqcbQreXwqs2YAFXC6R03VIG28ZS31t8M866v6A==", - "dev": true + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } }, "ospath": { "version": "1.2.2", @@ -3342,17 +1153,14 @@ "integrity": "sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==", "dev": true }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true - }, "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } }, "path-is-absolute": { "version": "1.0.1", @@ -3361,9 +1169,9 @@ "dev": true }, "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, "pend": { @@ -3395,10 +1203,10 @@ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "proxy-from-env": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", + "integrity": "sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==", "dev": true }, "psl": { @@ -3418,52 +1226,26 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true }, "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "dev": true - }, - "ramda": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.26.1.tgz", - "integrity": "sha512-hLWjpy7EnsDBb0p+Z3B7rPi3GDeRG5ZtiI33kJhTt+ORCd38AbAIjB/9zRIUoeTbE/AVX5ZkU7m6bznsvrf8eQ==", - "dev": true - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "6.10.4", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz", + "integrity": "sha512-OQiU+C+Ds5qiH91qh/mg0w+8nwQuLjM4F4M/PbmhDOoYehPh+Fb0bDjtR1sOvy7YKxvj28Y/M0PhP5uVX0kB+g==", "dev": true, "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } + "side-channel": "^1.0.4" } }, + "querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, "request-progress": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/request-progress/-/request-progress-3.0.0.tgz", @@ -3473,32 +1255,44 @@ "throttleit": "^1.0.0" } }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, "restore-cursor": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-1.0.1.tgz", - "integrity": "sha512-reSjH4HuiFlxlaBaFCiS6O76ZGG2ygKoSlCsipKdaZuKSPx/+bt9mULkn4l0asVzbEfQQmXRg6Wp6gv6m0wElw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dev": true, "requires": { - "exit-hook": "^1.0.0", - "onetime": "^1.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" } }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", + "dev": true + }, "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "requires": { "glob": "^7.1.3" } }, "rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "requires": { - "tslib": "^1.9.0" + "tslib": "^2.1.0" } }, "safe-buffer": { @@ -3514,26 +1308,52 @@ "dev": true }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dev": true, + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } }, "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "requires": { - "shebang-regex": "^1.0.0" + "shebang-regex": "^3.0.0" } }, "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", @@ -3541,15 +1361,20 @@ "dev": true }, "slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", - "dev": true + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } }, "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "dev": true, "requires": { "asn1": "~0.2.3", @@ -3563,109 +1388,78 @@ "tweetnacl": "~0.14.0" } }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - } - } - }, "string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "requires": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" } }, "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "requires": { - "ansi-regex": "^2.0.0" + "ansi-regex": "^5.0.1" } }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true }, "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { "has-flag": "^4.0.0" } }, - "symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", + "throttleit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.1.tgz", + "integrity": "sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==", "dev": true }, - "throttleit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/throttleit/-/throttleit-1.0.0.tgz", - "integrity": "sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g==", + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "dev": true }, "tmp": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.1.0.tgz", - "integrity": "sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", "dev": true, "requires": { - "rimraf": "^2.6.3" + "rimraf": "^3.0.0" } }, "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", "dev": true, "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" } }, "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", "dev": true }, "tunnel-agent": { @@ -3683,16 +1477,16 @@ "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", "dev": true }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", "dev": true }, "untildify": { @@ -3701,30 +1495,16 @@ "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", "dev": true }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha512-kbailJa29QrtXnxgq+DdCEGlbTeYM2eJUxsz6vjZavrCYPMIFHMKQmSKYAIuUK2i7hgPm28a8piX5NTUtM/LKQ==", + "url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", "dev": true, "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha512-RofWgt/7fL5wP1Y7fxE7/EmTLzQVnB0ycyibJ0OOHIlJqTNzglYFxVwETOcIoJqJmpDXJ9xImDv+Fq34F/d4Dw==", - "dev": true - } + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" } }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, "uuid": { "version": "8.3.2", "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", @@ -3740,50 +1520,26 @@ "assert-plus": "^1.0.0", "core-util-is": "1.0.2", "extsprintf": "^1.2.0" - }, - "dependencies": { - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", - "dev": true - } } }, "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "requires": { "isexe": "^2.0.0" } }, "wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, "requires": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "dev": true - }, - "strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "dev": true, - "requires": { - "ansi-regex": "^3.0.0" - } - } + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } }, "wrappy": { @@ -3792,6 +1548,12 @@ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", "dev": true }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "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 e5ca0b03..d1d372c1 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "devDependencies": { "chai-colors": "^1.0.1", - "cypress": "^4.12.1" + "cypress": "^10.11.0" }, "scripts": { "cypress:open": "cypress open", @@ -47,7 +47,7 @@ "saxon": "11.3" }, "basex": { - "parallel": "128", - "gzip": "true" + "parallel": "128", + "gzip": "true" } } From e013f9b159deb155d3ea4c40202bb0110d61b16c Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 23:25:02 +0100 Subject: [PATCH 119/183] Update to Cypress 12, server was removed Make the test slower but more visible in video. --- cypress/e2e/ling_features.cy.js | 33 ++++++++++++++++++++++------- package-lock.json | 37 ++++++++++++++++++++------------- package.json | 2 +- 3 files changed, 48 insertions(+), 24 deletions(-) diff --git a/cypress/e2e/ling_features.cy.js b/cypress/e2e/ling_features.cy.js index 3d55669d..75c96703 100644 --- a/cypress/e2e/ling_features.cy.js +++ b/cypress/e2e/ling_features.cy.js @@ -4,19 +4,23 @@ describe('Features', function() { it('should show clickable markers', function() { cy.exec(`${BASEX_ROOT}/bin/basexclient -Uadmin -P${BASEX_PWD} -c "OPEN vicav_lingfeatures; REPLACE vicav_lingfeatures_test_toks.xml ${Cypress.config()['fileServerFolder']}/fixtures/vicav_lingfeatures/vicav_lingfeatures_test_toks.xml"`) cy.visit('http://localhost:8984/vicav/#map=[biblMarkers,_features_,]') + cy.get('#cookie-overlay .cookie-accept-btn').click() + cy.get('.how-to-panel .chrome-close').click() + cy.scrollTo(0, 200) cy.get('img.leaflet-marker-icon') cy.get('img[alt^="Tunis2"]').click({force: true}) cy.get('a[data-featurelist="vicav_lingfeatures_tunis2"]').click({force: true}) cy.get('[data-snippetid="vicav_lingfeatures_tunis2"]').contains('h2', 'A List of Linguistic Features of Tunis2 Arabic') - }); + cy.wait(800) + }); }) describe('VICAV Compare features window', function() { it ('shows form with the right behavior', function() { cy.exec(`${BASEX_ROOT}/bin/basexclient -Uadmin -P${BASEX_PWD} -c "OPEN vicav_lingfeatures; REPLACE vicav_lingfeatures_test2_toks.xml ${Cypress.config()['fileServerFolder']}/fixtures/vicav_lingfeatures/vicav_lingfeatures_test2_toks.xml"`) - cy.server() - cy.route('vicav/data_locations*').as('resources') - cy.route('vicav/explore_samples*').as('results') + + cy.intercept('vicav/data_locations*').as('resources') + cy.intercept('vicav/explore_samples*').as('results') cy.visit('http://localhost:8984/vicav/') @@ -25,20 +29,32 @@ describe('VICAV Compare features window', function() { $navbar_toggler.click() } }) + cy.get('#cookie-overlay .cookie-accept-btn').click() + cy.get('.how-to-panel .chrome-close').click() + cy.scrollTo(0, 200) + cy.wait(800) cy.contains('Feature Lists').click() cy.contains('Cross-examine the VICAV Feature Lists').click() cy.wait('@resources') - cy.get('.location-wrapper .tagit input').scrollIntoView().type('Tun', {force: true}) + cy.get('.location-wrapper .tagit input').type('Tun', {force: true}) cy.get('.tagit-autocomplete .ui-menu-item') + cy.scrollTo(0, 200) + cy.wait(800) cy.contains('Tunis2').click() - cy.get('.person-wrapper .tagit input').scrollIntoView().type('Tes', {force: true}) + cy.get('.person-wrapper .tagit input').type('Tes', {force: true}) cy.get('.tagit-autocomplete .ui-menu-item') + cy.scrollTo(0, 200) + cy.wait(800) cy.contains('Test1/f/45').click() - cy.get('.features-wrapper .tagit input').scrollIntoView().type('who', {force: true}) + cy.get('.features-wrapper .tagit input').type('who', {force: true}) cy.get('.tagit-autocomplete .ui-menu-item') - cy.contains('who?').click() + cy.scrollTo(0, 200) + cy.wait(800) + cy.contains('who?').click() cy.contains('Compare features').click() cy.wait('@results', {responseTimeout: 10000}) + cy.scrollTo(0, 200) + cy.wait(800) cy.get('[data-snippetID=compare-features-result]').as('el') cy.url().should('contain', '[crossFeaturesResult,type|lingfeatures+xslt|cross_features_02.xslt+location|Tunis2+age|0%2C100+person|Test1+features|semlib%3Awho+translation|+comment|+word|+sex|m%2Cf,open]') cy.get('@el').contains('1 feature sentences found.') @@ -51,6 +67,7 @@ describe('VICAV Compare features window', function() { cy.get($td).contains(expected[index]) }) cy.get('@el').contains('Jendouba') + cy.wait(800) }) }) diff --git a/package-lock.json b/package-lock.json index f0839316..ef81e81c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -59,9 +59,9 @@ } }, "@types/node": { - "version": "14.18.63", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.63.tgz", - "integrity": "sha512-fAtCfv4jJg+ExtXhvCkCqUKZ+4ok/JQk01qDKhL5BDDoS3AxKXhV5/MAVUZyQnSEd2GT92fkgZl0pz0Q0AzcIQ==", + "version": "16.18.65", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.65.tgz", + "integrity": "sha512-5E9WgTy95B7i90oISjui9U5Zu7iExUPfU4ygtv4yXEy6zJFE3oQYHCnh5H1jZRPkjphJt2Ml3oQW6M0qtK534A==", "dev": true }, "@types/sinonjs__fake-timers": { @@ -383,9 +383,9 @@ } }, "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz", + "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==", "dev": true }, "common-tags": { @@ -418,14 +418,14 @@ } }, "cypress": { - "version": "10.11.0", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-10.11.0.tgz", - "integrity": "sha512-lsaE7dprw5DoXM00skni6W5ElVVLGAdRUUdZjX2dYsGjbY/QnpzWZ95Zom1mkGg0hAaO/QVTZoFVS7Jgr/GUPA==", + "version": "12.17.4", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", + "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", "dev": true, "requires": { - "@cypress/request": "^2.88.10", + "@cypress/request": "2.88.12", "@cypress/xvfb": "^1.2.4", - "@types/node": "^14.14.31", + "@types/node": "^16.18.39", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -437,10 +437,10 @@ "check-more-types": "^2.24.0", "cli-cursor": "^3.1.0", "cli-table3": "~0.6.1", - "commander": "^5.1.0", + "commander": "^6.2.1", "common-tags": "^1.8.0", "dayjs": "^1.10.4", - "debug": "^4.3.2", + "debug": "^4.3.4", "enquirer": "^2.3.6", "eventemitter2": "6.4.7", "execa": "4.1.0", @@ -455,12 +455,13 @@ "listr2": "^3.8.3", "lodash": "^4.17.21", "log-symbols": "^4.0.0", - "minimist": "^1.2.6", + "minimist": "^1.2.8", "ospath": "^1.2.2", "pretty-bytes": "^5.6.0", + "process": "^0.11.10", "proxy-from-env": "1.0.0", "request-progress": "^3.0.0", - "semver": "^7.3.2", + "semver": "^7.5.3", "supports-color": "^8.1.1", "tmp": "~0.2.1", "untildify": "^4.0.0", @@ -1203,6 +1204,12 @@ "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "dev": true }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "dev": true + }, "proxy-from-env": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz", diff --git a/package.json b/package.json index d1d372c1..e7223246 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "devDependencies": { "chai-colors": "^1.0.1", - "cypress": "^10.11.0" + "cypress": "^12.17.4" }, "scripts": { "cypress:open": "cypress open", From 8fd66d470248853763494877711c5dba378a0c78 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Fri, 24 Nov 2023 23:32:56 +0100 Subject: [PATCH 120/183] Update to Cypress 13 Need to explicitly enable video. --- cypress.config.js | 2 ++ package-lock.json | 35 ++++++++++++++++++++++------------- package.json | 2 +- 3 files changed, 25 insertions(+), 14 deletions(-) diff --git a/cypress.config.js b/cypress.config.js index b9b6c7a9..6d0d09c7 100644 --- a/cypress.config.js +++ b/cypress.config.js @@ -4,6 +4,8 @@ module.exports = defineConfig({ defaultCommandTimeout: 20000, viewportHeight: 768, viewportWidth: 1440, + video: true, + videoCompression: true, e2e: { // We've imported your old cypress plugins here. // You may want to clean this up later by importing these. diff --git a/package-lock.json b/package-lock.json index ef81e81c..3ccdab37 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,9 +12,9 @@ "optional": true }, "@cypress/request": { - "version": "2.88.12", - "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz", - "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@cypress/request/-/request-3.0.1.tgz", + "integrity": "sha512-TWivJlJi8ZDx2wGOw1dbLuHJKUYX7bWySw377nlnGOW3hP9/MUKIsEdXT/YngWxVdgNCHRBmFlBipE+5/2ZZlQ==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -30,7 +30,7 @@ "json-stringify-safe": "~5.0.1", "mime-types": "~2.1.19", "performance-now": "^2.1.0", - "qs": "~6.10.3", + "qs": "6.10.4", "safe-buffer": "^5.1.2", "tough-cookie": "^4.1.3", "tunnel-agent": "^0.6.0", @@ -59,10 +59,13 @@ } }, "@types/node": { - "version": "16.18.65", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.65.tgz", - "integrity": "sha512-5E9WgTy95B7i90oISjui9U5Zu7iExUPfU4ygtv4yXEy6zJFE3oQYHCnh5H1jZRPkjphJt2Ml3oQW6M0qtK534A==", - "dev": true + "version": "18.18.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", + "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", + "dev": true, + "requires": { + "undici-types": "~5.26.4" + } }, "@types/sinonjs__fake-timers": { "version": "8.1.1", @@ -418,14 +421,14 @@ } }, "cypress": { - "version": "12.17.4", - "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz", - "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==", + "version": "13.6.0", + "resolved": "https://registry.npmjs.org/cypress/-/cypress-13.6.0.tgz", + "integrity": "sha512-quIsnFmtj4dBUEJYU4OH0H12bABJpSujvWexC24Ju1gTlKMJbeT6tTO0vh7WNfiBPPjoIXLN+OUqVtiKFs6SGw==", "dev": true, "requires": { - "@cypress/request": "2.88.12", + "@cypress/request": "^3.0.0", "@cypress/xvfb": "^1.2.4", - "@types/node": "^16.18.39", + "@types/node": "^18.17.5", "@types/sinonjs__fake-timers": "8.1.1", "@types/sizzle": "^2.3.2", "arch": "^2.2.0", @@ -1490,6 +1493,12 @@ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "universalify": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", diff --git a/package.json b/package.json index e7223246..e5d74711 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ }, "devDependencies": { "chai-colors": "^1.0.1", - "cypress": "^12.17.4" + "cypress": "^13.6.0" }, "scripts": { "cypress:open": "cypress open", From bc4f04b575f9763253e220520b2fb5030a8ccb36 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 28 Nov 2023 19:50:18 +0100 Subject: [PATCH 121/183] Make getLinkAttributes reusable in profiles and features Also fix the strange looking coordinates. --- xslt/concat-path-inc.xslt | 6 +++- xslt/features_01.xslt | 1 + xslt/features_common.xslt | 1 + xslt/getLinkAttributes.xslt | 64 ++++++++++++++++++++++++++++++++++++ xslt/profile_01.xslt | 41 ++++++++++++++--------- xslt/sampletexts_common.xslt | 4 +-- xslt/vicavTexts.xslt | 60 +-------------------------------- 7 files changed, 98 insertions(+), 79 deletions(-) create mode 100644 xslt/getLinkAttributes.xslt diff --git a/xslt/concat-path-inc.xslt b/xslt/concat-path-inc.xslt index 295de638..696ca7c3 100644 --- a/xslt/concat-path-inc.xslt +++ b/xslt/concat-path-inc.xslt @@ -2,10 +2,14 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tei="http://www.tei-c.org/ns/1.0" version="2.0"> + + /vicav + + - + diff --git a/xslt/features_01.xslt b/xslt/features_01.xslt index 1a0271b6..395a6451 100644 --- a/xslt/features_01.xslt +++ b/xslt/features_01.xslt @@ -2,6 +2,7 @@ xmlns="http://www.w3.org/1999/xhtml" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:acdh="http://acdh.oeaw.ac.at" + exclude-result-prefixes="#all" version="2.0"> diff --git a/xslt/features_common.xslt b/xslt/features_common.xslt index c31792d6..42e5e3cb 100644 --- a/xslt/features_common.xslt +++ b/xslt/features_common.xslt @@ -3,6 +3,7 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:acdh="http://acdh.oeaw.ac.at" +exclude-result-prefixes="#all" version="2.0"> diff --git a/xslt/getLinkAttributes.xslt b/xslt/getLinkAttributes.xslt new file mode 100644 index 00000000..5e5b2b35 --- /dev/null +++ b/xslt/getLinkAttributes.xslt @@ -0,0 +1,64 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/xslt/profile_01.xslt b/xslt/profile_01.xslt index 607cebed..973449cc 100644 --- a/xslt/profile_01.xslt +++ b/xslt/profile_01.xslt @@ -7,17 +7,15 @@ - - /vicav - - + +
    - + @@ -93,14 +91,22 @@ @@ -185,7 +191,7 @@ - +
    Linguistic Features
    @@ -332,6 +338,7 @@ + @@ -376,7 +383,8 @@ starts-with(@ref,'text:') or starts-with(@ref,'sample:')]"> - javascript:getDBSnippet("") + javascript:getDBSnippet("") +
    @@ -391,7 +399,8 @@ starts-with(@target,'text:') or starts-with(@target,'sample:')]"> - javascript:getDBSnippet("") + javascript:getDBSnippet("") +
    diff --git a/xslt/sampletexts_common.xslt b/xslt/sampletexts_common.xslt index 209fdc28..c6a05847 100644 --- a/xslt/sampletexts_common.xslt +++ b/xslt/sampletexts_common.xslt @@ -4,12 +4,10 @@ xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.w3.org/1999/xhtml" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:acdh="http://acdh.oeaw.ac.at" +exclude-result-prefixes="#all" version="2.0"> - -/vicav - diff --git a/xslt/vicavTexts.xslt b/xslt/vicavTexts.xslt index f1421435..4738bf0f 100644 --- a/xslt/vicavTexts.xslt +++ b/xslt/vicavTexts.xslt @@ -8,69 +8,11 @@ - - /vicav - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + From 35778285aa02e4bbe22231799ab3c184c66f7c9d Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 5 Dec 2023 18:31:34 +0100 Subject: [PATCH 122/183] Add the data attributes for bibliographic query links as text or map in texts --- xslt/getLinkAttributes.xslt | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/xslt/getLinkAttributes.xslt b/xslt/getLinkAttributes.xslt index 5e5b2b35..51a0f3fc 100644 --- a/xslt/getLinkAttributes.xslt +++ b/xslt/getLinkAttributes.xslt @@ -17,9 +17,20 @@ + + + + + + + + + + + @@ -48,11 +59,15 @@ - - + + + + + + - + From dbe946d9dcdcb3b8751abef6fc1d224e6cd92979 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Tue, 5 Dec 2023 19:06:25 +0100 Subject: [PATCH 123/183] Add properties to the markers to identify the date to show when clicked --- vicav.xqm | 10 ++++++++-- xslt/bibl-markers-json.xslt | 12 ++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/vicav.xqm b/vicav.xqm index 069bc658..9279a929 100644 --- a/vicav.xqm +++ b/vicav.xqm @@ -1085,6 +1085,7 @@ function vicav:get_bibl_markers_tei($query as xs:string, $scope as xs:string+) { declare function vicav:_get_bibl_markers_tei($query as xs:string, $scope as xs:string+) { let $accept-header := try { request:header("ACCEPT") } catch basex:http { 'application/xhtml+xml' } + let $current-query := $query let $queries := tokenize($query, '\+') let $qs := for $query in $queries @@ -1206,7 +1207,10 @@ declare function vicav:_get_bibl_markers_tei($query as xs:string, $scope as xs:s (:else ():) return if (matches($accept-header, '[+/]json')) - then let $renderedJson := xslt:transform(<_>{$out2}, 'xslt/bibl-markers-json.xslt') + then let $renderedJson := xslt:transform(<_>{$out2}, 'xslt/bibl-markers-json.xslt', map{ + "target-type": "Bibl", + "current-query": $current-query + }) return serialize($renderedJson, map {"method": "json"}) else {$out2} (: {$out} :) @@ -1251,7 +1255,9 @@ declare function vicav:_get_profile_markers() { ) return if (matches($accept-header, '[+/]json')) - then let $renderedJson := xslt:transform(<_>{$out}, 'xslt/bibl-markers-json.xslt') + then let $renderedJson := xslt:transform(<_>{$out}, 'xslt/bibl-markers-json.xslt', map{ + "target-type": "Profile" + }) return serialize($renderedJson, map {"method": "json"}) else {$out} }; diff --git a/xslt/bibl-markers-json.xslt b/xslt/bibl-markers-json.xslt index e99ee00f..01597fa6 100644 --- a/xslt/bibl-markers-json.xslt +++ b/xslt/bibl-markers-json.xslt @@ -14,6 +14,9 @@ + + + @@ -56,6 +59,15 @@ + + + + + + + + +
    From b19746f6cbbb31a4f8e9743c1c5ed3d74cc74f18 Mon Sep 17 00:00:00 2001 From: Omar Siam Date: Thu, 7 Dec 2023 14:18:47 +0100 Subject: [PATCH 124/183] Change componenName to targetType in json response --- xslt/menu-json.xslt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/xslt/menu-json.xslt b/xslt/menu-json.xslt index 8b530e52..3dd68d66 100644 --- a/xslt/menu-json.xslt +++ b/xslt/menu-json.xslt @@ -52,7 +52,7 @@ <xsl:value-of select="text()"/> - + @@ -67,10 +67,10 @@ SampleText BiblioQuery CrossDictQuery - + UnknownTypeWarning - +

    Geo location - - - - - - - - + + + + + + + + + + + + + + + +